纯 C/C++ 实现的跨平台大语言模型推理框架,通过自研 GGUF 格式与多硬件后端支持,实现从边缘设备到云端的极简部署与高性能量化推理。
项目概述#
llama.cpp 是由 ggml-org 维护的纯 C/C++ 实现跨平台大语言模型推理框架,聚焦于推理执行与格式转换,不涉及模型训练。通过自研 GGUF 模型格式与广泛的硬件后端支持,实现从边缘设备到云端的高性能量化推理部署。
核心能力#
硬件与后端适配#
- Apple Silicon:Metal 框架一等公民支持,结合 ARM NEON 与 Accelerate
- 主流 GPU:NVIDIA (CUDA 自定义内核)、AMD (HIP)、Intel/NVIDIA (SYCL)、通用 GPU (Vulkan)、Adreno (OpenCL)
- 国产/特定算力:摩尔线程 (MUSA)、昇腾 (CANN)
- CPU 多路线:BLAS / BLIS / ZenDNN / IBM zDNN 等
- 演进中后端:OpenVINO (Intel)、WebGPU、Hexagon (Snapdragon)(标注为 In Progress)
推理优化#
- 量化支持:涵盖 1.5-bit 至 8-bit 整数量化,大幅降低内存占用
- 异构混合推理:模型体积大于 VRAM 时,支持部分层卸载至 GPU 加速
- 推测解码:服务端支持 Speculative Decoding
模型格式与服务#
- GGUF 格式:自研模型存储格式,支持从 HuggingFace 等主流格式转换
- OpenAI 兼容 API:
llama-server提供/v1/chat/completions等标准接口,支持多用户并行 - 多模态推理:已集成视觉-语言多模态支持(如 HunyuanVL)
- 向量与排序:可作为 Embedding 与 Reranking 服务端点
- 格式约束:通过 GBNF 语法定义输出结构(如 JSON Schema)
典型应用场景#
| 场景 | 说明 |
|---|---|
| 本地 LLM 推理 | 在笔记本/桌面端运行量化 LLM,无需 GPU 服务器 |
| OpenAI 兼容 API 服务 | 快速搭建本地 ChatGPT 兼容接口,对接现有应用 |
| 边缘设备推理 | Android、iOS、Snapdragon 等移动/嵌入式端部署 |
| 模型评估与基准测试 | llama-perplexity 测困惑度,llama-bench 做性能基准 |
| 模型量化与格式转换 | 将 HuggingFace 模型转为 GGUF 格式 |
| 开发者集成 | 提供 C/C++ 库、XCFramework 预编译库、Python 绑定 |
架构设计#
- 底层计算核心:基于
ggml张量运算库,llama.cpp 为其主要试验场 - 核心 API 层:
libllama封装推理逻辑;libllama-common提供公共工具 - 服务端:
llama-server采用单头文件 HTTP 库cpp-httplib实现 - 多模态子系统:图像解码 (
stb-image)、音频解码 (miniaudio.h)、JSON 解析 (nlohmann/json),均通过单头文件内聚 - 格式转换管线:
convert_*.py脚本群与gguf-py工具包协同 - 构建体系:全面采用 CMake + CMakePresets,GitHub Actions 多平台自动化测试
安装与使用#
安装方式:brew / nix / winget 包管理器、Docker 容器、预编译二进制下载、CMake 源码编译
快速命令:
llama-cli -m my_model.gguf
llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
llama-server -hf ggml-org/gemma-3-1b-it-GGUF
核心工具集:
llama-cli:主交互工具,对话/补全/实验llama-server:OpenAI 兼容 HTTP 服务器,默认端口 8080llama-perplexity:困惑度及质量指标测量llama-bench:推理性能基准测试llama-simple:极简示例供开发者参考
开发者体验#
- IDE 集成:VS Code 扩展及 Vim/Neovim 插件,支持指令补全 (FIM)
- 多语言绑定:原生 C/C++ 库 + Python 绑定 + Apple XCFramework 预编译包
- Swift 集成:通过 XCFramework 二进制包引入,无需从源码编译