モデル展開作業
- トレーニングされたモデルは、特定のソフトウェアおよびハードウェア プラットフォームで推論を実行します。
- ハードウェア向けに最適化および高速化された推論コード
トレーニング機器プラットフォーム:
CPU、GPU、DSP
ONNXの存在意義
モデルとハードウェアの対応関係は適応複雑度 mxn に起因し、開発の複雑化や効率の低下などの問題を引き起こします。
モデル式構造を使用してトレーニング フレームワークの出力構造を統合し、モデル展開の複雑さを mxn から m+n に変換します。
ONNX 変換はモデル形式であり、プログラムではなくテキストであるため、デバイス上で直接実行できません。したがって、ハードウェア デバイス上で効率的な推論を可能にするために ONNX モデルをロードするにはソフトウェア スタックが必要です。このソフトウェア スタックは、モデルの推論フレームワークを指します。推論フレームワークは、ハードウェアベンダーが自社開発するものと、汎用の推論フレームワークに分類されます。独自に開発した推論フレームワークの最下層はよく最適化されており、推論の計算効率は高いですが、汎用性がなく、他のチップに適用することはできません。一般的な推論フレームワークは汎用性があり、さまざまなソフトウェアおよびハードウェア プラットフォームに適用できるため、開発の困難さが軽減され、開発効率が向上します。ユーザーは基礎となるフレームワークに注意を払う必要はなく、対応するインターフェイスを完了するだけで済みます。
全体的な推論プロセス: 最初にモデル フレームワークを使用してモデルをトレーニングし、次にそれを ONNX モデル構造に変換し、次に推論フレームワークを使用してソフトウェアおよびハードウェア プラットフォーム上で ONNX モデルを効率的に実行します。
ONNX(オープンニューラルネットワークエクスチェンジ)
機械学習用に設計され、トレーニングされたモデルを保存するために使用されるオープン ファイル形式。異なるトレーニング フレームワークはモデルを同じ形式で保存し、相互に対話できます。Microsoft、Amazon、Facebook、IBMなどの企業が協賛しています。
ONNX の例
torch.onnx.export
onnx モデルのエクスポートを使用します。
onnx モデルをエクスポートした後、netron.appと入力してモデル構造を視覚化します。
ResNetのONNXモデルエクスポート
パラメータの説明
モデル推論の例
mmdeploy の例を使用してモデル推論に ONNX ランタイムを適用し、
TensorRT を使用して ONNX モデルを推論します。
一括調整
上記の ONNX を生成する場合、(1, X, X, これは、dynamic_axes パラメーターを使用して実現できます。
TensorRT モデルのデータ形式変換、minShapes および maxShapes パラメーター設定の変更
定量化する
バッチを使用してモデル推論速度を向上させることに加えて、量子化を使用して高速化することもできます。一般に、その使用はfloat16
モデルの精度の変化には影響しませんが、int8
保存形式を使用した後はモデルの精度がわずかに低下します。
定量的方法
- ポストトレーニング量子化: ポストトレーニング量子化 (PTQ)
- トレーニング中の量子化: 量子化を意識したトレーニング (QAT)
QAT を使用している場合、モデルのトレーニング プロセス中にモデルの精度変換が実装されているため、onnx データ構造変換を使用できます。PTQ を使用している場合は、対応するコンピューティング プラットフォームで精度変換を実行する必要があります。
対称量子化: モデルの数値対称区間を取得し、INT8 (-127, 127) に対応する量子化係数 (単純に比例係数として理解される 127/6) を取得でき、FP32 の値を INT8 に対応させます。
TensorRT では次のように呼ばれます。calibration