创建yaml文件

请根据使用须知里的介绍依据实际情况选择合适的yaml。

yaml示例为使用NFS的场景,NFS需要安装在存储节点,安装操作请参见安装NFS

  1. 请从MindX DL MindXDL-deploy仓库中下载yaml文件。

    表1 任务类型与硬件型号对应yaml文件

    任务类型

    硬件型号

    yaml文件

    获取yaml

    说明

    Volcano Job

    Atlas 800 训练服务器

    a800_mindspore_vcjob.yaml

    根据所使用的任务类型,获取yaml

    示例默认为单机8卡任务

    服务器(插Atlas 300T 训练卡

    a300t_mindspore_vcjob.yaml

    示例默认为单机单卡任务

    Deployment

    Atlas 800 训练服务器

    a800_mindspore_deployment.yaml

    示例默认为单机8卡任务

    服务器(插Atlas 300T 训练卡

    a300t_mindspore_deployment.yaml

    示例默认为单机单卡任务

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

    表2 yaml文件参数说明

    参数

    取值

    说明

    minAvailable

    单机:1

    分布式:N

    N为节点个数,Deployment类型的任务不需要该参数,该参数建议与replicas保持一致。

    replicas

    单机:1

    分布式:N

    N为节点个数。

    image

    -

    训练镜像名称,请根据实际修改。

    host-arch

    ARM环境:huawei-arm

    X86环境:huawei-x86

    需要运行训练任务的节点架构,请根据实际修改。

    分布式任务中,请确保运行训练任务的节点架构相同。

    huawei.com/Ascend910

    Atlas 800 训练服务器

    • 单机单芯片:1
    • 单机多芯片:2、4、8
    • 分布式:8

    服务器(插Atlas 300T 训练卡):

    • 单机单芯片:1
    • 单机多芯片:2
    • 分布式:2

    请求的NPU数量,请根据实际修改。

    两个Atlas 800 训练服务器节点,执行2*8芯片分布式训练任务为例,修改如下。
    ...
    minAvailable: 2                # 2节点分布式任务则为2,N节点则为N。Deployment类型的任务不需要该参数
    ...
    - name: "default-test"
        replicas: 2                  # N节点分布式场景为N,且requests字段的npu的数目为8
        template:
          metadata:
    ...
              resources:  
                requests:
                  huawei.com/Ascend910: 8          # 需要的NPU芯片个数为8。可在下方添加行,配置memory,cpu等资源
                limits:
                  huawei.com/Ascend910: 8          # 目前需要和上面requests保持一致
    ...
    若需要配置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. 如下所示,训练命令中的“train_start.sh”后跟的三个参数依次为容器内训练代码目录(/job/code/ResNet50_for_MindSpore_1.4_code/)、日志文件(/job/output/logs)、启动脚本相对代码目录的路径(train.py)。之后的以"--"开头的参数为训练脚本“train.py”需要的参数。训练脚本参数可参考ModelZoo上模型说明修改。

    ...
    command:
    - "/bin/bash"
    - "-c"
    - "cd /job/code/ResNet50_for_MindSpore_1.4_code/scripts;chmod +x train_start.sh;bash train_start.sh /job/code/ResNet50_for_MindSpore_1.4_code/ /job/output/logs train.py --net=resnet50 ..."# 此处省略部分参数
    ...

  4. NFS服务器地址、训练数据集路径、脚本路径和训练输出路径,请根据实际修改。

    断点续训功能仅支持Atlas 800 训练服务器。若用户使用断点续训功能,需要扩展内存,请按注释添加参数。

    ...
              volumeMounts:
    #断点续训扩容需要添加以下两行
              - name: shm
                mountPath: /dev/shm
    #----------------------------------------------------------------------------
              - 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: shm
              emptyDir:
                medium: Memory
                sizeLimit: 16Gi
    #----------------------------------------------------------------------------
    ...
            - name: code
              nfs:
                server: 127.0.0.1                                  # NFS服务器IP地址。本例中,/data/atlas_dls/为共享路径
                path: "/data/atlas_dls/code"                       # 配置训练脚本路径
            - name: data
              nfs:
                server: 127.0.0.1
                path: "/data/atlas_dls/public/dataset/"    # 配置训练集路径
            - name: output
              nfs:
                server: 127.0.0.1
                path: "/data/atlas_dls/output/"
    ...