『ai原理解读』mindspore1.2强大并行能力介绍与解读

小宋是呢 小宋是呢     2022-12-09     591

关键词:


融合 5 大维度,强大的自动并行

 

MindSpore 自动并行提供了 5 维的并行方式:数据并行、算子级模型并行、Pipeline 模型并行、优化器模型并行和重计算,并且在图编译阶段,有机融合了 5 个维度的并行。这 5 维并行方式组合起来构成了盘古的并行策略。

 

a. 数据并行

 

数据并行是最基本,应用最广的并行方式,其将训练数据(mini-batch)切分,每台设备取得其中一份;每台设备拥有完整的模型。在训练时,每台设备经过梯度计算后,需要经过设备间的梯度同步,然后才能进行模型参数的更新。

b. 算子级模型并行

 

算子级模型并行是对模型网络中的每个算子涉及到的张量进行切分。MindSpore 对每个算子都独立建模,每个算子可以拥有不同的切分策略。

以矩阵乘算子 MatMul(x, w)为例,x 是训练数据,w 是模型参数,两者都是二维矩阵。并行策略 ((4, 1), (1, 1)) 表示将 x 按行切 4 份,保持 w 不切,如果一共有 4 台设备,那么每台设备拥有一份 x 的切片,和完整的 w。

c.Pipeline 模型并行

 

Pipeline 模型并行将模型的按层分成多个 stage,再把各个 sage 映射到多台设备上。为了提高设备资源的利用率,又将 mini-batch 划分成多个 micro-batch, 这样就能够使得不同设备在同一时刻处理不同 micro-batch 的数据。

一种 Pipeline 并行方式(Gpipe) 要求反向计算要等所有设备的正向计算完成后才开始,而反向计算可能依赖于正向的输出,导致每个卡正向计算过程中累积的 activation 内存与 micro-batch 数量成正比,从而限制了 micro-batch 的数量。MindSpore 的 Pipeline 并行中,将反向提前,每个 micro-batch 计算完成后,就开始计算反向,有效降低 activation 存储时间,从而提升整体并行效率。

d. 优化器模型并行

 

优化器模型并行将优化器涉及到的参数和梯度切分到多台设备上。以 Adam 优化器为例,其内部可能有多份与权重同等大小的「动量」需要参与计算。在数据并行的情况下,每个卡都拥有完整的「动量」,它们在每个卡上都重复计算,造成了内存及计算的浪费。通过引入优化器并行,每个卡只保存权重及「动量」的切片,能降低每个卡的静态内存及提升计算效率。

e. 重计算

 

重计算 (Rematerialization) 针对正向算子的输出累计保存在内存中,导致内存峰值过大的问题,舍弃了部分正向算子的输出,而是在反向阶段用到时再重新计算一遍。这样做有效地降低了训练过程中的内存使用峰值。如下图所示,第一个内存峰值通过重计算消除,第二个内存峰值可以通过前面讲到的优化器并行消除。

有了这 5 维的并行维度后,如何将其组合起来作用于盘古,并且如何将切分后的模型分片分配到每台设备上仍然是难题。MindSpore 自动并行,把这 5 个维度并行有机组合起来,可以实现非常高效的大模型分布式训练能力

下图 (b) 是一典型的树形的硬件拓扑结构,其带宽随着树深度的增加而降低,并且会产生一些流量冲突。为了利用此特征,MindSpore 的目标是最大化计算通信比,将通信量大的并行方式(算子级并行)放置在服务器内部的多卡之间;将通信量较小(Pipeline 并行)的放置在同一机架内的服务器间;将数据并行(优化器并行)的部分放置在不同机架间,因为该通信可以和计算同时执行(overlap),对带宽要求较低。

在盘古 2000 亿模型中,MindSpore 将 64 层(layer)划分为 16 个 stage,每个 stage 包含 4 层。在每层中,利用算子级并行的方式对张量进行切分。

如下图中的 Q,K,V 的参数在实际中(按列)被切了 8 份,输入张量(按行)被切了 16 份,输出张量因此被切了 128 份(8*16)。重计算配置是配置在每层内的,也就是重计算引入的多余的计算量不会超过一层的计算量。总计,MindSpore 使用了 2048 块昇腾处理器来训练盘古。

MindSpore 对外屏蔽了复杂并行实现的细节,使得用户像编写单机模型脚本那样简单。用户在单机脚本的基础上,仅通过少了配置就能实现多维度的混合并行。下图是简化版的盘古脚本,其中红色加粗字体表示的在 MindSpore 中的并行策略。将红色加粗字体去掉,则是单机脚本。

 

图算跨层联合优化,发挥硬件极致性能

 

除了跨节点间的大规模自动外,在单卡节点内,MindSpore 通过图层和算子层的跨层协同优化,来进一步发挥昇腾算力。

在传统的 NN 网络中,不同算子承载的计算量和计算复杂度也各不相同。如 LayerNorm 由 11 个基本算子组成,而 Add 则只有 1 个基本算子。这种基于用户角度的算子定义,通常是无法充分发挥硬件资源计算能力的。因为计算量过大、过复杂的算子,通常很难生成切分较好的高性能算子。从而降低设备利用率;而计算量过小的算子,由于计算无法有效隐藏数据搬移开销,也可能会造成计算的空等时延,从而降低设备利用率。

为了提升硬件利用率,MindSpore 使用了图算融合优化技术,通过图层和算子层联合优化,并将「用户使用角度的易用性算子」进行重组融合,然后转换为「硬件执行角度的高性能算子」,从而充分提升硬件资源利用率,进而提升整网执行性能。具体优化流程如下图所示:

以 LayerNorm 算子为例,通过算子拆分和重组,11 个小算子,组成了 1 个单算子和 2 个融合算子。这些重组后的算子可以生成更加高性能的算子,从而大大降低了整体网络运行时间。

在盘古模型中,图算融合帮助整体训练时间减少了 20% 以上。除此之外,对于其它 NLP、CV 等任务,图算融合在优化性能方面都有不错的表现。

ai绘画|draft意间国产draft推荐及ai绘画背后的原理解读

个人名片: 查看详情

深度解读华为云智能企业云应用平台

深度解读华为云智能企业云应用平台企业应用上云的过程中,智能云基础设施极大提升了资源获取与运维的效率,但应用自身的开发、部署与运维仍然繁琐与低效。同时,人工智能,边缘计算,区块链等新技术正逐渐进入企业核心业务... 查看详情

千人千面个性化推荐,解读数据赋能商家背后的ai技术

12月6~7日,由阿里巴巴集团、阿里巴巴技术发展部、阿里云云栖社区联合主办,以“2016双11技术创新”为主题的阿里巴巴技术论坛,来自商家事业部的技术总监魏虎给大家分享了数据赋能商家背后的AI技术。首先对大数据和人工... 查看详情

mysql并行复制方案演进历史及原理分析(代码片段)

...问题的定位尤其考量DBA的综合能力:既要熟悉复制的内部原理,又能解读主机层面的资源使用情况,甚至还要会分析binlog。导致主从延迟的一个常见原因是,对于binlog中的事务,从库上只有一个SQL线程进行重放,而这些事务在主... 查看详情

2-volcano架构和设计原理解读

2-Volcano架构和设计原理解读随着容器技术的发展,越来越多的批量计算应用正在迁移到Kubernetes平台上,从早期的AI应用到大数据应用,再到近期的基因,转码,科学计算等HPC应用。在迁移过程中,高性能应... 查看详情

详细解读latentdiffusionmodels:原理和代码

DiffusionModels专栏文章汇总:入门与实战前言:CVPR2022中的一项新工作latentdiffusionmodels引起了广泛关注,提出了两段式diffusionmodels能有效节省计算资源,latentattention技术为通用image-to-image任务打下基础,让人耳目一新,具有极强的... 查看详情

打赢ai争夺战,要靠一张算力网

...别高,也因此需要专门的AI芯片和框架。  比如,具备强大浮点运算能力的AI芯片,才能够通过训练、持续迭代优化提供满足行业企业智能化转型的高质量AI模型。复杂模型训练中,需对上千亿个浮点参数进行微调数十万步,需... 查看详情

数字证书与数字签名的原理解读

...于鉴别数字信息的方法。对于数字签名和数字证书的运用原理,相信有不少朋友还不清楚,下文将为大家解疑答惑。数字签名和数字证书原理1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。  查看详情

tensorflow分布式计算机制解读:以数据并行为重

Tensorflow是一个为数值计算(最常见的是训练神经网络)设计的流行开源库。在这个框架中,计算流程通过数据流程图(dataflowgraph)设计,这为更改操作结构与安置提供了很大灵活性。TensorFlow允许多个worker并行计算,这对必须通过处... 查看详情

ehcache详细解读

...非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的 查看详情

ehcache详细解读

...,请自行看官网api文档,但是很少见到特性说明和对实现原理的分析,因此在这这篇文章里面,我会详细介绍和分析ehcache的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获。1.快速轻量 查看详情

typescript源码详细解读总览(代码片段)

...着TypeScript带来的各项便利。 很多人对TypeScript背后的原理很感兴趣,你可能想要:更好地理解TypeScript;学习编译原理相关的知识来丰富自己(编译器和操作系统是很多程序员的梦想);设计一门类似的语言;定制自己的打包... 查看详情

ai开发利器:hilensstudio技术解读

摘要:传统的AI应用开发和部署意味着高成本和高门槛,借助HiLensStudio,AI应用开发和部署仅需要三步。曾几何时,在我们青春年少时,当我们看到某篇AI的技术文章时,心中总不免想要在一个合适的环境上试上一试,于是就去搜索... 查看详情

深度解读alphago算法原理

深度解读AlphaGo 查看详情

ai新技术革命将如何重塑就业和全球化格局?深度解读un报告(下篇)

...推荐:AI新技术革命将如何重塑就业和全球化格局?深度解读UN报告(上篇)AI新技术革命将如何重塑就业和全球化格局?深度解读UN报告(中篇)(四)国际合作国际合作为世界更接近可持续发展发挥了关键作用,在新技术时代... 查看详情

腾讯论文入选ai国际顶会,详细解读nlp研究成果

...究第一梯队。本文将对腾讯AILab主导的两篇论文进行详细解读。ACL2021杰出论文:基于单语翻译记忆的神经网络机器翻译技术论文地址:htt 查看详情

技术解读倚天ecs实例—arm芯片的python-ai算力优化(代码片段)

深度学习技术在图像识别、搜索推荐等领域得到了广泛应用。近年来各大CPU厂商也逐渐把AI算力纳入了重点发展方向,通过《Arm芯片Python-AI算力优化》我们将看到龙蜥社区Arm架构SIG(SpecialInterestGroup)利用最新的Arm指... 查看详情

spring-事务原理解读

Spring框架中,涉及到事务管理的API大约有100个左右,其中最重要的有三个:TransactionDefinition、PlatformTransactionManager、TransactionStatus。1、org.springframework.transaction.TransactionDefinition,它用于定义一个事务。它包含了事务的静态属性,... 查看详情