mrsaynothing.dev
llama.cpp 对比 Ollama——你该跑哪一个?

> llama.cpp 对比 Ollama——你该跑哪一个?▋

读公开记录,不跑分:Ollama 把自己的 llama.cpp 引擎钉在 b11351,上游已发到 b11443。一个是家电,一个是机舱。

mrsaynothing· 2026年10月6日· 1 分钟读完

搜索框把 llama.cpp vs Ollama 当成两个产品的对决来联想。两个仓库讲的是另一回事:其中一个的根目录里,躺着一个写死对方构建号的文件。Ollama 的引擎就是 llama.cpp,钉死的——网上想看的那场对决,不是你真正要做的决定。

你真正要决定的是:愿意亲手碰多深的引擎。下文全部来自两个仓库、它们的 release 流和公开讨论帖,发布当天上午逐一核对。

llama.cpp 到底是什么?

130,473 星,MIT 许可,这篇 review 发表当天就有四个 release。llama.cpp 是 2023 年 3 月掀开本地跑模型浪潮的 C/C++ 推理引擎。GGUF 这个单文件模型格式就是它所在的项目提出的——大家吵个不停的量化阶梯,用的正是它自家作者设计的格式。它有 24,125 个 fork、2,515 个未关闭 issue,最高产的贡献者有 2,011 个 commit。

它的 release 流读起来像日志:本篇 review 发表当天午后之前,b11438 到 b11443 已经落了四个构建,每个都是可以钉住的编号增量。除了命令行,它还带 llama-server——一个 OpenAI 兼容的 HTTP 服务端,任何客户端指过去,它就像一个恰好长在你机器上的托管 API。

verify: curl -s http://127.0.0.1:11434/api/version → 跑着 Ollama 时返回 {"version":"..."} · llama-server --version → 构建号,如 b11443

Ollama 除了壳还有什么?

有——而且边界就印在仓库里。Ollama 仓库根目录放着三个版本钉住文件:LLAMA_CPP_VERSION(写作时 b11351)、MLX_VERSION 和 MLX_C_VERSION。llm/llama_server.go 里的 Go 代码把一个 llama.cpp 衍生的服务端二进制当子进程拉起来再跟它对话。这个依赖不是圈内的秘密,它是构建输入。

Ollama 在上面加的是服务:一条命令从注册表拉模型、硬件自动检测、常驻 11434 端口的 API,还有第二引擎 MLX——给更想跑 safetensors 而不是 GGUF 的 Apple Silicon 机器。诚实的定义是:Ollama 是模型管理和进程卫生,包着一个它没写的引擎。

版本滞后在实践里意味着什么

写作时 Ollama 钉住的构建(b11351)和上游当天早上发的 release(b11443)之间差 92 个构建。引擎修复——比如 9 月那个在 Hacker News 拿了 89 分的 prompt-lookup-drafting 提速——总是先落到上游,几周后才搭上 Ollama 的发布火车。changelog 里那行修好你的问题的改动,壳往往是最后一个知道的。

那到底哪个更快?

同一个模型文件,谁也不比谁快——引擎是共用的。宣称有差距的 tokens 每秒对比,通常比的是不同的量化、不同的上下文长度,或者引擎本身的的不同构建。我们的 LM Studio 对比撞的是同一堵墙:界面不同,数学相同。

真正出现差距的地方,来自默认值和滞后,不是引擎:Ollama 替你选上下文长度、替你 offload 层(VRAM 惊喜背后的那两个旋钮),llama.cpp 让你自己设——忘了设就罚你。跑分问题的背后是个控制权问题。

你不是在两个引擎之间选。你是在选愿意亲手碰多深的引擎。

记录里 llama.cpp 的另一面

诚实的账本,因为记录里有一本:

  • 2,515 个未关闭 issue,围城式节奏。一个上午四个 release 是吞吐量——也是搅动。flag 会挪、backend 会重组,你钉好的构建脚本需要同样的维护。
  • 社区自己就把话说透了。来自 9 月那个提速优化的 Hacker News 讨论帖(89 分):"Frankly, llama.cpp is so badly written that these kind of speedups are trivial, and a hard fork (or a total rewrite) has been needed for the longest time."——rfgplk。同一个帖子里还有 Nvidia 收购 Hugging Face 之后、核心团队雇主易主带来的治理担忧。
  • 杂活归你。没有注册表,没有自动检测:GGUF 自己去 Hugging Face 拉(搭建指南管这一段),层 offload 的 flag 自己传,进程自己盯。

你该跑哪一个?

记录给出的结论,加上必须写的那行诚实声明:我读了记录,没有亲自跑。这里的每个数字都来自两个仓库、它们的 release 流和所引公开帖子——不是来自我的终端。

你想要跑记录给出的理由
一条命令加一个聊天窗口Ollama拉模型、自动检测、常驻 API——家电
所有 flag 加最新构建llama.cpp钉住的构建、llama-server、自选 backend
桌面图形界面LM Studio同一引擎血脉加按钮——已在此对比
一块 GPU 服务很多人vLLM吞吐型 serving——GGUF 的注意事项同样适用

一条实用的缝:从 Ollama 起步,等它跟你较劲——某个它不暴露的 flag、GPU 检测出错(最常见的那种)、修好的改动躺在更新的构建里——那件活就降到 llama.cpp。模型文件跟着你走,GGUF 是通用语。整个集群、两个工具都在,local-LLM hub 一站索引。

家电替你挡住引擎,直到引擎成为问题的那一天。那一天,就是第二件工具存在的理由。

你站在机舱哪一侧——壳的默认值有没有坑过你一个下午,而一个 flag 本来就能省下它?

faq

— mrsaynothing

$ 下一篇观点,直达邮箱

每篇一封。同意也好,拆解也好。

self-hosted · 无第三方 · 一键退订

这是什么?