昇腾社区首页
中文
注册
开发者
下载

配置文件说明

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

  • 针对芯片故障的不同级别进行分级处理时,Ascend Device Plugin组件会获取到当前故障的故障码,根据faultCode.json中故障码配置的故障级别,对故障进行相应处理。
  • 针对芯片故障的故障频率及时长进行处理时,Ascend Device Plugin组件会获取到当前故障的故障码,根据faultCustomization.json中故障配置的故障频率和时长,对故障进行相应处理。

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

faultCode.json中的故障级别

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

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

表1 故障级别及处理说明

故障处理策略

说明

重调度处理

优雅容错处理

NotHandleFault

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

暂不处理

暂不处理

RestartRequest

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

隔离芯片,进行任务重调度。

说明:

若推理任务订阅故障信息,任务使用的推理卡上发生RestartRequest故障且故障持续时间未超过60秒,则不执行任务重调度;若故障持续时间超过60秒仍未恢复,则隔离芯片,进行任务重调度。

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

RestartBusiness

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

重新执行业务

FreeRestartNPU

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

等待芯片空闲后复位芯片。

RestartNPU

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

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

SeparateNPU

无法恢复,需要隔离芯片。

隔离芯片,进行任务重调度。

PreSeparateNPU

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

预隔离芯片

预隔离芯片

SubHealthFault

根据任务YAML中配置的subHealthyStrategy参数取值进行处理,详细请参见表1

当芯片出现亚健康故障时,需根据配置YAML策略进行处理。

说明:

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

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

根据策略进行处理。

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

故障频率及时长

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

初始化配置和故障类型

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

24小时内发生3次以下故障,则将芯片故障级别提升至需要人工干预的故障级别ManuallySeparateNPU,详细说明请参见faultCustomization.json参数说明

下面将以故障名称HBMC Ca Parity错误,对应故障码80E18005为例,将当前的故障级别提升至ManuallySeparateNPU(需要人工干预的故障级别),示例如下。
  "FaultFrequency": [
    {
      "EventId": [
        "80C98000","80B78000","80B58000","80A18008","80A38008","80A58008","80B98000","80B98008","80BB8000",
        "80BB8008","80BD8000","80BD8008","80C78008","80C98008","80CB8008","80CD8008","80CF8008","80D98008",
        "80DF8008","80DE1801","80E01801","80E18008","80E38008","80E39200","80E3A202","80E3A203","80E78000",
        "80E78008","80F18000","80F18008","80F38008","80F78008","81318008","81338008","813B8008","81478008",
        "81578008","815F8008","81938008","81958008","81978008"
      ],
      "TimeWindow": 86400,
      "Times": 2,
      "FaultHandling": "ManuallySeparateNPU"
    },
    {
      "EventId": ["80E18005"],
      "TimeWindow": 86400,
      "Times": 3,
      "FaultHandling": "ManuallySeparateNPU"
    }
  ],
  • 故障的处理策略为ManuallySeparateNPU时,即使故障恢复也仍然隔离芯片,需要手动恢复强制隔离的芯片,可以参见步骤8进行处理。
  • 除可以识别的硬件故障外,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。