使用示例
本章节为使用示例,仅供参考,请根据训练平台、训练任务异常场景和集群存储等实际情况参考使用。
场景说明
- 本示例为训练集群挂载共享存储场景,请提前确保集群所有节点都挂载共享存储。
- 本示例为集群训练任务异常退出场景使用示例,涉及到以下日志信息。
- 用户训练日志
- CANN应用类日志
- 训练前NPU状态检查文件
- 训练后NPU状态检查文件
- Device侧日志
- 主机侧操作系统日志
- MindCluster组件日志
- MindIE组件日志
- MindIE Pod打屏日志
- AMCT组件日志
- BMC日志
- LCNE日志
日志采集
以下日志目录仅为示例,用户可以根据实际情况自定义存储目录。示例以单台服务器名为worker-0为例,请用户为所有训练服务器创建相应目录。

创建日志目录时建议保证目录具有默认的读写权限。训练容器启动时不建议挂载root用户目录为日志存储目录。
- 在共享存储任意路径下,创建昇腾训练日志存储目录,如“/ascend_cluster_log”。
mkdir -p /ascend_cluster_log
- 在昇腾训练日志存储目录下,创建Device日志存储目录,如“/ascend_cluster_log/device_log/worker-0”。
mkdir -p /ascend_cluster_log/device_log/worker-0
- 在启动训练任务后,在昇腾训练日志存储目录下,创建单次训练作业日志存储目录,推荐使用训练任务ID作为目录名,如“/ascend_cluster_log/job202405181309/worker-0”。
mkdir -p /ascend_cluster_log/job202405181309/worker-0
- 依次执行以下命令,创建训练日志采集目录。
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环境检查文件
- 配置日志采集目录。
- 执行以下命令,使用msnpureport_auto_export.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/”。
- 启动训练任务时,配置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
- 启动训练容器时,将共享存储的CANN应用类日志目录挂载到容器内任意路径下(如“/ascend_cluster_log/job202405181309/worker-0/process_log”),并配置环境变量。
- 启动训练任务时,配置用户训练日志采集目录。
- 启动训练容器时,将共享存储的用户训练日志采集目录挂载到容器内任意路径下(如“/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
- 执行以下命令,使用重定向方式,将脚本执行回显内容落盘存储。
python train.py > /ascend_cluster_log/job202405181309/worker-0/train_log/rank-0.txt 2>&1
- 将每张NPU卡的训练日志文件保存为txt或log文件,6.0.RC3之前的版本需要按照rank-(rank_id).txt的格式要求命名用户训练转储日志文件。
- 若使用PyTorch框架,所有NPU卡的训练日志可重定向到同一个文件,如rank-all.txt。
- 启动训练容器时,将共享存储的用户训练日志采集目录挂载到容器内任意路径下(如“/ascend_cluster_log/job202405181309/worker-0/train_log”)。使用宿主机进行训练时,可跳过本步骤。
- 启动训练任务前,需要参考训练及推理前NPU环境检查文件章节,查询训练前NPU相关信息。在训练结束后,再参考训练及推理后NPU环境检查文件章节,查询训练后NPU相关信息。
- 执行以下命令,使用msnpureport_auto_export.sh文件脚本,周期性导出Device侧日志。如果采取单次导出Device侧日志,可以参考Device侧日志章节进行操作。
日志清洗
以单台服务器名为worker-0为例,请用户为所有训练服务创建目录,并执行清洗命令。
- 在日志清洗前,执行以下命令,创建清洗结果和诊断结果的输出目录。
mkdir -p /ascend_cluster_log/job202405181309/faultdiag_work_tmp/parse_out/worker-0 # 清洗结果输出目录 mkdir -p /ascend_cluster_log/job202405181309/faultdiag_work_tmp/diag_out # 诊断结果输出目录
- 执行ascend-fd parse命令,对单台训练服务器进行日志清洗。
ascend-fd parse --process_log CANN应用类日志目录 --train_log 用户训练日志目录 --env_check 环境检查文件目录 --host_log 主机侧操作系统日志 --device_log NPU侧日志目录 --dl_log MindCluster组件日志 -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 --dl_log /ascend_cluster_log/job202405181309/worker-0/dl_log -o /ascend_cluster_log/job202405181309/faultdiag_work_tmp/parse_out/worker-0
- (可选)若有BMC侧日志,执行如下。
ascend-fd parse --bmc_log BMC侧日志目录 -o 清洗结果输出目录
如:
ascend-fd parse --bmc_log "bmc/worker-00" -o "auto_diag_combine/bmc/worker-00"
- (可选)若有LCNE侧日志,执行如下。
ascend-fd parse --lcne_log LCNE侧日志目录 -o 清洗结果输出目录
如:
ascend-fd parse --lcne_log "lcne/worker-111" -o "auto_diag_combine/lcne/worker-111"
更多关于日志清洗的详细信息,请参见日志清洗与转储章节。
故障诊断
执行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
更多关于故障诊断的详细信息,请参见故障诊断章节。
父主题: 使用指导