启用动态 MIG 功能
HAMi 现在支持使用 mig-parted 动态调整 MIG 设备,包括:
-
动态 MIG 实例管理 :用户无需直接在 GPU 节点上操作或使用
nvidia-smi -i 0 -mig 1这样的命令来管理 MIG。 hami-device-plugin 将自动处理这些任务。 -
动态 MIG 调整 :HAMi 管理的每个 MIG 设备都会根据提交的任务需求动态调整其 MIG 模板。
-
设备 MIG 监控 :HAMi 生成的每个 MIG 实例将在调度器监视器中显示,包括任务信息。用户可以清晰地查看 MIG 节点的概况。
-
兼容 HAMi-Core 节点 :HAMi 可以管理
HAMi-core 节点和mig 节点的统一 GPU 池。 如果没有通过nvidia.com/vgpu-mode注释手动指定,任务可以被调度到任一节点。 -
与 HAMi-Core 统一 API :无需额外工作,任务即可兼容动态 MIG 功能。
前提条件
- NVIDIA Blackwell、Hopper™ 及 Ampere GPU
- HAMi > v2.5.0
- nvidia-container-toolkit
启用动态 MIG 支持
-
使用 Helm 安装 Chart, 参阅在 Kubernetes 中启用 vGPU 支持
-
在 device-plugin configMap 中将
mode配置为mig以支持 MIG 节点kubectl describe cm hami-device-plugin -n kube-system{
"nodeconfig": [
{
"name": "MIG-NODE-A",
"operatingmode": "mig",
"filterdevices": {
"uuid": [],
"index": []
}
}
]
} -
重启以下 Pod 以使更改生效:
- hami-scheduler
- 'MIG-NODE-A' 上的 hami-device-plugin
自定义 MIG 配置(可选)
HAMi 目前有一个内置的 MIG 配置。
你可以按照以下步骤自定义 MIG 配置:
更改 charts/hami/templates/scheduler 中 'device-configmap.yaml'
nvidia:
resourceCountName: { { .Values.resourceName } }
resourceMemoryName: { { .Values.resourceMem } }
resourceMemoryPercentageName: { { .Values.resourceMemPercentage } }
resourceCoreName: { { .Values.resourceCores } }
resourcePriorityName: { { .Values.resourcePriority } }
overwriteEnv: false
defaultMemory: 0
defaultCores: 0
defaultGPUNum: 1
deviceSplitCount: { { .Values.devicePlugin.deviceSplitCount } }
deviceMemoryScaling: { { .Values.devicePlugin.deviceMemoryScaling } }
deviceCoreScaling: { { .Values.devicePlugin.deviceCoreScaling } }
knownMigGeometries:
- models: ["A30"]
allowedGeometries:
- name: 1g.6gb
memory: 6144
count: 4
- name: 2g.12gb
memory: 12288
count: 2
- name: 4g.24gb
memory: 24576
count: 1
- models:
["A100-SXM4-40GB", "A100-40GB-PCIe", "A100-PCIE-40GB", "A100-SXM4-40GB"]
allowedGeometries:
- name: 1g.5gb
memory: 5120
count: 7
- name: 2g.10gb
memory: 10240
count: 3
- name: 1g.5gb
memory: 5120
count: 1
- name: 3g.20gb
memory: 20480
count: 2
- name: 7g.40gb
memory: 40960
count: 1
- models: ["A100-SXM4-80GB", "A100-80GB-PCIe", "A100-PCIE-80GB"]
allowedGeometries:
- name: 1g.10gb
memory: 10240
count: 7
- name: 2g.20gb
memory: 20480
count: 3
- name: 1g.10gb
memory: 10240
count: 1
- name: 3g.40gb
memory: 40960
count: 2
- name: 7g.79gb
memory: 80896
count: 1
Helm 安装和更新将基于此文件中的配置,覆盖 Helm 的内置配置。
请注意 HAMi 将按照此 configMap 的顺序找到并使用适合任务的第一个 MIG 模板。
运行 MIG 任务
MIG 实例现在可以通过容器请求,方式与使用 hami-core 相同,只需指定 nvidia.com/gpu 和 nvidia.com/gpumem 资源类型。
apiVersion: v1
kind: Pod
metadata:
name: gpu-pod
annotations:
nvidia.com/vgpu-mode: "mig" # (可选),如果未设置,此 Pod 可以被分配到 MIG 实例或 hami-core 实例
spec:
containers:
- name: ubuntu-container
image: ubuntu:18.04
command: ["bash", "-c", "sleep 86400"]
resources:
limits:
nvidia.com/gpu: 2
nvidia.com/gpumem: 8000
在上面的示例中,任务分配了两个 MIG 实例,每个实例至少具有 8G 设备显存。