板端评测

板端评测包括性能评测和精度评测两类。

性能评测用于评估模型推理的性能,评测时主要关注单帧推理延时(Latency)和推理吞吐(FPS)两个指标:

  • Latency 指模型完成一次推理所需的时间,关注重点为系统对单个请求的响应速度,时延统计从输入数据准备完成开始,到获得推理结果结束,单位为 毫秒(ms)。若使用异步UCP接口进行推理,则时延统计从调用 hbDNNInferV2 接口开始至 hbUCPWaitTaskDone 接口返回结束。
  • FPS 表示系统在单位时间内能够完成的推理帧数,反映系统的整体吞吐能力,单位为 帧/秒。

精度评测用于评估在部署环境中模型推理输出结果的正确性和一致性。

我们提供了 hrt_model_exec 工具及 hbm_infer 工具,方便您进行模型推理性能和精度评测工作。

注解
  • 在进行模型推理性能评测时,请确保评测时间内无其他程序占用资源。

  • 在不同平台上(J6E/M/P/H/B等),性能评测结果会因为硬件能力差异而有所不同。

使用 hrt_model_exec 工具评测

hrt_model_exec 是一个模型执行工具,可直接用于在开发板上获取模型信息、执行单帧推理以及评测模型推理性能。 工具源码路径为 samples/ucp_tutorial/tools/hrt_model_exec。工具的使用环境配置及三种使用场景示例如下:


# 设置环境变量,arch代表架构类型
arch=aarch64
bin=../${arch}/bin/hrt_model_exec
lib=../${arch}/lib/
export LD_LIBRARY_PATH=${lib}:${LD_LIBRARY_PATH}

# 获取模型信息
${bin} model_info --model_file=xxx.hbm

# 模型单帧推理,可获取推理结果文件用于评测精度
${bin} infer --model_file=xxx.hbm --input_file=xxx.bin --enable_dump=true

# 模型性能评测 - Latency (单线程)
${bin} perf --model_file=xxx.hbm --thread_num 1 --frame_count=1000

# 模型性能评测 - FPS (多线程,可根据实际情况调整线程数量)
${bin} perf --model_file=xxx.hbm --thread_num 8 --frame_count=1000

关于 hrt_model_exec 工具的更详细介绍,请参考 模型推理工具 - hrt_model_exec工具 章节。

使用 hbm_infer 工具评测

为提升精度评测效率,工具链提供了 hbm_infer 工具,允许您在 X86 端使用 Python 代码做模型前后处理,由板端 Server 执行实际推理过程,更适合进行批量数据集评测。其单进程基本使用示例如下:


# 创建 session
sess = HbmRpcSession(host="xx.xx.xx.xx", local_hbm_path="xx.hbm", with_profile=True)

# 打印模型输入输出信息
sess.show_input_output_info()

# 准备输入数据
input_data = {'img': torch.ones((1, 3, 224, 224), dtype=torch.int8)}

# 执行推理并返回结果
output_data = sess(input_data)

# 应用推理结果做后处理或精度评测工作

# 若设置了with_profile=True,则可以获取推理帧各阶段耗时统计,用于评估单帧延时
print(sess.get_profile())

# 关闭 server
sess.close_server()

关于 hbm_infer 工具的多进程评测、模型串联传输优化等更详细介绍请参考 模型推理工具 - hbm_infer工具 章节。