- 发布日期
是什么
llama.cpp 是一个推理引擎(inference engine),也就是把训练好的语言模型加载进来、并由它生成文字的那一层软件。它用 C/C++ 写成,不依赖外部库,建立在 ggml 张量库(tensor library)之上[2]。这两点在实用上都很重要:张量库提供的是神经网络所需的最基本的数值工具——一组组数字,以及对它们做的运算;而不依赖外部库,意味着这个项目可以单独编译,不必先安装一大堆别的库,因此更容易在各种机器上构建和运行。
由来
2023 年 3 月,Georgi Gerganov 为了让 Meta 的 LLaMA 模型能在消费级硬件(consumer hardware)上运行,创建了 llama.cpp[2]。GitHub 上的仓库建立于 2023 年 3 月 10 日,最初发布在 Gerganov 本人的账号下,后来迁到了 ggml-org 组织[1]。把模型放在普通机器上而不是服务器集群上运行,这个目标决定了它的设计取向:干活的代码要小,环节要少。它被视为带动了在笔记本电脑上做本地大语言模型推理的那一批工作之一[2]。
量化
为了让模型塞得进日常机器的内存、并且响应得更快,llama.cpp 使用量化(quantization):以牺牲一部分模型精度为代价,降低内存占用、提高速度[2]。语言模型说到底是一大批数字,也就是它的权重(weight)。量化就是把这些数字用更紧凑的形式存下来——每个数字用更少的位(bit)表示,于是整体占用的空间变小,在内存里搬运起来也更快。代价是这些数字不再精确:每个存下来的值都是四舍五入后的近似值,误差会随着模型规模累积,所以精度会有损失。让这种取舍可以调节,正是同一套引擎既能服务小笔记本、也能服务更大机器的原因。
GGUF 模型文件
模型文件以 GGUF 格式分发,这是一种单文件格式,把张量(tensor)和元数据(metadata)存放在一起;GGUF 规范在 ggml 仓库中维护[2][3]。张量就是权重数组本身;元数据则是描述这个模型的信息——它的结构是怎样的、期待哪些设置。把两者放进同一个文件,一个模型就可以当成一个整体来传递,而不是一个装着零散文件的目录,下载、分享和加载都因此简单了不少。
许可证与位置
这个仓库以 MIT 许可证发布,可以自由使用、修改和分发[1];它在 GitHub 上约有 13 万颗星[1]。这种宽松的许可,加上引擎本身不依赖外部库,是它走出原作者之手的原因之一:任何人都可以拿走代码、改动它、再把它发布出去,包括嵌进别的软件里。
llama.cpp 处在一个训练好的模型与个人电脑相遇的位置上。引擎本身不生产模型,它做的是拿一个模型文件把它跑起来。它的贡献在于把这一步做得足够便宜、足够日常:代码保持精简,权重通过量化压紧,分发则统一到一种文件格式上。在它发布之后的一段时间里,在自己的笔记本上跑一个语言模型,从一种不太常见的试验,变成了很多人真的会去做的事,而 llama.cpp 是促成这一变化的工具之一[2]。
注释与来源
- ggml-org/llama.cpp repository metadatahttps://api.github.com/repos/ggml-org/llama.cpp
- llama.cpphttps://en.wikipedia.org/wiki/Llama.cpp
- GGUF specificationhttps://github.com/ggml-org/ggml/blob/master/docs/gguf.md
引用本页: llama.cpp. TellWorld, https://www.tellworld.net/zh/products/llama-cpp. 更新于 2026-11-08