文档首页/ AI开发平台ModelArts/ ModelArts Lite Cluster用户指南/ Lite Cluster资源使用/ 在Lite Cluster资源池上使用Ascend FaultDiag工具完成日志诊断
更新时间:2025-08-14 GMT+08:00
分享

在Lite Cluster资源池上使用Ascend FaultDiag工具完成日志诊断

场景描述

本文档介绍了在ModelArts Lite环境下使用Ascend FaultDiag工具进行日志诊断的过程,包括日志采集、日志清洗、故障诊断三个步骤。

日志数据以节点为单位进行采集,在单节点日志目录下分别清洗,将清洗结果汇总后,进行故障诊断。例如,对于运行在8个节点共64卡集群上的任务,需要在8个节点上分别进行日志采集,收集的日志存储在worker-0 ~ worker-7这8个目录下。然后分别在8个目录下进行日志清洗,每一个目录下的日志清洗结果分别存储到output/worker-0 ~ output/worker-7下面。最后,在output目录下进行故障诊断,得到诊断结果。

Ascend FaultDiag工具下载地址请见Ascend FaultDiag 故障诊断工具

步骤一:日志采集

共需要采集6类日志:用户训练打屏日志、主机侧操作系统日志(Host日志)、Device侧日志、CANN日志、主机侧资源信息、NPU网口资源信息。

  • 用户训练打屏日志:指在训练过程中,通过设置环境变量将日志信息输出到标准输出(屏幕)的日志。
  • 机侧操作系统日志(Host日志):指在训练作业运行过程中,HOST侧用户进程产生的日志。
  • Device侧日志:指在Host侧用户进程运行时,Device侧产生的AICPU、HCCP的日志,这些日志会被回传到Host侧。
  • CANN日志:CANN日志是昇腾(Ascend)计算架构中用于记录CANN(Compute Architecture for Neural Networks)模块运行时信息的日志。在模型转换过程中,如果遇到“Convert graph to om failed”等错误,CANN日志可以帮助分析问题。
  • 主机侧资源信息:指在主机(Host)侧运行的AI应用或服务所使用的资源统计信息。
  • NPU网口资源信息:指在主机(Host)侧运行的AI应用或服务所使用的资源统计信息。

如果日志数据已经在训练时进行了输出和转储,例如存放在OBS,且符合约束限制中的文件名和路径约束,则跳过日志采集步骤,进入步骤二:日志清洗

  • 约束限制
    • CANN日志采集后必须放在名为“process_log”的文件夹下,示例:“worker-0/…/process_log/”
    • Device侧日志采集后必须放在名为“device_log”的文件夹下,示例:“worker-0/…/device_log/”
    • 主机侧资源信息、NPU网口资源信息采集后必须放在名为“environment_check”的文件夹下,示例:“worker-0/…/environment_check/”
    • 单节点采集的日志,即单worker目录下,总文件大小应限制在5G以下,文件总数量不能超过一百万,否则将影响日志清洗效率。
    • 用户训练打屏日志无大小限制,会默认只读最后100KB日志。
    • CANN日志单个文件应限制在20MB以下。
    • NPU状态监测指标文件、NPU网口统计监测指标文件、主机侧资源信息文件应限制在512MB以下。
    • Host日志当前仅支持“/var/log”下的messages日志,且单个文件的转储大小上限应限制在512MB以下。

步骤二:日志清洗

采集的日志需要按照不同节点路径进行组织,如“worker-0”目录下存放从对应节点采集的所有日志。需要特别注意目录下“device_log”“process_log”“environment_check”三个子目录是否存在,且命名正确。

  1. 数据挂载

    如果所采集日志的存储在OBS上,首先需要将OBS内的日志数据进行挂载。挂载方式建议使用rclone工具

    1. 下载安装rclone。
    2. 首先配置访问OBS所需凭据:
      # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
      # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
      export AWS_ACCESS_KEY=${HUAWEICLOUD_SDK_AK}
      export AWS_SECRET_KEY=${HUAWEICLOUD_SDK_AK}
      export AWS_SESSION_TOKEN=${TOKEN}
    3. 填写rclone配置文件rclone.conf:
      [rclone]
      type = s3
      provider = huaweiOBS
      env_auth = true
      acl = private
    4. 使用lsd命令查看日志路径下目录,验证是否配置成功:
      rclone lsd rclone:/${obs_bucket_name}/${path_to_logs} --config=${path_to_rclone.config} --s3-endpoint=${obs_endpoint} –no-check-certificate
    5. 屏幕输出日志目录,示例(该任务只有worker-0一个节点):

    6. 使用mount命令将日志目录挂载到本机:
      rclone mount rclone:/${obs_bucket_name}/${path_to_logs} /${path_to_local_dir} --config=${path_to_rclone.config} --s3-endpoint=${obs_endpoint} –no-check-certificate
  2. 节点日志清洗

    指定单节点日志路径为输入,指定该节点日志清洗存储路径为输出(输出路径需要为空),使用ascend-fd parse命令逐一对单个节点的日志进行清洗。

    ascend-fd parse -i ${path_to_worker_logs} -o ${path_to_parse_output}

    需要注意的是,清洗结果也与日志相似,不同节点需要按照不同的worker目录分别进行存储

步骤三:故障诊断

因为Linux系统限制最大进程数(默认为1024),所以集群规格建议≤128台服务器(1024卡)。如果服务器数量超过此规格,需使用ulimit -n ${num}命令调整文件描述符上限,其中${num}值大于卡数,如6k卡集群,则可设置为8192。

日志故障诊断需要指定所有节点清洗结果的所在路径,指定诊断结果存储路径为输出,且输出路径需要为空,使用ascend-fd diag命令进行日志故障诊断:

ascend-fd diag -i ${path_to_parse_outputs} -o ${path_to_diag_output}

诊断结果以两种形式进行呈现:

  • 屏幕回显

  • “${path_to_diag_output}/fault_diag_result”目录下生成的diag_report.json文件。

相关文档