vai_q_pytorch にはインスペクターと呼ばれる関数があり、さまざまなデバイス アーキテクチャ上のニューラル ネットワーク (NN) モデルの診断に役立ちます。インスペクターは、ハードウェアの制約に基づいてターゲット デバイスの割り当てを予測します。生成された検査レポートを参考にして NN モデルを変更または最適化すると、運用にかかる手間と時間を大幅に削減できます。量子化の前に浮動小数点モデルを検査することを推奨します。
resnet18_quant.py を例として、モデル コードを編集してこの機能を適用する方法を説明します。
- vai_q_pytorch モジュールをインポートします。
from pytorch_nndct.apis import Inspector
- ターゲット名またはフィンガープリントを使用してインスペクターを作成します。
inspector = Inspector("0x603000b16013831") # by target fingerprint or inspector = Inspector("DPUCAHX8L_ISA0_SP") # by target name
- 浮動小数点モデルを検査します。
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