llama.cpp
C/C++ 实现的本地推理引擎,CPU 与消费级显卡都能跑。
想知道本地推理到底是怎么跑的、或者需要在没有 Python 环境的小机器上部署的人。它是很多上层工具的地基。
llama.cpp 是本地推理的事实标准。它用 C/C++ 实现,几乎没有依赖,把模型量化成 GGUF 格式后在 CPU、Apple Silicon、NVIDIA、AMD、Intel GPU 上都能跑。你在 Ollama、LM Studio、Jan 里用的底层引擎,大多就是它。
两个核心能力值得知道:一是量化,把 16 位浮点权重压成 4 位整数(Q4_K_M 是性价比最常用的档位),7B 模型从十几 GB 压到 4GB 出头,一张 8GB 显卡就能装下,代价是轻微的能力损失;二是 llama-server,起一个带 Web UI 和 OpenAI 兼容接口的服务,可以接任何现有客户端。
什么时候直接用它而不是 Ollama?需要精细控制推理参数(采样器、KV cache 量化、投机解码、批处理槽位)时,要在树莓派或老旧机器上跑时,或者要把推理嵌进自己的 C++/Rust/移动端程序时。它的 llama-bench 也是评测本地模型实际吞吐的标准工具,选型时跑一下比看别人的数据靠谱。
需要接受的现实是:构建有门槛。要拿到好性能,往往得按自己的硬件加编译参数(CUDA、Metal、Vulkan、ROCm 各有各的开关),用预编译包可能损失一半速度。另外它只做推理——不训练、不微调,量化模型的质量上限取决于原模型和量化方法。
能拿它做什么
- 嵌入自家产品:把推理能力编进桌面端或移动端应用
- 极限压成本:在旧机器、树莓派、工控机上跑小模型
- 性能基准:用 llama-bench 实测不同量化档位的吞吐,指导选型
- 模型转换:把 HF 上的模型转成 GGUF 再量化,分发给客户
怎么用起来
- 装命令行:brew install llama.cpp(macOS)或按 README 用 cmake 编译
- 跑起来:llama-cli -hf ggml-org/Qwen2.5-7B-Instruct-GGUF(自动从 HF 拉 GGUF)
- 起服务:llama-server -hf ggml-org/Qwen2.5-7B-Instruct-GGUF -c 8192,打开 http://localhost:8080
- 测吞吐:llama-bench -m model.gguf -pg 512,128 对比不同量化档位
官网在 github.com/ggml-org/llama.cpp ,源码在 GitHub 仓库 ↗。
坑在哪
预编译二进制不一定带你的硬件后端,性能可能只有自编译的一半;按官方 build 文档加 -DGGML_CUDA=ON 之类的开关是值得的。llama-server 不带鉴权和限流,公网暴露前必须加反向代理。量化档位别盲选:Q2_K 省空间但明显变笨,长文本写作和代码任务上尤其明显,Q4_K_M / Q5_K_M 是更稳的折中。上下文开得越大,KV cache 占的显存越多,报 OOM 时先降 context 再降量化档位。
几乎所有本地推理工具的地基,值得了解它的边界。