AI集群网络调优实践指南:从配置到验证的完整步骤
为什么AI集群需要单独调网络?
AI训练时,多台GPU服务器之间需要频繁交换梯度或模型参数。
如果网络延迟高、带宽小或丢包严重,GPU就会长时间等待数据,拖慢整个训练。
很多新手直接跑框架却遇到训练中断或速度慢,问题往往不在模型代码,而在网络没调好。
本文面向刚接触AI集群运维的用户,讲清楚从硬件检查到参数调整再到效果验证的完整流程。
调优前的硬件与环境核查
网络方案确认:AI集群常用三种网络:InfiniBand、RoCEv2(基于以太网的RDMA)、普通TCP/IP。
先确认你的网卡和交换机支持哪种。
- 查看网卡型号:
lspci | grep -i network,搜到Mellanox或NVIDIA CX系列表示支持RDMA; - 检查驱动是否加载:
lsmod | grep rdma,没有输出说明没装驱动或未起服务; - 查看当前速率:
ethtool <网卡名> | grep Speed,确保跑在预期速率(如100Gbps)。
拓扑与MTU:确认所有节点在同一二层网络(或三层路由无瓶颈),MTU统一设为9000(巨帧)。
临时改法:ip link set dev eth0 mtu 9000;
持久化需修改 /etc/sysconfig/network-scripts/ifcfg-eth0 中的MTU值。
核心网络参数调整(TCP与RDMA)
TCP参数优化(适用于以太网环境)
AI训练通常使用TCP长连接,需要增大缓冲区并开启拥塞控制算法。
编辑 /etc/sysctl.conf,加入以下配置:
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_mtu_probing = 1
执行 sysctl -p 立即生效。
其中BBR算法对长距高带宽链路效果明显,内核需4.9+。
RDMA/RoCEv2启用
如果网卡支持RDMA,需要用以下步骤开启:
- 加载irdma或mlx5驱动模块(一般已经自动加载);
- 设置RoCE模式(以下以Mellanox ConnectX-5为例):
mlxconfig -d /dev/mst/mt4119_pciconf0 set ROCE_ENABLE=1
改完后重启服务器;
- 验证RDMA设备是否正常:
ibstat或ibv_devinfo,看到state为PORT_ACTIVE,physical state为LINK_UP即正常。
如果使用InfiniBand,则无需设置RoCE,直接安装opensm子网管理器(单机可先确认已有管理器运行)。
避坑要点
- 网卡固件版本:很多调优不生效是因为固件过旧。通过
ibstat -v或mlxfwmanager检查,建议升级到官方最新LTS版本。 - PFC与流控:RoCE依赖无损网络,交换机必须启用PFC(优先级流控)和ECN。如果只用TCP,则必须关闭交换机上的LLFC并走标准IEEE 802.3x。
- 中断绑定:网卡中断要均匀分配到CPU核心,避免单核打满。使用
snmp_irq或irqbalance服务,也可以手动绑定echo f > /proc/irq/xxx/smp_affinity。 - 防火墙或iptables:RDMA端口(如InfiniBand使用端口1、2)不要被防火墙误拦截。检查:
iptables -L -n,确保允许相应流量。
性能验证方法
测试TCP吞吐
在两台节点上安装 iperf3,服务端运行:iperf3 -s,客户端运行:
iperf3 -c <服务器IP> -t 30 -P 8
观察带宽是否接近网卡线速(如100GbE应看到约94Gbps)。
如果结果远低于预期,检查CPU瓶颈、PCIe带宽或中断策略。
测试RDMA带宽
使用 ib_write_bw(需安装perftest包)。
服务端:ib_write_bw,客户端:
ib_write_bw <服务器IP> --report_gbits
对于InfiniBand HDR100,应看到约100 Gbps的带宽。
如果结果偏低,检查 mlnx_qos 流量整形策略。
验证无丢包:在icmp ping加 -f 参数不丢包;
或者用 ib_clear_outstanding 监控计数器。
常见问题解答
Q: 改了sysctl后训练速度没变化?
A: 检查是否只改了单节点,集群内所有节点必须一致;另外BBR需要双方都支持。
Q: ib_write_bw报错“cannot open device”
A: 可能是RDMA驱动未加载或权限不够;先执行 modprobe rdma_cm,再用root运行。
Q: 训练时偶尔报“connection timeout”
A: 大概率是大帧丢包,检查交换机MTU是否统一为9000,并确认PFC/ECN配置正确。
总结
AI集群网络调优不是一次性工作,每次扩容硬件或更换框架版本都要重新验证。
建议把上述sysctl参数和RDMA配置做成自动化脚本,并定期运行 iperf3 和 ib_write_bw 作为健康检查。
如果你遇到网络问题,按本文的步骤排查,大概率能定位到根因。