vllm-cpu部署小模型

#背景

公司内部微调的一个小模型需要在没有gpu的机器上面部署,并且还是用vllm启动的,所以需要使用vllm-cpu来部署小模型。

思路

  1. 直接在物理机上面部署vllm-cpu版本
  2. docker部署

一开始使用了方案一部署了好久,但是因为我们的机器上面是centsos7.x,一些c++库太低了,导致使用pip安装vllm的时候一直失败。因为安装的时候一直要安装xformers,据说这个是gpu推理的时候用的,对一些c++的库的要求比较高,导致无法编译。如果安装的时候使用 --no-deps,虽然暂时能够安装vllm,但是启动会失败,因为缺失了很多的包,手动安装这些依赖将陷入“依赖地狱”。

最终决定用docker部署。

docker部署

最终决定用docker部署,然后在网上找到了vllm-cpu版本的镜像地址
https://gallery.ecr.aws/q9t5s3a7/vllm-cpu-release-repo

如果可以连接网络,可以执行pull public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v0.10.1,直接拉取镜像。拉取以后使用如下命令启动

docker run -d --rm
-v /home/sft/output/checkpoint-150-merged:/model
–privileged=true
-p 8000:8000
-e VLLM_CPU_OMP_THREADS_BIND=2
public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v0.9.1
–model=/model
–gpu-memory-utilization 0.9 --max-model-len 37376 \

  1. docker run
    启动一个新的 Docker 容器。
  2. -d
    detached 模式:容器在后台运行,不占用当前终端。
  3. –rm
    容器退出后自动删除容器,避免产生无用的停止状态容器。
  4. -v /home/sft/output/checkpoint-150-merged:/model
    挂载卷(Volume):将宿主机的目录 /home/sft/output/checkpoint-150-merged 挂载到容器内的 /model 路径。
    这个目录通常是一个经过合并(merged)的 Hugging Face 格式的模型检查点(如 Llama、Qwen 等)。
    容器内的 vLLM 服务将从 /model 加载模型。
  5. –privileged=true
    赋予容器扩展权限,包括访问宿主机设备、修改内核参数等。
    ⚠️ 注意:这有安全风险,仅在必要时使用。vLLM 在 CPU 模式下通常不需要此权限,除非涉及特殊硬件或性能调优。
  6. -p 8000:8000
    端口映射:将宿主机的 8000 端口映射到容器的 8000 端口。
    vLLM 的 API 服务默认监听 8000 端口,外部可通过 http://:8000 访问。
  7. -e VLLM_CPU_OMP_THREADS_BIND=2
    设置环境变量:
    VLLM_CPU_OMP_THREADS_BIND=2:控制 OpenMP 线程绑定行为,值为 2 可能表示线程绑定到特定 CPU 核心(具体行为依赖 vLLM 实现)。
    这是CPU 推理优化参数,用于提升多线程性能或避免 NUMA 问题。
  8. public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:v0.9.1
    指定使用的 Docker 镜像:
    来自 AWS 的公共 ECR 仓库(Amazon Elastic Container Registry)。
    镜像名称:vllm-cpu-release-repo
    标签(版本):v0.9.1
    特别标明是 CPU 优化版本(非 GPU 版本)。
  9. –model=/model
    传递给容器内 vLLM 启动脚本的参数。
    指定模型路径为容器内的 /model(即前面挂载的目录)。
  10. –gpu-memory-utilization 0.9
    ⚠️ 注意:这个参数是用于 GPU 模式的,表示 GPU 显存利用率设为 90%。
    但当前使用的是 CPU 镜像(vllm-cpu-release-repo),此参数无效或会被忽略。
    可能是复制了 GPU 命令但未清理参数,建议删除。
  11. –max-model-len 37376
    设置模型支持的最大上下文长度(token 数)为 37,376。
    允许处理非常长的输入文本(如长文档、代码文件等)。
    需确保模型本身支持该长度,否则可能出错或截断。
Logo

分享最新的 NVIDIA AI Software 资源以及活动/会议信息,精选收录AI相关技术内容,欢迎大家加入社区并参与讨论。

更多推荐