始智AI wisemodel.cn开源社区
MegaScale是字节跳动开发的一个高效稳定的生产系统,用于在万卡级别上进行大规模语言模型的训练。它通过一系列优化措施,包括模型和优化器设计、计算与通信重叠、算子优化等,提高了训练效率和稳定性,并具备深入的监控和诊断能力,显著提升了模型FLOPs利用率,达到了55.2%,比Megatron-LM提高了1.34倍。Model FLOPs Utilization,即模型算力利用率, 是指模型一次前反向计算消耗的矩阵算力与机器算力的比值)
背景与挑战:
大型语言模型(LLMs)在AI领域的重要性日益增加,它们在多个领域展现出巨大潜力。
训练LLMs需要巨大的计算资源,模型和训练数据的规模是决定模型能力的关键因素。
将LLM训练扩展到数万个GPU带来了前所未有的挑战,包括训练效率和稳定性问题。
MegaScale是字节跳动使用10000块卡试错出来的一套大规模模型训练系统,它包括了模型分布式,通信,容灾以及监控等工具。用这个系统,不论啥错误10分钟就可以找到,15分钟就可以实现上一个检查点重启。MegaScale是一个庞大的系统工程,需要对每个模块进行抽象和精密设计才会有这个系统。有点强!不过用一句话可以概括就是:“能并行的地方基本都并行了~ 容灾日志等也都比较完善,之后可以一键训练了。
MegaScale系统设计:
MegaScale是一个专门为LLM训练设计的系统,采用全栈方法,共同设计算法和系统组件。
系统包括模型块和优化器设计、计算与通信重叠、操作符优化、数据管道和网络性能调优。
训练效率优化:
LLMs的训练特点是其庞大的模型架构和大规模数据集,需要并行策略来分布训练过程。
数据并行、流水线并行、张量并行和序列并行是训练LLMs的并行策略。
网络性能调优:
设计了定制的网络拓扑,减少了ECMP哈希冲突。
实现了基于Swift和DCQCN的混合拥塞控制算法,提高了网络吞吐量。
调整了NCCL的重传超时参数,以实现快速恢复。
故障容忍与稳定性:
开发了一系列诊断工具,用于监控系统组件和事件,以实现深入的可观察性。
实现了一个健壮的训练框架,用于自动故障定位和恢复。
设计了心跳消息和实时异常检测机制,以及快速检查点和恢复过程。
MegaScale 优化策略
下边的MegaScale 所采取的一系列优化策略,涉及到了算法,网络通信,故障容忍与恢复等多个方面。
算法优化
1.Parallel transformer block
采用这种方法,attention block 和 MLP block 的计算可以并行执行,从而减少计算时间。先前的研究表明,这种修改不会降低具有数千亿参数的模型的质量。如下图所示。
2.Sliding window attention (SWA)
滑动窗口注意力机制通过在输入序列的每个标记周围使用固定大小的窗口,将计算复杂度从O(s×s)降低到O(s×w),其中w远小于s,从而在保持准确性的同时显著提高了训练效率。
3. LAMB optimizer
LAMB优化器使得MegaScale能够在不损失准确性的前提下将batch size扩大4倍,有效减少了pipeline bubbles,提升了大规模训练的效率和稳定性。
集合通信优化
1. Overlapping in data parallelism
MegaScale在3D并行中通过基于model chunks的重叠计算和优先级通信策略,优化了带宽利用和计算效率。
2.Overlapping in pipeline parallelism
MegaScale通过interleaved 1F1B调度方法实现了在热身和冷却阶段发送和接收操作与计算的重叠执行,在稳定阶段实现了异步的发送和接收操作,从而提高了整体的训练效率和通信性能。
3.Overlapping in tensor/sequence parallelism
MegaScale在张量/序列并行中通过融合all-gather和reduce-scatter操作到FFN路径的并行线性层,并采用流水线处理GEMM内核,有效隐藏了通信开销并优化了GPU内存使用。
Efficient Operators
1.attention part:采用了FlashAttention-2
2.LayerNorm 和 GeLU:将这些 kernel fuse 在一起,我们减少了启动多个 kernel 所带来的开销,并有助于优化内存访问模式,从而实现更好的性能。
3.并有助于优化内存访问模式,从而实现更好的性能。
Data Pipeline
1.MegaScale通过异步数据预处理技术,在GPU同步梯度时提前开始下一步数据的预处理,有效隐藏了预处理时间,减少了训练过程中的等待开销。同时,系统通过消除冗余的数据加载器,并采用两层tree-based方法,使单个数据加载器将数据读入共享内存供多个GPU使用,显著提升了数据传输效率并减少了磁盘I/O竞争。
Collective Communication Group Initialization
MegaScale通过优化NCCL通信组初始化流程,将涉及2048个NVIDIA Ampere GPU的初始化时间从1047秒大幅缩短至5秒,并使得在超过10,000个GPU上的初始化时间控制在30秒以内。
Network Performance Tuning
字节跳动的数据中心网络利用基于Broadcom Tomahawk 4芯片的交换机和CLOS拓扑结构,为超过10,000个GPU提供高达25.6Tbps的总带宽和平衡的上行下行链路,确保了高带宽和低延迟的节点间通信。
容灾机制
随着训练集群规模扩大到数万个 GPU,软件和硬件故障几乎是不可避免的。为了实现自动故障识别和快速恢复,在 LLM 训练中引入了一个强大的训练框架,实现了最小人为干预和对正在进行的训练任务几乎没有影响的容错能力。
诊断机制
在自检诊断中,执行时间和准确性之间存在权衡。延长诊断持续时间可能会对有效的训练时间产生不利影响,而高误报率可能会导致对实际上正常工作的机器进行不必要的排除。字节部署了一套轻量级的诊断测试,能够有效覆盖在实际训练过程中遇到的广泛硬件和软件故障。
大模型训练
论文在大模型训练经验的部分,描述了 MegaScale 的部署和运营经验。为LLM(大型语言模型)训练构建了专用的 A I集群。截至2023年9月,在生产环境中用于 LLM 训练的最大 AI 集群包含超过10,000个NVIDIA Ampere GPU。字节还正在基于最新的 NVIDIA Hopper GPU 构建大规模集群,因为NVIDIA正在加快生产进度。
训练结果
175B 模型的强扩展训练性能。在使用 3072 到 12288 个GPU进行训练时,将 batch size 设置为 6144。对于 256 到 1024 个GPU,由于 GPU 内存限制,我们将批量大小减小到 768。在此报告了训练 300B tokens 所需的训练时间。MFU 列中括号中的数字表示相较于Megatron-LM 的 MegaScale 加速比。
和Megtron比了一下,表明提出的MagaScale框架的优秀,总结下来就是吞吐量token增加了,训练时间减少了,MFU(模型算力利用率)增加了。
Megatron-LM 和 MegaScale 在 530B 模型上的弱扩展训练性能,其中 batch size 与 GPU 数量成比例地进行了缩放。
和Megtron相比损失几乎一样,batch变为4倍,损失也是几乎一样。不任何错误10分钟就可以找到,15分钟就可以实现上一个检查点重启。
消融实验
MegaScale通过一系列优化技术,包括算法改进、通信重叠、操作符高效化、数据流水线优化和LAMB优化器的应用,在256个GPU上训练175B模型时将MFU提高了17.6%,显著超越了原始的Megatron-LM基准。
实验结论:
MegaScale在使用 12,288 个GPU训练175B参数的LLM模型时,实现了55.2%的模型FLOPs利用率(MFU),比Megatron-LM提高了1.34倍。
实验结果表明,MegaScale的优化技术在提高训练性能方面非常有效。通过算法技术、通信优化、高效运算符以及其他优化措施的应用,MegaScale能够显著提高MFU并加速训练过程。
总结,上述介绍深入研究了 MegaScale 的设计、实现和部署。MegaScale 是一个用于在超过10,000 个GPU的规模上进行 LLM(Large Language Model)训练的生产级系统。MegaScale利用算法和系统的协同设计来优化训练效率,强调在整个训练过程中需要容错能力,并实现了一个定制的鲁棒训练框架来自动定位和修复故障。提供了一套全面的监控工具,用于对系统组件和事件进行深入观察,有助于识别复杂异常的根本原因。
https://arxiv.org/abs/2402.15627
参考内容链接
https://zhuanlan.zhihu.com/p/684712727
https://zhuanlan.zhihu.com/p/684619370
编辑:成蕴年
wisemodel相关
系统升级
领取专属 10元无门槛券
私享最新 技术干货