使用示例

本章节为使用示例,仅供参考,请根据训练平台、训练任务异常场景和集群存储等实际情况参考使用。

场景说明

日志路径映射关系

宿主机和容器中的相关日志路径与共享存储下的日志路径的映射关系如图1所示。

图1 日志路径映射图

使用流程

  1. 日志采集。在共享存储上创建日志路径并进行相关配置。
  2. 日志清洗。日志采集后,对日志信息进行清洗。
  3. 故障诊断。执行故障诊断命令,获取根因节点和故障事件信息。

日志采集

以下日志目录仅为示例,用户可以根据实际情况自定义存储目录。示例以单台服务器名为worker-0为例,请用户为所有训练服务器创建相应目录。

创建日志目录时建议保证目录具有默认的读写权限。训练容器启动时不建议挂载root用户目录为日志存储目录。

  1. 在共享存储任意路径下,创建昇腾训练日志存储目录,如“/ascend_cluster_log”

    mkdir -p /ascend_cluster_log

  2. 在昇腾训练日志存储目录下,创建Device日志存储目录,如“/ascend_cluster_log/device_log/worker-0”

    mkdir -p /ascend_cluster_log/device_log/worker-0

  3. 在启动训练任务后,在昇腾训练日志存储目录下,创建单次训练作业日志存储目录,推荐使用训练任务ID作为目录名,如“/ascend_cluster_log/job202405181309/worker-0”

    mkdir -p /ascend_cluster_log/job202405181309/worker-0

  4. 依次执行以下命令,创建训练日志采集目录。

    mkdir -p /ascend_cluster_log/job202405181309/worker-0/process_log    # CANN应用类日志路径
    mkdir -p /ascend_cluster_log/job202405181309/worker-0/train_log      # 用户训练日志
    mkdir -p /ascend_cluster_log/job202405181309/worker-0/environment_check    # 训练前或后NPU环境检查文件

  5. 配置日志采集目录。

    1. 执行以下命令,使用msnpureport_auto_expert.sh文件脚本,周期性导出Device侧日志。如果采取单次导出Device侧日志,可以参考Device侧日志章节进行操作。
      Driver安装目录/driver/tools/msnpureport_auto_export.sh 采集间隔时间 最大存储目录容量 /Device日志存储目录

      如:

      /usr/local/Ascend/driver/tools/msnpureport_auto_export.sh 300 10 /ascend_cluster_log/device_log/worker-0

      在以上示例中,采集间隔时间等参数说明如下

      表1 参数说明

      参数

      说明

      采集间隔时间

      导出Device侧日志和文件的间隔时间。取值为大于0的整数,单位是s,如:2s。

      最大存储目录容量

      导出Device侧日志和文件的存储目录容量。取值为大于等于2的整数,单位是G,如:10G。

      Device日志存储目录名

      导出Device侧日志和文件的存储路径(任意的绝对路径)。如:“/home/log/”。

      • msnpureport_auto_expert.sh脚本的更多使用指导请参见CANN官方文档
      • 若设置采集间隔时间较短,频繁导出日志可能会导致系统资源开销较大,推荐参数设置为300(5分钟),可根据实际场景调整。
      • 训练服务器开机后,只需执行一次msnpureport_auto_expert.sh脚本。训练服务器重启后,也需要重新执行该采集脚本。
    2. 启动训练任务时,配置CANN应用类日志采集目录。
      • 启动训练容器时,将共享存储的CANN应用类日志目录挂载到容器内任意路径下(如“/ascend_cluster_log/job202405181309/worker-0/process_log”),并配置环境变量。
        docker run \
            -v /容器内CANN应用类日志路径:/共享存储下的CANN应用类日志路径 \
            --env ASCEND_PROCESS_LOG_PATH=/容器内CANN应用类日志路径 \
            \...其他启动项...\    
            ${训练镜像名} /bin/bash

        如:

        docker run \
            -v /ascend_cluster_log/job202405181309/worker-0/process_log:/ascend_cluster_log/job202405181309/worker-0/process_log \
            --env ASCEND_PROCESS_LOG_PATH=/ascend_cluster_log/job202405181309/worker-0/process_log \
            \...其他启动项...\    
            ${训练镜像名} /bin/bash
      • 使用宿主机进行训练时,需要执行以下命令。
        export ASCEND_PROCESS_LOG_PATH /CANN应用类日志路径
        如:
        export ASCEND_PROCESS_LOG_PATH /ascend_cluster_log/job202405181309/worker-0/process_log
    3. 启动训练任务时,配置用户训练日志采集目录。
      1. 启动训练容器时,将共享存储的用户训练日志采集目录挂载到容器内任意路径下(如“/ascend_cluster_log/job202405181309/worker-0/train_log”)。使用宿主机进行训练时,可跳过本步骤。
        docker run \
            -v /容器内用户训练日志采集目录:/共享存储下的用户训练日志采集目录 \
            \...其他启动项...\    
            ${训练镜像名} /bin/bash

        如:

        docker run \
            -v /ascend_cluster_log/job202405181309/worker-0/train_log:/ascend_cluster_log/job202405181309/worker-0/train_log \
            \...其他启动项...\    
            ${训练镜像名} /bin/bash
      2. 执行以下命令,使用重定向方式,将脚本执行回显内容落盘存储。
        python train.py > /ascend_cluster_log/job202405181309/worker-0/train_log/rank-0.txt 2>&1
        • 每张NPU需要按照rank-(rank_id).txt的格式要求命名用户训练转储日志文件。
        • 若使用Pytorch框架,所有NPU卡的训练日志可重定向到同一个文件,如rank-all.txt。
    4. 启动训练任务前,需要参考训练前NPU环境检查文件章节,查询训练前NPU相关信息。在训练结束后,再参考训练后NPU环境检查文件章节,查询训练后NPU相关信息。

      更多关于日志采集的详细信息,可以参见日志采集章节。

日志清洗

以单台服务器名为worker-0为例,请用户为所有训练服务创建目录,并执行清洗命令。

  1. 在日志清洗前,执行以下命令,创建清洗结果和诊断结果的输出目录。

    mkdir -p /ascend_cluster_log/job202405181309/faultdiag_work_tmp/parse_out/worker-0 # 清洗结果输出目录
    mkdir -p /ascend_cluster_log/job202405181309/faultdiag_work_tmp/diag_out   # 诊断结果输出目录

  2. 执行ascend-fd parse命令,对单台训练服务器进行日志清洗。

    ascend-fd parse --process_log CANN应用类日志目录 --train_log 用户训练日志目录 --env_check 环境检查文件目录 --host_log 主机侧操作系统日志 --device_log NPU侧日志目录 -o 清洗输出目录名
    如:
    ascend-fd parse --process_log /ascend_cluster_log/job202405181309/worker-0/process_log --train_log /ascend_cluster_log/job202405181309/worker-0/train_log --env_check /ascend_cluster_log/job202405181309/worker-0/environment_check --host_log /var/log --device_log /ascend_cluster_log/device_log/worker-0/msnpureport_log_new
    -o /ascend_cluster_log/job202405181309/faultdiag_work_tmp/parse_out/worker-0

    更多关于日志清洗的详细信息,请参见日志清洗与转储章节。

故障诊断

执行ascend-fd diag命令,对集群所有训练服务器进行故障诊断。
ascend-fd diag -i /清洗输出目录名 -o /诊断结果输出目录名
如:
ascend-fd diag -i /ascend_cluster_log/job202405181309/faultdiag_work_tmp/parse_out -o /ascend_cluster_log/job202405181309/faultdiag_work_tmp/diag_out

更多关于故障诊断的详细信息,请参见故障诊断章节。