没有 GPU,还能跑大模型吗?vLLM vs llama.cpp 实测对比
地推理领域的“常驻选手”。
那么问题来了:
同样是在纯 CPU 环境下,vLLM 和 llama.cpp 的实际表现究竟如何?
这篇文章将基于 GPUStack 进行完整实测,对比两者在 CPU 场景下的部署与推理表现。
测试环境使用三台同规格服务器,配置均为 4 vCPU + 16GB 内存。其中:
- 1 台作为 GPUStack Server
- 1 台用于部署 vLLM-CPU
- 1 台用于部署 llama.cpp
两组测试分别运行在独立 Worker 节点上,尽量减少相互干扰带来的性能影响。
全文分为以下几个部分:
- 安装 GPUStack,并初始化集群
- 添加 vLLM-CPU 自定义后端
- 部署模型并测试
- 启用 llama.cpp 社区后端
- 部署 GGUF 模型并测试
- 更多模型实测
- 高性能 CPU 环境实测
- 压测结果分析
- 小结
安装 GPUStack,并初始化集群
在开始测试之前,需要先完成 GPUStack 的安装与集群初始化。
考虑到这部分内容此前已经进行过较为完整的介绍,这里不再重复展开。如果你是第一次接触 GPUStack,可以先阅读下面这篇安装教程:
<这里留空,会插入公众号已发表的文章-GPUStack v2.1.2 安装教程>
添加纯 CPU Worker 节点
前文演示的是 NVIDIA GPU 节点的添加流程,而本文主要测试纯 CPU 推理,因此这里额外介绍如何实际添加一个 CPU Worker 节点。
示例命令如下:
docker run -d --name gpustack-worker \
-e "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=gpustack-worker" \
-e "GPUSTACK_TOKEN=gpustack_8a9deabfdce64e0b_d5394d64567d6a304eaaa8d627e494db" \
--restart=unless-stopped \
--privileged \
--network=host \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume gpustack-data:/var/lib/gpustack \
gpustack/gpustack:v2.1.2 \
--server-url http://100.109.241.71 \
--worker-ip 100.101.65.74
与 GPU 节点不同,这里省略了
--runtime参数。
命令中的关键参数说明如下,可根据实际环境进行调整:
GPUSTACK_TOKEN:Worker 与 Server 之间的认证 Token,可在 UI 中生成添加 Worker 的命令时获取。--server-url:GPUStack Server 服务地址。--worker-ip:Server 与 Worker 通信的 IP 地址。如果机器有多个网卡,或者默认 IP 不是期望值,需要手动指定。
节点添加完成后,可在 GPUStack 控制台查看对应 Worker 是否已成功上线:

添加 vLLM-CPU 自定义后端
目前 GPUStack 默认提供的是 GPU 版本 vLLM,因此这里需要手动添加 CPU 版本后端。
暂不支持直接在内置 vLLM 后端中通过添加自定义版本实现,这会导致模型部署 Pending。
进入 GPUStack 控制台(Web UI)后,在左侧边栏中导航到推理后端:

按下图所示填写配置:


或者使用 YAML模式,填入以下内容:
backend_name: vLLM-CPU-custom
health_check_path: /ping
default_run_command: "{{model_path}} --port {{port}} --host {{worker_ip}} --served-model-name {{model_name}}"
version_configs:
0.21.0:
image_name: swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai-cpu:v0.21.0
custom_framework: cpu
从微信公众号复制出的内容可能包含特殊符号,可直接使用我们准备好的 yaml 文件:https://gpustack-cn-blogs.oss-cn-shanghai.aliyuncs.com/assets/cpu/vllm-cpu.yml
实际配置使用的国内镜像,vLLM 官方原版镜像地址为:
vllm/vllm-openai-cpu:v0.21.0
添加完成后,效果如图所示:

部署模型并测试
这里我们选择最近发布的 openbmb/MiniCPM5-1B 作为测试模型。
作为一款 1B 级别的小模型,MiniCPM5-1B 在轻量化场景下表现较为突出,近期一直位于 Hugging Face 热门模型榜单前列,因此比较适合作为本次纯 CPU 推理测试对象。
打开 部署 页面,在右上角 部署模型 菜单中选择 Hugging Face 或 ModelScope:

随后在弹出的模型窗口中搜索:
openbmb/MiniCPM5-1B

调整部署参数
1. 调整推理引擎
将推理后端切换为前面创建的:
vLLM-CPU

2. 绑定调度节点
由于本文分别使用独立 Worker 节点测试 vLLM 与 llama.cpp,因此这里需要手动绑定对应 Worker。

3. 调整启动参数与环境变量

这里使用的关键参数如下:
-
--dtype=bfloat16由于 PyTorch CPU 对
float16的支持并不稳定,因此这里显式指定bfloat16,避免出现性能异常或精度问题。 -
--max-model-len=8192本次测试机器配置较低,因此这里适当降低上下文长度,减少内存压力。后续 llama.cpp 测试中也会保持一致,以尽量保证测试条件统一。
-
VLLM_CPU_KVCACHE_SPACE=8指定 CPU KV Cache 可使用容量,单位为 GB。这里设置为
8,表示允许 vLLM 使用约 8GB 内存作为 KV Cache。 -
VLLM_CPU_OMP_THREADS_BIND=nobind禁用 OpenMP 线程绑定到固定 CPU 核心,实际测试中通常能够提高 CPU 利用率,并减少部分场景下的线程调度限制。
更多配置选项请访问 vLLM CPU 官方文档:CPU - vLLM
参数配置完成后,点击保存按钮即可开始部署模型。
试验场测试


测试时的系统资源检测情况:

启用 llama.cpp 社区后端
相比 vLLM,llama.cpp 在 CPU 推理领域已经发展多年。
其核心特点包括:
- 原生 CPU 优化
- GGUF 量化生态成熟
- 内存占用较低
- 非常适合边缘设备
- 模型服务启动迅速
GPUStack 社区后端已经支持 llama.cpp,因此这里只需要启用即可。
部署 GGUF 模型
接下来部署 GGUF 格式的 MiniCPM5-1B 模型:
openbmb/MiniCPM5-1B-GGUF
为了尽量保证测试条件一致,这里选择与 vLLM-CPU 相同规格的
MiniCPM5-1B-F16.gguf,而没有使用更小体积的量化版本。
调整部署参数
1. 调整推理引擎
将推理后端切换为:
llama.cpp
2. 绑定调度节点
这里同样绑定到独立 CPU Worker 节点,避免与 vLLM 测试环境互相影响。
3. 调整启动参数与环境变量
本文测试使用的核心参数如下:
-
--ctx-size 32768设置 KV Cache 可用的总上下文容量。由于本文测试中
--parallel设置为4,因此这里将总上下文设置为32768,相当于为每个并发请求预留约8192上下文长度,以尽量与 vLLM-CPU 测试中的--max-model-len=8192保持一致。
注意:llama.cpp 的
--ctx-size并不是为每个并发请求严格独立分配的,更接近于多个请求共享同一块 KV Cache 容量。
-
--parallel 4设置并行请求槽位数量为
4,允许 llama.cpp 同时处理多个请求。 -
--threads 4设置生成阶段使用的 CPU 线程数。当前测试机器为
2C4T,因此这里直接使用全部逻辑线程。 -
--threads-batch 4设置 Batch 处理阶段线程数,与
--threads保持一致。
更多配置选项请访问 llama.cpp 官方文档:llama.cpp/tools/server/README.md at master · ggml-org/llama.cpp · GitHub
参数配置完成后,点击 保存 即可开始部署模型。
试验场测试 GGUF 模型


测试时的系统资源检测情况:

从 CPU 占用情况来看,llama.cpp 基本能够持续占满全部逻辑核心,整体 CPU 利用率相比 vLLM-CPU 更高。
更多模型实测
除了 MiniCPM5-1B 之外,这里也额外测试了几个较为热门的小模型,用于观察不同模型在纯 CPU 环境下的实际表现。
Qwen3-0.6B & Qwen3-0.6B-GGUF

Qwen3.5-0.8B & Qwen3.5-0.8B-GGUF

本轮测试中,vLLM-CPU 在当前
2C4T + 16GB测试环境下未能成功启动Qwen3.5-0.8B。后续切换到本地配置更高的测试机器后,模型可以正常运行。从实际体验来看,vLLM-CPU 对 CPU 核数、内存容量以及整体资源余量相对更加敏感,在资源更充足的环境中运行会更加稳定。
gemma-4-E2B-it-GGUF


高性能 CPU 环境实测
为了观察纯 CPU 推理在更充足资源下的表现,我们将测试环境升级为:
- CPU:AMD EPYC Genoa 32 vCPUs
- 内存:128 GiB
- 操作系统:Ubuntu 24.04 LTS
- 特性支持:AVX-512F 指令集
相较于之前的 2C4T + 16GB 环境,这套高性能环境能够充分发挥 CPU 并行能力,同时支持高级向量化指令,对 vLLM-CPU 和 llama.cpp 的推理性能都有一定提升。
本次测试以 Qwen3-0.6B 模型为对象,分别在 vLLM-CPU 与 llama.cpp 后端上进行部署和实测。
部署方式与前文一致,只是在 CPU 资源配置上充分利用新机器:
更多推荐

所有评论(0)