阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

最近阿里云机器学习PAI平台和达摩院智能估计实验室一起发布“低碳版”巨模型M6-10T,模型参数已经从万亿跃迁到10万亿,规模远超业界此前发布的万亿级模型,成为当前全球最大的AI预训练模型。

作者:王林、飒洋

导读

最近阿里云机器学习PAI平台和达摩院智能估计实验室一起发布“低碳版”巨模型M6-10T,模型参数已经从万亿跃迁到10万亿,规模远超业界此前发布的万亿级模型,成为当前全球最大的AI预训练模型。同时做到了业内极致的低碳高效,应用512 GPU在10天内即训练出具有可用水平的10万亿模型。相比之前发布的大模型GPT-3,M6实现同等参数规模,能耗仅为其1%。M6模型训练应用的正是阿里云机器学习PAI平台自研的分布式训练框架EPL(Easy Parallel Library,原名whale)。EPL通过对不同并行化战略进行统一抽象、封装,在一套分布式训练框架中反对多种并行战略,并进行显存、估计、通讯等全方位的优化,来提供易用、高效的分布式训练框架。

EPL背后的技巧框架是如何设计的?作为开发者我们可以怎么应用EPL?未来有哪些规划?今天一起来深入了解。

EPL是什么

EPL(Easy Parallel Library)是阿里最近开源的,统一多种并行战略的、灵活易用的自研分布式深度学习训练框架。

项目背景

随着近些年深度学习的火爆,模型的参数规模也增长迅速,OpenAI数据显示:

2012年以前,模型估计耗时每2年增长一倍,和摩尔定律保持一致;2012年后,模型估计耗时每3.4个月翻一倍,远超硬件发展速度;

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

特别最近一年模型参数规模飞速增长,谷歌、英伟达、阿里、智源研究院都发布了万亿参数模型,有大厂也发布了百亿、千亿参数模型。随着模型参数规模增大,模型效果也在逐步提高,但同时也为训练框架带来更大的挑战。当前已经有一些分布式训练框架,例如:Horovod、Tensorflow Estimator、PyTorch DDP等反对数据并行,Gpipe、PipeDream、PipeMare等反对流水并行,Mesh Tensorflow、FlexFlow、OneFlow、MindSpore等反对算子拆分,但当我们要训练一个超大规模的模型时会面临一些挑战:

如何简洁易用:接入门槛高:用户实现模型分布式版本难度大、成本高,需要有领域专家经验才能实现高效的分布式并行战略;最优战略难:随着研究人员设计出越来越灵活的模型,以及越来越多的并行加速方法,如果没有主动并行战略摸索反对,用户很难找到最适合自身的并行战略;迁移代价大:不同模型适合不同的混合并行战略,但切换并行战略时可能需要切换不同的框架,迁移成本高;如何提高性价比:业界训练万亿规模模型需要的资源:英伟达 3072 A100、谷歌 2048 TPU v3,资源成本非常高;如何降本增效,组合应用各种技巧和方法来减少需要的资源,提高训练的速度;

为了应对当前分布式训练的挑战,我们研发了分布式训练框架EPL,将不同并行化战略进行统一抽象、封装,在一套分布式训练框架中反对多种并行战略。EPL同时提供简洁易用的接口,用户只需添加几行annotation即可完成并行战略的配置,模型代码不需要改动。在用户无感的情况下,EPL通过进行各种显存、估计、通讯优化,打造高效的分布式训练框架。

主要特性

多种并行战略统一:在一套分布式训练框架中反对多种并行战略(数据/流水/算子/专家并行)和其各种组合、嵌套应用;接口灵活易用:用户只需添加几行代码就可以应用EPL丰富的分布式并行战略,模型代码无需修改;主动并行战略摸索:算子拆分时主动摸索拆分战略,流水并行时主动摸索模型切分战略;分布式性能更优:提供了多维度的显存优化、估计优化,同时结合模型结构和网络拓扑进行调度和通讯优化,提供高效的分布式训练;

开源地址

EPL(Easy Parallel Library)的开源地址是:

https://github.com/alibaba/EasyParallelLibrary

我们同时提供了model zoo,欢迎大家试用:

https://github.com/alibaba/FastNN

EPL主要技巧特点

EPL通过丰富并行化战略,简单易用的接口,多维度的显存优化技巧,和优化的估计通讯加速技巧,让每一个算法工程师都能轻松训练分布式大模型任务。

丰富的并行化战略:EPL提供了多种并行化战略及其组合战略,包含数据并行,流水并行,算子拆分并行及并行战略的组合嵌套。丰富的战略选择使得不同的模型结构都能找到最适合自己的分布式训练方式。易用性:用户的模型编程接口和训练接口均基于TensorFlow,用户只需在已有的单机单卡模型上做简单的标记即可实现不同的分布式战略。EPL设计了两种简单的战略接口(replicate/split)来表达分布式战略及混合并行。分布式战略标记的方式让用户无需学习新的模型编程接口,仅需几行代码即可实现和转换分布式战略,极大降低了分布式框架的应用门槛。显存优化:EPL提供了多维度的显存优化技巧,包含主动重算技巧(Gradient Checkpoint),ZeRO数据并行显存优化技巧,CPU Offload技巧等,帮助用户用更少的资源训练更大的模型。通讯优化技巧:EPL深度优化了分布式通讯库,包括硬件拓扑感知,通讯线程池,梯度分组融合,混合精度通讯、梯度压缩等技巧。

技巧架构

EPL框架如下图所示,主要分为以下几个模块:

接口层:用户的模型编程接口基于TensorFlow,同时EPL提供了易用的并行化战略表达接口,让用户可以组合应用各种混合并行战略;中间表达层:将用户模型和并行战略转成化内部表达,通过TaskGraph、VirtualDevices和战略抽象来表达各种并行战略;并行化引擎层:基于中间表达,EPL会对估计图做战略摸索,进行显存/估计/通讯优化,并主动生成分布式估计图。Runtime执行引擎:将分布式执行图转成TFGraph,再调用TF 的Runtime来执行;

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

并行化战略表达

EPL通过strategy annotation的方式来划分模型为多个TaskGraph,并在此基础上进行并行化。 EPL有两类strategy:replicate 和 split。通过这两种并行化接口,可以表达出各种不同的并行化战略,例如:

数据并行: 下面这个例子是一个数据并行的例子,每个模型副本用一张卡来估计。如果用户申请了8张卡,就是一个并行度为8的数据并行任务。

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

流水并行:在下面的例子里,模型被切分成2个 TaskGraph, "stage0"和"stage1",用户可以通过配置pipeline.num_micro_batch参数来设定pipeline的micro batch数量。 在这个例子里,"stage_0"和"stage_1"组成一个模型副本,共需要2张GPU卡。如果用户申请了8张卡,EPL会主动在pipeline外嵌套一层并行度为4的数据并行(4个pipeline副本并行执行)。

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

算子拆分并行:在以下例子中,EPL会对split scope下的模型定义做拆分,并放置在不同的GPU卡上做并行估计。

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

同时EPL反对对上述并行战略进行组合和嵌套,来组成各种混合并行战略,更多示例可以参考开源代码的文档和示例。

显存优化

当模型增长,GPU的显存常常成为训练大模型的瓶颈。EPL提供了多维度的显存优化技巧,极致优化了训练显存消化。

重算 Recomputation (Gradient Checkpoint):正常的DNN前向过程中会生成activation,这部分activation会在后向过程中用于梯度的估计。因此在梯度生成之前,前向的activation会一直存留在显存中。activation大小和模型结构以及batch size相关,通常占比都非常高。Gradient Checkpoint (GC) 通过保留前向传播过程中的部分activation,在反向传播中重算被释放的activation,用时间换空间。GC中比较重要的一部分是如何选择合适的checkpoint点,在节省显存,保证性能的同时,又不会影响收敛性。EPL提供了主动GC功能,让用户可以一键开启GC优化功能。ZeRO:在数据并行的场景下,每个卡上会存放一个模型副本,optimizer state等,这些信息在每张卡上都是一样,存在很大的冗余量。当模型变大,很容易超出单卡的显存限制。在分布式场景下,我们可以通过类似DeepSpeed ZeRO的思路,将optimizer state和gradient分片存在不同的卡上,从而减少单卡的persistent memory占用。显存优化的AMP(Auto Mixed Precision):在常规的AMP里,需要维护一个FP16的weight buffer,对于参数量比较大的模型,也是不小的开销。EPL提供了一个显存优化的AMP版本,FP16只有在用的时候才cast,从而节约显存。Offload: Offload将训练的存储空间从显存扩展到内存甚至磁盘,可以用有限的资源来训练大模型。

同时,EPL反对各种显存优化技巧的组合应用,达到显存的极致优化。我们在T5模型上开启GC+ZeRO+显存优化的AMP技巧,在性能保持不变的情况下,显存降低2.6倍。

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

应用场景

EPL适合不同场景的模型,在阿里内部已经反对图像、推荐、语音、视频、自然语言、多模态等业务场景,同时也可以反对不同规模的模型,最大我们完成了10万亿规模的M6模型训练,下面以M6和Bert模型为例进行介绍。

万亿/10万亿 M6模型预训练

训练一个万亿/10万亿参数模型的算力需求非常大,为了降低算力需求,EPL中实现了MoE(Mixture-of-Experts)结构,MoE的主要特点是稀疏激活,应用Gating(Router)来为输入选择Top-k的expert进行估计(k常用取值1、2),从而大大减少算力需求。

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

EPL反对专家并行(Expert Parallelism, EP),将experts拆分到多个devices上,降低单个device的显存和算力需求。同时数据并行有利于提升训练的并发度,因此采用数据并行+专家并行组合的混合并行战略来训练M6模型:MoE layer采用专家并行,其他layer采用数据并行。

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

EPL中提供简洁易用的接口来进行模型的混合并行训练,只需要增加几行annotation来配置并行战略,模型本身不需要任何修改。例如,M6模型采用数据并行+专家并行的战略,只需要增加如下图的annotation:

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

同时为了节约训练资源,提高训练效率,我们采用了EPL的显存优化技巧和估计通讯加速技巧,包含主动 Gradient Checkpointing节省activation显存占用,CPU Offload技巧用于优化optimizer states和weight的显存占用,采用DP+EP混合并行战略降低算力需求,和结合混合精度、编译优化等技巧提高训练效率等。

借助EPL框架,首次在480 V100 上,3天内完成万亿M6模型的预训练。相比此前业界训练同等规模的模型,此次仅应用480张V100 32G GPU就成功训练出万亿模型M6,节省算力资源超80%,且训练效率提升近11倍。进一步应用512 GPU在10天内即训练出具有可用水平的10万亿模型。

流水并行加速Bert Large模型训练

对于Bert Large模型,结构图如下图所示:

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

由于Bert Large模型对显存消耗较大,Nvidia V100 16G显卡上batch size常常只有2-8左右(具体值和Embedding大小、Sequence Length等有关)。Batch size太小会导致算法收敛波动大,收敛效果差的问题。同时通过数据并行模式训练通讯占比较高,分布式加速效果不理想。

分析Bert Large模型,由24层重复结构的encoder组成,可以应用流水并行进行加速。这里我们将Bert Large中的Encoder Layer 1~8层、Encoder Layer 9~16层,Encoder Layer 17~24层分别放在不同的卡上进行训练,并行化后的估计图如下图所示:

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

此时每张卡训练时的显存开销会减少,从而可以增大batch size以提升收敛加速。另外,对于模型过大单卡显存无法放下导致无法训练的场景,通过Layer间拆分的模型并行方式来进行分布式训练。通过epl.replicate接口可以实现模型的stage划分,同时通过流水并行的执行调度来提升并行化性能,如下图所示:

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

上述例子是一个流水micro batch mumber为5的情况。通过流水并行优化后的时间轴可以看出,在同一个时间上多张卡可以并行估计。当5个micro batch结束后,每张卡会将梯度进行本地的累计之后再进行update。与单纯的模型并行相比,通过流水的交替执行,提高了GPU的利用率。EPL还通过采用Backward-Preferred调度优化战略来提升流水并行性能,降低GPU空闲时间和显存开销。

阿里开源 反对10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

为能够获得更高的水平扩展,EPL还反对在流水并行外嵌套数据并行来提升训练吞吐。EPL会主动推导嵌套的数据并行的并行度。在32卡GPU规模下,应用EPL的流水并行+数据并行,相较于数据并行得到了66%的提升。

Roadmap

我们决定建设开源生态主要有如下的考虑:

EPL发源于阿里云内部的业务需求,在服务内部业务的过程中,我们积累了大量的经验和理解,很好的反对了大规模、多样性的业务场景,在我们自身随着业务需求的迭代逐渐完善的同时,也希望能够开源给社区,将自身积累的经验和理解也同样回馈给社区,希望和深度学习训练框架的开发者或深度学习从业者之间有更多更好的交流和共建,为这个行业贡献我们的技巧力量。我们希望能够借助开源的工作,收到更多真实业务场景下的用户反馈,以帮助我们持续完善和迭代,并为后续的工作投入方向提供输入。同时我们希望借助开源的工作,能吸引一些志同道合的同学、公司或组织来参与共建,持续完善深度学习生态。

后续我们计划以两个月为单位发布Release版本。EPL近期的Roadmap如下:

持续的性能优化和稳定性改进;通用算子拆分功能;主动拆分战略摸索的基础版;主动流水并行战略摸索;

此外,在中长期,我们在下面几个摸索性的方向上会持续投入精力,也欢迎各种维度的反馈和改进建议以及技巧讨论,同时我们十分欢迎和期待对开源社区建设感兴趣的同行一起参与共建。

全主动的模型并行战略摸索;高效的战略摸索算法和精准的CostModel评估;eager model下的并行战略摸索;更多新硬件的反对、适配和协同优化;高效的算子优化和集成、极致的显存优化、软硬一体的通讯优化;

参考文献

Whale: Scaling Deep Learning Model Training to the Trillions https://arxiv.org/abs/2011.09208https://openai.com/blog/ai-and-compute/ZeRO: Memory Optimizations Toward Training Trillion Parameter Models. https://arxiv.org/abs/1910.02054BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding https://arxiv.org/abs/1810.04805

原创文章,作者:阿里云大数据AI技术,如若转载,请注明出处:https://www.iaiol.com/news/a-li-kai-yuan-fan-dui-10-wan-yi-mo-xing-de-zi-yan-fen-bu/

(0)
上一篇 2022年 3月 30日 下午6:06
下一篇 2022年 3月 30日 下午6:09

相关推荐

  • 墨芯首席科学家严恩勖:为什么说茂密化是AI计较的将来

    主讲人:严恩勖墨芯人工智能联合创始人 & 首席科学家卡内基梅隆大学 机器学习博士神经网络动态茂密算法发明者视频简介:10年前,AI计较优化大多提防在优化算法的计较复杂度上,近年来随着AI产业化,AI计较优化更多注重在硬件的算力提拔上。当前,硬件所能带来的算力提拔已贴近限度,AI优化计较的将来将是算法与硬件架构的共同优化,以及建立相应的软件生态。茂密化计较,带来数量级的算力提拔,将成为将来AI计较优化的领航者。视频内容:

    2022年 7月 18日
  • 除了缺少点创意,GPT-3写出了及格的大学毕业论文,只需20分钟

    GPT-3 写的论文及格了吗?教育资源网站 EduRef 对此进行了一项尝试,效果还行,及格水平。

    2021年 3月 2日
  • 翻新工厂李开复:调理赛道挤泡沫,迎来“调理+X”时代

    2022年即将过半,黑天鹅仍旧满天飞,一二级市场跌宕起伏。新冠催化下的调理科技赛道,从火热到冷静,逐渐走入挤泡沫的阶段。在这之中,哪些热点将回归平静,又有哪些趋势能够穿越周期?5月11日,在翻新工厂举办的调理翻新趋势分享会上,翻新工厂董事长兼CEO李开复博士表示,在科技交织越来越频繁的当下,AI和自动化已经成为了底层的“数字基建”,跟各范畴的手艺交织带来了越来越多的翻新突破。而传统的调理大安康赛道也在两大平台手艺的推动下迎来翻新拐点,迎来“调理+X”的落地爆发时代。&

    2022年 5月 11日
  • 算法“视”界杯强势来袭,2021腾讯告白算法大赛正式开启!

    技无止竞!算法巅峰对决再起,技术大咖速来报名!

    2021年 3月 11日
  • 综述:药物发觉中的机械进修

    编辑 | 萝卜皮不知不觉,人工智能已经渐渐延伸到了各个领域,医药领域也不例外。来自印度 B V Raju 理工学院的研究人员发表综述,讨论了药物发觉中的机械进修,归纳总结了应用于制药领域的各类机械进修手艺,并指出当前该领域发展的难点,以及未来发展方向。该综述以「Machine Learning in Drug Discovery: A Review」为题,于 2021 年 8 月 11 日发布在《Artificial Intelligence Review》杂志。人工智能概念与许多领域密切相关,如模式鉴别、概率论、

    2021年 8月 31日
  • 3D传感器芯片技能全球率先,灵明光子完成数亿元C轮融资

    新一代全球率先的3D传感器芯片服务商灵明光子完成数亿元C轮融资,领投方为美团龙珠,老股东昆仲资本和高榕资本继续加注,光源资本担任独家财务顾问。融资完成后,公司将加速推进产物量产,并继续在先进领域投入研发,保持技能率先性。灵明光子致力于用国际率先的单光子探测器(SPAD)技能,为手机、激光雷达、机器人、AR装备等提供自主研发的高性能dToF深度传感器芯片。自2018年成立以来,灵明光子已迅速完成多轮融资,并引入小米、OPPO、欧菲光等产业资本,显示出商场对于灵明光子dToF芯片研发能力和运用前景的看好。dToF(di

    2022年 4月 11日
  • 不能练习?网传MSRA停招国防七子及北邮在校生

    美国商务部对实体清单相关对象的制约越来越大了。

    2022年 4月 14日
  • 给5G基带也加上呆板进修单元:高通的AI脑洞还有太多

    最先进的人工智能手艺,并不总意味着数块 GPU、每秒算力上 E 的超算。使用最广泛的移动芯片上,人们正在使用最先进的 AI 手艺。最近,高通再次利用 AI 兑现了「突破性的 5G 效能」。在巴塞罗那举办的 MWC 2022 国际通信展上,高通 CEO 安蒙(Cristiano Amon)发布了全球首款搭载 AI 估计核心的 5G 通信基带骁龙 X70。在显卡、手机 CPU 旁边出现 AI 估计单元之后,现在连通信基带也要专门的 AI 芯片加持了 ,这不仅让人要问:「有必要吗?」首款搭载 AI 核心的 5G 基带根据

    2022年 3月 10日
  • 得州、佛州也对「一生传授」轨制下手了,每年评绩效,有大学准备捡漏

    终结一生教职轨制,佐治亚州起了个头,后来者不止一个。

    2022年 4月 23日
  • 2022 IBM博士生奖学金揭晓:8位华人入选,上交大、电子科大校友在列

    这些获奖博士生将赢得高达 9.5 万美元的奖金。

    2022年 5月 18日

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

评论列表(1条)

  • Izveidot personīgo kontu
    Izveidot personīgo kontu 2024年 5月 6日 上午2:55

    Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.