2026年本地运行Llama
llama.cpp把Llama级模型塞进笔记本、树莓派甚至手机:GGUF量化格式、CPU/GPU混合推理、自带OpenAI兼容服务端。这篇从编译装到跑起一个能对外提供接口的服务,参数逐条讲清。
💡 你将学到
llama.cpp把Llama级模型塞进笔记本、树莓派甚至手机:GGUF量化格式、CPU/GPU混合推理、自带OpenAI兼容服务端。这篇从编译装到跑起一个能对外提供接口的服务,参数逐条讲清。
2026年本地运行Llama:llama.cpp完整指南,从下载GGUF到任意硬件上聊天
想在本地跑 Llama 级模型,绕不开 llama.cpp。它是 GGUF 格式的参考实现,纯 C/C++,没有 Python 依赖,量化后的 4 位模型能把内存占用压到 FP16 的四分之一左右,于是同一台机器能跑下原本装不下的模型。这篇文章按"编译 → 找模型 → 命令行跑通 → 调参 → 起服务"的顺序走完,参数解释到能自己判断该填什么。
一、先搞清三件事
- GGUF 是模型文件格式,不是模型本身。 同一个 Llama 权重可以导出多个量化等级的 GGUF,质量与体积成反比。
- llama.cpp 只负责推理,不负责下载。 模型从 Hugging Face 上的社区仓库取,认准上传者的量化说明。
- CPU 也能跑,只是慢。 GPU 卸载(offload)是加速手段,不是必需条件。这就是它能在树莓派和手机上跑起来的原因。
二、编译安装
官方仓库已经迁到 ggml-org 组织下,构建用 CMake:
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build # CPU 版
cmake -B build -DGGML_CUDA=ON # NVIDIA
cmake -B build -DGGML_METAL=ON # Apple Silicon
cmake -B build -DGGML_VULKAN=ON # AMD / Intel 核显
cmake --build build --config Release -j
编译完的可执行文件在 build/bin/ 下,主要有两个:llama-cli(交互聊天)和 llama-server(HTTP 服务)。Windows 用户可以直接下载 GitHub Releases 里的预编译包,解压即用,省掉工具链。
常见坑:CUDA 版本要和驱动匹配;Mac 上用 Metal 不需要额外装驱动;Vulkan 后端对 AMD 显卡兼容性最好但首次编译较慢。
三、找模型:量化等级怎么选
Hugging Face 上搜模型名加 GGUF 后缀,社区上传者通常会在说明里列出各量化版本的文件大小。量化等级的经验判断:
| 量化 | 大致位宽 | 质量 | 适用 |
|---|---|---|---|
| Q8_0 | 8 位 | 几乎无损 | 内存充裕,做对照基线 |
| Q6_K | 6 位 | 很接近原版 | 显存够、追求质量 |
| Q5_K_M | 5 位 | 损失可忽略 | 平衡档 |
| Q4_K_M | 4 位 | 日常可用 | 默认推荐,体积与质量平衡点 |
| Q3_K_M | 3 位 | 明显退化 | 实在装不下时用 |
| Q2_K | 2 位 | 只能凑合 | 不建议,除非只做演示 |
先看文件大小能不能塞进显存(或内存),再谈等级。装得下 Q4_K_M 就别用 Q2_K,装不下才往下调。低于 3 位的模型经常出现重复、跑题、指令不跟随,问题不在参数而在量化。
四、跑通第一条对话
./build/bin/llama-cli \
-m ./models/xxx-Q4_K_M.gguf \
-ngl 99 \
-c 4096 \
-t 8 \
-p "用三句话解释什么是量化" \
-n 256
-ngl 99 表示把全部层放到 GPU,层数不够时按实际层数填;不加则是纯 CPU 推理。跑通之后可以用 -cnv 进入多轮对话模式。
五、核心参数表
| 参数 | 含义 | 怎么填 |
|---|---|---|
-m |
模型文件路径 | 必填 |
-ngl N |
卸载到 GPU 的层数 | 显存够就全放,爆显存就减 |
-c N |
上下文长度(token) | 4096 起步,按需加,越长越吃显存 |
-t N |
CPU 线程数 | 取物理核数,不要超过 |
-fa |
Flash Attention | 支持的硬件上开启,省显存提速 |
--temp |
温度 | 0.2 严谨任务,0.7 创意任务 |
--repeat-penalty |
重复惩罚 | 1.1 左右,出现复读时上调 |
-n |
最大生成 token 数 | 512 起步,防跑飞 |
六、起一个 OpenAI 兼容服务
./build/bin/llama-server -m ./models/xxx-Q4_K_M.gguf -ngl 99 -c 8192 --host 0.0.0.0 --port 8080
之后就能用 OpenAI SDK 的风格调用:
curl http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"local","messages":[{"role":"user","content":"你好"}]}'
llama-server 自带 Web 界面(浏览器打开根路径即可),也支持 /completion 原生接口、流式输出和并发槽位(--parallel)。多用户共用一台机器时,槽位数的显存开销要一起算进去。
七、显存怎么估算
权重占用 ≈ 参数量 × 量化位宽 ÷ 8。8B 模型在 Q4_K_M 下权重约 5GB 上下,这是文件大小的量级,具体看文件本身。
剩下的是上下文缓存(KV cache),它随上下文长度线性增长,公式是:
每 token KV ≈ 2 × 层数 × KV头数 × 单头维度 × 字节数
不用手算到精确,记两条经验:上下文从 4K 拉到 32K,KV 缓存会涨好几倍;开启 Flash Attention 能明显压住这部分开销。显存吃紧时先降上下文,再降量化等级。
常见问题
Q:CPU 跑得动吗? A:跑得动,7B 级 Q4 模型在现代桌面 CPU 上大约每秒几个 token,写短句够用,长文等得久。Apple Silicon 的统一内存和核显表现好很多。
Q:模型输出一直重复怎么办?
A:提高 --repeat-penalty 到 1.15 左右,降低温度,同时检查提示词里有没有让它陷入循环的格式。低量化等级的模型更容易复读。
Q:能不能同时加载多个模型?
A:可以,起多个 llama-server 实例绑不同端口,但每个实例独立占显存。单实例切换模型用 API 的模型管理接口,具体行为以官方文档为准。
Q:和 Ollama 什么关系? A:Ollama 底层用的就是 llama.cpp 的推理库,多了模型管理和开机自启。要省事用 Ollama,要压榨性能、要精细控制参数就用 llama.cpp 本体。
注:参数名和默认值随版本变化,编译选项以官方仓库 README 为准;各量化文件的实际体积以 Hugging Face 仓库显示为准。
相关文章
❓ 常见问题
What is GGUF?
The file format that stores quantized model weights + metadata, designed by the llama.cpp project.
Which model size for my RAM?
Rule of thumb: pick a quantized model roughly half your free RAM. 8GB RAM - 4B models; 16GB - 8B; 32GB - 13-14B.
Can I use a GPU?
Yes - CUDA, ROCm, Metal and Vulkan backends are supported. Use `-ngl 99` to offload all layers to GPU.
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。