共享存储场景
该示例主要基于k8s集群训练场景,通过配置yaml文件,指定宿主机挂载目录、容器内日志存储路径,以及容器内目录路径和宿主机路径映射关系等。具体如下:
- 配置容器内环境变量。主要用于指定CANN应用类日志、CANN软件栈trace日志、CANN算子输入dump文件、CANN算子文件在容器内的保存目录。
- 配置训练容器拉起后执行命令。主要用于执行训练脚本并将用户训练日志重定向到容器内的保存目录。
- 配置共享存储挂载目录及映射关系。主要用于指定共享存储挂载目录,以及容器内目录路径和共享存储目录路径的映射关系。将容器内日志落盘至共享存储指定路径。
配置容器内环境变量
为训练容器配置环境变量,指定CANN相关日志及其他文件,落盘至指定路径。
containers: - name: ${训练容器名} ..... # 其他配置项 env: - name: ASCEND_WORK_PATH value: /var/log/ascend_log/ascend_work_path - name: ASCEND_CACHE_PATH value: /var/log/ascend_log/ascend_cache_path
该步骤主要用于指定CANN应用类日志、CANN软件栈trace日志、CANN算子输入dump文件、CANN算子文件在容器内的保存目录。

- /var/log/ascend_log为示例目录,用户可根据实际情况调整,但需注意保证容器用户对该目录具备文件读写权限。
- ASCEND_WORK_PATH为配置CANN软件在编译运行过程中产生单机独享文件的存储路径的环境变量,该路径下的目录文件较多,主要需要转储的包括log目录的CANN应用类日志、atrace目录的CANN软件栈trace日志、extra-info/data-dump目录的算子输入dump文件。
配置训练容器拉起后执行命令
为训练容器配置执行命令。执行训练脚本启动时候,将训练产生的日志重定向到指定路径。
containers: - name: ${训练容器名} ..... # 其他配置项 command: ["/bin/bash", "-c", "bash ${训练启动脚本} > /var/log/ascend_log/train_log/rank-all.txt 2>&1"]
该步骤主要用于指定用户训练日志在容器内的保存目录。

- 用户训练日志,即训练脚本执行时,AI训练框架打印在终端屏幕上的日志,通常会通过重定向方式存储在本地。
- 部分重定向命令会写在训练启动脚本中,请根据情况调整训练启动脚本。
- 如使用MindSpore训练框架,每张卡NPU卡会拉起一个训练进程,产生一份训练日志,可以为每张卡的训练日志按照“.*?rank-(\d+).*?.txt”方式命令,如rank-0.txt,其中0表示NPU卡的rank id。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | volumes: # 定义目录卷,用于挂载容器内/ascend_cluster_log目录所映射的共享存储目录 - name: host_ascend_cache_path hostPath: path: /ascend_cluster/app_log/${训练任务ID}/${计算节点名}/ascend_cache_path type: DirectoryOrCreate - name: host_ascend_work_path_plog hostPath: path: /ascend_cluster/app_log/${训练任务ID}/${计算节点名}/ascend_work_path/log type: DirectoryOrCreate - name: host_ascend_work_path_atrace hostPath: path: /ascend_cluster/app_log/${训练任务ID}/${计算节点名}/ascend_work_path/atrace type: DirectoryOrCreate - name: host_ascend_work_path_data_dump hostPath: path: /ascend_cluster/app_log/${训练任务ID}/${计算节点名}/ascend_work_path/extra-info/data-dump type: DirectoryOrCreate - name: host_train_log_path hostPath: path: /ascend_cluster/app_log/${训练任务ID}/${计算节点名}/train_log type: DirectoryOrCreate - name: host_os_ascend_perf hostPath: path: /var/log/ascend_log/ascend_perf # 定义目录卷,用于挂载NPU Device日志目录 - name: host_device_log_path hostPath: path: /ascend_cluster/device_log/${计算节点名} containers: - name: ${训练容器名} volumeMounts: # 挂载目录卷,并映射到训练容器内日志存储路径 # 容器内/ascend_cluster_log目录和宿主机目录映射 - name: host_ascend_cache_path mountPath: /var/log/ascend_log/ascend_cache_path - name: host_ascend_work_path_plog mountPath: /var/log/ascend_log/ascend_work_path/log - name: host_ascend_work_path_atrace mountPath: /var/log/ascend_log/ascend_work_path/atrace - name: host_ascend_work_path_data_dump mountPath: /var/log/ascend_log/ascend_work_path/extra-info/data-dump - name: host_train_log_path mountPath: /var/log/ascend_log/train_log - name: host_os_ascend_perf mountPath: /var/log/ascend_log/ascend_perf |

训练任务ID:是AI平台为训练任务指定的唯一ID,可以是作业名称
计算节点名:是计算节点在集群中的唯一名称,建议为主机名,因此host_cache_patch可以是:
/ascend_cluster/app_log/${训练任务ID}/${hostname}/ascend_cache_path
下发训练任务
yaml文件配置完成后,执行命令下发训练任务。
kubectl apply -f ${yaml配置文件}
父主题: 训练任务yaml配置