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

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

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 日本語
注記: vai_q_pytorch のログ メッセージは、特殊な色とユニークなキーワード接頭辞「VAI_Q_*」で識別されます。ログ メッセージの種類には、「error」、「warning」、「note」があります。vai_q_pytorch ログ メッセージの監視は、フロー ステータスの検証に重要です。
  1. 次のコマンドを実行してモデルを量子化します。
    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
    ResNet_int.pt:     deployed torch script format model
    注記: XIR は、Vitis AI Docker 内の Vitis AI-pytorch conda 環境ですぐに利用可能です。ただし、vai_q_pytorch をソースコードからインストールする場合、XIR を事前にインストールしておく必要があります。XIR がインストールされていないと、XMODEL ファイルが生成できず、コマンド実行時にエラーが発生します。その場合も、精度は出力ログで検証できます。