多机 GPU 训练变慢,很多人先怀疑 GPU 不够快,最后才发现瓶颈在网络。
单机内看 PCIe、NVLink 和 NVSwitch,跨机看 RDMA。RDMA 是能力,InfiniBand 和 RoCE 是两种常见承载方式。云厂商写"支持 RDMA",只说明具备低延迟、高吞吐的数据通路,不说明是否有独立 IB 网络、是否无损、是否 rail-optimized,也不说明价格里是否包含交换网络。
这篇先把多机训练的四层带宽拆开,再给出 NCCL 测试、拓扑核验和价格换算方法,最后再对比厂商。
直接结论
| 训练规模 | 优先关注 | 不该只看 |
|---|---|---|
| 单机 8 卡以内 | PCIe、NVLink、NVSwitch | 跨机 RDMA |
| 2 到 4 台机器 | 节点间 RDMA、NCCL 带宽、交换机收敛比 | GPU 单卡峰值算力 |
| 8 台以上或 MoE/长上下文 | 多级交换、rail 拓扑、拥塞控制、存储网络 | 每 GPU 每小时标价 |
| 多机推理与 PD 分离 | KV 传输、RDMA 时延、缓存网络 | 只看单卡显存带宽 |
| 可中断批处理 | 抢占式价格、checkpoint、重跑成本 | 是否支持 IB |
一句话判断:单机看 NVLink,多机看 RDMA,真正买单看端到端训练步时间和可用的网络拓扑。
先把四层带宽分开
| 带宽层级 | 典型技术 | 影响什么 |
|---|---|---|
| 显存带宽 | GDDR6X、HBM2e、HBM3 | Decode、单卡数据搬运 |
| 机内互联 | PCIe、NVLink、NVSwitch | 张量并行、专家并行、单机多卡通信 |
| 跨机互联 | RDMA、InfiniBand、RoCE | AllReduce、AllGather、AlltoAll、跨机 KV |
| 存储与公网 | 对象存储、并行文件系统、公网/EIP | 数据加载、checkpoint、模型分发 |
这四层不能相加,也不能互相替代。HBM 带宽再高,跨机 AllReduce 仍可能卡在网络;RDMA 再快,存储读不出来也会让 GPU 等数据。
RDMA、IB 与 RoCE 的区别
| 维度 | InfiniBand | RoCEv2 | 云上 eRDMA/自研 RDMA |
|---|---|---|---|
| 网络基础 | 专用 IB 网络 | 以太网承载 RDMA | 复用 VPC 或自研网络 |
| 主要优势 | 低延迟、无损网络成熟、HPC 生态完整 | 复用以太网运维体系 | 开通灵活、成本可能更低 |
| 主要难点 | 专用交换机和运维成本 | PFC/ECN、拥塞和丢包调优 | 规格、跨 AZ 延迟和兼容性 |
| 适用场景 | 大规模紧耦合训练 | 已有以太网团队的训练集群 | 弹性 AI 训练和推理 |
InfiniBand 不是"更高级的 TCP"。它是一套独立的网络协议、交换机和管理体系;RoCE 也不是普通公网 TCP,而是要求无损或近似无损以太网、合理的拥塞控制和网卡配置。
RDMA 的核心价值是零拷贝、内核旁路、低 CPU 占用和低延迟。GPU 训练还要配合 GPUDirect RDMA,让网卡直接读写 GPU 显存,避免数据先复制到主机内存。
但 GPUDirect RDMA 有实现条件:GPU 和网卡之间的 PCIe 拓扑、IOMMU、BAR 空间、驱动和 nvidia-peermem 都会影响是否真正启用。页面写"支持 GPUDirect",不等于每个实例规格默认跑通。
多机训练为什么会被网络拖慢
以 Ring AllReduce 为例,单个 GPU 发送量近似为:
text
单卡发送量 ≈ 2 × (N - 1) / N × 模型梯度大小
8 卡训练时,1GB 梯度对应的单卡近似发送量约为 1.75GB。网络有效带宽只有 25GB/s 时,仅 AllReduce 就可能接近 70ms;如果实际拓扑、拥塞或 NCCL 通道更差,训练步时间会继续上升。
NCCL 常用两个指标:
text
算法带宽 = 消息大小 ÷ 通信时间
总线带宽 = 算法带宽 × 2 × (N - 1) / N
不同测试工具和厂商有时报 algbw,有时报 busbw,不能直接横比。采购时要求对方提供同样 GPU 数、消息大小和 NCCL 版本的完整结果。
多机网络要测什么
至少运行四组测试:
| 测试 | 目的 | 观察指标 |
|---|---|---|
ibstat / ibv_devinfo |
确认 IB/RoCE 设备和端口状态 | 速率、链路、GID、错误计数 |
nvidia-smi topo -m |
确认 GPU 与网卡拓扑 | GPU-NIC affinity、跨 NUMA |
| NCCL AllReduce | 测集合通信 | 8MB、128MB、1GB、4GB 的 busbw |
| 真实训练 step | 验证端到端效率 | step time、扩展效率、GPU 利用率 |
建议同时记录:
- 2、4、8、16 节点的扩展曲线。
- P50/P95 通信时间和抖动。
- 是否有 rail-optimized 组网。
- 交换机超额订阅比。
- 是否跨可用区。
- NCCL 实际是否走 IB/RoCE,而不是回退到 TCP。
常用排障工具包括 NCCL_DEBUG=INFO、NCCL_IB_HCA、NCCL_SOCKET_IFNAME 和 NCCL Tests。看到网卡存在不代表 NCCL 已经在用;看到 NET/IB 或 NET/ROCE 日志,才说明路径进入预期传输层。
拓扑比"端口速率"更重要
一台机器有 8 张 GPU 和 8 张 400Gbps 网卡,不等于 8 张卡能同时无阻塞访问任意节点。
需要确认:
- 每张 GPU 是否绑定到固定网卡和固定 rail。
- 8 个 rail 是否分别进入独立 leaf。
- leaf 到 spine 是否全互联,还是 1:2、1:4 收敛。
- 多机 AlltoAll 是否会产生跨 rail 绕行。
- 存储流量是否与训练流量共用网卡或交换机。
- 故障时是否支持链路切换和 NCCL 重试。
Rail-optimized 适合大规模同步训练;普通 VPC RDMA 更适合弹性、中等规模和推理。两者都能叫 RDMA,但性能和价格不在同一档。
云上 RDMA 的三种常见形态
独立 InfiniBand 集群:专用交换网络,适合大规模训练。成本最高,交付周期和运维门槛也最高。
RoCE/eRDMA:复用或增强以太网,开通更灵活,适合云上弹性训练。需要重点核验拥塞控制、跨 AZ 延迟和 GPU 实例兼容性。
普通 VPC + TCP:适合小模型、低并发和数据预处理,不适合把它当成大规模紧耦合训练网络。
有些平台会把"高内网带宽""RDMA 监控""GPUDirect"分别写在三个页面。采购时要把它们拼成一条完整链路,而不是各看各的。
价格怎么比
多机训练不能只比 GPU 每小时价格。建议用:
text
每 GPU 每小时成本 =
(GPU 实例 + 存储 + 网络 + 软件 + 支持)÷ GPU 数 ÷ 小时
再看单位训练成本:
text
单个训练 step 成本 =
集群每小时成本 ÷ 3600 × step 时间
单个 epoch 成本 =
总租赁成本 ÷ 成功完成 epoch 数
网络溢价也要单独算:
text
网络溢价率 =
(高速互联实例价格 - 普通实例价格)
÷ 普通实例价格
价格表必须写清是否包含:
- IB/RoCE 交换机端口和线缆。
- 公网与存储流量。
- 本地 NVMe 或并行文件系统。
- 镜像、调度器和平台软件。
- 故障重跑、快照和支持服务。
8 卡高速互联整机与单卡按量实例不是同一商品。拿单卡时价乘 8,不能得到一张带无损网络、存储和 SLA 的多机训练账单。
怎么选
先做 PoC :用 2 台节点、8 到 16 张 GPU,跑目标模型的 1B 到 10B 小规模版本,测 NCCL 与真实 step,不要只跑 ping。
中等规模微调:2 到 4 节点,优先 RoCE/eRDMA 或云厂商高速网络,重点看扩展效率和交付时间。
大模型预训练/MoE:优先独立 IB 或 rail-optimized 集群,要求供应商给出完整拓扑、交换机和 NCCL 结果。
多机推理/PD 分离:RDMA 有价值,但要先确认 KV 传输是否真是瓶颈;有些最佳配置只做 Router 分发,不需要跨机 KV。
预算敏感批处理:可以使用抢占式或弹性实例,但必须有 checkpoint、重试和降级路径。网络再便宜,重跑两次也不便宜。