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,结果天天调优、天天出问题,最后算下来成本反而更高。
嗯,选网络,眼光放长远点。
核心总结:
- 网络是分布式训练的“血管”,带宽和延迟直接决定训练速度。
- InfiniBand性能最好,成本最高;RoCE性价比高,但配置复杂;传统Ethernet便宜,但大规模不可用。
- 拓扑设计要关注带宽收敛比,避免单点瓶颈。
- 选网络时,把眼光放长远,前期投入多一点,后期省心无数。