跳转到内容

拓扑:胖树、轨道优化与并行映射

上一章讲了链路(RDMA),这一章讲链路如何组织成网络。同样一万卡,组网拓扑不同,同样的并行策略速度可以差 3–10 倍。核心问题只有一个:每种并行方式的通信伙伴是谁,就把他们放在网络的哪里。 放对了,热点流量走最宽的路;放错了,全集群为一个慢路径买单。

训练集群的主流拓扑是胖树(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 张卡,卡 ii 属于轨道组(rail group)ii
  • 节点内卡 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),用更大的"节点"减少跨域需求。

现在把混合并行的四种并行往拓扑上放。原则按通信量与频率排:

并行通信模式通信量/频率应该放在
张量并行(TP)每层两次 all-reduceGB 级 / 每层每 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 看起来一切正常。

一、拓扑与并行是共同设计的。 节点内 NVLink 域多大(8 卡 → 72 卡),直接改变并行策略的选择空间;网络设计者与训练框架必须协同。

二、通信重叠掩盖不了拓扑错误。 梯度重叠能隐藏跨轨道组的同步,但前提是流量真的走对了路。先看 NCCL 的拓扑选择日志(NCCL_DEBUG=INFO),再谈重叠。

三、容量规划看"最热的流"。 收敛比、leaf 容量、spine 容量的设计目标是:最大那股同时发出的流量恰好不拥塞。训练的最大流量通常是 DP 梯度同步 + PP 激活的同时叠加,按它做容量,而不是按平均值。

  1. 画清楚自己的拓扑:每层交换机型号、收敛比、轨道组划分。
  2. NCCL_DEBUG=INFO 跑一次真实训练,核对每个集合通信选择的算法与路径(Ring 的环是否同轨道)。
  3. 微基准:同节点 vs 同 leaf vs 跨 spine 的 all-reduce 带宽,确认梯度符合预期(跨层衰减应与收敛比一致)。
  4. 用真实并行映射跑端到端,对比"理想映射"与"随机映射"的 step time,差距大说明有流量放错位置。
  5. 监控按链路粒度(每 leaf 上行口),热点链路是拓扑问题的直接证据。
  • 胖树的收敛比决定跨组带宽:训练集群的同步通信要求 1:1 或接近 1:1。
  • 轨道优化按"同 rank 跨节点一跳"布线,数据并行梯度同步走最短路径。
  • 并行映射原则:TP/EP 放 NVLink 域内,PP 撑开跨机,DP 跨轨道用重叠隐藏。
  • 拓扑错误是隐蔽的性能杀手:并行策略正确但位置放错,速度差几倍且 benchmark 看不出。
  • GB200 NVL72 / TPU pod 的本质:扩大互联域,减少跨域通信需求。