实验 5: 使用 nvml-mock 进行 Fake-GPU 调度
本实验使用 NVIDIA 的 nvml-mock 库在本地 kind 集群中模拟一个高端 GPU 节点,8 张虚拟 A100 GPU。你将直接基于 main 分支构建 HAMi,然后验证 GPU 调度功能:共享、显存/算力限制、百分比显存申请以及多 GPU 分配,全部无需物理硬件。
你将得到什么
完成本实验后,你将得到一个本地 Kubernetes 集群:
- nvml-mock 让节点上报 8 张虚拟 A100 GPU(HAMi 将每张物理 GPU 切成 10 个虚拟槽位后,节点显示
nvidia.com/gpu: 80) - HAMi device-plugin 和调度器使用当前
main分支镜像运行 - 验证的 Pod 包括:单 GPU、GPU 共享、显存/算力限制、百分比显存以及多 GPU 分配
备注
此环境中不存在真实的 CUDA 运行时。Pod 使用 busybox 并设置 CUDA_DISABLE_CONTROL=true,以阻止 HAMi 的控制库尝试真实设备访问。显存和算力限制的运行时强制执行仍需要物理 GPU。
安装全景图
整个安装过程共 10 步:
| 步骤 | 目的 | 解决什么问题 |
|---|---|---|
| 创建 kind 集群 | 引导本地 Kubernetes | 提供测试环境 |
| 构建并部署 nvml-mock | 模拟 8 张虚拟 A100 GPU | 无需硬件即可发现 GPU |
| 基于 main 构建 HAMi | 编译最新的调度器和 device-plugin | 确保 MIG 修复已包含在内 |
| 部署 HAMi | 安装控制面组件 | 启用 GPU 切分和调度 |
| 验证 GPU 资源 | 检查 nvidia.com/gpu: 80 | 确认虚拟 GPU 槽位已注册 |
| 基础 GPU 调度 | 单 GPU Pod 分配 | 验证调度器基本功能 |
| GPU 共享 | 在同一 GPU 上时间片共享 4 个 Pod |