14. 附录05:TPU Profile工具使用指南

本章节主要是介绍如何利用Profile数据及TPU Profile工具,可视化模型的完整运行流程,以便于进行模型性能分析。

14.1. 编译bmodel

TPU Profile是将Profile数据转换为可视化网页的工具。首先先生成bmodel,下面以tpu-mlir工程中的yolov5s模型来演示。

由于Profile数据会把编译中的一些layer信息保存到bmodel中,导致bmodel体积变大,所以默认是关闭的。打开方式是在调用 model_deploy 时加上 --debug 选项。如果在编译时未开启该选项,运行时开启Profile得到的数据在可视化时,会有部分数据缺失。在Docker内生成bmodel的命令如下:

# 生成 top mlir
$ model_transform \
    --model_name yolov5s \
    --model_def ../yolov5s.onnx \
    --input_shapes [[1,3,640,640]] \
    --mean 0.0,0.0,0.0 \
    --scale 0.0039216,0.0039216,0.0039216 \
    --keep_aspect_ratio \
    --pixel_format rgb \
    --output_names 350,498,646 \
    --test_input ../image/dog.jpg \
    --test_result yolov5s_top_outputs.npz \
    --mlir yolov5s.mlir
# 将top mlir转换成fp16精度的bmodel
$ model_deploy \
    --mlir yolov5s.mlir \
    --quantize F16 \
    --processor bm1684x \
    --test_input yolov5s_in_f32.npz \
    --test_reference yolov5s_top_outputs.npz \
    --model yolov5s_1684x_f16.bmodel \
    --debug

通过以上命令,将 yolov5s.onnx 编译成了 yolov5s_bm1684x_f16.bmodel ,其中, --debug 参数将记录profile数据。

14.2. 生成Profile原始数据

将生成的 yolov5s_bm1684x_f16.bmodel 拷贝到已安装libsophon的运行环境上。同编译过程,运行时的Profile功能默认是关闭的,防止在做profile保存与传输时产生额外时间消耗。需要开启profile功能时,在运行编译好的bmodel前设置环境变量 BMRUNTIME_ENABLE_PROFILE=1 即可。然后用libsophon中提供的模型测试工具 bmrt_test 运行bmodel,生成profile数据。在Docker外执行如下命令:

export BMRUNTIME_ENABLE_PROFILE=1
bmrt_test --bmodel yolov5s_1684x_f16.bmodel

下面是开启Profile后运行输出的日志:

_images/profile_log_en.png

图 14.1 开启 Profile 后运行输出的日志

运行完成后会在当前目录生成 bmprofile_data-1 文件夹, 为全部的Profile数据。

14.3. 可视化Profile数据

bmprofile_data-1 目录拷贝回Docker内的tpu-mlir工程环境。tpu-mlir提供了 tpu_profile 脚本,来把生成的二进制profile数据转换成网页文件并进行可视化。在Docker内执行如下命令:

# 将bmprofile_data_0目录的profile原始数据转换成网页放置到bmprofile_out目录
# 如果有图形界面,会直接打开浏览器,直接看到结果
tpu_profile bmprofile_data-1 bmprofile_out
ls bmprofile_out
# echarts.min.js  profile_data.js  result.html

用浏览器打开 bmprofile_out/result.html 可以看到profile的图表。此外,该工具还有其他用法,可通过如下命令进行查看:

tpu_profile --help

更多的Profile工具使用分析说明请参考 https://tpumlir.org/zh-cn/2023/09/18/analyse-tpu-performance-with-tpu-profile.html