4. 集群拓扑基础:常见网络拓扑(Fat-Tree、Torus、Dragonfly)及其特点

4.1 核心原理:三种拓扑的底层逻辑

多GPU集群的RDMA通信性能,首先取决于网络拓扑如何组织GPU节点之间的物理连接。本节聚焦三种在AI集群中最常见的拓扑结构:Fat-Tree(胖树)、Torus(环面/网格)和Dragonfly(蜻蜓)。理解它们的核心差异,是后续设计集群拓扑、规划IP/路由、排查通信瓶颈的基础。

Fat-Tree 是一种层次化、无阻塞(严格意义上为“无收敛”)的树状结构。其核心思想是:越靠近根部的链路,带宽越宽(或链路数量越多),从而保证任意两个叶节点(GPU所在的计算节点)之间都能获得全带宽通信。它通常基于Clos网络架构实现,通过多级交换机构建出多条等价路径,配合ECMP(等价多路径)或自适应路由实现负载均衡。

Torus 是一种高维网格结构,每个节点只与相邻节点连接,并在维度边界处“回绕”形成环。常见的为2D/3D Torus(如3D Torus中每个节点连接X、Y、Z三个方向的正负邻居)。其核心优势是局部性:相邻节点通信延迟极低、跳数少,且布线规则简单,适合构建超大规模集群(如TPU Pod)。但缺点是全局通信(如All-to-All)需要经过多跳,且对路由算法依赖度高。

Dragonfly 是一种层级化的“不完全图”拓扑,其设计目标是最小化长距离链路的数量。它将节点分组为“组”(Group),组内是全连接(或近全连接),组间通过少量“粗管道”连接。任意两个节点之间的路径最多为3跳(组内源节点 → 组间源交换机 → 组间目的交换机 → 组内目的节点)。这种结构极大降低了网络直径,适合对延迟敏感且流量模式随机的HPC/AI负载。

选型直觉:Fat-Tree适合通用性要求高、流量不可预测的商用集群(如英伟达DGX SuperPOD);Torus适合流量局部性强、可精细调度的专用系统(如TPU);Dragonfly适合超大规模(数万卡以上)且需要控制布线成本的系统(如部分百亿亿次超算)。
三种典型拓扑结构对比示意 Fat-Tree (Clos) 核心交换机 (Spine) 汇聚交换机 汇聚交换机 接入交换机 接入交换机 接入交换机 GPU GPU GPU GPU GPU ↑ 上行带宽不收敛 任意叶节点间 全带宽通信 3D Torus (局部连接) 维度回绕 特性 ✓ 局部通信延迟极低 ✓ 布线规则简单 ✗ 全局通信跳数多 ✗ 依赖路由算法 相邻节点跳数:1 最远节点跳数:N/2 (每维) Dragonfly (蜻蜓) 组 A 组 B 粗管道 任意节点路径 ≤ 3跳 源组内 → 组间 → 目的组内 组内全连接:1跳 跨组通信:≤3跳 优势 ✓ 网络直径极小 ✓ 长距离链路少 ✓ 扩展性强

4.2 方法流程:如何选择与评估拓扑

在实际设计多GPU集群时,不能仅凭理论偏好选择拓扑,而应遵循一套可量化的评估流程。以下是推荐的四步评估法:

  1. 流量模式分析:统计集群中主要运行的通信模式。若以AllReduce、All-to-All为主(如大模型训练),Fat-Tree的阻塞率优势明显;若以邻近数据交换为主(如某些科学计算),Torus的局部性更佳。
  2. 规模与布线约束:计算目标GPU数量。当规模超过数千卡时,Fat-Tree需要大量核心交换机与光纤,成本急剧上升;此时Dragonfly的“组内高密度+组间稀疏”策略更具成本优势。
  3. 路由与容错能力:评估拓扑对路由算法的支持程度。Fat-Tree天然支持ECMP,但需处理TCP/RDMA的哈希冲突;Torus需要维序路由或自适应路由,对死锁避免有要求;Dragonfly则需要全局路由表,且对链路故障的响应速度要求高。
  4. 模拟验证:使用网络模拟器(如NS-3、OMNeT++)或集群模拟工具(如SST)对候选拓扑进行建模仿真,输入真实业务流量,对比平均延迟、吞吐量和P99延迟。
评估维度 Fat-Tree Torus Dragonfly
网络直径(跳数) 固定(如3层为6跳) 随规模增长(每维N/2) 固定≤3跳
对分带宽 高(可设计为无收敛) 低(受限于维度) 中高(组间带宽决定)
布线复杂度 高(核心层连线多) 低(仅邻居连接) 中(组内密集+组间稀疏)
典型规模 数百~数千卡 数千~数万卡 数万卡以上
代表系统 DGX SuperPOD TPU Pod Frontier、Perlmutter

4.3 案例/场景:不同拓扑的典型应用

案例一:DGX SuperPOD(Fat-Tree)
英伟达官方推荐的DGX A100/H100 SuperPOD架构采用三级Fat-Tree。每个计算节点(8卡)通过8条200Gbps HDR InfiniBand连接至接入层交换机。汇聚层与核心层采用“无收敛”设计,确保任意GPU对之间的通信带宽等于单卡RDMA带宽。该设计使得在大规模AllReduce中,通信时间几乎不随集群规模线性增长。

案例二:TPU v4 Pod(3D Torus)
谷歌TPU v4 Pod采用4x4x4的3D Torus拓扑,共4096个TPU。每个TPU通过6条链路(X/Y/Z正负方向)与邻居相连。由于TPU的通信模式高度可预测(如矩阵乘法中的行/列广播),谷歌自研的编译器可以精确调度数据流,使数据沿最短路径传输。这种紧耦合设计大幅降低了功耗和布线成本。

案例三:Frontier超算(Dragonfly)
Frontier(目前TOP500榜首)使用HPE Slingshot网络,其拓扑为Dragonfly变体。系统将计算节点划分为多个组,组内通过高基数交换机全连接,组间通过少量长距离光缆连接。这种设计使得Frontier在拥有超过9,400个节点(37,000+ GPU)的情况下,仍能保持较低的网络直径和功耗。

实操建议:若你正在设计一个128卡(16节点)的RDMA集群,Fat-Tree是最稳妥的选择——它不需要复杂的路由配置,且对通信模式不敏感。若规模扩展到1024卡以上,建议对比Fat-Tree与Dragonfly的模拟结果,重点关注成本与延迟的平衡点。

4.4 误区/复盘:常见设计陷阱

误区一:盲目追求“无阻塞”
Fat-Tree的“无阻塞”设计需要核心层交换机数量与带宽成比例增长。例如,一个2层Fat-Tree(叶脊架构)要达到无阻塞,脊交换机数量必须等于叶交换机数量。很多设计者为了节省成本,将脊交换机数量减半,导致在All-to-All通信时出现严重收敛,实际吞吐量下降超过50%。复盘:在规划时,应明确业务流量模型。若以数据并行训练为主(AllReduce频繁),收敛比应控制在1:1;若以推理为主(流量较分散),可适当放宽至1:2或1:3。

误区二:忽略Torus的“边界效应”
在Torus拓扑中,维度回绕链路(如X轴最左与最右节点的连接)通常需要长距离布线。若为了布线方便而取消回绕,拓扑退化为Mesh,网络直径将翻倍,局部通信优势大幅削弱。复盘:在部署Torus时,必须完整实现回绕链路,并确保路由算法支持维度回绕,否则会出现“假Torus”导致的性能下降。

误区三:Dragonfly的组内带宽瓶颈
Dragonfly的组间链路带宽是稀缺资源。若组内通信流量占比过高(例如超过70%),组间链路利用率极低,但组内交换机端口被大量占用,导致跨组通信时排队延迟剧增。复盘:在Dragonfly中,应通过作业调度器将通信频繁的GPU尽量分配在同一组内,或采用“流量感知”的路由策略,动态避开拥塞的组间链路。

关键提醒:拓扑选择没有“绝对最优”,只有“最适合”。在最终决策前,务必使用真实业务流量进行模拟,并预留至少20%的带宽余量以应对流量突发。同时,所有拓扑都应配套完善的链路故障检测与重路由机制,否则单点故障可能导致整个通信域瘫痪。