2、分布式训练基础:数据并行、模型并行、流水线并行、混合并行、通信原语

要诊断多机通信瓶颈,必须先理解分布式训练中“计算如何切分、梯度如何流动、通信发生在哪一层”。并行策略决定了通信原语的类型与频次,而通信原语又直接决定了带宽、延迟和同步开销。本节从并行维度出发,串联起 AllReduce、Broadcast、AllGather、ReduceScatter 四类核心原语,为后续瓶颈定位建立坐标系。

一、核心原理:四种并行策略的切分逻辑

数据并行(Data Parallel, DP)是最常见的策略:每张卡持有完整模型副本,输入数据被切分成不同 mini-batch。前向、反向在本地独立完成,反向结束后各卡持有局部梯度,必须通过 AllReduce 求平均,再各自更新参数。其瓶颈在于梯度体积与模型参数量成正比,通信量与卡数近似线性增长。

模型并行(Model Parallel, MP)把模型层内参数切分到不同设备。以矩阵乘法为例,权重按列切分后,各卡计算部分输出,再通过 AllGather 或 AllReduce 拼接结果。模型并行通信频繁、对带宽敏感,适合单层参数极大(如超大 Transformer 的 FFN)的场景。

流水线并行(Pipeline Parallel, PP)按层切分,不同设备负责不同 stage,通过 micro-batch 填充流水线。相邻 stage 之间只需点对点发送激活值(Send/Recv),通信量小,但存在流水线气泡(bubble),需要梯度累积与调度策略配合。

混合并行将上述策略组合:例如 DP + PP + TP(张量并行)。此时通信呈现分层结构——TP 组内高频 AllReduce,PP 组间点对点,DP 组间周期性 AllReduce。诊断时必须先确认“哪一层在通信”,否则容易误判。

四种并行策略与通信原语映射 数据并行 DP GPU0 GPU1 AllReduce 梯度 通信量 ∝ 参数量 每步同步一次 模型并行 MP W[:,0] W[:,1] AllGather / AllReduce 层内切分 通信频繁、带宽敏感 流水线并行 PP Stage0 Stage1 Send / Recv 激活 按层切分 通信量小、有气泡 混合并行 TP PP DP 分层通信 需逐层诊断 通信原语语义与典型用途 AllReduce 所有卡归约后结果相同 DP 梯度平均 Ring / Tree 实现 Broadcast 一对多分发 参数初始化、权重同步 根节点为源 AllGather 各卡收集所有分片 MP 输出拼接 输出完整张量 ReduceScatter 归约后按卡分片 ZeRO、FSDP 梯度分片 AllReduce 的一半

二、方法流程:从计算图到通信原语

一次数据并行训练迭代的通信流程可拆解为:

  1. 各卡读取本地 mini-batch,前向计算得到 loss;
  2. 反向传播得到本地梯度 grad_i;
  3. 执行 AllReduce,得到全局平均梯度 grad_avg = (1/N) * Σ grad_i;
  4. 各卡用相同梯度更新参数,保证副本一致。

在混合并行中,流程变为分层执行。以 DP+TP 为例,TP 组内先做 AllReduce 完成层内归约,DP 组间再做 AllReduce 完成跨副本平均。若使用 ZeRO 或 FSDP,梯度会被 ReduceScatter 分片,再通过 AllGather 收集参数,通信模式从“一次大 AllReduce”变为“多次小原语”。

关键判断:通信量估算公式——数据并行 AllReduce 通信量约为 2 × (N-1)/N × 参数量 × 字节数。当参数量为 7B、FP16 时,单次 AllReduce 约 28GB 量级,这是多机瓶颈的根源。

三、案例/场景:7B 模型在 8 机 64 卡上的通信画像

假设 7B 模型采用 DP=8、TP=8 的混合并行,每张卡持有约 0.875B 参数。TP 组内每层需 AllReduce,层数 32,每层通信量约 0.875B × 2B × 2 ≈ 3.5GB,累计约 112GB;DP 组间每步一次 AllReduce,通信量约 28GB。若使用 25Gbps 网络,TP 组内通信时间将远超计算时间,表现为 GPU 利用率周期性跌落。

# 典型 NCCL 日志片段(诊断线索)
NCCL INFO AllReduce: 28.0 GB in 1.82 s -> 15.4 GB/s
NCCL INFO AllGather: 3.5 GB in 0.41 s -> 8.5 GB/s
NCCL INFO ReduceScatter: 14.0 GB in 0.95 s -> 14.7 GB/s
# 若带宽远低于链路标称值,优先排查拓扑与拥塞

四、误区与复盘

常见误区实际原因纠正方向
“数据并行通信量固定”梯度压缩、ZeRO 分片会改变通信量按实际原语与分片策略重新估算
“模型并行一定比数据并行快”层内通信频次高,延迟敏感结合带宽与延迟共同评估
“流水线并行没有通信瓶颈”气泡与 stage 间激活传输仍占时间关注 micro-batch 数与调度
“AllReduce 和 AllGather 可互换”语义不同,输出形状与归约行为不同按计算图需求选择原语