ONNXの紹介とインストール方法

ONNXとは

ONNXはOpenNeuralNetworkEXchange formatの略称で機械学習フレームワーク間でモデルの構造や学習したパラメータを交換するためのデータフォーマットです。ONNXをサポートしているツールはここで紹介されているのですが、Caffeのモデルや学習データをPyTorchで利用したりcognitive-toolkitからchainerに移植したりということが可能になります。TVMなどONNXをサポートするディープラーニングコンパイラもあります。 ONNXからモデルの構造と計算グラフを抽出することで専用ハードウェアへの実装などにも応用できます(私の研究でもそれを目論んでいます)。

ONNXのインストール

ONNXのGitHubレポジトリのREADMEにすべて書いてあります。で終わってしまうのですが、備忘録も兼ねてインストール手順をまとめておきます。 想定環境は以下のとおりです。 - Ubuntu 18.04 - Python 3.6.7

READMEにはcondaを使ったインストール方法がまず紹介されているのですが、 なんとなく使いたくないのでソースコードからビルドしたいと思います。

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

...
長いビルドのログ
...
Using /home/kiizuka/.venv/onnx/lib/python3.6/site-packages
Finished processing dependencies for onnx==1.4.1

ここまで終わったら、最後に

$ sudo apt-get install protobuf-compiler libprotoc-dev

で必要なライブラリを追加して終了です。 このままこのディレクトリで

$ python -c "import onnx"

を実行すると

ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export.defs'

が出ます。別のディレクリでは正常に動くよとREADMEにも書いてあるので放置でもいいと思います。

$ python setup.py develop

を実行するととりあえずエラーが消えます。

(参考: https://github.com/onnx/onnx/issues/1302#issuecomment-413922657)

次は実際に動かしてみたいと思います。