准备任务YAML

如果用户不使用Ascend Docker Runtime组件,Ascend Device Plugin只会帮助用户挂载“/dev”目录下的设备。其他目录(如“/usr”)用户需要自行修改YAML文件,挂载对应的驱动目录和文件。容器内挂载路径和宿主机路径保持一致。

因为Atlas 200I SoC A1 核心板场景不支持Ascend Docker Runtime,用户也无需修改YAML文件。

操作步骤

  1. 获取相应的YAML文件。

    表1 YAML说明

    任务类型

    硬件型号

    YAML名称

    获取链接

    Deployment

    Atlas 推理系列产品

    infer-deploy-dynamic.yaml

    获取YAML

    Volcano Job

    infer-vcjob-dynamic.yaml

    获取YAML

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

    Atlas 推理系列产品上,以infer-deploy-dynamic.yaml为例,申请1个AI Core的参数配置示例如下。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: resnetinfer1-1-deploy
      labels:
        app: infers
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: infers
      template:
        metadata:
          labels:
            app: infers
            fault-scheduling: "grace"           # 重调度所使用的label
             # 以下参数说明请参见表infer-deploy-dynamic.yaml参数说明
            ring-controller.atlas: ascend-310P 
            vnpu-dvpp: "null"         
            vnpu-level: "low"           
        spec:
          schedulerName: volcano              # 需要使用MindCluster的调度器Volcano
          nodeSelector:
            host-arch: huawei-arm
          containers:
            - image: ubuntu-infer:v1   # 示例镜像
    ...
    
              resources:
                requests:
                  huawei.com/npu-core: 1        # 使用静态虚拟化的vir01模板动态虚拟化NPU
                limits:
                  huawei.com/npu-core: 1        # 数值与requests保持一致
    表2 infer-deploy-dynamic.yaml参数说明

    参数

    取值

    说明

    vnpu-level

    low

    低配,默认值,选择最低配置的虚拟化实例模板。

    high

    性能优先。

    在集群资源充足的情况下,将选择尽量高配的虚拟化实例模板;在整个集群资源已使用过多的情况下,如大部分物理NPU都已使用,每个物理NPU只剩下小部分AI Core,不足以满足高配虚拟化实例模板时,将使用相同AI Core数量下较低配置的其他模板。具体选择请参考虚拟化规则章节中的“虚拟化模板”。

    vnpu-dvpp

    yes

    Pod使用DVPP。

    no

    Pod不使用DVPP。

    null

    默认值,不关注是否使用DVPP。

    ring-controller.atlas

    ascend-310P

    任务使用Atlas 推理系列产品的标识。

    vnpu-level和vnpu-dvpp作用后,选择的vNPU模版可参考表3

    表3 dvpp和level作用结果

    AI Core请求数量

    vnpu-dvpp

    vnpu-level

    是否降级

    选择模板

    1

    null

    任意值

    -

    vir01

    2

    null

    low/其他值

    -

    vir02_1c

    null

    high

    vir02

    vir02_1c

    4

    yes

    low/其他值

    -

    vir04_4c_dvpp

    no

    vir04_3c_ndvpp

    null

    vir04_3c

    yes

    high

    -

    -

    vir04_4c_dvpp

    no

    vir04_3c_ndvpp

    null

    vir04

    vir04_3c

    8或8的倍数

    任意值

    任意值

    -

    -

    AI Core的申请数量为8或8的倍数,表示使用整张NPU卡。

  3. 挂载权重文件。

    ...
                  ports:     # 分布式训练集合通信端口
                    - containerPort: 2222      
                      name: ascendjob-port      
                  resources:
                    limits:
                      huawei.com/Ascend310P: 1   # 申请的芯片数
                    requests:
                      huawei.com/Ascend310P: 1   #与limits取值一致
                  volumeMounts:
    ...
                      # 权重文件挂载路径
                    - name: weights                  
                      mountPath: /path-to-weights
    ...
              volumes:
    ...
                # 权重文件挂载路径
                - name: weights
                  hostPath:
                    path: /path-to-weights  # 共享存储或者本地存储路径,请根据实际情况修改
    ...

    /path-to-weights为模型权重,需要用户自行准备。mindie镜像可以参考镜像中$ATB_SPEED_HOME_PATH/examples/models/llama3/README.md文件中的说明进行下载。

  4. 修改所选YAML中的容器启动命令,如下加粗部分,如果没有则添加“command”字段。

    ...
          containers:
          - image: ubuntu-infer:v1
    ...
            command: ["/bin/bash", "-c", "cd $ATB_SPEED_HOME_PATH; python examples/run_pa.py --model_path /path-to-weights"]
            resources:
              requests:
    ...