首页/AI/大模型部署与运维速查/MPS 多进程服务概念
推理环境与 GPU50 条

MPS 多进程服务概念

MPS(Multi-Process Service)允许同一张卡上多个进程共享 GPU 计算资源,适合多进程小任务并发的场景;它做的是资源复用而非硬隔离,与 MIG 定位不同。

MPS 是干什么的

MPS(Multi-Process Service)让同一张 GPU 上的多个进程共享计算资源,把原本互相串行的多个 CUDA 上下文合并调度,从而提高资源利用率。它做的是资源复用而不是硬隔离:进程之间没有强隔离保证,和 MIG 的定位完全不同。

基本信息

机制多进程共享同一张卡的调度
控制命令nvidia-cuda-mps-control
适合同卡多进程、小批量并发
不适合强隔离与计费隔离(选 MIG)
前置条件各客户端 CUDA 版本与配置口径一致

典型使用场景

  • 单卡上跑多个互相独立的推理小进程,各自并发都很低
  • 开发机多人共用一张卡做轻量测试
  • 多个小模型常驻,单独起进程比塞进一个框架更简单
  • 老框架没有批处理调度能力,用 MPS 摊薄上下文切换开销
  • 同卡上跑大量短生命周期小任务,反复创建上下文的开销占比过高

启用与停止

启用与停止
nvidia-cuda-mps-control -d                      # 启动控制守护进程
echo get_server_list | nvidia-cuda-mps-control   # 查看已注册的客户端
echo quit | nvidia-cuda-mps-control              # 停止守护进程
export CUDA_MPS_PIPE_DIRECTORY=/tmp/nvidia-mps   # 自定义通信目录(可选)
export CUDA_MPS_LOG_DIRECTORY=/tmp/nvidia-log    # 日志目录(可选)

MPS 与 MIG 的差别

维度MPSMIG
目标资源复用、提高利用率硬隔离与配额管理
隔离性无强隔离显存与算力分区隔离
配置粒度进程级共享实例级,通常需重配重启
典型场景同卡多小进程多租户与计费隔离
容器场景下推理框架自身会调度多请求,MPS 的收益主要出现在「多个互相独立的进程各占一点资源」的部署形态,别把它当成通用的吞吐优化开关。
MPS 与 MIG 不要混用:两者作用对象不同,同卡同时配置时行为受限且难排查,先明确是要复用还是要隔离,再选其中一种。
开启前后用同一份负载对比利用率与吞吐再决定是否保留:客户端进程本身并发已经不低时,MPS 带来的收益通常有限。

易错点

  • 把 MPS 当隔离手段:进程之间没有硬隔离,一个进程崩溃或吃满显存会波及同伴
  • 与 MIG 同时开启:同卡两种机制混用会出问题,需求应先落到复用或隔离二选一
  • 客户端环境不一致:CUDA 版本或 pipe 目录不一致会连不上守护进程,表现为启动即失败
  • 期待 MPS 提升大模型吞吐:收益来自资源复用而非单请求加速,大 batch 场景提升有限

数据来源与参考

  • NVIDIA MPS 文档(docs.nvidia.com/deploy/mps)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌