Artelnics/opennn

OpenNN - Open Neural Networks Library

OpenNNとは?

OpenNN は、C++コードから直接ニューラルネットワークモデルを構築、トレーニング、実行できる最新のC++ライブラリ(C++20標準で作成)です。表形式テーブル、画像、時系列、プレーンテキストといった通常のデータ型をサポートし、通常のCPUまたはオプションでCUDAを介したNVIDIA GPU上で動作します。


誰が使うべきか?

対象 理由
大規模なC++アプリケーション(ロボティクス、金融、組み込みシステムなど)内でニューラルネットワークコンポーネントを必要とするC++エンジニア。 言語を切り替えたりPythonインタープリターを埋め込んだりする必要はなく、ライブラリがバイナリに直接コンパイルされます。
CPU vs GPU実行、スレッド化(OpenMP、oneTBB)、低レベル最適化をきめ細かく制御したいパフォーマンス重視のチーム。 ハードウェアとコンパイル時の制約に合わせてバックエンドを選択できます。
重いPython依存関係なしで自己完結型のオープンソーススタックを好む研究者や愛好家。 このライブラリには、PyTorchに対するベンチマークガイドとクイックスタートガイドが付属しています。
プロプライエタリな製品に商用フレンドリーなライセンスを必要とする企業。 デュアルライセンス(AGPL + 商用)により、プロプライエタリなコードを非公開に保ちながら、規約に準拠できます。

どのように機能するか?

  1. インストール – リポジトリをクローンし、CMakeを実行し、CPUのみまたはCUDA対応ビルドを選択します。ビルドはEigenとzlibを自動的に取り込みます。その他のオプションのランタイム(MKL、oneDNNなど)はユーザーが提供する必要があります。
  2. プログラミングモデル – パブリックヘッダー(例: opennn/network/network.h)を含め、OpenNN::名前空間を使用してレイヤー、損失関数、オプティマイザーなどを作成します。ライブラリはモジュール構造(コア、データ、ネットワーク、バックエンド)に従います。
  3. トレーニングと推論 – データ(CSV、画像フォルダーなど)をDataSetオブジェクトにフィードし、NeuralNetworkを構成し、train()を呼び出し、推論にはpredict()を呼び出します。同じモデルをプレーンなCまたはPythonソースコードとしてエクスポートし、完全なライブラリが不要なプラットフォームにデプロイできます。
  4. ベンチマークと検証 – benchmarks/フォルダーには、OpenNNの速度と精度をPyTorchと比較するスクリプトが含まれており、文書化された測定プロトコルに従います。
  5. テストとCI – 単体テストはtests/にあり、GitHub Actionsはプッシュのたびにテストスイートを実行します。

他のツールよりもOpenNNを選ぶべき時は?

状況 OpenNNの利点
C++のみのコードベース – Pythonランタイムは不要。 純粋なC++ APIで、静的ライブラリまたは共有ライブラリにコンパイルできます。
組み込みまたはリアルタイムシステム – 厳格なバイナリサイズまたはレイテンシ制約。 エクスポート可能なCコードと微調整されたコンパイルオプション。GPUアクセラレーション用のオプションのCUDA。
デュアルライセンスの必要性 – AGPLベースで、プロプライエタリ製品には商用パスが必要。 Artelnicsの商用オプションを備えた明示的なデュアルライセンスモデル。
パフォーマンス比較 – C++実装がPyTorchとどう比較されるか確認したい。 再現可能なプロトコルを備えた組み込みベンチマークスイート。

すでにPythonエコシステム(PyTorch、TensorFlow)に大きく依存しており、C++統合が不要な場合は、これらのツールの方が簡単な場合があります。OpenNNは、C++統合、ライセンスの柔軟性、または低レベルなパフォーマンス制御が主な懸念事項である場合に輝きます。


はじめに(クイックリキャップ)

# CPUのみのビルドをクローンして設定
re-export と 設定
git clone https://github.com/Artelnics/opennn.git
cd opennn
cmake -S . -B ../opennn-build -DCMAKE_BUILD_TYPE=Release \
      -DOpenNN_DISABLE_CUDA=ON -DOpenNN_BUILD_EXAMPLES=ON
cmake --build ../opennn-build --target blank --parallel
# 最小限の例を実行
../opennn-build/bin/blank

そこから、examples/のIris例に従って、分類器をトレーニングし、評価し、モデルをエクスポートします。


TL;DR

OpenNNは、CPUまたはCUDA GPUで実行でき、一般的なデータ型をサポートし、プレーンなC/Pythonへのエクスポートを提供し、PyTorchに対するベンチマークを含み、デュアルAGPL/商用ライセンスを提供するC++20ニューラルネットワークライブラリです。ネイティブなC++ MLコンポーネントが必要な開発者や、デプロイとライセンスをきめ細かく制御したい開発者にとって、堅実な選択肢です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト