量子化を実行し、結果を取得する - 2.5 日本語

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

Document ID
UG1414
Release Date
2022-06-15
Version
2.5 日本語
注記: vai_q_pytorch ログ メッセージは、専用の色と特殊なキーワード接頭辞「VAI_Q_*.」で示されます。vai_q_pytorch ログ メッセージには、「error」、「warning」、「note」の 3 種類があります。vai_q_pytorch ログ メッセージに注意して、フロー ステータスを確認してください。
  1. 「--quant_mode calib」を指定してコマンドを実行し、モデルを量子化します。
    python resnet18_quant.py --quant_mode calib --subset_len 200

    キャリブレーションを転送する際は、浮動小数点モデルの評価フローを借用して、浮動小数点スクリプトからのコードの変更を最小限に抑えます。最後にロスと精度に関するメッセージが表示された場合は、無視してかまいません。

    量子化中および評価中の反復回数を制御することは重要です。一般的に、量子化には 100 ~ 1000 個の画像があれば十分であり、評価には検証セット全体が必要とされます。反復回数は、データ読み込み部で制御できます。この場合、引数 subset_len により、ネットワーク転送に使用する画像の数を制御できます。浮動小数点モデルの評価スクリプトに同じ役割を持つ引数が含まれていない場合は、追加する必要があります。

    この量子化コマンドが正常に実行されると、出力ディレクトリ ./quantize_result の下に 2 つの重要なファイルが生成されます。

    ResNet.py
    変換後の vai_q_pytorch 形式モデル。
    Quant_info.json
    テンソルの量子化ステップ。量子化されたモデルを評価するには、このファイルが必要です。
  2. 次のコマンドを実行して、量子化されたモデルを評価します。
    python resnet18_quant.py --quant_mode test

    コマンドが正常に実行された後に表示される精度は、量子化されたモデルの精度です。

  3. コンパイル用の xmodel (および onnx 形式で量子化されたモデル) を生成するには、バッチ サイズを 1 に設定する必要があります。冗長な反復を避けるために subset_len=1 に設定し、次のコマンドを実行します。
    python resnet18_quant.py --quant_mode test --subset_len 1 --batch_size=1 --deploy

    実行中にログに表示されるロスと精度は無視します。Vitis AI コンパイラ用の xmodel ファイルが、出力ディレクトリ ./quantize_result に生成されます。このファイルは FPGA での運用に使用されます。

    ResNet_int.xmodel: deployed XIR format model
    ResNet_int.onnx:   deployed onnx format model
    注記: XIR は Vitis AI Docker の「vitis-ai-pytorch」 Conda 環境で使用可能になりますが、vai_q_pytorch をソース コードからインストールする場合は、前もって XIR をインストールしておく必要があります。XIR がインストールされていない場合、xmodel ファイルは生成されず、コマンドはエラーを返します。この場合も、制度は出力ログでチェックできます。