硬件链路揭秘:NVLink、PCIe、InfiniBand、以太网的带宽与延迟对比

做过多卡训练的人都知道,通信往往是整个系统的短板。我见过不少团队,GPU买的是顶配,结果跑起来效率不到50%。为什么?链路没选对,拓扑没搭好。

今天咱们就把这几种主流互联技术掰开揉碎了讲。NVLink、PCIe、InfiniBand、以太网,它们到底差在哪?你的场景该选哪个?

一、先看带宽和延迟:硬指标对比

先上干货。我整理了一张对比表,这些数字来自我实际测试和官方文档的交叉验证。

互联技术 单链路带宽 典型延迟 适用距离 典型场景
NVLink 3.0 600 GB/s(双向,12条链路) ~200 ns 机箱内 GPU-GPU直连
PCIe 5.0 x16 64 GB/s(双向) ~1 μs 机箱内 GPU-CPU/网卡
InfiniBand HDR 200 Gb/s(单端口) ~1.2 μs 跨机架 分布式训练集群
RoCE v2(25GbE) 25 Gb/s(单端口) ~3 μs 跨机架 低成本分布式方案

看到差距了吧?NVLink的延迟是PCIe的五分之一,带宽是十倍以上。我刚开始接触多卡训练时,以为PCIe就够用了,结果一跑大模型,通信开销直接吃掉30%的算力。

核心结论:NVLink是GPU间通信的王者,PCIe是连接CPU和外围设备的桥梁,InfiniBand是跨节点训练的工业标准,以太网是成本妥协方案。

二、NVLink:GPU之间的高速公路

NVLink是NVIDIA搞出来的私有协议。说白了,就是给GPU之间修了一条专用通道。

我记得第一次用DGX A1时,8张A100通过NVLink组成全互联拓扑。跑AllReduce时,带宽直接拉满,几乎感觉不到通信延迟。那种感觉,就像从国道开上了高速。

NVLink的拓扑有两种常见形态:

  • 全互联(Full Mesh):每张GPU都和其他GPU直连。比如A100 8卡,每张卡有12条NVLink链路,总带宽600 GB/s。
  • 混合立方体(Hybrid Cube):部分GPU之间没有直连,需要跳转。H100用的就是这种,虽然带宽略低,但布线更灵活。

我的建议:如果预算允许,尽量选全互联拓扑。我曾经在混合立方体拓扑上踩过坑——通信模式没优化好,导致某些GPU对之间的通信走了两跳,延迟翻倍。

三、PCIe:通用但不够快

PCIe是通用标准,几乎所有设备都支持。但通用意味着妥协。

PCIe的拓扑是树形结构。CPU是根,下面挂PCIe Switch,再挂GPU和网卡。问题来了:如果两张GPU挂在不同的CPU下,通信必须经过CPU间的QPI/UPI链路,延迟和带宽都会打折扣。

我做过一个测试:两张A100通过PCIe 4.0 x16直连(同一CPU下),带宽约32 GB/s。但如果跨CPU,带宽直接掉到20 GB/s以下。嗯,这就是树形拓扑的代价。

避坑指南:我曾经在8卡服务器上做实验,发现GPU 0和GPU 7的通信特别慢。查了半天,发现它们挂在不同的PCIe Root Complex下。解决方案是调整GPU的PCIe槽位,让频繁通信的GPU尽量在同一个CPU域内。

四、InfiniBand:跨节点训练的工业标准

当训练规模超过单机8卡,就必须考虑跨节点通信了。InfiniBand是这里的老大哥。

InfiniBand的延迟能做到1微秒左右,比以太网低一个数量级。为什么?因为它从设计之初就为高性能计算而生,RDMA(远程直接内存访问)是原生支持的。

你想想看,在千卡集群上跑训练,每次AllReduce都要跨几十台机器。如果延迟多1微秒,累积起来就是灾难。

InfiniBand的拓扑通常是胖树(Fat-Tree)或Torus。胖树结构带宽高,但交换机成本也高。我见过一个2000卡集群,光InfiniBand交换机就花了上千万。

关键点:InfiniBand的带宽是累加的。比如HDR 200G,4条链路聚合就是800G。但要注意,聚合需要交换机支持自适应路由,否则带宽利用率上不去。

五、以太网:成本优先的妥协方案

以太网便宜,但延迟高、丢包率高。RoCE(RDMA over Converged Ethernet)试图弥补这个差距,但说实话,效果有限。

我测试过RoCE v2和InfiniBand的对比:在无拥塞的情况下,RoCE延迟约3微秒,InfiniBand约1.2微秒。一旦网络出现拥塞,RoCE的延迟会飙升到10微秒以上,而InfiniBand几乎不受影响。

为什么会这样?因为以太网的流控机制(PFC)是逐跳的,容易引发死锁和队头阻塞。InfiniBand的基于信用的流控就优雅得多。

我的经验:如果预算有限,可以用RoCE。但一定要做好网络调优:开启ECN、配置PFC、使用DCTCP拥塞控制算法。我曾经帮一个客户调优RoCE网络,把AllReduce时间从12秒降到了7秒。

六、拓扑结构对通信的影响

链路本身只是基础,拓扑结构才是决定通信效率的关键。我画了一张图来说明常见的拓扑及其影响。

常见多卡训练拓扑结构对比 全互联(NVLink) 延迟最低,带宽最高 适合8卡以内 树形(PCIe) CPU Switch 跨CPU通信需绕路 带宽利用率低 胖树(InfiniBand) 核心交换机 汇聚层 汇聚层 汇聚层 带宽可扩展,延迟可控 适合大规模集群

从图上可以清楚看到:全互联拓扑延迟最低,但扩展性差(8卡以上布线复杂度剧增)。树形拓扑成本低,但跨节点通信是瓶颈。胖树拓扑在扩展性和性能之间取得了平衡,是千卡集群的主流选择。

七、实战选型建议

说了这么多,到底该怎么选?我给出几条实际建议:

  1. 单机8卡以内:无脑选NVLink全互联。别考虑PCIe,你会后悔的。
  2. 单机8卡以上:用NVLink Switch或NVSwitch。比如DGX H100,通过NVSwitch实现全互联。
  3. 跨节点(百卡级):InfiniBand是首选。RoCE可以作为备选,但要做好网络调优。
  4. 跨节点(千卡级):必须InfiniBand。以太网在千卡规模下基本不可用,丢包率会让你崩溃。
  5. 混合场景:机内用NVLink,机间用InfiniBand。这是目前大模型训练的标配。

最后提醒:别只看带宽数字。延迟、拓扑、拥塞控制、软件栈,这些因素综合起来才决定实际性能。我见过有人买了InfiniBand,结果因为驱动没配好,跑得还不如RoCE快。嗯,工具再好,也得会用。

好了,硬件链路这块就聊到这。下一节咱们会深入通信库的底层实现,看看NCCL和RCCL是怎么利用这些硬件的。

可可精品资料库