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




所有评论(0)