GPU 训练网络故障排查手册:丢包、拥塞与 NCCL 超时
实验目标
万卡训练(11 章)对网络的依赖远超传统 HPC——AllReduce/All-to-All 高频跑在 IB/RoCE 上,网络一抖,训练就卡。但"训练慢"与"网络故障"之间隔着迷雾:慢可能是网络、可能是并行配置、可能是存储。本篇以症状 → 诊断 → 根因 → 修复的结构拆解三类高频网络故障:丢包与 PFC 风暴、拥塞与哈希极化、NCCL 超时与链路降级。命令为可复现操作,场景与解法来自集群运维经验,不编造环境数字。
故障一:丢包与 PFC 风暴(RoCE 场景)
症状:训练吞吐周期性下跌;ethtool -S 计数器中 rx_dropped/rx_crc_errors 增长;NCCL 日志出现 timeout;流控相关计数器异常。
诊断:
bash
# 网卡侧:看丢包与 PFC 计数(RoCE)
ethtool -S <nic> | grep -iE "drop|pfc|pause|crc" | head -20
# 交换机侧:看 buffer/丢弃与 PFC 计数
# (交换机 CLI,按厂商)show counters drop / pfc
# NCCL 日志:定位超时链路与对端根因与修复(按概率):
- PFC 死锁/风暴:单条链路拥塞 → PFC 反压扩散 → 对端停发 → 吞吐塌陷。修复:确认 PFC 只在无损类配置启用、队列映射正确;排查哈希极化导致的单链路过载(见故障二);
- buffer 不足:交换机 buffer 小、burst 大时丢包。修复:按 03 章 RoCE 架构调 buffer/ECN 阈值;
- 链路质量差:光模块/线缆问题导致 CRC 增长。修复:换线、查光功率(
ethtool -m或交换机光学读数)、对照 01 章交付基线。
工程观察:RoCE 丢包故障中"PFC 风暴 + 哈希极化"组合最常见——单看丢包会修错方向,先看是"丢包后重传"还是"PFC 反压导致停发",两类症状对应的修法完全不同。
故障二:拥塞与哈希极化
症状:全网带宽够,但 NCCL 测试(03 章)某些链路带宽低、时延高;多对一通信(AllReduce 汇聚)时吞吐骤降。
根因与修复:
- 哈希极化:流哈希把多条大流压到同一物理链路,链路过载而邻居空闲。修复:启用**自适应路由(AR, Adaptive Routing)**或等价动态负载均衡(03 章 RoCE 架构篇);无 AR 时用多路径哈希 + 大流拆分;
- 多对一拥塞:AllReduce 汇聚流量在交换机处拥塞。修复:多轨拓扑(同号 GPU 就近,03 章)、ECN 标记 + 网卡侧响应、流量整形;
- 拓扑不对称:部分链路路径长/带宽低。修复:对照网络拓扑图核对光纤连接与 SU 分组(02 章机架布局),修正错连。
诊断命令:03 章 NCCL 测试跑 all_reduce 逐链路带宽(nccl-tests 或自研脚本输出每链路速率),低于基线即定位;配合交换机 show interface 看端口利用率分布。
故障三:NCCL 超时与链路降级
症状:NCCL 报 timeout / connect timed out / retries exceeded;训练中断或挂起。
根因与修复:
- 链路降级:IB/RoCE 链路从 x4 掉到 x2/x1(光模块/线缆/端口问题)。修复:
ibstat/iblinkinfo(IB)或ethtool(RoCE)查链路速率与协商状态;对照交付基线确认未降级; - NCCL 参数失配:
NCCL_SOCKET_IFNAME、NCCL_IB_DEVICES选错网卡/设备导致走错路径。修复:核对 03 章 NCCL 调优篇的参数基线; - 拓扑感知关闭:
NCCL_TOPO_FILE未配或错误,NCCL 通信路径非最优。修复:生成正确的拓扑文件,验证NCCL_DEBUG=INFO日志中路径选择; - 交换机/网卡固件版本漂移:部分节点固件旧导致兼容问题。修复:对照 01 章固件基线全网一致。
排查决策树
训练慢/卡顿
├─ ethtool/NCCL 日志有丢包?
│ ├─ 是 → PFC 计数异常?→ 故障一(PFC 风暴/buffer)
│ │ └─ 否 → CRC/链路质量 → 换线/查光
├─ NCCL 测试链路带宽不均衡?
│ ├─ 是 → 哈希极化/拓扑不对称 → 故障二(AR/多轨/拓扑核对)
├─ NCCL timeout/connect 失败?
│ ├─ 是 → 链路降级/参数失配/拓扑文件 → 故障三
└─ 网络指标全正常 → 排查并行配置(09 章)与存储(04 章)网络排查检查清单
- [ ] 丢包先分"重传型"与"PFC 反压型",再定修复方向
- [ ] 哈希极化确认(链路利用率分布 vs 流分布),AR/动态均衡就绪
- [ ] 多对一拥塞用多轨拓扑 + ECN + 整形缓解
- [ ] NCCL 链路速率/协商对照交付基线,无降级
- [ ] NCCL 参数(IFNAME/IB_DEVICES/TOPO)核对基线,DEBUG 日志确认路径
- [ ] 固件版本全网一致(01 章基线)
工程启示
- 先分症状再修:丢包/拥塞/超时三类故障症状不同、修法不同——先定位类别,再动手;
- 基线是排查的锚:03 章 NCCL 基线 + 01 章固件基线,是"网络是否变差"的唯一参照;
- 网络排查与训练观测联动:训练日志(NCCL timeout)与网络计数器(丢包/PFC)一起看,才不冤枉网络或放过网络。
下一篇预告:网络健康后,推理侧继续演进——下一篇《投机解码:原理、工程实现与收益边界》拆解"用一个小模型加速大模型"的推理加速技术。