进阶 11 分钟llama.cpp

llama.cpp:是什么,是否需要放弃使用 Ollama ?

直接回答

llama.cpp 是用 C/C++ 编写的推理引擎,可在 CPU 以及 NVIDIA、AMD、Intel 和 Apple Silicon 的 GPU 上运行 GGUF 格式的模型;Ollama、LM Studio 和 KoboldCpp 都以它为基础。通过 llama-server 直接使用它,并不会让模型在相同硬件上运行得更快:这样做可以让您自行控制原本由上层应用替您选择的设置,例如 GPU/CPU 分配、上下文大小和 KV 缓存量化。

llama.cpp 是用 C 和 C++ 编写的推理引擎,在 CPU、NVIDIA、AMD 和 Intel GPU 以及 Mac 上执行 GGUF 格式模型。截至 2026 年 9 月 20 日,大多数本地 LLM 应用都依赖于它或其 ggml 库:Ollama、LM Studio、KoboldCpp、Jan。直接使用它并不会让你的模型更快。它让你能够控制那些由上层应用替你决定的设置。

作者: Mohamed Meguedmi·更新于 2026-09-28·已在 macOS 14+ 上测试

#llama.cpp 简介

该项目于2023年3月由Georgi Gerganov发起,目标十分明确:在MacBook上运行Meta的LLaMA模型,无需Python,也无需依赖重型库。项目采用MIT许可证发布。三年后,该仓库(已移至ggml-org组织下)支持了数百种架构,其于2023年8月定义的文件格式GGUF,已成为分发量化模型的事实标准。

两个技术选择解释了这一成功。第一个是量化:llama.cpp 能使用压缩为 2 至 8 位的权重运行模型,使一个 80 亿参数的模型只需 5 GB,而不是 16 GB。第二个是在处理器和显卡之间分配计算:当模型无法完全装入显存时,一部分层留在系统内存中,其余层放到 GPU 上。这样运行比完全加载到 GPU 上更慢,但确实可行,而且提供这一功能的引擎很少。

#其中包含什么

本地 AI 套件

只需 1 小时,即可在您的电脑上拥有专属的免费 ChatGPT — LM Studio、Ollama、Open WebUI、您的文档,无需云端。

  • 在线空间,终身可用
  • PDF + 文件
  • 30 天内退款
llama-cli
命令行聊天。可用于几秒钟内测试模型或参数设置。
llama-server
一个运行在 8080 端口的 HTTP 服务器,提供兼容 OpenAI 的 API,并内置网页界面。这是大多数高级用户会持续运行的组件。
llama-bench
用于测量性能的工具。它分别给出提示词处理速度和生成速度,让您能够客观比较两种设置,不至于自欺欺人。
llama-quantize
将全精度 GGUF 文件转换为更轻量的量化版本(Q4_K_M、Q5_K_M、Q8_0)。

#封装层增添了什么,又隐藏了什么

Ollama、LM Studio 和 KoboldCpp 提供了 llama.cpp 本身不提供的功能:模型目录、用一条命令下载、用户界面,以及自动加载和卸载。作为代价,它们会设定默认值。下表不比较性能,而是说明各项设置由谁决定。

控制能力对比,而非速度对比 · 截至 2026 年 9 月 20 日
设置原版llama.cppOllamaLM StudioKoboldCpp
上下文长度通过 -c 选项自由设置保守的默认值,可通过变量或 Modelfile 修改每个模型都有独立滑块启动时指定的选项
量化选择任意GGUF文件目录标签,默认 Q4 量化提供下载的列表任意GGUF文件
发送至GPU的层通过 -ngl 选项逐层控制自动滑块启动时指定的选项
KV缓存的量化-ctk 和 -ctv 参数全局环境变量高级设置启动时指定的选项
APIllama-server,支持OpenAI协议原生 API + OpenAI 兼容性与 OpenAI 兼容的服务器原生 API + OpenAI 兼容性
引擎更新当天,每次提交存在偏移存在偏移存在偏移

最后一行比乍看之下更重要。新的模型架构发布后,首先会在 llama.cpp 中得到支持,几天或几周后,上层工具才会跟进。如果您想在模型发布当周就进行测试,这往往是唯一的途径。

#四个关键参数决定一切

-ngl (n-gpu-layers)
加载到显存中的模型层数。数值 99 表示「能放下多少就加载多少」。如果模型大小超过您的显存容量,请降低这个数值,直到能够成功加载:每留一层在 CPU 上,生成速度都会变慢,但一个每秒生成 8 个 token 的模型,总比一个无法启动的模型好。
-c (ctx-size)
分配的上下文窗口。KV 缓存会随窗口增大而增长:在 8B 模型上,从 8000 个 token 增加到 32000 个 token 会消耗数 GB 显存。请按实际需要分配上下文窗口,而不是直接采用模型宣称的最大值。
-fa (flash-attn)
启用 Flash Attention,可降低内存占用并加速长提示的读取。这也是量化 KV 缓存的必要前提。
--n-cpu-moe
对于 MoE 模型,此选项会将一定数量层的专家保留在 RAM 中,其余部分留在 GPU 上。这使得 300 亿或 1200 亿参数的 MoE 模型能够在 16 GB 显卡上以可用的速度运行。

#变化之处:--fit 自动为您设置 -ngl

长期以来,llama.cpp 指南通常都会先让您手动设置 -ngl:设为 99,将全部内容加载到 GPU;如果加载失败,再通过反复尝试逐步降低该值。如今,这已不再是必经步骤。该项目新增了默认启用的 --fit 选项,会自动调整未指定的参数(包括 -ngl),使模型能够装入可用内存。对于性能较弱的显卡,这可以避免在启动失败与手动降低 -ngl 之间来回尝试。

→
-ngl 99 仍有效
如果您希望强制指定特定位置,-ngl 仍会像之前一样正常工作;--fit 仅适用于您未自行设置的参数。行为变更仅涉及默认值,不涉及命令本身。

#您的显卡应选择何种后端

llama.cpp 可以针对特定计算后端编译,也可以下载对应版本。正确的选择完全取决于您的硬件。下表列出了我们包含 90 种配置的数据库中的各类配置。

根据QuelLLM硬件数据库(90款GPU和芯片)归纳的硬件类别 · 2026年9月20日
您的硬件推荐后端备注
NVIDIA GTX 10 至 RTX 50 系列,桌面版和笔记本版CUDA速度最快、测试最充分的方案。
AMD Radeon RX 7000 和 RX 9000ROCm(HIP)或 VulkanROCm 在能正常工作的情况下速度更快。Vulkan 安装起来很顺利,在 Windows 上也是如此。
AMD Radeon RX 6000 及更早型号Vulkan视显卡而定,ROCm 支持可能不完整,也可能完全不受支持。
Apple M1至M5Metal在macOS二进制文件中默认启用。可使用全部统一内存。
Intel或AMD集成GPU、Intel ArcVulkan 或 SYCL运行小模型时,相比仅使用 CPU,确实有性能提升。
无GPUCPU(AVX2、AVX-512、NEON)各种硬件上都能运行。建议选择参数量不超过 80 亿的模型。

#我们使用 llama.cpp 的测试数据

llama.cpp 是我们测试基准的参考引擎,正是因为它能在所有平台上以完全相同的方式运行。以下是 Llama 3.1 8B 在 Q4 时的生成速度,上下文长度为 2048 个 token,单次请求,启用了 Flash Attention。

实测 · QuelLLM 测试台,llama.cpp b4280,2026 年 4 月 18 日记录 · 完整表格见 Benchmarks 页面
机器内存Llama 3.1 8B Q4
RTX 509032 GB172 tok/s
RTX 409024 GB128 tok/s
RTX 407012 GB76 tok/s
Mac M3 Max64 GB 统一内存64 个 token/秒
RTX 306012 GB44 tok/s
Ryzen 7 7700,仅 CPU系统 RAM7.8 tok/s

可以得出两点结论。首先,RTX 3060 与仅使用 CPU 相比,性能相差五到六倍:即使是入门级显卡,也能改变使用体验。其次,在相同机器上使用 Ollama 或 LM Studio,这些数字也会基本相同,因为计算引擎是一样的。

#继续使用Ollama还是切换到llama.cpp?

如果……,继续使用 Ollama 或 LM Studio如果……,请切换到 llama.cpp
您希望与模型对话,而无需阅读文档。您的模型所需显存超过 VRAM 容量,且您希望精细调整模型在 GPU 和 CPU 之间的分配。
您经常切换模型,并且喜欢内置的模型库。您想测试本周刚发布的架构。
您的工具(Open WebUI、编辑器扩展)需要对接 Ollama 的 API。您要搭建一台长期使用的服务器,并希望掌控从上下文到KV缓存的每一项设置。

#十分钟即可启动

无需编译即可尝试。每个版本都会为 Windows、macOS 和 Linux 发布预编译二进制文件,包管理器会处理其余部分。以下命令将从 Hugging Face 下载一个小型模型并打开网页界面 http://localhost:8080.

先安装,再启动服务器
# macOS et Linux (Homebrew)
brew install llama.cpp

# Windows
winget install llama.cpp

# Télécharger un modèle et ouvrir l'interface web
llama-server -hf ggml-org/gemma-3-4b-it-GGUF -ngl 99 -c 8192

如果想使用模型目录中更强大的模型,请下载您选择的 GGUF 文件,并通过 -m 选项指定该文件。只有在需要启用特定后端或每天跟进开发进展时,从源码编译才有用。

#最常见的加载错误

使用 llama.cpp 时遇到的大多数阻碍可归结为三种原因:所需内存超出可用容量、GGUF 文件与已安装的构建版本不兼容,或选项名称拼写错误。命令行显示的错误信息几乎总能指出是哪一种原因,前提是把信息读完,而不是关闭后重新运行。

更改设置前先阅读消息内容
消息或症状可能原因值得尝试
cudaMalloc failed: out of memory模型加上所要求的上下文,所需显存超过了可用 VRAM减少 -c,让 --fit 自动调整 -ngl,或选择更轻量的量化方式
unknown model architectureGGUF 文件使用的架构比已安装的二进制程序所支持的架构更新更新至最新发布版本;新模型架构通常最先在 llama.cpp 中获得支持
尽管使用了新款 GPU,生成速度仍极慢并非所有层都加载到GPU上,通常因缺乏可用VRAM所致检查加载日志(含“offloaded”的行),关闭其他占用 GPU 的应用程序
error: invalid argument命令中拼写错误或重命名的选项与 llama-server --help 对比,该命令会列出最新的短别名和长别名

服务器启动时显示的那行加载信息,值得从头到尾完整读一遍:它会列出实际卸载到 GPU 的层数、实际生效的上下文长度,以及所用的 KV 缓存类型。这通常比随意添加选项、不断尝试直到能运行更快。也要留意已安装的版本:llama.cpp 非常频繁地发布每夜构建版本,针对您的显卡或模型的修复有时已经发布,却还没有包含在您上周安装的 Homebrew 或 winget 软件包中。

#FAQ

llama.cpp 比 Ollama 更快吗?+
在设置相同的情况下,并不会更快:Ollama 使用相同的计算引擎,因此生成速度非常接近。差异来自设置。llama.cpp 允许您精确选择放在 GPU 上的层数、上下文大小和缓存量化方式,因此有时能让整个模型装入 VRAM,而同一模型在 Ollama 中可能会部分留给 CPU 运行。
使用llama.cpp是否需要具备编译能力?+
否。每个版本都会为 Windows、macOS 和 Linux 发布预编译二进制文件,包也分别在 Homebrew(macOS、Linux)和 winget(Windows)中可用:只需一条安装命令即可完成,无需接触编译器。仅当需要启用官方二进制文件中缺失的特定后端、应用本地补丁或实时跟踪开发分支而非发布版本时,才需从源码编译。
可以在没有显卡的情况下使用llama.cpp吗?+
是的,这甚至就是它最初的用途:该项目原本就是为了仅用普通处理器运行模型,无需 GPU,也无需 Python。在我们的测试平台上,使用较新的处理器运行 Q4 量化的 8B 模型,生成速度约为每秒 8 个 token;虽然仍然较慢,但用于对话或摘要时,输出速度仍可供阅读。参数量超过 140 亿后,如果没有硬件加速,等待就会变得难熬。
llama.cpp与vLLM有何区别?+
llama.cpp 面向各种硬件配置的个人电脑,使用 GGUF 格式的量化模型。vLLM 面向并行处理大量请求的 GPU 服务器,使用 Hugging Face 模型权重。前者尽可能扩大您自己电脑上能运行的模型范围,后者则尽可能提高共享 GPU 的吞吐量。
在 Mac 上使用 llama.cpp 还是 MLX?+
两者都通过统一内存利用 Apple GPU。MLX 是 Apple 为自家芯片设计的库,在较新的模型上往往有速度优势;llama.cpp 的优势则是庞大的已量化 GGUF 文件库,以及对上下文和 KV 缓存更精细的设置。实际使用中,许多 Mac 用户会同时安装两者,并根据所需模型可用的格式来选择。

这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。