モデル全体の量子化フローを次の図に示します。
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、vai_q_caffe の場合は deploy.prototxt/deploy.caffemodel) に変換されます。このモデルは、その後 Vitis AI コンパイラによってコンパイルされ、DPU にデプロイされます。量子化されたモデルは、TensorFlow、PyTorch、または Caffe フレームワークの標準バージョンで取り込むことはできません。