
Open Neural Network Exchange(ONNX)は、AI開発者がプロジェクトの進化に応じて適切なツールを選択できるようにするオープンエコシステムです。 ONNXは、深い学習と従来のMLの両方のAIモデルにオープンソース形式を提供します。拡張可能な計算グラフモデル、および組み込みの演算子と標準データ型の定義を定義します。現在、推測に必要な機能(スコアリング)に焦点を当てています。
ONNXは広くサポートされており、多くのフレームワーク、ツール、ハードウェアにあります。異なるフレームワーク間の相互運用性を可能にし、研究から生産までのパスを合理化することで、AIコミュニティのイノベーションの速度を高めることができます。私たちはコミュニティを招待して、私たちに加わり、さらにonnxを進化させます。
ONNXはコミュニティプロジェクトであり、オープンガバナンスモデルについて説明します。努力に参加し、フィードバック、アイデア、コードを提供することをお勧めします。特別な利益団体やワーキンググループに参加して、ONNXの未来を形作ることができます。
開始するために私たちの貢献ガイドをチェックしてください。
一部のオペレーターをONNX仕様に追加する必要があると思われる場合は、このドキュメントをお読みください。
運営委員会、ワーキンググループ、SIGの定期的な会議のスケジュールはこちらにあります
コミュニティミートアップは、少なくとも年に1回は開催されます。以前のコミュニティミートアップのコンテンツは次のとおりです。
よりリアルタイムのディスカッションのために、問題を開くか、Slack(まだ参加していない場合は、このリンクを使用してグループに参加してください)を使用することをお勧めします。
最新のONNXニュースを最新の状態に保ちます。 [Facebook] [Twitter]
ロードマッププロセスは毎年行われます。詳細については、こちらをご覧ください
ONNXリリースパッケージはPypiで公開されています。
pip install onnx # or pip install onnx[reference] for optional reference implementation dependenciesONNX Weeklyパッケージは、実験と早期テストを可能にするためにPYPIで公開されています。
ONNXはVCPKGのメンテナンスリストにあり、VCPKGを使用してビルドしてインストールすることができます。
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat # For powershell
./bootstrap-vcpkg.sh # For bash
./vcpkg install onnxonnxのバイナリビルドは、コンドラから、コンドラフォージから入手できます。
conda install -c conda-forge onnxソースから構築する前に、ONNX pip uninstall onnxアンインストールする前に。
C ++ 17以下のC ++コンパイラバージョンは、ソースからONNXを構築するために必要です。それでも、ユーザーはONNXを構築するために独自のCMAKE_CXX_STANDARDバージョンを指定できます。
ProtoBUFがインストールされていない場合、ONNXは内部的にダウンロードしてONNXビルド用のプロトブフをビルドします。
または、前進する前に、指定されたバージョンを使用してProtoBuf C/C ++ライブラリとツールを手動でインストールすることができます。次に、ProtoBUFのインストール方法に応じて、環境変数CMAKE_ARGSを "-donnx_use_protobuf_shared_libs = on"または "-donnx_use_protobuf_shared_libs = off"に設定する必要があります。たとえば、次のコマンドを実行する必要がある場合があります。
Linux:
export CMAKE_ARGS= " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "Windows:
set CMAKE_ARGS = " -DONNX_USE_PROTOBUF_SHARED_LIBS=ON "オン/オフは、どのようなProtobufライブラリがあるかによって異なります。共有ライブラリは、*.dll/*。so/*。dylibで終わるファイルです。静的ライブラリは、 *.a/ *。libで終わるファイルです。このオプションは、Protobufライブラリをどのように入手し、どのように構築されたかに依存します。そして、それはデフォルトです。静的プロトブフライブラリを使用する場合は、上記のコマンドを実行する必要はありません。
ソースからONNXを構築している場合は、静的ライブラリとして局所的にプロトブフを構築することをお勧めします。 Conda-Forgeで配布されたバージョンはDLLですが、ONNXは静的ライブラリであると予想しています。 Protobufをローカルに構築することで、Protobufのバージョンを制御できます。テスト済みバージョンと推奨バージョンは3.21.12です。
このREADMEの指示は、あなたがVisual Studioを使用していると仮定しています。 「x64ネイティブツールコマンドプロンプトVS 2019」から開始されたシェルからすべてのコマンドを実行し、cmake用のビルドシステムジェネレーターを保持することをお勧めします(たとえば、cmake -g "Visual Studio 16 2019")。
次のコマンドを実行することで、プロトブフを取得できます。
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git checkout v21.12
cd cmake
cmake -G " Visual Studio 16 2019 " -A x64 -DCMAKE_INSTALL_PREFIX= < protobuf_install_dir > -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -Dprotobuf_BUILD_SHARED_LIBS=OFF -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_EXAMPLES=OFF .
msbuild protobuf.sln /m /p:Configuration=Release
msbuild INSTALL.vcxproj /p:Configuration=Releaseその後、静的ライブラリとして構築され、<protobuf_install_dir>にインストールされます。パスにBin Directory(Protoc.exeを含む)を追加してください。
set CMAKE_PREFIX_PATH = < protobuf_install_dir > ; %CMAKE_PREFIX_PATH%注:ProtoBUF_INSTALL_DIRにスペースが含まれている場合、その周りに引用符を追加しないでください。
代替:パスを変更したくない場合は、代わりにonnx_protoc_executableを設定できます。
set CMAKE_ARGS = -DONNX_PROTOC_EXECUTABLE= < full_path_to_protoc.exe >次に、onnxを次のように作成できます。
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive
# prefer lite proto
set CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON
pip install -e . -v
まず、Protobufをインストールする必要があります。 ONNXが必要とする最小プロトブフコンパイラ(Protoc)バージョンは3.6.1です。古いProtocバージョンはCMAKE_ARGS=-DONNX_USE_LITE_PROTO=ONで動作しない場合があることに注意してください。
ubuntu 20.04(および新しい)ユーザーは、protobuf経由をインストールすることを選択できます
apt-get install python3-pip python3-dev libprotobuf-dev protobuf-compilerこの場合、onnxビルドステップでcmake_argsに-DONNX_USE_PROTOBUF_SHARED_LIBS=ON追加する必要があります。
より一般的な方法は、ソースから構築およびインストールすることです。詳細については、以下の手順を参照してください。
Debian/Ubuntu:
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git checkout v21.12
git submodule update --init --recursive
mkdir build_source && cd build_source
cmake ../cmake -Dprotobuf_BUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_POSITION_INDEPENDENT_CODE=ON -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release
make -j $( nproc )
make installCentos/Rhel/Fedora:
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git checkout v21.12
git submodule update --init --recursive
mkdir build_source && cd build_source
cmake ../cmake -DCMAKE_INSTALL_LIBDIR=lib64 -Dprotobuf_BUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_POSITION_INDEPENDENT_CODE=ON -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release
make -j $( nproc )
make installここに "-dcmake_position_indopent_code = on"が重要です。デフォルトでは、静的ライブラリは「-fpic」フラグなしで構築されますが、ポジションは独立したコードではありません。ただし、共有ライブラリは独立したコードを位置付ける必要があります。 Python C/C ++拡張機能(ONNXなど)は共有ライブラリです。したがって、静的ライブラリが「-fpic」で構築されていない場合、そのような共有ライブラリにリンクすることはできません。
ビルドが成功したら、Protobufパスを含めるパスを更新します。
次に、onnxを次のように作成できます。
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive
# Optional: prefer lite proto
export CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON
pip install -e . -v export NUM_CORES= ` sysctl -n hw.ncpu `
brew update
brew install autoconf && brew install automake
wget https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protobuf-cpp-3.21.12.tar.gz
tar -xvf protobuf-cpp-3.21.12.tar.gz
cd protobuf-3.21.12
mkdir build_source && cd build_source
cmake ../cmake -Dprotobuf_BUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release
make -j ${NUM_CORES}
make installビルドが成功したら、Protobufパスを含めるパスを更新します。
次に、onnxを次のように作成できます。
git clone --recursive https://github.com/onnx/onnx.git
cd onnx
# Optional: prefer lite proto
set CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON
pip install -e . -vインストール後、実行します
python -c " import onnx "それが機能することを確認するために。
完全なリストについては、cmakelists.txtを参照してください
USE_MSVC_STATIC_RUNTIME 1または0であり、オンまたはオフではありません。 1つのonnxに設定すると、ランタイムライブラリに静的にリンクします。デフォルト: USE_MSVC_STATIC_RUNTIME=0
DEBUG 0または1である必要があります。1onnxに設定すると、デバッグモードに組み込まれています。または依存関係のデバッグバージョンでは、cmakelistsファイルを開き、パッケージ名の最後に文字dを追加する必要があります。たとえば、 NAMES protobuf-lite NAMES protobuf-litedになります。デフォルト: Debug=0
ONNX_USE_PROTOBUF_SHARED_LIBS ONまたはOFF必要があります。デフォルト: ONNX_USE_PROTOBUF_SHARED_LIBS=OFF USE_MSVC_STATIC_RUNTIME=0 ONNX_USE_PROTOBUF_SHARED_LIBS 、onnxがprotobufライブラリにリンクする方法を決定します。
ONに設定すると、ONNXはProtoBUF共有LIBSに動的にリンクします。ProtoBUF_USE_DLLSは、ここで説明されているように定義されます。OFFに設定すると、ONNXは静的にProtoBufにリンクします。 ONNX_USE_LITE_PROTO ONまたはOFF必要があります。 ONに設定すると、完全なプロトブフの代わりにLite Protobufを使用します。デフォルト: ONNX_USE_LITE_PROTO=OFF
ONNX_WERROR ONまたはOFF必要があります。 ONに設定すると、警告がエラーとして扱われます。デフォルト: ONNX_WERROR=OFF CIおよびリリースパイプラインでローカルONでオフ。
注: import onnxコマンドは、Source Checkout Directoryから動作しません。この場合ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export'が表示されません。このエラーを修正するには、別のディレクトリに変更します。
ProtoBUFを静的ライブラリとして構築中に問題に遭遇した場合は、Libprotobufのような共有ProtobufライブラリがデバイスやConda環境にインストールされていないことを確認してください。これらの共有ライブラリが存在する場合は、静的ライブラリとしてソースからプロトブフを構築するためにそれらを削除するか、ソースからプロトブフビルドをスキップして共有バージョンを直接使用します。
ソースからONNXを構築しているときに問題が発生し、エラーメッセージが表示されている場合、 Could not find pythonXX.libなかった場合、 pythonやpipなどの一般的なコマンドのPythonバージョンが一貫していることを確認してください。既存のすべてのビルドファイルをクリーニングし、ONNXを再構築します。
ONNXは、テストドライバーとしてPytestを使用します。テストを実行するには、最初にpytestをインストールする必要があります。
pip install pytest nbvalPytestをインストールした後、次のコマンドを使用してテストを実行します。
pytest指示については、寄稿者ガイドをご覧ください。
Apacheライセンスv2.0
ONNXオープンソース行動規範