昇腾社区首页
中文
注册

静态虚拟化

使用限制

  • 当前vNPU仅支持单个vNPU单容器任务,不支持创建多副本任务。
  • 任务运行过程中,不支持卸载Volcano。
  • 目前任务的每个pod请求的NPU设备数量规则如下:

    使用切分后的vNPU,则仅支持1个。

  • 静态虚拟化场景,如果创建或者销毁vNPU,需要重启Ascend Device Plugin。
表1 虚拟化实例模板与虚拟设备类型关系表

NPU类型

虚拟化实例模板

vNPU类型

具体虚拟设备名称(以vNPU ID100、物理卡ID0为例)

Atlas 训练系列产品

vir02

Ascend910-2c

Ascend910-2c-100-0

vir04

Ascend910-4c

Ascend910-4c-100-0

vir08

Ascend910-8c

Ascend910-8c-100-0

vir16

Ascend910-16c

Ascend910-16c-100-0

Atlas 推理系列产品

vir01

Ascend310P-1c

Ascend310P-1c-100-0

vir02

Ascend310P-2c

Ascend310P-2c-100-0

vir04

Ascend310P-4c

Ascend310P-4c-100-0

vir02_1c

Ascend310P-2c.1cpu

Ascend310P-2c.1cpu-100-0

vir04_3c

Ascend310P-4c.3cpu

Ascend310P-4c.3cpu-100-0

vir04_3c_ndvpp

Ascend310P-4c.3cpu.ndvpp

Ascend310P-4c.3cpu.ndvpp-100-0

vir04_4c_dvpp

Ascend310P-4c.4cpu.dvpp

Ascend310P-4c.4cpu.dvpp-100-0

使用前提

  1. 需要先获取“Ascend-docker-runtime_{version}_linux-{arch}.run”,安装容器引擎插件。
  2. 参见MindX DL 集群调度用户指南中“安装集群调度组件”章节,完成各组件的安装。

    虚拟化实例涉及到需要修改相关参数的集群调度组件为Volcano和Ascend Device Plugin,请按如下要求修改并使用对应的yaml安装部署。

    • 亲和性场景:需要安装Volcano。
    • 非亲和性场景:不需要安装Volcano,只会上报设备数量给节点的K8s。
    1. Ascend Device Plugin参数修改及启动说明:

      虚拟化实例启动参数说明如下:

      表2 Ascend Device Plugin启动参数

      参数

      类型

      默认值

      说明

      -volcanoType

      bool

      false

      是否使用Volcano进行调度。

      -presetVirtualDevice

      bool

      true

      静态虚拟化功能开关,目前支持Ascend 910和Atlas 推理系列产品,且值只能为true。

      yaml启动说明如下:
      • K8s集群中存在使用Atlas 推理系列产品节点(Ascend Device Plugin独立工作,不协同Volcano使用)。
        kubectl apply -f device-plugin-310P-*.yaml
      • K8s集群中存在使用Atlas 训练系列产品节点(Ascend Device Plugin独立工作,不协同Volcano和HCCL-Controller使用)。
        kubectl apply -f device-plugin-910-*.yaml
      • K8s集群中存在使用Atlas 推理系列产品节点(协同Volcano使用,支持NPU虚拟化)。
        kubectl apply -f device-plugin-310P-volcano-*.yaml
      • K8s集群中存在使用Atlas 训练系列产品节点(协同Volcano和HCCL-Controller使用,支持NPU虚拟化)。
        kubectl apply -f device-plugin-volcano-*.yaml

      如果K8s集群使用了多种类型的昇腾产品,请分别执行对应命令。

    2. Volcano参数修改及启动说明:

      在Volcano部署文件“volcano-v*.yaml”中,需要配置“presetVirtualDevice”。

      ...
      data:
        volcano-scheduler.conf: |-
          actions: "enqueue, allocate, backfill"
          tiers:
          - plugins:
            - name: volcano-npu-v3.0.0  # 其中v3.0.0为MindX DL的版本号,根据不同版本,该处编码不同。
          - plugins:
            - name: priority
            - name: gang
            - name: conformance
          - plugins:
            - name: drf
            - name: predicates
            - name: proportion
            - name: nodeorder
            - name: binpack
          configurations:
            - name: selector
              arguments: {"host-arch":"huawei-arm|huawei-x86",
              "accelerator":"huawei-Ascend910|nvidia-tesla-v100|nvidia-tesla-p40",
              "accelerator-type":"card|module"}
            - name: init-params
              arguments: {"grace-over-time":"900","presetVirtualDevice":"true"}
      ...

使用方法

  • 创建训练任务时,需要在创建yaml文件时,修改如下配置。以Ascend 910使用为例。
    resources中设定的requests和limits资源类型,应修改为huawei.com/Ascend910-Y,其中Y值和vNPU类型相关,具体取值参考表 虚拟化实例模板与虚拟设备类型关系表中的虚拟类型。
    ...
              resources:  
                requests:
                  huawei.com/Ascend910-Y: 1          # 请求的vNPU数量,最大值为1。
                limits:
                  huawei.com/Ascend910-Y: 1          # 数值与请求数量一致。
    ...
  • 创建推理任务时,需要在创建yaml文件时,修改如下配置。以Atlas 推理系列产品使用为例。
    resources中设定的requests和limits资源类型,应修改为huawei.com/Ascend310P-Y,其中Y值和vNPU类型相关,具体取值参考表 虚拟化实例模板与虚拟设备类型关系表中的虚拟类型。
    ...
              resources:  
                requests:
                  huawei.com/Ascend310P-Y: 1          # 请求的vNPU数量,最大值为1。
                limits:
                  huawei.com/Ascend310P-Y: 1          # 数值与请求数量一致。
    ...