GPU/NPU 多租户共享实操对比

政企多租户、教学实训、推理密集等需要「单张卡给多个任务共享」的场景,做技术方案选型时,横向对比 NVIDIA vGPU、海光 vDCU、昇腾 vNPU、MIG 四条切分路线的机制、平台配置与适用性

部署安装 / GPU与异构算力
GPU共享GPU切分GPU虚拟化多租户vGPUHAMi海光vDCUvdcudcumemdcucores昇腾vNPUvnpunpu-smiMIG显存切分算力切分

GPU/NPU 多租户共享实操对比

单张物理卡给多个任务/租户共享,是政企多租户、教学实训、推理密集场景的核心诉求。CubeStudio 在不同算力卡上支持的切分路线不同,本篇横向对比 NVIDIA vGPU(HAMi)海光 vDCU(两条路线)昇腾 vNPU(静态)MIG,讲清各自的切分机制、平台侧配置与适用场景。各方案的完整部署步骤见对应子篇,本篇只做机制对比与选型,不重复步骤。

四条切分路线一览

维度 NVIDIA vGPU(HAMi) 海光 vDCU · HAMi 动态 海光 vDCU · 驱动层静态 昇腾 vNPU(静态)
切分方式 显存 + 算力按百分比动态切分 显存(dcumem) + 算力(dcucores)动态切分 hy-smi virtual 手动静态切分(可按算力单元/显存不均匀分) npu-smi 模板静态切分(如 vir05_1c_16g
平台配置 key vgpu vdcu vdcu1 vnpu
K8s 资源名 nvidia.com/vgpu hygon.com/dcunum(+dcumem/dcucores hygon.com/dcu-share-30c-16g huawei.com/Ascend910-5c.1cpu.16g(按规格)
与整卡混用 独立 vGPU 池 独立(节点标签 dcu=on 支持,插件 RESOURCE_REGISTER_STRATEGY=mixed 与物理卡混用 独立
单 Pod 占用 可申请小数卡(如 0.5 1(vdcu),规格由 dcumem/dcucores 1(vdcu1) 或自定义简称 一个 Pod 只能占一张 vNPU
依赖组件 HAMi(第四范式,CUDA 层拦截) 海光版 HAMi device-plugin 海光 dcu-device-plugin(驱动层) Ascend device-plugin(presetVirtualDevice=true
详细步骤 NVIDIA vGPU 切分虚拟化 海光 DCU(5.2 节) 海光 DCU(5.1 节) 昇腾 vNPU 虚拟化

资源名与配置键均来自 install/docker/config.pyGPU_RESOURCE / VGPU_RESOURCE,详见各子篇的行号引用与国产算力选型与信创适配速查

各方案机制要点

NVIDIA vGPU(HAMi)—— 动态、按百分比切

  • 采用第四范式开源的 HAMi(CUDA 层拦截)。用户在 Notebook/Pipeline/推理服务里直接申请小数卡(如 0.5),平台按 VGPU_DRIVE_TYPE 把小数卡转成 K8s 资源请求:vgpu 类型 → nvidia.com/gpumem-percentage + nvidia.com/gpucores(显存与算力按百分比切分)。
  • 平台侧默认「只切分不超分」(devicememoryscaling=1);申请 0 卡的容器注入 GPU_NONE 做隔离,防止 GPU 镜像看到并占满整机的卡。
  • 另支持腾讯 vcuda(mgpu 类型)作为替代驱动方案。

海光 vDCU —— 两条路线可选

  • HAMi 动态切分vdcuhygon.com/dcunum):节点打 dcu=on 标签,部署海光版 HAMi 组件。关键dcunum 的数量值本身无意义,必须同步指定 hygon.com/dcumemhygon.com/dcucores 来确定规格;只写 dcunum:1 而不指定显存/算力,会占满整张物理卡。
  • 驱动层静态切分vdcu1hygon.com/dcu-share-30c-16g):用 hy-smi virtual 在驱动层手动切分(支持按 --vdevice-compute-units / --vdevice-memory-size 不均匀切分),配合 RESOURCE_REGISTER_STRATEGY=mixed 可与整卡在同一节点混用
  • 注意:设备插件 v2.3.0 同时支持标准模式和 MIG,但开启 MIG 后 vDCU 虚拟化不可用,且官方即将弃用 MIG。

昇腾 vNPU —— 模板静态切分

  • 主机用 npu-smi set -t create-vnpu 按模板(如 vir05_1c_16g,1/4 颗粒度)静态切出 vNPU,device-plugin 加 -presetVirtualDevice=true,平台 vnpu 资源名按实际切分规格填写。
  • 限制:一个 Pod 只能占用一张 vNPU。若用 MindX DL 动态虚拟化,则无需提前手动创建 vNPU,运行任务时自动按需创建。

NVIDIA MIG(对照)

  • MIG 是 NVIDIA 物理层虚拟化(A100/H100 等),K8s 层无感知,平台侧对应 mignvidia.com/mig-1g.5gb。与 HAMi 软件切分是两种不同层次的方案:MIG 硬隔离但规格固定,HAMi 更灵活可动态。

平台侧统一用法

无论哪种卡,任务里占用资源都用「数量(资源简称)」写法,括号内简称就是 GPU_RESOURCE 里的 key:

  • 整卡:1(gpu)1(dcu)1(npu910)
  • 共享/虚拟化:NVIDIA 小数卡 0.5;海光 1(vdcu)(HAMi)/ 1(vdcu1)(驱动层);昇腾按 vnpu 资源名占用

怎么选(按诉求对号入座)

  • 要动态、按百分比弹性切显存+算力(多租户潮汐明显、想提升利用率)→ NVIDIA 选 vGPU(HAMi);海光选 vDCU · HAMi 动态
  • 要让虚拟卡与整卡在同一节点混用(部分任务整卡训练、部分共享推理)→ 海光选 vDCU · 驱动层静态mixed 策略)。
  • 昇腾平台 → 用静态 vNPU(注意一 Pod 一卡),或上 MindX DL 动态虚拟化
  • 需要硬件级硬隔离、规格固定可接受(NVIDIA A100/H100)→ 用 MIG
  • 海光同时想用 MIG 与 vDCU → 不行,二者互斥且 MIG 即将弃用,优先 vDCU。

具体切分颗粒度、显存/算力规格与性能表现以各厂商官方资料与实测为准,本篇只对比机制与平台配置,不含性能数据。

常见问题

  • Q:国产 GPU 能像英伟达 vGPU 那样把一张卡切给多个人用吗? A:可以。海光 DCU 提供 HAMi 动态切分(vdcu,按 dcumem/dcucores 定规格)和驱动层静态切分(vdcu1,可与整卡混用);昇腾提供静态 vNPU(一 Pod 一卡)。
  • Q:海光 vDCU 用 HAMi 时只写数量为什么占满整卡? A:hygon.com/dcunum 的数量值无意义,必须同时指定 hygon.com/dcumemhygon.com/dcucores,否则一块 vDCU 会占用整张物理卡。
  • Q:昇腾一个 Pod 能占多张 vNPU 吗? A:不能,一个 Pod 只能占用一张 vNPU;需要更多算力请占整卡或用多 Pod。
  • Q:海光开了 MIG 还能用 vDCU 吗? A:不能,开启 MIG 后 vDCU 虚拟化不可用,且 MIG 即将弃用,建议直接用 vDCU。

各方案完整部署步骤见:NVIDIA vGPU · 海光 DCU · 昇腾 vNPU;国产算力整体选型见国产算力选型与信创适配速查

最后更新 2026-08-24完整文档以官方仓库为准:GitHub Wiki