Skip to main content
PromptQuorum
主页/本地LLM进阶/llama.cpp详解:Ollama背后的推理引擎(2026)
Overview & Reference

llama.cpp详解:Ollama背后的推理引擎(2026)

·12分钟阅读·Hans Kuepper 作者 · PromptQuorum创始人,多模型AI调度工具 · PromptQuorum

**llama.cpp是一款免费、开源(MIT许可)的C/C++程序,用于在自己的CPU或GPU上本地运行大语言模型,由Georgi Gerganov创建,由GitHub上的ggml-org组织维护。** 它定义了如今在整个本地AI生态系统中使用的GGUF模型文件格式,支持从8位到约1.5位/权重的量化,包含针对CUDA、Metal、Vulkan、ROCm/HIP、SYCL以及CPU(AVX/AVX2/AVX512)的硬件加速后端,并内置名为llama-server的OpenAI兼容HTTP服务器。Ollama在大多数平台上使用llama.cpp作为其推理引擎,并在其之上添加了模型注册表、命令行界面和Modelfile打包系统——因此直接选择llama.cpp,意味着用Ollama的一键式便利,换取对构建选项、量化格式和服务器配置的直接掌控。

llama.cpp是由Georgi Gerganov创建、由GitHub上的ggml-org组织维护的免费、MIT许可的C/C++推理引擎,专为在CPU和GPU上以最少依赖本地运行大语言模型而设计。它定义了在整个本地AI生态系统中使用的GGUF模型格式,内置了名为llama-server的OpenAI兼容服务器,也是包括Ollama在内的多个本地AI工具在大多数平台上所依赖的推理引擎。

llama.cpp详解:Ollama背后的推理引擎(2026)

关键要点

  • 免费、MIT许可的开源软件,由GitHub上的ggml-org维护
  • 用C/C++编写,构建于ggml张量库之上
  • 定义了在整个本地AI生态系统中使用的GGUF模型文件格式(.gguf)
  • 硬件后端:CUDA、Metal、Vulkan、ROCm/HIP、SYCL和CPU(AVX/AVX2/AVX512)
  • 支持从8位到约1.5位/权重的量化
  • 内置llama-server,一个带Web界面的OpenAI兼容HTTP服务器
  • Ollama在大多数平台上以llama.cpp作为推理引擎,并添加了模型注册表和命令行界面
  • 没有图形安装程序——通过命令行、内置Web界面或各类语言绑定使用

📍 简单一句话

llama.cpp是Georgi Gerganov创建的免费、MIT许可的C/C++推理引擎,可在CPU或GPU上本地运行LLM,定义了GGUF模型格式,并作为包括Ollama在内的多个本地AI工具在大多数平台上所依赖的推理后端。

💬 简单来说

与点击式应用不同,llama.cpp是实际加载模型文件并生成文本的引擎代码本身——Ollama和其他许多本地AI应用在底层运行llama.cpp,并在其上叠加更友好的界面。

📌: 本文基于llama.cpp的官方GitHub仓库和公开文档撰写,并非独立基准测试。文中未包含具体的每秒token数数据,因为本文未对其进行独立测量,且该数值会因硬件、模型和量化格式而有很大差异。

llama.cpp是什么?

llama.cpp是一款免费、MIT许可的C/C++推理引擎,能以极少的外部依赖在本地运行大语言模型。它由Georgi Gerganov于2023年从零开始用C/C++重写Meta的LLaMA推理代码而创建,旨在普通消费级硬件——包括纯CPU设备——上运行,而无需数据中心级GPU。该项目现由GitHub上的ggml-org组织维护,得到庞大开源社区的贡献,如今除纯文本LLM外还支持视觉语言模型。

  • 由Georgi Gerganov创建,现由GitHub上的ggml-org组织维护
  • 用C/C++编写,构建于同一团队维护的张量库ggml之上
  • MIT许可:源代码根据许可条款公开,可供使用、修改和再分发
  • 既可在纯CPU硬件上运行,也可在GPU上运行,不同于必须依赖支持CUDA的GPU才能运行的引擎
  • 定义了GGUF格式,一种将模型权重、量化数据和元数据一并存储的单文件格式
  • 被引用最广泛的开源LLM推理项目之一,GitHub星标数远超10万

llama.cpp支持哪些硬件加速?

llama.cpp支持广泛的硬件加速后端,这也是它能从纯CPU笔记本电脑到多GPU工作站都能运行的原因之一。

CUDA

详情:
面向NVIDIA GPU。将模型层卸载到GPU显存,比纯CPU执行更快,并支持多GPU配置。

Metal

详情:
面向Apple Silicon Mac(M1及更新型号)。使用苹果的Metal API,在M系列芯片的GPU核心上运行推理。

Vulkan

详情:
一种跨厂商的GPU API,支持Windows和Linux,可在多家厂商的GPU上使用,无需特定厂商的SDK。

ROCm / HIP

详情:
面向AMD GPU,通过AMD的ROCm计算栈实现,是仅支持CUDA之外的替代方案。

SYCL

详情:
面向Intel GPU,包括部分Intel CPU的集成显卡,通过Intel的oneAPI SYCL实现。

CPU(AVX / AVX2 / AVX512)

详情:
在现代x86处理器上使用向量化指令进行优化的纯CPU执行——即便完全没有GPU,也能让llama.cpp运行的回退路径。

该项目还在其GitHub构建文档中记录了其他及实验性后端(包括BLAS、CANN和WebGPU);本节聚焦于大多数本地LLM用户实际会在其中做选择的后端。

什么是GGUF?应该选择哪种量化格式?

GGUF是llama.cpp定义的模型文件格式,用于将量化后的模型权重与运行所需的元数据(分词器、架构、上下文长度)一同存储,取代了该项目早期的GGML格式。量化通过以比原始训练格式更低的数值精度存储模型权重来缩小其内存占用,以牺牲部分输出质量换取更低的显存/内存占用和更快的推理速度。

Q8_0

详情:
8位量化,在llama.cpp常见格式中最接近未量化的原始模型,文件体积也是该组中最大的。

Q5_K_M

详情:
一种5位的"K-quant"格式,在模型各层之间不均匀地分配精度,更偏重质量而非最小文件体积。

Q4_K_M

详情:
一种常用作文件体积与输出质量平衡点的4位K-quant格式——在显存有限时的常见默认推荐。

4位以下(Q3、Q2及约1.5位格式)

详情:
用于将更大模型塞入极为有限内存的格式。随着位宽下降,质量损失会更明显,因此这些格式通常是不得已的选择,而非默认选项。

合适的格式取决于您的硬件和具体模型——本文未包含针对特定格式独立测量的质量损失百分比,因为这会因模型架构和任务而异。下载同一模型的多种量化版本,并在自己的提示词上比较输出,是评估该权衡最可靠的方法。

llama-server提供哪些功能?

llama-server是llama.cpp自带的HTTP服务器二进制程序。单一二进制文件即可提供llama.cpp自身的原生API、OpenAI兼容API、Ollama兼容的API垫片,以及内置的基于浏览器的聊天界面,全部基于同一加载模型和KV缓存运行。

  • /v1路径下的OpenAI兼容端点,让已针对OpenAI API构建的工具通常只需更改基础URL即可指向本地llama-server实例
  • 由二进制程序直接提供的内置Web界面,无需安装单独的前端即可使用
  • Ollama兼容的API垫片,让一些面向Ollama的客户端工具可以改为连接llama-server
  • /props和/slots等自省端点,用于查看服务器和请求状态
  • 支持针对同一加载模型的多个并发请求"槽位",而非一次只处理一个请求

如何构建和运行llama.cpp?

llama.cpp通常使用CMake从源码构建,不过如果您想跳过自行编译,该项目也在其GitHub发布页面上为多个平台提供了预构建的二进制文件。

  1. 1
    如果尚未安装,请为您的操作系统安装C++工具链和CMake。
  2. 2
    克隆仓库:git clone https://github.com/ggml-org/llama.cpp
  3. 3
    为您的硬件后端配置构建——例如将CUDA、Metal或Vulkan支持作为CMake选项启用,或保持纯CPU模式。
  4. 4
    使用CMake构建项目:先执行cmake -B build,再执行cmake --build build --config Release
  5. 5
    下载GGUF格式的模型,例如从Hugging Face,并选择适合您可用显存或内存的量化格式。
  6. 6
    使用llama-cli二进制程序在命令行中直接进行终端聊天,或启动llama-server以提供OpenAI兼容的HTTP API和Web界面。
  7. 7
    若使用llama-server,可通过浏览器连接其本地地址,或将任何兼容OpenAI API的客户端指向其/v1端点。

必须从源码构建llama.cpp吗?

不需要——该项目也在其GitHub发布页面为多个平台提供了预构建的二进制文件;不过从源码构建可以让您为自己的机器精确启用相应的硬件后端(如CUDA、Metal、Vulkan等)。

在哪里可以获取要运行的GGUF模型?

许多GGUF格式的模型发布在Hugging Face及其他模型分享网站上,通常每个模型都提供多种量化格式,以便您根据可用内存选择合适的一种。

llama.cpp与Ollama是什么关系?

Ollama是无需接触构建系统即可运行本地LLM的最常用方式之一,社区和第三方技术文章普遍报告称,它在大多数平台上以llama.cpp作为底层推理引擎。Ollama自身并未详细公开说明这一依赖关系,因此应将其视为被广泛报道的架构,而非官方规范,不过这与Ollama自身的开源代码是一致的。

  • llama.cpp是底层推理引擎;Ollama是在其之上添加模型注册表、一键拉取、更简单的命令行界面以及自有Modelfile配置系统的封装层
  • 直接选择llama.cpp可以掌控Ollama简化界面所不暴露的确切构建选项、量化格式和服务器配置
  • 选择Ollama则以牺牲部分底层引擎配置灵活性为代价,换取更快获得可运行模型的路径
  • 两者都可以提供OpenAI兼容API——llama.cpp通过llama-server,Ollama通过其自有的API层

谁适合直接使用llama.cpp?

llama.cpp适合那些希望直接掌控模型运行方式的人,而不是追求最快获得可用聊天窗口的人。

llama.cpp vs. Ollama vs. LM Studio vs. vLLM

这四款工具在"掌控度"与"便利性"这一光谱上处于不同位置,其中两款(Ollama,以及在Apple Silicon上围绕LM Studio的部分生态)本身就是构建在推理引擎之上的,而非从零打造的独立替代品。

llama.cpp

界面与配置:
命令行、内置Web界面,以及通过llama-server提供的OpenAI兼容API。用CMake从源码构建,或使用预构建发布版二进制文件;量化格式由您自行选择。
最适合场景:
追求最大掌控度、嵌入式/边缘部署,以及直接基于该引擎构建的定制流水线。

Ollama

界面与配置:
命令行和REST API,据普遍报道在大多数平台上以llama.cpp作为后端运行。一条命令即可安装;一条命令即可拉取并运行模型。
最适合场景:
对于不需要引擎级配置的用户,无需构建步骤即可最快运行本地模型。

LM Studio

界面与配置:
面向Mac、Windows和Linux的图形化桌面应用。下载、安装后即可在应用内浏览并下载模型。
最适合场景:
希望使用点击式聊天应用而非命令行的非技术用户。

vLLM

界面与配置:
带有OpenAI兼容API的Python服务器,通过pip安装于Python/CUDA环境中。使用自有的PagedAttention服务引擎,而非GGUF或llama.cpp。
最适合场景:
生产环境中的高吞吐量多用户GPU服务,而非单用户本地聊天。

本文并未对这四款工具的速度或输出质量进行独立基准测试,也不主张其中任何一款在技术上更优——上述对比仅涵盖有据可查的架构、配置和访问方式事实。如需按硬件划分的吞吐量数据,请参阅专门的llama.cpp vs. Ollama vs. vLLM对比文章,以及更深入介绍vLLM的企业级推理服务器指南

本文未涵盖哪些内容?

这是一篇基于llama.cpp公开文档和代码仓库撰写的解读文章,而非实测基准报告。

  • 未包含独立测量的每秒token数或延迟数据——吞吐量在很大程度上取决于您具体的硬件、模型、量化格式和构建选项
  • 未包含针对特定量化格式独立验证的质量损失百分比——这会因模型架构和任务而异
  • 未对llama.cpp代码库进行逐行安全审计——它是开源且MIT许可的,代码本身可供审查
  • 未涵盖llama.cpp支持的每一种后端或构建选项——本文聚焦于大多数本地LLM用户实际会在其中做选择的后端和格式
  • 未涵盖商业支持安排,因为llama.cpp是社区开源项目,而非附带支持合同的厂商产品

尝试llama.cpp时的常见错误

使用llama.cpp时的大多数困扰,都源于把它当作消费级应用,而非需要自行构建的引擎。

常见问题

llama.cpp是什么?

llama.cpp是Georgi Gerganov创建的免费、MIT许可的C/C++推理引擎,可在CPU或GPU上本地运行大语言模型,由GitHub上的ggml-org组织维护。

llama.cpp是免费的吗?

是的。llama.cpp是根据MIT许可发布的免费开源软件,无需订阅或账户。

什么是GGUF?

GGUF是llama.cpp定义的模型文件格式,用于将量化后的模型权重与运行所需的元数据(如分词器和架构细节)一并存储。它不仅被llama.cpp使用,也在本地AI生态系统的大部分领域中被采用。

Ollama使用llama.cpp吗?

社区和第三方技术文章普遍报告称,Ollama在大多数平台上以llama.cpp作为推理引擎,并在其上添加了自有的模型注册表、命令行界面和Modelfile系统。Ollama自身并未详细公开说明这一依赖关系。

llama.cpp支持哪些硬件?

llama.cpp既支持(带有AVX/AVX2/AVX512优化的)纯CPU执行,也支持通过CUDA(NVIDIA)、Metal(Apple Silicon)、Vulkan、ROCm/HIP(AMD)和SYCL(Intel)实现的GPU加速。

llama.cpp支持哪些量化格式?

llama.cpp支持从Q8_0等8位格式到约1.5位格式的量化,其中Q5_K_M和Q4_K_M等广泛使用的中间格式在文件体积与输出质量之间取得平衡。

使用llama.cpp需要懂C++吗?

不需要——通过llama-cli或llama-server二进制程序运行模型无需编写代码。从源码构建该项目需要C++工具链和CMake,但除非您想修改引擎本身,否则不需要自己编写C++代码。

llama.cpp有图形用户界面吗?

llama-server内置了基于浏览器的Web界面,但没有独立的图形安装程序或类似LM Studio的桌面应用。包括兼容Ollama和兼容OpenAI API的前端在内的多款第三方应用,可以改为连接llama-server。

llama.cpp比Ollama更好吗?

"更好"取决于您的需求:llama.cpp能更直接地掌控构建选项、量化和服务器配置,而Ollama能更快、更简单地让模型运行起来。本文并不主张其中一方在技术上更优;更多细节请参见上方对比表和专门的基准测试对比文章。

llama.cpp可以在没有GPU的情况下运行吗?

可以。除了在可用时支持GPU加速外,llama.cpp的设计还使其能够使用向量化指令(AVX/AVX2/AVX512)在纯CPU硬件上运行。

资料来源

← 返回 本地LLM进阶