昇腾社区首页
中文
注册

(可选)构造故障

本章节将指导用户构造简单的故障,包括节点故障、参数面网络故障和业务面故障。

构造芯片故障存在安全风险,如需构造请联系华为技术支持工程师处理。

构造节点故障

通过重启训练节点,模拟节点下电导致节点状态丢失。该故障在节点重启完成后可自动恢复。

  1. 在训练任务正常训练出epoch后,登录正在训练的节点。
  2. 执行以下命令,重启该训练节点,模拟节点状态丢失故障。
    reboot
  3. 在Master节点多次执行以下命令,查看Pod状态。
    kubectl get pod -A

    可以看到Pod状态从Terminating到Pending,最后为Running状态,表示训练任务已经重新拉起。

  4. 在Master节点执行以下命令,查看训练日志,记录续训成功时间。
    kubectl logs -n 命名空间名称 Pod名称
    回显示例如下,表示发生故障时,使用最近保存的第39步的checkpoint文件恢复,实现训练任务第40个epoch开始继续训练。
    1
    2
    ....2024-06-01 22:18:45,025:INFO:epoch: [40/90] loss: 3.465011, epoch time: 71.582 s, per step time: 1491.285 ms
    2024-06-01 22:18:49,453:INFO:epoch: [41/90] loss: 3.396700, epoch time: 4.428 s, per step time: 92.245 ms
    

构造参数面网络故障

通过断开NPU网络链路模拟的参数面网络故障。NPU网络故障不影响单机训练任务。用户在断开链路后需手动恢复,否则该故障会一直存在。

  1. 在训练任务正常训练出epoch后,登录正在训练的节点。
  2. 执行以下命令,构造NPU网络链路故障。
    hccn_tool -i {device_id} -link -s down

    device_id为NPU的ID,可以通过npu-smi info命令查看NPU的ID。

  3. 执行以下命令,查看NPU链路状态。
    hccn_tool -i {device_id} -net_health -g
    回显示例如下,表示NPU网络链路故障构造成功。
    1
    net health status: Fault
    
  4. 在Master节点多次执行以下命令,查看Pod状态。
    kubectl get pod -A

    可以看到Pod状态从Terminating到Pending,最后为Running状态,表示训练任务已经重新拉起。

  5. 在Master节点执行以下命令,查看训练日志,记录续训成功时间。
    kubectl logs -n 命名空间名称 Pod名称
    回显示例如下,表示发生故障时,使用最近保存的第39步的checkpoint文件恢复,实现训练任务第40个epoch开始继续训练。
    1
    2
    ....2024-06-01 22:18:45,025:INFO:epoch: [40/90] loss: 3.465011, epoch time: 71.582 s, per step time: 1491.285 ms
    2024-06-01 22:18:49,453:INFO:epoch: [41/90] loss: 3.396700, epoch time: 4.428 s, per step time: 92.245 ms
    
  6. 执行以下命令,恢复NPU网络链路故障。
    hccn_tool -i {device_id} -cfg recovery
  7. 执行以下命令,查看NPU链路状态。
    hccn_tool -i {device_id} -net_health -g
    回显示例如下,表示NPU网络链路故障已经恢复。
    1
    net health status: Success
    

构造业务面故障

通过删除训练进程,模拟业务面故障。

  1. 在训练任务正常训练出epoch后,登录正在训练的节点。
  2. 执行以下命令,使用训练启动脚本,查询训练进程信息。
    ps -ef | grep python| grep 训练启动脚本.py
  3. 执行以下命令,手动删除PID最小的训练进程。
    kill -9 pid
  4. 在Master节点多次执行以下命令,查看Pod状态。
    kubectl get pod -A

    可以看到Pod状态从Terminating到Pending,最后为Running状态,表示训练任务已经重新拉起。

  5. 在Master节点执行以下命令,查看训练日志,记录续训成功时间。
    kubectl logs -n 命名空间名称 Pod名字

    回显示例如下,表示发生故障时,使用最近保存的第39步的checkpoint文件恢复,实现训练任务第40个epoch开始继续训练。

    1
    2
    ....2024-06-01 22:18:45,025:INFO:epoch: [40/90] loss: 3.465011, epoch time: 71.582 s, per step time: 1491.285 ms
    2024-06-01 22:18:49,453:INFO:epoch: [41/90] loss: 3.396700, epoch time: 4.428 s, per step time: 92.245 ms