本节介绍了如何使用地平线提供的 hb_compile 工具评估模型性能,同时我们也提供了性能分析API接口,您也可以调用此接口进行模型性能分析。
hb_compile 工具地平线提供的 hb_compile 工具支持对模型进行转换,工具的使用方法及相关的具体配置、参数请参考 模型量化编译 章节。
在模型转换完成后,会在yaml文件配置的 working_dir 路径下生成编译器预估的模型BPU部分的性能评估文件:model.html(可读性更好)和model.json。
您也可以调用API接口进行模型分析(API接口说明可参考HBDK Tool API Reference),参考命令如下:
请注意,此处 model.hbm仅做示例,实际使用时,请替换为您所使用的模型正确路径。
成功执行后,会在终端内打印模型FPS等基本信息,同时,在当前调用API接口的目录下,会生成该模型的静态性能评估文件:
您可选择 model.html 或 model.json 对BPU部分的静态性能数据进行查看。
如您需要指定静态性能评估文件的路径,可以参考如下命令:
如果您在调用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:表示从内存(可能是计算平台外)加载数据到计算平台缓存中。