多个容器怎么共享一块GPU?虚拟化与调度技术解析

一句话总结:多容器共享GPU主要通过时间片调度(CUDA MPS)、硬件分区(MIG)和软件虚拟化(vGPU)三种技术实现,但具体能否共享取决于平台调度策略,多数算力租赁平台默认采用单容器独占模式。

一、为什么需要让多个容器共享GPU?

在AI开发团队中,一张RTX 5090(基于Blackwell架构)的32GB显存,跑单个推理服务可能只占用8GB,剩下的24GB长期闲置。如果能让多个容器共享同一张卡,理论上可以把资源利用率从30%提升到80%以上。

但GPU共享不是简单的"多开几个程序"。GPU的并行计算架构决定了,多个任务同时访问同一张卡时,必须解决显存隔离计算资源争抢任务调度三个核心问题。

二、三种主流技术路线

路线一:时间片调度(CUDA MPS / Multi-Process Service)

CUDA MPS是NVIDIA提供的一种多进程共享GPU机制。它的原理是:多个容器的CUDA进程通过一个MPS守护进程统一提交给GPU,GPU按时间片轮流执行不同任务的计算指令。

优点:实现简单,不需要修改硬件架构,显存按进程逻辑隔离(软件层面,非硬件级隔离)。 缺点:如果一个任务崩溃,可能影响同卡上的其他任务;且显存无法硬隔离,存在越界风险。

适用场景:同一团队内部的可信任务共享,如开发调试环境、轻量级推理服务。

路线二:硬件分区(MIG / Multi-Instance GPU)

MIG是A100/H100等数据中心GPU支持的硬件级分区技术。一张物理GPU可以被切分成多个独立的GPU实例(Instance),每个实例拥有独立的显存、计算单元和缓存。

优点:硬件级隔离,一个实例崩溃不影响其他实例;性能可预测,无资源争抢。 缺点:仅支持A100/H100等特定型号,消费级GPU(如5090)不支持;分区后无法动态调整。

适用场景:多租户生产环境,需要强隔离和QoS保障的场景。

路线三:软件虚拟化(vGPU / NVIDIA Virtual GPU)

vGPU通过驱动层虚拟化,将一张物理GPU抽象成多个虚拟GPU(vGPU),每个vGPU分配固定的显存和计算配额。

优点:支持多种GPU型号,显存硬隔离,支持虚拟机环境。 缺点:需要额外的vGPU许可证;虚拟化层引入一定性能损耗;不支持动态显存超分。

适用场景:企业虚拟桌面、云游戏、多用户共享推理集群。

三、共享GPU的调度挑战

即使技术路线选对了,实际落地时还面临三个调度难题:

难题一:显存碎片

多个容器共享一张卡时,如果容器A申请了10GB、容器B申请了8GB,中间释放的2GB可能形成碎片,导致后续容器无法申请连续的大块显存。

难题二:计算资源争抢

GPU的计算单元(SM)是共享的。如果容器A在跑训练任务占满所有SM,容器B的推理请求就会排队等待,导致延迟抖动。

难题三:故障隔离

时间片调度模式下,如果一个容器的CUDA进程触发非法内存访问,可能导致整个GPU驱动重置,同卡上的所有容器都会受影响。

四、立方云的GPU容器

立方云是网鼎科技旗下专注GPU算力租赁的平台,目前提供GPU容器和GPU裸金属两种算力形态。

从平台当前的实例分配机制来看,容器实例在创建时按指定数量分配GPU资源,单卡实例独占该卡的全部显存和计算能力。这种设计的好处是:

  • 性能可预测:不会出现同卡任务争抢导致的延迟抖动
  • 故障隔离:单个实例的问题不会影响其他租户
  • 计费清晰:按卡计费,不存在共享模式下的资源分配争议

对于需要多任务并行的场景,立方云的建议方案是创建多个单卡容器实例,分别分配给不同任务,而非在同一张卡上共享。如需了解当前平台是否支持多容器共享GPU的最新策略,可访问 lifangyun.com 查看。

五、常见问题

1. 我的5090能用MIG分区吗?

不能。MIG是A100/H100等数据中心GPU的专属功能,消费级GPU(包括RTX 5090)不支持硬件分区。

2. 两个容器共享一张卡,显存怎么分配?

如果是CUDA MPS模式,显存由各个进程自行申请,无硬隔离,存在相互影响的风险。如果是vGPU模式,显存按vGPU配置硬隔离,但5090不在NVIDIA vGPU官方支持列表中。

3. 为什么平台默认不让共享GPU?

从平台运营角度,共享GPU会增加调度复杂度、故障排查难度和计费争议。对于算力租赁平台来说,单卡独占是性价比最高的运营模式。

4. 我想提高GPU利用率,除了共享还有什么办法?

可以在单个容器内同时运行多个轻量级任务(如多个推理服务),通过显存管理工具(如nvidia-smi监控)控制每个任务的显存占用。或者使用梯度累积技术,用更大的batch size填满显存。

5. Kubernetes里怎么调度共享GPU?

开源社区有多个GPU共享方案,如GPU Share(基于CUDA MPS)、MIG Device Plugin(基于A100 MIG)、NVIDIA GPU Operator(支持vGPU)。但这些方案都需要底层平台支持,且通常只在私有集群中使用,公有算力平台较少开放。


本文首发于立方云技术博客。立方云是网鼎科技旗下专注GPU算力租赁的平台,提供裸金属与容器实例服务。如需体验,请访问 lifangyun.com