4、集群网络拓扑:节点内(NVSwitch)与节点间(InfiniBand/RoCE)拓扑,胖树与Dragonfly结构
聊到多GPU集群,很多人第一反应是“堆卡”。但说实话,卡堆得再多,网络拓扑不对,性能照样拉胯。我见过不少团队,买了最好的GPU,结果因为网络拓扑没设计好,训练效率连一半都跑不满。今天咱们就来拆解一下,集群里到底是怎么连的。
4.1 节点内拓扑:NVSwitch 是怎么工作的?
先看单机内部。一台8卡机器,如果走传统的PCIe Switch,GPU之间通信要走PCIe总线,延迟高、带宽窄。NVIDIA搞了个NVSwitch,说白了就是一个超高速的交换芯片,专门给GPU之间“开小灶”。
NVSwitch 的核心特点:
- 全互联(All-to-All):每个GPU都能直接跟其他7个GPU通信,不需要经过CPU或者内存。
- 高带宽:NVSwitch 3.0 单链路带宽是 50GB/s,双向就是 100GB/s。8卡全互联,总带宽能到 3.2TB/s 以上。
- 低延迟:延迟在微秒级别,比PCIe低一个数量级。
我个人习惯:在配置NVSwitch时,一定要检查NVLink的拓扑模式。默认是“全对全”,但有些场景下(比如数据并行),你可以改成“环形”模式来减少跳数。不过,大部分时候保持默认就好。
NVSwitch 的物理结构:
NVSwitch 本身是一个独立的芯片,通常放在GPU模组中间。比如DGX A100里,有6个NVSwitch芯片,每个芯片连接4个GPU。这样设计的好处是:任何一个NVSwitch坏了,不会导致整个集群瘫痪,只是带宽会降级。
避坑指南:我曾经遇到过一个问题——NVSwitch的散热没做好,导致芯片降频,GPU间通信带宽直接腰斩。所以,如果你自己搭建集群,记得给NVSwitch单独配散热,别让它跟GPU抢风道。
4.2 节点间拓扑:InfiniBand vs RoCE
节点内部搞定了,接下来就是多台机器怎么连。目前主流的方案有两种:InfiniBand 和 RoCE(RDMA over Converged Ethernet)。
InfiniBand:
- 专用网络:有独立的交换机、网卡、线缆,不跟以太网混用。
- 低延迟:延迟通常在1-2微秒,比RoCE低一半。
- 高带宽:HDR 200Gbps、NDR 400Gbps 已经普及。
- 贵:一套InfiniBand交换机比同等端口的以太网交换机贵3-5倍。
RoCE:
- 基于以太网:复用现有的以太网基础设施,成本低。
- 需要PFC:RoCE依赖优先级流控(PFC)来保证无损传输,配置复杂。
- 延迟稍高:一般在3-5微秒,但优化后也能接近InfiniBand。
- 生态成熟:很多云厂商都用RoCE,比如阿里云、AWS。
| 特性 | InfiniBand | RoCE |
|---|---|---|
| 延迟 | 1-2 µs | 3-5 µs |
| 带宽 | 200-400 Gbps | 100-200 Gbps |
| 成本 | 高 | 中 |
| 配置复杂度 | 低(专用网络) | 高(需要PFC) |
| 典型场景 | 超算、大模型训练 | 云原生、中小规模集群 |
注意:RoCE虽然便宜,但PFC配置不好会导致“死锁”或“队头阻塞”。我建议,如果你团队没有网络专家,优先选InfiniBand,省心。
4.3 胖树(Fat-Tree)拓扑
胖树是目前最常用的集群网络拓扑。它的核心思想是:从叶子到根,带宽逐层增加,保证任何两个节点之间的通信带宽不降级。
胖树的结构:
- 叶子层:连接GPU节点,通常是ToR(Top of Rack)交换机。
- 聚合层:连接多个ToR交换机,提供上行带宽。
- 核心层:连接所有聚合交换机,形成全网状。
为什么叫“胖树”?
你想想看,传统树形拓扑,越往上带宽越窄,根节点容易成为瓶颈。胖树反其道而行之,越往上带宽越宽,甚至能做到“无阻塞”。说白了,就是每个节点都能以全带宽跟其他节点通信。
我建议:在规划胖树时,注意“收敛比”。收敛比 = 下行带宽 / 上行带宽。理想情况下是1:1,但实际中为了省钱,很多集群做到2:1或4:1。如果你的训练任务通信密集(比如AllReduce),收敛比最好别超过2:1。
胖树的优缺点:
- 优点:带宽高、延迟低、易于扩展。
- 缺点:交换机数量多,成本高。比如一个1024节点的集群,可能需要上百台交换机。
4.4 Dragonfly(蜻蜓)拓扑
胖树虽然好,但交换机太多,成本太高。Dragonfly拓扑就是为了解决这个问题而生的。
Dragonfly 的核心思想:
把节点分成多个“组”(Group),组内全互联,组间通过少量链路连接。这样,任何两个节点之间的跳数最多是3跳(组内1跳 + 组间1跳 + 目标组内1跳)。
Dragonfly 的结构:
- 组(Group):每个组包含多个节点,组内用高速交换机全互联。
- 全局链路:每个组通过少量光纤连接到其他组,形成全网状。
- 路由算法:有自适应路由和最小路由两种。自适应路由能避开拥塞,但实现复杂。
我记得:在某个超算项目中,我们用了Dragonfly拓扑,交换机数量比胖树少了40%,但性能只下降了5%。对于预算有限的团队,Dragonfly是个很好的折中方案。
Dragonfly 的优缺点:
- 优点:交换机数量少,成本低,延迟可控(最多3跳)。
- 缺点:路由算法复杂,容易出现“热点”(某个组间链路被大量流量打满)。
4.5 知识体系总览
下面这张图,帮你把本章的核心逻辑串起来:
嗯,这张图基本把本章的核心逻辑讲清楚了。节点内靠NVSwitch搞定,节点间要么InfiniBand要么RoCE,然后根据规模选胖树还是Dragonfly。你想想看,是不是这个理?
最后说一句:网络拓扑没有银弹。胖树适合通信密集、预算充足的场景;Dragonfly适合规模大、预算有限的场景。我个人更倾向于胖树,因为配置简单,出了问题好排查。但如果你团队有网络高手,Dragonfly能省不少钱。
公众号:蓝海资料掘金营,微信deep3321