昇腾社区首页
中文
注册
开发者
下载

进程级在线恢复

进程级在线恢复(Step级别重计算恢复)主要针对以下2种故障类型进行故障处理:

  • 网络故障:当前仅支持以下两种场景。
    • HCCS L1-L2端口或链路故障时,BGP切路后,若开启算子级在线恢复且执行失败后进行Step级重试,实现进程不退出的故障快速恢复;若关闭算子级在线恢复,则对训练进程进行Step级重试,实现进程不退出的故障快速恢复。
    • RoCE到上级端口或链路故障,且开启算子级在线恢复并执行失败时,对训练进程进行Step级重试,实现进程不退出的故障快速恢复。
  • 片上内存故障:片上内存上出现的不可纠正错误(如故障码0x80E01801),先隔离故障片上内存空间,然后对训练进程进行Step级重试,实现进程不退出的故障快速恢复。

在以上2种场景下,如果故障不能恢复,则回退至重调度模式

相比于进程级别重调度,进程级在线恢复不会重调度故障进程,减少了大量进程间不同步的等待耗时。同时通过NPU卡间的参数面高速网络P2P传递CKPT信息,避免了CKPT保存和加载的耗时。

该故障处理模式默认关闭,若要开启请参考(可选)配置组件

了解进程级在线恢复的关键配置步骤,请参见配置进程级在线恢复

  • 参数面传递CKPT信息依赖未故障卡中的全量优化器副本,如果不存在全量优化器副本,则回退为加载存储上的CKPT文件恢复参数。
  • 优化器副本会占用额外的显存,如果用户的显存较为紧张,可选择本地加载模式,无论是否存在优化器副本都直接加载存储上的CKPT文件恢复参数。

使用约束

  • 使用进程级别在线恢复需要满足的版本配套关系如下。
    • PyTorch版本为2.7.1。
    • MindSpeed-LLM版本为2.3.0。
  • 依赖于PyTorch的内存管理机制,仅在PYTORCH_NO_NPU_MEMORY_CACHING未配置时才能使用此功能。
  • 针对部分片上内存故障场景无法生效,例如HCCL集合通信使用的内存地址故障,仍需通过进程级重调度或更上层的容错方案恢复。
  • 针对MindSpeed-LLM、MindSpeed等模型或训练脚本中定义的全局变量发生故障的场景,详细处理策略请参见FAQ
  • 与优雅容错不能同时开启。若同时开启,断点续训将通过Job级别重调度恢复训练。
  • MindSpore场景下,为保证本功能的正常使用,请将MindSpore和MindIO安装在同一路径下。
  • MindSpore场景下,需要在启动TaskD Manager前设置export TASKD_PROCESS_ENABLE="on"。
  • 请勿使用ConfigMap挂载RankTable文件,否则可能会导致任务重调度失败。
  • 不支持多模态模型。
  • 不支持MC2开启场景。
  • 不支持开启watchdog功能。
  • 当故障发生在HCCL建链阶段时,会导致进程级在线恢复失败。如果除训练初始化的HCCL建链外,还存在其他训练阶段的HCCL建链,可参考配置HCCL主动触发建链章节进行提前建链,防止故障出现在HCCL建链阶段。

支持的产品型号及AI框架

表1 网络故障进程级在线恢复支持的产品和框架

产品系列

产品名称

训练框架

Atlas A3 训练系列产品

  • Atlas 900 A3 SuperPoD 超节点
  • Atlas 800T A3 超节点服务器
  • MindSpore
  • PyTorch
表2 片上内存故障进程级在线恢复支持的产品和框架

产品系列

产品名称

训练框架

Atlas A2 训练系列产品

  • Atlas 800T A2 训练服务器
  • Atlas 900 A2 PoD 集群基础单元
  • Atlas 900 A2 PoDc 集群基础单元
  • MindSpore
  • PyTorch

Atlas A3 训练系列产品

  • Atlas 900 A3 SuperPoD 超节点
  • Atlas 800T A3 超节点服务器
  • MindSpore
  • PyTorch

进程级在线恢复原理

训练过程中如果出现了片上内存故障或网络故障,将导致训练状态异常。进程级在线恢复首先通知所有训练进程停止当前训练,然后保留当前训练信息并修复故障。修复完成后,所有训练进程回退训练状态到当前上一个Step结束时,正常服务器通过参数面将CKPT传递到故障服务器上,完成参数恢复后重新执行当前Step,然后恢复训练任务。

图1 进程级在线恢复原理

在以上原理图中,各个步骤的说明如下。

  1. 设备出现片上内存故障或网络故障后,MindCluster在服务器上的检测组件上报故障信息到集群大脑ClusterD中。
  2. 片上内存故障或网络故障被CANN软件感知,经训练框架上报给MindIO Processor和MindIO Controller。
  3. MindIO Controller向集群大脑请求决策是否进行Step级别重计算恢复,集群大脑综合集群其他节点的健康状态做出决策。
  4. MindIO Controller通知每个训练进程中的MindIO Processor,调用训练框架停止任务、修复故障,保留通信域信息。
  5. 正常服务器上的NPU通过参数面将CKPT传递到故障(已修复)服务器上,完成参数状态恢复后继续训练,重新启动当前Step计算。

适配功能点

在进程级在线恢复中,集群大脑根据故障信息识别网络故障和片上内存故障,下发对应恢复策略,支持恢复策略回退。在训练容器中,框架首先初始化MindIO服务,启动服务后优化器更新时会上报对应状态到MindIO。随后,创建DP副本组和优化器副本,以保障模型参数的冗余备份。在异常发生时,通过异常捕获装饰器捕获故障模式,在恢复时针对不同故障执行算子资源清理、UCE模型优化器重建、参数面在线修复、状态回滚,完成进程级在线恢复。

对于非MindSpeed-LLM、MindCluster平台用户,针对不同故障需在框架侧完成以下功能适配。

表3 进程级在线恢复针对网络故障框架适配功能点

适配功能点

功能简述

适配组件

参考链接

初始化拉起

训练框架初始化时拉起MindIO服务。

分布式训练框架

对接非MindSpeed-LLM框架

上报优化器更新状态

优化器更新前上报优化器更新的开始和结束状态。

异常捕获装饰器

使用异常捕获装饰器装饰train函数捕获故障模式。

算子资源清理

通过回调函数完成算子资源清理。

状态回滚

通过回调函数完成数据迭代器重建、框架变量重置。

恢复策略决策

根据故障信息识别网络故障或片上内存故障,下发对应恢复策略,支持恢复策略回退。

AI平台

链接

故障Pod调度

调度故障Pod,支持调度恢复策略回退。

链接

表4 进程级在线恢复针对片上内存故障框架适配功能点

适配功能点

功能简述

适配组件

参考链接

初始化拉起

训练框架初始化时拉起MindIO服务。

分布式训练框架

对接非MindSpeed-LLM框架

上报优化器更新状态

优化器更新前上报优化器更新的开始和结束状态。

创建DP副本组

新增dp_cp/dp_ep副本组及gloo组创建逻辑,在原生Megatron分布式并行组创建后创建相关副本组。

优化器副本

接管、继承相关Megatron原生优化器功能,嵌入MindIO优化器副本管理逻辑。

异常捕获装饰器

使用异常捕获装饰器装饰train函数捕获故障模式。

算子资源清理

通过回调函数完成算子资源清理。

UCE模型优化器重建

通过回调函数完成故障卡模型优化器对象操作清理、重建操作。

参数面在线修复

通过回调函数完成副本卡与恢复卡恢复处理。

状态回滚

通过回调函数完成数据迭代器重建、框架变量重置。

恢复策略决策

根据故障信息识别网络故障或片上内存故障,下发对应恢复策略,支持恢复策略回退。

AI平台

链接

故障Pod调度

调度故障Pod,支持调度恢复策略回退。

链接