Skip to content

GPU 资源切分实战:MIG、vGPU 与多租户共享 ​

场景:多租户集群里最常见的浪费——一张 A100 90% 的时间利用率不到一半:训练作业间歇性吃满,推理作业只占 10% 显存。GPU 资源切分解决"一张卡怎么分给多个人/多个作业",是 Slurm 异构调度 的下一层:那篇讲"整卡怎么分给作业",本篇讲"一张卡怎么切"。

1. 三种切分路线 ​

路线原理隔离强度适用
MIG(硬件切分)A100/H100 把 GPU 物理切为多个实例,算力+显存硬隔离最强(近乎独立 GPU)训练/推理混布、安全敏感多租户
vGPU(虚拟化切分)NVIDIA vGPU Manager 把物理 GPU 虚拟化为多张 vGPU中(显存隔离,算力共享或限流)虚拟桌面/轻负载多租户
软切分(显存/时间片)容器化 + CUDA 限制(如显存上限、MPS 时间片)弱(共享算力,易互相干扰)测试环境、低成本共享

一句话:要"真隔离"选 MIG;要"灵活轻量"选软切分;vGPU 介于两者且依赖虚拟化平台(vSphere/OpenStack)。

2. MIG 详解(重点) ​

2.1 什么是 MIG ​

MIG(Multi-Instance GPU)在 A100/H100(Ampere+ 架构)上把 GPU 切成多个计算+显存物理隔离的实例,每个实例近似独立 GPU:

A100-80G 常见切法示例
┌──────────────────────────────┐
│  MIG 2g.20gb  MIG 2g.20gb   │  ← 2 个小实例
├──────────────────────────────┤
│  MIG 3g.40gb                 │  ← 1 个中实例
├──────────────────────────────┤
│  MIG 7g.80gb                 │  ← 整卡单实例
└──────────────────────────────┘

2.2 关键特性与约束 ​

  • 算力+显存双隔离:一个实例 OOM/崩溃不影响其他实例——这是软切分做不到的;
  • 实例组合有约束:单卡同时活跃的实例组合由 GPU 规格决定(如 1g/2g/3g/4g/7g 档位),不能任意搭配;
  • NCCL 通信限制:MIG 实例间通信走 PCIe/网络而非 NVLink 全带宽——数据并行跨实例性能差,MIG 实例间不适合做张量并行;
  • 驱动/容器要求:需 NVIDIA 容器运行时 + 驱动支持 MIG 的版本;不同实例可跑不同 CUDA 版本(容器化)。

2.3 典型用法 ​

场景切法建议
推理服务多副本1g/2g 小实例 × N,各自跑一个 vLLM 副本
小训练作业3g/4g 中实例,多租户各自训练
关键大作业7g 整卡实例,独占保障

3. Slurm 集成:MIG 与 gres ​

Slurm 23.02+ 原生支持 MIG 的 gres 声明。配置要点:

bash
# slurm.conf 中声明 MIG 能力
NodeName=gpu01 Gres=gpu:8,mig:2g.20gb:4,mig:3g.40gb:2
# 作业按 MIG 实例申请
#SBATCH --gres=mig:2g.20gb:1

工程要点:

  • 普通作业申请 gpus 会占用整卡 gres,与 MIG 作业互斥——用独立分区/独立 gres 词区分整卡与切分作业;
  • MIG 实例的"健康检查"比整卡复杂(实例级别故障检测),调度器与监控都要按实例维度做;
  • 混布时按 Slurm 异构调度 的"按节点分型"原则:整卡节点、MIG 节点分开规划,避免两类作业在节点上互踩。

4. 踩坑与调优(实战经验) ​

  1. MIG 不是万能药:大模型训练(70B+ 多卡并行)几乎必须整卡 + NVLink;硬切反而降低通信带宽。切分服务的是"小作业+推理+多租户",不是"大训练"。

  2. 显存隔离 ≠ 性能隔离(软切分路线):时间片/软显存限制下,一个忙作业能把同卡其他租户拖慢数倍——软切分只适合低敏场景,生产多租户优先 MIG。

  3. 故障域是隐性成本:MIG 依赖整卡硬件,整卡故障 = 卡上所有实例一起挂;"实例间隔离"是运行时隔离,不是硬件冗余。关键服务仍需跨物理卡部署副本。

  4. MIG 与 NCCL 的坑:跨实例 NCCL 走低速路径,混合并行(实例内并行 + 跨实例通信)性能断崖。设计并行方案时先确认通信路径,别指望 MIG 实例间有 NVLink 全速。

  5. 驱动升级影响实例拓扑:MIG 的实例档位、组合与驱动强绑定,升级驱动要重验实例配置并滚动验证作业——升级窗口当停机维护管理。

5. 效果量化与复盘 ​

指标参考口径
利用率提升单卡从 ~40% 提升到 ~70~85%(切分 + 背压调度)
多租户数一张 A100-80G 可同时服务 2~7 个隔离租户(按实例档位)
隔离保证算力/显存硬隔离,实例崩溃不影响同卡其他实例
代价NVLink 跨实例不可用、配置与运维复杂度上升

口径说明:以上为工程经验量级,实际收益以自家作业画像(作业大小分布、峰值特征)为准——先统计作业大小分布,再决定要不要切。

复盘结论:GPU 切分是"用运维复杂度换利用率"。作业画像以小作业/推理为主 → MIG 收益明显;以大训练为主 → 整卡 + 调度背压更合适。没有切分方案,只有适不适合的作业画像。

工程启示 ​

  • GPU 切分是 Slurm 异构调度 的纵深:那篇解决"卡怎么分配",本篇解决"卡怎么切细"——合起来才是完整的异构资源管理;
  • 与 13 章 · 私有化 LLM 服务 强相关:推理多副本 + MIG 小实例是私有化服务降低成本的标准组合;
  • 资源切分之外,异构集群的"体检"(利用率、排队、故障)是运维基本功——下一步可规划《异构集群监控与作业效率分析》。

AI-HPC 智算超算专家 · Contact: openaihpc@gmail.com