首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

深度解读昇腾CANN小shape算子计算优化技术,进一步减少调度开销

编程知识
2024年08月07日 09:24
摘要:Host调度模式下,GE将模型中算子的执行单元划分为Host CPU执行与Device(昇腾AI处理器)执行两大类。

本文分享自华为云社区《深度解读昇腾CANN小shape算子计算优化技术,进一步减少调度开销》,作者:昇腾CANN。

GE(Graph Engine)将模型的调度分为Host调度与下沉调度两种模式。经过上期的介绍我们知道,在模型为静态shape时,由于其输入tensor shape固定不变,在编译时就能确定所有算子的输入输出shape,并能提前完成模型级内存编排、tiling计算等Host调度工作,因此采用模型下沉调度方式可以将整个模型下沉到Device侧执行,从而提升模型调度性能。

与之对应的,在模型为动态shape的情况下,由于输入tensor shape不确定,需要在上一个算子完成shape推导后,才能确定下一个算子的输入shape等信息,因此无法将整个模型下沉执行,只能采用Host调度模式。

1 Host调度简介及优化背景

所谓Host调度,是指模型的调度主体位于Host CPU,由CPU完成逐算子调度。一个算子的调度任务为kernel执行准备必要参数,通常包含shape推导、tiling、内存分配、launch等。

Host调度模式下,GE将模型中算子的执行单元划分为Host CPU执行与Device(昇腾AI处理器)执行两大类。对于卷积、MatMul等对算力要求高的算子,会被划分到Device执行;而由于shape信息在Host CPU维护,Shape、Reshape等算子更适合被划分到Host CPU执行;除此之外,还有一些算子,在shape较小时,计算量也很小,调度开销往往大于算子的实际计算开销,就需要考虑如何尽可能减少调度开销带来的性能影响。

图1 网络拓扑片段

图1是一段网络拓扑片段示例,按照一般的调度机制,Gather、Concat算子会下沉到Device侧计算,Shape、Unsqueeze、Reshape算子在Host侧计算。其执行时序如图2所示,模型E2E执行耗时除了包含算子计算的时间外,还包含Host与Device之间的数据拷贝、算子下沉调度、Stream同步等开销,整体执行E2E耗时在毫秒级别。

图2 优化前执行时序

而对于小shape(如shape size小于8)的Gather、Concat,算子本身在Host侧CPU的计算开销上仅微秒级别,与Device侧计算的性能相差无几。此时下发带来的额外开销就显得比较明显。针对上述这种shape较小且输入Tensor内存在Host的场景,GE识别将这部分算子保留在Host侧执行,可有效减少调度开销带来的性能影响。

2 小shape算子计算优化实现

在图编译流程执行到引擎选择之后,GE选择在Host侧执行的算子并将其作为锚点,然后向后递归查找计算数据个数小于8的算子,并将这些算子的执行引擎修改为Host CPU。针对图1所示的网络片段,假设shape算子的输出的shape size小于8,则Gather、Concat算子的执行引擎都会被刷新成Host CPU。优化后执行时序如图3所示,此时模型执行只有算子计算带来的开销,经测试约为10微秒(3ms –> 10us),显著的提高了E2E执行性能。

图3 优化前后执行前后时序对比

3 优化效果

以LLaMA2大语言推理模型为例,符合上述执行引擎刷新的算子有Pack、Gather、Concat等约650+个,刷新前模型E2E耗时约1.062S,刷新后执行时间优化到了1.009S,吞吐提升5%。

4 更多介绍

GE小shape算子计算优化技术的相关介绍就到这里,欢迎大家关注后续技术分享。如需获取更多学习资源请登录昇腾社区

 

点击关注,第一时间了解华为云新鲜技术~

From:https://www.cnblogs.com/huaweiyun/p/18346518
本文地址: http://shuzixingkong.net/article/874
0评论
提交 加载更多评论
其他文章 .NET 免费开源工业物联网网关
IoTClient 是一个针对物联网 (IoT) 领域的开源客户端库,它主要用于实现与各种工业设备之间的通信。这个库是用 C# 编写的,并且基于 .NET Standard 2.0,这意味着可以用于多个版本的.NET,包括 .NET Framework、.NET Core、.NET 5 及以上版本,
.NET 免费开源工业物联网网关 .NET 免费开源工业物联网网关 .NET 免费开源工业物联网网关
Canvas简历编辑器-图形绘制与状态管理(轻量级DOM)
Canvas简历编辑器-图形绘制与状态管理(轻量级DOM) 在前边我们聊了数据结构的设计和剪贴板的数据操作,那么这些操作都还是比较倾向于数据相关的操作,那么我们现在就来聊聊基本的图形绘制以及图形状态管理。 在线编辑: https://windrunnermax.github.io/CanvasEdi
Canvas简历编辑器-图形绘制与状态管理(轻量级DOM) Canvas简历编辑器-图形绘制与状态管理(轻量级DOM)
强化学习性能测试方法:取最后10个epoch的testing epoch的均值 —— 强化学习中的一种性能测试方法
参考: https://www.cnblogs.com/devilmaycry812839668/p/17813337.html The Actor-Mimic and expert DQN training curves for 100 training epochs for each of th
神经网络之卷积篇:详解边缘检测示例(Edge detection example)
详解边缘检测示例 卷积运算是卷积神经网络最基本的组成部分,使用边缘检测作为入门样例。在这个博客中,会看到卷积是如何进行运算的。 在之前的博客中,说过神经网络的前几层是如何检测边缘的,然后,后面的层有可能检测到物体的部分区域,更靠后的一些层可能检测到完整的物体,这个例子中就是人脸。在这个博客中,会看到
神经网络之卷积篇:详解边缘检测示例(Edge detection example) 神经网络之卷积篇:详解边缘检测示例(Edge detection example) 神经网络之卷积篇:详解边缘检测示例(Edge detection example)
电子表格转身购物车:三步轻松实现
最新技术资源(建议收藏) https://www.grapecity.com.cn/resources/ 在我们的项目当中,经常需要添加一些选择界面,让用户直观地进行交互,比如耗材、办公用品、设计稿或者其它可以选择的内容。 在线商城的商品目录和购物车无疑是一种大家都很熟悉的交互方式,但是在实际开发中
电子表格转身购物车:三步轻松实现 电子表格转身购物车:三步轻松实现 电子表格转身购物车:三步轻松实现
【VMware ESXi】把硬盘当内存用?VMware 内存分层(Memory Tiering),你值得拥有!
VMware vSphere 8.0 U3 发布了一个非常有意义的功能叫内存分层(Memory Tiering),以利用基于 PCIe 的 NVMe 设备充当第二层(辅助)内存,从而使 ESXi 主机的可用物理内存(RAM)增加。从本质上讲,内存分层就是利用较便宜的 NVMe 设备充当物理内存,以此
【VMware ESXi】把硬盘当内存用?VMware 内存分层(Memory Tiering),你值得拥有! 【VMware ESXi】把硬盘当内存用?VMware 内存分层(Memory Tiering),你值得拥有! 【VMware ESXi】把硬盘当内存用?VMware 内存分层(Memory Tiering),你值得拥有!
零基础学习人工智能—Python—Pytorch学习(一)
前言 其实学习人工智能不难,就跟学习软件开发一样,只是会的人相对少,而一些会的人写文章,做视频又不好好讲。 比如,上来就跟你说要学习张量,或者告诉你张量是向量的多维度等等模式的讲解;目的都是让别人知道他会这个技术,但又不想让你学。 对于学习,多年的学习经验,和无数次的回顾学习过程,都证明了一件事,如
零基础学习人工智能—Python—Pytorch学习(一)
QWen2-72B-Instruct模型安装部署过程
最近在给我们的客户私有化部署我们的TorchV系统,客户给的资源足够充裕,借此机会记录下部署千问72B模型的过程,分享给大家! 一、基础信息 操作系统:Ubuntu 22.04.3 LTS GPU: A800(80GB) * 8 内存:1TB 二、软件信息 Python: 3.10 Pytorch:
QWen2-72B-Instruct模型安装部署过程 QWen2-72B-Instruct模型安装部署过程 QWen2-72B-Instruct模型安装部署过程