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 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 中的 Vitis AI-Pytorch conda 环境内,提供了现成的 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