多卡算力集群网络互联,InfiniBand基础科普
多卡算力集群里,GPU之间的通信速度往往比单卡算力更影响整体效率。
InfiniBand是一种专为高带宽、低延迟设计的高速网络技术,目前被广泛用于AI训练和HPC集群中连接多台服务器。
这篇文章从零基础出发,讲清楚InfiniBand是什么、由哪些硬件组成、和普通以太网的区别,以及拿到一台机器后如何快速查看网卡状态和验证连通性。
InfiniBand和普通以太网到底差在哪
普通以太网(比如万兆、25G以太网)主要面向通用网络,协议栈长,数据从应用到网卡要经过多次内存拷贝,延迟通常在几十微秒。
InfiniBand则从协议层就为低延迟设计,配合RDMA(远程直接内存访问)技术,允许一台机器直接读写另一台机器的内存,绕过操作系统内核,延迟可以降到微秒级甚至更低。
在多卡训练中,常见的是NCCL等集合通信库通过InfiniBand做AllReduce、AllGather等操作。
如果网络带宽不足或延迟高,GPU利用率会明显下降,训练时间成倍增加。
判断是否需要InfiniBand的条件很直接:
- 单机8卡以上,或跨多台服务器做分布式训练,以太网带宽容易成为瓶颈;
- 训练任务对通信延迟敏感,比如大模型并行训练;
- 预算允许,且机房支持InfiniBand交换机和线缆。
如果只是单机单卡推理或小规模实验,普通以太网通常够用。
认识InfiniBand的核心硬件
一套InfiniBand网络由几个关键部分组成:
- HCA(Host Channel Adapter):主机通道适配器,就是服务器上的InfiniBand网卡,常见的是Mellanox(现属NVIDIA)系列。
- 交换机:用于多台服务器互联,比如NVIDIA Quantum系列。
- 线缆:铜缆或光缆,常见接口有QSFP、QSFP28、QSFP56等,速率从100Gb/s到400Gb/s不等。
- 子网管理器(Subnet Manager):负责管理InfiniBand子网,可以运行在交换机或某台服务器上。
需要留意的是,InfiniBand网卡和以太网网卡在系统里看到的设备名不同,InfiniBand通常是ib0、ib1这样的命名,而以太网是eth0、ens1f0等。
查看网卡状态和基础验证
拿到带InfiniBand网卡的服务器后,先确认系统是否识别到设备。
安装基础工具(以常见的Linux发行版为例):
# 安装InfiniBand诊断工具
sudo apt install infiniband-diags ibutils -y
查看设备列表:
ibv_devinfo
输出中会显示每个HCA的hca_id、端口状态(state)和速率。端口状态应为PORT_ACTIVE,如果显示PORT_DOWN或PORT_INIT,说明链路或子网管理器有问题。
查看端口速率和链路层:
ibstat
重点看Rate字段,比如100表示100Gb/s。
如果只有一台机器,可以用ibv_rc_pingpong做本机回环测试,确认驱动和用户态库正常:
ibv_rc_pingpong
两台机器之间测试时,一台运行服务端,另一台运行客户端,指定对方的IPoIB地址或GID。
常见坑和排查思路
InfiniBand配置中容易踩的问题主要有几类:
- 端口起不来:先检查线缆是否插紧、交换机端口是否启用,再用
ibstat看物理层状态。 - 子网管理器未运行:多台机器互联时,必须有一个SM在跑。可以在交换机上启用,也可以在服务器上安装
opensm并启动。 - IPoIB没配:InfiniBand本身是RDMA网络,但很多应用需要IP层。需要给
ib0配置IP,并加载ib_ipoib模块。 - 驱动版本不匹配:MLNX_OFED驱动和内核版本、CUDA版本之间有时存在兼容要求,建议以官方文档的兼容矩阵为准。
验证连通性时,除了ibv_rc_pingpong,还可以用ibping测试到交换机的连通。
实际集群中的验证顺序
在一个多卡算力集群中,建议按这个顺序检查:
- 物理层:线缆、光模块、交换机端口指示灯。
- 驱动层:
ibv_devinfo能识别到HCA,端口状态为PORT_ACTIVE。 - 子网层:
ibnetdiscover能发现拓扑,说明SM正常工作。 - 性能层:用
ib_write_bw测试两台机器之间的带宽,确认达到预期速率。
如果带宽远低于标称值,优先检查线缆类型、PCIe插槽带宽和NUMA绑定。
几个常见疑问
InfiniBand一定要配交换机吗?
两台机器直连也可以,用一根线缆对接两块HCA即可,但超过两台就需要交换机。
没有InfiniBand能用RoCE代替吗?
RoCE是在以太网上实现RDMA,成本可能更低,但对网络配置和交换机要求较高,实际选择建议结合机房条件和运维能力评估。
InfiniBand网卡能当普通网卡用吗?
可以,通过IPoIB提供IP层通信,但性能和管理方式与以太网不同,不建议混用为业务网卡。
理解InfiniBand的基础概念和验证方法,能帮你在搭建多卡算力集群时少走弯路。
后续可以进一步了解NCCL如何选择网络接口、GPUDirect RDMA如何绕过CPU拷贝,这些都会直接影响多卡训练的实际效率。