Loading...

文章背景图

llama.cpp:纯C/C++本地大模型推理引擎安装与使用指南

2026-10-28
1
- 字
- 分钟
|

llama.cpp:纯C/C++本地大模型推理引擎安装与使用指南

一、官方信息

项目名称llama.cpp
仓库地址https://github.com/ggerganov/llama.cpp
官方网站GitHub 主页(无独立官网)
最新更新持续高频迭代(2026-10-28)
Star 数8万+(GitHub 最热门的本地推理项目之一)
项目定位纯 C/C++ 实现的 LLaMA 及衍生模型本地推理框架,CPU/GPU 全平台跑量化模型

二、项目背景

llama.cpp 由 Georgi Gerganov(简称 ggerganov)于 2023 年 3 月开源,初衷是用纯 C/C++ 复现 Meta 发布的 LLaMA 推理过程,让开发者在没有高端 GPU 的笔记本电脑上也能跑起大语言模型。它不依赖 PyTorch、CUDA 等重型框架,仅凭一块普通 CPU 就能完成推理,开启了"个人本地跑大模型"的浪潮。

经过三年多发展,llama.cpp 已经支持 LLaMA、Qwen、DeepSeek、Mistral、Gemma、Phi、Yi、Baichuan、ChatGLM、GLM-4 等几乎所有主流开源模型,并衍生出 GGUF 量化格式、llama-server 本地 OpenAI 兼容 API、llama-bench 性能测试工具等完整生态。Ollama、LM Studio、LocalAI 等知名项目底层都调用了 llama.cpp。

三、核心特性

  • 极致轻量化:纯 C/C++ 编写,无 Python 依赖,单二进制文件即可运行,内存占用极低。
  • GGUF 量化格式:原生支持 Q4_K_M、Q5_K_M、Q8_0 等多种量化精度,7B 模型 4-bit 量化后仅需 4GB 内存即可运行。
  • 全平台支持:Linux、macOS、Windows、Android、iOS、Raspberry Pi、WebAssembly 均可运行。
  • 多后端加速:支持 CPU、CUDA、Metal(Apple Silicon)、Vulkan、ROCm、Hexagon 等多种推理后端自动切换。
  • OpenAI 兼容服务:内置 llama-server,一键启动后即提供 /v1/chat/completions 接口,可直接对接 NextChat、Open-WebUI 等前端。
  • 工具调用 / 函数调用:原生支持 Function Calling、JSON Schema 输出、Grammar 约束解码。
  • 活跃社区:GitHub 8 万+ Star,每天合并大量 PR,新模型适配速度极快。

四、环境要求

  • 操作系统:Ubuntu 20.04+ / Debian 11+ / CentOS 8+ / macOS 12+ / Windows 10+(推荐 Linux)
  • CPU:支持 AVX2 指令集的 x86_64 处理器(Apple Silicon M1/M2/M3/M4 原生支持)
  • 内存:7B Q4 模型 ≥ 8GB;14B Q4 ≥ 12GB;70B Q4 ≥ 40GB
  • GPU(可选):NVIDIA 显卡 ≥ 4GB 显存(CUDA 11.7+);Apple Silicon 统一内存自动利用
  • 编译依赖:CMake ≥ 3.14、gcc/g++ ≥ 11、Git;如启用 CUDA 需安装 CUDA Toolkit

五、详细部署步骤

方式一:预编译二进制(最快,推荐新手)

官方在 GitHub Releases 提供了各平台预编译包,无需编译,下载即用:

# 1. 访问 Releases 页面
# https://github.com/ggerganov/llama.cpp/releases

# 2. 下载对应平台包(以 Linux x64 为例)
wget https://github.com/ggerganov/llama.cpp/releases/latest/download/llama-bXXXX-bin-ubuntu-x64.zip
unzip llama-bXXXX-bin-ubuntu-x64.zip -d llama.cpp
cd llama.cpp

# 3. 验证版本
./llama-cli --version

方式二:Docker 部署(最省心)

# 1. 拉取官方镜像(CPU 版)
docker pull ghcr.io/ggml-org/llama.cpp:latest

# 2. 准备模型目录
mkdir -p ~/models
# 把下载好的 GGUF 模型放到 ~/models 目录

# 3. 启动 OpenAI 兼容 API 服务
docker run -d \
  --name llama-server \
  -p 8080:8080 \
  -v ~/models:/models \
  ghcr.io/ggml-org/llama.cpp:latest \
  -m /models/qwen2.5-7b-instruct-q4_k_m.gguf \
  --host 0.0.0.0 \
  --port 8080 \
  -c 4096 \
  -ngl 99

# 4. 查看日志
docker logs -f llama-server

方式三:源码编译(性能最佳,推荐生产)

# 1. 安装编译依赖(Ubuntu/Debian)
sudo apt update
sudo apt install -y build-essential cmake git libcurl4-openssl-dev

# 2. 克隆源码(--recursive 拉取子模块)
git clone --recursive https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

# 3a. CPU 版本编译
cmake -B build
cmake --build build --config Release -j $(nproc)

# 3b. 启用 CUDA 加速(NVIDIA 显卡用户)
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="native"
cmake --build build --config Release -j $(nproc)

# 3c. 启用 Metal 加速(macOS Apple Silicon 用户)
cmake -B build -DGGML_METAL=ON
cmake --build build --config Release -j $(sysctl -n hw.ncpu)

# 4. 编译产物位于 build/bin/ 目录
ls build/bin/
# 关键可执行文件:
#   llama-cli       命令行对话
#   llama-server    HTTP API 服务
#   llama-bench     性能测试
#   llama-quantize  模型量化工具
#   llama-convert-hf-to-gguf  HuggingFace 模型转 GGUF

下载模型(GGUF 格式)

# 推荐从 ModelScope(国内快)或 HuggingFace 下载
# 以 Qwen2.5-7B-Instruct Q4_K_M 为例

# 方法 A:直接 wget
mkdir -p models
wget -O models/qwen2.5-7b-instruct-q4_k_m.gguf \
  "https://modelscope.cn/models/Qwen/Qwen2.5-7B-Instruct-GGUF/resolve/master/qwen2.5-7b-instruct-q4_k_m.gguf"

# 方法 B:使用 huggingface-cli
pip install -U huggingface_hub
huggingface-cli download Qwen/Qwen2.5-7B-Instruct-GGUF \
  qwen2.5-7b-instruct-q4_k_m.gguf \
  --local-dir ./models

启动命令行对话

./build/bin/llama-cli \
  -m ./models/qwen2.5-7b-instruct-q4_k_m.gguf \
  -p "你是谁?请用中文介绍自己。" \
  -n 512 \
  --interactive \
  -c 4096 \
  -ngl 99          # 把所有层offload到GPU;纯CPU则去掉此参数

启动 HTTP API 服务(推荐生产使用)

./build/bin/llama-server \
  -m ./models/qwen2.5-7b-instruct-q4_k_m.gguf \
  --host 0.0.0.0 \
  --port 8080 \
  -c 8192 \          # 上下文长度
  -ngl 99 \          # GPU offload 层数
  --n-gpu-layers 99 \
  --flash-attn on \  # 开启 Flash Attention 省显存
  --jinja            # 使用模型自带 chat template

# 启动后访问:
#  Web UI:  http://服务器IP:8080/
#  OpenAI API: http://服务器IP:8080/v1/chat/completions
#  健康检查: http://服务器IP:8080/health

API 调用示例

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-7b",
    "messages": [
      {"role": "system", "content": "你是一个 helpful 助手"},
      {"role": "user", "content": "写一首关于秋天的五言绝句"}
    ],
    "max_tokens": 512,
    "temperature": 0.7
  }'

六、常见问题(FAQ)

Q1:启动报 "error: loading model: unexpected token found"?
A:模型文件下载不完整或损坏,重新下载并校验文件大小(应约 4.7GB)。建议用 wget -c 断点续传。

Q2:CPU 推理很慢怎么加速?
A:① 确认编译时启用了 AVX2(CMake 自动检测);② 选用 Q4_K_M 量化而非 Q8;③ 增大 -t 参数指定线程数(如 -t 8);④ 有 N 卡务必加 -ngl 99 offload 到 GPU。

Q3:如何把 HuggingFace 原版模型转成 GGUF?
A:先 pip install -r requirements.txt,然后:
python3 llama-convert-hf-to-gguf.py /path/to/hf-model --outfile model-f16.gguf
再量化:./build/bin/llama-quantize model-f16.gguf model-q4_k_m.gguf Q4_K_M

Q4:上下文长度爆显存?
A:减小 -c 参数(如 2048),启用 Flash Attention(--flash-attn on),或换用更小量化等级(Q4_0)。

Q5:Windows 下如何部署?
A:直接从 Releases 下载 win64 预编译 zip,解压后在 cmd/PowerShell 中运行 llama-server.exe 即可,无需编译。

七、跳转链接

评论交流

文章目录