训练容错
更新时间:2024-10-18
背景信息
在大模型的训练场景中,大多数是多机多卡、结合多种并行策略的分布式训练,训练规模大/时间长。
在训练过程中,可能会出现由于基础设施环境的偶发异常,导致训练业务的中断。为了保障大规模分布式训练任务稳定运行,百舸异构计算平台提供了任务自动容错的能力,支持对训练任务进行异常感知、容错判断以及自动恢复。
功能说明
百舸训练容错提供以下几方面能力:
- 训练异常感知:提供训练进程异常的感知能力,特别是针对于难以识别的任务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
百舸资源池已经默认安装以上组件,无需手动安装
提交任务&开启容错
通过yaml提交任务
在PytorchJob任务中新增容错开关的annotations,具体如下:
apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
annotations:
aijob.cce.baidubce.com/fault-tolerance-enabled: "true" # 容错配置开关
name: test-fault-tolerance
namespace: default
spec:
pytorchReplicaSpecs:
Master:
replicas: 1
restartPolicy: Never # restartPolicy配置为Never, 默认值为Always
......
Worker:
replicas: 1
restartPolicy: Never
......
通过百舸控制台提交任务
在百舸控制台创建任务>容错&诊断,开启容错。示例如下:
基于日志关键字的自定义容错
此功能适用于用户自定义训练异常,进行容错的场景。当训练进程出现自定义的异常时,您可以在训练日志中打印相关关键字,如"Loss nan"、"connect timeout"等。平台在训练实例的日志中匹配到预设日志关键字时(精确匹配),系统将启动训练容错。
注意:请务必合理设置,以避免任务被频繁容错重启。
容错事件
训练任务开启自动容错后,当任务异常触发容错判断时,会在任务层面生成容错的事件记录,记录容错发生的时间以及原因。
用户可以通过 百舸控制台 > 训练任务 > 任务事件 查询详细信息
注意事项
- 任务发生容错后原有Worker会被删除重调度,本地日志会丢失,建议开启日志持久化能力