【おにきす】

ONNX(オニキス) とは?

最終更新:
💡 モデルの計算を、共通の形で受け渡す

機械学習モデルの計算やデータを共通の形で表すためのオープンな仕様。対応する学習環境からモデルを出力し、ONNX Runtimeなどの実行環境で利用する。

📌 このページのポイント
ONNX:共通の形でモデルを渡す学習環境対応する変換ONNX計算を表す仕様実行環境モデルを動かす実行ソフトの例:ONNX Runtime演算・opset結果・精度環境・速度変換と実行の対応を確認し、結果を比べる
学習環境と実行環境を分ける例。変換できるモデルや演算、実行環境には条件があります。
ひよこ ひよこ
モデルを保存する形式なの?
ペンギン先生 ペンギン先生
共通の仕様で計算のつながりを表し、保存・受け渡しできるようにするものだよ。計算を行うノードや入力・出力、重みなどを扱う。学習した環境と本番で動かす環境を分ける用途があるんだ。
ひよこ ひよこ
ONNX Runtimeとは、どう違う?
ペンギン先生 ペンギン先生
ONNXはモデルの表し方で、ONNX Runtimeはそれを読み込んで動かす実行環境だよ。利用するハードウェア向けの実装を組み合わせられる。形式にしただけで、どのCPUやGPUでも同じ条件で動くわけではないんだ。
ひよこ ひよこ
PyTorchのモデルなら、全部変換できる?
ペンギン先生 ペンギン先生
変換ツールが使える演算やモデルの作りによるよ。ONNXには演算の仕様とその版を表すopsetがあり、実行環境の対応も確認する。未対応の演算や独自の演算は、追加の対応が必要になることがあるんだ。
ひよこ ひよこ
変換すれば、必ず速くなる?
ペンギン先生 ペンギン先生
速度はモデルやハードウェア、実行環境の設定によるよ。変換できた後も、同じ入力に対する結果や必要な精度、実際の速度を確認しよう。サーバー、アプリ、端末など、使う場所で評価することが大切だね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ONNX」って出てきたら「機械学習モデルの計算を共通の形で受け渡す仕様」と思えばだいたいOK!
📖 おまけ:英語の意味
「Open Neural Network Exchange」 = 機械学習モデルを共通の形で扱うための名前
💬 ONNXはモデルの表し方を定めるよ。そのモデルを実際に動かすソフトウェアは、ONNX Runtimeなどの実行環境なんだ。

参考資料

← 用語集にもどる