英伟达把故障归因工具开源:一次GPU硬故障不再被读成多条NCCL报错
核心概要
分布式AI训练里,一处GPU或网络故障会在其他rank上引发NCCL报错、调度状态变化和大量下游消息,而异常只显示作业停在哪里。英伟达将内部使用的Attribution归因工具开源,它按作业范围汇集日志、指标、遥测和调度状态,用确定性规则区分下游症状与根因,并返回结构化诊断。在一个多rank训练示例中,它把node-02上的XID 149判为NVLink信号完整性问题的根因,把其他rank的NCCL报错保留为症状,并将作业判为硬件故障。
深度剖析
分布式AI作业的失败诊断从“看异常停在哪”变成“按作业给出根因、受影响节点和证据链”。 此前上报的异常只表明作业在哪里停下,不表明故障从哪里开始;单个错误还会级联成其他rank上的NCCL错误、调度器状态变化和成千上万条下游消息。 英伟达称该工具已在自家AI基础设施的生产环境中使用多年,每周分析数百万个作业、覆盖数十万台GPU;在一个大型RDMA集群中,它把端口错误、连接重置和调度事件关联起来,定位到特定主机端口和交换机端口附近的模式。
归因按一次作业尝试进行:先确定作业范围,再收集观测、抽取并关联事件,最后返回结构化结论。 这套流程由归因引擎驱动,通过Attribution Service以HTTP接口暴露,Attribution Blueprint负责对接集群调度器和遥测源并写回结果。 示例中应用日志含三条不同的NCCL错误,node-02的系统日志含XID 149,其错误字解码为NVLink信号完整性问题;规则保留该症状、降级其他节点症状,最终输出硬件故障归因并点名node-02。
规则是确定性的、可检查的,规则变更随Service一起提交发布,而不是通过HTTP接口动态上传。 确定性规则让结果可复现、可定制,结构化输出则让下游系统直接消费作业终态和归因域,而不必解析各产品自己的日志。 随附的SrunInvalidPyxisArgument规则识别应用日志中的无效Pyxis参数,并带有同处存放的测试用例;Service启动时加载内置规则目录并执行这些内联用例。
启示与展望
该工具面向集群运维与基础设施团队,用于在给定作业范围内诊断失败原因;随仓库提供的示例证据可在本地Docker环境中跑通,接入自有集群则需按Blueprint配置参考对接调度器和遥测连接器。
归因质量取决于底层遥测的质量与完整性;当多种原因都符合证据时,归因域会被标为ambiguous,诊断会记录这一区分而不是把不完整证据转成确定结论。
