项目快照:ggml-org/llama.cpp,约 124,130 个 Star,21,765 个 Fork;最新推送时间 2026-08-16T12:54:19Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/ggml-org/llama.cpp · https://llama.app

项目速览(TL;DR)
llama.cpp 是一个使用 C/C++ 实现的大语言模型推理项目,仓库描述为 “LLM inference in C/C++”。它构建在 ggml 之上,目标是在本地和云环境中,以较少的部署准备完成大语言模型(Large Language Model,LLM)与视觉语言模型(Vision-Language Model,VLM)推理。
根据提供的 GitHub 元信息,项目当前默认分支为 master,主要语言为 C++,许可证为 MIT,Star 数为 124130,Fork 数为 21765。仓库资料没有提供统一的发布版本号、固定端口、服务级别协议(SLA)或性能基准,因此这些内容不在本文中补充推断。
- 核心定位:面向多种硬件后端的 LLM/VLM 推理实现。
- 主要入口:
llama cli用于命令行推理,llama serve用于启动兼容 OpenAI API 的服务端。 - 模型获取:README 展示了通过
-hf参数从 Hugging Face 获取模型的示例。 - 部署方式:官方资料列出官网安装、Docker、预编译二进制和源码构建四种路径。
- 许可证边界:LICENSE 明确采用 MIT License,分发时需要保留版权声明和许可声明。
定位与目标用户
本项目的价值集中在“推理运行时”和“跨硬件后端适配”,而不是提供某个特定模型的训练平台。README 明确列出 CPU、Apple Silicon、NVIDIA GPU、AMD GPU、Intel GPU、Vulkan、WebGPU、RISC-V 等目标环境,因此选型时应先确认硬件、模型格式和所需后端是否与实际部署条件匹配。
它适合需要在本地设备或自有服务器上运行模型的工程团队,也适合希望以 C/C++ 方式集成推理能力的应用。对于只需要调用远程模型服务、且不打算管理模型文件、硬件后端和本地进程的团队,仓库资料没有表明它能直接替代已有的远程服务方案。
目标问题
- 在不引入大量外部运行时依赖的前提下运行 LLM 或 VLM。
- 通过量化降低模型内存占用,并使用相应硬件后端执行推理。
- 在 GPU 显存不足以容纳完整模型时,通过 CPU 与 GPU 混合推理处理更大的模型。
- 以命令行方式执行交互或批处理推理,或者通过服务端提供 HTTP API。
核心功能
核心功能不是简单的模型文件读取,而是由模型转换、量化、后端执行和对外入口共同组成。以下说明均以 README、项目文档索引和 pyproject.toml 中提供的内容为依据;资料没有公开完整的内部调用链或所有接口签名。
命令行推理
llama cli 是 README 给出的命令行入口。示例中的 -hf 参数指定 ggml-org/Qwen3.5-0.8B-GGUF,命令启动后由 CLI 获取并运行该模型;输入输出格式、交互选项、上下文参数和完整参数表应以仓库中的 cli 工具文档为准。
README 还展示了 VLM 会话,因此命令行入口不只面向纯文本模型。资料没有提供多模态输入的完整命令行签名,也没有提供图像文件大小、输入编码格式或具体模型兼容矩阵,部署前应先核对对应模型文档。
兼容 OpenAI API 的服务端
llama serve 用于启动 OpenAI 兼容 API 服务端。README 的最小示例同样通过 -hf 指定模型,服务端还包含内置 Web UI;项目文档索引将服务端文档指向 server 工具文档。
该能力的输入是模型标识及服务请求,输出是服务端返回的推理结果。README 没有在所给资料中列出监听地址、端口、认证配置、请求字段、响应字段或并发参数,因此本文不虚构 REST API 请求示例,也不把 OpenAI 兼容表述扩大为完全一致的 API 行为。
量化推理
README 列出 1.5-bit、2-bit、3-bit、4-bit、5-bit、6-bit 和 8-bit 整数量化。量化的直接用途是降低模型内存使用并提升推理效率,但具体压缩比例、精度变化和吞吐数据没有出现在提供的资料中,不能据此推导统一的性能结论。
仓库的 Python 脚本包中包含 Hugging Face 模型转换、LoRA 转换和旧版 llama-ggml 到 GGUF 的转换命令。这说明模型准备阶段与运行阶段存在分工:脚本负责转换或生成模型文件,C/C++ 运行时负责加载并执行推理;具体转换参数仍需查看对应脚本文档。
硬件后端
项目通过后端抽象把计算任务映射到不同设备。README 列出的后端包括 BLAS、BLIS、CANN、CUDA、HIP、MUSA、Metal、OpenCL、OpenVINO、RPC、SYCL、VirtGPU、Vulkan、WebGPU 和 ZenDNN;其中部分条目明确标注为 “In Progress”,不能视为完成度相同的稳定能力。
CPU 侧提供 x86 的 AVX、AVX2、AVX512、AMX 支持,Apple Silicon 使用 ARM NEON、Accelerate 和 Metal,RISC-V 则列出 RVV、ZVFH、ZFH、ZICBOP 和 ZIHINTPAUSE。启用哪一种后端取决于目标硬件与构建方式,README 只在对应构建文档中提供分项说明,未给出一条适用于全部平台的统一构建命令。
系统架构与关键模块
从仓库资料能够确认的架构边界是:llama.cpp 位于应用入口和底层张量计算库之间,底层基础由 ggml 提供,模型转换脚本与 C/C++ 推理程序分别承担模型准备和运行职责。下面的模块关系是对仓库资料的结构化归纳;未在资料中明确的内部类名、调用顺序和 ABI 细节不作断言。
模型准备层
- Hugging Face 转换:
llama-convert-hf-to-gguf对应convert_hf_to_gguf:main,用于将 Hugging Face 模型转换到 GGUF 相关流程。 - LoRA 转换:
llama-convert-lora-to-gguf对应convert_lora_to_gguf:main,用于 LoRA 数据转换。 - 旧格式转换:
llama-convert-llama-ggml-to-gguf对应convert_llama_ggml_to_gguf:main。 - 着色器生成:
llama-ggml-vk-generate-shaders对应ggml_vk_generate_shaders:main,服务于 Vulkan 相关流程。
这些脚本来自 pyproject.toml 的项目脚本声明。资料没有说明每个脚本支持的模型列表、输入输出路径参数和错误处理方式,因此使用时应以脚本自身帮助信息及仓库文档为准。
推理与计算层
ggml 为项目提供底层计算基础,llama.cpp 则围绕模型推理、量化、命令行和服务端入口组织运行能力。CPU、GPU 或其他加速设备的具体计算路径由构建时启用的后端决定;当使用 CPU+GPU 混合推理时,README 说明其用途是部分加速超过总显存容量的模型。
应用入口层
命令行入口面向本地直接运行,服务端入口面向进程内或局域网环境中的应用调用。README 还列出 GBNF grammar 工具文档,这表明仓库包含对语法约束相关能力的文档入口,但所给资料没有提供 grammar 文件格式、命令参数或约束结果示例。
依赖与运行环境
运行时的主要实现语言是 C++,README 将项目描述为不依赖外部依赖的纯 C/C++ 实现;与此同时,仓库还包含用于模型转换和辅助工作的 Python 脚本包。这里需要区分“核心 C/C++ 推理程序的依赖描述”和“Python 脚本包的开发依赖”,两者不能混为一谈。
核心运行环境
- 项目主要语言:C++。
- 底层计算库:ggml。
- 可选硬件后端:以 README 的 Supported backends 表为准。
- 安装方式:官网、Docker、预编译二进制或源码构建。
- 模型示例:
ggml-org/Qwen3.5-0.8B-GGUF。
Python 脚本包环境
根据 pyproject.toml,项目名为 llama-cpp-scripts,要求 Python >=3.10,<3.15。依赖包括 NumPy、SentencePiece、Transformers、Protobuf、PyTorch,以及仓库本地路径的 gguf-py;资料还给出了 Poetry 和 uv 对 PyTorch 源的配置。
README 没有要求运行 llama cli 或 llama serve 前必须安装上述全部 Python 依赖。根据本文作者的经验判断,模型转换和推理运行应分别建立验证步骤,避免将脚本环境问题误判为 C++ 后端问题;这一判断不等同于仓库的官方部署要求。
快速开始
最小闭环可以分为安装、运行和验证三步。资料明确提供了运行命令,但没有给出源码构建命令、预编译包文件名或 Docker 完整命令,因此安装步骤采用官方入口描述,不添加未经资料确认的参数。
第一步:安装
- 访问 llama.app 官网安装说明,按页面指引完成安装。
- 或者从 GitHub Releases 页面下载预编译二进制。
- 如果需要自行编译,克隆仓库并查阅 源码构建指南。
资料没有提供构建工具版本、平台专用开关或安装目录,因此不在这里写出固定的 cmake、编译器或安装路径命令。若通过 Docker 安装,应查阅仓库的 Docker 文档。
第二步:运行命令行推理
llama cli -hf ggml-org/Qwen3.5-0.8B-GGUF该命令来自 README 的 Quick start。-hf 后面的值是 README 给出的模型标识;它不是 API 密钥,也不需要在命令中填入私有凭据。模型下载、缓存位置和网络代理配置未在所给资料中提供。
第三步:启动本地服务并验证
llama serve -hf ggml-org/Qwen3.5-0.8B-GGUF该命令来自 README,用于启动 OpenAI 兼容 API 服务端。验证时可先观察进程是否成功加载模型,并使用仓库服务端文档中定义的接口进行测试;由于资料没有给出端口和请求签名,本文不写未经核实的 curl URL。
README 还说明服务端带有内置 Web UI。浏览器访问地址、绑定地址和端口均未在提供的资料中列出,不能把某个默认端口作为事实使用;应以程序启动输出和最新服务端文档为准。
配置说明
提供的资料没有包含独立的运行时配置样例、环境变量文件或服务端配置文件。下面的表格整理的是 pyproject.toml 中真实存在的项目配置项,适用于 Python 脚本包,不代表 llama cli 或 llama serve 的完整运行时配置。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
project.name |
字符串 | llama-cpp-scripts |
定义 Python 项目名称。 |
project.version |
字符串 | 0.0.0 |
定义脚本包版本。 |
project.requires-python |
版本约束字符串 | >=3.10,<3.15 |
限制 Python 解释器版本范围。 |
project.dependencies |
依赖列表 | 未提供单一默认值 | 声明 NumPy、SentencePiece、Transformers、Protobuf、PyTorch 和本地 gguf-py 依赖。 |
project.urls.homepage |
URL 字符串 | https://ggml.ai |
声明项目主页。 |
project.urls.repository |
URL 字符串 | https://github.com/ggml-org/llama.cpp |
声明代码仓库地址。 |
tool.poetry.group.dev.dependencies.pytest |
版本约束字符串 | ~=8.3.3 |
声明开发环境中的 pytest 依赖。 |
build-system.build-backend |
字符串 | poetry.core.masonry.api |
声明 Python 包构建后端。 |
torch 在 Poetry 配置中按操作系统分别指定为 macOS 和 Windows 的 ==2.11.0,Linux 使用 PyTorch CPU 源中的 ==2.11.0+cpu;这些值是脚本包配置的一部分。核心推理程序的命令行选项、服务端监听端口和认证字段,官方仓库未提供该信息,建议以最新 README 和服务端文档为准。
进阶用法
进阶使用的重点是根据模型来源、硬件后端和调用方式选择正确的构建与工具链,而不是盲目增加启动参数。仓库文档索引已经按构建、Docker、Android、多 GPU、性能排查、模型和发布流程进行了拆分。
从源码构建
需要定制后端、集成 C/C++ 应用或审查构建产物时,可以使用源码构建路径。具体编译器、构建系统选项和各后端开关应直接参考 How to build 文档,因为提供的 README 只说明“通过克隆仓库构建”,没有给出完整命令。
选择后端
使用 NVIDIA GPU 时,README 将 CUDA 列为对应后端;AMD GPU 可查看 HIP,Apple Silicon 可查看 Metal,Intel GPU 可查看 SYCL,通用 GPU 路径还包括 Vulkan。后端的选择会影响编译配置、设备可用性和模型分配方式,不能仅凭运行机器安装了某个驱动就断定对应后端已经启用。
多 GPU 与混合推理
仓库提供多 GPU 文档,并明确支持 CPU+GPU 混合推理。其使用场景是模型规模超过总显存容量时,将部分计算或模型内容放到 CPU 与 GPU 共同执行;资料没有提供层分配参数、设备编号语法和可复现性能数据,因此具体操作必须以 Multi-GPU 文档为准。
模型转换与量化
当模型来源不是 README 示例中的 GGUF 标识时,需要确认模型是否已经处于运行时可接受的格式,或者使用仓库提供的转换脚本。Python 脚本包声明了 Hugging Face、LoRA 和旧 llama-ggml 格式转换入口,但没有提供统一的输入输出示例;执行前应使用脚本帮助信息确认参数。
可观测性与运维
提供的资料没有定义指标名称、日志格式、健康检查接口、追踪协议、告警规则或 SLA。能够确认的运维入口是命令行、服务端、Docker 文档、性能排查文档和构建工作流状态,因此生产化运行前需要由部署方补齐进程管理、日志采集和容量评估方案。
运行检查清单
- 记录实际使用的仓库提交、构建选项和启用的后端;资料只给出默认分支为
master,没有提供固定提交号。 - 确认模型标识或模型文件来源,并保留转换和量化步骤的记录。
- 验证 CPU、GPU、NPU 或其他目标设备是否被构建产物识别。
- 对命令行推理与服务端请求分别进行功能验证,不以进程启动成功代替生成结果验证。
- 根据真实请求量测试内存、显存、延迟和错误恢复;资料未提供这些指标的基线。
性能问题定位
README 将性能排查文档列为开发文档的一部分,并另外提供 GGML 技巧和编译时间页面。出现速度或资源问题时,应先确认后端是否按预期构建,再核查模型格式、量化方式和 CPU/GPU 分工;“ state-of-the-art performance”是 README 的项目描述,不能当作特定硬件上的承诺。
安全与合规边界
llama.cpp 本身是本地或服务端模型推理软件,资料没有显示它提供账号自动化、渗透、支付或绕过安全检测能力。安全重点在于模型输入输出、服务端暴露范围、模型文件来源和运行环境隔离,部署方仍需对实际应用场景承担授权与合规责任。
- 授权边界:服务端只能开放给已获授权的调用方;不能将未鉴权的推理接口暴露到不受控网络。
- 隐私边界:涉及个人信息、内部文档或敏感业务数据时,应先完成数据分类、访问控制和留存策略评估。仓库资料没有提供隐私保护、数据脱敏或审计功能说明。
- 模型来源:使用 Hugging Face 模型时,应核对模型自身许可证、使用限制和来源可信度;MIT 许可证只覆盖本项目,不自动覆盖模型权利。
- 隔离边界:服务进程、模型文件和转换脚本应在符合组织安全要求的账户与目录中运行。资料没有提供沙箱、容器安全基线或权限模板。
- 输出边界:模型生成内容应经过业务侧校验,不能仅因服务端启动成功就把生成结果视为事实或合规结论。
上述授权、隐私和隔离要求是部署安全边界,不是仓库宣称的内置功能。对于受监管行业、跨境数据或高敏感数据场景,需结合组织内部制度与适用法律进行单独评估。
许可证与商用条款
根据 LICENSE,项目采用 MIT License,版权声明为 “Copyright (c) 2023-2026 The ggml authors”。MIT License 授予获得软件及相关文档副本的人员使用、复制、修改、合并、发布、分发、再许可和销售副本的许可,具体权利与条件以仓库 LICENSE 原文为准。
分发软件或其重要部分时,必须在所有副本或实质性部分中保留版权声明和许可声明。许可证同时以 “AS IS” 方式提供软件,不提供明示或默示担保,作者在许可证规定范围内不承担相关损害责任。
- 可以在遵守 MIT License 条件的前提下用于商业场景。
- 再分发时需要保留版权声明与许可声明。
- 项目许可证不等于模型许可证,也不覆盖第三方模型、权重或数据集的权利。
- 仓库 README 列出若干第三方单头文件及其许可证,集成和再分发时还应核对相应第三方声明。
本文不对具体商业产品的法律风险作结论;涉及组合分发、模型权重、商标或专利事项时,以仓库 LICENSE、第三方许可证和专业法律意见为准。
局限性与已知限制
限制信息主要来自资料的缺口和 README 对部分后端的状态标记。以下内容不是对项目质量的否定,而是部署决策时必须显式验证的边界。
- 官方提供的资料没有统一说明所有模型架构、模型格式和多模态输入的兼容范围。
- Hexagon 和 OpenVINO 在支持后端表中标注为 “In Progress”,相关能力不应在未验证前视为完整稳定能力。
- 没有提供统一的硬件性能基准、内存占用表、吞吐数据或延迟保证。
- 没有提供固定服务端端口、认证机制、租户隔离和权限管理配置。
- 源码构建的完整命令、编译器最低版本和各平台安装包细节未出现在所给资料中。
- Python 脚本包依赖较多,且 PyTorch 在不同平台使用不同版本表达和源配置;这只影响脚本包环境,不应直接推断为 C++ 运行时要求。
如果实际需求包含严格并发、低延迟、长时间稳定运行或强审计,应该在目标硬件、目标模型和目标请求模式下建立独立验收基线。仓库资料未提供 SLA 或生产支持承诺。
适合谁
以下信号同时出现时,llama.cpp 的技术方向与需求较为匹配。判断依据是仓库明确列出的本地推理、C/C++、量化和多后端能力。
- 团队需要在本地工作站、边缘设备或自有服务器中运行 LLM/VLM,而不是只调用远程模型接口。
- 已有 C 或 C++ 应用,希望在原生程序中集成推理运行时,或需要控制编译后端。
- 部署硬件包含 Apple Silicon、x86 CPU、NVIDIA GPU、AMD GPU、Intel GPU、Vulkan 设备或 README 列出的其他后端。
- 模型内存占用是明确约束,需要评估 1.5-bit 至 8-bit 整数量化方案。
- 显存不足以容纳完整模型,并且业务可以接受 CPU+GPU 混合推理带来的资源分配复杂度。
不适合谁
出现以下信号时,应谨慎选择或先完成概念验证。这里不对资料之外的替代产品作推荐,只说明与项目边界的匹配问题。
- 团队只需要稳定调用远程推理 API,不希望管理模型文件、硬件后端、编译产物和服务进程。
- 项目要求仓库已经提供完整的多租户认证、权限模型、审计日志、健康检查和 SLA,而当前资料没有这些承诺。
- 目标平台依赖 README 标注为 “In Progress” 的后端,且业务没有时间进行源码和硬件验证。
- 合规要求规定模型数据不能进入缺少组织级隔离与审计的本地进程,而部署方又无法补齐这些控制措施。
- 团队需要公开、可复现的统一性能指标,却没有资源在目标模型和硬件上自行建立基准。
常见问题与排查(FAQ / Troubleshooting)
排查顺序应从安装产物、模型来源、后端构建和服务接口四个层面展开。由于资料没有提供全部参数和错误码,遇到具体错误时应优先使用仓库最新文档和程序自身帮助信息。
Q:必须从源码编译吗
A:不是。README 列出官网安装、Docker、预编译二进制和源码构建四种方式。若需要定制硬件后端或集成源码,再查阅源码构建指南;构建命令和编译选项以该文档为准。
Q:如何运行 README 中的模型
A:安装完成后执行 llama cli -hf ggml-org/Qwen3.5-0.8B-GGUF,或者执行 llama serve -hf ggml-org/Qwen3.5-0.8B-GGUF 启动服务端。模型下载位置、缓存规则和网络失败处理没有在提供的资料中说明。
Q:为什么 GPU 没有被使用
A:先核对目标后端是否按照构建指南启用,再检查运行时设备识别信息和模型分配情况。README 只确认存在 CUDA、HIP、Metal、Vulkan、SYCL 等后端,不提供一条跨平台的诊断命令,因此不能给出统一命令作为排查结论。
Q:服务端端口是多少
A:提供的 README 片段没有列出默认端口或监听地址。不要根据未核实的示例访问固定端口,应查看服务端文档和启动日志;官方仓库未提供该信息,建议以最新 README 为准。
Q:Python 依赖是否是运行 CLI 的必需依赖
A:资料只能确认 pyproject.toml 定义了 llama-cpp-scripts 脚本包及其依赖,不能据此确认 C++ CLI 运行必须安装全部 Python 包。模型转换脚本使用哪些依赖,应以脚本调用路径和包文档为准。
Q:如何确认量化后的模型是否满足业务精度
A:仓库资料列出多种量化位宽,但没有提供统一精度基准或业务验收阈值。应使用目标模型、目标提示词和业务测试集进行对照验证,并记录量化方案、硬件后端和运行参数。
第三方组件与依赖声明
README 的致谢部分列出了若干第三方组件及许可证,集成分发时应将这些组件视为独立的合规检查对象。项目自身的 MIT License 不会自动替代第三方组件的许可证文本。
| 组件 | 用途 | README 标注许可证 |
|---|---|---|
| cpp-httplib | 由 llama-server 使用的单头文件 HTTP 服务器 | MIT |
| stb-image | 多模态子系统使用的单头文件图像格式解码器 | Public domain |
| nlohmann/json | 多个工具和示例使用的单头文件 JSON 库 | MIT |
| miniaudio.h | 多模态子系统使用的单头文件音频格式解码器 | Public domain |
| subprocess.h | C/C++ 单头文件进程启动方案 | Public domain |
项目维护与贡献方式
README 说明贡献者可以提交 Pull Request,协作者将根据贡献情况受邀加入,维护者可以在仓库中推送分支并合并 Pull Request。默认分支为 master,但这不代表所有贡献都应直接面向默认分支操作。
参与开发前应阅读仓库中的 CONTRIBUTING.md 贡献指南。README 还提供维护者 Pull Request、编译时间、lib llama API 和 llama-server REST API 等入口,适合按具体问题继续追踪。
引用与关键结论
README 对项目目标的表述集中体现了其设计方向:减少推理部署准备,同时覆盖较宽的硬件范围。下面保留原文关键描述,并注明出处。
“The main goal of
来源:READMEllama.cppis to enable LLM (and VLM) inference with minimal setup and state-of-the-art performance on a wide range of hardware - locally and in the cloud.”
其中“minimal setup”和“wide range of hardware”属于项目目标描述,不是针对所有硬件、所有模型和所有部署规模的性能或运维保证。具体选型仍需依据目标设备、模型文件、后端状态和业务验收标准进行验证。
项目地址与资源
以下链接均来自项目资料或 README 中列出的官方资源,可用于获取代码、安装说明、构建文档和后端资料。



