昇腾社区首页
中文
注册

本地存储场景

该示例主要基于k8s集群训练场景,通过配置yaml文件,指定宿主机挂载目录、容器内日志存储路径,以及容器内目录路径和宿主机路径映射关系等。具体如下:

配置容器内环境变量

为训练容器配置环境变量,指定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
volumes:
   # 定义目录卷,用于挂载容器内/var/log/ascend_log目录所映射的宿主机目录
   - name: host_ascend_cache_path     
     hostPath:
          path: /var/log/ascend_log/app_log/${训练任务ID}/ascend_cache_path
          type: DirectoryOrCreate
   - name: host_ascend_work_path_plog      
     hostPath:
          path: /var/log/ascend_log/app_log/${训练任务ID}/ascend_work_path/log
          type: DirectoryOrCreate
   - name: host_ascend_work_path_atrace    
     hostPath:
          path: /var/log/ascend_log/app_log/${训练任务ID}/ascend_work_path/atrace
          type: DirectoryOrCreate
   - name: host_ascend_work_path_data_dump      
     hostPath:
          path: /var/log/ascend_log/app_log/${训练任务ID}/ascend_work_path/extra-info/data-dump
          type: DirectoryOrCreate
   - name: host_train_log_path        
     hostPath:
          path: /var/log/ascend_log/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: /var/log/ascend_log/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,可以是作业名称

下发训练任务

yaml文件配置完成后,执行命令下发训练任务。

kubectl apply -f ${yaml配置文件}