「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
Open Neural Network Exchange (ONNX)
- 機械学習フレームワーク(FX)間において相互運用を可能にする為の取り組み
- オープンソースの機械学習や人工知能のモデルを表現する為の代表的なフォーマット
- フォーマットとは、モデルを記述する統一インターフェースの提供を指す。
- 2017年9月に、FacebookとMicrosoftが、このプロジェクトを始動した。
詳細 †
- 各フレームワークは学習したモデルをONNX形式で出力する。
- プラットフォームはONNX実行環境を提供し、どこでもモデル推論を実行できる。
開発の背景 †
推論(評価)に焦点を当て、
- 拡張可能な計算グラフモデル
- 組み込み演算子
- 標準データ型の定義
を提供する。
FXの相互運用性 †
開発者が複数のFXでのデータのやり取りを簡単に行えるようにする。
- 開発工程や機械学習の高速処理、
- モバイルデバイスでの推論などの特定の段階において、
最適化の共有 †
ONNXを対象に調整すれば、複数のFXにおけるDNNのパフォーマンスを一度に改善できる。
2つのサブ仕様 †
IR †
Intermediate Representation (IR)は
ONNXの基本データ型と計算グラフを定義するサブ仕様
- 基本データ型 FLOAT, INT8, BFLOAT16 等
- 入出力 Tensor, Sequence, Map
- 計算グラフ Model, Graph, Node 等の要素
を定義する。
Operator †
- IR?はONNX Operatorで定義される標準演算子に追加して、
独自の拡張演算子を受け入れられるように設計されている。
- ビルトイン演算子はサブ仕様 Operator specifications
により3種類の演算子セット(Opset)が定義されている。
- ai.onnx(Default
- ai.onnx.ml
- ai.onnx.training
ONNX Runtime(ORT) †
- 様々な環境におけるONNXモデルの推論・学習高速化を目的としたオープンソースプロジェクト
- プラットフォームを問わず単一のRuntime APIを介してONNXモデルを利用できる。
- またデプロイ環境に合わせた最適化を自動でおこなう。
- アクセラレータ・ランタイム抽象化とパフォーマンス最適化の両立を設計方針を掲げており、
ONNXモデルの自動分割と最適アクセラレータによるサブモデル実行によりこれを実現している。
参考 †