跳转到内容

拥塞、抖动与网络故障

同步训练里,几万张卡每一步都在等彼此。一个节点的网络慢 20%,全集群的 step time 就慢 20%——没有任何摊薄。网络问题在大规模集群里不是"偶尔慢一点",而是"一个坏点拖垮全部"。本章讲清楚三类现实问题:拥塞、抖动、故障,以及各自的检测与处理。

以 DP 梯度同步为例:Ring all-reduce 在环上转两圈,环速由最慢链路决定;一次 all-reduce 没完成,全体卡都在等。算一笔账(万卡,step time 10 s,其中梯度同步 1 s):

异常影响全集群损失
一个节点网卡降速到 200G该环 all-reduce 时间 ×2step time +10%
一个节点光模块误码重传该环延迟抖动step time +5–20%,随机
一台 spine 拥塞跨组流量拥堵所有跨组 DP 组变慢

损失的规模与异常点的数量无关,与异常点的位置有关。 这就是网络监控必须做到"链路粒度"的原因:平均值毫无意义,长尾才是全部。

多个源同时向一个目标发送(参数服务器、检查点写入、分层 all-reduce 的汇聚点),交换机入端口队列瞬间溢出。RDMA 假设不丢包,溢出触发 PFC——于是:

PFC 暂停帧向上游传播:下游拥塞 → 暂停上游 → 上游队列溢出 → 再暂停更上游……一个端口的拥塞能级联成全网停摆。这是 RoCE 集群最恶名昭著的故障模式,特征是"全网所有链路同时降速、找不到单点原因"。

防御:PFC 只对 RDMA 流量优先级开启、headroom 精确配置、监控每端口的 PFC 暂停计数(持续非零就是预警)。

ECN 在队列超阈值(Kmin)时标记、超上限(Kmax)时丢弃,源端 DCQCN 据此降速。参数错配的症状:

  • Kmin 太低:动不动就标记,带宽上不去(症状:busbw 只有线速 50–60%)
  • Kmax 太高:拥塞压不住,队列溢出丢包(症状:延迟毛刺、重传)
  • 与交换机配置不一致:两端各说各话

RoCE 集群上线时必须按厂商参考(Mellanox/NVIDIA 的 RoCE 部署指南)端到端核对,两端(网卡 + 交换机)参数一致是底线。

抖动(jitter)= 同一操作的时间方差。对同步训练,抖动比平均延迟更致命:

理想: all-reduce 每步 990 ms,整齐
现实: 985, 990, 1240, 988, 3050, 992, ... ← 毛刺

每一步都要等最慢的那次。5% 的毛刺概率 × 10 倍毛刺时长 = 平均 step time +45%。常见毛刺源:

源特征检测
光模块误码FEC 纠错计数增长,重传ethtool -S 看 FEC/Corrected Errors
链路 flap短暂 down/up,路由重算链路状态日志,LLDP 抖动
拥塞毛刺队列瞬时超限交换机队列深度遥测(telemetry)
跨流量干扰存储流量挤训练流量物理隔离或 QoS 分级
自适应路由重排乱序到达,重组开销环境变更时对比

训练侧的对策:把网络遥测(每链路 FEC/CRC/PFC/队列深度)与训练 step time 对齐采样——毛刺时刻反过来查网络计数器,定位准确率远高于事后猜测。

大规模集群的真实故障统计里,网络故障的头号来源不是交换机,是光模块(数量最大:万卡集群数万个,且对温度/灰尘敏感)。其次是线缆与连接器,再次才是交换机芯片与网卡。

按影响分类与处理:

故障症状处理
光模块劣化FEC 计数持续增长,无硬错误计划性更换(别等它坏)
链路硬故障down 或 CRC 错误暴涨立即隔离该链路
节点网卡故障该节点通信超时立即把节点踢出训练
交换机端口故障一组链路同时异常流量切到冗余路径
网络分区(脑裂)部分节点互相不可达训练必然失败,靠容错机制

训练侧的关键设计是"快速隔离坏点":一个坏节点留在环里,每步 all-reduce 都超时重试,拖垮全体;踢出去,集群损失 1/10000 的算力继续跑。生产集群标配:训练健康检查 + 自动排除(连续 N 次通信超时 → 通知调度器摘除节点 → 集群缩小规模继续,见训练容错)。

按"能回答三个问题"来建:

  1. 现在谁慢? 每链路的吞吐、FEC/CRC、PFC/ECN 计数、队列深度——链路粒度,不是交换机粒度。
  2. 毛刺时刻发生了什么? 训练 step time 与网络计数器对齐采样,可回溯。
  3. 有没有坏点? 定期全网扫描(ibdiagnet、交换机健康巡检),趋势化的 FEC 增长是更换依据。
  • 同步训练无摊薄:一个节点慢 20%,全集群慢 20%;损失取决于异常位置而非数量。
  • 拥塞三坑:Incast 触发 PFC、PFC 风暴级联停摆、ECN/DCQCN 两端参数错配。
  • 抖动比平均慢更致命:5% 概率 × 10 倍毛刺 ≈ 平均 +45%;训练时间与网络计数器对齐采样是定位关键。
  • 光模块是故障第一大户:FEC 计数趋势化监控,计划性更换优于等它坏。
  • 快速隔离坏点(自动踢节点)比修复它更划算:留坏点拖垮全体,踢掉只损失 1/N 算力。