昇腾社区首页
中文
注册

准备任务yaml

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

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

操作步骤

  1. 下载yaml文件。
    表1 任务类型与硬件型号对应yaml文件

    任务类型

    硬件型号

    yaml名称

    获取链接

    Volcano调度的Deployment任务

    Atlas 200I SoC A1 核心板

    infer-deploy-310p-1usoc.yaml

    获取yaml

    其他类型推理节点

    infer-deploy.yaml

    获取yaml

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

    参数

    取值

    说明

    image

    -

    推理镜像名称,请根据实际修改(用户在制作镜像章节制作的镜像名称)。

    replicas

    整数

    运行的任务副本数量。通常情况一般为1。

    requests

    • 推理服务器(插Atlas 300I 推理卡):

      huawei.com/Ascend310:芯片数量

    • Atlas 推理系列产品非混插模式:

      huawei.com/Ascend310P:芯片数量

    • Atlas 推理系列产品混插模式:
      • huawei.com/Ascend310P-V:芯片数量
      • huawei.com/Ascend310P-VPro:芯片数量
      • huawei.com/Ascend310P-IPro:芯片数量

    如:huawei.com/Ascend310: 1

    请求的NPU类型、数量,请根据实际修改。requests和limits下,芯片的名字和数量需保持一致。

    说明:

    静态vNPU调度的该参数取值可参考表1中的“vNPU类型”列。

    limits

    host-arch

    Arm环境:huawei-arm

    x86_64环境:huawei-x86

    需要运行推理任务的节点架构,请根据实际修改。Atlas 200I SoC A1 核心板节点仅支持huawei-arm。

    servertype

    soc

    服务器类型。

    • 调度到Atlas 200I SoC A1 核心板节点上,必须要加上此配置,并参考“infer-310p-1usoc.yaml”文件进行目录挂载。
    • 其他类型节点不需要此参数。

    metadata.annotations['huawei.com/AscendXXX']

    XXX表示芯片的型号,支持的取值为910,310和310P。取值需要和环境上实际的芯片类型保持一致。

    Ascend Docker Runtime会获取该参数值,用于给容器挂载相应类型的NPU。

    说明:

    该参数只支持使用Volcano调度器的整卡调度特性。使用静态vNPU调度、动态vNPU调度和其他调度器的用户需要删除示例yaml中该参数的相关字段。

    以下参数仅支持推理服务器(插Atlas 300I 推理卡)的产品使用:

    npu-310-strategy

    • card:按卡调度,request请求的芯片个数不超过4,请求的芯片数量会调度到同一张卡上。
    • chip:按芯片调度,请求的芯片个数不超过单个节点的最大值。

    -

    schedulerName

    volcano

    如果切换调度器,需要将之前调度的任务都释放。

  3. 根据实际需求,选择yaml示例并进行如下修改。
    • 使用整卡调度特性,参考本配置。以infer-deploy.yaml为例,在推理服务器(插Atlas 300I 推理卡)节点创建一个单卡推理任务,并且启用了调度策略,示例如下。修改完成后直接执行步骤4
      apiVersion: apps/v1
      kind: Deployment
      ...
      spec:
        template:
          metadata: 
            labels:
               app: infers
               host-arch: huawei-arm
               npu-310-strategy: card     # 按卡调度
      ...
          spec:
            schedulerName: volcano        # 此时调度器必须为volcano
            nodeSelector:
              host-arch: huawei-arm 
      ...
            containers:
            - image: ubuntu-infer:v1
      ...
            env:
            - name: ASCEND_VISIBLE_DEVICES                       # Ascend Docker Runtime会使用该字段
              valueFrom:
                fieldRef:
                  fieldPath: metadata.annotations['huawei.com/Ascend310']               # 需要和下面resources.requests保持一致
              resources:
                requests:
                  huawei.com/Ascend310: 1
                limits:
                  huawei.com/Ascend310: 1
      ...
    • 使用整卡调度特性,参考本配置。以infer-deploy.yaml为例,在Atlas 推理系列产品节点(非Atlas 200I SoC A1 核心板节点)创建一个不使用混插模式的单卡推理任务,示例如下。修改完成后直接执行步骤4
      apiVersion: apps/v1
      kind: Deployment
      ...
      spec:
        template:
          metadata: 
            labels:
               app: infers
      ...
          spec:
            affinity:        # 本段表示不调度到Atlas 200I SoC A1 核心板节点
              nodeAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  nodeSelectorTerms:
                    - matchExpressions:
                        - key: servertype
                          operator: NotIn
                          values:
                            - soc
            schedulerName: volcano 
            nodeSelector:
              host-arch: huawei-arm 
      ...
            containers:
            - image: ubuntu-infer:v1
      ...
            env:
            - name: ASCEND_VISIBLE_DEVICES                       # Ascend Docker Runtime会使用该字段
              valueFrom:
                fieldRef:
                  fieldPath: metadata.annotations['huawei.com/Ascend310P']               # 需要和下面resources.requests保持一致
      ...
              resources:
                requests:
                  huawei.com/Ascend310P: 1
                limits:
                  huawei.com/Ascend310P: 1
      ...

      因为Atlas 200I SoC A1 核心板节点需要挂载的目录和文件与其他类型节点不一致,为了避免推理失败,如果需要使用Atlas 推理系列产品芯片,且集群中有Atlas 200I SoC A1 核心板节点但是不希望调度到这类节点上,请在示例的yaml中增加“affinity”字段,表示不调度到有“servertype=soc”标签的节点上。

    • 使用整卡调度特性,参考本配置。以infer-deploy-310p-1usoc.yaml为例,在Atlas 200I SoC A1 核心板节点(不支持混插模式)创建一个单卡推理任务,示例如下。修改完成后直接执行步骤4
      apiVersion: apps/v1
      kind: Deployment
      ...
      spec:
        template:
          metadata: 
            labels:
               app: infers
      ...
          spec:
            schedulerName: volcano 
            nodeSelector:
              host-arch: huawei-arm
              servertype: soc      # 该标签表示仅能调度到Atlas 200I SoC A1 核心板节点
      ...
            containers:
            - image: ubuntu-infer:v1
      ...
            env:
            - name: ASCEND_VISIBLE_DEVICES                       # Ascend Docker Runtime会使用该字段
              valueFrom:
                fieldRef:
                  fieldPath: metadata.annotations['huawei.com/Ascend310P']               # 需要和下面resources.requests保持一致
      ...
              resources:
                requests:
                  huawei.com/Ascend310P: 1
                limits:
                  huawei.com/Ascend310P: 1
      ...
    • 使用静态vNPU调度特性,参考本配置。以infer-deploy.yaml为例,在Atlas 推理系列产品节点(非Atlas 200I SoC A1 核心板节点)创建一个使用vNPU的推理任务,示例如下。修改完成后直接执行步骤4
      apiVersion: apps/v1
      kind: Deployment
      ...
      spec:
        template:
          metadata: 
            labels:
               app: infers
      ...
          spec:
            schedulerName: volcano 
            nodeSelector:
              host-arch: huawei-arm 
      ...
            containers:
            - image: ubuntu-infer:v1
      ...
      # 静态vNPU调度暂不支持ASCEND_VISIBLE_DEVICES相关字段,需要删除以下加粗字段
              env:
              - name: ASCEND_VISIBLE_DEVICES
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.annotations['huawei.com/Ascend310P']    # 删除到此行
              resources:
                requests:
                  huawei.com/Ascend310P-2c: 1
                limits:
                  huawei.com/Ascend310P-2c: 1
      ...
  4. 修改所选yaml中的容器启动命令,示例如下加粗部分,如果没有则添加“command”字段。
    ...
          containers:
          - image: ubuntu-infer:v1
    ...
     command: ["/bin/bash", "-c", "test_model.sh"]
            resources:
              requests:
    ...