ClusterD

ClusterD收集了内部的节点故障、芯片故障和灵衢总线设备超节点故障,将其作为对外的信息放在了K8sConfigMap中,以供外部查询和使用。

节点故障

查询命令kubectl describe cm -n mindx-dl cluster-info-node-${n}

n为从0开始递增的整数。集群规模每增加2000个节点,则会新增一个ConfigMap文件cluster-info-node-${n}

Atlas A3 训练系列产品为例,查询结果回显示例如下;不同设备的回显参数可能不同,以实际为准。关键参数说明请参见表1

{"mindx-dl-nodeinfo-kwok-node-0":{"FaultDevList":[],"HeartbeatTime":1717078105,"HeartbeatInterval":5,"NodeStatus":"Healthy","CmName":"mindx-dl-nodeinfo-kwok-node-0"},"mindx-dl-deviceinfo-kwok-node-1001":{"FaultDevList":[],"HeartbeatTime":1717078105,"HeartbeatInterval":5,"NodeStatus":"Healthy","CmName":"mindx-dl-nodeinfo-kwok-node-1001"}}
表1 节点故障参数说明

参数名

描述

mindx-dl-nodeinfo-<kwok-node-0>

前缀为固定的mindx-dl-nodeinfo,kwok-node-0是节点名称,方便定位故障的具体节点

NodeInfo

节点维度的故障信息。

FaultDeviList

节点故障设备列表。

- DeviceType

故障设备类型。

- DeviceId

故障设备ID。

- FaultCode

故障码,由英文和数组拼接而成的字符串,字符串表示故障码的十六进制。

- FaultLevel

故障处理等级。

  • NotHandleFault:无需处理。
  • PreSeparateFault:该节点上有任务则不处理,后续调度时不调度任务到该节点。
  • SeparateFault:任务重调度。

HeartbeatTime

节点的当前心跳信息。

HeartbeatInterval

节点心跳发送间隔。

NodeStatus

节点健康状态,由本节点故障处理等级最严重的设备决定。

  • Healthy:该节点故障处理等级存在且不超过NotHandleFault,该节点为健康节点,可以正常训练。
  • PreSeparate:该节点故障处理等级存在且不超过PreSeparateFault,该节点为预隔离节点,暂时可能对任务无影响,待任务受到影响退出后,后续不会再调度任务到该节点。
  • UnHealthy:该节点故障处理等级存在SeparateFault,该节点为故障节点,将影响训练任务,立即将任务调离该节点。

芯片故障

查询命令:kubectl describe cm -n mindx-dl cluster-info-device-${m}

m为从0开始递增的整数。集群规模每增加1000个节点,则会新增一个ConfigMap文件cluster-info-device-${m}。

Atlas A3 训练系列产品为例,查询结果回显示例如下;不同设备的回显参数可能不同,以实际为准,关键参数说明请参见表2

{"mindx-dl-deviceinfo-kwok-node-0":{"DeviceList":{"huawei.com/Ascend910":"Ascend910-0,Ascend910-1,Ascend910-2,Ascend910-3,Ascend910-4,Ascend910-5,Ascend910-6,Ascend910-7","huawei.com/Ascend910-NetworkUnhealthy":"","huawei.com/Ascend910-Unhealthy":""},"UpdateTime":1693899390,"CmName":"mindx-dl-deviceinfo-kwok-node-0","SuperPodID":0,"ServerIndex":0},"mindx-dl-deviceinfo-kwok-node-1001":{"DeviceList":{"huawei.com/Ascend910":"Ascend910-0,Ascend910-1,Ascend910-2,Ascend910-3,Ascend910-4,Ascend910-5,Ascend910-6,Ascend910-7","huawei.com/Ascend910-NetworkUnhealthy":"","huawei.com/Ascend910-Unhealthy":""},"UpdateTime":1693899390,"CmName":"mindx-dl-deviceinfo-kwok-node-1001","SuperPodID":0,"ServerIndex":0}}
表2 芯片故障参数说明

参数名

描述

mindx-dl-deviceinfo-<kwok-node-0>

前缀为固定的mindx-dl-deviceinfo,kwok-node-0是节点名称,用于定位故障的具体节点。

huawei.com/Ascend910

当前节点可用的芯片名称信息,存在多个时用英文逗号拼接。

huawei.com/Ascend910-NetworkUnhealthy

当前节点网络不健康的芯片名称信息,存在多个时用英文逗号拼接。

huawei.com/Ascend910-Unhealthy

当前芯片不健康的芯片名称信息,存在多个时用英文逗号拼接。

huawei.com/Ascend910-Fault

数组对象,对象包含fault_type、npu_name、large_model_fault_level、 fault_level、fault_handling和fault_code等6个字段。

- fault_type

故障类型。

  • CardUnhealthy:芯片故障
  • CardNetworkUnhealthy:参数面网络故障(芯片网络相关故障)
  • NodeUnhealthy:节点故障

- npu_name

故障的芯片名称,节点故障时为空。

- large_model_fault_level

故障处理类型,节点故障时取值为空。

  • NotHandleFault:不做处理
  • RestartRequest:推理场景需要重新执行推理请求,训练场景重新执行训练业务
  • RestartBusiness:需要重新执行业务
  • FreeRestartNPU:直接复位芯片并重新执行业务
  • RestartNPU:直接复位芯片并重新执行业务
  • SeparateNPU:隔离芯片
  • PreSeparateNPU:预隔离芯片,会根据训练任务实际运行情况判断是否重调度
说明:

large_model_fault_level、fault_handling和fault_level参数功能一致,推荐使用fault_handling。

- fault_level

- fault_handling

- fault_code

故障码,英文逗号拼接的字符串。

芯片故障码的详细说明,可以通过芯片故障码参考文档获取对应的参考文档。

SuperPodID

超节点ID。

ServerIndex

当前节点在超节点中的相对位置。

说明:
  • 驱动上报的SuperPodID或ServerIndex的值为0xffffffff时,SuperPodID或ServerIndex的取值为-1。
  • 存在以下情况,SuperPodID或ServerIndex的取值为-2。
    • 当前设备不支持查询超节点信息。
    • 因驱动问题导致获取超节点信息失败。

灵衢总线设备超节点

查询命令:kubectl describe cm -n mindx-dl cluster-info-switch-${m}

m为从0开始递增的整数。集群规模每增加2000个节点,则会新增一个ConfigMap文件cluster-info-switch-${m}。

Atlas A3 训练系列产品为例,查询结果回显示例如下;不同设备的回显参数可能不同,以实际为准。关键参数说明请参见表3
{"FaultCode":[000001c1],"FaultLevel":"NotHandle","UpdateTime":1722845555,"NodeStatus":"Healthy"}
表3 灵衢总线设备超节点故障参数说明

参数名

描述

FaultCode

由故障码组成的字符串数组。

FaultLevel

当前故障中等级最高故障所对应处理策略。

NotHandle:不做处理。

Report:根据配置策略决定如何处理。

SubHealth:根据配置策略决定如何处理。

Reset:隔离节点。

Separate:隔离节点。

UpdateTime

ConfigMap更新时间。

NodeStatus

当前节点状态。

Healthy:节点健康。

SubHealthy:节点预隔离,当前任务不做处理,后续任务不再调度该节点。

UnHealthy:节点不健康,隔离节点,进行任务重调度。