cxl
Published on 2026-05-28 / 1 Visits
0
0

llama.cpp 入个门

新电脑到了,自然少不了本地搭建一套本地大模型环境了,毕竟16G的显存还是嘎嘎抗揍的。之前用的比较多的是使用ollama搭建,不过看了最近比较火的 llama.ccp之后决定尝试看看, 学习 llama.cpp 时,不用深究底层原理、复杂编译优化和模型量化细节,日常 90% 的落地场景,都是用 CLI 命令行快速推理 + Server 搭建 HTTP 接口服务。废话少说,直接讲官方核心能力:llama-cli 命令行工具、llama-server 轻量化 HTTP 服务,基于最新官方文档与实践经验,整理全量参数、实操命令、接口示例、生产模板、调优避坑,开箱即用,适合本地推理、接口开发、私有化部署。以下内容大多部分为手动实践,当然也有实践不了的部分,比如多卡之类的参数,这里就只做个记录,万一日后能用呢~

一、基本认识

1.1 核心认知

llama.cpp 两大核心工具:

  • llama-cli:终端命令行工具,用于单次推理、多轮对话、本地快速测试,轻量无依赖

  • llama-server:内置高性能 HTTP 服务,支持 WebUI、OpenAI 兼容 API、多并发、流式输出、RAG 嵌入、重排序、多模态、函数调用,是生产落地首选

唯一硬性要求:准备 GGUF 格式量化模型(推荐 Q4_K,平衡速度 / 显存 / 精度),可自行转换或 HuggingFaceModelScope 直接下载成品。接下来将以 HuggingFace 中下载的 Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf 模型为例,下面mmproj开头的也一并下载,这样才支持多模态。

1.2 源码部署

# 拉取源码 & 同步子模块
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp && git submodule update --init --recursive

# 按需编译(选其一)
make CUDA=1    # NVIDIA 显卡加速(推荐)
make METAL=1   # Mac 苹果芯片加速
make           # 纯 CPU 编译(通用)

# 验证
./llama-cli --version
./llama-server --version

1.3 版本部署

访问版本发布页面下载对应版本:Releases · ggml-org/llama.cpp , 我这里选的是 cuda13.3,因为我通过 nvidia-smi 命令查得本机版本为13.2

下载后解压到无中文目录中即可。

二、llama-cli 完整实战(命令行)

2.1 基础核心参数(高频必记)

参数

说明

推荐值

-m

  GGUF 模型路径(必填)

  E:\\data\\ai\\model\\Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf

-c

  上下文窗口大小

  2048 / 4096

-t

  CPU 线程数

  等于核心数

-n

  最大生成 token

  512

-ngl

  GPU 卸载层数

  有卡 30~80,无卡 0

--temp

  生成随机性

  0.3~0.7

--top-k

  候选 token 数

  40

--top-p

  核采样概率

  0.9

--repeat-penalty

  重复惩罚

  1.1

2.2 高频场景命令

场景 1:单次问答

llama-cli.exe -m E:\\data\\ai\\model\\Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf -c 2048 -p "什么是 GGUF 格式?"

场景 2:交互式对话

llama-cli.exe -m E:\\data\\ai\\model\\Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf -c 4096 --interactive

场景 3:代码生成(低随机)

llama-cli.exe -m E:\\data\\ai\\model\\Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf -c 2048 --temp 0.2 --repeat-penalty 1.1 -p "写一个 Python 批量重命名脚本"

2.3 进阶采样(解决重复 / 发散)

  • --min-p 0.05:过滤低概率垃圾 token

  • --mirostat 2:自适应困惑度,长文本更稳定

  • --presence-penalty 0.1:抑制重复主题

三、llama-server 全量实战(HTTP 服务)

3.1 参数全景(官方 7 大类,精简高频)

1)模型加载

  • -m, --model:本地 GGUF 路径

  • -hf, --hf-repo:直接从 HF 下载(例:bartowski/Qwen3-8B-GGUF:q4_k_m

2)上下文与批处理

  • -c, --ctx-size:上下文(8B 模型建议 8192)

  • -b, --batch-size:逻辑批处理(2048)

  • -ub, --ubatch-size:物理批处理(显存不足调小)

3)GPU / 显存优化

  • -ngl, --n-gpu-layers:GPU 卸载(999 = 全载)

  • -ctk q4_0, -ctv q4_0:KV 缓存量化(显存直降 75%)

  • -fa, --flash-attn:长上下文加速(强烈推荐)

4)并发调度

  • -np, --parallel:并发槽位(多用户)

  • --cont-batching:连续批处理(默认开启,提升吞吐)

5)采样控制

  • --temp--top-k--top-p--repeat-penalty:同 CLI

  • --json-schema:强制输出合法 JSON

6)网络与安全

  • --host 0.0.0.0:开放外网访问

  • --port 8080:端口

  • --api-key:接口鉴权

7)高级能力

  • --embedding:开启向量嵌入(RAG)

  • --reranking:开启重排序

  • --mmproj:多模态图文模型

3.2 最简启动(本地测试)

llama-server.exe -m E:\\data\\ai\\model\\Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf --mmproj E:\\data\\ai\\model\\mmproj-Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-f16.gguf -c 8192 -ngl 999

浏览器打开:http://127.0.0.1:8080(内置 WebUI)

3.3 生产级启动模板(开放 + 并发 + 加速)

llama-server.exe \
  -m E:\\data\\ai\\model\\Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf \
  --mmproj E:\\data\\ai\\model\\mmproj-Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-f16.gguf \
  -c 8192 \
  -ngl 999 \
  -ctk q4_0 -ctv q4_0 \
  -fa on \
  -np 4 \
  --host 0.0.0.0 \
  --port 8080 \
  --api-key sk-xxx \
  --log-disable

3.4 核心 API(兼容 OpenAI)

健康检查

curl http://127.0.0.1:8080/health

对话(/v1/chat/completions)

curl -X POST http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
  "model": "local-llm",
  "messages": [{"role":"user","content":"介绍 llama-server"}]
}'

向量嵌入(RAG)

curl -X POST http://127.0.0.1:8080/v1/embeddings \
-d '{"input":"需要向量化文本"}'

3.5 实用配置模板(直接复制)

1)入门(8B + 单卡)

 llama-server.exe \
  -hf bartowski/Qwen3-8B-GGUF:q4_k_m \
  -ngl 999 -c 8192 -np 2 --host 0.0.0.0

2)长上下文(128K)

 llama-server.exe \
  -m xxx-q4_k.gguf \
  -c 131072 \
  -ctk q4_0 -ctv q4_0 \
  -fa on \
  --rope-scaling yarn --rope-scale 16

3)多卡 70B

  llama-server.exe \
  -m xxx-q4_k.gguf \
  -ngl 999 \
  -sm tensor -ts 0.5,0.5 \
  -dev gpu0,gpu1 \
  -c 32768

四、性能调优与避坑(官方最佳实践)

4.1 显存紧张优先做

  • -c 降至 4096/2048

  • KV 缓存设为 q4_0

  • 降低 -ngl,部分层放 CPU

4.2 速度优先

  • 开启 --flash-attn

  • 增大 -b-ub

  • 开启 --speculative 投机解码

4.3 高频坑

  • 外网访问失败:没加 --host 0.0.0.0

  • 输出乱码 / 循环:调高 repeat-penalty、降低 temp

  • 内存溢出:减小上下文、启用 KV 量化

五、总结

llama.cpp 的落地核心就是 llama-cli 快速验证 + llama-server 生产部署。CLI 轻量无依赖,适合临时测试;Server 能力全面、兼容 OpenAI、支持并发 / 嵌入 / 多模态,覆盖 99% 私有化场景。部署完大模型下一步就是 Hermes了!


Comment