【征程 6 工具链性能分析与优化-1】编译器预估 perf 解读与性能分析

01 引言

本篇文章中,我们将首先介绍 layerdetails 中的参数信息,然后将结合实例分析如何利用 layerdetails 来分析模型的性能瓶颈,进而对模型的性能进行优化。

02 layerdetails 中信息解读

征程 6 工具链目前提供了两种方式生成性能评估报告:

  • 使用hb_compile工具编译模型时会自动生成性能评估报告;
  • 编译出 hbm 模型后,使用编译器提供的 python API hbm_perf生成性能评估报告,这里需要注意,调用 compile 接口编译模型时需要开启 debug 后才能生成 layerdetails。

性能预估报告包括 html 和 json 两个版本,通常看 html 即可。

html 中包括 Summary、Temporal Statistics 和 Layer Details 这 3 个部分,下面将逐一介绍。

2.1 Summary

图片

  1. FPS**( 1 core)**
  2. 在 1 个 BPU 内核上运行时的估计 FPS。
  3. Latency
  4. 编译后的模型推理一次的时间,编译的模型可能包含 batch。
  5. BPU conv original OPs per frame
  6. 原始模型卷积层的计算量。卷积变体(deconv、dilated conv、deformable conv 等)也被计算在内。

2.2 Temporal Statistics

图片

  1. Loaded bytes per frame
  2. 每帧推理 BPU 需要读取 DDR 的字节数。(编译时可能有batch,每帧推理不一定等于每次推理)
  3. Stored bytes per frame
  4. 每帧推理 BPU 需要写入 DDR 的字节数。(编译时可能有batch,每帧推理不一定等于每次推理)
  5. DDR (loaded + stored) bytes per frame:
  6. 每帧推理 BPU 需要读写 DDR 的字节数
  7. DDR bytes per second (for xxx FPS):
  8. 每秒BPU需要读写 DDR 的字节数。

2.3 Layer Details

图片

  1. layer
  2. 原始模型的 layer name。torch 模型没有 layer name,torch 转 hbir 时会自动命名
  3. original ops
  4. 原始 layer 的计算量(包含卷积及其变种)
  5. computing cost( no DDR**)**
  6. 编译后 layer 的时间开销,不包括 DDR 相关的时间开销,但会包含 reorder(数据重排)的开销
  7. load/store cost
  8. 编译后 layer 的 DDR 访问时间开销。对于非模型输入输出的 feature,DDR 访问可能被优化掉。
  9. active period of time
  10. 编译后 layer 活跃时间段。不代表该 layer 的执行时间,通常都是多个 layer 交替/并行执行。

03 性能分析实例

3.1 通用流程

  1. 首先观察 Temporal Statistics 统计图中的曲线:
  2. 观察 computing 曲线是否有波动,带宽瓶颈会引起它的波动
  3. 观察 load&store 柱状图,配合 computing 曲线,判断是否有带宽瓶颈
  4. 然后根据时态统计图中的时间轴,观察在某区间的 layer detail

3.2 实例分析

分析过程

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 模型中对应的子结构为:

图片

04 初步结论

综合以上分析结果可知,此模型中引起性能问题的是 Softmax 和 MatMul 算子组成的子结构,在下一篇文章中,我们将介绍模型性能相关的优化策略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/3616.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

有线电视 1.27.5 | 完全免费的电视直播应用,频道丰富,画质清晰

有线电视是一款针对智能电视和电视盒子开发的在线观看电视应用软件。该软件最大的特色是完全免费,并且支持几乎国内所有的电视台,无论是央视频道还是省卫视频道应有尽有。为了更好地服务用户,有线电视还对电视频道进行了分类,包含…

ML2001-1 机器学习/深度学习 Introduction of Machine / Deep Learning

图片说明来自李宏毅老师视频的学习笔记,如有侵权,请通知下架 影片参考 【李宏毅】3.第一节 - (上) - 机器学习基本概念简介_哔哩哔哩_bilibili 1. 机器学习的概念与任务类型 概念:机器学习近似于寻找函数,用于处理不同类型的任…

Java项目实战II基于Java+Spring Boot+MySQL的植物健康系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Java、…

推荐一款面向增材制造的高效设计平台:nTopology

nTopology是一款面向增材制造的高效设计平台,平台预置了大量增材制造常用的设计工具包,工程师通过调用若干个预置工具包、或自主开发定制的工具包,建立一个工作流,实现复杂几何结构的参数化设计。nTopology集合了的强大几何建模和…

CreateEvent使用笔记

一、前言 开发中上位机获取或设置下位机参数的接口,有阻塞、非阻塞两种: 1、API非阻塞,异步回调返回结果 2、API阻塞,超时或直接返回结果 对于应用层调用者来说,阻塞API更方便,而要实现阻塞API在windows可使…

从“点”到“面”,热成像防爆手机如何为安全织就“透视网”?

市场上测温产品让人眼花缭乱,通过调研分析,小编发现测温枪占很高比重。但是,测温枪局限于显示单一数值信息,无法直观地展示物体的整体温度分布情况,而且几乎没有功能拓展能力。以AORO A23为代表的热成像防爆手机改变了…

代码随想录一刷——454.四数相加II

我们现在前2个数组中&#xff0c;统计元素之和以及出现的次数&#xff08;用map&#xff09;&#xff0c;随后再另外2个数组中遍历看上面元素之和的相反数是否存在于map中即可。 C&#xff1a; class Solution { public: int fourSumCount(vector<int>& nums1, ve…

本篇万字,博客最细,oled多级菜单代码解析,与实现教程,指针实现(含源码)!!!

目录 教程前言 多级菜单基本知识 驱动文件创建 ​编辑 ​编辑 ​编辑 定义菜单数据类型代码解析 按键代码解析 菜单数据赋值代码解析 菜单按键切换显示代码解析 项目工程移植地址 教程前言 前言&#xff1a;编写不易&#xf…

C++中STL的list类常用接口及其源码解析

1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一个元素和后一个元素。 3. list与…

csp2024T3

题目大意&#xff1a;对于每个数而言&#xff0c;可以将其染成红或蓝&#xff0c;对于每一个数&#xff0c;定义其贡献为&#xff0c;当且仅当这个数最近的同色数与其相等&#xff0c;否则其贡献为0&#xff0c;求最大贡献和。 思路&#xff1a;考虑dp 1.考场20多分钟想的奇怪…

Leetcode 198. 打家劫舍 动态规划

原题链接&#xff1a;Leetcode 198. 打家劫舍 class Solution { public:int rob(vector<int>& nums) {int n nums.size();if (n 1)return nums[0];int dp[n];dp[0] nums[0];dp[1] max(nums[1], nums[0]);for (int i 2; i < n; i) {dp[i] max(dp[i - 2] num…

Spring源码学习(五):Spring AOP

免责声明 本人还处于学习阶段&#xff0c;如果内容有错误麻烦指出&#xff0c;敬请见谅&#xff01;&#xff01;&#xff01;Demo <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.8<…

外包干了6年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了6年的功能测试…

24/11/5 算法笔记adagrad 自适应学习率

AdaGrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种用于随机优化的算法&#xff0c;它通过适应每个参数的学习率来优化目标函数。 自适应学习率&#xff1a; AdaGrad算法的核心特点是为每个参数自适应地调整学习率。这意味着每个参数都有自己的学习率&#xff…

逆向之断点和找解密方法

企名片科创平台 先找到解密内容 ctrlshiftF搜索关键字,一般用一个函数包裹的就是解密方法 有2个方法调用,给其中一个打上断点刷新页面,为什么要打断点?为什么不打断点我就没有办法在控制台直接输出变量的值或者调用函数呢&#xff1f;个人理解这时候i只是一个局部变量&#x…

【云备份】httplib库

目录 1.httplib库简介 2.httplib请求类 3.httplib响应类 4.Server类 5.Client类 6.httplib库搭建简单服务器 6.1.ubuntu20.04使用防火墙开放端口 6.2.效果 7.httplib库搭建简单服务器 注意&#xff1a;如果对HTTP不熟悉就去&#xff1a;【网络】HTTP_yum install telne…

【CENet】多模态情感分析的跨模态增强网络

在MSA领域&#xff0c;文本的准确度远远高于音频和视觉&#xff0c;如果文本能达到90%&#xff0c;那么音频和视觉的准确度只有60%~80%&#xff0c;但是过往研究很少针对情感分析的背景下去提高音频和视频的准确度。 abstract&#xff1a; 多模态情感分析&#xff08;MSA&…

多线程--模拟实现定时器--Java

一、定时器的概念 定时器的本质就是一个闹钟&#xff0c;时间到了开始执行某些逻辑。Java标准库中的定时器是Timer。 我们查阅Java文档可以详细看到定时器的使用方法&#xff1a; Timer最核心的方法就是schedule方法。值得注意的是我们通常描述任务是使用Runnable来描述&…

‌MySQL中‌between and的基本用法‌

文章目录 一、between and语法二、使用示例2.1、between and数值查询2.2、between and时间范围查询2.3、not between and示例 BETWEEN AND操作符可以用于数值、日期等类型的字段&#xff0c;包括边界值。 一、between and语法 MySQL中的BETWEEN AND操作符用于在两个值之间选择…

视频一键转换3D:Autodesk 发布 Video to 3D Scene

Video 3D Scene 最近 Autodesk 旗下公司 Wonder Dynamics 推出了 Wonder Animation 的测试版&#xff0c;它使用突破性的视频到 3D 场景技术&#xff0c;通过将任何视频序列转换为 3D 动画场景来加速动画电影的制作。 Video 3D Scene Video 3D Scene 生成效果 作为 Wonder Stud…