Ascend Device Plugin
芯片资源
mindx-dl-deviceinfo-<nodename>
Ascend Device Plugin上报的NPU芯片信息如表1所示。
表 1 DeviceInfoCfg
| 名称 | 含义 | 说明 |
|---|---|---|
| huawei.com/Ascend910 | 标记当前节点可用的芯片名称信息,存在多个时用英文逗号拼接。 |
|
| huawei.com/Ascend910-NetworkUnhealthy | 标记当前节点网络不健康的芯片名称信息,存在多个时用英文逗号拼接。 | Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD使用huawei.com/npu-NetworkUnhealthy作为参数名称。 |
| huawei.com/Ascend910-Unhealthy | 标记当前芯片不健康的芯片名称信息,存在多个时用英文逗号拼接。 | Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD使用huawei.com/npu-Unhealthy作为参数名称。 |
| huawei.com/Ascend910-Recovering | 标记当前节点正在进行恢复的芯片,存在多个时用英文逗号拼接。 | Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD使用huawei.com/npu-Recovering作为参数名称。 |
| huawei.com/Ascend910-Fault | 记录芯片具体的故障信息。 |
|
| -fault_type | 故障类型。 |
|
| -npu_name | 故障的芯片名称,节点故障时为空。 | 字符串 |
-large_model_fault_level -fault_level -fault_handling |
故障处理类型,节点故障时取值为空。 |
[!NOTE] 说明
|
| -fault_code | 故障码,英文逗号拼接的字符串。 | 芯片故障码的详细说明请参见芯片故障码参考文档。 |
| -fault_time_and_level_map | 故障码、故障发生时间及故障处理等级。 | - |
| SuperPodID | 超节点ID。 | 字符串 |
| ServerIndex | 当前节点在超节点中的相对位置。 |
|
| CheckCode | 校验码。 | - |
Ascend Device Plugin上报的灵衢总线设备故障信息如表2所示。
表 2 SwitchInfoCfg参数说明
| 名称 | 含义 | 说明 |
|---|---|---|
| FaultCode | 当前节点的灵衢总线设备故障码列表。 | 数组对象,包含EventType、AssembledFaultCode、PeerPortDevice、PeerPortId、SwitchChipId、SwitchPortId、Severity、Assertion、AlarmRaisedTime等字段。 |
| -EventType | 告警ID。 | - |
| -AssembledFaultCode | 故障码。 | - |
| -PeerPortDevice | 对接设备类型。 |
|
| -PeerPortId | 对接设备ID。 | - |
| -SwitchChipId | 灵衢故障芯片ID。 | 从0开始编号。 |
| -SwitchPortId | 灵衢故障端口ID。 | 从0开始编号。 |
| -Severity | 故障等级。 |
|
| -Assertion | 事件类型。 |
|
| FaultLevel | 当前节点故障处理等级。 | 取FaultCode中所有故障中等级最高的故障等级,取值包含:NotHandle、SubHealthFault、Separate和RestartRequest。 |
| UpdateTime | 故障上报刷新时间。 | - |
| NodeStatus | 当前节点健康状态。 | 对应FaultLevel取值,NotHandle:Healthy、SubHealthFault:SubHealthy、Separate:UnHealthy和RestartRequest:UnHealthy。 |
| FaultTimeAndLevelMap | 故障发生时间及故障处理等级列表。 | 数组对象,包含故障码、灵衢故障芯片ID、灵衢故障端口ID、fault_time和fault_level字段。键值为故障码、灵衢故障芯片ID、灵衢故障端口ID,由下划线连接组成。 |
| -fault_time | 故障发生时间。 | - |
| -fault_level | 故障处理等级。 | - |
Ascend Device Plugin的ConfigMap上报的人工干预的故障级别芯片信息如表3所示。
表 3 ManuallySeparateNPU说明
| 名称 | 含义 | 说明 |
|---|---|---|
| ManuallySeparateNPU | 因芯片多次故障,触发频率型故障升级策略,被ConfigMap记录到此键中。 | 多个芯片名称使用英文逗号分隔。 |
Ascend Device Plugin的ConfigMap上报的故障策略升级原因如表4所示。
表 4 UpgradeFaultReason说明
| 名称 | 含义 | 说明 |
|---|---|---|
| UpgradeFaultReason | 故障码配置了频率型策略和持续型策略后,当触发故障升级时,记录故障升级原因和升级时间。 | JSON的Map形式,键为芯片名称,值为导致该芯片故障升级的原因。 |
| -fault_code | 芯片故障升级的故障码。 | - |
| -fault_level | 升级后的故障级别。 | - |
| -upgrade_type | 故障升级类型。 |
|
| -upgrade_time | 故障升级的时间点。 | - |
Note
- 当Ascend Device Plugin从26.0.0之前版本升级到26.0.0及之后版本时,若Ascend Device Plugin的ConfigMap中已有的芯片故障升级到ManuallySeparateNPU,则会为该芯片隔离自动填充原因。其中-fault_code值为AutofillFaultCode,-upgrade_type为FaultAutofill。
- 故障升级原因会随着故障降级而删除,同时删除事件会记录到K8s的kube-system命名空间下的event事件中。
Ascend Device Plugin的ConfigMap中的描述信息如表5所示。
表 5 Description说明
| 名称 | 含义 | 说明 |
|---|---|---|
| Description | 描述信息。 | 此ConfigMap中的节点的可用芯片信息正在日落。默认情况下,节点的可用芯片由Volcano维护,此ConfigMap中维护的不生效。如果需要生效,可以修改Volcano的配置参数“self-maintain-available-card”值为false。 |
Ascend Device Plugin上报的NPU设备故障信息如表6所示。对象名称是<device-plugin-pod-name>.<上报时间><故障芯片ID>,对象类型为Event。
Note
下表仅展示与MindCluster业务相关的字段说明,更多字段的说明详细请参见Event core。
表 6 NPU设备故障信息
| 名称 | 含义 | 说明 |
|---|---|---|
| type | 事件的级别。 | 唯一值:Warning |
| message | 事件的内容,包括节点名称、芯片编号、故障的产生或者恢复类型、故障码和故障级别信息。 | 字符串 |
| reason | 事件上报的原因。 |
|
| action | 故障的级别。 | 字符串。详细说明请参见表1。 |
| source | 故障产生的源头。 | 结构体。表明故障产生的节点。 |
| eventTime | 故障产生的时间。 | 时间戳 |
| involvedObject | 故障绑定展示的对象。 | 结构体。通过Kind、Namespace和Name指向当前Ascend Device Plugin的Pod名称。指定后除了可以直接通过Event对象查询之外,查询当前的Pod详情时也能看到该事件。 |
| reportingComponent | 事件的控制者。 | 唯一值:device-plugin |
| reportingInstance | 事件的上报实例。 | 字符串。取当前Ascend Device Plugin的Pod名称。 |
deviceNameCustomization.json支持自定义设备名称。编译Ascend Device Plugin镜像时,将该文件放在二进制包的同级目录下,即可将Ascend Device Plugin对外展示的资源类型、资源名称修改为自定义的名称。Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD目前不支持该功能。
表 7 deviceNameCustomization.json支持自定义设备名称
| 名称 | 含义 | 说明 |
|---|---|---|
| ResourceType | 设备的初始名称,必填。 | 仅支持Ascend910、Ascend310和Ascend310P中的一种。 |
| DevicePublicType | 设备对外展示的类型,例如huawei.com/Ascend910,必填。 | 仅支持xxx.xxx/xxx格式,xxx可以为大小写字母及数字,长度范围为10~32个字符。 |
| DevicePublicNamePre | 设备对外展示的名称前缀,例如Ascend910-。实际展示的名称,Ascend Device Plugin会在前缀后面拼接芯片的物理ID,必填。 | 可以包含大小写字母、中划线(-)、数字,必须以大小写字母开头,长度范围为2~16个字符。 |
| PodConfigurationName | Pod的annotation上展示的挂载芯片信息详情,ResourceType为Ascend910时必填。 | 可以包含大小写字母、中划线(-)、/、点(.)、数字,必须以大小写字母开头,大小写字母数字结尾,长度范围为10~63个字符。 |
任务信息
表 1 fault-config-任务名称
| 字段名称 | 含义 | 取值 | 备注 |
|---|---|---|---|
| fault-npus | 故障任务使用的故障芯片的rank信息。 | 字符串 | - |
| checkCode | 校验码。 | 字符串 | - |
表 2 reset-config-<job-name>
存储当前任务的各类打点类型的开关状态,由Ascend Device Plugin挂载到计算节点存储,训练容器挂载该文件后,由TaskD读取后对各类打点数据进行开关。
表 3 data-trace-<任务名称> ConfigMap字段说明
| 字段名称 | 含义 | 取值 | 类型 |
|---|---|---|---|
| Communication | 标识通信算子。 | on/off | string |
| Step | 标识Step时延。 | on/off | string |
| SaveCheckpoint | 标识SaveCheckpoint耗时。 | on/off | string |
| FP | 标识前向传播数据。 | on/off | string |
| DataLoader | 标识DataLoader耗时。 | on/off | string |
Note
- 该ConfigMap需要和训练任务在同一命名空间,且命名为data-trace-<任务名称>,包括标签reset=true。
- 该ConfigMap由Ascend Device Plugin挂载到训练节点的/user/cluster-info/datatrace-config/命名空间.data-trace-任务名称/*的文件夹下,文件名为profilingSwitch。
- 如用户未创建该ConfigMap,在首次调用gRPC接口ModifyTrainingDataTraceSwitch时,ClusterD将尝试自动创建该ConfigMap。
- 用户如需使用该功能,应将节点上的profilingSwitch文件,使用hostPath方式挂载进入容器内的/user/cluster-info/datatrace-config/目录。
- 当前Step、SaveCheckpoint、FP、DataLoader为默认开启,且四类只能同步开启关闭,当五类数据全为off时关闭所有打点,否则默认开启上述四类,同时根据通信算子开关状态对其进行开启或关闭。
存储任务的迭代时延和分组信息的保存路径和启停开关,启动任务时用户可通过CCAE管理平台配置ConfigMap参数进行任务是否劣化的判定。
表 4 steptime-dtpgroup ConfigMap字段说明
| 一级参数名称 | 二级参数名称 | 含义 | 取值 | 备注 |
|---|---|---|---|---|
| data | PerfDumpPath | 迭代时延和分组信息保存路径。 | 字符串 | - |
| - | PerfDumpConfig | 迭代时延和分组信息启停开关。 | 字符串 | - |
自定义芯片故障
断点续训针对芯片故障的不同级别进行分级处理。若用户需要修改故障码的故障级别,操作指导请参见(可选)配置芯片故障级别。
Ascend Device Plugin从驱动获取到芯片故障码后,将根据故障码对设备及业务的影响将故障划分为以下几种级别,详细说明请参见表1。
表 1 故障级别及处理说明
根据任务YAML中配置的subHealthyStrategy参数取值进行处理,详细请参见表1 YAML参数说明。 |
当芯片出现亚健康故障时,需根据配置YAML策略进行处理。 |
用户不手动修改faultCustomization.json文件时,Ascend Device Plugin按照faultCustomization.json的默认配置(默认值)进行故障处理。
表 2 faultCustomization.json文件参数说明
| 一级参数名称 | 二级参数名称 | 说明 |
|---|---|---|
| GraceTolerance | - | 优雅容错相关配置。 GraceTolerance及其子参数不存在或者超出取值范围,则使用默认值。 |
| - | WaitProcessReadCMTime | 使用优雅容错模式时,等待管理进程读取ConfigMap文件的时间,单位为秒,取值范围为5~90,默认值为30。 |
| - | WaitDeviceResetTime | 使用优雅容错模式时,等待芯片重启的最大时长,单位为秒,取值范围为60~180,默认值为150。 |
| - | WaitFaultSelfHealingTime | 使用优雅容错模式时,等待RestartBusiness级别故障恢复时间,单位为秒,取值范围为1~30,默认值为15。 |
| FaultFrequency | - | 自定义故障频率,即某一故障在时间窗口内出现次数达到次数上限时,根据配置的故障处理策略进行处理。
|
| - | EventId | 故障码ID。 每个故障码(EventId)只允许配置一个FaultFrequency参数,如果配置了多个,则只有第一条正确的会生效。 |
| - | TimeWindow | 时间窗口,即统计当前时间减去TimeWindow的时间至当前时间,这段时间范围内的故障次数,单位为秒,取值范围为60~864000。 |
| - | Times | 同一个故障出现的次数上限,取值范围为1~100。如果在时间窗口内该故障出现次数大于或等于该值,则按照FaultHandling中定义的策略处理和上报。 |
| - | FaultHandling | 同一个故障出现的次数达到上限后故障的处理策略,支持配置不同级别的故障处理策略。若配置了ReleaseTimeWindow,则可达到条件后自动释放。若要支持手动解除故障,请配置处理策略为ManuallySeparateNPU。
|
| - | ReleaseTimeWindow | 若故障已经恢复,并持续超过ReleaseTimeWindow的时间窗没有再发生该故障,则解除已升级的故障处理策略。该参数的取值范围为60~uint32最大值,单位为秒。若不配置该参数,则表示策略升级后不降级。由于ManuallySeparateNPU支持手动解除,所以除了ManuallySeparateNPU,其余处理策略必须配置该参数,防止故障恢复后设备永远无法使用。 |
| FaultDuration | - | 自定义故障超时策略,当某一故障持续时间达到配置上限时,该故障会按照指定的故障处理策略进行处理。
|
| - | EventId | 故障ID。 每个故障码(EventId)只允许配置一个FaultDuration参数,如果配置了多个,则只有第一条正确的会生效。 |
| - | FaultTimeout | 故障持续时间超过该值,则按照FaultHandling中定义的故障处理策略进行处理,单位为秒,取值范围为0~600,默认值说明如下。
|
| - | RecoverTimeout | 故障恢复时间超过该值,则上报故障恢复,单位为秒,取值范围为0~86400,默认值说明如下。
|
| - | FaultHandling | 超过故障持续时间后的故障处理策略,支持配置不同级别的故障处理策略,同时还支持配置PreSeparateNPU故障处理策略。 超过故障持续时间后的故障处理策略,建议高于故障本身的故障处理策略,否则配置不生效。 不支持配置ManuallySeparateNPU策略,配置不生效。 |
Note
- 如果一个故障码同时配置了故障频率(FaultFrequency)和故障超时策略(FaultDuration),该故障码在TimeWindow时间窗口中超时次数达到任务支持的最大次数,则采用以下三者中最严重的等级进行处理。这三者分别为:故障本身的故障处理策略、FaultFrequency和FaultDuration中配置的故障处理策略。
- 如果一个故障码同时配置了故障频率和故障超时策略,只有当故障超时后,故障才算发生,频次才会增加一次。故障恢复超过RecoverTimeout才算恢复,恢复后再次故障超时才能累积下一次计数。
- 故障ID为81078603的网络故障只支持配置为NotHandleFault、PreSeparateNPU或SeparateNPU三种故障处理策略,若配置为其他策略则使用默认配置NotHandleFault。
- 当Ascend Device Plugin从26.0.0之前版本升级到26.0.0及之后版本时,若Ascend Device Plugin的ConfigMap中已经包含了ManuallySeparateNPU键值,则其降级的时间窗为faultCustomization.json中最大的ReleaseTimeWindow值,若没有任何故障码配置ReleaseTimeWindow,则ConfigMap已有的ManuallySeparateNPU不降级。
- 在修改/删除mindx-dl-fault-config中的策略后,支持已升级的故障处理策略也会随配置更新。但是ManuallySeparateNPU策略升级后,删除故障处理策略配置项不会被解除,需要遵循ManuallySeparateNPU的解除方式。并且,其他故障级别配置更新为ManuallySeparateNPU时,配置不生效或者不满足期望。
自定义灵衢设备故障
断点续训针对灵衢总线设备故障的不同级别进行分级处理。若用户需要修改故障码的故障级别,操作指导请参见(可选)配置总线设备故障级别。
Ascend Device Plugin从驱动获取到故障码后,将根据故障码对设备及业务的影响将故障划分为以下五种级别并进行相应的重调度处理,详细说明请参见表1。
表 1 故障级别及处理说明
| 故障类型 | 说明 | 重调度处理 |
|---|---|---|
| NotHandleFault | 暂不影响业务,可以自行恢复,无需处理。 | 暂不处理。 |
| SubHealthFault | 影响业务运行性能,需要排查亚健康原因。 | 当出现亚健康故障时,需根据表1 YAML参数说明中subHealthyStrategy参数所指定的亚健康策略进行处理。 |
| RestartRequestFault | 业务运行失败,需要重新执行业务请求。 | 停止当前训练任务,隔离节点,进行任务重调度。 |
| ResetFault | 业务运行失败。 | 停止当前训练任务,隔离节点,进行任务重调度。 |
| SeparateFault | 业务运行失败,需更换器件或板卡。 | 停止当前训练任务,隔离节点,进行任务重调度。 |