纯 CPU 运行 DeepSeek 慢,先区分提示处理慢、逐 token 生成慢,还是每次都在重新加载模型。用 llama-bench 固定模型和任务,分别测试线程、上下文与构建后端,才能知道优化是否有效。本文给的是复测方法,没有在你的 CPU、内存和模型文件上实测,不承诺固定速度。
先建立可比较的基线
记录 CPU 型号、物理核心、内存、模型文件和哈希:

lscpu
free -h
sha256sum ~/models/deepseek.gguf
关闭其他大负载,用同一模型依次运行:
./build/bin/llama-bench -m ~/models/deepseek.gguf -t 4 -p 256 -n 128
./build/bin/llama-bench -m ~/models/deepseek.gguf -t 8 -p 256 -n 128
./build/bin/llama-bench -m ~/models/deepseek.gguf -t 12 -p 256 -n 128
pp 是 prompt processing,反映长输入的处理;tg 是 token generation,更接近日常看到的逐字输出速度。每组跑三次,忽略首次加载波动后取中位数。线程增加却变慢,通常说明已经遇到物理核心、内存带宽或大小核调度限制。
按症状改一个变量
| 症状 | 先检查 | 优先调整 |
|---|---|---|
| 首次慢,后续正常 | 模型加载和文件缓存 | 让服务常驻,模型放本地 SSD |
| 长输入特别慢 | pp、输入 token 数 |
裁剪历史、分段检索、避免重复系统提示 |
| 逐 token 一直慢 | tg、线程、内存带宽 |
选更小模型/更低量化,重新找最佳线程数 |
| 越聊占用越高 | 上下文和 KV cache | 缩短上下文,限制并发槽位 |
| 突然卡死或进程消失 | dmesg、交换空间 |
解决内存不足,不把大量 swap 当性能优化 |
为 CPU 构建启用合适的 BLAS
llama.cpp 官方构建文档提供 OpenBLAS 路径,主要影响提示处理等矩阵计算。先保留普通构建结果,再单独建目录对比:
sudo apt install -y libopenblas-dev
cmake -B build-openblas \
-DCMAKE_BUILD_TYPE=Release \
-DGGML_BLAS=ON \
-DGGML_BLAS_VENDOR=OpenBLAS
cmake --build build-openblas --config Release -j 8
./build-openblas/bin/llama-bench \
-m ~/models/deepseek.gguf -t 8 -p 256 -n 128
只在同一模型、线程和测试长度下比较。若 pp 改善但 tg 变化不大,这是可能出现的结果,不要把一次峰值当作持续生成速度。
控制上下文和并发
./build/bin/llama-server \
-m ~/models/deepseek.gguf \
-t 8 -c 2048 -np 1 \
--host 127.0.0.1 --port 8080
从 -c 2048、单并发开始。真实任务需要更长上下文时,再升到 4096 并记录内存和响应时间。上下文不是越长越好:历史消息会增加提示处理量,KV cache 也占内存。并发会让每个请求争用 CPU 和内存带宽。
用固定请求做端到端验收
for i in 1 2 3; do
curl -s http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"用三点解释本地推理。"}],"temperature":0,"max_tokens":96}' \
-o "result-$i.json"
done
确认三个 JSON 都能解析、回答非空、服务没有重新加载模型。测性能时保持提示和 max_tokens 一致;答案文本不必逐字相同,但任务应完成。
什么时候应换方案
- 最小可接受模型仍无法达到业务响应时间:考虑 GPU、云 API 或更小专用模型。
- 主要任务只是分类、抽取:不一定需要推理型大模型,可换小模型或规则。
- 依赖 swap 才能启动:能运行不等于可用,优先降低模型、上下文或并发。
- 想通过“多开线程”解决所有问题:超过合适线程数后可能更慢,必须以基准结果决定。
资料来源
- llama.cpp 构建文档:Linux、OpenBLAS 和编译选项,2026-10-01 核验。
- llama.cpp server 文档:线程、上下文与并发参数,2026-10-01 核验。
- DeepSeek-R1 模型卡:蒸馏模型规格,2026-10-01 核验。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32179.html