GPU 虚拟化方案对比 — 四种形态 · 隔离级别 · 灵活性
MIG (Multi-Instance GPU) — 硬件级物理分区
完整 GPU
A100/H100 (80GB)
132 SM
→
3g.40gb
42 SM
40 GB
独享 L2
2g.20gb
28 SM
20 GB
独享 L2
1g.5gb
14 SM
隔离级别:硬件级 (SM + 显存 + L2 Cache + 内存带宽)
切分粒度:固定 profile (1g.5gb ~ 7g.80gb),不可动态调整
支持 GPU:仅 A100/A30/H100/H200,消费级不支持
适用:医疗影像 AI、金融风控 — 需要硬件级安全隔离
Time-Slicing — 内核级时间片轮转
时间轴:
User A
User B
User A
User C
GPU 资源 (共享,时间复用):
?
完整 GPU,轮流独占
隔离级别:软件级 (显存按需分配,算力轮流独占)
支持 GPU:全系列 (Tesla/Quadro/消费级)
适用:教学实验、开发测试 — 对性能波动容忍度高
HAMi-core — 用户态 LD_PRELOAD 拦截
每个容器:
Container A
cudaMalloc(1GB)
→
libvgpu.so
配额检查:1GB ≤ 2GB?
→
cuMemAlloc 放行
→ VRAM 分配成功
Container B
cudaMalloc(2GB)
→
libvgpu.so
配额检查:2GB > 2GB?
→ ✗
返回错误
显存不足
隔离级别:用户态软件拦截 (CUDA API hook)
显存硬隔离 + 令牌桶算力限制 (cuLaunchKernel)
适用:互联网推理集群 — 最灵活,全 GPU 兼容
MPS (Multi-Process Service) — 进程级共享
GPU 内共享单一 CUDA Context:
MPS Server
(单一 Context)
Client 1
Client 2
...
所有 Client 共享同一 Context → 无显存隔离
隔离级别:进程级共享,无硬件/显存隔离
风险:一个进程 OOM 或崩溃 → 影响所有 Client
适用:同用户多进程 MPI 训练 — 信任域内高效共享
隔离级别 × 灵活性
高隔离 ←─────────────────────────────→ 低隔离
MIG
硬件分区·固定规格
Time-Slicing
内核调度·全 GPU 支持
HAMi-core
用户态拦截·最灵活
MPS
进程共享·低隔离