芯片故障

重调度场景

芯片故障的重调度场景故障处理流程如图1所示,以acjob任务(使用Ascend Operator)为例。

图1 芯片故障恢复
各步骤说明如下:
  1. 任务运行过程中,Ascend Operator持续监测Pod数量及状态、ClusterD持续监测device-info-cmnode-Info-cm
  2. NodeDAscend Device Plugin分别上报故障信息到node-Info-cmdevice-info-cm中。
  3. ClusterD读取device-info-cm中信息并上报给VolcanoVolcano根据ClusterD上报信息删除使用了故障芯片的任务的所有Pod。
  4. Ascend Operator重新创建所有Pod,并写入新的环境变量。
  5. volcano-scheduler为新Pod选择合适的节点。
  6. Pod在新节点重新拉起,从远端存储拉取之前保存的ckpt,继续训练。

默认删除使用了故障芯片的任务的所有Pod,若用户使用Pod级别重调度功能,则只删除故障芯片所在Pod,重新创建并拉起该Pod。

优雅容错

芯片故障的优雅容错场景故障处理流程如图2所示,以acjob任务(使用Ascend Operator)为例。

图2 芯片故障恢复

各步骤说明如下:

  1. Ascend Device Plugin上报故障信息到K8s的reset-info-cm中。
  2. 所有节点Ascend Device Plugin读取reset-info-cm,写入本地reset.json文件中。
  3. reset_process读取reset.json,删除所有训练进程。
  4. Ascend Device Plugin在所有训练进程退出后,调用DCMI接口对故障芯片执行复位操作。
  5. 若复位操作成功,Ascend Device Plugin重写reset-info-cm
  6. 所有节点Ascend Device Plugin读取reset-info-cm,写入本地reset.json件中。
  7. reset_process读取reset.json,将所有训练进程重新拉起。
  8. 若热复位失败,Ascend Device Plugin将故障信息上报到device-info-cm
  9. volcano-scheduler删除所有Pod。
  10. Ascend Operator重新创建podGroup和Pod。
  11. volcano-scheduler重新调度Pod。
  • 步骤8~11表示优雅容错失败。优雅容错调用DCMI接口对故障芯片执行复位操作失败时,将重试4次,每次重试分别等待5、10和15秒,若4次(超过30秒)均未成功复位,则回退至重调度模式。
  • 重调度模式默认删除使用了故障芯片的任务的所有Pod,若用户使用Pod级别重调度功能,则只删除故障芯片所在Pod,重新创建并拉起该Pod。