Skip to content

通信账:All-Reduce 随规模增长的带宽模型 ​

大模型训练里最容易被低估的账是通信:梯度同步每个 step 都要做,通信时间随规模增长而增长,算力却只随卡数线性增长——两者赛跑,谁赢决定扩展效率。本文把 All-Reduce 的带宽模型推导清楚,方法框架参考开源书稿《深入理解 AI Infra》(Apache-2.0),公式与算例为本站自行推导整理。

1. 一次 All-Reduce 要搬多少数据 ​

训练中每步的梯度全规约(All-Reduce):把 N 张卡各自算出的梯度加起来再广播回去。数据量 = 模型参数量 × 精度字节数:

Grad_bytes=Nparams×bytes_per_param×2(sum + broadcast 的往返口径按算法不同)Grad\_bytes = N_{params} \times bytes\_per\_param \times 2 \quad(\text{sum + broadcast 的往返口径按算法不同})

70B FP16 模型:梯度本身 140 GB,全规约要在所有卡之间交换这 140 GB(按消息总传输量计)。

2. 环状算法的带宽模型 ​

NCCL 默认 ring 算法把 N 张卡串成环,每张卡只和自己的邻居通信。关键结论:

Tallreduce=2×(N−1)N×MsgBW,busbw=BW×2(N−1)NT_{allreduce} = \frac{2 \times (N-1)}{N} \times \frac{Msg}{BW}, \quad busbw = BW \times \frac{2(N-1)}{N}

  • N 张卡、单链路带宽 BW、消息 Msg;
  • 环越大,有效带宽 busbw 越接近 2×BW(理论上限);
  • 所以 8 卡机内 ring 的 busbw ≈ 1.75×单链路,不是 8 倍——这是新手最容易算错的账。
卡数 Nbusbw/BW说明
21.0×双向对传
41.5×
81.75×单机上限
16(跨 2 节点)1.875×受限于最慢链路(机间 IB)

3. 为什么大模型训练必须上 IB ​

梯度 70B×2 字节 = 140 GB/step。若用 25G 以太(≈3 GB/s)做参数面:

T≈2×(N−1)N×140 GB3 GB/s≈90 s/stepT \approx \frac{2 \times (N-1)}{N} \times \frac{140\ GB}{3\ GB/s} \approx 90\ s/step

而训练一个 step 的计算时间通常只有几秒到几十秒——通信直接吃掉大部分时间,扩展效率趋近于零。换成 4×200G HDR IB(单节点聚合 800Gbps ≈ 100 GB/s):

T≈1.75×140 GB100 GB/s≈2.5 sT \approx 1.75 \times \frac{140\ GB}{100\ GB/s} \approx 2.5\ s

判断:网络选型的量化标准不是"快不快",是通信时间 vs 计算时间的比值——通信占比 >30% 就该优化拓扑或换网。

L40S 机内 P2P 走 PCIe Gen4×16(≈32 GB/s 单向)。8 卡 allreduce:

busbwL40S≈1.75×32 GB/s≈56 GB/sbusbw_{L40S} \approx 1.75 \times 32\ GB/s \approx 56\ GB/s

对比带 NVLink 的 H 系列机内(≈300-900 GB/s),差一个数量级。这就是 L40S 无 NVLink 一文里"单机通信不是卖点"的量化出处:梯度全规约在 L40S 上机内通信就是瓶颈。

5. 可复算 Python 函数 ​

python
def allreduce_time(msg_gb, bw_gbps, n, comm_overhead=0.1):
    """环 all-reduce 耗时:busbw = 2(n-1)/n × BW;返回秒数与通信占比示例"""
    busbw = bw_gbps * (2 * (n - 1) / n) / 8        # GB/s
    t = 2 * (n - 1) / n * msg_gb / busbw * (1 + comm_overhead)
    return t

allreduce_time(msg_gb=140, bw_gbps=800, n=48)      # 4×200G IB 聚合
# ≈ 0.45 s(含 10% 协议开销;实际受 SM/拓扑影响,见 03 章实测)

6. 交付清单 ​

  1. 先算"通信账"再选网:通信时间/计算时间 < 30% 可接受,否则上 IB 或改并行策略;
  2. 机内通信按 PCIe/NVLink 实际带宽算(L40S 用 ~32 GB/s,不是规格"高速");
  3. 实测 busbw 与模型对比:偏离 >20% 查拓扑局部性(见 Rail 拓扑)与 SHARP 是否生效;
  4. 大模型训练梯度账固定后,用 训练资源账 与通信账联合做扩展性预估。

本文为本站自行推导整理,方法框架参考开源书稿《深入理解 AI Infra》(Apache-2.0);具体版本号与实测数据以现场为准。

AI-HPC 智算超算专家 · Contact: openaihpc@gmail.com