安装并使用 llama.cpp
Mr.Lee 2026-05-23 16:33:23 AIllama.cppHuggingFace
这是弃用 Ollama 改用 llama.cpp 的过程
# 安装
# 安装
❯ brew install llama.cpp
# 验证
❯ llama-cli --version
version: 9240 (57cb35c88)
built with AppleClang 16.0.0.16000026 for Darwin arm64
1
2
3
4
5
6
2
3
4
5
6
| 命令 | 作用 |
|---|---|
llama-cli | 命令行交互/推理 |
llama-server | 启动本地 HTTP/OpenAI 兼容 API 服务 |
llama-bench | 性能基准测试 |
llama-quantize | 模型量化 |
# 使用
lama.cpp 使用 GGUF 格式的量化模型, 可以从这里找到你想用的模型 https://huggingface.co/bartowski
❯ llama-cli -n 32768 -c 32768 --temp 1.0 --top-p 1.0 --top-k 20 \
--model ~/development/workspace/models/llama/Qwen3.5-2B-Q4_K_M.gguf \
-ngl 99 \
--reasoning off \
-p "你好~"
Loading model...
▄▄ ▄▄
██ ██
██ ██ ▀▀█▄ ███▄███▄ ▀▀█▄ ▄████ ████▄ ████▄
██ ██ ▄█▀██ ██ ██ ██ ▄█▀██ ██ ██ ██ ██ ██
██ ██ ▀█▄██ ██ ██ ██ ▀█▄██ ██ ▀████ ████▀ ████▀
██ ██
▀▀ ▀▀
build : b9240-57cb35c88
model : Qwen3.5-2B-Q4_K_M.gguf
modalities : text
available commands:
/exit or Ctrl+C stop or exit
/regen regenerate the last response
/clear clear the chat history
/read <file> add a text file
/glob <pattern> add text files using globbing pattern
> 你好~
你好!有什么我可以帮助你的吗?😊
[ Prompt: 83.9 t/s | Generation: 60.2 t/s ]
❯ llama-server -n 32768 -c 32768 --temp 1.0 --top-p 1.0 --top-k 20 \
--model ~/development/workspace/models/llama/Qwen3.5-2B-Q4_K_M.gguf \
-ngl 99 \
--reasoning off \
--host 127.0.0.1 \
--port 38081 \
--timeout 30000 \
--ui
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
整体体感上, 确实要比Ollama好用太多. 而且可以从 Hugging Face 下载
# 参数说明
# llama-cli核心参数说明
# 1. 通用参数
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
-h, --help | 显示帮助并退出 | — |
--version | 显示版本与构建信息 | — |
--license | 显示源码许可证与依赖 | — |
--cache-list | 显示缓存中的模型列表 | — |
-t, --threads N | 生成阶段使用的 CPU 线程数 | 默认 -1(自动) |
-tb, --threads-batch N | 批处理与提示词处理线程数 | 同 --threads |
-c, --ctx-size N | 上下文窗口大小 | 0(从模型读取) |
-n, --predict N | 预测 token 数量 | -1(无限) |
-b, --batch-size N | 逻辑最大批大小 | 2048 |
-ub, --ubatch-size N | 物理最大批大小 | 512 |
--flash-attn [on/off/auto] | 是否启用 Flash Attention | auto |
-p, --prompt PROMPT | 初始提示词 | 系统提示用 -sys |
-f, --file FNAME | 从文件读取提示词 | — |
--rope-scale N | RoPE 缩放因子(扩展上下文) | — |
--mmap / --no-mmap | 是否使用内存映射加载模型 | 默认启用 |
--mlock | 锁定模型到内存,防止交换 | — |
-ngl, --n-gpu-layers N | 卸载到显存的层数 | auto |
-dev, --device dev1,dev2 | 指定使用的设备(GPU) | — |
-m, --model FNAME | 要加载的模型路径 | 必填 |
-hf, --hf-repo <repo> | 从 Hugging Face 下载模型 | 例:ggml-org/GLM-4.7-Flash-GGUF:Q4_K_M |
--offline | 离线模式(仅用缓存) | — |
# 2. 采样参数
| 参数 | 说明 | 默认值 |
|---|---|---|
--temp N | 温度(随机性) | 0.8 |
--top-k N | Top-K 采样 | 40 |
--top-p N | Top-P(核采样) | 0.95 |
--min-p N | Min-P 采样 | 0.05 |
--repeat-penalty N | 重复惩罚系数 | 1.0 |
--repeat-last-n N | 参与惩罚的最近 token 数 | 64 |
--dry-multiplier N | DRY 采样强度 | 0.0(关闭) |
--mirostat N | Mirostat 采样(0/1/2) | 0(关闭) |
--logit-bias ID±BIAS | 调整特定 token 概率 | 例:15043+1 |
--grammar FILE | 用 BNF 语法约束输出 | — |
--json-schema SCHEMA | 用 JSON Schema 约束输出 | — |
# 3. 推测解码参数
| 参数 | 说明 | 默认值 |
|---|---|---|
--spec-draft-model FNAME | 草稿模型路径 | — |
--spec-draft-hf <repo> | 从 HF 下载草稿模型 | — |
--spec-draft-n-max N | 最大草稿 token 数 | 3 |
--spec-draft-n-min N | 最小草稿 token 数 | 0 |
--spec-draft-ngl N | 草稿模型显存层数 | auto |
--spec-type TYPE | 推测解码类型 | none |
--draft-max / --draft-min | ⚠️ 已移除,改用 --spec-draft-n-max/min | — |
# 4. 示例 / 交互参数
| 参数 | 说明 | 默认值 |
|---|---|---|
--color [on/off/auto] | 彩色输出区分提示与生成 | auto |
--conversation | 对话模式(自动启用聊天模板) | 自动 |
--single-turn | 仅单轮对话 | false |
--multiline-input | 允许多行输入 | — |
--warmup | 空运行预热 | 启用 |
--mmproj FILE | 多模态投影文件路径 | — |
--image FILE | 输入图片(多模态模型) | 可多个 |
--reasoning [on/off/auto] | 是否启用推理(思考)模式 | auto |
--reasoning-budget N | 推理 token 预算 | -1(无限制) |
--chat-template TEMPLATE | 自定义 Jinja 聊天模板 | 从模型读取 |
--show-timings | 显示每轮耗时统计 | true |
# llama-server核心参数说明
# 一、通用参数
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
-h, --help | 显示帮助并退出 | — |
--version | 显示版本与构建信息 | — |
--license | 显示源码许可证与依赖 | — |
--cache-list | 显示缓存中的模型列表 | — |
--completion-bash | 输出 Bash 自动补全脚本 | — |
-t, --threads N | 生成阶段使用的 CPU 线程数 | -1(自动) |
-tb, --threads-batch N | 批处理与提示词处理线程数 | 同 --threads |
-C, --cpu-mask M | CPU 亲和性掩码 (十六进制) | "" |
-Cr, --cpu-range lo-hi | CPU 亲和性范围 | — |
--cpu-strict <0\|1> | 严格 CPU 绑定 | 0(关闭) |
--prio N | 进程/线程优先级 (低-1 到 实时3) | 0(普通) |
--poll <0...100> | 轮询等待工作的级别 | 50 |
-c, --ctx-size N | 上下文窗口大小 | 0(从模型读取) |
-n, --predict N | 预测 Token 数量 | -1(无限) |
-b, --batch-size N | 逻辑最大批大小 | 2048 |
-ub, --ubatch-size N | 物理最大批大小 | 512 |
--keep N | 保留初始提示词的 Token 数 | 0 |
--swa-full | 使用全尺寸 SWA 缓存 | false |
-fa, --flash-attn [on\|off\|auto] | 启用 Flash Attention | auto |
--perf / --no-perf | 启用内部性能计时 | false |
-e, --escape / --no-escape | 处理转义字符 (\n, \t等) | true |
--rope-scaling {none,linear,yarn} | RoPE 频率缩放方法 | 从模型读取 |
--rope-scale N | RoPE 上下文缩放因子 | — |
--rope-freq-base N | RoPE 基频 (用于 NTK 感知缩放) | 从模型读取 |
--rope-freq-scale N | RoPE 频率缩放因子 | — |
--yarn-* | YaRN 系列微调参数 | 高级优化 |
-kvo, --kv-offload / -nkvo | 启用 KV Cache 卸载 | 默认启用 |
--repack / --no-repack | 启用权重重打包 | 默认启用 |
--no-host | 绕过主机缓冲区 | — |
-ctk, --cache-type-k TYPE | KV Cache 中 K 的数据类型 | f16 |
-ctv, --cache-type-v TYPE | KV Cache 中 V 的数据类型 | f16 |
--mlock | 锁定模型在 RAM 中 (防交换) | — |
--mmap / --no-mmap | 使用内存映射加载模型 | 默认启用 |
-dio, --direct-io | 使用 DirectIO (若可用) | 默认禁用 |
--numa TYPE | NUMA 优化 (distribute, isolate) | — |
-dev, --device <dev1,dev2> | 指定卸载设备 (GPU) | — |
--list-devices | 列出可用设备并退出 | — |
-ot, --override-tensor | 覆盖张量缓冲区类型 | — |
-cmoe, --cpu-moe | 将 MoE 专家权重保留在 CPU | — |
-ncmoe, --n-cpu-moe N | 前 N 层的 MoE 权重保留在 CPU | — |
-ngl, --gpu-layers N | 卸载到显存的层数 | auto |
-sm, --split-mode {none,layer,row,tensor} | 多 GPU 模型切分模式 | layer |
-ts, --tensor-split N0,N1... | 各 GPU 卸载比例 | — |
-mg, --main-gpu INDEX | 主 GPU 索引 | 0 |
-m, --model FNAME | 要加载的模型路径 | 必填 |
-hf, --hf-repo <repo> | 从 Hugging Face 下载模型 | 例: ggml-org/GLM-4.7-Flash-GGUF:Q4_K_M |
--offline | 离线模式 (仅用缓存) | — |
# 二、采样参数
| 参数 | 说明 | 默认值 |
|---|---|---|
--samplers SAMPLERS | 采样器执行顺序 (分号分隔) | penalties;dry;top_n_sigma;... |
-s, --seed SEED | 随机数种子 | -1(随机) |
--temp N | 温度 (随机性) | 0.80 |
--top-k N | Top-K 采样 | 40 |
--top-p N | Top-P (核采样) | 0.95 |
--min-p N | Min-P 采样 | 0.05 |
--top-nsigma N | Top-N-Sigma 采样 | -1.0(禁用) |
--xtc-probability N | XTC 采样概率 | 0.00 |
--typical-p N | 局部典型采样 | 1.00 |
--repeat-last-n N | 重复惩罚参考的最近 Token 数 | 64 |
--repeat-penalty N | 重复惩罚系数 | 1.00 |
--presence-penalty N | 存在惩罚 | 0.00 |
--frequency-penalty N | 频率惩罚 | 0.00 |
--dry-multiplier N | DRY 采样强度 | 0.00 |
--dry-allowed-length N | DRY 允许长度 | 2 |
--mirostat N | Mirostat 采样 (0=关, 1=v1, 2=v2) | 0 |
--mirostat-lr N | Mirostat 学习率 | 0.10 |
--mirostat-ent N | Mirostat 目标熵 | 5.00 |
-l, --logit-bias ID±BIAS | 调整特定 Token 概率 | 例: 15043+1 |
--grammar FILE | 用 BNF 语法约束输出 | — |
-j, --json-schema SCHEMA | 用 JSON Schema 约束输出 | — |
# 三、推测解码参数
用于加速生成,需配合草稿模型使用
| 参数 | 说明 | 默认值 |
|---|---|---|
--spec-draft-model FNAME | 草稿模型路径 | — |
--spec-draft-hf <repo> | 从 HF 下载草稿模型 | — |
--spec-draft-ngl N | 草稿模型显存层数 | auto |
--spec-draft-n-max N | 最大草稿 Token 数 | 3 |
--spec-draft-n-min N | 最小草稿 Token 数 | 0 |
--spec-draft-p-split P | 推测解码分割概率 | 0.10 |
--spec-type TYPE | 推测解码类型 | none |
--spec-ngram-* | N-gram 推测相关参数 | — |
# 四、服务器专用参数
# 1. 核心服务配置
| 参数 | 说明 | 默认值 |
|---|---|---|
--host HOST | 监听 IP 或 Unix Socket | 127.0.0.1 |
--port PORT | 监听端口 | 8080 |
--api-prefix PREFIX | API 路由前缀 | 空 |
--threads-http N | HTTP 请求处理线程数 | -1(自动) |
--timeout N | 读写超时时间 (秒) | 600 |
# 2. 并发与缓存
| 参数 | 说明 | 默认值 |
|---|---|---|
-np, --parallel N | 服务器槽位数量 (并发数) | -1(自动) |
-cb, --cont-batching / -nocb | 启用连续批处理 (动态批处理) | 启用 |
--cache-prompt / --no-cache-prompt | 启用提示词缓存 | 启用 |
--cache-reuse N | KV 移位复用的最小块大小 | 0 |
--slot-save-path PATH | 保存槽位 KV Cache 的路径 | 禁用 |
--kv-unified / --no-kv-unified | 使用统一 KV 缓冲区 | 自动 |
--cache-ram N | 最大缓存大小 (MiB) | 8192 |
# 3. 多模态
| 参数 | 说明 | 默认值 |
|---|---|---|
--mmproj FILE | 多模态投影文件路径 | — |
--mmproj-auto / --no-mmproj | 自动使用多模态投影 | 启用 |
--image-min/max-tokens N | 每张图片占用的 Token 范围 | 从模型读取 |
--model-vocoder FNAME | 音频生成声码器模型 | — |
# 4. 聊天与模板
| 参数 | 说明 | 默认值 |
|---|---|---|
--chat-template JINJA | 自定义 Jinja 聊天模板 | 从模型读取 |
--reasoning [on\|off\|auto] | 启用推理/思考模式 | auto |
--reasoning-budget N | 推理 Token 预算 | -1(无限制) |
--reasoning-format FORMAT | 推理内容返回格式 | auto |
--jinja / --no-jinja | 启用 Jinja 模板引擎 | 启用 |
# 5. Web UI 与安全
| 参数 | 说明 | 默认值 |
|---|---|---|
--ui / --no-ui | 启用 Web 界面 | 启用 |
--ui-config JSON | 默认 UI 配置 (JSON) | — |
--api-key KEY | API 密钥 (逗号分隔) | 无 |
--ssl-cert-file FILE | SSL 证书路径 | — |
--ssl-key-file FILE | SSL 私钥路径 | — |
--metrics | 启用 Prometheus 监控端点 | 禁用 |
--media-path PATH | 本地媒体文件目录 | 禁用 |
# 6. 路由器模式
| 参数 | 说明 | 默认值 |
|---|---|---|
--models-dir PATH | 模型目录 | 禁用 |
--models-max N | 最大同时加载模型数 | 4 |
--models-autoload / --no-models-autoload | 自动加载模型 | 启用 |