目录
使用 A100 显卡的 MIG 技术在 Kubernetes 中实现 Jupyter 多实例 GPU 分配
使用 A100 显卡的 MIG 技术在 Kubernetes 中实现 Jupyter 多实例 GPU 分配
摘要:
在多用户共享 GPU 资源的 AI 开发平台中,NVIDIA A100 显卡凭借强大的计算力和对 MIG(Multi-Instance GPU)技术的支持,为 Kubernetes 集群提供了高效、安全的资源隔离方案。本文将详细讲解如何基于 A100-80G 显卡在 Kubernetes 中启用 MIG 模式,并结合 Jupyter Notebook 多实例部署,实现细粒度的 GPU 资源分配与管理。
正文:
一、背景与挑战
在 AI 开发场景中,一个显著难题是如何让多个用户高效地共享 GPU。传统的 nvidia.com/gpu: 1
模式导致每个容器独占整卡,资源浪费严重,尤其是在使用 NVIDIA A100 这样的大显存 GPU 时尤为明显。
为解决这一问题,NVIDIA 推出了 MIG 技术,将单卡划分为多个相互隔离的 GPU 子实例,从而支持多任务并行运行。结合 Kubernetes 的调度能力,我们可以实现多 Jupyter 实例独占各自的 GPU 子资源。
二、MIG 简介与划分策略
A100 80G 显卡支持将一张卡划分为多个不同规格的 MIG 实例。以下是一些典型的划分方案:
MIG 实例类型 | 显存 | 最大实例数 | K8s 资源名 |
---|---|---|---|
1g.10gb | 10GB | 7/卡 | nvidia.com/mig-1g.10gb |
2g.20gb | 20GB | 3/卡 | nvidia.com/mig-2g.20gb |
3g.40gb | 40GB | 2/卡 | nvidia.com/mig-3g.40gb |
针对多用户轻量使用场景,我们推荐每张卡划分成 7 个 1g.10gb
实例,2 张卡共 14 个 MIG 实例。
三、操作步骤
1. 启用 MIG 并划分资源
# 启用 MIG 模式
sudo nvidia-smi -i 0 --mig-enable
sudo nvidia-smi -i 1 --mig-enable
# 每张卡创建 7 个 1g.10gb 实例
sudo nvidia-smi mig -cgi 0,0,0,0,0,0,0 -i 0 -C
sudo nvidia-smi mig -cgi 0,0,0,0,0,0,0 -i 1 -C
2. 部署 NVIDIA Device Plugin
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/main/nvidia-device-plugin.yml
安装后,Node 节点上将自动注册 nvidia.com/mig-1g.10gb: 14
资源。
四、Jupyter Pod 配置示例
每个用户的 Jupyter 实例可以通过以下方式绑定一个 MIG 实例:
resources:
limits:
nvidia.com/mig-1g.10gb: 1
❗注意:MIG 实例为硬件隔离资源,每个 Pod 只能绑定一个 MIG 实例,不能配置为
: 2
或: 5
。
五、调度与扩展建议
-
为 GPU 节点打上标签,配合
nodeSelector
控制调度位置; -
使用 Helm 或 Argo 创建多个 Jupyter 实例;
-
对于大模型训练,建议禁用 MIG 模式,使用
nvidia.com/gpu: 1
方式整卡调度。
六、总结
借助 NVIDIA A100 显卡的 MIG 技术,我们可以轻松在 Kubernetes 中实现高性能 GPU 资源的多用户精细化分配。尤其在 Jupyter Notebook 场景中,一张显卡即可支持多个并行实例,大幅提高资源利用率,降低运维成本。该方案在 AI 教学平台、企业多租户建模环境中具有广泛应用前景。