深度解读昇腾CANN多流并行技术,提高硬件资源利用率

cann · 浏览次数 : 5

小编点评

本文详细介绍了华为云社区发布的《深度解读昇腾CANN多流并行技术,提高硬件资源利用率》一文。随着人工智能应用的不断发展,非结构化数据处理需求呈现出指数级的增长。为了满足这些多样化计算需求,昇腾AI处理器内置了丰富的硬件计算资源,包括AI Core、Vector Core、AI CPU、DVPP和HCCL等组件。 在给定硬件算力的情况下,如何高效利用这些计算资源、提高计算效率成为了一个重要的问题。为此,昇腾CANN采用了多流并行技术,通过在满足计算图任务内部依赖关系的前提下,将不同任务下发到对应的引擎上,驱动各个引擎并行执行,从而大幅提升硬件资源的利用率。 多流并行技术通过为计算图中的每个节点分配一个硬件资源(即对应一种执行引擎),并在任务执行时按编译时分配的stream调度顺序下发到对应的引擎执行。同一Stream上的任务串行执行,不同Stream间的任务并发执行,从而提升硬件计算资源利用率。 此外,多流并行技术还可以与计算与通信引擎并行、不同计算引擎并行以及相同计算引擎内并行等场景相结合,进一步提高计算效率。例如,在计算与通信引擎并行场景下,计算算子和通信算子可以并发执行;在不同计算引擎并行场景下,不同引擎的task可下发到不同的引擎上并发执行;在相同计算引擎内并行场景下,某个节点无法占满一个计算引擎的全部计算资源时,该引擎的不同拓扑集合的task可并发执行。 实验结果表明,多流并行技术可以在静态shape的离线推理场景和Pytorch框架的计算图模式下默认使能,从而提高模型的执行性能。然而,需要注意的是,多流并行技术会占用更多的Device流资源,一般而言,在静态shape场景下开启多流并行后,内存占用会增加约7%。因此,用户可以根据实际情况选择是否使用多流并行技术。 最后,文章提到了如何使能多流并行技术,包括关闭图单流执行功能和开启计算通信并行功能等参数设置。开发者可以通过相应的参数灵活控制多流并行的开启与关闭。 总之,昇腾CANN的多流并行技术是一种有效的提高硬件资源利用率和AI计算效率的方法。通过合理地配置和使用多流并行技术,可以在满足多样化计算需求的同时,提升整体计算性能。

正文

本文分享自华为云社区《深度解读昇腾CANN多流并行技术,提高硬件资源利用率》,作者:昇腾CANN。

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

1.png

在给定硬件算力的情况下,如何高效利用这些计算资源、提高计算效率显得尤其重要。多样化的计算任务以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.png

 

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

3.png

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

4.png

2 多流并行执行效果

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

 

5.png

 

基于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多流并行技术,提高硬件资源利用率

GE(Graph Engine)图引擎采用多流并行算法,在满足计算图任务内部依赖关系的前提下,支持高效并发执行计算任务,从而大大提高硬件资源利用率和AI计算效率。

深度解读《深度探索C++对象模型》之C++虚函数实现分析(三)

本系列深入分析编译器对于C++虚函数的底层实现,最后分析C++在多态的情况下的性能是否有受影响,多态究竟有多大的性能损失。

深度解读《深度探索C++对象模型》之C++虚函数实现分析(二)

本系列深入分析编译器对于C++虚函数的底层实现,最后分析C++在多态的情况下的性能是否有受影响,多态究竟有多大的性能损失。

深度解读《深度探索C++对象模型》之C++虚函数实现分析(一)

本系列深入分析编译器对于C++虚函数的底层实现,最后分析C++在多态的情况下的性能是否有受影响,多态究竟有多大的性能损失。

深度解读《深度探索C++对象模型》之数据成员的存取效率分析(二)

C++对象在经过类的封装后,存取对象中的数据成员的效率是否相比C语言的结构体访问效率要低下?本篇将从C++类的不同定义形式来一一分析C++对象的数据成员的访问在编译器中是如何实现的,以及它们的存取效率如何?

深度解读《深度探索C++对象模型》之默认构造函数

C++的默认构造函数的作用是什么?什么时候会需要一个默认构造函数,以及默认构造函数从哪里来?这篇文章将从编译器的角度来分析这个问题。

[转帖]深度解读 V11a : Veeam Backup & Replication 又一重要版本

https://zhuanlan.zhihu.com/p/423553709 前言 近日Veeam 发布了旗舰产品 Veeam Backup & Replication 的新版本 — v11a ( Build 11.0.1.1261 )。这是继 2 月份发布的 v11 后的又一次重大更新。 虽然这次

[转帖]深度解读:传奇的Alpha处理器

https://jishuin.proginn.com/p/763bfbd2cf85 来源:科技新报(台) 长期关心处理器技术发展者,这20年来,很难不每隔一段时间就会偶尔听到「这技术受Alpha影响」、「这是出自于前Alpha研发团队成员的杰作」,甚至老一辈军武迷,或多或少也会听闻「传说某某某尖端

京东云开发者|提高IT运维效率,深度解读京东云AIOps落地实践

基于深度学习对运维时序指标进行异常检测,快速发现线上业务问题 时间序列的异常检测是实际应用中的一个关键问题,尤其是在 IT 行业。我们没有采用传统的基于阈值的方法来实现异常检测,而是通过深度学习提出了一种无阈值方法:基于 LSTM 网络的基线(一个 LSTM 框架辅助几个优化步骤)和无监督检测(神经

【如何提高IT运维效率】深度解读京东云基于NLP的运维日志异常检测AIOps落地实践

日志在 IT 行业中被广泛使用,日志的异常检测对于识别系统的运行状态至关重要。解决这一问题的传统方法需要复杂的基于规则的有监督方法和大量的人工时间成本。我们提出了一种基于自然语言处理技术运维日志异常检测模型。