LLM高效训练利器:Hugging Face Accelerate与Axolotl的ND并行
在多 GPU 环境下训练大规模人工智能模型面临显著挑战,这主要源于各种并行策略之间复杂的相互作用。为了简化这一复杂过程,Hugging Face 的 Accelerate 等平台与 Axolotl 协作,集成了允许开发人员在其训练脚本中无缝组合不同并行技术的方法。这项创新旨在简化模型扩展,从配置基本的分布式设置到在庞大计算集群中协调复杂的多维并行。
多 GPU 训练的核心是几种基本的并行策略,每种策略都旨在解决特定的扩展瓶颈。
数据并行 (DP) 是最直接的方法,其中整个模型及其梯度和优化器状态在每个 GPU 上复制。数据批次随后在这些设备之间均匀分配,并在更新模型参数之前同步梯度。虽然这与单设备训练相比显著提高了吞吐量,但其主要限制是要求整个模型必须适应单个 GPU 的内存。
当模型对于单个设备来说变得过大时,完全分片数据并行 (FSDP) 提供了一个解决方案。受 DeepSpeed 的 ZeRO-3 等技术的启发,FSDP 将模型的权重、梯度和优化器状态分片到多个 GPU 上。每个设备仍然接收一部分数据批次。与 DP 不同,FSDP 避免复制整个模型;相反,它只在正向或反向传播之前收集特定层所需的权重,然后重新分片。这种方法以增加通信开销为代价,实现了显著的内存节省。虽然 FSDP 可以在多个 GPU 甚至跨多个节点(托管多个 GPU 的机器)上扩展,但其效率可能会随着节点间通信速度的降低而下降,尤其是在跨整个设备网络进行分片时。
张量并行 (TP) 是一种模型并行形式,解决了单个模型层极其庞大的挑战。TP 不复制或分片整个模型,而是将大型线性层(在 Transformer 模型中很常见)拆分到不同的设备上。每个设备只计算矩阵乘法的一部分,同时接收相同的数据批次。这创建了静态内存分区,提供了与 TP 组大小成比例的恒定内存减少。TP 对于在单个节点内(其中有高带宽 GPU 间通信,例如 NVLink)分配计算和内存非常有效。然而,由于频繁的激活同步要求,TP 通常不建议用于跨多个节点或通过 PCIe 等较慢连接进行扩展。
随着大语言模型 (LLM) 的兴起及其对越来越长序列长度(有时达到数十万甚至数百万个 token)的需求,新的内存挑战随之而来。注意力机制作为 Transformer 的核心组件,其内存消耗与序列长度呈二次方增长,导致激活的内存消耗过高。上下文并行 (CP) 通过将输入序列分片到 GPU 来解决这个问题。每个设备只处理完整上下文的一部分,计算注意力矩阵的一小部分。为了确保正确的注意力计算(这需要访问完整序列),会采用 RingAttention 等技术,在设备之间循环密钥和值矩阵。这使得每个查询都能针对整个序列计算注意力分数,同时分配内存和计算负载。
对于最严苛的训练场景,尤其是那些跨越多个节点的场景,开发人员可以将这些策略组合成“ND 并行”,利用计算集群的二维视图:一个轴上的快速节点内通信和另一个轴上的较慢节点间通信。
混合分片数据并行 (HSDP) 结合了 FSDP 和 DP。它在每个节点内部应用 FSDP,利用更快的节点内链接进行内存密集型分片,同时在节点之间使用 DP 复制模型并同步梯度。这优化了大型多节点设置的通信开销。
结合完全分片数据并行与张量并行 (FSDP + TP) 涉及使用 FSDP 跨节点分片模型,并使用 TP 在节点内分片。这种强大的组合可以减少 FSDP 延迟,分发对于单个设备来说过大的层,并可能减少全局批次大小。类似地,可以使用完全分片数据并行与上下文并行 (FSDP + CP),尽管不那么常见,以在超长序列长度与 FSDP 结合时进一步减少内存使用。
为了获得最终的灵活性和规模,混合分片数据并行与张量并行 (HSDP + TP),通常称为 3D 并行,创建了一个分层结构。数据并行在节点组之间复制模型,FSDP 在每个组内分片模型,TP 在每个节点内拆分单个层。这为在海量训练环境中平衡内存使用和吞吐量提供了最大的适应性。
除了选择正确的并行策略外,还有几个实际考虑因素对于优化分布式训练至关重要。对于 FSDP,启用 CPU RAM 高效加载和分片状态字典检查点对于处理单个设备内存无法容纳的模型至关重要。有效批次大小显著影响训练稳定性和吞吐量,它由微批次大小、梯度累积步数和数据并行世界大小决定。随着有效批次大小随并行性增加,学习率应按比例缩放以保持稳定性。最后,梯度检查点通过用计算换取内存来提供额外的内存节省;它在反向传播期间选择性地重新计算中间激活,以牺牲适度的 20-30% 训练时间增加为代价,将激活内存减少 60-80%。这项技术与所有并行策略无缝协作,当内存限制持续存在时,它是一个有价值的工具。
最终,最佳配置通常需要实验,因为内存、计算和通信开销之间的理想平衡在很大程度上取决于特定的模型、数据集和硬件设置。这些先进的并行技术是不可或缺的工具,它们正在推动大规模 AI 模型开发的边界。