AMD Vitis™ 统一软件平台 AI Library 包含了 Xdputil 工具,可作为板级开发的辅助调试手段,其源代码位于以下位置:
https://github.com/Xilinx/Vitis-AI/tree/master/src/vai_library/usefultools
在预编译的官方 Board image 和 Vitis AI docker 中均已安装了 Xdputil。对于定制的 Target board,安装方式可参考对应版本的 Vitis AI Library 用户指南,例如:
https://docs.amd.com/r/en-US/ug1354-xilinx-ai-sdk/Step-3-Installing-the-AI-Library-Package
在 Docker 环境下跑 Xdputil,可运行 usr/bin/python3 -m xdputil。以下是运行 xdputil -h 以后的用法概览:
大部分的子命令需要关联 DPU 和 Device 信息,只能在目标板上运行。一般在 Docker 里面可对 Xmodel 文件做进一步解析和查看。
对于 xdputil xmodel 子命令,可以进一步用 -h 查看用法。
以下给出了一些具体示例及命令输出。
显示 xmodel subgraph 信息,包括 input/output tensor,kernel
xdputil xmodel -l yolov6m_pt.xmodel
把 xmodel 转成其他格式
xdputil xmodel<xmodel>-t<TXT>
xdputil xmodel<xmodel>-s<SVG>
xdputil xmodel<xmodel>-p<PNG>
以-t 为例,xdputil xmodel yolov6m_pt.xmodel -t yolov6_mt_xmodel.txt
从导出的 .txt 中可以获取 input/output tensor,op_node 等的详细属性。
显示 Xmodel 中某一个 Operator 的信息,op_name 可从上述导出的.txt 中获取
xdputil xmodel yolov6m_pt.xmodel --op
ModelNNDct__ModelNNDct_CSPBepBackbone__module__CSPBepBackbone_backbone__RealVGGBlock_stem__Conv2d_conv__input_3
显示 Device 信息,包括 DPU 配置,指纹信息,Runtime 版本等,这可以帮助用户快速了解当前 Board 的 DPU 重要信息,辅助调试运行中跟 DPU 兼容性相关的失败
xdputil query
显示 DPU 寄存器状态
xdputil status
做 Benchmark 测试
xdputil benchmark<xmodel>[-i subgraph_index]<num_of_threads>
subgraph_index 从0开始,-i 设成-1表示跑整个 Graph。Subgraph_index 可从 xdputil xmodel -l 的输出中获取。
如果第一级为 USER subgraph,那么 -i 0会报错。
改成-i 1后可以正常测试。
Xdputil run 可用于 DPU 运行结果不正确的调试,交叉检查参考值和 DPU 推理值。UG1414 中给出了具体步骤:
https://docs.amd.com/r/en-US/ug1414-vitis-ai/DPU-Debug-with-VART
总之,Xdputil 的用法简单,可以辅助用户更直观深入地了解编译后的模型以及当前 DPU 的一些信息,在调试诸如 DPU 无法找到,指纹不匹配,以及和量化后准确率差异过大等问题的时候是一个有效的调试手段。
AMD 自适应 SOC 及 FPGA 中文技术支持社区