用語集

ONNX (オープン・ニューラルネットワーク・エクスチェンジ)

ONNX 、AIモデルの移植性と相互運用性を強化し、Ultralytics YOLO モデルの多様なプラットフォームへのシームレスな展開を可能にする方法をご覧ください。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

急速に進化する人工知能(AI)や機械学習(ML)の分野では、異なるツールやプラットフォーム間でモデルを効率的に移動することが極めて重要です。ONNX Neural Network Exchange)は、AIモデルのために特別に設計されたオープンソースフォーマットを提供することで、この課題に取り組んでいます。ONNXは普遍的なトランスレーターとして機能し、開発者は次のような1つのフレームワークでモデルをトレーニングできる。 PyTorchなどの別のフレームワークや推論エンジンを使ってモデルをデプロイすることができる。 TensorFlowONNX Runtimeのような特殊なランタイムを使用して展開することができる。この相互運用性により、研究から生産までの経路が合理化され、AIエコシステム内でのコラボレーションと柔軟性が促進される。ONNX 当初、Facebook AI Researchと Microsoft Researchによって開発され、現在では盛んなコミュニティ・プロジェクトとなっている。

関連性ONNX

ONNX コアバリューは、次のことを推進することにある。 移植性と相互運用性 AI開発ライフサイクルの中で開発者は、特定のフレームワークのエコシステムに縛られるのではなく、ONNX 活用することで、異なるツールやハードウェアプラットフォーム間でモデルを自由に移動させることができる。共通の演算子セット(の構成要素)を定義することで ニューラルネットワーク)と標準ファイル形式(.onnx)、ONNX モデルの構造と学習されたパラメーター(ウェイト)が一貫して表現されている。これは Ultralytics YOLO Ultralytics 、次のような簡単な方法を提供している。 モデルをONNX 形式にエクスポート.このエクスポート機能により、ユーザーは次のようなモデルを作成することができます。 YOLOv8 または最新の YOLO11 そして、さまざまなハードウェアやソフトウェア・プラットフォーム上に展開し、多くの場合、最適化された 推論エンジン パフォーマンスと ハードウェアアクセラレーション.

ONNX の仕組み

ONNX 、いくつかの重要な技術的特徴によって相互運用性を実現している:

  • 共通のモデル表現: ONNX 、畳み込みや 活性化関数などの計算グラフ演算子の標準セットと、共通のデータ型システムを定義している。ディープラーニングモデルが ONNX変換されると、そのアーキテクチャとパラメータはこの共有表現に変換されます。
  • グラフベースの構造: ONNX モデルは計算グラフとして表現される。グラフのノードは演算(行列の乗算やReLU関数の適用など)を表し、エッジはこれらの演算間のデータ(テンソル)の流れを表す。このグラフ構造は多くのMLフレームワークで共通であり、変換を容易にします。
  • バージョン管理システム: ONNX 演算子セット(オペセット)のバージョンを管理しています。これにより後方互換性が確保され、古い演算子セットで作成されたモデルでも、そのバージョンをサポートする新しいランタイムで実行することができます。
  • 拡張性: ONNX コアとなる演算子セットを定義しているが、カスタム演算子も可能で、フレームワークやハードウェアベンダーが特殊な機能をサポートできるようにしている。
  • エコシステムとツール: ONNX周りには、様々なフレームワークからモデルを変換するためのライブラリ(例えば PyTorchTensorFlowやTensorFlowのような)様々なフレームワークからモデルを変換するためのライブラリ、ONNX グラフを可視化しデバッグするためのツール、異なるハードウェア(CPU, GPU専用アクセラレータ)にまたがる高性能推論に最適化されたONNX Runtimeのようなランタイムがあります。

応用例ONNX

ONNX 、模範的なトレーニング環境と多様な配備対象との間の重要な橋渡し役を果たしている。具体例を2つ紹介しよう:

  1. コンピュータビジョンモデルのエッジデバイスへの展開:開発者は、Ultralytics YOLO モデルのような物体検出モデルを、次のようにしてトレーニングします。 PyTorchを使用してトレーニングします。リソースに制約のあるエッジデバイス(スマートカメラやドローンなど)に展開するために、開発者はモデルをONNX 形式にエクスポートします。このONNX ファイルは、次のようなツールを使って最適化できる。 NVIDIA TensorRTIntel OpenVINOようなツールで最適化され、デバイス上で直接、効率的なリアルタイム推論を行うために展開される。この柔軟性は、様々なモデル展開オプションで強調されています。Ultralytics ソリューションは、さまざまな業界の事例をご覧いただけます。
  2. フレームワークを超えたコラボレーションと展開:研究チームは TensorFlow.別のチームは、このモデルを PyTorch.TensorFlow モデルをONNXエクスポートすることで、2つ目のチームは、元のTensorFlow フレームワークを必要とすることなく、PyTorch 環境内で簡単にロードして使用したり、標準化されたONNX Runtimeを使用して、さまざまなサーバ構成(クラウドまたはオンプレミス)にデプロイしたりすることができます。これにより、モデルの提供や統合が容易になります。

ONNX 関連概念との比較

ONNX 関連用語と区別することは重要である:

  • フレームワーク固有のフォーマット: PyTorchようなフォーマット .pt/.pth または TensorFlow SavedModel は、それぞれのフレームワークにネイティブです。ONNX 仲介役として機能し、これらのフォーマット間の変換や、共通のランタイムを介したデプロイを可能にします。 TorchScript はPyTorch モデルシリアライズの別のフォーマットで、ONNX エクスポートの代替または前段階として使われることがあります。
  • 推論エンジン/ランタイム: ONNX ランタイムのようなツール、 TensorRTOpenVINOなどのツールは、MLモデルを効率的に実行するために設計されたソフトウェア・ライブラリである。これらのエンジンの多くはONNX モデルを利用することができ、多くの場合、特定のハードウェアターゲットに対してさらなる最適化量子化やグラフ融合など)を適用することができる。ONNX これらのエンジンに標準化されたモデル入力を提供する。

要約すると、ONNX 機械学習オペレーション(MLOps)パイプラインの柔軟性と相互運用性を確保するために不可欠な標準であり、開発者がフレームワークの制約に縛られることなく、トレーニングとデプロイメントに最適なツールを選択できるようにする。Ultralytics HUBのようなプラットフォームは、このようなフォーマットを活用することで、モデル開発から実世界への応用までの道のりを簡素化します。

すべて読む