Vitis AI クオンタイザーのフロー - 3.5 日本語

Vitis AI ユーザー ガイド (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 日本語

次の図は、全体的なモデル量子化フローを示しています。

図 1. VAI クオンタイザーのワークフロー
注記: Caffe のサポートは Vitis AI 2.5 から廃止されています。Caffe の詳細は、『Vitis AI 2.0 ユーザー ガイド』 を参照してください。

Vitis AI クオンタイザーは、浮動小数点モデルを入力として受け入れ、前処理 (バッチ正規化の折りたたみと推論に不要なノードの削除) を実行します。そして、重み/バイアスとアクティベーションを指定されたビット幅に量子化します。

モデルの量子化を実行する前に、インスペクターと呼ばれるステップでモデルを検査します。インスペクターは分割に関する情報を出力し、どの演算子がどのデバイス (DPU/CPU) で実行可能かを示します。一般的には DPU の方が CPU よりも高速なため、なるべく多くの演算子を DPU デバイスで実行することが目標となります。分割の結果には、特定の演算子を DPU で実行できない理由を示すメッセージが含まれています。これは、DPU の能力に対する理解を深め、モデルを DPU に合わせて適応させるのに役立ちます。

Vitis AI クオンタイザーは、アクティベーションのキャリブレーションを実行し、量子化されたモデルの精度を高め、アクティベーションの統計を取得するために、推論を複数回反復する必要があります。そのため、入力としてキャリブレーション イメージ データセットが必要です。逆伝搬は不要なため、クオンタイザーは通常 100 ~ 1000 のキャリブレーション イメージで効果的に動作し、ラベル付けされていないデータセットで目的を果たせます。

キャリブレーション後、量子化されたモデルは、DPU のデータ形式に合致する DPU で運用可能な形式 (vai_q_tensorflow では deploy_model.pb、vai_q_pytorch では model_name.xmodel) に変換されます。その後、Vitis AI コンパイラはこのモデルをコンパイルし、DPU 上で運用します。ただし、標準バージョンの TensorFlow または PyTorch フレームワークは量子化されたモデルを直接受け入れることはできません。