Rspress

# #模型性能分析

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

## #使用`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.html` 或 `model.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：表示从内存（可能是计算平台外）加载数据到计算平台缓存中。

页面目录