4. 网络硬件基础:InfiniBand vs RoCE vs 以太网
聊多卡通信,绕不开网络硬件。说白了,你GPU算得再快,数据送不出去也是白搭。我这些年调过不少集群,见过太多「算力拉满、通信拉胯」的案例。今天咱们就把三种主流方案掰开揉碎讲清楚。
4.1 传统以太网:最熟悉的陌生人
以太网大家都熟,办公室、家里都在用。但用在AI集群里,它有个致命伤——丢包重传机制。
为什么会这样?传统TCP/IP协议栈里,一旦网络拥塞丢包,就要重传。一次重传延迟可能增加几十微秒。你想想看,千卡集群里,一个all-reduce操作要等最慢的那张卡。只要有一张卡因为丢包慢了,整个集群都得等它。
我在项目中遇到过,用25G以太网跑BERT训练,通信开销占了总时间的40%以上。后来换成InfiniBand,直接降到15%。差距就是这么明显。
4.2 InfiniBand:AI通信的王者
InfiniBand(IB)是专门为高性能计算设计的。它从一开始就考虑了RDMA(远程直接内存访问)。GPU的数据可以直接通过IB网卡写入另一台机器的GPU显存,完全绕过CPU和操作系统。
IB的核心优势有三个:
- 零拷贝:数据从GPU显存直接到网卡,不经过系统内存
- 内核旁路:不经过操作系统协议栈,延迟极低
- 无损网络:硬件级别的流控,几乎不丢包
我记得有一次调集群,用ib_write_bw测试带宽,单条链路就能跑到接近线速。而同样的硬件跑TCP,带宽直接腰斩。嗯,这就是协议栈开销的代价。
目前主流的是HDR(200Gbps)和NDR(400Gbps)。我个人习惯,预算够的话直接上NDR。省下来的通信时间,几个月就回本了。
4.3 RoCE:以太网上的RDMA
RoCE(RDMA over Converged Ethernet)是个折中方案。它把RDMA搬到了以太网上。好处是可以用现有的以太网交换机,成本低不少。
但RoCE有个大坑——它依赖无损以太网。需要开启PFC、ECN等一系列流控机制。配置起来相当讲究。我曾经因为PFC配置不当,导致整个集群出现死锁,所有训练任务卡死。排查了整整两天才找到原因。
RoCE v2是目前的主流版本。它支持UDP封装,可以跨三层路由。但说实话,在大规模集群里,RoCE的稳定性还是不如IB。我个人的建议是:
- 小规模集群(几十卡):RoCE完全够用,性价比高
- 大规模集群(几百卡以上):老老实实上IB,省心
4.4 三种方案的技术对比
| 特性 | InfiniBand | RoCE v2 | 传统以太网 |
|---|---|---|---|
| 最大带宽 | 400Gbps (NDR) | 100/200/400Gbps | 100/200/400Gbps |
| 典型延迟 | 0.5-1μs | 1-3μs | 5-20μs |
| 丢包率 | 几乎为0 | 低(需配置) | 高(拥塞时) |
| CPU卸载 | 完全卸载 | 部分卸载 | 无 |
| 成本 | 高 | 中 | 低 |
| 生态兼容性 | 需要专用交换机 | 兼容以太网交换机 | 最广泛 |
4.5 实际选型建议
这里分享一个我踩过的坑。之前有个项目,客户坚持用RoCE,说省钱。结果集群到了256卡后,通信效率急剧下降。最后发现是交换机缓存不够,导致PFC风暴。换了一批大缓存交换机,成本反而比IB还高了。
所以我的建议很直接:
- 预算充足:直接上InfiniBand NDR,200Gbps起步
- 预算有限,规模不大:RoCE v2 + 大缓存交换机,注意做好流控配置
- 纯测试环境:传统以太网也能跑,但别指望性能
4.6 知识体系结构图
4.7 避坑指南
最后说几个我亲身踩过的坑,希望能帮你省点时间:
- 别迷信带宽数字:标称200Gbps,实际有效带宽可能只有70%。一定要用perftest实测
- 交换机缓存很重要:RoCE环境下,交换机缓存不够就是灾难。我建议至少4MB/端口
- 线缆质量别省钱:光模块和线缆的质量直接影响误码率。我曾经因为用了劣质光模块,导致集群间歇性断连
- 固件版本要统一:网卡、交换机、GPU的固件版本必须匹配。不匹配的话,各种玄学问题都会冒出来
嗯,网络硬件这块就聊这么多。记住一句话:通信网络是AI集群的血管,血管堵了,再强的心脏也白搭。