NVIDIA vGPU 切分虚拟化

需要把单张 NVIDIA GPU 切分给多个 pod 共享使用(显存/算力切分)时,部署 HAMi vGPU 方案的步骤

部署安装 / GPU与异构算力
vGPUvgpuGPU虚拟化GPU切分HAMi第四范式nvidia.com/vgpuVGPU_RESOURCEdevicememoryscalinghami-schedulerdevice-pluginGPU共享GPU分片prometheus监控

NVIDIA vGPU 切分虚拟化(HAMi)

CubeStudio 采用第四范式开源的 HAMi 作为 vGPU 虚拟化方案,对单张 NVIDIA GPU 做切分共享。平台侧配置见 myapp/config.pyVGPU_RESOURCE{"vgpu":"nvidia.com/vgpu"},约 myapp/config.py:1270)与 VGPU_DRIVE_TYPE = "vgpu"myapp/config.py:1276,注释标注「第四范式解决方案」)。

部署步骤

下载 HAMi chart 包:

wget https://githubfast.com/Project-HAMi/HAMi/releases/download/v2.8.0/hami-2.8.0.tgz

用 helm template 渲染出 vgpu.yaml

helm template vgpu hami \
  --set resourceName=nvidia.com/vgpu \
  --set scheduler.kubeScheduler.imageTag=v1.28.15 \
  --set version=v2.8.0 \
  --set scheduler.overwriteEnv="false" \
  -n kube-system > vgpu.yaml

说明:resourceName=nvidia.com/vgpu 与平台 VGPU_RESOURCE 中的资源名保持一致。scheduler.kubeScheduler.imageTag 需与集群 k8s 版本匹配。仓库内已提供渲染好的样例:install/kubernetes/gpu/vgpu/vgpu.yaml(HAMi 2.8.0),以及按 k8s 版本区分的 vgpu-k8s1.21.yamlvgpu-k8s1.25.yaml

修改 vgpu.yaml

对渲染出的 vgpu.yaml 做以下调整:

  1. 关闭显存超分,只做切分:将 "devicememoryscaling": 1(即不做显存虚拟化超分,仅做分隔)。该字段在仓库样例中位于 install/kubernetes/gpu/vgpu/vgpu.yaml:50
  2. 节点选择器:将 nodeSelector 改为 vgpu: "true"(仅在打了该标签的节点上启用 vGPU)。
  3. 命名空间:添加 namespace: kube-system
  4. 服务暴露类型:服务暴露类型改为 type: ClusterIP,并去掉 nodePort
  5. type: NodePort 类型的服务改为 ClusterIP,同时注释掉 externalTrafficPolicy: Local

接入 Prometheus 监控

vgpu-hami-scheduler 服务添加注释,将「调度量」等信息同步到 Prometheus:

  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: '9395'
    prometheus.io/path: /metrics

vgpu-hami-device-plugin-monitor 服务添加注释,将「pod 实际使用情况」信息同步到 Prometheus:

  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: '9394'
    prometheus.io/path: /metrics

说明:上述服务名与端口与仓库样例一致——vgpu-hami-scheduler 暴露 9395、vgpu-hami-device-plugin-monitor 暴露 9394(见 install/kubernetes/gpu/vgpu/vgpu.yaml 中对应的 Service 定义)。

Bug 修复:补充 RBAC 权限

vgpu-hami-scheduler 角色添加 volumeattachments 权限:

  # 添加 volumeattachments 权限
  - apiGroups: ["storage.k8s.io"]
    resources: ["volumeattachments"]
    verbs: ["get", "list", "watch"]

全部配置参考

所有配置项参考 HAMi 官方中文文档:https://github.com/Project-HAMi/HAMi/blob/v2.7.1/docs/config_cn.md

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