要生成量化推断模型和参考结果,请遵循下列步骤进行操作:
- 运行以下命令对模型进行量化,以生成量化推断模型。 这样即可在
quantize_model
文件夹中生成量化模型 quantize_eval_model.pb。vai_q_tensorflow quantize \ --input_frozen_graph ./float/resnet_v1_50_inference.pb \ --input_fn input_fn.calib_input \ --output_dir quantize_model \ --input_nodes input \ --output_nodes resnet_v1_50/predictions/Reshape_1 \ --input_shapes ?,224,224,3 \ --calib_iter 100
- 运行以下命令生成参考数据,以生成参考结果。
vai_q_tensorflow dump --input_frozen_graph \ quantize_model/quantize_eval_model.pb \ --input_fn input_fn.dump_input \ --output_dir=dump_gpu
下图显示了部分参考数据。
- 运行以下命令生成 DPU xmodel 文件,以生成 DPU xmodel,例如 V70。
vai_c_tensorflow --frozen_pb quantize_model/quantize_eval_model.pb \ --arch /opt/vitis_ai/compiler/arch/DPUCV2DX8G/V70/arch.json \ --output_dir compile_model \ --net_name resnet50_tf
- 运行以下命令以生成 DPU 推断结果,并将 DPU 推断结果与参考数据自动匹配。
env XLNX_ENABLE_DUMP=1 XLNX_ENABLE_DEBUG_MODE=1 XLNX_GOLDEN_DIR=./dump_gpu/dump_results_0 \ xdputil run ./compile_model/resnet_v1_50_tf.xmodel \ ./dump_gpu/dump_results_0/input_aquant.bin \ 2>result.log 1>&2
如需了解有关
xdputil
用法的更多信息,请执行 xdputil --help 命令。运行以上命令后,即可生成 DPU 推断结果和比较结果
result.log
。DPU 推断结果位于dump
文件夹中。 - 请对参考结果和 DPU 推断结果进行交叉核对。
- 查看所有层次的比较结果。
grep --color=always 'XLNX_GOLDEN_DIR.*layer_name' result.log
- 仅查看失败的层次。
grep --color=always 'XLNX_GOLDEN_DIR.*fail ! layer_name' result.log
如果交叉核对失败,请使用以下方法进一步检查交叉核对失败的层次。
- 检查 DPU 和 GPU 的输入。确保它们使用相同的输入数据。
- 使用
xdputil
工具生成一幅显示网络结构的图像。Usage: xdputil xmodel <xmodel> -s <svg>
注释: 在 Vitis AI Docker 环境中,执行以下命令即可安装所需的库。sudo apt-get install graphviz
打开您创建的图像后,即可看到这些运算周围的诸多小框。每个框代表 DPU 上的 1 个层次。您可使用最后一项运算的名称在 GPU 转储结果中查找其对应的层次。下图显示了部分架构。
- 将文件提交给 AMD。
如果在 DPU 上证明某个特定层存在错误,请准备好量化模型(例如
quantize_eval_model.pb
),将其打包并与详细描述一起发送给AMD,以供工厂进行进一步分析。
- 查看所有层次的比较结果。