"); //-->
本篇文章中,我们将首先介绍 layerdetails 中的参数信息,然后将结合实例分析如何利用 layerdetails 来分析模型的性能瓶颈,进而对模型的性能进行优化。
征程 6 工具链目前提供了两种方式生成性能评估报告:
使用hb_compile工具编译模型时会自动生成性能评估报告;
编译出 hbm 模型后,使用编译器提供的 python API hbm_perf生成性能评估报告,这里需要注意,调用 compile 接口编译模型时需要开启 debug 后才能生成 layerdetails。
性能预估报告包括 html 和 json 两个版本,通常看 html 即可。
html 中包括 Summary、Temporal Statistics 和 Layer Details 这 3 个部分,下面将逐一介绍。
FPS**( 1 core)**
在 1 个 BPU 内核上运行时的估计 FPS。
Latency
编译后的模型推理一次的时间,编译的模型可能包含 batch。
BPU conv original OPs per frame
原始模型卷积层的计算量。卷积变体(deconv、dilated conv、deformable conv 等)也被计算在内。
Loaded bytes per frame
每帧推理 BPU 需要读取 DDR 的字节数。(编译时可能有batch,每帧推理不一定等于每次推理)
Stored bytes per frame
每帧推理 BPU 需要写入 DDR 的字节数。(编译时可能有batch,每帧推理不一定等于每次推理)
DDR (loaded + stored) bytes per frame:
每帧推理 BPU 需要读写 DDR 的字节数
DDR bytes per second (for xxx FPS):
每秒BPU需要读写 DDR 的字节数。
layer
原始模型的 layer name。torch 模型没有 layer name,torch 转 hbir 时会自动命名
original ops
原始 layer 的计算量(包含卷积及其变种)
computing cost( no DDR**)**
编译后 layer 的时间开销,不包括 DDR 相关的时间开销,但会包含 reorder(数据重排)的开销
load/store cost
编译后 layer 的 DDR 访问时间开销。对于非模型输入输出的 feature,DDR 访问可能被优化掉。
active period of time
编译后 layer 活跃时间段。不代表该 layer 的执行时间,通常都是多个 layer 交替/并行执行。
首先观察 Temporal Statistics 统计图中的曲线:
观察 computing 曲线是否有波动,带宽瓶颈会引起它的波动
观察 load&store 柱状图,配合 computing 曲线,判断是否有带宽瓶颈
然后根据时态统计图中的时间轴,观察在某区间的 layer detail。
分析过程
1.观察 computing 曲线是否有波动,带宽瓶颈会引起它的波动:
如上图,此模型的 computing 曲线波动较大,模型可能存在带宽瓶颈。
2.进一步观察 load&store 柱状图,并配合 computing 曲线:
可以看到,图中由多处的 load&store 柱状图高于 computing 曲线,这些地方可能存在了带宽瓶颈。
####
3.根据时态统计图中的时间轴,观察在某区间的 layer detail:
如上图,标记了 6 处 load&store 柱状图高于 computing 的地方,对应的时间为:
然后根据 layerdetails 的 active period of time 查看以上时间点的对应算子:
标记点 1&标记 2
可以看到引起带宽瓶颈的算子的 Softmax_458_mul、MatMul_459,onnx 模型中对应的子结构为:
标记点 3
可以看到引起带宽瓶颈的算子的 Softmax_765_mul、MatMul_766,onnx 模型中对应的子结构为:
标记点 4
可以看到引起带宽瓶颈的算子的 Softmax_968_mul、MatMul_969,onnx 模型中对应的子结构为:
标记点 5
可以看到引起带宽瓶颈的算子的 Softmax_1171、MatMul_1172,onnx 模型中对应的子结构为:
标记点 6
可以看到引起带宽瓶颈的算子的 Softmax_1374、MatMul_1375,onnx 模型中对应的子结构为:
综合以上分析结果可知,此模型中引起性能问题的是 Softmax 和 MatMul 算子组成的子结构,在下一篇文章中,我们将介绍模型性能相关的优化策略。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
计算机科学与技术反思录(2)
PID算法
掘金自动驾驶,不要把大坑当机会
加密算法之MD5算法
恩智浦第三代雷达收发器助力高性能成像雷达规模量产,赋能L2+至L4级自动驾驶
实时训练驾驶人工智能
[转帖]us/os就绪表的维护算法分析
目标跟踪算法在红外热成像跟踪技术上的应用
ADI:传感技术助力未来自动驾驶的发展
2035年自动驾驶出租车市场规模将达1680亿美元
采用Mean-Shift和Camshift算法相结合的火焰视频图像跟踪设计
高阶智驾要落地,线控底盘为什么必须执行得准
加快实现自动驾驶(完整小组讨论)
Ouster推出 Rev8 OS 激光雷达系列 原生彩色激光雷达正式落地
曲面显示屏取代传统汽车挡风玻璃
有关指纹算法
数字PID控制及其改进算法的应用
无线传感器网络低功耗分簇路由算法设计
求FSK信号的解调算法,主要是铁路上的移频信号!
76-81GHz自动驾驶CMOS RADAR
面向算法硬件加速的FPGA实现方法
vxwokrs下静态图像压缩算法(上)
基于LPC2138的血压测量算法开发平台电路图
CRC算法原理及C语言实现
英伟达 “全天候” 芯片实现毫秒级人脸检测
简单实用的单片机CRC 快速算法
携手ADI赢得未来
自动驾驶的现状与未来(节选)
数字PID控制算法之一
自动驾驶正推动汽车行业加速布局人形机器人