llama.cpp
C++ · MIT
llama.cpp 是一个用 C/C++ 编写的轻量级 LLM 推理引擎,可在消费级硬件上高效运行各类开源大语言模型。
llm-inferencellamaggufcppon-device
查看项目 →
概览
llama.cpp(123k+ stars,MIT)是纯 C/C++ 的 LLM 推理引擎,无依赖、极致性能、支持所有 GGUF 模型,从树莓派到 GPU 集群都能跑;Ollama(177k+ stars,MIT)是 llama.cpp 的上层封装,提供 ollama run 一键体验 + Modelfile 自定义 + 模型库 + REST API。本文从抽象层级、性能优化、模型格式、易用性和典型场景五个角度对比。
| 适合场景 | llama.cpp | Ollama |
|---|---|---|
| 产品定位 | 纯 C/C++ LLM 推理引擎,零依赖。从底层 GGML 库到推理引擎全栈自研。目标是"最少的依赖、最广的硬件覆盖、最前沿的性能"。 | llama.cpp 的上层封装:一键 ollama run <model> 启动模型。提供 Modelfile + 模型库 + REST API。目标是"让每个人都能运行 LLM"。 |
| 性能优化 | 极致优化:ARM NEON / AVX / AVX2 / AVX512 / AMX / RISC-V。CUDA / ROCm / Vulkan / Metal / SYCL GPU 加速。1.5-8 bit 量化。CPU+GPU 混合推理。 | 继承 llama.cpp 底层优化,但默认配置偏保守。开箱即用,极限调优空间有限。 |
| 模型格式 | GGUF 格式的发明者。支持从 HuggingFace 转换任意模型为 GGUF(convert_hf_to_gguf.py)。大量预转换 GGUF 模型在 HuggingFace 上。 | 使用 GGUF 格式。内置模型库(llama3 / qwen / mistral 等),ollama pull <model> 自动下载。Modelfile 自定义模型配置。 |
| 易用性 | 需要编译或下载预编译二进制。命令行参数多(-m / -ngl / -t / -c 等)。需要自己找模型、处理路径。 | ollama run <model> 一行命令。自动下载模型 + 启动。REST API 默认 :11434。Open WebUI / AnythingLLM / LangChain 等直接对接。 |
| 典型场景 | 嵌入式 / 边缘设备 / 极致性能调优 / 自定义推理 pipeline / 需要底层控制的开发者。 | 个人 LLM 体验 / 开发调试 / 快速原型 / 桌面应用后端 / 不想折腾编译和参数的普通用户。 |
| Metric | llama.cpp | Ollama |
|---|---|---|
| Stars | 124.2k | 178.7k |
| Forks | 21.8k | 17.4k |
| 语言 | C++ | Go |
| 许可证 | MIT | MIT |
| 最近提交 | 2026年8月16日 | 2026年8月16日 |
建议根据你的主要工作流、技术栈语言和集成需求来选择。用于生产前,请进一步查看项目文档、社区活跃度和最近的 GitHub 维护情况。
是的。Ollama 使用 llama.cpp 作为推理后端,在此基础上封装了模型管理、REST API 和用户界面。两者是上下游关系。
理论上 llama.cpp 可以更快,因为你可以手动调优所有参数(GPU 层数、线程数、KV cache 等)。Ollama 默认配置偏保守,但大部分场景差距不大。
可以。两者都用 GGUF 格式。Ollama pull 下来的模型在 ~/.ollama/models/ 里,可以直接用 llama.cpp 加载。反之亦然。
看场景。Ollama 适合小流量(< 10 QPS)的内部工具和个人使用。llama.cpp 作为底层库嵌入自定义应用更灵活,适合需要精细控制的场景。