拓扑:胖树、轨道优化与并行映射
上一章讲了链路(RDMA),这一章讲链路如何组织成网络。同样一万卡,组网拓扑不同,同样的并行策略速度可以差 3–10 倍。核心问题只有一个:每种并行方式的通信伙伴是谁,就把他们放在网络的哪里。 放对了,热点流量走最宽的路;放错了,全集群为一个慢路径买单。
胖树:无阻塞的代价
Section titled “胖树:无阻塞的代价”训练集群的主流拓扑是胖树(fat tree):越靠近根,链路越粗(聚合带宽越大),保证任意两卡之间有不缩水的路径。
spine 层(核心交换) ╱ │ │ ╲ leaf leaf leaf leaf ← 每台 leaf 下挂若干节点 ╱│╲ ╱│╲ ╱│╲ ╱│╲ 节点 ×8 节点 ×8 ...关键参数是收敛比(oversubscription,下行带宽 ÷ 上行带宽):
| 收敛比 | 含义 | 代价 | 适合 |
|---|---|---|---|
| 1:1 | 任意两卡全速 | 交换机最贵 | 训练集群理想值 |
| 2:1 | 跨组带宽减半 | 便宜 30–50% | 通信模式可预测的集群 |
| 4:1+ | 跨组严重拥堵 | 便宜 | 推理/开发集群 |
训练集群的通信是"全集群同时全速"(同步训练的梯度一步一齐发),收敛比大于 1 时跨组流量直接拥堵。所以万卡以上的训练集群基本按 1:1 或接近 1:1 建——这是最贵但别无选择的部分。
轨道优化:为并行模式定制的布线
Section titled “轨道优化:为并行模式定制的布线”标准胖树对"任意到任意"无阻塞,但训练的通信模式根本不是任意的——它高度结构化。轨道优化(rail-optimized)利用这一点:
- 每节点 8 张卡,卡 属于轨道组(rail group)
- 节点内卡 0 只与所有其他节点的卡 0 通信量最大(数据并行的同 rank 梯度)
- 布线保证:同一 rank 跨节点的通信走同一台 leaf,路径最短
节点A: 卡0 卡1 卡2 ... 卡7 │ │ │ │ 每张卡固定连一台 leaf leaf0 leaf1 ... leaf7 ← 8 个轨道组 │ │ │ │节点B: 卡0 卡1 卡2 ... 卡7 卡0 们之间的梯度同步走 leaf0,一跳收益:数据并行的梯度同步(同 rank 之间)从"爬完整棵树"变成"过一台 leaf 一跳"。最优情况下跨节点通信只过一层交换——这就是现代 GPU 集群布线与教科书胖树的最大差异。
GB200 NVL72、TPU pod 走得更远:直接把互联域扩大(72 卡一个 NVLink 域 / 8960 芯片一个 pod),用更大的"节点"减少跨域需求。
并行映射:谁和谁放在一起
Section titled “并行映射:谁和谁放在一起”现在把混合并行的四种并行往拓扑上放。原则按通信量与频率排:
| 并行 | 通信模式 | 通信量/频率 | 应该放在 |
|---|---|---|---|
| 张量并行(TP) | 每层两次 all-reduce | GB 级 / 每层每 step | 节点内 NVLink 域 |
| 专家并行(EP) | all-to-all 每层 | GB 级 / 每 MoE 层 | NVLink 域内,跨机需 IB 直连 |
| 序列/上下文并行 | 注意力分块 all-gather | 中 / 每层 | 节点内或同 leaf 邻居 |
| 流水线并行(PP) | 层边界激活 | 小 / 每 step 几次 | 跨机甚至跨行(撑开成"流水线") |
| 数据并行(DP) | 梯度 all-reduce | 大但每 step 一次 | 跨轨道组,用重叠隐藏 |
一张 1024 卡、7B 模型的典型映射:
TP=8(节点内 NVLink)× PP=4(跨机撑流水线)× DP=32(跨轨道组) └── 每个流水线组 = 4 个节点 = 同一台 spine 下 └── 32 个 DP 组分布在 32 个轨道组上,同 rank 一跳可达映射错误的典型症状:TP 被放到了跨机上(每层通信 ×10 延迟)、DP 的同 rank 没有对齐轨道(梯度同步爬树)。并行策略没错,位置放错,速度照样差几倍——这是集群性能调优里最隐蔽的一类问题,因为 benchmark 看起来一切正常。
三个设计推论
Section titled “三个设计推论”一、拓扑与并行是共同设计的。 节点内 NVLink 域多大(8 卡 → 72 卡),直接改变并行策略的选择空间;网络设计者与训练框架必须协同。
二、通信重叠掩盖不了拓扑错误。 梯度重叠能隐藏跨轨道组的同步,但前提是流量真的走对了路。先看 NCCL 的拓扑选择日志(NCCL_DEBUG=INFO),再谈重叠。
三、容量规划看"最热的流"。 收敛比、leaf 容量、spine 容量的设计目标是:最大那股同时发出的流量恰好不拥塞。训练的最大流量通常是 DP 梯度同步 + PP 激活的同时叠加,按它做容量,而不是按平均值。
实践检查清单
Section titled “实践检查清单”- 画清楚自己的拓扑:每层交换机型号、收敛比、轨道组划分。
NCCL_DEBUG=INFO跑一次真实训练,核对每个集合通信选择的算法与路径(Ring 的环是否同轨道)。- 微基准:同节点 vs 同 leaf vs 跨 spine 的 all-reduce 带宽,确认梯度符合预期(跨层衰减应与收敛比一致)。
- 用真实并行映射跑端到端,对比"理想映射"与"随机映射"的 step time,差距大说明有流量放错位置。
- 监控按链路粒度(每 leaf 上行口),热点链路是拓扑问题的直接证据。
- 胖树的收敛比决定跨组带宽:训练集群的同步通信要求 1:1 或接近 1:1。
- 轨道优化按"同 rank 跨节点一跳"布线,数据并行梯度同步走最短路径。
- 并行映射原则:TP/EP 放 NVLink 域内,PP 撑开跨机,DP 跨轨道用重叠隐藏。
- 拓扑错误是隐蔽的性能杀手:并行策略正确但位置放错,速度差几倍且 benchmark 看不出。
- GB200 NVL72 / TPU pod 的本质:扩大互联域,减少跨域通信需求。
- RDMA:InfiniBand 与 RoCE — 上一章:链路本身
- 混合并行与配置方法论 — 映射的完整方法论
- NCCL 与集合通信算法 — 算法如何利用拓扑
- 张量并行 — 为什么它必须待在节点内