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

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

Document ID
UG1414
Release Date
2023-09-28
Version
3.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)
  4. モデルを検査するには、次のコマンド ラインを実行します。
    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 the inspection result is generated
inspect_{target}.gv: If image_format is not None. The dot source code of the inspection result is generated
注記:
  • インスペクターは「xcompiler」パッケージを使用します。Vitis AI Docker の conda 環境 Vitis AI-Pytorch に xcompiler が準備されます。vai_q_pytorch をソース コードからインストールする場合は、前もって xcompiler をインストールしておく必要があります。
  • 検査結果の可視化には、dot エンジンを使用します。dot が正常にインストールされない場合、検査時に image_format = None を設定します。
  • 詳細な説明は example/jupyter_notebook/inspector/inspector_tutorial.ipynb を参照してください。前もって jupyter notebook をインストールしておきます。次のコマンドを実行します。
    jupyter notebook example/jupyter_notebook/inspector/inspector_tutorial.ipynb