昇腾社区首页
中文
注册

配置yaml

本章节指导用户配置整卡调度或静态vNPU调度特性的任务yaml,使用HCCL Controller的用户请参考使用HCCL Controller;使用Ascend Operator的用户请参考使用Ascend Operator

使用HCCL Controller

  1. 将yaml文件上传至管理节点任意目录,并根据实际情况修改文件内容。
    • 使用整卡调度特性,参考本配置。以a800_tensorflow_vcjob.yaml为例,在一台Atlas 800 训练服务器节点创建单机训练任务,任务使用8个芯片,修改示例如下。修改完成后直接执行步骤2
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: rings-config-mindx-dls-test     # rings-config-后的名字需要与任务名一致
      ...
        labels:
          ring-controller.atlas: ascend-910   
      ...
      ---
      apiVersion: batch.volcano.sh/v1alpha1   # 不可修改。必须使用Volcano的API。
      kind: Job                               # 目前只支持Job类型
      metadata:
        name: mindx-dls-test                  # 任务名,可自定义
      ...
      spec:
        minAvailable: 1                  # 单机为1
      ...
        - name: "default-test"
            replicas: 1                  # 单机为1
            template:
              metadata:
      ...
              spec:
      ...
                env:
      ...
                - name: ASCEND_VISIBLE_DEVICES                       # Ascend Docker Runtime使用该字段
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.annotations['huawei.com/Ascend910']               # 需要和下面resources.requests保持一致
      ...
                  resources:  
                    requests:
                      huawei.com/Ascend910: 8          # 需要的NPU芯片个数为8。可在下方添加行,配置memory、cpu等资源
                    limits:
                      huawei.com/Ascend910: 8          # 目前需要和上面requests保持一致
      ...
                  nodeSelector:
                    host-arch: huawei-arm
                    accelerator-type: module
      ...
    • 使用整卡调度特性,参考本配置。以a800_tensorflow_vcjob.yaml为例,在两台Atlas 800 训练服务器节点创建分布式训练任务,任务使用2*8个芯片,修改示例如下,分布式任务的每个Pod只能调度到不同节点。修改完成后直接执行步骤2
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: rings-config-mindx-dls-test     # rings-config-后的名字需要与任务名一致
      ...
        labels:
          ring-controller.atlas: ascend-910  
      ...
      ---
      apiVersion: batch.volcano.sh/v1alpha1   # 不可修改。必须使用Volcano的API
      kind: Job                               # 目前只支持Job类型
      metadata:
        name: mindx-dls-test                  # 任务名,可自定义
      ...
      spec:
        minAvailable: 2                  # 2节点分布式任务则为2,N节点则为N,Deployment类型的任务不需要该参数
      ...
        - name: "default-test"
            replicas: 2                  # N节点分布式场景为N
            template:
              metadata:
      ...
              spec:
                affinity:                            # 本段配置表示分布式任务的Pod调度到不同节点
                  podAntiAffinity:
                    requiredDuringSchedulingIgnoredDuringExecution:
                      - labelSelector:
                          matchExpressions:
                            - key: volcano.sh/job-name      # vcjob固定字段,当任务类型为deployment时,key为deploy-name
                              operator: In                   # 固定字段
                              values:
                                - mindx-dls-test             # 需要和上面的任务名一致
                        topologyKey: kubernetes.io/hostname
      ...
                env:
      ...
                - name: ASCEND_VISIBLE_DEVICES                       # Ascend Docker Runtime使用该字段
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.annotations['huawei.com/Ascend910']               # 需要和下面resources.requests保持一致
      
                  resources:  
                    requests:
                      huawei.com/Ascend910: 8          # 需要的NPU芯片个数为8。可在下方添加行,配置memory、cpu等资源
                    limits:
                      huawei.com/Ascend910: 8          # 目前需要和上面requests保持一致
      ...
                  nodeSelector:
                    host-arch: huawei-arm
                    accelerator-type: module
      ...
    • 使用整卡调度特性,参考本配置。以a800_tensorflow_vcjob.yaml为例,在两台Atlas 800T A2 训练服务器节点创建分布式训练任务,任务使用2*8个芯片,修改示例如下,分布式任务的每个Pod只能调度到不同节点。修改完成后直接执行步骤2
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: rings-config-mindx-dls-test     # rings-config-后的名字需要与任务名一致
      ...
        labels:
          ring-controller.atlas: ascend-{xxx}b   
      ..
      ---
      apiVersion: batch.volcano.sh/v1alpha1   # 不可修改,必须使用Volcano的API
      kind: Job                               # 目前只支持Job类型
      metadata:
        name: mindx-dls-test                  # 任务名字
      ...
        labels:
          ring-controller.atlas: ascend-{xxx}b   # The value must be the same as the label in ConfigMap and cannot be changed.
      ...
      spec:
        minAvailable: 2                      # 此处建议与下面的为节点个数保持一致
        schedulerName: volcano                # Use the Volcano scheduler to schedule jobs.
      ...
        tasks:
        - name: "default-test"
          replicas: 2                         # 此处为节点个数
          template:
            metadata:
              labels:
                app: tf
                ring-controller.atlas: ascend-{xxx}b  # The value must be the same as the label in ConfigMap and cannot be changed.
            spec:
              affinity:                                   # 本段配置表示分布式任务的Pod调度到不同节点
                podAntiAffinity:
                  requiredDuringSchedulingIgnoredDuringExecution:
                    - labelSelector:
                        matchExpressions:
                          - key: volcano.sh/job-name      # vcjob固定字段,当任务类型为deployment时,key为deploy-name
                            operator: In                   # 固定字段
                            values:
                              - mindx-dls-test             # 需要和上面的任务名一致                  
                      topologyKey: kubernetes.io/hostname
              containers:
              - image: tf_arm64:b030               # Training framework image, which can be modified.
      ...
                env:
      ...
                - name: XDL_IP                 # 本段固定不变
                  valueFrom:
                    fieldRef:
                      fieldPath: status.hostIP
                - name: framework
                  value: "Tensorflow"          # 根据实际框架变化进行修改
                - name: ASCEND_VISIBLE_DEVICES                       # 会使用该字段
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.annotations['huawei.com/Ascend910']               # 需要和下面resources.requests保持一致
      ...
                resources:
                  requests:
                    huawei.com/Ascend910: 8    # 每台Atlas 800T A2 训练服务器芯片数量最多为8
                  limits:
                    huawei.com/Ascend910: 8    # 每台Atlas 800T A2 训练服务器芯片数量最多为8
      ...
              nodeSelector:
                host-arch: huawei-arm                       
                accelerator-type: module-{xxx}b-8          # 调度到Atlas 800T A2 训练服务器节点
      ...

      其余示例可参考表1表2,以及yaml对应的参数说明表1进行适配修改。

    • 使用静态vNPU调度特性,参考本配置。以a800_tensorflow_vcjob.yaml为例,在一台Atlas 800 训练服务器节点创建单机训练任务,申请2个AI Core的任务为例,修改示例如下。静态vNPU调度特性只支持单机训练任务。修改完成后直接执行步骤2
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: rings-config-mindx-dls-test     # rings-config-后的名字需要与任务名一致
      ...
        labels:
          ring-controller.atlas: ascend-910  ...
      ---
      apiVersion: batch.volcano.sh/v1alpha1   # 不可修改,必须使用Volcano的API
      kind: Job                               # 目前只支持Job类型
      metadata:
        name: mindx-dls-test                  # 任务名,可自定义
      ...
      spec:
        minAvailable: 1                  # vNPU调度此处需要为1
      ...
        - name: "default-test"
            replicas: 1                  # vNPU调度此处需要为1
            template:
              metadata:
      ...
              spec:
      ...
                env:
      ...
               # 静态vNPU调度暂不支持ASCEND_VISIBLE_DEVICES相关字段,需要删除以下加粗字段
                - name: ASCEND_VISIBLE_DEVICES                                   
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.annotations['huawei.com/Ascend910']              
      ...
                  resources:  
                    requests:
                      huawei.com/Ascend910-2c: 1          # vNPU调度此处数量只能为1
                    limits:
                      huawei.com/Ascend910-2c: 1          # vNPU调度此处数量只能为1
      ...
                  nodeSelector:
                    host-arch: huawei-arm
                    accelerator-type: module
      ...

    整卡调度或静态vNPU调度特性配置yaml的操作只在步骤1中有区别,整卡调度和静态vNPU调度特性在步骤1之后的操作相同。

  2. 若需要配置CPU、Memory资源,请参见如下示例手动添加“cpu”“memory”参数和对应的参数值,具体数值请根据实际情况配置。
    ...
              resources:  
                requests:
                  huawei.com/Ascend910: 8
                  cpu: 100m                # means 100 milliCPU.For example 100m CPU, 100 milliCPU, and 0.1 CPU are all the same
                  memory: 100Gi            # means 100*230 bytes of memory
                limits:
                  huawei.com/Ascend910: 8
                  cpu: 100m
                  memory: 100Gi
    ...
  3. 修改训练脚本、代码的挂载路径。

    从昇腾镜像仓库拉取的基础镜像中不包含训练脚本、代码等文件,训练时通常使用挂载的方式将训练脚本、代码等文件映射到容器内。

              volumeMounts:
              - name: ascend-910-config
                mountPath: /user/serverid/devindex/config
              - name: code
                mountPath: /job/code                     # 容器中训练脚本路径
              - name: data
                mountPath: /job/data                      # 容器中训练数据集路径
              - name: output
                mountPath: /job/output                    # 容器中训练输出路径
  4. 如下所示,yaml中训练命令bash train_start.sh后跟的三个参数依次为容器内训练代码目录、输出目录(其中包括生成日志重定向文件以及TensorFlow框架模型文件)、启动脚本相对代码目录的路径。之后的以“--”开头的参数为训练脚本需要的参数。单机和分布式训练脚本、脚本参数可参考模型脚本来源处的模型说明修改。
    • TensorFlow命令参数
      command:
      - "/bin/bash"
      - "-c"
      - "cd /job/code/scripts;chmod +x train_start.sh;bash train_start.sh /job/code/ /job/output/ tensorflow/resnet_ctl_imagenet_main.py --data_dir=/job/data/imagenet_TF --distribution_strategy=one_device --use_tf_while_loop=true --epochs_between_evals=1 --skip_eval --enable_checkpoint_and_export;"
      ...
    • PyTorch命令参数
      command:
      - "/bin/bash"
      - "-c"
      - "cd /job/code/scripts;chmod +x train_start.sh;bash train_start.sh /job/code/ /job/output/ main.py --data=/job/data/resnet50/imagenet --amp --arch=resnet50 --seed=49 -j=128 --lr=1.6 --world-size=1 --dist-backend='hccl' --multiprocessing-distributed --epochs=90 --batch-size=1024;"
      ...
    • MindSpore命令参数
      command:
      - "/bin/bash"
      - "-c"
      - "cd /job/code/scripts;chmod +x train_start.sh;bash train_start.sh /job/code/ /job/output/ train.py  --config_path=/job/code/config/resnet50_imagenet2012_config.yaml --output_dir=/job/output --run_distribute=True --device_num=8 --data_path=/job/data/imagenet/train"
      ...
      TensorFlow命令参数为例。
      • /job/code/:步骤3中用户自定义的容器中训练脚本路径。
      • /job/output/:步骤3中用户自定义的容器中训练数据集路径。
      • tensorflow/resnet_ctl_imagenet_main.py:启动训练脚本路径。
  5. yaml为使用NFS场景,需要指定NFS服务器地址、训练数据集路径、脚本路径和训练输出路径,请根据实际修改。如果不使用NFS请根据K8s相关指导自行修改。
    ...
              volumeMounts:
              - name: ascend-910-config
                mountPath: /user/serverid/devindex/config
              - name: code
                mountPath: /job/code                     # 容器中训练脚本路径
              - name: data
                mountPath: /job/data                      # 容器中训练数据集路径
              - name: output
                mountPath: /job/output                    # 容器中训练输出路径
    ...
            volumes:
    ...
            - name: code
              nfs:
                server: 127.0.0.1        # NFS服务器IP地址。
                path: "xxxxxx"           # 配置训练脚本路径
            - name: data
              nfs:
                server: 127.0.0.1
                path: "xxxxxx"           # 配置训练集路径
            - name: output
              nfs:
                server: 127.0.0.1
                path: "xxxxxx"           # 设置脚本相关配置模型保存路径
    ...

使用Ascend Operator

  1. 将yaml文件上传至管理节点任意目录,并根据实际情况修改文件内容。
    表2 操作参考

    特性名称

    操作示例

    整卡调度

    在Atlas 800 训练服务器上创建单机任务

    说明:

    若需要使用PyTorch框架支持的交换机亲和性调度,配置示例请参见配置交换机亲和性调度参考示例

    整卡调度

    在Atlas 800T A2 训练服务器上创建分布式任务

    静态vNPU调度

    在Atlas 800 训练服务器上创建单机任务

    • 使用整卡调度特性,参考本配置。以tensorflow_standalone_acjob.yaml为例,在Atlas 800 训练服务器节点创建单机训练任务,执行1*8芯片训练任务,修改示例如下。修改完成后直接执行步骤2
      apiVersion: mindxdl.gitee.com/v1
      kind: AscendJob
      metadata:
        name: default-test-tensorflow
        labels:
          framework: tensorflow
      spec:
        schedulerName: volcano        # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效
        runPolicy:
          schedulingPolicy:           # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效
            minAvailable: 1
            queue: default
        successPolicy: AllWorkers
        replicaSpecs:
          Chief:
            replicas: 1
            restartPolicy: Never
            template:
              spec:
                nodeSelector:
                  host-arch: huawei-arm
                  accelerator-type: module           # 其他可选值可参考表2
                containers:
                - name: ascend                          # 必须为ascend,不能修改
      ...
                env:
      ...
                - name: ASCEND_VISIBLE_DEVICES                       # Ascend Docker Runtime会使用该字段
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.annotations['huawei.com/Ascend910']               # 需要和下面resources.requests保持一致
      ...
                 ports:                          
                    - containerPort: 2222         
                      name: ascendjob-port
                  resources:
                    limits:
                      huawei.com/Ascend910: 8
                    requests:
                      huawei.com/Ascend910: 8
      ...
    • 使用整卡调度特性,参考本配置。PyTorchMindSpore框架新增了使用交换机亲和性调度的功能,该功能支持大模型任务和普通任务。以pytorch_standalone_acjob.yaml为例,在一台Atlas 800 训练服务器节点创建单机训练任务,任务使用1个芯片,修改示例如下。修改完成后直接执行步骤2
      apiVersion: mindxdl.gitee.com/v1
      kind: AscendJob
      metadata:
        name: default-test-pytorch
        labels:
          framework: pytorch
          tor-affinity: "normal-schema" #该标签为任务是否使用交换机亲和性调度标签,null或者不写该标签则不使用该特性。large-model-schema表示大模型任务,normal-schema 普通任务
      spec:
        schedulerName: volcano  # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效
        runPolicy:
          schedulingPolicy:    # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效
            minAvailable: 1
            queue: default
        successPolicy: AllWorkers
        replicaSpecs:
          Master:
            replicas: 
            restartPolicy: Never
            template:
              spec:
                nodeSelector:
                  host-arch: huawei-arm
                  accelerator-type: module
                containers:
                - name: ascend                                            # 必须为ascend,不能修改
      ...
                env:
      ...
                - name: ASCEND_VISIBLE_DEVICES                       # Ascend Docker Runtime会使用该字段
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.annotations['huawei.com/Ascend910']               # 需要和下面resources.requests保持一致
      ...
                  ports:                      
                    - containerPort: 2222        
                      name: ascendjob-port
                  resources:
                    limits:
                      huawei.com/Ascend910: 1
                    requests:
                      huawei.com/Ascend910: 1
      ...
    • 使用整卡调度特性,参考本配置。tensorflow_multinodes_acjob_{xxx}b.yaml为例,在两台Atlas 800T A2 训练服务器节点创建分布式训练任务,执行2*8芯片训练任务,修改示例如下,分布式任务的每个Pod只能调度到不同节点。修改完成后直接执行步骤2
      apiVersion: mindxdl.gitee.com/v1
      kind: AscendJob
      metadata:
        name: default-test-tensorflow               # 任务名
        labels:
          framework: tensorflow
          ring-controller.atlas: ascend-{xxx}b     # 使用Atlas 训练系列产品时需要删除该字段
      spec:
        schedulerName: volcano                     # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效
        runPolicy:
          schedulingPolicy:                         # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效
            minAvailable: 2
            queue: default
        successPolicy: AllWorkers
        replicaSpecs:
          Chief:
            replicas: 1
            restartPolicy: Never
            template:
              metadata:
                labels:
                  ring-controller.atlas: ascend-{xxx}b         # 使用Atlas 训练系列产品时需要删除该字段
              spec:
                affinity:                                         # 本段配置表示分布式任务的Pod调度到不同节点
                  podAntiAffinity:
                    requiredDuringSchedulingIgnoredDuringExecution:
                      - labelSelector:
                          matchExpressions:
                            - key: job-name
                              operator: In
                              values:
                                - default-test-tensorflow         # 需要和上面的任务名一致
                        topologyKey: kubernetes.io/hostname
                nodeSelector:
                  host-arch: huawei-arm
                  accelerator-type: module-{xxx}b-8
                containers:
                - name: ascend                                   # 必须为ascend,不能修改
      ...
                  resources:
                    limits:
                      huawei.com/Ascend910: 8
                    requests:
                      huawei.com/Ascend910: 8
                  volumeMounts:
      ...
                volumes:
      ...
          Worker:
            replicas: 1
            restartPolicy: Never
            template:
              metadata:
                labels:
                  ring-controller.atlas: ascend-{xxx}b
              spec:
                affinity:
                  podAntiAffinity:
                    requiredDuringSchedulingIgnoredDuringExecution:
                      - labelSelector:
                          matchExpressions:
                            - key: job-name
                              operator: In
                              values:
                                - default-test-tensorflow                # 需要和上面的任务名一致
                        topologyKey: kubernetes.io/hostname
                nodeSelector:
                  host-arch: huawei-arm
                  accelerator-type: module-{xxx}b-8
                containers:
                - name: ascend                                          # 必须为ascend,不能修改
      ...
                env:
      ...
                - name: ASCEND_VISIBLE_DEVICES                            # Ascend Docker Runtime会使用该字段
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.annotations['huawei.com/Ascend910']               # 需要和下面resources.requests保持一致
      ...
                  ports:                    
                    - containerPort: 2222        
                      name: ascendjob-port
                  resources:
                    limits:
                      huawei.com/Ascend910: 8
                    requests:
                      huawei.com/Ascend910: 8
                  volumeMounts:
      ...
                volumes:
      ...
    • 使用静态vNPU调度特性,参考本配置。以tensorflow_standalone_acjob.yaml为例,在一台Atlas 800 训练服务器节点创建单机训练任务,申请2个AI Core的任务为例,修改示例如下。静态vNPU调度只支持单机训练任务。修改完成后直接执行步骤2
      apiVersion: mindxdl.gitee.com/v1
      kind: AscendJob
      metadata:
        name: default-test-tensorflow
        labels:
          framework: tensorflow
          ring-controller.atlas: ascend-{xxx}b   # 使用Atlas 训练系列产品时需要删除该字段
      spec:
        schedulerName: volcano        # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效
        runPolicy:
          schedulingPolicy:           # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效
            minAvailable: 1
            queue: default
        successPolicy: AllWorkers
        replicaSpecs:
          Chief:
            replicas: 1
            restartPolicy: Never
            template:
              metadata:
                labels:
                  ring-controller.atlas: ascend-{xxx}b   # 使用Atlas 训练系列产品时需要删除该字段
              spec:
                nodeSelector:
                  host-arch: huawei-arm               # 可选值,根据实际情况填写
                  accelerator-type: module-{xxx}b-8
                containers:
                - name: ascend                          # 必须为ascend,不能修改
                image: tensorflow-test:latest
      ...
                env:
      ...
               # 静态vNPU调度暂不支持ASCEND_VISIBLE_DEVICES相关字段,需要删除以下加粗字段
                - name: ASCEND_VISIBLE_DEVICES                       
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.annotations['huawei.com/Ascend910']               
      ...
                  ports:                         
                    - containerPort: 2222         
                      name: ascendjob-port
                  resources:
                    limits:
                      huawei.com/Ascend910-2c: 1     # vNPU调度此处数量只能为1
                    requests:
                      huawei.com/Ascend910-2c: 1     # vNPU调度此处数量只能为1
                  volumeMounts:
      ...z

    整卡调度或静态vNPU调度特性配置yaml的操作只在步骤1中有区别,整卡调度和静态vNPU调度特性在步骤1之后的操作相同。

  2. 若需要配置CPU、Memory资源,请参见如下示例手动添加“cpu”“memory”参数和对应的参数值,具体数值请根据实际情况配置。
    ...
              resources:  
                requests:
                  huawei.com/Ascend910: 8
                  cpu: 100m                # means 100 milliCPU.For example 100m CPU, 100 milliCPU, and 0.1 CPU are all the same
                  memory: 100Gi            # means 100*230 bytes of memory
                limits:
                  huawei.com/Ascend910: 8
                  cpu: 100m
                  memory: 100Gi
    ...
  3. 修改训练脚本、代码的挂载路径。

    从昇腾镜像仓库拉取的基础镜像中不包含训练脚本、代码等文件,训练时通常使用挂载的方式将训练脚本、代码等文件映射到容器内。

              volumeMounts:
              - name: ascend-server-config
                mountPath: /user/serverid/devindex/config
              - name: code
                mountPath: /job/code                     # 容器中训练脚本路径
              - name: data
                mountPath: /job/data                      # 容器中训练数据集路径
              - name: output
                mountPath: /job/output                    # 容器中训练输出路径
  4. 如下所示,yaml中训练命令bash train_start.sh后跟的三个参数依次为容器内训练代码目录、输出目录(其中包括生成日志重定向文件以及TensorFlow框架模型文件)、启动脚本相对代码目录的路径。之后的以“--”开头的参数为训练脚本需要的参数。单机和分布式训练脚本、脚本参数可参考模型脚本来源处的模型说明修改。
    • TensorFlow命令参数
         command:
        - /bin/bash
        - -c
      args: [ "cd /job/code/scripts; chmod +x train_start.sh; bash train_start.sh /job/code/ /job/output/ tensorflow/resnet_ctl_imagenet_main.py --data_dir=/job/data/resnet50/imagenet_TF/ --distribution_strategy=one_device --use_tf_while_loop=true --epochs_between_evals=1 --skip_eval --enable_checkpoint_and_export" ]
      ...
    • PyTorch命令参数
      command:
        - /bin/bash
        - -c
      args: ["cd /job/code/scripts; chmod +x train_start.sh; bash train_start.sh /job/code /job/output main.py --data=/job/data/resnet50/imagenet --amp --arch=resnet50 --seed=49 -j=128 --world-size=1 --lr=1.6 --epochs=90 --batch-size=512"]
      ...
    • MindSpore命令参数
      command:
        - /bin/bash
        - -c
      args: ["cd /job/code/scripts; chmod +x train_start.sh; bash train_start.sh /job/code/ /job/code/output train.py  --data_path=/job/data/resnet50/imagenet/train --config=/job/code/config/resnet50_imagenet2012_config.yaml"]
      ...
      TensorFlow命令参数为例。
      • /job/code/:为步骤3中用户自定义的容器中训练脚本路径。
      • /job/output/:步骤3中用户自定义的容器中训练数据集路径。
      • tensorflow/resnet_ctl_imagenet_main.py:启动训练脚本路径。
  5. yaml为使用NFS场景,需要指定NFS服务器地址、训练数据集路径、脚本路径和训练输出路径,请根据实际修改。如果不使用NFS请根据K8s相关指导自行修改。
    ...
              volumeMounts:
              - name: ascend-server-config
                mountPath: /user/serverid/devindex/config
              - name: code
                mountPath: /job/code                     # 容器中训练脚本路径
              - name: data
                mountPath: /job/data                      # 容器中训练数据集路径
              - name: output
                mountPath: /job/output                    # 容器中训练输出路径
    ...
            volumes:
    ...
            - name: code
              nfs:
                server: 127.0.0.1        # NFS服务器IP地址。
                path: "xxxxxx"           # 配置训练脚本路径
            - name: data
              nfs:
                server: 127.0.0.1
                path: "xxxxxx"           # 配置训练集路径
            - name: output
              nfs:
                server: 127.0.0.1
                path: "xxxxxx"           # 设置脚本相关配置模型保存路径
    ...