模型性能分析

本节介绍了如何使用地平线提供的 hb_compile 工具评估模型性能,同时我们也提供了性能分析API接口,您也可以调用此接口进行模型性能分析。

performance_evaluation

使用hb_compile 工具

地平线提供的 hb_compile 工具支持对模型进行转换,工具的使用方法及相关的具体配置、参数请参考 模型量化编译 章节。

在模型转换完成后,会在yaml文件配置的 working_dir 路径下生成编译器预估的模型BPU部分的性能评估文件:model.html(可读性更好)和model.json。

调用 API 接口

您也可以调用API接口进行模型分析(API接口说明可参考HBDK Tool API Reference),参考命令如下:

from hbdk4.compiler import hbm_perf hbm_perf("model.hbm")
注意

请注意,此处 model.hbm仅做示例,实际使用时,请替换为您所使用的模型正确路径。

成功执行后,会在终端内打印模型FPS等基本信息,同时,在当前调用API接口的目录下,会生成该模型的静态性能评估文件:

|-- model.html # 静态性能评估文件(可读性更好) |-- model.json # 静态性能评估文件

您可选择 model.htmlmodel.json 对BPU部分的静态性能数据进行查看。

如您需要指定静态性能评估文件的路径,可以参考如下命令:

from hbdk4.compiler import hbm_perf hbm_perf("model.hbm", output_dir="target_dir")

如果您在调用hbm_perf时,对开发板参数进行了配置,会远程连接开发板进行性能评估, 同样会在当前调用API接口的目录下,生成该模型的性能评估文件。

性能文件的html中,可以看到Timeline选项卡,选项卡中的全部指标如下(实际显示指标与配置相关):

  • TAE:Tensor Acceleration Engine,是BPU中负责Tensor计算加速的引擎模块。主要负责各种conv计算,也能支持部分Matrix计算。

  • VAE:Vector Acceleration Engine,是BPU中负责Vector计算加速的引擎模块。主要负责神经网络中各种element-wise的运算操作,例如A+B,A*B,LUT计算。

  • AAE:Auxiliary Acceleration Engine,是BPU中负责辅助计算加速的引擎模块。主要负责张量、向量、标量之外的辅助加速,例如Pooling、Resize、Warp等函数计算。

  • VPU:Vector Processing Unit,是BPU内部负责向量计算的单元,比VAE灵活,算力较VAE低。

  • SPU:Scalar Processing Unit,是BPU内部负责标量计算的单元。

  • TRANS:是BPU中用于处理数据layout变换的计算单元。

  • STORE:表示将数据从内部缓存/寄存器写到内存中(或计算平台外)。

  • LOAD:表示从内存(可能是计算平台外)加载数据到计算平台缓存中。