llama.cpp
纯C/C++实现的本地大模型推理引擎,GGUF量化开先河,MacBook上跑70B模型成为现实
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
纯C/C++实现的本地大模型推理引擎,GGUF量化开先河,MacBook上跑70B模型成为现实
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:llama.cpp 项目标志
2023年2月,保加利亚工程师 Georgi Gerganov 在 GitHub 上传了一个看似简单的 C/C++ 项目—— llama.cpp。它的核心想法在当时看来几乎不可思议:不依赖 Python、不依赖任何深度学习框架,只用纯 C/C++ 代码,把 Meta 开源的 LLaMA 大模型跑在普通电脑上。
彼时的大模型推理还严重依赖 PyTorch 和 NVIDIA 高端显卡,普通开发者想要本地运行一个 7B 参数的模型,几乎是不可想象的事情。Georgi Gerganov 用一个 hackathon 项目打破了这一切——他在自己的 MacBook Air(M1 芯片,没有独立显卡)上,首次成功运行了 LLaMA 7B 模型,震惊了 AI 社区。
这个疯狂想法迅速引爆了开源社区。不到一年时间,llama.cpp 已经成为本地大模型推理的事实标准,GitHub Stars 突破 10 万,成为有史以来增长最快的 C++ 项目之一。
llama.cpp 的核心竞争力来自一系列底层优化技术:
GGML 张量库
项目内置了自研的 GGML(Georgi Gerganov's Tensor Library)张量库,实现了多线程张量运算、内存映射(mmap)和量化推理等核心能力。GGML 是 llama.cpp 的心脏,让 C++ 代码能够高效执行矩阵运算,而不需要调用外部深度学习框架。
模型量化(Quantization)
llama.cpp 支持多种量化精度:FP16、INT8、INT4,甚至 INT2。量化后的模型体积大幅缩减,例如一个原本 13GB 的 FP16 模型,量化到 Q4_K_M 后可能只有 7-8GB,使得消费级 GPU 甚至 CPU 也能流畅运行。GGUF(GGML Universal Format)是其专属模型格式,已被 Hugging Face 全面支持。
硬件后端广泛覆盖
llama.cpp 支持多种硬件加速后端:
KV Cache 优化与推测解码
通过智能 KV Cache 管理减少重复计算,支持推测解码(Speculative Decoding)进一步提升推理速度。
llama.cpp 不仅仅是一个推理库,而是一个完整的大模型工具链:
| 工具 | 说明 |
|---|---|
| llama-cli | 命令行交互工具,支持聊天、补全、嵌入生成 |
| llama-server | OpenAI 兼容的 HTTP API 服务器,支持 REST 接口 |
| llama-bench | 性能基准测试工具 |
| llama-lookup | 词表分析工具 |
| convert-llama-original-params-to-gguf | 模型格式转换工具 |
其中 llama-server 实现了与 OpenAI API 高度兼容的接口,现有应用无需修改代码即可切换到本地 llama.cpp 后端,大幅降低了迁移成本。
源码编译(CMake,推荐):
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build && cmake --build build --config Release
编译完成后,build/bin/ 目录下即有所有可执行工具。
Docker 一键运行:
官方提供 3 种基础镜像 + 6 种 CUDA/ROCm 加速镜像:
# CPU 版本
docker run -p 8080:8080 ghcr.io/ggml-org/llama.cpp:server
# NVIDIA GPU 版本
docker run --gpus all -p 8080:8080 ghcr.io/ggml-org/llama.cpp:server-cuda
配合 Hugging Face 下载模型,可实现 5 分钟内本地部署一个可用的大模型服务。
llama.cpp 采用清晰的模块化架构:
llama.h / llama.cpp:核心推理库,提供 C-style APIggml.h / ggml.c:底层张量运算库app/llama.cpp:命令行工具实现common/:通用工具(参数解析、日志、HTTP客户端等)代码质量方面,项目拥有 1000+ 个 commit、完善的 CI/CD 流程(server.yml 等 workflow)、静态分析(clang-format/clang-tidy)和安全策略(SECURITY.md),活跃的 Issue 反馈和 PR 评审确保了代码的可靠性。
1. 纯 C/C++ 门槛:对于习惯 Python 生态的开发者,直接使用 C++ API 有一定学习成本。不过 llama-server 提供了 REST API,理论上解决了这个问题。
2. 量化精度损失:INT4 及以上量化会在一定程度上影响模型输出质量,对于要求高精度的生产环境需要做权衡。
3. 缺乏训练能力:llama.cpp 是纯推理引擎,不支持模型训练,主要用于推理部署场景。
4. 非官方生态依赖:项目高度依赖 Georgi Gerganov 个人维护,社区贡献虽活跃,但核心决策仍集中在少数 Maintainer。
llama.cpp 的出现,某种意义上代表了大模型推理的 Linux 时刻——将大模型从少数科技巨头的云端,带到了每一个开发者的本地机器上。
它深刻影响了几个关键趋势:
截至目前,llama.cpp 仍是 GitHub 上最受欢迎的 C++ AI 项目,Stars 超过 11 万,被数千个项目依赖,持续引领着本地大模型推理的技术方向。
一句话总结:llama.cpp 用极致的底层工程能力,把大模型从云端 GPU 集群拉到了每一个普通开发者的电脑上,堪称 AI 民主化的重要推手。