Skip to main content
自动容错适合长时间训练任务,用于在节点、进程或通信异常时自动重试任务,减少人工值守。训练进度能否恢复,取决于训练程序是否把 checkpoint 写入持久化 Volume,并在新尝试中正确加载。

自动容错如何工作

自动容错通常按以下链路工作:
  1. 健康检测:平台监测进程退出、GPU / 硬件错误、通信挂起等异常,并根据日志和错误信息做故障分类。开启容错后,平台通常会在训练正式开始前执行启动前健康检测,用于提前发现节点或通信环境异常。
  2. 故障处置:根据故障类型尝试原地重启、重新提交、隔离疑似故障节点或触发二分诊断等动作;具体支持范围以当前平台能力为准。
  3. 自动重试:在最大重试次数内拉起新的重试任务,形成原任务和各次重试任务组成的容错重试链。

选择容错模式

基础容错可用于 PyTorchJob 和 RayJob;容错策略和 Hang 检测主要面向 PyTorchJob。具体可选项以创建训练任务时的 高级选项 为准。 自动容错存在误判和漏判可能。对稳定性要求高、不能接受意外重启的任务,可以先只开启基础重试,或谨慎开启更激进的容错策略。对于显存溢出、代码错误、数据路径错误等需要修改配置或脚本才能解决的问题,自动重试通常无法根治。

配置自动容错

创建训练任务时,可在 高级选项 中开启 自动容错,并设置任务级重试预算。该预算用于控制任务失败后自动重新提交的次数;原地进程重启、节点规避或诊断动作是否发生,取决于当前任务类型、容错策略和平台能力。 训练任务自动容错配置 如果需要在任务退出前通知训练程序保存状态,可在 PyTorchJob 中接入 退出 checkpoint 通知。训练程序需要实现 /v1/preempt/notify 和 /v1/preempt/status,用于接收保存通知并返回保存结果;创建任务时按页面展示配置程序监听端口。
退出 checkpoint 通知不能替代周期性 checkpoint。节点断电、进程异常退出等场景可能无法完成退出前通知;正式长时间训练仍应定期把模型、优化器、学习率调度器、训练步等必要状态写入持久化 Volume。

查看容错重试链

开启自动容错后,可以在任务详情页的 容错详情 中查看原任务和重试任务的状态、故障说明、起止时间和处理结果。 查看时重点关注:
  • 哪一次重试开始失败。
  • 故障是否集中在某个节点或某类错误。
  • 是否已达到最大重试次数。
  • 任务是否进入容错停止或容错失败状态。
  • 重试任务是否已经使用新的节点、配置或恢复动作。
查看重试链后,还需要进入最新一次尝试的日志,确认训练脚本已经加载 checkpoint,并且训练步、指标或输出文件继续推进。只看到平台重新提交任务,不等于业务训练进度已经恢复。

故障类型和处理方式

平台会根据日志和错误信息匹配故障类型。故障分类用于辅助判断和恢复,不等同于确诊根因。

判断恢复结果

排查自动容错时,先判断平台采取了哪类动作,再确认训练是否真正恢复。 恢复后的最新尝试进入运行中后,还需要继续验证业务训练进度:
  • 在日志中确认训练脚本加载了预期 checkpoint。
  • 比较恢复前后的训练步、loss 或业务指标,确认训练继续推进。
  • 检查新的 checkpoint 和输出文件是否写入成功。
  • 记录原任务 ID、最新尝试 ID、恢复动作、checkpoint 路径和关键日志,便于后续排查。

相关文档