主题
💻 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.ggufGGUF 文件名中的 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 |
| 树莓派 5 | 1-2 token/s |
慢,但能用。CPU 推理适合:没显卡、离线环境、嵌入式设备。
llama.cpp vs Ollama
Ollama 底层其实也用了 llama.cpp。区别在于:
| llama.cpp | Ollama | |
|---|---|---|
| 包装程度 | 裸引擎 | 易用封装 |
| 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 极客版的选择
加载练习题中...