阿里开源支持10万亿模型的自研分布式训练框架EPL(EasyParallelLibrary)

简介:EPL背后的技术框架是如何设计的?开发者可以怎么使用EPL?EPL未来有哪些规划?今天一起来深入了解。

作者 | 王林、飒洋
来源 | 阿里技术公众号

一 导读

最近阿里云机器学习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是什么

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

1 项目背景

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

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

近一年来,百亿、千亿级的参数模型陆续面世,谷歌、英伟达、阿里、智源研究院更是发布了万亿参数模型。随着模型参数规模的增大,模型效果逐步提高,但同时也为训练框架带来更大的挑战。当前已经有一些分布式训练框架Horovod、Tensorflow Estimator、PyTorch DDP等支持数据并行,Gpipe、PipeDream、PipeMare等支持流水并行,Mesh Tensorflow、FlexFlow、OneFlow、MindSpore等支持算子拆分,但当训练一个超大规模的模型时还是会面临一些挑战:

  • 如何简洁易用:

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

为了应对当前分布式训练的挑战,阿里云机器学习PAI团队自主研发了分布式训练框架EPL,将不同并行化策略进行统一抽象、封装,在一套分布式训练框架中支持多种并行策略。同时,EPL提供简洁易用的接口,用户只需添加几行annotation(注释)即可完成并行策略的配置,不需要改动模型代码。EPL也可以在用户无感的情况下,通过进行显存、计算、通信等全方位优化,打造高效的分布式训练框架。

2 主要特性

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

3 开源地址见文末

三 EPL主要技术特点

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

丰富的并行化策略:EPL提供了多种并行化策略及其组合策略,包含数据并行、流水并行、算子拆分并行及并行策略的组合嵌套。丰富的策略选择使得不同的模型结构都能找到最适合自己的分布式训练方式。

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

1 技术架构

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

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

2 并行化策略表达

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

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

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

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

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

3 显存优化

当模型增长,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支持各种显存优化技术的组合使用,达到显存的极致优化。阿里云机器学习PAI团队在T5模型上开启了GC+ZeRO+显存优化的AMP技术,在性能保持不变的情况下,显存降低2.6倍。

四 应用场景

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

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

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

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

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

同时,为了节约训练资源、提高训练效率,我们采用了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万亿模型。

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

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

由于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层分别放在不同的卡上进行训练,并行化后的计算图如下图所示:

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

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

为能够获得更高的水平扩展,EPL还支持在流水并行外嵌套数据并行来提升训练吞吐。EPL会自动推导嵌套的数据并行的并行度。最新测试结果显示,在32卡GPU规模下,使用EPL的流水+数据并行对Bert Large模型进行优化,相比于数据并行,训练速度提升了66%。

五 Roadmap

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

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

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

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

此外,在中长期,我们将在软硬件一体优化、全自动策略探索等几个探索性的方向上持续投入精力,也欢迎各种维度的反馈和改进建议以及技术讨论,同时我们十分欢迎和期待对开源社区建设感兴趣的同行一起参与共建。

  • 全自动的模型并行策略探索;
  • 高效的策略探索算法和精准的CostModel评估;
  • eager model下的并行策略探索;
  • 更多新硬件的支持、适配和协同优化;
  • 高效的算子优化和集成、极致的显存优化、软硬一体的通信优化;

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何从 Docker 镜像里提取 dockerfile!

作者 | A-刘晨阳来源 | CSDN博客今天给大家分享一下 dockerfile 里面是如何写的,然后去查了查就有了新的发现——通过镜像来提取 dockerfile。从镜像中提取dockerfile的两种方法。history参数我们可以直接用docker自带的参数来查看镜像的dockerfile,但有…

新品发布|备案变更不用再担心中断服务啦

简介:ICP备案迁移服务,就是面向有计划变更域名备案主体,或者在不同主体间迁移网站备案信息的客户,实现迁移过程中域名或者网站服务不中断的备案增值服务。 说起ICP备案,做过互联网经营业务的朋友都很熟悉,…

一眼定位问题,函数计算发布日志关键词秒检索功能

简介:当 FaaS 应用出现很多报错,且调用日志页面的请求过多时,如何才能简单、快速地查到出现 bug 的原因? 听说这个问题你也遇到了? 小王是一名程序员,最近在使用 FaaS &#xff08…

如何在 Linux 中使用 rsync 传输文件

作者 | 刘光录来源 | TIAPrsync(远程同步,Remote Sync)是一种在系统中或两个系统之间复制文件和目录的同步工具。rsync 的一个最大的优点,就是它只复制更改的文件,因而可以减少 CPU 消耗,在复制文件时节省带…

国民级消消乐背后的网络技术支持:不畏巨“峰”,“运”筹帷幄

简介:近日,阿里云网络携手乐元素共同部署建设了基于7层业务自动化调度的弹性网络架构,进一步提升乐元素在用户服务上的娱乐体验。提到乐元素相信大家都不陌生,作为从事移动网络游戏的研发、运营及广告平台,其代表作就是…

透析阿里云视频云「低代码音视频工厂」之能量引擎——vPaaS视频原生应用开发平台

简介:支撑15分钟上线高品质专属音视频平台 为满足企业用户极速搭建高品质专属音视频业务的需求,阿里云视频云的“低代码音视频工厂”应运而生,但极速而高品质的平台搭建诉求,需要用全新的开发方式才能真正实现,而全新…

自动驾驶“稳打地基”,小鹏汽车基于阿里云建自动驾驶AI智算中心算力可达600PFLOPS

数据驱动是自动驾驶发展的公认方向,也让自动驾驶模型训练成为一头“吃算力”的巨兽。自动驾驶的视觉检测、轨迹预测与行车规划等算法模型,有赖于机器学习海量数据集,但算力的不足让研发速度仍远远赶不上数据量增长的速度。随着传感器的进一步…

阿里云视频云「 vPaaS 」演绎了怎样的音视频应用开发「未来图景」

简介:前瞻音视频平台的演进未来 vPaaS是阿里云视频云最新推出的低代码音视频应用开发产品,其中,vPaaS低代码音视频工厂,彻底打破了音视频应用的繁冗技术开发壁垒;vPaaS视频原生应用开发平台,全新定义了音视…

鲲鹏开发者创享日2022:鲲鹏全栈创新 与开发者共建数字湖南

由华为推出的面向鲲鹏计算产业全栈开发者的系列活动——鲲鹏开发者创享日2022于8月5日在长沙成功举办。这场被称为开发者“技术嘉年华”的峰会,汇聚了国内顶尖技术大咖、科研带头人、知名企业技术专家及高校开发者,描绘了计算产业发展趋势和蓝图&#xf…

MySQL 深潜 - MDL 锁的实现与获取机制

简介:本文将介绍在 MDL 系统中常用的数据结构及含义,然后从实现角度讨论 MDL 的获取机制与死锁检测,最后分享在实践中如何监控 MDL 状态。 作者 | 泊歌 来源 | 阿里技术公众号 一 背景 为了满足数据库在并发请求下的事务隔离性和一致性要求…

深度解说阿里云 Serverless Kubernetes

简介:听阿里云技术专家聊聊 Serverless Kubernetes 一路走来的发展史,看看它是如何做到兼容 Kubernetes 使用方式的同时,拥有免运维和极致弹性等特点~ 作者 | 陈晓宇(阿里云技术专家) 策划 | 褚杏娟 伴随着云原生的…

理清 HTTP 之下的 TCP 流程,让你的 HTTP 水平更上一层

作者 | 神说要有光来源 | 神光的编程秘籍大家都知道 HTTP 的底层是 TCP,但是可能仅限于知道,并不是真正理解它们的关系。平时我们用 chrome devtools 的 Network 工具也只是能分析 HTTP 请求:TCP 层的东西看不见摸不着的,所以对它…

基于 EventBridge 构建 SaaS 应用集成方案

简介:事件源是事件驱动的基石,如何获取更多事件源也是 EventBridge 一直在探索和尝试的方向。针对市场上其他云厂商和垂直领域的 Saas 服务,EventBridge 发布了 HTTP Source 能力,提供简单且易于集成的三方事件推送 ,帮…

无缝融入 Kubernetes 生态 | 云原生网关支持 Ingress 资源

简介:Kubernetes 一贯的作风是通过定义标准来解决同一类问题,在解决集群对外流量管理的问题也不例外。Kubernetes 对集群入口点进行了进一步的统一抽象,提出了 3 种解决方案:NodePort、LoadBalancer 和 Ingress。 作者&#xff1…

阿里云 AI 编辑部获 CCBN 创新奖,传媒行业解决方案背后的黑科技

简介:视频云驱动智媒创新 5 月 27 日,CCBN(第二十八届中国国际广播电视信息网络展览会)在北京隆重召开,在本次的 “CCBN 年度创新奖” 评选中,阿里云视频云凭借 AI 编辑部的传媒行业专业解决方案获得 CCBN …

云原生正在吞噬一切,开发者该如何应对?

十年前,Netscape创始人、硅谷著名投资人马克安德森(Marc Andreessen)预言“软件正在吞噬世界”;数年后,软件里90%以上的代码都是开源代码,“开源正在吞噬软件”;如今,“云原生吞噬开…

阿里云视频云 Retina 多媒体 AI 体验馆开张啦

简介:带你体验视频更多可能 带你体验视频更多可能 海量视频管理难度大?翻库检索特定人物费时费力?视频内容剪辑效率低?您的得力助手“Retina多媒体AI”体验馆已上线。带你感受视频AI黑科技,开启极致智能体验。 1、智…

一篇文章了解 Docker 的安装、启动以及工作原理!

作者 | 是泡泡来源 | CSDN博客Docker 浅谈1.1 Docker 为什么出现我们知道,传统的项目开发和运维是两套环境,而且要一一配置环境并且有的时候更新还会导致服务不可用,这就很麻烦了,那么有没有一种很方便不用这么麻烦的技术可以一键…

技术解读:英特尔 x86 平台上,AI 能力是如何进行演进的?(附PPT)

简介:AI 生态系统是怎样的?其中又有哪些关键技术? AI 计算力的指数增长意味着,为了解决越来越复杂的用例,即使是 1000 倍的计算性能增长也很容易被消耗。因此,需要通过软件生态系统的助力,才能…

Apsara Stack 技术百科 | 浅谈阿里云混合云新一代运维平台演进与实践

简介:随着企业业务规模扩大和复杂化及云计算、大数据等技术的不断发展,大量传统企业希望用上云来加速其数字化转型,以获得虚拟化、软件化、服务化、平台化的红利。在这个过程中,因为软件资产规模持续增大而导致的软件开发运维和IT…