当前位置: 首页 > news >正文

精准分割 - 深入解析 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 相关状态

相关文章:

  • JavaScript 笔记 --- part 4 --- Web API (part 2)
  • 自定义请求头导致跨域的解决办法
  • AI日报 - 2025年04月20日
  • 每天学一个 Linux 命令(26):less
  • 从入门到精通汇编语言 第五章(流程转移与子程序)
  • 源道-做股票应该从传统的技术图形转向行业规律思考
  • C++(23)—模板初阶
  • java面试篇(常见的集合底层原理)
  • AI大模型之模型幻觉
  • Redis——通信协议
  • 【大模型】单选数据集制作举例
  • Java技术栈 —— 网络带宽受限,图片预览加速
  • 5.4.1 Password控件的Password属性绑定问题
  • 06 GE Modifier
  • 【AI论文】对人工智能生成文本的稳健和细粒度检测
  • 性价比超高的 英伟达Tesla T4卡 如何解决散热问题?
  • Ubuntu 22.04 更换 Nvidia 显卡后启动无法进入桌面问题的解决
  • OpenAPI 3.0学习笔记
  • 【Redis】了解Redis
  • Java Web项目(一)
  • 中国戏剧奖梅花奖终评启动在即,17场演出公益票将发售
  • 市场监管部门完成全国保健食品生产企业体系检查首轮全覆盖
  • 上海农房翻建为何难?基层盼政策适度松动
  • 谁在贩卖个人信息?教培机构信息失守,电商平台“订单解密”
  • 智慧菜场团标试验:标准化的同时还能保留个性化吗?
  • 医院招聘误发内部信息反获好评,求职者就需要这样的“敞亮”