NPU推理任务

典型场景章节中关于NPU推理任务分为下面两种情况:

使用Volcano作为调度器,NPU推理任务基础流程

创建Deployment类型的推理任务。
  • Deployment资源示例
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: infer
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: infers
      template:
        metadata:
          labels:
             app: infers
        spec:
          schedulerName: volcano
          nodeSelector:
            host-arch: huawei-arm
          containers:
          - image: infer:latest
            imagePullPolicy: IfNotPresent
            name: infer
            command: xxxx
            resources:
              requests:
                huawei.com/Ascend310: 1
              limits:
                huawei.com/Ascend310: 1
            volumeMounts:
              - name: ascend-driver
                mountPath: /usr/local/Ascend/driver
          volumes:
            - name: ascend-driver
              hostPath:
                path: /usr/local/Ascend/driver
    • replicas通常为1。
    • 调度器schedulerName必须为:Volcano
    • nodeSelector默认只支持Volcano启动时yaml中配置的键值对且必须使用“host-arch”标签,如需增加用户自己的selector,请参考Volcano调度配置
    • 需修改request和limit中NPU的资源名字和资源数量。可通过查看K8s中节点的详情确定本节点可以使用的NPU资源类型,如整卡、虚拟化实例后的NPU、Ascend310/Ascend310P等。
    • 目前只支持一个Pod中有一个容器使用NPU。
    • 挂载驱动相关目录。如果未安装Ascend docker runtime或者安装之后未生效时,需要用户自行挂载驱动相关目录(默认为“/usr/local/Ascend”)。
    • 用户需要增加模型代码等路径的挂载,以及增加用户需要的其他内容,如环境变量等。
    • 用户需要设置容器的启动命令,对应yaml的command字段。

不使用Volcano作为调度器,NPU推理任务基础流程

使用某种资源类型创建推理任务,如Job或者其他资源类型。Job资源的创建请自行参考K8s的官方示例。

参考Deployment资源示例中说明的第四点及其以后的内容。