了解自动容错
了解容错能力
训练任务容错由以下能力组成。不同能力的适用任务和处理目标不同。
容错策略 和 任务挂起(Hang)检测 存在联动关系:关闭 容错策略 会同时关闭 任务挂起(Hang)检测;开启 任务挂起(Hang)检测 会同时开启 容错策略。退出 checkpoint 通知 是独立能力,不属于下方三种容错模式。
选择容错模式
了解每项能力后,根据任务类型、训练时长和需要处理的故障选择基础模式或组合模式。
RayJob 使用基础模式,不套用 PyTorch 专属配置。
理解恢复机制和能力边界
发生符合条件的故障后,平台通常按以下链路处理:- 检测故障:监测进程退出、GPU 或硬件错误、通信挂起等异常,并根据日志和错误信息辅助判断故障类型。开启相关能力后,平台还可能在训练正式开始前执行健康检测。
- 选择恢复动作:根据故障类型和当前配置,原地重启进程、重新提交任务、规避疑似故障节点或触发诊断。
- 继续训练:如果训练程序已经保存 checkpoint,新的进程或任务可以从 checkpoint 继续训练。
准备 checkpoint
训练进度能否恢复取决于训练程序是否正确保存和加载 checkpoint。配置自动容错前,完成以下准备:
checkpoint 保存频率需要平衡存储开销和重跑成本。仅保存模型权重通常只适合初始化或微调,不一定能支持完整续训。
配置自动容错
创建训练任务时,在 高级选项 中配置自动容错。1. 设置任务重试预算
开启 自动容错,设置 任务最大重启次数。该参数控制任务失败后自动重新提交的次数,与原地进程重启分别计数。
通过 API 配置时,任务重试预算为
0 表示不触发任务级重跑流程;负数不表示无限重试。
2. 按需配置 PyTorch 高级能力
PyTorchJob 可以继续配置 容错策略 和 任务挂起(Hang)检测。
页面当前说明在任务启动
30 分钟后开始 Hang 检测。以上数值用于说明当前配置方式,不代表不同集群和后续版本始终使用相同默认值。
接入退出 checkpoint 通知
退出 checkpoint 通知与自动容错相互独立。如果需要在任务退出前通知训练程序保存状态,需要完成程序接口接入,并在创建 PyTorchJob 时开启对应配置。- 在训练程序中实现
/v1/preempt/notify,用于接收 checkpoint 保存通知。 - 实现
/v1/preempt/status,用于返回保存结果。 - 在 PyTorchJob 创建页开启 退出ckpt通知,并配置程序监听端口。页面当前默认端口为
9000,取值范围为9000到9999。 - 使用测试任务验证通知接收、保存结果上报和恢复逻辑。
600 秒;抢占、手动停止或删除可能因此延后完成,可结合训练程序的保存日志判断进度。
查看并验证恢复结果
1. 查看容错记录
如果任务开启了自动容错,或任务状态出现容错相关子状态,可进入 容错详情 页签查看恢复过程。- 单击任务名称,进入训练任务详情页。
- 打开 容错详情 页签。
- 查看重试链路、故障说明和重试任务状态。
2. 判断恢复动作
先确认平台执行了哪类恢复动作,再确定下一步。
如果 容错详情 中显示故障类型,可使用下表理解分类结果。故障类型来自日志和错误信息匹配,用于辅助解释恢复记录,不等同于确诊根因。
需要进一步定位原因时,请参见 排查训练任务问题;多机训练需要定位疑似故障节点时,可使用Bisect Diagnose。
3. 验证训练进度
平台重新拉起进程或提交任务,不等于业务训练进度已经恢复。进入最新一次尝试后,继续确认:- 任务已经获得资源,相关实例已就绪。
- 日志显示训练程序加载了预期 checkpoint。
- 恢复前后的训练步、loss 或业务指标能够连续推进。
- 新的 checkpoint 和输出文件写入成功,没有产生异常重复输出或数据处理。
常见问题
开启自动容错后为什么没有生成新任务?
开启自动容错后为什么没有生成新任务?
先查看 容错详情,确认平台是否执行了原地重启、是否达到 任务最大重启次数,以及是否因人工停止或快速失败策略停止恢复。原地重启不会生成新的任务记录。
任务运行中但训练停滞,自动容错一定会处理吗?
任务运行中但训练停滞,自动容错一定会处理吗?
不一定。Hang 检测适用于 PyTorch GPU 任务,并依赖当前集群的检测和恢复组件。低 GPU 利用率不能单独判定 Hang;请结合训练步、日志、堆栈、监控和正常耗时阶段判断。
重新提交后的任务为什么仍然排队?
重新提交后的任务为什么仍然排队?
新尝试仍需要重新获得资源。请查看关联任务的 事件,核对资源配额、资源池可用量、节点规避策略和调度约束。容错动作规避疑似故障节点后,可用节点范围可能缩小。
为什么每次恢复都从第 0 步开始?
为什么每次恢复都从第 0 步开始?
检查恢复命令、checkpoint 挂载路径、文件完整性和读写权限。平台可以重新拉起任务,但训练程序需要主动加载 checkpoint 并从正确的训练步继续。
相同错误反复出现时还应该继续自动重试吗?
相同错误反复出现时还应该继续自动重试吗?
如果任务每次都在相同步骤发生 OOM、路径错误或依赖失败,应先修正 batch size、资源配置、数据路径、镜像或程序问题。增加重试次数通常无法解决确定性错误。
为什么任务重启过于频繁?
为什么任务重启过于频繁?
对照 容错详情 中的故障分类和训练阶段,检查 Hang 检测窗口是否覆盖模型加载、数据准备、评估等正常长耗时阶段。窗口设置过短可能增加误判风险。
为什么容错次数与任务数量不同?
为什么容错次数与任务数量不同?
任务级重新提交和原地进程重启分别计数,诊断过程还可能产生关联记录。请在 容错详情 中区分任务重跑、原地重启和诊断动作,不要仅按任务列表数量推算容错次数。
