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 全互联(All-to-All) 高带宽(3.2TB/s) 低延迟(微秒级) 注意散热降频 节点间拓扑 InfiniBand vs RoCE InfiniBand:低延迟、高成本 RoCE:低成本、需PFC 选择建议:有专家选RoCE 否则选InfiniBand 胖树(Fat-Tree) 带宽逐层增加 无阻塞通信 收敛比建议 ≤ 2:1 交换机数量多,成本高 Dragonfly(蜻蜓) 组内全互联 + 组间少量链路 最多3跳 交换机数量少,成本低 路由算法复杂,有热点风险 选择建议:小规模用胖树,大规模预算有限用Dragonfly

嗯,这张图基本把本章的核心逻辑讲清楚了。节点内靠NVSwitch搞定,节点间要么InfiniBand要么RoCE,然后根据规模选胖树还是Dragonfly。你想想看,是不是这个理?

最后说一句:网络拓扑没有银弹。胖树适合通信密集、预算充足的场景;Dragonfly适合规模大、预算有限的场景。我个人更倾向于胖树,因为配置简单,出了问题好排查。但如果你团队有网络高手,Dragonfly能省不少钱。


公众号:蓝海资料掘金营,微信deep3321