0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Graph IRの代表例「Open Neural Network Exchange(ONNX)」のREADME.mdを翻訳してみた!

Last updated at Posted at 2021-01-05

 深層学習にはPyTorchやTensorFlowなど様々なフレームワークがあります。これらはあくまでもプログラミングの効率化のために存在しているものであり、特定のフレームワークでないと開発出来ないモデルはありません。しかし、開発している途中でフレームワークを変えたくなるときがあります。そのときに役立つのがIR(intermediate representation、中間表現)であり、深層学習向けのIRのことを「Graph IR」と呼びます。

 ここでは2019年11月にLinux Foundationの公開プロジェクトとなったOpen Neural Network Exchange(ONNX)フォーマットを取り上げ、そのREADME.mdファイルの日本語翻訳を行います。これは、Graph IRの代表例であり、米MicrosoftとFacebookによって開発され、2017年に公開されました。多くの深層学習フレームワークがONNXに対応しています。

Open Neural Network Exchange(ONNX)のREADME.mdの日本語翻訳はこちら

Open Neural Network Exchange (ONNX) は、AI開発者を支援するオープンなエコシステムです。
は、プロジェクトの進化に合わせて適切なツールを選択することができます。ONNXは,ディープラーニングと従来のMLの両方のAIモデルのためのオープンソース・フォーマットを提供します.拡張可能な計算グラフモデルを定義しており,組み込み演算子や標準的なデータ型を使用しています。現在は推論(スコアリング)に必要な機能に注目しています。

ONNXは広くサポートされているし、多くのフレームワーク、ツール、ハードウェアに搭載されています。異なるフレームワーク間の相互運用性を可能にし、研究から生産までのパスを合理化することは、AIコミュニティにおけるイノベーションのスピードアップに役立ちます。コミュニティの皆様にもご参加いただき、ONNXをさらに進化させていきましょう。

ONNXを利用する

ONNXの仕様についてはこちら

ONNXグラフを操作するためのプログラミングユーティリティー

貢献する

ONNXはコミュニティプロジェクトです。この取り組みに参加して、フィードバック、アイデア、コードを投稿することをお勧めします。ONNXの将来を形作るために、SIGsWorking Groupsに参加することができます。

貢献ガイドを参考にしてください。

ONNXの仕様に追加すべき演算子がある場合はこのドキュメントをご覧になってください。

議論をする

Issuesを開くか、Slackを使ってリアルタイムで議論することをお勧めします。

フォローしてください

ONNXの最新情報をお届けします。
Facebook
Twitter

インスタレーション

バイナリー

ONNXのバイナリビルドはCondaconda-forgeから入手可能です。

conda install -c conda-forge onnx

ソース

Linux と MacOS

ONNXを構築するにはProtobufとNumPyのインストールが必要です。 簡単なこれらの依存関係を解決する方法はアナコンダを使うことです。

# デフォルトではprotocが付属していないので、conda-forgeのprotobufを使用します。
conda install -c conda-forge protobuf numpy

これでPyPiからONNXをインストールすることができます(注: onnx-mlには環境変数 ONNX_ML=1 を設定してください)。

pip install onnx

また、ソースコードからローカルにONNXをビルドしてインストールすることもできます。

git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive
python setup.py install

注意:Anaconda 以外の環境でインストールする場合は、onnx の pip インストールを実行する前に Protobuf コンパイラをインストールするようにしてください。例えばUbuntuでは

sudo apt-get install protobuf-compiler libprotoc-dev
pip install onnx

Windowsの場合

Windows上でソースからONNXをビルドする場合は、Protobufもスタティックライブラリとしてローカルにビルドすることをお勧めします。conda-forgeで配布されているバージョンはDLLであり、ONNXではスタティックライブラリであることを期待しているため、これは競合します。

WindowsでProtobufとONNXをビルドする

ステップ1:Protobufをローカルに構築する

git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git checkout 3.9.x
cd cmake
# Explicitly set -Dprotobuf_MSVC_STATIC_RUNTIME=OFF to make sure protobuf does not statically link to runtime library
cmake -G "Visual Studio 15 2017 Win64" -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=<protobuf_install_dir>
msbuild protobuf.sln /m /p:Configuration=Release
msbuild INSTALL.vcxproj /p:Configuration=Release

ステップ2:ONNXの構築

# Get ONNX
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive

# Set environment variables to find protobuf and turn off static linking of ONNX to runtime library.
# Even better option is to add it to user\system PATH so this step can be performed only once.
# For more details check https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=vs-2017
set PATH=<protobuf_install_dir>\bin;%PATH%
set USE_MSVC_STATIC_RUNTIME=0

# Optional: Set environment variable `ONNX_ML=1` for onnx-ml

# Build ONNX
python setup.py install

ソースからProtobufをビルドするのではなく、conda-forgeからProtobufを使用したい場合は、以下の手順を使用することができます。

WindowsでAnacondaでONNXをビルドする

# Use conda-forge protobuf
conda install -c conda-forge numpy libprotobuf=3.11.3 protobuf

# Get ONNX
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive

# Set environment variable for ONNX to use protobuf shared lib
set USE_MSVC_STATIC_RUNTIME=0
set CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=ON -DProtobuf_USE_STATIC_LIBS=OFF -DONNX_USE_LITE_PROTO=ON"

# Build ONNX
# Optional: Set environment variable `ONNX_ML=1` for onnx-ml

python setup.py install

ARM 64でONNXをビルド

ARM 64デバイス上でONNXを構築する場合は、依存関係を適切にインストールしてください。

pip install cython protobuf numpy
sudo apt-get install libprotobuf-dev protobuf-compiler
pip install onnx

Verify Installation

インストール後、以下を実行します。

python -c "import onnx"

をクリックして動作を確認してください。

よくあるエラー

Environment variables: USE_MSVC_STATIC_RUNTIME (ONでもOFFでもなく、1か0でなければなりません)

CMake variables: ONNX_USE_PROTOBUF_SHARED_LIBS, Protobuf_USE_STATIC_LIBS`.

ON の場合、ONNX_USE_PROTOBUF_SHARED_LICBSはOFF、USE_MSVC_STATIC_RUNTIMEは0でなければならない。
ONNX_USE_PROTOBUF_SHARED_LIBSがOFFの場合は、Protobuf_USE_STATIC_LIBSをONにし、USE_MSVC_STATIC_RUNTIMEを1または0にする。

ソースのチェックアウトディレクトリから import onnx コマンドを実行しても動作しないことに注意してください。この場合、ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export'と表示されます。別のディレクトリに変更して、このエラーを修正してください。

UbuntuでのONNXのビルドは問題なく動作しますが、CentOS/RHELやその他のManyLinuxシステムでは、CMakeListsファイルを開き、/libのインスタンスをすべて/lib64に置き換える必要があるかもしれません。

デバッグモードでONNXをビルドする場合は、環境変数 DEBUG=1 を設定することを忘れないようにしてください。デバッグ版の依存関係には、CMakeListsファイルを開き、パッケージ名の行の最後に d を追加する必要がある。例えば、NAMES protobuf-liteNAMES protobuf-lite になります。

また、Linux ベースのインストールには onnx-dev docker image を使用することで、依存関係のバージョン管理を気にすることなくインストールすることができます。

テスト中

ONNXでは、テストドライバとしてpytestを使用しています。テストを実行するためには、まずpytestをインストールする必要があります。

pip install pytest nbval

pytestをインストールしたら、以下のコマンドでテストを実行してください。

pytest

開発

使い方は 投稿者ガイド をチェックしてください。

ライセンス

MITライセンス

行動規範

ONNXオープンソース行動規範

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?