ONNXとは
ONNXは、Open Neural Network Exchangeの略称で、2017年にMicrosoftとパートナー企業により作成された機械学習モデルの共通フォーマットです。
Tensorflow、Keras、 PyTorch、MXNet 、scikit-learnなどの異なるフレームワークやライブラリで作成されたモデルを相互変換することを目的として作られました。
ONNX形式に変換されたモデルは、ONNX Runtime というライブラリによって実行することが可能です。
ONNXの仕組み
ONNXは機械学習モデルにおける共通フォーマット(ONNXフォーマット)であり、異なる機械学習フレームワーク間での相互運用を目的としているため、多くの機械学習フレームワークが ONNXフォーマットの直接入力/出力機能に対応しています。
その一方で、様々なOSやデバイスに対応した ONNX 実行環境(ONNX Runtime)が用意されており、ONNXフォーマットのモデル(ONNXモデル)を使った推論が簡単に実行出来るようになっています。
ONNXの特徴
ONNXの特徴は次の通りです。
各種機械学習フレームワーク間の相互運用
各種機械学習フレームワークの多くは、ONNXファイル(ONNXモデル)に対応しています。このため、異なるフレームワーク間でモデルの相互運用が可能です。
モデルサイズの最適化
Tensorflow、Kerasなどのフレームワークで推論する場合に比べ、このONNX runtime は推論に関係ない処理を省き、同時に重みの量子化、剪定などの手法モデルをスリム化します。このため、元のフレームワークを使うより処理が数倍高速化されることも珍しくありません。
多彩なモデルをサポート
機械学習の異なるタスクに使用される異なる種類のモデルをサポートしています。たとえば、畳み込みニューラルネットワーク(CNN)、再帰型ニューラルネットワーク(RNN)、決定木(Decision Tree)、ロジスティック回帰(Logistic Regression)などの相互運用が可能です。
多彩な言語をサポート
ONNXの推論エンジンである「ONNX runtime」 は、Python だけではなく、C++, C#, Java, Node.js, Rubyなどの言語からも利用することができます。
多彩なハードウェアをサポート
CPU(インテル、AMD)、GPU(インテル、AMD、NVIDIA)、クラウド(Microsoft Azure、Amazon)のほか、FPGA、RasberryPi、Android/iOSや、多くのAI専用プロセッサー(habana、Hailo、CEVA、ほか)にも対応しています。
インストール方法
ONNX実行環境(ONNX Runtime)は、下記の公式サイトからインストールできます。

公式サイトに移動したら、画面を下方向にスクロールしてください。

少しスクロールすると、いくつかの条件を設定する画面が表示されます。

ONNXは、使いたい言語やハードウェア、フレームワークに合わせてインストール方法が変わるため、Platform、Architecture、Hardware Accelerationの4項目を設定していきます。
設定が完了すると画面下部の Installation Instructions 欄にインストール方法が表示されます。
今回はWindows、Python、X64、DefaultCPU を選択したので、インストール方法は pip install onnxruntime の実行だけでインストールできます。
チュートリアルについて
機械学習フレームワーク間でのインポート/エクスポートに関するサンプルプログラムがnotebook 形式で公開されています。
ONNX MODEL ZOO について
ONNX Runtimeで実行が可能なモデルは、ONNX Model Zoo から入手可能です。
- あ
- b
- c




コメント