拓扑设计:常见AI集群拓扑的原理与优缺点
AI训练集群的规模决定了其网络拓扑的基本形态。当集群从几十卡扩展到上千卡甚至万卡时,网络拓扑的选择直接决定了通信效率、成本上限和故障恢复能力。本章聚焦三种在AI集群中最为常见的拓扑结构:Fat-Tree(胖树)、Torus(环面/网格)和Dragonfly(蜻蜓),从原理出发,分析各自的适用场景与工程代价。
4.1 Fat-Tree:以交换层级换取无阻塞带宽
Fat-Tree 是一种基于 Clos 网络架构的树形拓扑,其核心思想是:越靠近根部的链路带宽越“粗”,从而保证任意两个叶子节点之间都能获得完整的对分带宽(Bisection Bandwidth)。在 AI 集群中,Fat-Tree 通常以三层结构实现:
- 叶层(Leaf):直接连接计算节点(GPU 服务器),通常为 40G/100G 端口。
- 脊层(Spine):负责连接所有叶交换机,不直接连接计算节点。
- 核心层(Core):在超大规模集群中,脊层之上再增加一层核心交换机,用于跨 Pod 互联。
以最常见的 2 层 Fat-Tree(叶-脊)为例,若每台叶交换机有 k 个上行端口,则最多可连接 k 台脊交换机,整个网络可容纳 k²/2 台叶交换机,且任意两台叶交换机之间的路径数等于 k,所有路径等价,可通过 ECMP(等价多路径)实现负载均衡。
// 典型 Fat-Tree 参数示例(k=64)
叶交换机数量:64 台
脊交换机数量:64 台
可接入计算节点:64 × 32 = 2048 个(假设每叶下行 32 端口)
对分带宽:64 × 100Gbps = 6.4Tbps(无阻塞)
4.1.1 优点与局限
| 维度 | 评价 |
|---|---|
| 带宽保证 | 任意节点间路径等价,对分带宽可预测,适合同步训练 |
| 容错性 | 多路径冗余,单链路故障可通过 ECMP 快速切换 |
| 成本 | 需要大量高速交换机,端口利用率约 50%(上行:下行=1:1),成本较高 |
| 扩展性 | 增加一层核心可扩展规模,但延迟随之增加 |
Fat-Tree 适合对带宽敏感、通信模式相对均匀的同步训练场景,例如基于 All-Reduce 的数据并行。但它的成本随规模呈平方级增长,在万卡以上集群中,交换机和光模块的投入会占据总成本的 30% 以上。
4.2 Torus:以低维度直连换取低成本扩展
Torus 拓扑将计算节点组织成多维网格,每个节点仅与相邻节点直连,并在维度边界处回环连接(即“环面”)。常见的 AI 集群采用 2D-Torus 或 3D-Torus。以 3D-Torus 为例,每个节点连接 6 个邻居(X、Y、Z 轴正负方向),节点间通信通过逐跳转发完成。
// 3D-Torus 规模示例(每维 8 节点)
总节点数:8 × 8 × 8 = 512
每节点端口数:6(3 维 × 2 方向)
最大跳数:3 × (8/2) = 12 跳
对分带宽:约 512 × 链路带宽 / 4(受维度切割限制)
Torus 的核心优势在于极低的端口成本——不需要大量交换机,节点本身承担转发功能。这在 Google 的 TPU Pod 和部分国产 AI 芯片集群中得到应用。但代价是:
- 跳数不可控:远距离通信需要多跳转发,延迟随规模线性增长。
- 带宽非均匀:相邻节点带宽高,远端节点带宽低,对通信模式敏感。
- 故障影响面大:单节点故障可能导致局部路由绕行,甚至形成“空洞”。
4.3 Dragonfly:面向超大规模的分层聚合拓扑
Dragonfly 拓扑专为超大规模(万卡以上)设计,其核心思想是分层聚合:将节点划分为多个“组”(Group),组内采用全连接或高基数连接,组间通过少量“干线”连接。每个组内部带宽充足,组间带宽相对有限,但通过精心设计的路由算法,使得平均跳数保持在 2-3 跳以内。
一个典型的 Dragonfly 拓扑参数如下:
// Dragonfly 参数示例
组内节点数:p = 16
每组干线端口数:h = 8
组数:g = 16
总节点数:p × g = 256
任意节点间最大跳数:3(源组内 1 跳 + 组间 1 跳 + 目的组内 1 跳)
Dragonfly 的关键优势在于极低的网络直径——无论集群规模多大,任意节点间的跳数不超过 3 跳(在理想路由下)。这使得它非常适合对延迟敏感的通信模式,如 Transformer 模型中的 Layer-wise 同步。同时,由于组间链路数量远小于组内链路,整体线缆成本显著低于 Fat-Tree。
4.3.1 路由与负载均衡的挑战
Dragonfly 的难点在于路由策略。由于组间链路是稀缺资源,如果多个流同时选择同一条干线,就会造成拥塞。常见的解决方案包括:
- 自适应路由:根据当前链路负载动态选择下一跳,避免热点。
- Valiant 路由:随机选择一个中间组转发,将流量打散到全网。
- 显式拥塞控制:通过 ECN(显式拥塞通知)或 PFC(优先级流控)反馈调整发送速率。
4.4 三种拓扑的对比与选型
| 维度 | Fat-Tree | Torus | Dragonfly |
|---|---|---|---|
| 典型规模 | 数百 ~ 数千节点 | 数百 ~ 数千节点 | 数千 ~ 数万节点 |
| 最大跳数 | 2 ~ 4 跳 | 随维度增长(如 3D-Torus 为 3×d/2) | ≤ 3 跳 |
| 对分带宽 | 高(可设计为无阻塞) | 低(受维度切割限制) | 中(组间带宽受限) |
| 成本 | 高(交换机数量多) | 低(节点直连) | 中(组间干线少) |
| 路由复杂度 | 低(ECMP 即可) | 中(需防死锁) | 高(需自适应/Valiant) |
| 故障恢复 | 好(多路径冗余) | 差(局部故障影响路由) | 中(需快速重路由) |
选型建议:
- 若集群规模在 2000 卡以内,且追求稳定的训练性能,Fat-Tree 是最稳妥的选择。
- 若成本敏感且通信模式以邻近通信为主(如卷积模型),可考虑 Torus,但需接受带宽不均。
- 若规模超过 5000 卡,且对延迟有严格要求,Dragonfly 或其变体是更优解,但需要成熟的软件栈支持。
4.5 常见误区与复盘
实际上,无阻塞的前提是流量均匀。在 MoE(混合专家)模型中,不同专家节点的流量差异可达 10 倍以上,此时 Fat-Tree 的 ECMP 可能因哈希不均导致局部拥塞,性能反而不如自适应路由的 Dragonfly。
跳数少不等于延迟低。每跳的转发延迟(约 100-200ns)加上排队延迟,在拥塞时可能远高于 Fat-Tree 的 2 跳但无拥塞的路径。Torus 更适合“尽力而为”的通信,而非延迟敏感型同步。
即使选择了合适的拓扑,如果 NCCL/RCCL 等集合通信库不支持该拓扑的优化路由(如 Ring 算法在 Torus 上的维度顺序),实际带宽利用率可能不足 50%。选型时必须同步评估软件栈的成熟度。
在实际工程中,没有“最好”的拓扑,只有“最匹配”的拓扑。建议在选型前,先用小规模集群(如 32-64 卡)模拟目标模型的通信模式,测量实际带宽和延迟,再决定是否投入大规模建设。同时,预留 10%-20% 的端口余量用于故障替换和未来扩展,避免因单点故障导致整个训练任务中断。