动态虚拟化
使用动态虚拟化前,需要提前了解表1中的相关使用说明。
使用说明
场景 |
说明 |
---|---|
通用说明 |
分配的芯片信息会在pod的annotation中体现出来,关于pod annotation的详细说明请参见Pod annotation中的huawei.com/npu-core、huawei.com/AscendReal参数。 |
同一时刻,只能下发相同虚拟化模板的任务。 |
|
动态分配vNPU时,经MindCluster调度,将优先占满剩余算力最少的物理NPU。 |
|
目前任务的每个pod请求的NPU数量为1个。 |
|
特性支持的场景 |
支持多副本,但多副本中的每个pod都必须使用vNPU。 |
支持K8s的机制,如亲和性等。 |
|
特性不支持的场景 |
不支持不同芯片在一个任务内混用。 |
任务运行过程中,不支持卸载Volcano。 |
|
K8s场景会自动创建与销毁vNPU,不能与Docker场景的操作混用。 |
|
进行动态虚拟化的节点不能对芯片的CPU进行过设置。详情请参考《Atlas 中心推理卡 25.0.RC1 npu-smi 命令参考》中的“信息查询>查询所有芯片的AI CPU、control CPU和data CPU数量”章节。 |
|
Atlas 推理系列产品(8个AI Core)使用说明 |
任务请求的AI Core数量,为vNPU时,按实际填写1、2、4;整张物理NPU时,需要为8以及8的倍数。 |
默认需要容器以root用户启动,若需要以普通用户运行推理任务,需要参考使用动态虚拟化时,以普通用户运行推理业务容器失败章节进行操作。 |
|
vNPU动态创建和销毁仅在Atlas 推理系列产品上有效,并且需要配套Volcano使用。 |
NPU类型 |
虚拟化实例模板 |
vNPU类型 |
具体虚拟设备名称(以vNPU ID100、物理卡ID0为例) |
---|---|---|---|
Atlas 推理系列产品(8个AI Core) |
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 |
使用前提
- 需要先获取“Ascend-docker-runtime_{version}_linux-{arch}.run”,安装容器引擎插件。
- 参见安装部署章节,完成各组件的安装。
虚拟化实例涉及到需要修改相关参数的集群调度组件为Volcano和Ascend Device Plugin,请按如下要求修改并使用对应的yaml安装部署。
- Ascend Device Plugin参数修改及启动说明。
虚拟化实例启动参数说明如下:
表3 Ascend Device Plugin启动参数 参数
类型
默认值
说明
-volcanoType
bool
false
是否使用Volcano进行调度,如使用动态虚拟化,需要设置为true。
-presetVirtualDevice
bool
true
静态虚拟化功能开关,目前支持Atlas 训练系列产品、和Atlas 推理系列产品,且值只能为true。
如使用动态虚拟化,需要设置为false。目前支持Atlas 推理系列产品的动态虚拟化,需要同步开启Volcano使用。
yaml启动说明如下:
K8s集群中存在使用Atlas 推理系列产品节点,需要在device-plugin-310P-volcano-v7.0.RC1中将“presetVirtualDevice”字段修改为“false”(协同Volcano使用,支持NPU虚拟化,yaml默认关闭动态虚拟化)。... args: [ "device-plugin -useAscendDocker=true -volcanoType=true -presetVirtualDevice=false -logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log -logLevel=0" ] ...
- Volcano参数修改及启动说明。
在Volcano部署文件“volcano-v{version}.yaml”中,需要配置“presetVirtualDevice”的值为“false”。
... data: volcano-scheduler.conf: | actions: "enqueue, allocate, backfill" tiers: - plugins: - name: priority - name: gang - name: conformance - name: volcano-npu-v7.0.RC1_linux-aarch64 - plugins: - name: drf - name: predicates - name: proportion - name: nodeorder - name: binpack configurations: ... - name: init-params arguments: {"grace-over-time":"900","presetVirtualDevice":"false"} # 开启动态虚拟化,presetVirtualDevice的值需要设置为false ...
- Ascend Device Plugin参数修改及启动说明。
使用方法
创建推理任务时,需要在创建yaml文件时,修改如下配置。以Atlas 推理系列产品使用为例。
apiVersion: apps/v1 kind: Deployment metadata: name: deploy-with-volcano labels: app: tf namespace: vnpu spec: replicas: 1 selector: matchLabels: app: tf template: metadata: labels: app: tf ring-controller.atlas: ascend-310P # 参见"虚拟化实例任务yaml中label说明"。 fault-scheduling: "grace" # 重调度所使用的label vnpu-dvpp: "yes" # 参见"虚拟化实例任务yaml中label说明"。 vnpu-level: "low" # 参见"虚拟化实例任务yaml中label说明"。 spec: schedulerName: volcano # 需要使用MindCluster的调度器Volcano nodeSelector: host-arch: huawei-arm containers: - image: ubuntu:18.04 # 示例镜像 imagePullPolicy: IfNotPresent name: tf command: - "/bin/bash" - "-c" args: [ "客户自己的运行脚本" ] resources: requests: huawei.com/npu-core: 1 # 使用静态虚拟化的vir01模板动态虚拟化NPU limits: huawei.com/npu-core: 1 # 数值与requests一致。 ....
key |
value |
说明 |
---|---|---|
vnpu-level |
low |
低配,默认值,选择最低配置的“虚拟化实例模板”。 |
high |
性能优先。 在集群资源充足的情况下,将选择尽量高配的虚拟化实例模板;在整个集群资源已使用过多的情况下,如大部分物理NPU都已使用,每个物理NPU只剩下小部分AI Core,不足以满足高配虚拟化实例模板时,将使用相同AI Core数量下较低配置的其他模板。具体选择请参考表5。 |
|
vnpu-dvpp |
yes |
该pod使用DVPP。 |
no |
该pod不使用DVPP。 |
|
null |
默认值。不关注是否使用DVPP。 |
|
ring-controller.atlas |
ascend-310P |
任务使用Atlas 推理系列产品的标识。 |

产品型号 |
AI Core请求数量 |
vnpu-dvpp |
vnpu-level |
是否降级 |
选择模板 |
---|---|---|---|---|---|
Atlas 推理系列产品(8个AI Core) |
1 |
null |
任意值 |
- |
vir01 |
2 |
null |
low/其他值 |
- |
vir02_1c |
|
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的倍数 |
任意值 |
任意值 |
- |
- |
|
注: 如果是Atlas 推理系列产品(8个AI Core),必须申请AI Core数量为8或8的倍数。 |

上表中对于芯片虚拟化(非整卡),vnpu-dvpp的值只能为表中对应的值,其他值会导致任务不能下发。