一台8卡A100服务器跑着12个推理服务——每个服务独占一张卡浪费了60%的算力。MPS (Multi-Process Service) 让多个CUDA进程"共享"一张GPU,但不是简单的分时——它改变了CUDA的调度模型前言默认的CUDA进程模型是时间片轮转:GPU的compute engine一次只能运行一个进程的kernel。如果进程A提交了一个只用到20% SM的kernel,剩余80%的SM就白白空闲——进程B的kernel干等着进不来。MPS改变了这个模型:它将多个CUDA进程的kernel合并到同一个执行上下文中,在SM级别混合调度——进程A用40%的SM,进程B和C各用30%,三个进程真正在同一个GPU上并行执行。但MPS不是免费的:有内存隔离的妥协、有错误传播的风险、还有配置上的坑。这一节,我们拆解MPS的原理、配置和最佳实践。一、时间片轮转 vs MPS1.1 默认模式:单进程独占时间轴(默认模式,无MPS): ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [进程A kernel] | 空闲 | [进程B kernel] | 空闲 | 40% SM | 0% | 30% SM | 0% | ━━━━━━━━━━━━━━━━━━━━━━