4. 网络硬件基础:InfiniBand vs RoCE vs 以太网

聊多卡通信,绕不开网络硬件。说白了,你GPU算得再快,数据送不出去也是白搭。我这些年调过不少集群,见过太多「算力拉满、通信拉胯」的案例。今天咱们就把三种主流方案掰开揉碎讲清楚。

4.1 传统以太网:最熟悉的陌生人

以太网大家都熟,办公室、家里都在用。但用在AI集群里,它有个致命伤——丢包重传机制。

为什么会这样?传统TCP/IP协议栈里,一旦网络拥塞丢包,就要重传。一次重传延迟可能增加几十微秒。你想想看,千卡集群里,一个all-reduce操作要等最慢的那张卡。只要有一张卡因为丢包慢了,整个集群都得等它。

我在项目中遇到过,用25G以太网跑BERT训练,通信开销占了总时间的40%以上。后来换成InfiniBand,直接降到15%。差距就是这么明显。

注意: 传统以太网做AI通信,必须开启流控和优先级流控(PFC)。否则大规模集群下,丢包率会让你怀疑人生。

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,省心
核心对比: IB是「专车」,性能好、稳定、贵;RoCE是「改装车」,性能接近、便宜、需要调校;传统以太网是「公交车」,便宜但慢。

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还高了。

所以我的建议很直接:

  1. 预算充足:直接上InfiniBand NDR,200Gbps起步
  2. 预算有限,规模不大:RoCE v2 + 大缓存交换机,注意做好流控配置
  3. 纯测试环境:传统以太网也能跑,但别指望性能
小技巧: 选型时别只看带宽。看看网卡的GPU Direct支持情况。NVIDIA的ConnectX系列网卡对GPU Direct支持最好。我习惯用ibstat和ibstatus命令检查IB链路状态,用perftest工具做带宽测试。

4.6 知识体系结构图

多卡通信网络方案对比 InfiniBand RoCE v2 传统以太网 零拷贝 + 内核旁路 硬件流控,无损网络 延迟 0.5-1μs RDMA over 以太网 依赖 PFC/ECN 流控 延迟 1-3μs TCP/IP 协议栈 丢包重传机制 延迟 5-20μs 选型建议:小规模用RoCE,大规模用IB,测试用以太网 GPU Direct 支持:IB 和 RoCE 均支持,传统以太网不支持 成本:IB > RoCE > 传统以太网 稳定性:IB > RoCE(配置得当) > 传统以太网

4.7 避坑指南

最后说几个我亲身踩过的坑,希望能帮你省点时间:

  • 别迷信带宽数字:标称200Gbps,实际有效带宽可能只有70%。一定要用perftest实测
  • 交换机缓存很重要:RoCE环境下,交换机缓存不够就是灾难。我建议至少4MB/端口
  • 线缆质量别省钱:光模块和线缆的质量直接影响误码率。我曾经因为用了劣质光模块,导致集群间歇性断连
  • 固件版本要统一:网卡、交换机、GPU的固件版本必须匹配。不匹配的话,各种玄学问题都会冒出来

嗯,网络硬件这块就聊这么多。记住一句话:通信网络是AI集群的血管,血管堵了,再强的心脏也白搭。

一句话总结: InfiniBand是性能王者,RoCE是性价比之选,传统以太网适合小规模测试。选型时结合规模、预算、运维能力综合判断。