AI顶会ICLR 2022 | WPipe 蚂蚁集团大规模 DNN 训练的流水线并行技术

简介: AI顶会ICLR 2022 | WPipe 蚂蚁集团大规模 DNN 训练的流水线并行技术

导言

ICLR,全称为 International Conference on Learning Representations (国际学习表征会议) 是三大机器学习领域顶会之一 (另外两个是ICML和NeuriPS)。该会议的主要创办者就包含了深度学习三大巨头的YoShua Bengio和Yann LeCun。ICLR的第一届是2013年举行,短短几年就得到的快速发展,逐步成为机器学习领域的顶会。我们这项工作就是ICLR 2022收录论文。

近年来,使用大规模深度神经网络 (DNN) 来提高性能的趋势,推动了用于高效 DNN 训练的并行流水线技术的发展,也催生出了一系列优秀的的Pipeline Parallelism(PP)技术,例如 GPipe、PipeDream 和 PipeDream- 2BW。然而,目前领先的 PipeDream-2BW 技术仍然存在两个主要缺点,即过多的内存冗余和权重更新延迟。在这个方向上,我们提出了一种名为 WPipe 的新的PP技术,它可以实现更好的内存效率和更新鲜的更新梯度。

WPipe 使用一种新颖的流水线方案,它将模型分为两组,并通过巧妙的移动操作,使得两个分组既可以无缝更新,也可以消除一半的更新延迟和额外内存占用。通过大型语言模型Bert和视觉模型ResNeXt的训练实验表明,与当前SOTA技术PipeDream-2BW 相比,WPipe 实现了 1.4x 的加速且内存占用减少了 36%,同时保障最终的模型准确度不受影响。


介 绍


模型容量越大,表达能力就越强,拥有更好表现效果的潜力就越大,因此为了实现更好的效果,模型的参数规模越来越大。最近有越来越多的工作从这个思路出发,他们使用拥有大规模参数的模型来提升模型的效果,最终也收获了SOTA的结果。相关工作有OpenAI的GPT-3,Microsoft的T5,达摩院的M6等。


然而,大规模模型带来好的效果的同时也给训练提出了新的挑战,这些模型的显存占用要远大于目前最高规格硬件加速设备的显存。以GPT-3为例,它的最大参数量为1750亿,有效训练所需要的显存占用大概是6000G左右,而目前NVIDIA- A100的最大显存只有80G,远满足不了需求。


为了解决这个问题,业内人士开始聚焦到模型并行技术上。传统的模型并行可以分为两类:层内模型并行(intra-layer model parallelism)和层间模型并行(inter-layer model parallelism)。层内模型并行主要的代表工作有Megatron-LM,deepspeed的Zero1,Zero2,Zero3,Zero-Infinity等。层内模型并行每一层都需要两次全员参入的All-gather通信,对通信带宽的要求很高,尤其在训练Transformer这类稠密模型时。


一般在单机8卡的机型下,由于卡间存在NvLink,这个问题并不明显。但是在扩展到多机训练时,这种全员参入的All-gather通信消耗将成为吞吐进一步提升的瓶颈,尤其在机间通信时 (即使有层次化通信优化技术,但是也无法根本解决这个问题)。而层间模型并行,在做完partition后,同一个partition内的各层并不需要通信,其通信的频次可以远低于层内并行。


然而,传统的层间并行由于资源利用率低,不会直接被使用,而是需要通过流水线并行 (Pipeline Parallelism, PP) 来加速,提升资源利用率。PP可以细分为同步流水线并行(Sync-PP)和异步流水线并行 (Async-PP)。Sync-PP的代表工作有GPipe,PipeDream-flush等;Async-PP的代表工作有PipeDream,PipeDream-2BW等。同步方法与数据并行具有相同的权值更新语意,但是需要引入bubble(空闲等待时间),会降低训练吞吐。


异步方法彻底消除的训练timeline中的bubble,但是需要引入不同的权值版本来解决权值过期的问题。WPipe可以使用更少的权值版本来解决权值过期问题,理论上,运行时WPipe相比PP领域的SOTA方法PipeDream-2BW可以节省一半运行时内存占用,并且拥有更少的权值切换成本,相同batch下的吞吐也能提升1.4x。


论文详细信息如下:

论文题目:Group-based Interleaved Pipeline Parallelism for Large-scale DNN Training

论文地址和论文的代码,均可在openreview.net的官网上获取。


图片.pngimage.gif


相关技术及问题

模型并行是一种将一个大模型按照一定的规则划分为多个partitions,并将其分配到不同的加速设备上,每一个加速设备负责其拥有权值的前向推理和反向求导,并将产生的中间激活/梯度发送到其他加速设备上,同时也接受其他加速设备产生的激活和梯度。按照划分方向的不同,分为层内模型并行和层间模型并行,如图1所示。本小节主要介绍层间并行相关技术。


图片.png

图- 1模型并行的划分


流水线并行 (Pipeline Parallelism, PP)是一种层间并行技术,通过让不同的workers在同一时刻执行不同的mini-batches的数据来实现计算利用率的提升,如图2所示,从(a)到(b)可以有效地提升资源利用率。然而原始的PP依然不能直接使用,如图2(b)所示,worker0上,mini-batch 2的反向过程所使用的权值,被mini-batch 1的反向过程更新,导致mini-batch 2的前反向过程权值版本不统一。


图片.png

图- 2传统层内并行和流水线并行


当前主流的方法通过权衡吞吐和显存占用来解决这个权值过期问题。Sync-PP方法,代表有GPipe和PipeDream-flush,前者将一个mini-batch划分为多个micro-batch,并在micro-batch内做流水线并行,这个方法彻底解决的过期问题问题,但是需要引入空闲区域 (bubbles),牺牲了吞吐。


后者PipeDream-flush本身并没有对GPipe做本质的修改,主要改进是将micro-batch的反向过程前移了,从而可以使激活释放的更加迅速,并且到稳定状态后 只有 个micro-batch的反向过程激活没有被释放,而不是M(micro-batch的数目,远大于worker的数目)。所以PipeDream-flush的内存占用更小

图片.pngimage.gif

图- 3 (a) GPipe,(b) PipeDream-flush,(c) PipeDream 和(d) PipeDream-2BW的执行时序图


Async-PP方法,代表有PipeDream和PipeDream-2BW。PipeDream默认使用Weight stashing技术,  需要维持个  权值版本来保证同一个worker的前向和反向所使用的权值版本一致,虽然这个方案可有效的消除同步方法中的空闲区域,但是需要大量的显存空间来保存多余的权值版本。


针对这个问题,PipeDream-2BW提出了进一步的改进方案--2BW。2BW利用梯度累积技术有效减少了PipeDream里的权值版本,权值更新语意中的梯度延迟项也减少到常数1。尽管如此PipeDream-2BW依然有可以改进的地方。


WPipe的解决方案


● 问题引入


如图4所示是插入空闲时间块后的PipeDream-2BW的执行示意图。相邻两个周期被idle时间块分隔,相互之间没有交叉,类似PipeDream-flush,可以彻底解决权值过期的问题,但是这些idle时间块影响吞吐的进一步提升。通过统计,我们发现这些idle的时间块,刚好是一个模型并行的执行流水线图,所以能不能用另外执行流水线来填充这些idle时间块,成为我们的优化思路。


image.gif图片.png

图- 4 插入Bubble的PipeDream-2BW


2GW


在上文的猜想的指导下,我们做了下面的尝试,首先(1)我们将划分好的模型partitions分为两组  和  , 如图5(a)所示;(2)然后我们将下一个更新周期的  前向过程移动到当前更新周期的  的反向过程的前面,如图5(b)所示;(3)最后我们交叉每一个训练周期就得到了无缝更新pipeline,如图5(c)所示。

图片.png

图- 5 WPipe的推理过程


图片.png

图片.png


图片.png

内存分析

图片.png


图片.png

实验分析


我们从收敛性,吞吐,和内存占用三个方面来分析WPipe的性能。我们分别选取了CV领域的ResNeXt系列模型和NLP领域的Bert系列模型。


收敛性


从表2中的各项试验数据可以看出,WPipe,DP,和PD-2BW三者的最终准确率相差不大,说明WPipe和PD-2BW一样都对收敛性无损。但是分析他们的训练过程中我们发现,WPipe的loss曲线和准确率曲线更加接近数据并行(DP),如图6所示,更多的loss曲线和准确率曲线可以看论文附录。


表格 2 收敛性分析表

图片.png


图片.png

图- 6 训练loss变化曲线和一个从头开始训练的Accuracy变化曲线


吞吐


由于训练的batch-sze很大程度影响深度模型的最终的训练效果,batchsize太大或者太小都影响收敛性。所以对于一个实际使用的训练系统,需要一定的batch范围内有更高的吞吐。常用的batchsize的范围是  ,对于大模型而言,很多时候是达不到这个batch范围的,所以训练大模型首先需要节省显存。


下图所示在  范围内,WPipe均有更高的吞吐。同时我们发现(1)在大规模模型训练重计算可以有效提高batchsize,且这种提升效果在WPipe-R中尤其的明显,如图7(e)WPipe的batchsize提升了44倍,而PipeDream-BW只有16倍;(2) WPipe结合数据并行和模型的变换空间更大,它的解空间比PipeDream-2BW更广,如图7(f)。


图片.png

图- 7 吞吐分析的各组实验


显存占用


减少显存占用方面,WPipe效果明显,尤其是WPipe-R。并且随着batch-size的增大,WPipe-R的效果越明显。这个得益于WPipe-R的运行时激活可以减少一半的优点。


图片.png

图- 8 在ResNeXt200上随batchsize增加的条件下,显存占用上,与主流方法的比较分析


图片.png

图- 9 在Bert96上随batchsize增加的条件下,显存占用上,与主流方法的比较分析


结论


在这项工作中,我们提出并实现了 WPipe,这是一种基于分组的交错流水线并行训练系统。 与最先进的方法 PipeDream-2BW 相比,WPipe 通过双分组权重更新实现了更好的内存效率、更高的吞吐量和更新鲜的权重更新。 具体来说,(1)吞吐量:WPipe实现1.4倍加速; (2)内存占用:WPipe-R减少了36%的内存占用; (3) 收敛性:虽然 WPipe 和 PipeDream-2BW 在训练时具有相似的最终准确率,但 WPipe 具有更接近数据并行性的权重更新语义。


参考文献

[1] Tom B Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, et al. Language models are few-shot learners. arXiv preprint arXiv:2005.14165, 2020.[2] Chi-Chung Chen, Chia-Lin Yang, and Hsiang-Yun Cheng. Efficient and robust parallel dnn training through model parallelism on multi-gpu platform. arXiv preprint arXiv:1809.02839, 2018.[3] Deepak Narayanan, Amar Phanishayee, Kaiyu Shi, Xie Chen, and Matei Zaharia. Memory-efficient pipeline-parallel dnn training. In International Conference on Machine Learning, pp. 7937–7947. PMLR, 2021.[4] Jeffrey Dean, Greg S Corrado, Rajat Monga, Kai Chen, Matthieu Devin, Quoc V Le, Mark Z Mao, Marc’Aurelio Ranzato, Andrew Senior, Paul Tucker, et al. Large scale distributed deep networks. 2012.[5] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805, 2018.[6] Aaron Harlap, Deepak Narayanan, Amar Phanishayee, Vivek Seshadri, Nikhil Devanur, Greg Ganger, and Phil Gibbons. Pipedream: Fast and efficient pipeline parallel dnn training. arXiv preprintarXiv:1806.03377, 2018.[7] Yanping Huang, Youlong Cheng, Ankur Bapna, Orhan Firat, Dehao Chen, Mia Chen, HyoukJoong Lee, Jiquan Ngiam, Quoc V Le, Yonghui Wu, et al. Gpipe: Efficient training of giant neural networks using pipeline parallelism. In Advances in neural information processing systems, pp. 103–112, 2019.[8] Paras Jain, Ajay Jain, Aniruddha Nrusimha, Amir Gholami, Pieter Abbeel, Kurt Keutzer, IonStoica, and Joseph E Gonzalez. Checkmate: Breaking the memory wall with optimal tensor rematerialization. arXiv preprint arXiv:1910.02653, 2019.[9] Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, and Radu Soricut. Albert: A lite bert for self-supervised learning of language representations. arXiv preprintarXiv:1909.11942, 2019.

[10] Junyang Lin, Rui Men, An Yang, Chang Zhou, Ming Ding, Yichang Zhang, Peng Wang, Ang Wang, Le Jiang, Xianyan Jia, et al. M6: A chinese multimodal pretrainer. arXiv preprint arXiv:2103.00823, 2021.

相关文章
|
6天前
|
人工智能 JavaScript 架构师
流水线运行出错排查难?AI 来帮你
目前云效流水线 Flow 内 Java 构建、Node.js 构建、Java 单元测试、Node.js 单元测试这 4 个步骤均接入了智能排查的能力。
42205 2
|
6天前
|
人工智能 运维 自然语言处理
对话蚂蚁李建国:当前AI写代码相当于L2.5,实现L3后替代50%人类编程
超70%代码问题,单纯靠基座大模型是解决不了的;未来3-5年,人类50%编程工作可以被替代,有些环节甚至完全自动化。蚂蚁集团代码大模型CodeFuse负责人李建国说道。当下,AI代码生成领域正在野蛮式生长,巨头涌入,AI员工频频上线企业;首个AI程序员Devin被曝造假…… 面对风起云涌的代码生成变革,李建国给出了这样一个明确论断。
36 0
|
6天前
|
人工智能
AI 排查流水线问题
AI 排查流水线问题
17 2
|
6天前
|
人工智能 运维 Devops
云效流水线智能排查功能实测:AI赋能DevOps,精准定位与高效修复实战评测
云效持续集成流水线Flow是阿里云提供的企业级CICD工具,免费且注册即用。它具备高可用性、免运维、深度集成阿里云服务、多样化发布策略及丰富的企业级特性。产品亮点包括智能排查功能,能快速定位问题,提高问题解决效率。云效Flow支持一站式DevOps流程,适用于各种规模的企业,助力实现高效、高质量的软件交付。现在即可免费试用,体验智能CICD解决方案。
|
6天前
|
存储 缓存 Windows
软件体系结构 - 流水线技术
软件体系结构 - 流水线技术
32 0
|
6天前
|
机器学习/深度学习 人工智能 Cloud Native
助力 AI 技术共享,蚂蚁开源又一核心技术“因果学习系统 OpenASCE”
技术开源是蚂蚁集团的重要技术战略,我们希望通过开源建立起开放、包容的技术生态,让更多人共享技术红利。
助力 AI 技术共享,蚂蚁开源又一核心技术“因果学习系统 OpenASCE”
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
蚂蚁集团持续探索生成式AI,20篇论文入选AI顶会NeurlPS
NeurlPS官方数据显示,本届会议共有12343篇有效论文投稿,接收率为26.1%。蚂蚁集团20篇论文被收录。 据了解,蚂蚁此次入选的论文,覆盖计算机视觉、自然语言处理、图神经网络、图像处理等多个人工智能和机器学习领域的前沿主题。其中七成以上论文聚焦生成式AI在高速发展中遇到的一些挑战和难题。
蚂蚁集团持续探索生成式AI,20篇论文入选AI顶会NeurlPS
|
6天前
|
机器学习/深度学习 人工智能 算法
AI+组合优化 |机器学习顶会ICLR/ICML/NeurIPS'23最新进展-MIP求解篇(附原文源码)
本文梳理了ICLR 2023、ICML 2023、NeurIPS 2023有关机器学习+混合整数规划问题求解加速求解加速的研究成果,总共包含8篇文章。
141 0
|
6月前
|
人工智能 JavaScript Java
DevOps流水线运行出错怎么办?AI帮你智能排查
目前云效流水线Flow内Java构建、Node.js构建、Java单元测试、Node.js单元测试这4个步骤均接入了智能排查的能力。运行流水线时,如果在这4个步骤上出错,均可获得智能排查建议。
485 2
DevOps流水线运行出错怎么办?AI帮你智能排查
|
7月前
|
监控 jenkins Java
持续集成/技术交付全流程流水线工具的设计与落地
持续集成/技术交付全流程流水线工具的设计与落地

热门文章

最新文章