重新评估内存平衡的管道并行性:BPipe

💡 原文中文,约1800字,阅读约需5分钟。
📝

内容提要

本文综述大模型流水线并行训练技术,包括:TeraPipe在单序列内实现细粒度流水线,使GPT-3训练提速5倍;PipeDream-2BW通过双缓冲与权重合并策略提速最多20倍;GPipe将子层分布到不同加速器实现线性加速;PipeMare以异步训练提升硬件利用率;PipeTransformer动态调整并行策略提速2.4倍;BPT降低注意力与前馈网络内存需求,支持更长序列;广度优先流水线并行提速53%;以及万亿参数模型的混合并行方法。

🔎

延伸解读

流水线并行的内存优化主线

从 TeraPipe 到 PipeDream-2BW,再到 PipeMare 和 BPT,这些工作共同指向一个核心问题:如何在有限显存下训练更大模型。TeraPipe 在单序列内做细粒度流水,PipeDream-2BW 用双缓冲和权重合并减少内存占用,PipeMare 以异步训练提升利用率,BPT 则直接降低注意力与前馈网络的内存需求。读者可据此理解不同方案在内存与效率之间的取舍。

动态策略与静态划分的差异

GPipe 采用静态子层划分实现线性加速,而 PipeTransformer 强调动态调整流水线和数据并行策略,通过层冻结和资源分配适应训练过程。这种从静态到动态的转变,意味着系统需要更复杂的调度逻辑,但能更灵活地应对模型层冗余和硬件异构。文章未给出动态策略的额外开销数据,读者需注意其加速比是在特定条件下测得。

万亿参数训练的混合并行实践

文章提到一种结合并行、管道和数据并行的新方法,在 3072 个 GPU 上完成 1 万亿参数模型训练,每 GPU 吞吐达理论峰值 52%,并提升 10% 吞吐量。这表明超大规模训练已非单一并行策略所能胜任,而是需要权衡不同并行维度的通信与内存开销。不过,该结果依赖特定集群规模,读者不宜直接外推到小规模场景。

❓

Q&A

TeraPipe 是如何提升 GPT-3 训练速度的?

TeraPipe 在单个训练序列内执行细粒度流水线并行,并基于动态规划算法进行同步模型并行训练。在 48 个 p3.16xlarge 实例的 AWS 集群上,它将 1750 亿参数的 GPT-3 模型训练速度提高了 5.0 倍。

PipeDream-2BW 如何实现大模型训练加速?

PipeDream-2BW 通过新型流水线和权重梯度合并策略以及双缓冲器来加速训练。它能自动将模型划分到可用硬件资源上,考虑内存容量和互连拓扑等限制,可将大型 GPT 和 BERT 语言模型训练速度提高最多 20 倍,并保持相似精度。

GPipe 有什么特点,能带来怎样的加速?

GPipe 是一个管道并行库,它将不同子层序列分别放在不同的加速器上,从而高效地进行模型并行化,能够将各种网络扩展到巨大规模,并实现快速的线性加速。

PipeMare 如何提高硬件利用率?

PipeMare 采用异步训练方法,在保持与同步训练相当的模型质量的情况下提高硬件利用率,允许高效使用细粒度并行计算。在 ResNet 和 Transformer 网络上测试显示,异步训练允许 PipeMare 使用更少内存或更高管道利用率。

PipeTransformer 是如何动态调整并行策略的?

PipeTransformer 通过自动化管线处理和数据并行来动态调整管线和并行策略,实现层的冻结和资源分配,从而提升 Transformer 模型的多节点分布式训练效率,相比现有算法可提高 2.4 倍速度。

BPT 如何解决 Transformer 的内存需求问题?

Blockwise Parallel Transformer (BPT) 针对自注意力机制和前馈网络带来的内存需求,采用分块方法,使得训练序列长度可达原始 Transformer 的 32 倍,比之前的内存高效方法长 2 到 4 倍,并提升了语言建模和强化学习任务的性能。

广度优先流水线并行(Breadth-First Pipeline Parallelism)有什么优势?

广度优先流水线并行结合了流水线和数据并行,充分利用 GPU 和每个 GPU 上的小 batch size 特性,以及完全分片的数据并行性,降低了训练时间、成本和内存使用,实验结果显示训练速度提高了 53%。

如何训练万亿参数级别的模型?

通过结合并行、管道和数据并行等新的并行计算方法,并权衡不同方法,可使模型达到万亿参数级别。该方法提高了 10% 的吞吐量,具有可比的内存占用率,并在 3072 个 GPU 上完成了 1 万亿参数模型的训练,每个 GPU 的吞吐量达到理论峰值的 52%。

🏷️

标签

➡️

继续阅读