模型编译及性能评测
(可选)模型修改
在模型编译前,我们也支持对模型进行板端部署相关的修改,常见操作及其API接口如下:
-
在模型export之后,convert之前:
-
batch输入拆分:使用
insert_split()接口。 -
模型中插入图像前处理节点:
a. 需要先将排布调整成NHWC排布以进行后续操作:此过程通过调用
insert_transpose()接口进行。b. 图像归一化:此过程通过调用
insert_image_preprocess()接口进行。c. 色彩转换(板端部署通常为nv12输入):此过程通过调用
insert_image_convert()接口进行。d. 配置为resizer输入,支持基于roi进行抠图和缩放:此过程通过调用
insert_roi_resize()接口进行。 -
调整输入输出数据排布:此过程通过调用
insert_transpose()接口进行。
-
-
在模型convert之后,compile之前,进行算子删除(Quantize/Dequantize/Cast等算子):此过程通过调用
remove_io_op()接口进行。
模型修改的具体步骤可参考模型修改章节的介绍,以上调用API接口的详细说明您可参考 HBDK Tool API Reference 章节的介绍。
模型编译、性能评测及可视化
测试定点模型精度并确认符合您的要求后,便可以进行模型编译、性能评测和可视化。
-
模型性能评测使用的模型,请确保已至少做过一次校准(step 数不限),以保证模型中的统计量符合实际情况,否则会造成性能测试结果不准确。
-
compile_opt支持配置为0、1、2,等级越高编译出的模型上板执行速度越快,但编译过程会慢,用于性能评测时,建议您设置为默认值2。
-
当某个OP的实际计算耗时与理论计算耗时的偏差大于您指定的
compile_advice值时,会打印相关log,包括耗时变化的信息、数据对齐前后的shape以及padding比例等信息,单位为微秒。
您可以通过 hb_analyzer工具 完成各阶段hbir模型及hbm模型的性能分析,具体使用方式及报告解读请跳转并参考相应章节。
您也可以通过下面的代码段基于hbm_perf完成性能分析。
成功执行后,会在终端内打印模型FPS等基本信息,同时,在你设置的目录下,会生成该模型的静态性能评估文件:
您可选择 model.html 或 model.json 对BPU部分的静态性能数据进行查看。
如果您在调用hbm_perf时,对开发板参数 remote_ip 进行了配置,会远程连接开发板进行性能评估,同样会在当前调用API接口的目录下,生成该模型的性能评估文件。
性能评估文件的指标解读可以参考 仿真性能评估指标解读 章节。 如您发现模型的性能评估结果不能符合您的预期,可以参考 性能调优指导 章节进行性能调优。
上方为开发机端仿真性能评估,如您想进行板端性能实测,可以参考 板端实测模型性能数据 章节的介绍,步骤是一样的。
如果还想要可视化模型,可参考如下:
以上调用API接口的详细说明您可参考 HBDK Tool API Reference 章节的介绍。
