【征程 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.hqwc.cn/news/824064.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《vue3第六章》其他,包含:全局API的转移、其他改变

《vue3第六章》其他,包含:全局API的转移、其他改变@目录六、其他1.全局API的转移2.其他改变 六、其他 1.全局API的转移Vue 2.x 有许多全局 API 和配置。例如:注册全局组件、注册全局指令等。//注册全局组件 Vue.component(MyButton, {data: () => ({count: 0}),template:…

《vue3第四章》Composition API 的优势,包含Options API 存在的问题、Composition API 的优势

《vue3第四章》Composition API 的优势,包含Options API 存在的问题、Composition API 的优势@目录四、Composition API 的优势1.Options API 存在的问题2.Composition API 的优势 四、Composition API 的优势 1.Options API 存在的问题 使用传统OptionsAPI中,新增或者修改一…

USB协议详解第27讲(USB包-中断传输包详解)

1.中断传输包结构 中断传输和批量传输类似,中断传输只由一个中断事务组成,中断事务包含令牌包、数据包、握手包,如图下所示。中断事务类型的特点是能够通过错误检测和重试来保证主机和设备之间数据的无错误传递。 需要理解和注意以下点。(1)当主机准备接收数据时,它发出I…

.NET 实现的零部件离散型 MES+WMS 系统

前言 随着制造业的不断发展,企业对于生产效率和管理水平的要求越来越高。 EasyMES 是一款基于 .NET 6 开发的零部件离散型 MES(Manufacturing Execution System)+ WMS(Warehouse Management System)系统,可以帮助企业提升生产效率和管理水平。 本文将详细介绍 EasyMES 的…

Hugging Face 与 TruffleHog 合作,实现风险预警

我们非常高兴地宣布与 Truffle Security 建立合作伙伴关系并在我们的平台集成 TruffleHog 强大的风险信息扫描功能。这些特性是 我们持续致力于提升安全性 的重要举措之一。TruffleHog 是一款开源工具,用于检测和验证代码中的机密信息泄露。它拥有广泛的检测器,覆盖多种流行 …

vue3知识点:Teleport组件

vue3知识点:Teleport组件@目录五、新的组件2.Teleport案例完整代码本人其他相关文章链接 五、新的组件 2.Teleport问题:什么是Teleport?答案:Teleport 是一种能够将我们的组件html结构移动到指定位置的技术。 <teleport to="移动位置"><div v-if="…

Jenkins使用maven打包项目

Jenkins使用maven打包项目 作为一名软件测试工程师,在日常工作中,我们经常需要使用Jenkins进行持续集成和持续部署(CI/CD)。而Maven作为Java项目的构建工具,更是不可或缺。今天,我将向大家介绍如何在Jenkins中使用Maven打包项目。 一、准备工作 登录Jenkins后,点击Manag…

3216. 交换后字典序最小的字符串

给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的 字典序最小的字符串 。 如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性相同,而 6 和 9 奇偶性不同。 示例 1: 输入: s = "4…

实现注解校验Dto字段是否为空

一、背景 我们用json对象作为接收参数的包装器,最后要转化为dto进行业务操作,操作之前要做非空校验,我们可以实现2个注解来实现这个通用的操作。@NotNullField @CheckNull 二、思路 1.实现@NotNullField注解,注解标记在dto字段名上面 @Target(ElementType.FIELD) // 目标为字…

学习高校课程-系统设计与分析-进入设计领域(lec6)

IndexFundamental Design Tasks and Activities 基本设计任务和活动 Understanding the challenges in Iteration 0 了解迭代 0 中的挑战 Structural Modeling and Behavior Modeling 结构建模和行为建模 More on Common Used DiagramsPackage Diagram 封装图 Interaction Diag…

乐维网管平台(三)如何高效管理无线网络

一、无线网络管理概述 1.什么是无线网络管理 无线网络管理是指利用专门的软件平台(如网管平台)对无线网络设备(如无线接入点、无线控制器等)及其相关资源进行集中监控、配置、优化和维护的一系列操作。其主要目的是确保无线网络的高效稳定运行,提升用户体验,保障网络安全…

销售的艺术:价值与策略

一、销售的核心在于展现价值 销售不仅仅是表面的推销技巧,如“多多关照,多多捧场”或“只有今天的500单有这个价格”。其核心在于“展现价值”,即将商品的功能、优点、魅力和价值传递给有需求的人,激发他们的购买欲望。一个简单的公式——价值>价格,是销售过程中的关键所…