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 进程共享·低隔离