1. IB与NVLink概述:什么是InfiniBand网络、什么是NVLink、两者在AI集群中的角色定位
1.1 先聊聊InfiniBand
InfiniBand,简称IB。说白了,它是一种超高速的互联网络技术。我刚开始接触它的时候,第一反应是——这玩意儿跟以太网有啥区别?
嗯,区别大了去了。IB网络最初是为高性能计算(HPC)设计的。它追求的是极低的延迟和极高的带宽。你想想看,成千上万个GPU要协同计算一个模型,数据交换慢一毫秒,整个训练就得等。IB就是来解决这个问题的。
IB的核心特点,我总结了几点:
- 高带宽:单端口就能跑到200Gbps、400Gbps甚至更高。我记得几年前我们搭集群时还在用100Gbps,现在已经翻了好几倍。
- 低延迟:微秒级的延迟。以太网通常要几十微秒甚至更高,IB能做到1-2微秒。这个差距在分布式训练中非常明显。
- RDMA支持:远程直接内存访问。数据可以从一台机器的内存直接传到另一台,不需要经过CPU。这省掉了大量拷贝开销。
- 可靠传输:IB硬件层面就保证了数据不丢包、不乱序。上层应用省心很多。
重要概念:IB网络中的节点通过HCA(主机通道适配器)连接。每个HCA相当于一个网卡,但它比普通网卡智能得多。HCA可以直接处理传输协议,不需要CPU干预。
1.2 再说说NVLink
NVLink是NVIDIA搞出来的东西。它跟IB不一样,IB是连接不同服务器的,NVLink主要是连接GPU之间的。
我最早接触NVLink是在P100那个时代。当时觉得,GPU之间终于不用走PCIe了,那个瓶颈太难受了。PCIe 3.0 x16的带宽也就16GB/s左右,对于动不动就几十GB的模型来说,根本不够用。
NVLink的特点:
- 超高带宽:NVLink 4.0单链路带宽达到50GB/s,双向100GB/s。一个GPU通常有多个NVLink链路,总带宽非常可观。
- 低延迟:GPU之间的通信延迟极低,纳秒级别。因为它是直接连接在GPU上的,不需要经过任何中间设备。
- GPU间直接通信:不需要经过CPU或系统内存。数据可以直接从一个GPU的显存传到另一个GPU的显存。
- 支持NVSwitch:当GPU数量很多时,可以通过NVSwitch组成全互联拓扑。每个GPU都能以高速访问其他所有GPU。
我的经验:我曾经在一个项目中,把模型并行策略从PCIe换到NVLink,训练速度提升了将近3倍。原因很简单——梯度同步的时间大大缩短了。如果你在做多GPU训练,NVLink几乎是必须的。
1.3 两者在AI集群中的角色定位
现在我们来聊聊核心问题:IB和NVLink在AI集群里到底各司其职?
我习惯用一个比喻来理解:NVLink是GPU之间的高速公路,IB是服务器之间的高铁网络。
具体来说:
- NVLink负责节点内通信:一台服务器内部有8个GPU,它们之间通过NVLink互联。模型并行、张量并行这些策略,主要依赖NVLink。因为通信量巨大,延迟要求极高。
- IB负责节点间通信:不同服务器之间的GPU要通信,比如数据并行中的梯度同步、流水线并行中的中间结果传递,这些走IB网络。IB的带宽和延迟虽然不如NVLink,但跨节点场景下已经是最优选择了。
你想想看,一个典型的AI训练集群是什么样子?
每台服务器内部,8个GPU通过NVLink全互联。服务器之间,通过IB网络连接。训练一个大模型时,模型并行在单机内部完成,数据并行在集群范围内完成。两者协同工作,缺一不可。
注意:我曾经见过有人试图用IB代替NVLink做节点内通信。结果呢?延迟高了两个数量级,训练直接卡死。反过来,用NVLink做跨节点通信也不行,因为NVLink的物理距离有限,无法连接不同服务器。所以,两者是互补关系,不是替代关系。
1.4 一张图看懂整体架构
下面这张SVG图展示了IB和NVLink在AI集群中的协同关系。我画的时候尽量简化了,但核心逻辑都在里面。
1.5 实际场景中的选择
在实际部署中,怎么搭配IB和NVLink?我分享几个经验:
| 场景 | 推荐方案 | 原因 |
|---|---|---|
| 单机8卡训练 | NVLink全互联,IB可选 | 节点内通信NVLink足够,IB用于扩展 |
| 多机多卡训练 | NVLink + IB必须同时部署 | 节点内NVLink,节点间IB,缺一不可 |
| 超大规模集群(千卡以上) | NVLink + IB + 分层网络设计 | 需要IB交换机做胖树或Torus拓扑 |
| 推理场景 | NVLink为主,IB按需 | 推理通常单机即可,跨机需求少 |
避坑指南:我曾经在一个项目中,只配了IB没配NVLink。结果8卡训练时,GPU之间走IB绕了一圈,延迟高得离谱。后来加上了NVSwitch,问题才解决。记住:节点内通信永远优先走NVLink。
1.6 小结
IB和NVLink,一个管跨节点,一个管节点内。两者协同,才能支撑起大规模AI训练。你想想看,没有NVLink,GPU之间通信就是瓶颈;没有IB,多机扩展就是空谈。所以,搞AI基础设施,这两个技术都得吃透。
嗯,这一章就到这里。下一章我们会深入IB的物理层和链路层,看看它到底是怎么做到这么低延迟的。