UniAP:南京大学提出新型分布式训练算法,大模型训练加速高达3.8倍

南京大学提出UniAP算法,可联合优化层内和层间并行策略,大模型训练最高加速3.8倍,并适配国产AI计算卡。

原文标题:CVPR Oral | 南京大学李武军教授课题组推出分布式训练算法UniAP,大模型训练最高加速3.8倍

原文作者:机器之心

冷月清谈:

南京大学李武军教授课题组提出了一种高效能分布式训练算法 UniAP,旨在解决大模型训练成本高昂和分布式训练复杂的问题。UniAP 能够联合优化层内和层间并行策略,自动搜索高效的分布式训练方案。实验结果表明,UniAP 相比现有方法最高可加速 3.8 倍,并能有效适配国产 AI 计算卡。该算法降低了大模型训练的门槛,即使不熟悉分布式训练的用户也能轻松使用大规模算力,同时为国产 AI 基础设施的普及提供了技术支持。

怜星夜思:

1、UniAP 算法声称能让不熟悉分布式训练的人也能轻松上手大模型训练,你觉得对于没有分布式训练经验的人来说,最难的点是什么?除了超参数设置不合理,还有哪些因素会阻碍他们成功训练大模型?
2、文章提到 UniAP 算法可以降低大模型训练成本,加速训练过程。那么,如果让你来设计一个降低大模型训练成本的方案,除了优化分布式训练算法之外,你还会考虑哪些方面?
3、UniAP 算法适配了国产 AI 计算卡,你认为这对于国产 AI 产业的发展有什么意义?

原文内容


李武军教授为通讯作者,硕士生林昊(已毕业,现工作于阿里巴巴)、吴轲、李杰为共同第一作者,博士生李俊为参与作者。

训练成本高昂已经成为大模型和人工智能可持续发展的主要障碍之一。


大模型的训练往往采用多机多卡的分布式训练,大模型的分布式训练挑战巨大,即使硬件足够,不熟悉分布式训练的人大概率(实验中验证有 64%-87% 的概率)会因为超参数设置(模型怎么切分和排布、数据怎么切分和排布等)不合理而无法成功运行训练过程。


此外,不熟悉分布式训练的人在碰到大模型训练慢时容易只想到增加 GPU 硬件等横向拓展(scale-out)方法,而忽略了分布式训练算法的纵向拓展(scale-up)作用。


实际上,分布式训练算法会极大地影响硬件的算力利用率。高效能分布式训练算法具有高算力利用率。用同样的硬件算力训练同一个模型,高效能分布式训练算法会比低效能分布式训练算法速度快,最高可能会快数倍甚至数十倍以上。


也就是说,训练同一个模型,高效能分布式训练算法会比低效能分布式训练算法成本低,最高可能会节省数倍甚至数十倍以上的算力成本。很多已有的分布式训练算法的效能较低,甚至可能导致机器和 GPU 卡越多、训练速度越慢的结果。


南京大学计算机学院李武军教授课题组研发了高效能分布式训练算法 UniAP,并基于 UniAP 研发了相应的大模型分布式训练平台和框架



  • 论文标题:UniAP: Unifying Inter- and Intra-Layer Automatic Parallelism by Mixed Integer Quadratic Programming

  • 论文地址:https://arxiv.org/abs/2307.16375


UniAP 是首个能实现层内并行策略(张量并行等)和层间并行策略(流水线并行等)联合优化的工作。给定模型和硬件平台,UniAP 能够通过自动搜索找到高效能的分布式训练方案,既解决了效率和成本问题(实验中,比已有的最好方法最高快 3.8 倍,比不采用并行策略优化的算法最高快 9 倍),也解决了很多人在大模型分布式训练时因为超参数设置(模型怎么切分和排布、数据怎么切分和排布等)不合理而无法成功运行训练过程的问题,即易用性问题。


此外,还实现了 UniAP 跟国产 AI 计算卡的适配。相关工作为大模型训练的降本增效提供了核心技术、(国产)平台和框架。


论文被 CVPR 2025 录用为 Oral(所有投稿论文的 0.7%,所有录用论文的 3.3%)。


方法简介

并行策略的设置是影响分布式训练算法效能的重要因素。当前主流的并行策略包括流水线并行、数据并行、张量并行、全分片数据并行等四种并行策略。这些并行策略可以被分成以下两类:

  • 层内并行策略:仅切分模型的层内张量,包括以数据并行、张量并行、全分片数据并行等为代表的并行策略;

  • 层间并行策略:仅切分模型的层为多个互斥子集,包括流水线并行等并行策略。

基于已有的并行策略,大量的研究工作集中于并行方法的设计。这些并行方法可以按照是否需要用户手动指定并行策略划分为两类:手动并行方法和自动并行方法。传统的手动并行方法不仅耗时耗力,而且难以适应复杂的硬件环境。


而现有的自动并行方法存在的问题是它们要么只考虑层内或层间两类并行策略中的一类并行策略,要么把两类并行策略做分阶段优化而不是联合优化,求解得到的并行策略的训练效率存在提升空间。


UniAP 使用混合整数二次规划进行建模,实现对层内与层间并行策略的联合优化。这种联合优化使得 UniAP 有更大的策略探索空间。


UniAP 的架构图如下:



UniAP 首先对硬件和模型进行性能评估。然后,UniAP 会根据性能评估的结果和模型的计算图构建代价模型。根据代价模型和模型的计算图,UniAP 将优化问题建模为一个混合整数二次规划问题并进行优化。最后,UniAP 会将优化结果由向量转化成以计算图形式表达的并行计划,交由已有深度学习平台(如 PyTorch)进行训练。


性能评估和代价模型


因为自动并行框架要求在执行分布式训练前优化并行策略,所以框架需要对分布式训练的性能和开销进行模拟,再在模拟的结果上进行优化。


因此,对环境和任务进行性能评估是自动并行框架的重要组成部分。具体地,在性能评估部分,UniAP 将收集硬件和模型的性能信息,如 P2P 通信效率、All-Reduce 集合通信效率、模型每一层的前向计算的时间开销和显存开销等。


出于时间效率考虑,一个自动并行框架只能完成有限的性能评估任务,然后根据性能评估的结果构建代价模型。UniAP 的代价模型分为时间代价模型和显存代价模型。前者用于估计模型采用不同并行策略的时间开销,包括计算时间开销和通信时间开销;后者用于估计模型采用不同并行策略的显存占用开销。


混合整数二次规划形式


UniAP 的混合整数二次规划的目标是设定并行策略,使得训练中每次迭代所消耗的时间(Time-Per-Iteration,简称 TPI)最小化。


设模型的计算图为 图片。层间并行策略可以由流水线的度 pp_size、流水线的微批量数量 𝑐,计算图的层 𝑢 是否放置在第 𝑖 级流水线上的放置策略图片表示,图片;层内并行策略可以由层 𝑢 的层内并行策略集合图片和层 𝑢 是否选择第 𝑘 个层内并行策略的图片表示,图片


为方便描述,需要引入如下额外记号:对于一个给定的层图片图片表示它的第 𝑘 个层内并行策略的前向传播和反向传播时间代价之和,图片代表了该层的第 𝑘 个层内并行策略在训练中占用的峰值显存量。对于一个给定的边图片,如果该边的源点和终点位于同一个流水线的计算阶段中,那么它的通信代价为图片。否则,如果该边的源点和终点位于不同流水线的计算阶段中,那么它的通信代价为图片。此处,图片均由 UniAP 的代价模型给定,在 UniAP 算法的优化过程中始终为常量。


流水线阶段内的时间开销:流水线某个阶段内部的时间开销由该流水线阶段每一层内部的时间开销和层间通信时间组成。记流水线的第 i 个阶段在一个微批量上的时间代价为图片图片。可建立如下约束(原论文公式 3):


图片


跨流水线阶段的时间开销:跨流水线阶段时间开销由通信开销组成。记跨第 i 个流水线阶段和第 i+1 个流水线阶段的时间开销为图片图片。可建立如下约束(原论文公式 4):


图片


式中图片指示计算图中相邻的层 𝑢 和层 𝑣 是否放置在相邻的计算阶段上,图片则指示了层 𝑢 和层 𝑣 之间的通信代价。


目标函数:有了图片图片,就可以得到图片,形式根据不同的流水线调度而有所不同,以 GPipe 调度为例,则目标函数为(原论文公式 2):


图片


详细解释可见原文 3.3.1。


显存约束:因为分布式机器学习系统要求在训练深度学习模型时不能发生显存溢出(Out-of-Memory,简称 OOM)异常,所以 UniAP 为混合整数二次规划表达式引入显存约束。对于同构集群,因为所有工作设备均同构,所以它们的显存容量相同,记作 𝑚。UniAP 方法的显存约束如下(原论文公式 5):


图片


除显存约束外,还需要建立流水线保序约束、放置策略约束、策略选择约束。详情可见原论文。


统一优化过程


根据混合整数二次规划的表达式,现有的优化器可以直接解得给定流水线的度 pp_size 和微批量数量 𝑐 的情况下最优的并行策略组合。但因为 pp_size 和 c 是流水线并行的超参数,所以 UniAP 也需要统一优化这两个变量才能求得最优的并行策略组合。UniAP 通过枚举这两个变量来解决这个问题,算法伪代码如下(原文算法 1):



实验结果

论文在 4 种典型的硬件环境(NVIDIA GPU V100、TITAN XP、A100,和国产卡海光 DCU),5 种不同的基于 Transformer 的模型(BERT、T5、ViT、Swin-Transformer、Llama)上进行实验。

首先是在 NVIDIA GPU 上和其他自动并行方法(Galvatron 和 Alpa)的对比(原论文表 1):



其中 ENVA 是一台 8 卡 V100,ENVB-8 是两台 4 卡 TITAN XP,ENVC 是一台 8 卡 A100。可以发现,在这 3 种硬件环境下,UniAP 的吞吐量均不差于两个 baseline,最大的提升达到 3.8 倍;而 UniAP 的策略优化时间更是远远小于两个 baseline,最大缩短 107 倍。


然后是在国产 AI 计算卡上和手动并行方法的对比。选取的 baseline 是国际主流的大模型训练框架 Megatron 和 DeepSpeed。两个框架中均有分布式训练的相关参数需要设置,实验中,枚举所有可能的设置,每个设置实际跑一定的轮次记录吞吐量,选取性能最好的做为吞吐量结果,选取整个过程的时间为策略优化时间。结果如下(原论文表 2):



其中硬件设置是 8 个 4 卡 DCU 节点。从表中可见,UniAP 找到了所有可行策略中的最优解,同时相较于手动暴力搜索,大大节约了策略优化时间。


在可拓展性方面,论文在最大 64 卡的集群上进行实验,验证了近线性拓展性(原论文图 5 和表 4):



另外,论文还通过对实验中 Megatron 的策略空间的分析深度探讨了自动并行的必要性(原论文表 3):



从表中可以看出,对于一个没有分布式训练经验的人来说,从所有支持的并行策略中随机选择一个,有 64.1%(41/64)到 87.5%(42/48)的概率会因为策略选择不合理而导致模型无法成功运行训练过程(出现显存溢出等);即使选择到了能成功运行训练过程的策略,最快的策略和最慢的策略间的速度最大相差了 2.01/0.22≈9 倍。更多讨论可见原文。


全文小结

UniAP 具有如下优点:

高效性:在相同硬件条件下,UniAP 训练速度比已有最好方法最高快 3.8 倍,即成本降低 3.8 倍; 

易用性:用户无需理解流水线划分、张量分片等复杂概念,UniAP 平台能自动生成最优方案,自动规避 64%-87% 的无效策略,让没有分布式训练经验的用户,也能像使用单卡训练模型般轻松使用集群的大规模算力; 

适配国产 AI 计算卡:已适配海光 DCU 等国产 AI 计算卡,为提升国产卡的效能和易用性提供了潜在的解决方案,有望加速国产 AI 基础设施的普及进程。

© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:liyazhou@jiqizhixin.com

意义太大了!之前国产卡生态不行,很大程度就是软件适配跟不上。现在有了UniAP这种能提升国产卡效率的工具,就能吸引更多人用国产卡训练大模型,形成正向循环。而且这也能倒逼国产卡厂商在硬件上不断改进,追赶英伟达。

适配国产AI卡是必然趋势,意义在于:1. 降低对国外技术的依赖,保障信息安全;2. 促进国产AI芯片的迭代升级,提升竞争力;3. 为国内企业提供更多选择,降低AI应用成本;4. 刺激国内AI生态的繁荣发展。

光靠算法还不够,还得从硬件和数据下手。硬件上,可以考虑用更便宜的卡,或者租用云服务器的idle算力。数据上,可以尝试数据压缩、知识蒸馏等方法,减少模型需要处理的数据量。当然,模型结构本身也很重要,可以考虑用更 efficient 的模型结构。

除了算法,我觉得还可以考虑从以下几个方面入手:1. 选择合适的云平台,利用其提供的优化工具和服务;2. 采用自动混合精度训练,减少计算量;3. 使用checkpoint技术,避免训练中断导致的数据丢失;4. 建立完善的实验跟踪系统,方便复现和分析实验结果。

谢邀,我觉得这对于国产AI产业的意义在于:1. 解决了国产AI芯片的生态短板问题;2. 提高了国产AI芯片的利用率和性能;3. 为国产AI芯片在大模型训练领域提供了更多机会;4. 有助于构建自主可控的AI技术体系。

我觉得最难的是debug。单卡跑,代码有问题直接就报错了,改起来也方便。分布式训练,动不动就是OOM,或者卡死在那里,错误信息也不明确,根本不知道是哪里的问题,感觉无从下手。而且分布式环境的搭建,各种依赖关系,也是个坑。

降低训练成本是个系统工程,不能只盯着算法。我觉得可以考虑以下几个方面:1. 优化数据pipeline,减少IO开销;2. 使用混合精度训练,降低显存占用;3. 探索模型剪枝和量化技术,减小模型大小;4. 充分利用pre-trained模型,进行fine-tuning,避免从头训练。

除了超参数,数据预处理也是个大坑,尤其数据量一大,各种格式不统一、脏数据就都冒出来了。另外,硬件环境也很重要,NCCL通信啥的要是没配好,速度根本起不来。还有就是对模型本身的理解要透彻,不然根本没法针对性地调整并行策略。

谢邀,对于新手来说,我觉得最难的还是概念的理解。像数据并行、模型并行、流水线并行这些概念,光看文档根本不够,得实际操作才能明白。而且不同并行策略之间的trade-off也很难把握。此外,监控训练过程也很重要,得学会看各种指标,才能及时发现问题。