训练容错
概述
本文档介绍百舸 AI 计算平台训练任务自动容错能力的功能说明、使用前提、开启方式,以及容错通知和容错事件的查看方法。在大模型训练场景中,大多数训练任务是多机多卡、结合多种并行策略的分布式训练,通常训练规模大、运行时间长。训练过程中,可能会出现由于基础设施环境偶发异常导致训练业务中断的情况。为保障大规模分布式训练任务稳定运行,百舸 AI 计算平台提供任务自动容错能力,支持对训练任务进行异常感知、容错判断和自动恢复。
功能说明
为了保障大规模分布式训练任务的稳定运行,百舸提供容错监控、诊断定位和自动恢复能力。
百舸容错架构由故障探测 Agent 和中心化的 Master(资源池维度)组成:
- 故障探测 Agent 作为 sidecar 运行在客户业务 Pod 内,与训练进程完全独立,用于探测训练进程。
- 中心化的 Master 组件汇聚故障探测 Agent 的探测信息,从任务全局视角诊断、定位异常,并最终做出相应决策,使任务能够快速从异常中恢复。

目前百舸训练容错可以覆盖多类场景的故障感知定位和自动恢复能力:
- 训练进程报错异常退出。
- 训练心跳失联。
- NCCL/CUDA 系统报错日志。
- Pod 被误删除或驱逐。
- 训练进程 hang。
前提条件
- 仅支持 PyTorch 训练框架。
- 训练任务的
restartPolicy需配置为Never。 - 资源池已经开启 自动故障隔离能力。
-
资源池已经安装百度云 CCE Deep Learning Frameworks Operator 组件和 CCE AI Job Scheduler 组件:
- CCE Deep Learning Frameworks Operator:主流深度学习框架 operator 组件,要求组件版本 >= 1.6.10。
- CCE AI Job Scheduler:任务调度组件,支持调度管理各种 AI 任务,要求组件版本 >= 1.7.7。
- 通过 CLI 提交任务前,需准备运行中的资源池、可用队列和可访问的数据源。
百舸资源池已经默认安装以上组件,无需手动安装。
提交任务&开启容错
通过百舸控制台提交任务
在百舸控制台 创建任务 > 容错&诊断,开启容错。示例如下:

高级配置说明
| 参数 | 说明 |
|---|---|
| 任务 hang 检测 | 用于检测任务运行时是否出现 Hang 异常。如果所有实例的 Stdout 和 Stderr 日志在指定时间内没有更新,平台会初步判断任务 hang,并在任务事件中记录。可结合任务告警进行通知。 |
| 自定义训练异常 | 适用于用户自定义训练异常并触发容错的场景。训练进程出现自定义异常时,可在训练日志中打印预设关键字。平台在训练实例日志中精确匹配到关键字后,会启动训练容错。 |
| 无条件重试 | 任务在未检测到节点故障的场景下失败时,可开启无条件重试,通过重调度任务尝试容错恢复。重试次数最大可设置为 3 次。 |
| Replace 容错模式 | 容错时仅销毁并重调度故障 Pod,正常 Pod 不受影响,可减少任务重启恢复时长。 |
注意: 请合理设置容错与重试策略,避免任务被频繁容错重启。
Replace 容错模式说明
- 开启 Replace 容错模式后,百舸会尝试替换训练镜像中的 elastic agent,并将任务切换为 c10d 模式。
- 开启要求:PyTorch 版本 >= 2.0.0,Python 版本 >= 3.8.0。
- 兼容性检查:开启 Replace 容错模式后,系统会自动检测 PyTorch 和 Python 版本。若符合要求,则启用 Replace 容错模式;否则自动使用默认容错模式。
- 限制:如任务 master0 实例故障,则 Replace 容错模式不生效,并自动退化为 默认容错模式。
通过 CLI 提交任务并开启容错
AIHC CLI v1.6.0 使用 job create 子命令创建训练任务。开启容错时,可配置 --enable-fault-tolerance;如需兼容已有任务脚本,也可保留 --env faulttolerance=true。
1aihc job create -p <资源池 ID> -q <队列 ID 或队列名称> \
2 --name <任务名称> \
3 --priority <优先级> \
4 --script-file <训练脚本路径> \
5 --image <训练镜像地址> \
6 --label <标签键>=<标签值> \
7 --gpu <GPU 资源名称>=<数量> \
8 --env CUDA_DEVICE_MAX_CONNECTIONS=1 \
9 --env faulttolerance=true \
10 --enable-fault-tolerance \
11 --ds-type <数据源类型> \
12 --ds-name <数据源名称> \
13 --ds-mountpath <数据源挂载路径>
容错监控
容错通知
在 创建任务 > 高级配置 > 告警 的选项中,配置任务容错告警通知,支持通过邮件、短信、电话、钉钉、企业微信、飞书等机器人 Webhook 地址等通知方式,可参考: 配置训练任务的消息通知
容错事件
训练任务开启自动容错后,当任务异常触发容错判断时,会在任务层面生成容错的事件记录,记录容错发生的时间以及原因。
用户可以通过 百舸控制台 > 训练任务 > 任务事件 查询详细信息
评价此篇文章
