进程级在线恢复

进程级在线恢复(Step级别重计算恢复)针对片上内存上出现的不可纠正错误(如故障码0x80E01801),先隔离故障片上内存空间,然后对训练进程进行Step级重试,实现进程不退出的故障快速恢复。如果故障不能恢复,则回退至重调度模式

相比于进程级快速恢复,本功能仅重调度故障进程,减少了大量进程间不同步的等待耗时。同时利用了新的HCCL建链方案大大降低了建链耗时,且通过NPU卡间的参数面高速网络P2P传递CKPT信息,避免了CKPT保存和加载的耗时。

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

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

使用约束

支持的产品型号及AI框架

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

产品系列

产品名称

训练框架

Atlas A2 训练系列产品

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

Atlas A3 训练系列产品

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

进程级在线恢复原理

训练过程中如果出现了片上内存UCE故障,将导致训练状态异常。进程级在线恢复首先通知所有训练进程停止当前训练,然后保留当前训练信息并修复故障的片上内存地址。修复完成后,所有训练进程回退训练状态到当前上一个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计算。