You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NVIDIA-MPS中指定运行GPU及控制各客户端资源分配

NVIDIA MPS 常见问题解答

问题1:多GPU服务器中指定MPS Server运行的GPU

MPS Server启动时会读取环境变量绑定目标GPU,多卡场景下操作方法如下:

  • 单MPS实例场景:启动服务前先通过CUDA_VISIBLE_DEVICES绑定指定GPU即可
    # 绑定0号GPU作为MPS服务的运行载体
    export CUDA_VISIBLE_DEVICES=0
    sudo nvidia-cuda-mps-control -d
    
  • 多MPS实例场景(每块GPU对应独立MPS服务):需要额外为每个实例配置独立的管道、日志目录避免冲突,示例如下:
    # 启动0号GPU对应的MPS实例
    export CUDA_VISIBLE_DEVICES=0
    export CUDA_MPS_PIPE_DIRECTORY=/tmp/nvidia-mps-gpu0
    export CUDA_MPS_LOG_DIRECTORY=/var/log/nvidia-mps-gpu0
    sudo nvidia-cuda-mps-control -d
    
    # 启动1号GPU对应的MPS实例
    export CUDA_VISIBLE_DEVICES=1
    export CUDA_MPS_PIPE_DIRECTORY=/tmp/nvidia-mps-gpu1
    export CUDA_MPS_LOG_DIRECTORY=/var/log/nvidia-mps-gpu1
    sudo nvidia-cuda-mps-control -d
    
    客户端接入时设置和目标实例相同的CUDA_MPS_PIPE_DIRECTORY环境变量,即可接入对应GPU的MPS服务。

问题2:控制MPS客户端的计算、显存资源分配

MPS提供原生配额机制,可针对全局默认值或单个客户端分别设置资源上限:

计算资源配额控制

按GPU活跃线程占比分配算力,最小粒度为1%:

  • 全局默认配额:所有新启动的客户端默认生效
    # 所有新客户端默认最多占用30%算力
    echo "set_default_active_thread_percentage 30" | nvidia-cuda-mps-control
    
  • 单个客户端配额:针对已运行的客户端设置,需要提前获取客户端的PID
    # 给PID为1234的客户端分配40%算力
    echo "set_active_thread_percentage 1234 40" | nvidia-cuda-mps-control
    

显存资源配额控制

CUDA 11及以上版本支持显存配额限制,支持按比例或绝对值设置:

  • 全局默认显存配额
    # 所有新客户端默认最多占用40%的GPU显存
    echo "set_default_device_memory_limit 40%" | nvidia-cuda-mps-control
    # 也可设置绝对值,例如最多分配8GB显存
    echo "set_default_device_memory_limit 8589934592" | nvidia-cuda-mps-control
    
  • 单个客户端显存配额
    # 给PID为1234的客户端分配20%显存
    echo "set_device_memory_limit 1234 20%" | nvidia-cuda-mps-control
    

注意:所有客户端的显存配额总和不能超过对应GPU的总显存,超出部分的客户端申请显存时会直接触发OOM错误。


内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:15:03