4. 集群网络拓扑

聊到分布式训练,很多人第一反应是“显卡越多越快”。

嗯,这话只说对了一半。

我见过不少团队,砸钱买了八卡机、十六卡机,结果跑起来发现——多卡还不如单卡快。为什么?网络成了瓶颈。说白了,你显卡算得再快,数据传不过来,全在等网络,那跟单卡有什么区别?

4.1 网络到底在训练里扮演什么角色?

分布式训练的核心是“分而治之”。数据分到多张卡上,每张卡算自己的梯度,然后汇总更新模型。

这个“汇总”的过程,就是网络通信的战场。

我举个例子。你训练一个175B的大模型,模型参数有1750亿个。每次梯度同步,光参数就要传几十GB的数据。如果网络带宽不够,或者延迟太高,那大部分时间都花在等数据上了。

关键指标:

  • 带宽:单位时间内能传多少数据。决定了梯度同步的速度。
  • 延迟:发一个消息到收到回复的时间。影响小数据包的通信效率。
  • 拥塞控制:多节点同时通信时,会不会丢包、重传。

我个人习惯,先看带宽,再看延迟。带宽不够,一切免谈。

4.2 三种主流网络方案

目前业界主流的集群网络,就三种:InfiniBand、RoCE、传统Ethernet。我一个个说。

4.2.1 InfiniBand

InfiniBand(简称IB)是高性能计算的“老大哥”。它从设计之初就是为了解决大规模并行计算的问题。

  • 特点:原生支持RDMA(远程直接内存访问),数据从一张卡的内存直接传到另一张卡的内存,不经过CPU和操作系统。延迟极低,带宽极高。
  • 典型带宽:单链路200Gbps、400Gbps,甚至更高。
  • 优势:稳定、可靠、延迟低。大规模集群(千卡以上)的首选。
  • 劣势:贵。非常贵。交换机、网卡、线缆,全套下来成本是Ethernet的3-5倍。

我在项目中遇到过,一个256卡的IB集群,光网络设备的成本就占了总预算的40%。老板当时脸都绿了。但没办法,训练速度确实快,AllReduce通信时间比Ethernet快了将近一倍。

4.2.2 RoCE(RDMA over Converged Ethernet)

RoCE,说白了就是在以太网上跑RDMA。它想用Ethernet的成本,实现接近IB的性能。

  • 特点:基于以太网,但支持RDMA。需要交换机支持PFC(优先级流控制)和ECN(显式拥塞通知)。
  • 典型带宽:100Gbps、200Gbps。
  • 优势:成本比IB低,性能比传统Ethernet好。中小规模集群(几十到几百卡)性价比很高。
  • 劣势:对网络配置要求极高。PFC配置不好,容易造成死锁或拥塞扩散。说白了,调优难度大。

避坑指南:

我曾经帮一个客户排查RoCE集群性能问题。他们128卡跑训练,速度一直上不去。查了三天,最后发现是交换机上的PFC阈值设错了,导致频繁触发流控,通信效率直接腰斩。嗯,RoCE这东西,配置对了是神器,配错了是噩梦。

4.2.3 传统Ethernet(TCP/IP)

传统以太网,就是我们日常上网用的那种。它走TCP/IP协议栈,数据要经过CPU、操作系统、内核网络栈,延迟高、CPU开销大。

  • 特点:通用、便宜、生态好。随便买个交换机就能用。
  • 典型带宽:25Gbps、50Gbps、100Gbps。
  • 优势:成本最低,部署最简单。
  • 劣势:延迟高,CPU占用高。大规模训练基本不可用。

你想想看,训练时CPU本来就要处理数据加载、预处理,如果网络通信再占掉大量CPU资源,那GPU只能干等着。所以,传统Ethernet现在基本只用于小规模实验或数据加载,真正的训练通信很少用它。

4.3 三种方案对比

特性 InfiniBand RoCE 传统Ethernet
延迟 极低(<1μs) 低(1-3μs) 高(10-50μs)
带宽 200-400Gbps 100-200Gbps 25-100Gbps
CPU开销 极低(RDMA) 低(RDMA) 高(TCP/IP)
成本 高 中 低
配置复杂度 中 高 低
适用规模 千卡以上 几十到几百卡 几卡到十几卡

4.4 网络拓扑对训练的影响

光选对网络协议还不够,拓扑结构同样关键。

常见的拓扑有:

  • 星型拓扑:所有节点连到一个中心交换机。简单,但中心交换机是单点瓶颈。
  • Fat-Tree(胖树):多层交换机,带宽逐层收敛。大规模集群的经典方案。
  • Dragonfly(蜻蜓):分组互联,组内全连接,组间少量连接。适合超大规模集群。
  • Torus(环面):节点按多维网格连接。Google的TPU集群就用这个。

我个人的经验是:

如果你只有几十张卡,星型拓扑就够了。但到了几百卡,必须上Fat-Tree。到了千卡以上,Dragonfly或Torus才是正解。

为什么会这样?

因为AllReduce通信是全局的。每个节点都要和其他所有节点交换数据。如果拓扑设计不好,带宽收敛比太高,那通信就会卡在某个瓶颈点上。

小技巧:

选拓扑时,记住一个原则:带宽收敛比尽量接近1:1。也就是说,从叶子到根,带宽不要缩水太多。否则,你买的万兆网卡,实际跑出来可能只有千兆的效果。

4.5 网络对训练速度的量化影响

我直接给个公式,大家感受一下:

训练时间 ≈ 计算时间 + 通信时间

通信时间 = 数据量 / 有效带宽

有效带宽 = 理论带宽 × 效率因子

效率因子受很多因素影响:协议开销、拥塞、拓扑设计、消息大小等。

举个例子:

  • 你用100Gbps的Ethernet,效率因子可能只有0.6-0.7。实际有效带宽60-70Gbps。
  • 你用100Gbps的RoCE,配置好了效率因子能到0.8-0.9。
  • 你用100Gbps的IB,效率因子轻松0.95以上。

所以,同样是100Gbps的网络,IB实际能跑95Gbps,Ethernet可能只跑65Gbps。差了将近50%。

我在项目中实测过,一个64卡的集群,训练BERT-Large:

  • IB网络:每个epoch 12分钟
  • RoCE网络:每个epoch 15分钟
  • Ethernet网络:每个epoch 28分钟

你看,网络选对了,速度翻倍都不夸张。

4.6 我的建议

说了这么多,到底怎么选?

我个人的建议是:

  • 预算充足,规模大(>256卡):无脑上InfiniBand。省心、稳定、性能好。
  • 预算有限,规模中等(32-256卡):RoCE是很好的选择。但一定要找有经验的人配置网络,别自己瞎调。
  • 小规模实验(<32卡):传统Ethernet也能凑合用。但别指望它能跑出多高的效率。

最后说一句:网络这东西,前期投入多一点,后期省心无数。我见过太多团队为了省钱选Ethernet,结果天天调优、天天出问题,最后算下来成本反而更高。

嗯,选网络,眼光放长远点。

集群网络方案选型决策树 集群规模多大? <32卡 32-256卡 >256卡 传统Ethernet RoCE InfiniBand 有专业网络团队? 否 是 选IB,别折腾RoCE RoCE,性价比之选 核心原则:带宽收敛比尽量接近1:1,避免网络成为瓶颈 预算充足选IB,预算有限选RoCE,小规模实验用Ethernet

核心总结:

  • 网络是分布式训练的“血管”,带宽和延迟直接决定训练速度。
  • InfiniBand性能最好,成本最高;RoCE性价比高,但配置复杂;传统Ethernet便宜,但大规模不可用。
  • 拓扑设计要关注带宽收敛比,避免单点瓶颈。
  • 选网络时,把眼光放长远,前期投入多一点,后期省心无数。