Skip to content

DNET_ONNX

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

ONNX

概要

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モデルの自動分割と最適アクセラレータによるサブモデル実行によりこれを実現している。

参考

正誤

  • 元 Wiki の「IR」という別ページへの PukiWiki リンクは、 そのようなページは 3 サイトのダンプいずれにも存在せず (元 Wiki 上でリンク切れ)、文脈からは同一ページ内の「IR」節を 指していると読めるため、同節へのリンクとした。
  • 「ai.onnx(Default」の閉じ括弧欠落は原文ママ。

補足:ONNX は 2019 年に Linux Foundation(LF AI & Data)配下の プロジェクトとなっている。


Tags: 移行, ONNX, Open Neural Network Exchange, ONNX Runtime, 機械学習, 相互運用, IR, Operator

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally