“AGI 分布式训练”听起来像某种神秘工程,其实今天能被具体讨论的,是大规模基础模型如何在成百上千个加X器 上训练。AGI 仍是没有统一定义、也没有被证实实现的目标;分布式训练解决的是当前模型规模、数据规模和计算规模超出单机容量的问题。
把机器数量增加,并不会自动得到更强模型。通信、内存、数据、故障和数值稳定性会同时放大。真正的策略,是先判断瓶颈在哪里,再组合不同并行方式。
## 从一张显存账单开始
训练时显存不仅存模型参数,还要存梯度、优化器状态、激活值和临时通信缓冲。混合精度能减少部分占用,但优化器状态常以更高精度保存,不能只用“参数量乘两个字节”估算。
先测单卡在目标序列长度和微批量下的峰值显存,再记录计算吞吐与通信时间。若模型能放下但数据太多,数据并行可能足够;若模型本身放不下,就必须切分参数、层或张量。
训练预算还应包括检查点空间、失败重跑与评测。只计算理想状态下的 GPU 小时,会低估真实成本。
## 数据并行:复制模型,拆分样本
数据并行让每张卡保存一份模型,各自处理不同批次,然后同步梯度。它简单、扩展性好,是多数系统的第一层。
问题是模型、梯度和优化器状态会在每个数据并行进程中重复。Fully Sharded Data Parallel 会把参数、梯度和优化器状态分片,需要计算时再聚合相应参数,从而降低单卡常驻内存。
分片不是免费午餐。更细的分片带来更多 all-gather 与 reduce-scatter 通信。网络较慢或模块太小,通信会吞掉节省的内存收益。应通过自动包装边界、预取和通信重叠来寻找平衡。

## 张量并行:把一次矩阵运算拆开
当单层权重太大时,可以沿矩阵维度分给多张卡。每张卡计算局部结果,再通过集合通信合并。张量并行适合节点内部高速互联,因为几乎每层都可能通信。
张量并行度越高,单卡计算越少,但通信占比越大。不要为了让配置看起来“更分布式”而盲目增加。通常先在高速互联域内设置较小并行组,再用其他方式跨节点扩展。
注意力中的头、词表嵌入和输出层都可能有不同切分规则。框架虽然提供实现,模型结构仍要满足维度可整除等约束。
## 流水线并行:把层分成连续阶段
流水线并行把模型的不同层放在不同设备,每个微批量依次经过各阶段。它降低单卡需要保存的层数,但会出现流水线气泡:某些阶段等待输入或梯度时没有工作。
增加微批量可以填满流水线,却会改变有效批量、激活内存与优化行为。层数也不能只平均分配,因为嵌入、注意力、专家层和输出头的耗时不同。
应根据实测时间划分阶段,并持续观察最慢阶段。一个阶段慢 20%,整个流水线都可能跟着等待。
## 上下文并行与专家并行处理新瓶颈
长上下文让激活和注意力计算快速增长。上下文并行沿序列维度分摊工作,但需要交换键值或中间结果,对通信拓扑敏感。
混合专家模型每个 token 只激活部分专家。专家并行把专家放在不同设备,通过 all-to-all 路由 token。若路由严重不均,一些设备拥堵而另一些空闲,因此容量因子、辅助损失和负载监控同样重要。
NVIDIA 的 Megatron Core 公开列出数据、张量、流水线、专家和上下文等并行维度。工程实践通常把它们组合成多维并行,而不是寻找唯一万能策略。

## 并行组合要服从物理网络
同一服务器内的高速互联、机架间网络和跨数据中心链路差异很大。通信最频繁的张量并行应尽量留在高速域;数据并行可跨更大范围,但也需要稳定的集合通信。
规划时画出真实拓扑:每个节点有多少卡,链路带宽与延迟怎样,通信是否会与存储争用。理论上合理的并行网格,映射到错误物理位置后可能性能骤降。
用小规模真实模型测 all-reduce、all-gather、reduce-scatter 与 all-to-all,不要只看供应商峰值带宽。
## 检查点与恢复能力决定有效吞吐
大规模作业更容易遇到硬件故障、网络抖动和抢占。若每次失败都从头开始,峰值吞吐再高也没有意义。
分布式检查点应保存模型、优化器、学习率调度器、随机数状态和数据迭代位置。检查点格式最好允许在不同并行度下恢复,避免硬件规模变化后无法加载。
异步保存可以减少停顿,但必须验证文件完整性。定期做真实恢复演练,并记录恢复后的损失是否连续。没有被成功加载过的备份,不能算可靠检查点。
## 数值一致与可复现是排障工具
混合精度、不同集合通信顺序和异步执行会带来微小数值差异。它们可能无害,也可能在长训练中放大。
日常高吞吐模式不一定完全确定,但应保留小规模确定性配置,用于比较代码变更与定位回归。Megatron-LM 公开文档也提供确定性训练开关,并明确其用途是调试与复现实验。
监控不能只看损失。还要看每卡利用率、通信时间、内存余量、梯度范数、数据等待、专家负载和失败节点分布。
## 一套保守的扩展顺序
先在单卡跑通数据、损失和检查点。然后在单节点使用数据并行,确认结果与吞吐。模型放不下时引入 FSDP 或分布式优化器;单层仍过大再加张量并行;层数很深时评估流水线并行。
只有长上下文或专家路由成为明确瓶颈,再增加上下文或专家并行。每加一个维度,都重新测吞吐、显存、收敛与恢复。
分布式训练的目标不是使用最多并行名词,而是让更多计算真正转化为稳定学习。对所谓 AGI 训练同样如此:在目标尚不明确时,最可靠的进步仍来自可测量的模型、数据和工程实验。
## 参考资料