量子化の前の浮動小数点モデルの検査 - 2.5 日本語

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

Document ID
UG1414
Release Date
2022-06-15
Version
2.5 日本語
vai_q_pytorch にはインスペクターと呼ばれる関数があり、さまざまなデバイス アーキテクチャ上のニューラル ネットワーク (NN) モデルの診断に役立ちます。インスペクターは、ハードウェアの制約に基づいてターゲット デバイスの割り当てを予測します。生成された検査レポートを参考にして NN モデルを変更または最適化すると、運用にかかる手間と時間を大幅に削減できます。量子化の前に浮動小数点モデルを検査することを推奨します。

resnet18_quant.py を例として、モデル コードを編集してこの機能を適用する方法を説明します。

  1. vai_q_pytorch モジュールをインポートします。
    from pytorch_nndct.apis import Inspector
  2. ターゲット名またはフィンガープリントを使用してインスペクターを作成します。
    inspector = Inspector("0x603000b16013831") # by target fingerprint
    or
    inspector = Inspector("DPUCAHX8L_ISA0_SP") # by target name
  3. 浮動小数点モデルを検査します。
    input = torch.randn([batch_size, 3, 224, 224])
    inspector.inspect(model, input)

モデルを検査するには、次のコマンド ラインを実行します。

python resnet18_quant.py --quant_mode float --inspect

インスペクターは、verbose_level の設定に従って、特殊な色と特殊なキーワード接頭辞「VAIQ_*」を持ついくつかの特殊なメッセージを画面上に表示します。「[VAIQ_NOTE]: =>Start to inspect model...」と「[VAIQ_NOTE]: =>Finish inspecting」の間に表示されるメッセージに注意してください。

インスペクターが正常に実行されると、通常は出力ディレクトリ「./quantize_result」の下に 3 つの重要なファイルが生成されます。
inspect_{target}.txt: Target information and all the details of operations in float model
inspect_{target}.svg: If image_format is not None. A visualization of inspection result is generated
inspect_{target}.gv: If image_format is not None. Dot source code of inspetion result is generated
注記:
  • インスペクターは「vai_utf」パッケージを使用します。vai_utf は Vitis-AI Docker の「vitis-ai-pytorch」 Conda 環境で使用可能になりますが、vai_q_pytorch をソース コードからインストールする場合は、前もって vai_utf をインストールしておく必要があります。
  • 検査結果の可視化には、dot エンジンを使用します。dot を正常にインストールできない場合は、検査時に「image_format = None」を設定してください。
  • 詳しいガイダンスが必要な場合は、example/inspector_tutorial.ipynb を参照してください。前もって jupyter notebook をインストールしておきます。次のコマンドを実行します。
    jupyter notebook example/inspector_tutorial.ipynb