诊断前确认
- 任务类型为 PyTorchJob。
- 任务运行在 2 个或以上节点。
- 任务状态为 运行中、失败、成功 或 异常。
- 已评估诊断对当前任务的影响。对 运行中 任务发起诊断时,平台可能会先停止当前任务,再基于当前机器列表启动新的诊断任务;因此应先确认训练输出、checkpoint 或重要日志已写入持久化 Volume。
- 诊断完成后需要清理诊断会话,避免节点锁定影响后续调度。
工作方式
一轮诊断通常包括:- 预检并锁定节点:检查节点健康状态、GPU 资源和是否被其他诊断会话占用。预检通过后,平台会锁定相关节点,避免诊断过程被其他任务干扰。
- 执行二分:将节点拆分为 Group A 和 Group B,为每组创建独立子任务运行原始训练命令或诊断命令。
- 判断故障侧:根据两组任务是否复现异常,判断故障更可能位于哪一组。
- 清理诊断会话:诊断完成后,停止未完成的子任务并解除节点锁定。
判断故障侧
当某组只剩 1 个节点且仍复现故障时,通常可将该节点作为疑似故障节点继续处理。
诊断模式
查看诊断结论
诊断结果通常会展示每轮分组结果、判定依据和处理建议。结论会区分故障节点和慢节点:故障节点通常表示复现失败或异常,可能在结果中以faultyNode 表示;慢节点通常表示性能明显掉队但不一定直接失败,可能在结果中以 slowNode 表示。
对于 perf 模式,结果还可能包含每轮分组的平均带宽、平均算力或平均 Model MFU 等性能指标,用于判断是否存在明显掉队节点。
Bisect Diagnose 可以由您主动发起,也可能作为自动容错的处置动作触发。当自动容错需要进一步定位故障节点时,平台可能会通过 NODE_BISECTION 等处置动作拉起二分诊断;具体触发条件以当前容错配置和平台能力为准。
