本页面介绍了安装 llama.cpp 后如何使用其提供的基本命令行工具。内容涵盖了运行语言模型推理所需的常用操作,重点关注主要的命令行界面。有关安装说明,请参阅 安装;有关更高级的用法,请参阅 用户界面 下的特定工具部分。
llama.cpp 提供了多种用于不同目的的命令行工具
| 工具 | 目的 | 主要文件 |
|---|---|---|
llama-cli | 主要的文本生成和聊天界面 | examples/main/main.cpp |
llama-server | 具有 OpenAI 兼容 API 的 HTTP 服务器 | examples/server/server.cpp |
llama-perplexity | 使用困惑度衡量模型质量 | examples/perplexity/perplexity.cpp |
llama-quantize | 将模型压缩到更小的尺寸 | examples/quantize/quantize.cpp |
llama-embedding | 生成文本嵌入 | examples/embedding/embedding.cpp |
llama-bench | 基准测试推理性能 | examples/llama-bench/llama-bench.cpp |
让我们探索一下这些工具的基本用法。
在运行推理之前,您需要一个 GGUF 格式的模型。您可以
使用 Hugging Face 下载预量化 GGUF 模型
使用转换脚本将模型从不同格式转换
将模型量化为更小的尺寸
来源:README.md255-279 examples/quantize/quantize.cpp105-135
用于生成文本的主要命令行界面是 llama-cli。以下是如何使用它进行基本文本补全:
使用 -p 或 --prompt 参数指定输入文本,并使用 -n 控制生成多少个 token。
来源:examples/main/README.md28-36 examples/main/main.cpp85-107
以下是 llama-cli 最重要的参数:
| 参数 | 描述 | 默认 |
|---|---|---|
-m, --model FNAME | GGUF 模型文件的路径 | - |
-p, --prompt PROMPT | 输入提示 | - |
-n, --n-predict N | 要预测的 token 数量 | -1 (无限) |
-c, --ctx-size N | 上下文窗口大小 | 4096 |
-t, --threads N | CPU 线程数 | 系统依赖 |
-ngl, --n-gpu-layers N | 要卸载到 GPU 的层数 | 0 |
-sys, --system-prompt PROMPT | 聊天模式下的系统提示 | - |
-cnv, --conversation | 启用对话模式 | 汽车 |
-no-cnv | 禁用对话模式 | - |
来源:examples/main/README.md85-98 examples/main/README.md185-190 examples/main/main.cpp45-51
来源:common/arg.cpp639-683 common/common.cpp1770-1811 tools/main/main.cpp200-250
llama-cli 支持通过几种模式进行交互式对话
在交互模式下
\ 进入新行/ 提交而不换行来源:examples/main/README.md108-124 examples/main/main.cpp424-463
来源:examples/main/main.cpp267-278 examples/main/main.cpp282-312
通过网络提供具有 OpenAI 兼容 API 的模型
该服务器提供了与 OpenAI API 兼容的端点,包括:
/v1/chat/completions/v1/embeddingsllama-perplexity 工具通过计算困惑度(越低越好)来帮助评估模型质量。
它会输出困惑度分数,该分数估算了模型在预测测试文本方面的表现。
[1]15.2701,[2]5.4007,[3]5.3073,[4]6.2965,[5]5.8940,[6]5.6096,[7]5.7942,[8]4.9297, ...
Final estimate: PPL = 5.4007 +/- 0.67339
来源:README.md413-437 examples/perplexity/perplexity.cpp294-437
llama-quantize 允许您将模型压缩到更小的尺寸,同时保持合理的质量。
可用量化类型包括:
| 类型 | 描述 | 近似大小 | 质量影响 |
|---|---|---|---|
| Q4_0 | 4 位量化 | 4.34GB | +0.47 ppl @ 8B |
| Q5_0 | 5 位量化 | 5.21GB | +0.13 ppl @ 8B |
| Q8_0 | 8 位量化 | 7.96GB | +0.003 ppl @ 8B |
| F16 | 16 位浮点 | 14.00GB | +0.002 ppl @ 7B |
来源:examples/quantize/quantize.cpp20-58 README.md276-278
为语义搜索或其他应用创建文本嵌入
该工具提供可用于相似性匹配的嵌入,并支持向量归一化和导出为各种格式的选项。
来源:examples/embedding/embedding.cpp82-326
对于长期运行的应用,您可以保存和加载模型状态
这允许
来源: examples/save-load-state/save-load-state.cpp58-246
来源: README.md32-54 common/common.cpp350-364 CMakeLists.txt171-198
| 问题 | 可能解决方案 |
|---|---|
| 内存不足 | 使用更量化的模型(例如 Q4_0 而不是 F16) |
| 生成速度慢 | 使用 -t 增加线程数或使用 -ngl 启用 GPU |
| 上下文长度超出 | 使用 -c 增加上下文大小(如果模型支持) |
| 重复输出 | 调整采样参数(温度、top_p 等) |
| 未找到模型 | 检查路径或尝试使用 -hf 选项下载 |
来源: examples/main/README.md108-127 examples/main/README.md160-179
在熟悉了基本用法后,您可能还想探索