5.4. J5计算平台评测指南

由于各家计算平台的架构和设计往往不尽相同,因此如果仅以某个单一指标去进行评测,就可能无法全面地衡量出它的实际性能。 下文将从几个常用的评测维度为您进行说明,贴合业务落地的场景和要求综合考虑这些因素,才能更好地衡量出一款计算平台的实际性能。

5.4.1. 单帧延时(Latency)

单帧延时体现了单个模型处理一帧数据所需的时间,是衡量计算平台能满足实时性能要求的一个重要指标。 但由于不同计算平台有多核、大小核、异构计算等不同的架构和设计,所以单帧延时指标有时并不能体现全部性能。 例如双核BPU的J5在评测单帧延时的时候,就会有一个核心处于空闲状态。

J5单核单线程评测模型Latency的参考命令如下:

hrt_model_exec perf --model_file xxx.bin --thread_num 1 --core_id 1

5.4.2. 吞吐量(FPS)

吞吐量体现了计算平台在满载/接近满载的状态下,单位时间内能够处理的图像总帧数。 在真实场景中,计算平台由于要并发处理多个摄像头的数据,所以越大的吞吐量才能满足更大的数据处理要求, 更贴合实际性能表现,也能作为统一的指标综合体现不同计算平台架构的能力。

吞吐量一般可通过 增加并发多线程 ,或者使用 多batch模式 进行评测。

J5双核多线程评测模型FPS的参考命令如下:

hrt_model_exec perf --model_file xxx.bin --thread_num 8 --core_id 0

5.4.3. J5计算平台特性

在评测一款计算平台性能时,还应综合考虑其设计特性。以J5为例,主要包括以下几个方面。

5.4.3.1. 多batch模型

对于J5等中高计算能力平台,小分辨率输入或者小计算量的模型往往不能获取高效的计算效率。 针对这种情况,您可以通过多batch模式来部署模型(例如 batch=8)。

J5支持在模型转换时通过yaml文件中的 input_batch 参数配置编译多batch模型。 部署示例可以在OE包 ddk/samples/ai_toolchain/horizon_runtime_sample/code/02_advanced_samples/nv12_batch 路径下找到。

5.4.3.2. 大分辨率输入

除了多batch模式外,增大模型的输入分辨率也可以获取更加高效的计算效率。 如采用720P、1080P等更贴合实际业务落地场景的分辨率进行评测。

5.4.3.3. GroupConv优化

J5计算平台针对GroupConv,乃至DepthwiseConv都做了针对性的优化,所以更推荐使用MobileNet、EfficienNet等结构做为模型的Backbone。

5.4.4. J5评测方法

为了简化您的评测过程,J5工具链从1.1.52a版本起新增了 fast-perf (快速性能评测)模式,此模式下您可以不依赖于yaml配置文件, 直接编译得到板端最高性能的bin模型,具体使用方法为:

hb_mapper makertbin --fast-perf --march bayes --model model.onnx --model-type onnx

在开启 fast-perf (快速性能评测) 模式下,工具内部会自动完成如下操作:

  • 将BPU可执行算子尽可能运行在BPU上(即可通过yaml文件中node_info参数指定在BPU上运行的算子)。

  • 删除模型首尾可删除的CPU算子,包括:Quantize/Dequantize、Transpose、Cast、Reshape等。

  • 以性能最高的O3优化等级编译模型。