创建任务yaml

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

具体挂载内容请参考Ascend Docker Runtime默认挂载内容章节。可参考具体的yaml示例,挂载驱动目录和文件。

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

操作步骤

  1. 请从集群调度组件MindXDL-deploy仓库中“5.0.RC1”分支中下载yaml文件。

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

    任务类型

    硬件型号

    yaml文件

    获取yaml

    K8s或其他调度器场景下的Job任务

    Atlas 200I SoC A1 核心板

    sinfer-310p-1usoc.yaml

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

    其他类型推理节点

    inference/infer.yaml

    Volcano调度的Deployment任务

    Atlas 200I SoC A1 核心板

    infer-deploy-310p-1usoc.yaml

    其他类型推理节点

    inference/infer-deploy.yaml

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

    表2 yaml文件参数说明

    参数

    取值

    说明

    image

    -

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

    replicas

    整数

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

    requests

    • Atlas 200/300/500 推理产品环境: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下,芯片的名字和数量需保持一致。

    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”文件进行目录挂载。
    • 其他类型节点不需要此参数。

    “infer-310p-1usoc.yaml”为例,参数配置示例如下。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: resnetinfer1-1-1usoc
    spec:
    ...
          nodeSelector:
            host-arch: huawei-arm
            servertype: soc
          containers:
          - image: ubuntu-infer:v1
    ...
            resources:
              requests:
                huawei.com/Ascend310P: 1
              limits:
                huawei.com/Ascend310P: 1
    ...

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

    • “infer.yaml”为例,Job类型的任务yaml示例如下:
      apiVersion: batch/v1
      kind: Job
      metadata:
        name: resnetinfer1-1
      spec:
        template:
          spec:
            affinity:
              nodeAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  nodeSelectorTerms:
                    - matchExpressions:
                        - key: servertype
                          operator: NotIn
                          values:
                            - soc
            nodeSelector:
              host-arch: huawei-arm 
      ...
    • “infer-deployment.yaml”为例,Deployment类型的任务yaml示例如下:
      apiVersion: apps/v1
      kind: Deployment
      ...
      spec:
        template:
          metadata: 
            labels:
               app: infers
      ...
          spec:
            affinity:
              nodeAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  nodeSelectorTerms:
                    - matchExpressions:
                        - key: servertype
                          operator: NotIn
                          values:
                            - soc
            schedulerName: volcano 
            nodeSelector:
              host-arch: huawei-arm 
      ...