急速に進化する人工知能(AI)や機械学習(ML)の分野では、異なるツールやプラットフォーム間でモデルを効率的に移動することが極めて重要です。ONNX Neural Network Exchange)は、AIモデルのために特別に設計されたオープンソースフォーマットを提供することで、この課題に取り組んでいます。ONNXは普遍的なトランスレーターとして機能し、開発者は次のような1つのフレームワークでモデルをトレーニングできる。 PyTorchなどの別のフレームワークや推論エンジンを使ってモデルをデプロイすることができる。 TensorFlowなどの別のフレームワークや推論エンジン、あるいは特殊なランタイムを使用して展開することができる。この相互運用性により、研究から実運用へのパスが合理化される。
関連性ONNX
ONNX 中核的価値は、AIエコシステム内での移植性と相互運用性を促進することにある。開発者は、特定のフレームワークのエコシステムに縛られる代わりに、ONNX 活用してモデルを自由に移動させることができる。共通の演算子セットと標準ファイル形式を定義することで、ONNX モデルの構造と学習されたパラメータ(重み)が一貫して表現されることを保証する。これは特に Ultralytics YOLOモデルを ONNX 形式にエクスポートするための簡単な方法をUltralytics 提供しているからです。このエクスポート機能により、ユーザーは YOLOv8または YOLO11のようなモデルを様々なハードウェアやソフトウェアプラットフォームに展開することができ、多くの場合、パフォーマンスを向上させるために最適化された推論エンジンを利用することができます。
ONNX の仕組み
ONNX 、いくつかの重要な機能によって相互運用性を実現している:
- 共通のモデル表現:これは(畳み込み層や活性化関数のような)演算子とデータ型の標準セットを定義する。モデルがONNX変換されると、そのアーキテクチャはこの共有言語に変換されます。
- グラフベースの構造:モデルは計算グラフとして表現され、ノードは操作、エッジはデータ(テンソル)の流れを表す。これは、ほとんどの深層学習フレームワークで使用されている一般的な構造である。
- 拡張性: ONNX コアとなる演算子セットを定義しているが、カスタム演算子も可能であるため、斬新なモデルアーキテクチャをサポートすることができる。
- バージョン管理: ONNX 、後方互換性を確保するためにオペレータのバージョンを維持します。つまり、古いバージョンで作成されたモデルは、標準が進化しても使用することができます。
応用例ONNX
ONNX 、モデルのトレーニング環境と配備ターゲットのギャップを埋めるために広く使われている。以下に2つの例を挙げる:
- エッジデバイスへの最適化された展開:開発者は、GPUを搭載した強力なサーバー上でUltralytics YOLO 使用してオブジェクト検出モデルをトレーニングします。このモデルをリソースに制約のあるエッジデバイスに展開するには、モデルをONNXエクスポートします。ONNX モデルは、次のようなツールを使って最適化できます。 NVIDIA TensorRT OpenVINOようなツールを使って最適化することができ、より高速で効率的なリアルタイム推論を実現します。詳細については、モデル展開オプションに関するガイドを参照してください。
- クロスフレームワークコラボレーション:ある研究チームがPyTorch新しいモデルコンポーネントを開発する。このコンポーネントをTensorFlow構築された大規模なアプリケーションに統合する担当の別のチームは、コンポーネントをONNX ファイルとして受け取ることができます。これにより、複雑なコード変換や、異なるフレームワーク用の別々のモデルバージョンを管理する必要がなくなり、顧客ページに記載されているような組織内でのコラボレーションが容易になります。
関連概念
ONNX 理解するには、多くの場合、関連技術が関わってくる:
- ONNX ランタイム:様々なハードウェアCPU、 GPUなど)でONNXモデルを効率的に実行するために設計された高性能推論エンジンです。ONNX フォーマットを定義するのに対し、ONNX ランタイムは実行環境を提供する。
- TensorRT:高性能ディープラーニング推論のためのNVIDIA SDKで、NVIDIA GPU上で最適化するためにONNX モデルをインポートすることができます。Ultralytics TensorRT 統合を提供しています。
- OpenVINO:AI推論の最適化と展開のためのIntel ツールキットで、Intel ハードウェア上で実行可能なONNX モデルをサポートしている。
- 輸出モデル: 学習済みモデルを元のフレームワーク形式(例えば、PyTorch
.pt
)をONNXような標準化されたフォーマットに変換する。 - モデルの展開: ONNX 、クロスプラットフォームの互換性を簡素化する上で重要な役割を果たします。ONNX モデルのデプロイは、Ultralytics HUB のようなプラットフォームを使って管理することができます。
モデルの交換とデプロイを容易にすることで、ONNX AI開発のライフサイクルをより柔軟かつ効率的にする上で重要な役割を果たしている。