onnxsim/onnxsim

Simplify your onnx model

解決する課題

ONNX Simplifier は、冗余な演算子を削除し計算グラフを簡素化することで、ONNX モデルの複雑さを軽減します。これは、PyTorch などのフレームワークからモデルをエクスポートする際に特に有用です。これらのフレームワークは、モデルの可読性、最適化、デプロイを困難にする不要な形状操作ノードを生成することが多いためです。

仕組み

このツールは、形状推論、グラフ最適化、定数畳み込みの固定点ループを実行します。グラフ内の定数部分を評価し、計算された出力に置き換えます。また、グラフ全体にテンソル形状を伝播させることでさらなる畳み込みを可能にし、オプションでランダムな入力を使用して簡素化されたモデルと元のモデルを検証し、正確性を保証することもできます。

対象ユーザー

MLIR ベースのコンパイラ、Apple Core ML、TensorFlow Lite など、さまざまなハードウェアターゲット向けに ONNX モデルを最適化する必要がある AI エンジニアおよび ML 開発者向けに設計されています。

主な特徴

  • 定数畳み込み (Constant Folding): 冗余な演算子を計算済みの定数出力に置き換えます。
  • グラフ最適化 (Graph Optimization): onnx-optimizer と統合し、融合(例: BatchNorm を Conv に統合)や削除を行います。
  • 幅広いエクスポートサポート: MLIR (torch-mlir/onnx-mlir)、Core ML、TensorFlow Lite への直接エクスポートパスを提供します。
  • フレームワーク統合: Hugging Face Transformers、Diffusers、Detectron2、SAM 2 用の専用エクスポート関数を備えています。
  • マルチプラットフォーム: Python パッケージ、CLI、C API、Rust ラッパー、およびインストール不要の Web バージョンとして利用可能です。
  • 量子化サポート: 量子化中に失われた精度を回復するための量子化認識微調整 (QAT) を含みます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト