分布式算力集群网络架构,多机互联方案
搭建分布式算力集群时,多机互联方案直接决定了训练和推理任务的通信效率。
本文面向零基础运维人员,从硬件准备到连通性验证,逐步说明如何为算力集群规划并配置一套可落地的多机互联网络。
读完可以掌握IP规划、RoCEv2启用、NCCL测试等关键操作,并能排查常见的链路不通问题。
先理清集群网络的基本分工
分布式算力集群通常涉及两类网络:管理网络和计算网络。
管理网络用于SSH登录、监控和任务调度,带宽要求不高,千兆或万兆即可。
计算网络承载参数同步、梯度聚合等流量,对带宽和延迟敏感,建议使用25G/100G/200G以太网或InfiniBand。
多机互联方案的选择取决于预算和规模。
小规模集群(2-8台)常用RoCEv2以太网方案,成本较低;
大规模或对延迟极敏感的场景可考虑InfiniBand。
本文以RoCEv2为例,因为它在普通数据中心交换机上即可部署。
硬件与IP规划清单
动手前需要确认以下条件:
- 每台节点至少两块网卡:一块用于管理,一块用于计算(支持RoCEv2)。
- 计算网卡建议同一型号、同一固件版本,避免兼容性问题。
- 交换机需支持PFC(优先级流控)和ECN(显式拥塞通知),否则RoCEv2性能会下降。
- 规划独立的计算网段,例如
192.168.100.0/24,不要与管理网混用。
IP规划示例:
| 节点 | 管理IP | 计算IP |
|------|--------|--------|
| node01 | 10.0.0.11 | 192.168.100.11 |
| node02 | 10.0.0.12 | 192.168.100.12 |
| node03 | 10.0.0.13 | 192.168.100.13 |
配置计算网卡与RoCEv2
以CentOS 7/8或Ubuntu 20.04为例,假设计算网卡名为ens1f0。
- 查看网卡状态:
ip link show ens1f0
ethtool -i ens1f0
确认驱动为mlx5_core(Mellanox网卡)或对应厂商驱动。
- 配置IP并启用接口:
nmcli con add type ethernet ifname ens1f0 con-name roce0 ip4 192.168.100.11/24
nmcli con up roce0
- 启用RoCEv2并设置MTU为9000(若交换机支持巨帧):
cma_roce_mode -d mlx5_0 -p 1 -m 2
ip link set ens1f0 mtu 9000
- 在交换机侧配置PFC和ECN,具体命令因交换机品牌而异,建议参考厂商文档。
注意:如果暂时没有支持PFC的交换机,可以先用普通交换机测试连通性,但生产环境不建议省略流控配置。
验证多机连通性与带宽
基础连通性用ping测试:
ping -c 4 192.168.100.12
若不通,检查网线、光模块、交换机端口VLAN和IP是否在同一网段。
带宽和RDMA功能建议用perftest工具验证:
# 服务端
ib_write_bw -d mlx5_0 -a
# 客户端
ib_write_bw -d mlx5_0 -a 192.168.100.11
预期结果应接近网卡标称带宽的80%以上。
如果远低于预期,检查MTU是否一致、PFC是否生效、PCIe插槽是否满足带宽。
用NCCL确认集合通信可用
NCCL是NVIDIA集合通信库,多机训练依赖它。
安装NCCL后,在两台节点上分别运行:
# node01
./nccl-tests/build/all_reduce_perf -b 8 -e 128M -f 2 -g 1
# node02(通过mpirun启动)
mpirun -np 2 -H 192.168.100.11:1,192.168.100.12:1 \
-mca btl_tcp_if_include ens1f0 \
./nccl-tests/build/all_reduce_perf -b 8 -e 128M -f 2 -g 1
输出中Avg bus bandwidth应接近计算网卡带宽。
如果报错NCCL WARN Call to ibv_modify_qp failed,通常是RoCEv2未正确启用或GID索引选错,可用show_gids检查。
避坑与高频问题
- 网卡识别不到:先确认
lspci | grep Mellanox能看到设备,再检查驱动是否加载。 - RoCEv2不通:确认
cma_roce_mode输出为RoCE v2,并检查交换机是否放行对应VLAN。 - NCCL走错网卡:设置环境变量
NCCL_SOCKET_IFNAME=ens1f0和NCCL_IB_HCA=mlx5_0强制指定。 - 性能抖动:检查是否启用PFC,以及MTU在整条链路是否一致。
收尾检查
完成上述配置后,建议重启一次所有节点,确认网络配置持久化生效。
用ip addr和ibv_devinfo复查接口状态,再跑一次NCCL测试作为基线。
后续扩容时,保持IP规划、MTU和RoCEv2配置一致,可以避免大部分互通问题。
如果集群规模超过8台,建议引入集中式监控(如Prometheus+Node Exporter)观察网卡丢包和PFC计数,提前发现拥塞。