配置文件说明

断点续训针对芯片故障,支持按故障级别、故障频率和故障时间的配置进行处理。

faultCode.json、faultCustomization.json为系统配置文件,若用户无特殊需求,请勿随意修改。若用户需要修改故障码对应的故障级别,可以通过由faultCode.json和faultCustomization.json创建的mindx-dl-fault-config文件实现。

faultCode.json中的故障级别

断点续训针对芯片故障的不同级别进行分级处理。若用户需要修改故障码的故障级别,操作指导请参见(可选)配置芯片故障级别

Ascend Device Plugin从驱动获取到芯片故障码后,将根据故障码对设备及业务的影响将故障划分为以下8种级别,详细说明请参见表1

表1 故障级别及处理说明

故障处理策略

说明

重调度处理

优雅容错处理

NotHandleFault

对业务无影响的故障,无需处理

暂不处理

暂不处理

RestartRequest

影响业务执行,需要重新执行业务请求

隔离设备,进行任务重调度

推理场景重执行推理请求,训练场景重新执行训练业务

RestartBusiness

影响业务执行,需要重新执行业务

重新执行业务

FreeRestartNPU

影响业务执行,待芯片空闲时需复位芯片

等待芯片空闲后复位芯片

RestartNPU

影响业务执行,需立即复位芯片

立即停止训练业务,复位芯片后重新执行业务

SeparateNPU

无法恢复,需要隔离芯片

隔离设备,进行任务重调度

PreSeparateNPU

暂不影响业务,后续不再调度任务到该芯片

预隔离芯片

预隔离芯片

SubHealthFault

根据任务yaml中配置的subHealthyStrategy参数取值进行处理,处理策略如下:

  • ignore:忽略该亚健康节点,后续任务会调度到该节点。
  • graceExit:不使用亚健康节点,并保存临终ckpt文件后,进行重调度,后续任务不会调度到该节点。

    使用graceExit策略时,需保证训练框架能够接收SIGTERM信号并保存ckpt文件。

  • forceExit:不使用亚健康节点,不保存任务直接退出,进行重调度,后续任务不会调度到该节点。
  • 默认取值为ignore。

当芯片出现亚健康故障时,需根据配置yaml策略决定是否忽略亚健康故障或进行重调度

说明:

如果后续芯片出现其他级别故障,此时

SubHealthFault

处理策略不影响其他级别的故障处理。

根据策略决定是否忽略亚健康故障或进行重调度

  • 复位芯片前需要停止训练进程,否则复位将失败。
  • Ascend Device Plugin通过订阅的方式收到了无法识别的故障码(未保存在faultCode.json中),默认按照订阅接口给的处理意见进行故障处理。若订阅接口收到的故障等级为“提示”或“次要”,则按照NotHandleFault级别处理;若故障等级为其他等级,则按照SeparateNPU级别处理。

故障频率及时长

断点续训针对芯片故障的故障频率及时长进行处理。某些硬件类故障可能在一次训练任务中反复出现,导致训练任务中断反复进行重调度。集群调度组件针对这些故障对应的故障码,提供了提升故障级别的初始化配置文件faultCustomization.json。

初始化配置和故障类型

当前faultCustomization.json文件中仅提供对可识别的硬件类故障进行初始化配置。

faultCustomization.json参数说明

用户不手动修改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

-

自定义故障频率,即某一故障在时间窗口内出现次数达到次数上限时,根据配置的故障处理策略进行处理。

说明:
  • FaultFrequency及其子参数取值范围不正确,则忽略该条配置。
  • FaultFrequency及其子参数数据格式不正确,则会使用默认配置。

-

EventId

故障码ID。

说明:

每个故障码(EventId)只允许配置一个FaultFrequency参数,如果配置了多个,则只有第一条正确的会生效。

-

TimeWindow

时间窗口,即统计当前时间减去TimeWindow的时间至当前时间,这段时间范围内的故障次数,单位为秒,取值范围为60~864000。

-

Times

任务支持的断点续训最大次数,即同一个故障出现的次数上限,取值范围为1~100。如果在时间窗口内该故障出现次数大于或等于该值,则按照FaultHandling中定义的策略处理和上报。

-

FaultHandling

达到断点续训最大次数后故障的处理策略,支持配置不同级别的故障处理策略。

说明:
  • PreSeparateNPU:大模型的故障处理策略。该故障处理模式为预隔离芯片,根据训练任务实际运行情况判断是否重调度。
  • ManuallySeparateNPU:需人工干预的故障处理策略。
    • 出现该策略时,将直接上报K8s该芯片不健康并将芯片名字写入中device-info-cm中。
    • 芯片名称只要保存于该字段中,即使故障恢复也仍然隔离芯片,直到运维人员手动在该字段中删除芯片名称。可以参见步骤8进行处理。
    • 该字段只允许Ascend Device Plugin新增或修改,维护人员只能删除该字段中的芯片名称。
    • faultCode.json暂不支持该策略。

FaultDuration

-

自定义故障超时策略,当某一故障持续时间达到配置上限时,该故障会按照指定的故障处理策略进行处理。

说明:
  • FaultDuration及其子参数取值范围不正确,则忽略该条配置。
  • FaultDuration及其子参数数据格式不正确,则会使用默认配置。

-

EventId

故障ID。

说明:

每个故障码(EventId)只允许配置一个FaultDuration参数,如果配置了多个,则只有第一条正确的会生效。

-

FaultTimeout

故障持续时间超过该值,则按照FaultHandling中定义的故障处理策略进行处理,单位为秒,取值范围为0~600,默认值说明如下。
  • 故障ID为81078603的参数面网络故障默认值为20。

  • 其余故障默认值为0。

-

RecoverTimeout

故障恢复时间超过该值,则上报故障恢复,单位为秒,取值范围为0~86400,默认值说明如下。
  • 故障ID为81078603的参数面网络故障默认值为60。
  • 其余故障默认值为0。

-

FaultHandling

超过故障持续时间后的故障处理策略,支持配置不同级别的故障处理策略。

说明:

超过故障持续时间后的故障处理策略,建议高于故障本身的故障处理策略,否则配置不生效。

  • 如果一个故障码同时配置了故障频率(FaultFrequency)和故障超时策略(FaultDuration),该故障码在TimeWindow时间窗口中超时次数达到任务支持的最大次数,则取故障本身的故障处理策略、FaultFrequency或FaultDuration中配置的故障处理策略中最严重的情况进行处理。
  • 如果一个故障码同时配置了故障频率和故障超时策略,只有当故障超时后,故障频次才会增加一次。
  • 故障ID为81078603的网络故障只支持配置为NotHandleFault、PreSeparateNPU或SeparateNPU三种故障处理策略,若配置为其他策略则使用默认配置NotHandleFault。