Kubernetes 下开源的 GPU 虚拟化项目
💡
原文中文,约4600字,阅读约需11分钟。
📝
内容提要
NVIDIA 的 k8s-device-plugin 和 gpu-operator 用于管理 Kubernetes 中的 GPU 资源,支持 MIG、Time-Slicing 和 MPS 等多种分配方式。MIG 可将 GPU 划分为独立实例,Time-Slicing 允许多个虚拟设备共享物理 GPU。gpu-manager 和 HAMi 通过 vCUDA 技术实现 GPU 资源的细粒度划分与共享。
🎯
关键要点
- NVIDIA 的 k8s-device-plugin 和 gpu-operator 用于管理 Kubernetes 中的 GPU 资源。
- k8s-device-plugin 自动发现和注册 GPU 设备,支持多种 GPU 型号。
- gpu-operator 提供驱动管理、容器运行集成、设备发现等 GPU 全生命周期管理功能。
- MIG 技术允许将 GPU 划分为多个独立实例,每个实例的计算、显存、带宽相互独立。
- Time-Slicing 允许将物理 GPU 切分为多个虚拟设备,存在资源竞争问题。
- MPS 技术允许多个进程共享同一物理 GPU,提高 GPU 利用率,提供更好的资源隔离。
- gpu-manager 采用 vCUDA 技术实现 GPU 资源的细粒度划分与共享。
- HAMi 也采用 vCUDA 技术,支持 MIG、Time-Slicing,并能管理其他 AI 加速卡。
❓
延伸问答
NVIDIA 的 k8s-device-plugin 有什么功能?
k8s-device-plugin 用于自动发现和注册 Kubernetes 中的 GPU 设备,并支持多种 GPU 型号的管理和分配。
什么是 MIG 技术,它如何在 Kubernetes 中使用?
MIG(Multi-Instance GPU)技术允许将一张 GPU 划分为多个独立实例,每个实例的计算、显存和带宽相互独立。在 Kubernetes 中使用时,需要配置相关的插件和资源限制。
Time-Slicing 技术的主要特点是什么?
Time-Slicing 允许将物理 GPU 切分为多个虚拟设备,多个 Pod 可以在时间上共享同一物理 GPU,但存在资源竞争问题。
MPS 技术如何提高 GPU 的利用率?
MPS(Multi-Process Service)允许多个进程共享同一物理 GPU 的计算资源,从而提高 GPU 的利用率,并提供更好的资源隔离。
gpu-manager 和 HAMi 有什么区别?
gpu-manager 采用 vCUDA 技术进行 GPU 资源的细粒度划分,但不再维护;而 HAMi 也使用 vCUDA,持续更新并支持更多 AI 加速卡的管理。
如何在 Kubernetes 中配置 Time-Slicing?
在 Kubernetes 中配置 Time-Slicing 需要创建一个 ConfigMap,定义资源名称和虚拟设备的数量,然后在 Pod 中使用相应的资源限制。
➡️