Skip to content

💻 llama.cpp CPU 推理

没显卡也能跑大模型——llama.cpp 让 CPU 推理成为可能

什么是 llama.cpp

llama.cpp 是一个纯 C/C++ 实现的大模型推理引擎,最大的特点是:不需要 GPU,纯 CPU 就能跑

它的核心技术是 GGUF 格式量化——把模型精度从 16-bit 降到 4-bit,显存需求降至原来的 1/4,CPU 也能跑得动。


安装

Linux / macOS

bash
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j$(nproc)

编译完后 ./llama-cli 就是推理程序。

Windows

去 GitHub Release 下载预编译包,或者用 WSL2 跑 Linux 版本。


下载模型(GGUF 格式)

llama.cpp 不认 HuggingFace 的 safetensors 格式,必须用 GGUF:

bash
# 从 HuggingFace 下载 GGUF 模型
# 以 Qwen2.5 7B 4-bit 为例
wget https://huggingface.co/Qwen/Qwen2.5-7B-Instruct-GGUF/resolve/main/qwen2.5-7b-instruct-q4_k_m.gguf

GGUF 文件名中的 q4_k_m 代表量化精度:

量化质量大小推荐
q2_k明显退化极小不推荐
q4_k_m轻微退化约4GB(7B)✅ 推荐
q5_k_m极轻微退化约5GB(7B)✅ 重质量
q8_0几乎无损约8GB(7B)设备强就用这个
f16无损约14GB(7B)纯 GPU 用

运行推理

bash
# 对话模式
./llama-cli \
  -m qwen2.5-7b-instruct-q4_k_m.gguf \
  -p "你好,介绍一下自己" \
  -n 256 \
  -t 8 \
  --temp 0.7

关键参数:

参数含义
-m模型文件路径
-p输入提示词
-n最大生成 token 数
-t使用的 CPU 线程数(设为核心数)
--temp温度(越高越随机)

启动 API 服务

llama.cpp 也支持 OpenAI 兼容的 HTTP API:

bash
# 启动服务
./llama-server \
  -m qwen2.5-7b-instruct-q4_k_m.gguf \
  --host 0.0.0.0 \
  --port 8080 \
  -t 8 \
  -ngl 0

-ngl 0 表示纯 CPU,有 GPU 可以设 -ngl 33(把 33 层卸载到 GPU)。

调用方式:

bash
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "你好"}]
  }'

性能参考

7B 模型 q4_k_m 量化,CPU 推理(8 核 16 线程):

场景速度
普通台式机(i7/R7)10-20 token/s
笔记本(i5/R5)5-10 token/s
ARM 服务器(鲲鹏)3-8 token/s
树莓派 51-2 token/s

慢,但能用。CPU 推理适合:没显卡、离线环境、嵌入式设备。


llama.cpp vs Ollama

Ollama 底层其实也用了 llama.cpp。区别在于:

llama.cppOllama
包装程度裸引擎易用封装
API 兼容OpenAI 兼容自有格式
CPU 推理✅ 原生支持✅ 自动切换
模型管理手动下载一条命令

想极致控制用 llama.cpp,想省心用 Ollama。


🎯 本章要点

  • llama.cpp 纯 CPU 推理,核心技术是 GGUF 量化降低显存需求
  • -ngl 0 纯 CPU,-ngl N 把 N 层卸载到 GPU
  • gguf 文件从 HuggingFace 下载,选 q4_k_m 平衡质量和大小
  • Ollama 底层就是 llama.cpp,傻瓜版 vs 极客版的选择
加载练习题中...

有问题或补充?欢迎留言