在Dcoker中部署的Xinference如何限制其Cpu核心数,物理内存及Gpu的占用

要在 Docker 中限制 Xinference 对CPU、内存、GPU的资源占用,可通过 Docker 本身的资源限制参数 + NVIDIA GPU 专属配置实现,以下是具体方法:

一、CPU 限制

使用 --cpus 参数,直接限定容器可使用的CPU 核心数(支持小数,如1.5表示 1.5 个核心)。

示例(限制为 4 个 CPU 核心):

docker run -d --cpus=4 ... xprobe/xinference:版本号

原理:Docker 基于 Linux 的 CFS(完全公平调度器),通过--cpus精确控制 CPU 分配,避免 Xinference 过度抢占 CPU 资源。

二、内存限制

通过 --memory(或 -m)参数,设置容器可使用的最大物理内存;搭配 --memory-swap 可限制 “内存 + 交换分区(Swap)” 的总容量。

示例 1(限制物理内存为 16GB):

docker run -d --memory=16g ... xprobe/xinference:版本号

示例 2(限制物理内存 16GB + 交换内存 8GB,总 24GB):

docker run -d --memory=16g --memory-swap=24g ... xprobe/xinference:版本号

作用:防止 Xinference 因内存溢出(如加载大模型时)拖垮宿主机。

三、GPU 限制

需先安装 NVIDIA Container Toolkit(让 Docker 识别 NVIDIA GPU),再通过专属参数控制 GPU 访问。

前提:安装 NVIDIA Container Toolkit

参考官方文档完成安装,确保执行 docker run --rm --gpus all nvidia/cuda:11.8.0-runtime-ubuntu22.04 nvidia-smi 能正常输出 GPU 信息。

1. 限制 “可见的 GPU 设备”

用 --gpus 参数指定容器可访问的 GPU(通过设备编号,从 0 开始)。

示例 1(仅允许使用第 0 块 GPU):

docker run -d --gpus "device=0" ... xprobe/xinference:版本号

示例 2(允许使用第 0、1 块 GPU):

docker run -d --gpus "device=0,1" ... xprobe/xinference:版本号
2. 显存限制(间接方式)

Docker 本身不直接限制 GPU 显存,但可通过Xinference 自身配置NVIDIA 环境变量间接控制:

  • Xinference 侧:启动模型时,通过参数(如--model-args '{"max_memory": {"gpu": "12GiB"}}')限制单模型显存占用。
  • NVIDIA 环境变量:如 NVIDIA_VISIBLE_DEVICES 控制 GPU 可见性,NVIDIA_DRIVER_CAPABILITIES 控制驱动能力。

四、完整启动示例(结合所有限制)

假设需启动 Xinference,限制为4 核 CPU、16GB 内存、使用第 0 块 GPU,命令如下:

docker run -d \
  --cpus=4 \             # CPU核心限制
  --memory=16g \         # 物理内存限制
  --gpus "device=0" \    # GPU设备限制
  -p 9997:9997 \         # 端口映射(Xinference默认9997)
  xprobe/xinference:1.4.0 \
  xinference-local -H 0.0.0.0  # 启动本地服务并允许外部访问

五、验证与动态调整

  • 验证资源占用:执行 docker stats 容器名,实时查看 CPU、内存、GPU(需额外工具如nvidia-smi)的使用情况。
  • 动态调整资源:若容器已运行,可通过 docker update 修改限制(部分参数支持运行时更新)。例如,动态调整 CPU 核心数:
    docker update --cpus=6 容器名
    

通过上述步骤,可有效控制 Xinference 在 Docker 中对 CPU、内存、GPU 的资源占用,避免影响宿主机其他应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值