llama.cpp 性能基准库实战:参数调优与多场景测试
为什么需要标准化性能测试?
在本地部署 LLM(大语言模型)时,性能优化是绕不开的核心问题。相同的模型在不同硬件和参数配置下,吞吐量(tokens/秒)可能相差 5 倍以上。llama.cpp 提供的 llama-bench 工具通过标准化测试流程,帮助开发者:
- 验证硬件配置的实际利用率
- 对比不同量化模型(如 Q4_K vs Q8_0)的性能差异
- 优化线程数、GPU 层分配等关键参数
- 建立性能基准,追踪代码迭代对速度的影响
性能测试核心指标
llama-bench 主要关注两类核心性能指标:
- PP(Prompt Processing):提示词处理速度(tokens/秒),衡量模型理解输入的效率
- TG(Text Generation):文本生成速度(tokens/秒),决定对话响应的流畅度
快速上手:3 分钟完成基准测试
环境准备
确保已编译 llama.cpp 项目,生成 llama-bench 可执行文件:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make llama-bench
基础测试命令
使用默认参数运行基准测试(需提前准备 GGUF 格式模型):
./llama-bench -m models/7B/ggml-model-q4_0.gguf
默认测试将输出 Markdown 格式的结果表格,包含提示词处理(512 tokens)和文本生成(128 tokens)的平均速度:
| model | size | params | backend | ngl | test | t/s | | --- | --- | --- | --- | --- | --- | | llama 7B mostly Q4_0 | 3.56GiB | 6.74B | CUDA | 99 | pp512 | 2368.80±93.24 | | llama 7B mostly Q4_0 | 3.56GiB | 6.74B | CUDA | 99 | tg128 | 131.42±0.59 |
测试类型详解
llama-bench 支持三种测试模式,通过参数组合灵活配置:
| 测试模式 | 参数组合 | 适用场景 |
|---|---|---|
| 仅提示词处理 | -p 1024 -n 0 | 评估长文档理解性能 |
| 仅文本生成 | -p 0 -n 256 | 优化对话生成流畅度 |
| 混合测试 | -pg 512,128 | 模拟实际对话场景 |
参数调优实战:从 20 t/s 到 130 t/s 的突破
GPU 层分配(-ngl):释放硬件计算能力
GPU 层数量(-ngl)是影响性能的关键参数。通过将模型层卸载到 GPU,可显著提升速度。实测 7B 模型在 RTX 4080 上的性能变化:
./llama-bench -m models/7B/ggml-model-q4_0.gguf -ngl 10,20,30,35
测试结果显示,当 -ngl=35 时(完全卸载所有层),生成速度从 13 t/s 提升至 131 t/s,提升 9 倍:
| ngl | pp512 t/s |
|---|

