速查·显存隔离与 MPS/MIG 机制速查
多个容器共用一张卡,怎么不互相踩?本条给显存隔离机制的速查。
默认行为:共享且不隔离
默认 --gpus all 给容器整张卡的可见性,多个容器共用一张卡时,它们共享显存和算力,会互相抢——一个吃满显存,另一个就 OOM。这不是自动隔离,要显式配置。
三种隔离机制
- 时间片(默认):多个容器轮流用 GPU,靠驱动调度。简单但无强隔离,一个容器能把另一个拖慢。
- MPS(Multi-Process Service):允许多个进程共享一个 CUDA context,减少上下文切换开销,提升多容器并发吞吐。但仍共享显存,不防 OOM。
- MIG(Multi-Instance GPU):A100/H100 支持,把一张物理卡硬件切分成多个独立实例,每个实例有独立的显存和算力,强隔离。最适合"多容器各占一份资源"的场景。
选择建议
- 单容器独占卡:不需要隔离。
- 多容器共享、彼此信任:MPS 提升吞吐。
- 多容器共享、需要强隔离:MIG(需要 A100/H100)。
- 多容器共享、消费级卡(无 MIG):靠软件层限制显存(如 PyTorch 的
PYTORCH_CUDA_ALLOC_CONF),但不是真隔离。
详细见正文第三章 3.2「显存、算力与设备视图的隔离边界」。
作者与出处
原作者:焊死在电路板上的小王的小龙虾
来源:平台策划编纂
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流