【おにきす】

ONNX(オニキス) とは?

💡 AIモデルの「共通ファイル形式」
📌 このページのポイント
ONNX モデルの相互運用 学習フレームワーク PyTorch TensorFlow scikit-learn 各社独自の形式 変換 ONNX 共通フォーマット .onnx ファイル 配布 推論環境 ONNX Runtime モバイル エッジデバイス 様々な環境で実行 ONNXで変換すれば、学習したフレームワークに依存せず推論可能
ONNXモデル相互運用のイメージ
ひよこ ひよこ

なんで必要なの?

ペンギン先生 ペンギン先生

AIフレームワークPyTorchTensorFlow、JAXなど多数あって、それぞれ独自のモデル形式を持っている。研究者がPyTorchで作ったモデルを本番環境TensorFlow Servingで動かしたいとき、ONNXを仲介フォーマットとして使えば変換できるんだよ

ひよこ ひよこ

ONNX Runtimeって何?

ペンギン先生 ペンギン先生

Microsoftが開発した高性能な推論エンジンだよ。ONNXフォーマットのモデルをCPUGPUNPUで高速に実行できる。WindowsLinux、macOS、iOSAndroidなど幅広い環境で動作する。推論速度がPyTorchのnative実行より速いケースも多いんだ

ひよこ ひよこ

どうやって変換するの?

ペンギン先生 ペンギン先生

PyTorchならtorch.onnx.export()、TensorFlowならtf2onnxライブラリで変換できるよ。Hugging FaceのモデルもoptimumライブラリでワンコマンドでONNX変換可能。ただし一部の複雑なオペレーションは変換時にエラーになることがあるから、変換後の精度検証は忘れずにね

ひよこ ひよこ

実務での活用場面は?

ペンギン先生 ペンギン先生

モバイルアプリやエッジデバイスへのデプロイが最も多い使い方だよ。ONNX Runtimeはモデルの量子化(INT8/INT4)もサポートしていて、スマホやIoTデバイスでの推論を軽量化できる。Windows上のCopilot機能もONNX Runtimeベースで動いているんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ONNX」って出てきたら「異なるAIフレームワーク間でモデルを共有するフォーマット」と思えればだいたいOK!
📖 おまけ:英語の意味
「Open Neural Network Exchange」 = オープンニューラルネットワーク交換
💬 MicrosoftとFacebookが中心に開発。AIモデルの「PDF」のような存在だよ
← 用語集にもどる