开发者
资源

节点硬件故障

断点续训针对节点故障中的节点硬件故障中的不同级别故障进行分级容错处理。NodeD发现故障时会获取到当前故障的故障码。

表1 故障说明

故障级别

处理方式

说明

NotHandleFault

无需处理

对任务无影响

PreSeparateFault

该节点上有任务则不处理,后续调度时不调度任务到该节点

可能导致任务受到影响

SeparateFault

任务重调度

任务一定会受到影响

注:

故障级别的高低为NotHandleFault < PreSeparateFault < SeparateFault。

表2 节点状态说明

节点状态

最高故障级别

处理方式

说明

Healthy

NotHandleFault

无需处理

该节点为健康节点,可以正常训练。

SubHealthy

PreSeparateFault

该节点上有任务则不处理,后续调度时不调度任务到该节点

该节点为亚健康节点,暂时可能对任务无影响,待任务受到影响退出后,后续不会再调度任务到该节点。

UnHealthy

SeparateFault

任务重调度

该节点为故障节点,将影响训练任务,立即将任务调离该节点。

注:

  • 当前节点的健康状态,主要通过本节点硬件故障的最高故障级别判断。
  • Healthy、SubHealthy和UnHealthy是MindX DL自定义的节点状态,主要是用于后续任务的调度和处理。
  • SubHealthy节点上任务异常退出后如果需要断点续训,需要开启无条件重试功能。
  • 查看节点状态和节点硬件故障信息,可参见查询NodeD上报的故障信息章节进行操作。

操作步骤

  1. 登录环境,进入NodeD解压目录。
  2. 执行以下命令,创建动态配置故障级别所需ConfigMap文件(mindx-dl-node-fault-config)。
    kubectl create cm mindx-dl-node-fault-config -n mindx-dl  --from-file=./NodeDConfiguration.json
    回显示例如下:
    configmap/mindx-dl-node-fault-config created
    表3 参数说明

    参数名称

    说明

    mindx-dl-node-fault-config

    创建的ConfigMap文件名称,不能修改该文件名称。

    mindx-dl

    命名空间名称,不能修改该命名空间。

    NodeDConfiguration.json

    用于配置故障码以及对应的故障级别,必须与NodeDConfiguration.json文件名称保持一致。

  3. 执行以下命令,编辑mindx-dl-fault-config文件。
    kubectl edit cm -n mindx-dl mindx-dl-node-fault-config
  4. 在mindx-dl-node-fault-config文件中,找到故障码0100001D。
     "FaultTypeCode": {
            "NotHandleFaultCodes":[
              "0100001D","03000009","03000013","0300000D","03000011"
            ],
    ...
      ],
    ...
    自定义故障级别时,若不小心导致出现以下问题,则本次修改无效,NodeD将会使用上一次保存的配置进行处理。
    • 文件格式异常或故障码取值错误,故障码只能为8位的包含数字和字母的字符串。
    • 同一故障码同时配置在多个故障级别中。
  5. 将故障码0100001D在NotHandleFaultCodes中删除,并添加到PreSeparateFaultCodes中。
     "FaultTypeCode": {
            "NotHandleFaultCodes":[
             "03000009","03000013","0300000D","03000011"
            ],
            "PreSeparateFaultCodes":[
              "28000037","00000011", "0100001D"
    ...
            ],
    ...
  6. 修改完成后,按“Esc”键,输入:wq!保存并退出。
  7. 等mindx-dl-node-fault-config文件更新后,查看操作是否成功。
    1. 执行以下命令,查询NodeD组件日志名称。
      kubectl get pods -A | grep noded
      回显示例如下:
      mindx-dl      noded-c5f52   1/1     Running   0               2m16s
    2. 通过查询到的组件日志名称,查询NodeD的组件日志信息。
      kubectl logs noded-c5f52 -n mindx-dl -f

      若日志出现“update fault config success”,表示动态配置故障码操作成功。