AI开发平台MODELARTS-Ascend场景日志说明:Ascend场景日志说明

时间:2024-08-26 19:27:17

Ascend场景日志说明

使用Ascend资源运行训练作业时,会产生Ascend相关日志。Ascend训练场景下会生成device日志、plog日志、proc log单卡训练日志、MindSpore日志、普通日志。

其中,Ascend训练场景下的普通日志包括训练进程日志、pip-requirement.txt安装日志、ModelArts平台日志、ma-pre-start日志和davincirun日志。

Ascend日志结构举例说明如下:
obs://dgg-test-user/snt9-test-cases/log-out/                                    # 作业日志路径
├──modelarts-job-9ccf15f2-6610-42f9-ab99-059ba049a41e
	├── ascend                                                                
		├── process_log
                    ├── rank_0
			├── plog                                          # plog日志
                                        ...		
			├── device-0                                      # device日志
                                        ...
	├── mindspore                                                             # MindSpore日志
├──modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-worker-0.log                # 普通日志
├──modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-proc-rank-0-device-0.txt    # proc log单卡训练日志
表1 Ascend场景下日志说明

日志类型

日志说明

日志文件名

device日志

HOST侧用户进程,在DEVICE侧产生的AICPU、HCCP的日志,回传到HOST侧(训练容器)。

如果出现如下情况,则device日志会获取不到。

  • 节点异常重启
  • 被主动停止的节点

在训练进程结束后,该日志会生成到训练容器中。其中,使用MindSpore预置框架训练的device日志会自动上传到OBS,使用其他预置框架和 自定义镜像 训练的device日志如果需要自动上传到OBS,则需要在代码中配置ASCEND_PRO CES S_ LOG _PATH,具体请参考如下示例。

# set npu plog env
ma_vj_name=`echo ${MA_VJ_NAME} | sed 's:ma-job:modelarts-job:g'`
task_name="worker-${VC_TASK_INDEX}"
task_plog_path=${MA_LOG_DIR}/${ma_vj_name}/${task_name}

mkdir -p ${task_plog_path}
export ASCEND_PROCESS_LOG_PATH=${task_plog_path}

“~/ascend/log/device-{device-id}/device-{pid}_{timestamp}.log”

其中,pid是HOST侧用户进程号。

样例:

device-166_20220718191853764.log

plog日志

HOST侧用户进程,在HOST侧产生的日志(例如:ACL /GE)。

plog日志会生成到训练容器中。其中,使用MindSpore预置框架训练的plog日志会自动上传到OBS,使用自定义镜像训练的plog日志如果需要自动上传到OBS,则需要在代码中配置ASCEND_PROCESS_LOG_PATH,具体请参考如下示例。

# set npu plog env
ma_vj_name=`echo ${MA_VJ_NAME} | sed 's:ma-job:modelarts-job:g'`
task_name="worker-${VC_TASK_INDEX}"
task_plog_path=${MA_LOG_DIR}/${ma_vj_name}/${task_name}

mkdir -p ${task_plog_path}
export ASCEND_PROCESS_LOG_PATH=${task_plog_path}

“~/ascend/log/plog/plog-{pid}_{timestamp}.log”

其中,pid是HOST侧用户进程号。

样例:plog-166_20220718191843620.log

proc log

proc log是单卡训练日志重定向文件,方便用户快速定位对应计算节点的日志。使用自定义镜像训练的作业不涉及proc log;使用预置框架训练的proc log日志会生成到训练容器中,且自动保存到OBS。

“[modelarts-job-uuid]-proc-rank-[rank id]-device-[device logic id].txt”

  • device id为本次训练作业的NPU卡编号,取值单卡为0,8卡为0~7。

    例如:Ascend规格为 8*Snt9时,device id取值为0~7;Ascend规格为 1*Snt9时,device id取值为0。

  • rank id为本次训练作业的全局NPU卡编号,取值为0~计算节点数*卡数-1,单个计算节点下,rank id与device id取值相同。

样例:

modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-proc-rank-0-device-0.txt

MindSpore日志

使用MindSpore+Ascend训练时会产生单独的MindSpore日志。

MindSpore日志会生成到训练容器中。其中,使用MindSpore预置框架训练的plog日志会自动上传到OBS,使用自定义镜像训练的plog日志如果需要自动上传到OBS,则需要在代码中配置ASCEND_PROCESS_LOG_PATH,具体请参考如下示例。

# set npu plog env
ma_vj_name=`echo ${MA_VJ_NAME} | sed 's:ma-job:modelarts-job:g'`
task_name="worker-${VC_TASK_INDEX}"
task_plog_path=${MA_LOG_DIR}/${ma_vj_name}/${task_name}

mkdir -p ${task_plog_path}
export ASCEND_PROCESS_LOG_PATH=${task_plog_path}

MindSpore的日志介绍请参见MindSpore官网

普通训练日志

普通训练日志会生成到训练容器的“/home/ma-user/modelarts/log”目录中,且自动上传到OBS。普通训练日志的类型如下所示。

  • ma-pre-start日志(Ascend场景特有):如果用户有定义ma-pre-start脚本,会产生该脚本执行日志。
  • davincirun日志(Ascend场景特有):Ascend训练进程通过davincirun.py文件启动,该启动文件产生的日志。
  • 训练进程日志:用户训练代码的标准输出。
  • pip-requirement.txt安装日志:如果用户有定义pip-requirement.txt文件,会产生pip包安装日志。
  • ModelArts平台日志:ModelArts平台产生的系统日志,主要用于运维人员定位平台问题。

合并输出在日志文件modelarts-job-[job id]-[task id].log中。

task id表示计算节点id,单节点时取值为worker-0,多节点时取值为worker-0、worker-1、...worker-{n-1},n为计算节点个数。

样例:

modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-worker-0.log

support.huaweicloud.com/develop-modelarts/develop-modelarts-0096.html