深度解读昇腾CANN多流并行技术,提高硬件资源利用率
本文分享自华为云社区《深度解读昇腾CANN多流并行技术,提高硬件资源利用率》,作者:昇腾CANN。
随着人工智能应用日益成熟,文本、图片、音频、视频等非结构化数据的处理需求呈指数级增长,数据处理过程从通用计算逐步向异构计算过渡。面对多样化的计算需求,昇腾AI处理器内置丰富的硬件计算资源用于处理不同的计算任务。其中,AI Core、Vector Core与AI CPU分别负责AI计算场景下的矩阵、向量与标量计算,DVPP支持图像、视频等数据的加速处理,而HCCL作为华为集合通信库,则提供单机多卡及多机多卡间的数据并行、模型并行集合通信方案。

在给定硬件算力的情况下,如何高效利用这些计算资源、提高计算效率显得尤其重要。多样化的计算任务以task的形式下发到各硬件资源执行,GE(Graph Engine)图引擎采用多流并行算法,在满足计算图任务内部依赖关系的前提下,支持高效并发执行计算任务,从而大大提高硬件资源利用率和AI计算效率。
1 多流并行技术实现
计算图编译时,GE会为计算图中的每个节点分配一个硬件资源(即对应一种执行引擎),在任务执行时按编译时分配的stream调度顺序下发到对应的引擎执行。
各引擎使用不同的硬件计算资源,若同一时间只能执行某种引擎的一个task,则其余引擎会处于闲置状态,导致硬件资源严重浪费,影响端到端性能。若采用多流并行技术,在满足依赖关系的前提下,将不同task下发到对应的引擎上,驱动各个引擎并行执行,则可大大提升硬件资源的利用率。
GE采用了多流并行算法,将计算图的拓扑结构、硬件资源规格和执行引擎作为计算要素,为每个节点分配Stream。Stream与硬件资源绑定,任务执行时会按编译时分配的stream调度顺序下发到对应的引擎执行。同一Stream上的任务串行执行,不同Stream间的任务并发执行,从而提升硬件计算资源利用率。
GE多流并行技术的实现流程如下:
1. 基于网络节点功能和硬件资源特性,给每个节点分配执行引擎。
2. 基于网络拓扑结构和每个节点的执行引擎,为每个节点分配Stream。分配Stream时会同时考虑硬件规格、资源利用率等,提升并发度。
3. 不同Stream间可以进行同步来保证执行时序。
GE多流并行主要包含以下场景:
1. 计算与通信引擎并行:计算算子(如Convolution、Add等)会生成计算task,通信算子(HcomAllReduce等)会生成卡间通信task,两类task无拓扑依赖时可并发执行。

2. 不同计算引擎并行:矩阵运算(AI Core)、向量运算(VectorCore)和图像预处理(DVPP)等不同引擎的task,可下发到不同的引擎上并发执行。

3. 相同计算引擎内并行:当计算图中某个节点无法占满一个计算引擎的全部计算资源,且拓扑结构可并发时,该引擎的不同拓扑集合的task可并发执行。

2 多流并行执行效果
并行执行效果跟网络拓扑结构、节点引擎类型、AI处理器能力等因素存在相关性,理论最优并行场景下,整网执行时长为耗时最长的Stream的执行时长,其余Stream的执行时长都掩盖在该Stream的时长内。如下图所示,通信耗时可以掩盖在计算耗时内,向量计算耗时可以掩盖在矩阵运算耗时内。

基于Atlas 800I A2推理产品,在经过计算通信流水并行优化后,LLaMA-65B参数模型全量图执行性能提升30%左右,盘古系列71B参数模型全量图执行性能提升15%左右。
然而,多流并行是一种资源换执行效率的技术,会占用更多的Device流资源,一般来说,静态shape场景下开启多流并行后,内存占用增加7%左右,用户可结合实际情况选择使用。
3 如何使能多流并行技术
GE的多流并行技术是基于深度学习计算图模式下的计算优化手段,在静态shape的离线推理场景和Pytorch框架的计算图模式下默认使能多流并行技术,开发者可通过相应的参数enable_single_stream灵活控制。
import torchair as tng
config = tng.CompilerConfig()
# 关闭图单流执行功能
config.ge_config.enable_single_stream = False
# 开启计算通信并行功能
config.experimental_config.cc_parallel_enable = True
npu_backend = tng.get_npu_backend(compiler_config=config)
...
model = Model()
model = torch.compile(model, backend=npu_backend, dynamic=False)
4 获取学习资源
GE多流并行技术的介绍就到这里,欢迎大家关注后续技术分享。如需获取更多学习资源请登录昇腾社区。
深度解读昇腾CANN多流并行技术,提高硬件资源利用率的更多相关文章
- 开发实践丨昇腾CANN的推理应用开发体验
摘要:这是关于一次 Ascend 在线实验的记录,主要内容是通过网络模型加载.推理.结果输出的部署全流程展示,从而快速熟悉并掌握 ACL(Ascend Computing Language)基本开发流 ...
- 我就是认真:Linux SWAP 深度解读(必须收藏)
我就是认真:Linux SWAP 深度解读(必须收藏) http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097& ...
- 深度神经网络DNN的多GPU数据并行框架 及其在语音识别的应用
深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点,产生了广泛的应用.DNN具有深层结构.数千万参数需要学习,导致训练非常耗时.GPU有强大的计算能 ...
- SQL Server 2019 深度解读:微软数据平台的野望
本文为笔者在InfoQ首发的原创文章,主要利用周末时间陆续写成,也算近期用心之作.现转载回自己的公众号,请大家多多指教. 11 月 4 日,微软正式发布了其新一代数据库产品 SQL Server 20 ...
- 一键抠除路人甲,昇腾CANN带你识破神秘的“AI消除术”
摘要:都说人工智能改变了生活,你感觉到了么?AI的魔力就在你抠去路人甲的一瞬间来到了你身边.今天就跟大家聊聊--神秘的"AI消除术". 引语 旅途归来,重温美好却被秀丽河山前的路人 ...
- 昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!
摘要:近日,CVPR 2022放榜,基于CANN的AI论文<Interactive Image Synthesis with Panoptic Layout Generation>强势上榜 ...
- 【深度学习系列3】 Mariana CNN并行框架与图像识别
[深度学习系列3] Mariana CNN并行框架与图像识别 本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框 ...
- AI 新技术革命将如何重塑就业和全球化格局?深度解读 UN 报告(上篇)
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 张钦坤 腾讯研究院秘书长蔡雄山 腾讯研究院法律研究中心副主任祝林华 腾讯研究院法律研究中心助理研究员曹建峰 腾讯研究院法律研究中心高级研究员 ...
- 如何用区块链技术解决信任问题?Fabric 架构深度解读
阿里妹导读:区块链技术,随着比特币的兴起而为大家所知.但是具体到技术本身,大家相对熟悉的几个词可能是“数据不可篡改”.“公开链”.“分布式数据”.“共识机制”等. 这篇文章将抛砖引玉,通过深度解读Hy ...
- Effective Java 第三版——48. 谨慎使用流并行
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
随机推荐
- 【python爬虫案例】用python爬豆瓣音乐TOP250排行榜!
目录 一.爬虫对象-豆瓣音乐TOP250 二.python爬虫代码讲解 三.同步视频 四.获取完整源码 一.爬虫对象-豆瓣音乐TOP250 今天我们分享一期python爬虫案例讲解.爬取对象是,豆瓣音 ...
- USB3.0与Type-C接口的关系
USB全称为Universal Serial Bus,翻译过来就是通用串行总线,是连接计算机与外部设备的一种串口总线标准.USB的发展经历了一下阶段: USB1.0:1.5Mbps(192KB/s)低 ...
- ES6常用知识点笔记
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准. 因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015(简称ES2015).虽然浏览器在不 ...
- 教你如何搞定springboot集成kafka
本文分享自华为云社区<手拉手入门springboot+kafka>,作者:QGS. 安装kafka 启动Kafka本地环境需Java 8+以上 Kafka是一种高吞吐量的分布式发布订阅消息 ...
- keycloak~正确让api接口支持跨域
相关参考 https://leejjon.medium.com/how-to-allow-cross-origin-requests-in-a-jax-rs-microservice-d2a6aa2d ...
- Redis 的简单介绍
Redis 特点 单线程 执行过程按顺序执行,不会同时执行多个操作,保证操作的原子性,省去了很多上下文切换线程的时间,不必考虑资源竞争和可能出现死锁. 为什么使用单线程 ? 官方FAQ表示:因为 Re ...
- django---展示多级评论
实现原理: 在页面加载完成后,jQuery调用initComments()函数,initComments()函数会向后端发起Ajax请求,后端收到请求后,会把所有评论的数据以JSON格式返回到前端,然 ...
- ubuntu18.04最小化安装
ubuntu 18.04虚拟机安装 镜像下载地址: https://releases.ubuntu.com/18.04/ubuntu-18.04.6-live-server-amd64.iso 创建虚 ...
- 鸿蒙HarmonyOS实战-ArkTS语言基础类库(并发)
一.并发 并发是指在一个时间段内,多个事件.任务或操作同时进行或者交替进行的方式.在计算机科学中,特指多个任务或程序同时执行的能力.并发可以提升系统的吞吐量.响应速度和资源利用率,并能更好地处理多用户 ...
- c# 语音识别 | 智能对话
在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音. 以上,当我说"name",显示"Darren",我说"age&q ...