精准分割 - 深入解析 Kubernetes 中的 NVIDIA Multi-Instance GPU (MIG)

精准分割 - 深入解析 Kubernetes 中的 NVIDIA Multi-Instance GPU (MIG)

我们知道 Kubernetes 可以管理和分配 GPU 资源给 Pod。但标准的做法通常是将一整块物理 GPU 分配给一个 Pod 独占。对于 NVIDIA A100、H100 这样的“性能怪兽”来说,很多时候(尤其是推理任务或开发测试)一个 Pod 根本用不满整块卡的算力,这就造成了“大马拉小车”的资源浪费和成本空耗。

有没有办法像切蛋糕一样,把一块大 GPU 精准地分割成几小块,并且每一小块都有自己独立的资源,互不干扰呢?NVIDIA 给出的答案就是 Multi-Instance GPU (MIG)

MIG 核心概念

MIG 是 NVIDIA 在 Ampere 架构及更新的数据中心 GPU(如 A100, H100)上引入的一项硬件级分区技术。它不是简单的软件模拟,而是实实在在地在硬件层面动了“手术”:

  1. 硬件分区:MIG 可以将一块物理 GPU 安全地分割成最多 7 个独立的 GPU 实例 (GPU Instance, GI)
  2. 资源隔离:每个 GI 都拥有自己专属且隔离的计算引擎 (Streaming Multiprocessors - SMs 或 GPU Processing Clusters - GPCs)、显存、显存控制器、二级缓存以及显存带宽。
  3. 性能可预测:由于是硬件隔离,一个 GI 上的高负载工作不会影响同一物理 GPU 上其他 GI 的性能。这意味着每个 GI 都能获得稳定、可预测的性能和延迟。显存也是完全隔离的,不用担心被“邻居”挤爆。
  4. 计算实例 (Compute Instance, CI):在 GI 之上,还有一个 CI 的概念。CI 决定了 GI 内的计算资源(如 SMs)如何被访问和管理。对于在 Kubernetes 中使用,我们通常为每个创建的 GI 自动创建一个对应的 CI,让 K8s Pod 可以直接使用这个 GI 的全部能力。
  • 类比:再次祭出那个比喻!把支持 MIG 的物理 GPU 看作一台超强物理服务器。启用 MIG 就像在这台服务器上安装了硬件级虚拟化软件 (Hypervisor)。然后,你可以创建出多个独立的“GPU 虚拟机”(即 GI + CI)。每个“GPU 虚拟机”都有自己保证的 CPU (计算单元)、内存 (显存) 和网络带宽 (显存带宽),彼此之间井水不犯河水。

MIG 实例配置文件与命名

MIG 分割不是随意的,NVIDIA 定义了一系列预设的“实例配置文件”(Instance Profiles)。你需要根据这些配置文件来创建 GI。

  • 命名规则:配置文件名通常是 mig-<计算资源片数>g.<显存大小>gb。这里的 g 代表计算资源的切片单位(比如 GPC 或 SM 的一部分),gb 是分配到的显存容量。
    • NVIDIA A100 40GB 为例,常见的配置文件有:
      • mig-1g.5gb
      • mig-2g.10gb
      • mig-3g.20gb
      • mig-7g.40gb (接近整卡)
    • NVIDIA A100 80GB 则有更多组合,如 mig-1g.10gb, mig-2g.20gb, …, mig-7g.80gb
    • H100 等新卡有其自己的一套配置文件。
  • 组合规则:一块物理 GPU 可以同时创建多个 GI,甚至可以是不同配置文件的组合,但必须遵循硬件布局约束。例如,某些配置文件只能放在特定的 GPC 组里。创建实例时 nvidia-smi 会自动检查规则。
  • 查询可用配置:后面我们会看到如何用 nvidia-smi 命令查询当前 GPU 支持哪些配置文件。建议查阅 NVIDIA 官方文档获取最权威的兼容列表。

节点端配置实战 (Node-Level Configuration Hands-On)

这是使用 MIG 的关键和前提,需要在 GPU 节点上拥有 root 权限,并使用 nvidia-smi 命令行工具进行操作。

重要提示:更改 MIG 模式或创建/销毁 MIG 实例前,务必停止所有正在使用该物理 GPU 的应用程序或进程(包括 K8s Pod),否则命令可能会失败或导致不稳定。

1. 查询 GPU 信息

首先,确认你的 GPU 型号以及当前的 MIG 状态。

  • 命令:列出系统中的 GPU 设备

    nvidia-smi -L
    
  • 预期输出示例 (假设有一块 A100):

    GPU 0: NVIDIA A100-SXM4-40GB (UUID: GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
    
    • 解释
      • GPU 0: 系统识别到的 GPU 索引号 (Index)。
      • NVIDIA A100-SXM4-40GB: GPU 的具体型号。确认是支持 MIG 的型号(如 A100, H100)。
      • UUID: 该 GPU 的唯一标识符。
  • 命令:查询 GPU 的详细信息,特别是 MIG 相关状态

    nvidia-smi -i 0 -q -d MIG
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_42587823

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值