(可选)自定义故障实体

支持用户自定义故障实体,通过新增、查询或者删除自定义故障实体,扩展MindCluster Ascend FaultDiag组件支持的故障类型。用户新增的故障保存在“${HOME}/.ascend_faultdiag/custom-ascend-kg-config.json”文件中。用户在执行日志清洗与转储和故障诊断功能时,MindCluster Ascend FaultDiag会自动在相应路径下加载用户自定义故障文件和MindCluster Ascend FaultDiag组件已经支持的故障文件。

若用户需要自定义故障文件的保存路径,可以参考自定义MindCluster Ascend FaultDiag家目录章节进行操作。

操作步骤

  1. 通过json文件,新增或修改自定义故障实体。

    ascend-fd entity --update updated_entity.json
    回显示例如下,表示操作成功。
    Updated entity successfully.
    json文件示例如下,该示例不可直接使用,用户需根据实际情况修改自定义故障的相关信息。json文件最多支持1000条自定义故障信息,超出部分将不会保存到系统。文件中的参数说明请参见表1
    {
        "41001": {      #故障码,用户需根据实际情况自定义故障码,不能与MindCluster Ascend FaultDiag已支持的故障码相同
            "attribute.class": "Software",
            "attribute.component": "AI Framework",
            "attribute.module": "Compiler",
            "attribute.cause_zh": "抽象类型合并失败",
            "attribute.description_zh": "对函数输出求梯度时,抽象类型不匹配,导致抽象类型合并失败。",
            "attribute.suggestion_zh": [
                   "1. 检查求梯度的函数的输出类型与sens_param的类型是否相同,如果不相同,修改为相同类型;",
                   "2. 自动求导报错Type Join Failed"
               ],
            "attribute.error_case": [
                "grad = ops.GradOperation(sens_param=True)",
                "# test_net输出类型为tuple(Tensor, Tensor)",
                "def test_net(a, b):",
                "    return a, b"
                  ],
            "attribute.fixed_case": [
                "grad = ops.GradOperation(sens_param=True)",
                "# test_net输出类型为tuple(Tensor, Tensor)",
                "def test_net(a, b):",
                "    return a, b"
                ],
            "rule": [
                {
                    "dst_code": "20106"
                }
            ],
            "source_file": "TrainLog",
            "regex.in": [
                "Abstract type", "cannot join with"
                ]
        },
        "41002": {                #故障码,用户需根据实际情况自定义故障码,不能与MindCluster Ascend FaultDiag已支持的故障码相同
            "attribute.class": "",
            "attribute.component": "",
            "attribute.module": "",
            "attribute.cause_zh": "",
            "attribute.description_zh": "",
            "attribute.suggestion_zh": "",
            "attribute.error_case": "",
            "attribute.fixed_case": "",
            "rule": [
                {
                    "dst_code": "20107"
                }
            ],
            "source_file": "CANN_Plog",
            "regex.in": [
                    "tsd client wait response fail"
                ]
        }
    ...
    }

    json文件示例中的41001和41002为用户自定义故障码,取值长度需为1~50个字符串,支持英文字母、数字、英文符号、下划线(_)和中划线(-),不能与MindCluster Ascend FaultDiag已支持的故障码相同。

    表1 参数说明

    参数名称

    取值类型

    参数说明

    是否必选

    取值说明

    attribute.class

    String

    故障类别

    必选

    取值长度为1~50个字符,支持英文字母、数字、英文符号与空格。

    attribute.component

    String

    故障组件

    必选

    attribute.module

    String

    故障模块

    必选

    attribute.cause_zh

    String

    故障原因

    必选

    取值长度为1~200个字符,支持英文字母、数字、英文符号、中文汉字、中文符号与空格。

    attribute.description_zh

    String

    故障描述

    必选

    支持字符串或列表。字符串为整段信息,可换行;列表则每一个元素为一行信息,组合起来为整段信息。
    • 字符串:取值长度为1~2000个字符,支持英文字母、数字、英文符号、中文汉字、中文符号、空格与“\n”。
    • 列表:列表下每个字符串的取值长度为1~200,支持英文字母、数字、英文符号、中文汉字、中文符号与空格。

    attribute.suggestion_zh

    String

    建议方案

    必选

    attribute.error_case

    String

    错误示例

    可选

    attribute.fixed_case

    String

    修正示例

    可选

    rule

    列表

    故障链,存储该故障所有触发的下一级故障实体

    可选

    列表内包含以下字段。

    • dst_code:必选,表示本次故障触发的下一级故障实体故障码,该故障码必须为MindCluster Ascend FaultDiag已支持的故障码或用户自定义故障码。
    • expression:可选,表示故障触发约束,当前为预留字段。取值长度为1~200个字符,支持英文字母、数字、英文符号与空格。

    source_file

    String

    故障日志文件

    必选

    各个日志文件类型对应的日志文件名称如下(说明:仅支持以下日志文件类型,文件名称对应存储目录请参考表1)。

    • TrainLog:训练及推理打屏日志。
    • CANN_Plog:Host侧应用类日志。
    • CANN_Device:Device侧应用类日志。
    • NPU_OS:Device侧Control CPU上的系统类日志和Device侧Control CPU上的EVENT级别系统日志。
    • NPU_Device:Device侧非Control CPU上的系统类日志。
    • NPU_History:黑匣子日志。
    • OS:主机侧操作系统日志文件。
    • OS-dmesg:主机侧内核消息类文件。
    • OS-vmcore-dmesg:系统崩溃时保存的Host侧内核消息日志文件。
    • OS-sysmon:主机侧系统监测类文件。
    • NodeDLog:AI服务器日志。
    • DL_DevicePlugin:超节点设备日志、Ascend Device Plugin组件日志。
    • DL_Volcano_Scheduler:Volcano中的volcano-scheduler组件日志。
    • DL_Volcano_Controller:Volcano中的volcano-controller组件日志。
    • DL_Docker_Runtime:Ascend Docker Runtime组件日志。
    • DL_Npu_Exporter:NPU Exporter组件日志。
    • MindIE:MindIE组件日志。
    • CANN_Amct:AMCT组件日志。

    regex.in

    String

    故障关键词

    必选

    支持一级列表与二级列表。
    • 一级列表
      • 每个元素为字符串。取值长度为1~200个字符,支持英文字母、数字、英文符号、中文汉字、中文符号与空格。
      • 列表中每个关键词都需要满足存在性判断,且符合前后关系
    • 二级列表
      • 每个子列表满足一级列表的取值约束。
      • 每个子列表内的判断规则同一级列表,每个子列表间为或关系,仅需满足一个子列表的关键词即可。
    • 新增自定义故障实体时,所有必选字段都需要存在json文件中,且符合相关取值要求。
    • 修改自定义故障实体时,只需要符合相关取值要求即可。

  2. 查看用户自定义的故障实体信息。支持通过故障码查看故障信息,不指定故障码时将查询所有自定义故障实体信息。

    ascend-fd entity --show entity_code_1 entity_code_2

  3. (可选)删除指定对应故障码的自定义故障实体信息。

    ascend-fd entity --delete entity_code_1 entity_code_2

  4. (可选)校验custom-ascend-kg-config.json文件。若用户直接修改custom-ascend-kg-config.json文件的相关自定义故障实体信息,可以执行以下命令,校验修改后文件的完整性和可用性。

    不建议用户直接更改custom-ascend-kg-config.json文件信息,可能造成MindCluster Ascend FaultDiag组件功能异常。

    ascend-fd entity --check custom-ascend-kg-config.json
    回显示例如下,表示文件校验通过。
    Custom entity verification passed.