TuxAI

llama.cpp:在 Linux 上跑起 CPU/GPU 量化推理

预计阅读 18 分钟 2026年8月17日 环境:服务器 / GPU
aillama.cpp大模型量化本地部署推理

llama.cpp:在 Linux 上跑起 CPU/GPU 量化推理

写在前面

llama.cpp 是当前最成熟的本地大模型推理引擎之一:纯 C/C++ 实现,几乎没有外部依赖,CPU 也能跑、有 NVIDIA/AMD 显卡更快,还能直接把模型变成 OpenAI 兼容的 API 服务。它的核心是 GGUF 量化格式——把十几 GB 的模型压缩到几 GB,普通笔记本也能跑起来。

如果你只是想最快跑通一个本地大模型,先看Ollama 教程;如果你想理解底层机制、精确控制显存与速度,或要把模型做成 API 服务,这篇正合适。

环境要求

  • 一个 Linux 系统(Ubuntu / Debian / Fedora / Arch 均可)
  • 磁盘:至少预留 10GB(模型 4~6GB + 编译产物)
  • 内存:纯 CPU 推理建议 8GB 以上;显存 6GB 以上可用 GPU 加速
  • 编译工具链(仅源码编译需要):gitcmakegcc/g++

没有显卡也能用:llama.cpp 本来就是为 CPU 推理设计的,只是速度比 GPU 慢一个量级,适合体验与轻量使用。

第一步:安装 llama.cpp

有两种方式,任选其一。

方式 A:预编译 Release 包(最快)

llama.cpp Releases 下载 Linux 版压缩包(选择 bin-linux-x64-cpu;NVIDIA 显卡可选 bin-linux-x64-cuda-cu12.x)。国内网络访问 GitHub 慢的话,可用 Gitee 镜像:https://gitee.com/mirrors/llama.cpp(源码镜像,需自行编译)。

解压后把 build/bin 里的 llama-clillama-server 放到任意目录即可使用,无需安装。

方式 B:源码编译(推荐,可带 CUDA)

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j $(nproc)

验证:

./build/bin/llama-cli --version

NVIDIA 显卡加速版(需先装 CUDA Toolkit 12.x):

cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON
cmake --build build -j $(nproc)

编译 CUDA 版耗时较长(视 CPU 核数 10~30 分钟),属正常现象。

第二步:下载 GGUF 量化模型

llama.cpp 只能运行 GGUF 格式的模型。下载渠道:

pip install huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download Qwen/Qwen3-4B-GGUF qwen3-4b-q4_k_m.gguf --local-dir ./models

量化版本怎么选

量化标识4B 模型大小适用场景
Q2_K~2.5GB内存极限,质量明显下降
Q4_K_M~2.8GB日常首选,体积/质量平衡
Q5_K_M~3.2GB质量更好,内存充裕时选
Q8_0~4.5GB接近原精度,体积大

日常使用选 Q4_K_M;显存/内存紧张选 Q2_K 或 Q3_K_S。

第三步:命令行推理

单次问答:

./build/bin/llama-cli -m ./models/qwen3-4b-q4_k_m.gguf -p "用一句话介绍 Linux"

交互式对话:

./build/bin/llama-cli -m ./models/qwen3-4b-q4_k_m.gguf -i -ins

纯 CPU 时加线程数(设为物理核心数,不是超线程数):

./build/bin/llama-cli -m ./models/qwen3-4b-q4_k_m.gguf -t 8 -i -ins

第四步:GPU 加速(有 NVIDIA 显卡时)

先确认驱动正常:

nvidia-smi

-ngl 参数控制有多少层模型放到 GPU,-ngl 999 表示尽可能全放:

./build/bin/llama-cli -m ./models/qwen3-4b-q4_k_m.gguf -ngl 999 -i -ins

显存不够装下整个模型怎么办? 降低 -ngl 数值,让剩余层跑在 CPU 内存上——速度下降但不会崩溃:

./build/bin/llama-server -m ./models/qwen3-4b-q4_k_m.gguf -ngl 32   # 只有 32 层上 GPU

第五步:启动 OpenAI 兼容 API 服务

这是 llama.cpp 最实用的功能之一——启动一个本地 HTTP 服务,接口格式与 OpenAI 完全兼容,现有调用 OpenAI 的代码改一下地址就能用:

./build/bin/llama-server \
  -m ./models/qwen3-4b-q4_k_m.gguf \
  --host 127.0.0.1 --port 8080 \
  -ngl 999

启动后:

  • 内置网页聊天界面:http://localhost:8080
  • API 端点:http://localhost:8080/v1/chat/completions

用 curl 测试:

curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
  "model": "qwen3-4b",
  "messages": [{"role": "user", "content": "用一句话介绍 Linux"}]
}'

默认只监听 127.0.0.1,数据不出机器。如需远程访问,用 SSH 隧道或反向代理并加鉴权(--api-key),不要直接改成 0.0.0.0 裸暴露。

常用参数速查

参数作用
-m <路径>指定 GGUF 模型文件
-ngl NN 层模型放 GPU(999=尽量全放;0=纯 CPU)
-t NCPU 线程数(设物理核心数)
-c N上下文长度(默认 4096,越大占内存越多)
--flash-attn启用 Flash Attention,KV Cache 显存减少约 30%~50%
--parallel N并发推理槽数(API 服务多人同时用)
--api-key <key>API 鉴权 Key(对外暴露时必设)

常见问题

模型输出乱码或答非所问? 确认模型是否带 Instructchat 标识(对话版),用 -i -ins 走对话模板;上下文 -c 设太短也可能截断回答。

CPU 很慢? 换更小模型(3B/1.5B 量化版),-t 设物理核心数,用 Q4_K_M 以上量化版本。

显存不足(OOM)?-ngl;换更低量化(Q4_K_S);缩上下文 -c 2048;开启 --flash-attn

llama.cpp 和 vLLM 怎么选? 个人电脑/单机、显存有限、需要量化 → llama.cpp;多用户高并发生产服务、企业级 GPU → vLLM(教程整理中)。两者定位不同,llama.cpp 在资源受限场景下是首选。

下一步

  • 给 Ollama 加图形界面:Open WebUI(教程整理中)
  • 容器化部署:Docker + GPU 容器(教程整理中)
  • 需要更专业的硬件搭配?看硬件兼容指南

提示:涉及系统安装、驱动、分区等操作前,请务必备份重要数据。模型与框架均免费开源,商用前请查看对应模型主页的许可说明。

评论

评论区由 GitHub Discussions 驱动,使用 GitHub 账号即可参与讨论。