一、GPU 共享的技术分层
理解 GPU 共享方案之前,有必要建立清晰的技术分层视图。GPU 的资源可以从三个层级来切分:
计算资源:流式多处理器(SM)的执行时间片,决定了并行计算能力。不同任务争夺的是 SM 的调度周期,体现在算力占用上。
显存资源:设备内存的容量与带宽。显存是刚性的——超出容量即触发 OOM,不存在弹性超分空间。
互连资源:NVLink、PCIe 带宽以及 GPU 之间的通信链路。多卡训练场景下,互连带宽往往是隐藏的瓶颈。
细粒度共享的终极目标,是在这三个层级上实现按需分配、弹性伸缩、性能隔离。
二、MIG:硬件级的实例切分
MIG(Multi-Instance GPU)是目前最彻底的 GPU 隔离方案。它在硬件层面将一张物理 GPU 划分为多个独立实例,每个实例拥有专属的 SM、显存、L2 缓存和内存控制器,彼此之间完全无干扰。
1. 切分粒度
以一张具有 80GB 显存和 132 个 SM 的 GPU 为例,MIG 切分的可选配置包括:
- 7 个实例,每个拥有约 10GB 显存和 14 个 SM;
- 3 个实例,每个拥有约 25GB 显存和 42 个 SM;
- 1 个实例,拥有全部 80GB 和 132 个 SM;
- 混合配置,如 1 个大实例 + 2 个小实例。
切分配置在 GPU 初始化时通过管理工具设定,运行时不可动态调整。这一点很关键——它意味着 MIG 适合任务类型相对可预测的场景,如教学环境为每位学生分配固定规格的 GPU 实例。
2. 隔离特性
MIG 的隔离性源于硬件层的物理划分。每个实例拥有独立的内存控制器和错误隔离域——一个实例的内存错误不会传播到另一个实例。这对多租户场景至关重要:租户 A 的代码不会因为租户 B 的内存越界而崩溃。
在安全性层面,MIG 实例之间不存在侧信道攻击途径,因为缓存和 DRAM 在物理上已被分区。这使其成为对数据敏感场景(如医疗影像分析、企业合作科研)的首选方案。
3. 局限性
MIG 并非无代价。一方面,切分后的单实例算力上限受到 SM 数目的物理限制,无法弹性使用空闲实例的资源;另一方面,MIG 不支持 P2P 通信——实例之间不能进行直接的 GPU 到 GPU 数据传输,限制了多卡训练的场景。此外,较旧的 GPU 架构(如 Volta、Turing)不支持 MIG。
三、vGPU:基于驱动的虚拟化
vGPU(Virtual GPU)在驱动层面实现 GPU 资源的时分复用或空间切分。它面向虚拟化环境,允许一个物理 GPU 同时为多个虚拟机提供图形或计算服务。
1. 工作原理
vGPU 管理器运行在 Hypervisor 层,将 GPU 的时间片按固定比例分配给各个虚拟机。每个虚拟机内部看到的是一个"完整的 GPU",但实际的执行是在时间分片轮转调度下完成的。
显存的分配方式有两种:固定分配(每个 vGPU 获得固定大小的显存帧缓冲)和共享分配(所有 vGPU 共享显存池,按需使用)。固定分配提供了容量隔离,但利用率偏低;共享分配提高了显存利用率,但可能发生争抢。
2. 适用场景
vGPU 的核心优势在于与虚拟化基础设���的天然集成。在需要为远程桌面或虚拟实验室提供 GPU 加速的科研教学场景中,vGPU 是较为直接的方案——学生通过浏览器访问虚拟机,即可获得 GPU 计算能力,无需物理设备的直接连接。
但在纯计算场景下,vGPU 的调度开销和缺少 MIG 级别的隔离性使其性价比不如后文将要讨论的 MPS 方案。
3. 与 MIG 的协同
部分新型 GPU 同时支持 MIG 和 vGPU,两者可以组合使用——先在硬件层用 MIG 切分出独立实例,再在每个实例上通过 vGPU 进一步做时间分片。这种方案兼具了隔离性与灵活度,但配置复杂性也同步上升。
四、MPS:CUDA 层面的进程级共享
MPS(Multi-Process Service)是一种轻量级的 GPU 共享方案,它在 CUDA 驱动层面实现多个进程对同一 GPU 的并发访问。
1. 技术原理
MPS 由三个组件组成:Control Daemon 负责管理客户端连接,Server 负责接收 CUDA 调用请求,Client Runtime 嵌入在每个 CUDA 应用中。多个 Client 的 CUDA 命令由 Server 统一调度到 GPU 执行队列中,以并发方式充分利用 GPU 的计算资源。
与 MIG 不同,MPS 不划分显存——所有进程共享同一块显存空间。这意味着一个进程的显存溢出可能影响其他进程,但同时也意味着闲置的显存可以被其他进程灵活利用。
2. 性能特征
MPS 对计算密集型任务的吞吐量提升效果显著。在典型的小批量推理场景中(如多个服务实例共同处理推理请求),MPS 可以将 GPU 利用率从单实例的 40% 提升至接近满负荷,而延迟抖动控制在可接受范围内。
但对于显存密集型任务(如大模型训练),MPS 的优势有限——显存容量是硬瓶颈,MPS 无法创造额外的显存空间。此外,MPS 的 CUDA 上下文切换存在微秒级延迟,对延迟极度敏感的实时推理场景需谨慎评估。
3. 与 MIG 的取舍
一个实用的决策框架:若任务类型对性能隔离和数据安全有较高要求,优先 MIG;若追求最大化吞吐量和资源弹性,优先 MPS。在混合任务类型场景中,可以先用 MIG 为高安全需求的任务预留隔离实例,再在其余实例上启用 MPS 服务剩余的批处理任务。
五、组合策略与运维考量
现实中的 GPU 集群管理很少依赖单一技术。以下为一种经过验证的组合策略:
- 使用 GPU Operator 自动化驱动与运行时组件的部署,降低人工配错的风险;
- 按任务类型类型设定节点分组:MIG 节点服务于教学与隔离需求,MPS 节点服务于批量推理与开发调试;
- 在调度器层面接入 GPU 感知——调度器需知悉各节点的 GPU 切分状态和实时可用算力,据此做出放置决策;
- 建立 GPU 使用的监控指标:SM 利用率、显存占用、MIG 实例分布、vGPU 调度延迟等,作为容量规划的决策输入。
GPU 细粒度共享的目标不是"用完每一分算力",而是让不同优先级的科研任务在共享环境中各得其所——关键任务获得稳定资源保障,批处理任务灵活填补空闲窗口。技术选型的核心,是理解每项方案在隔离性、弹性与复杂度之间的三角关系,结合自己的实际任务类型做出判断。