llama-bench 实测:扫 4 个参数,定位本地 LLM 基准测试的性能瓶颈
发布时间:2026/8/28 9:31:59 作者:尧图编辑部 阅读量:1,286

llama-bench 实测扫 4 个参数定位本地 LLM 基准测试的性能瓶颈【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp同事同一张卡、同一个模型跑出了你的两倍速度问题多半不在硬件而在参数。llama-bench 是 llama.cpp 官方的性能测试工具专门做本地 LLM 基准测试它把每次推理拆成 PPprompt processing提示词处理速度和 TGtext generation文本生成速度两个指标反复跑多轮取均值让你用同一把尺子比较量化方案、GPU 层分配和线程数。矩阵乘法是 LLM 推理的性能核心也是所有参数调优最终要撬动的东西。第一次部署先跑一条默认命令拿到基线工具在仓库tools/llama-bench/目录下编译后就在 build 目录里git clone https://gitcode.com/GitHub_Trending/ll/llama.cpp cd llama.cpp cmake -B build cmake --build build --config Release -j --target llama-bench然后直接跑./build/bin/llama-bench -m models/qwen2.5-7b-q4_k_m.gguf默认测试是 512 token 提示词 128 token 生成每个配置重复 5 次取均值输出带标准差modelsizebackendngltestt/sqwen2 7B Q4_K - Medium4.36 GiBCUDA-1pp5127285.68±100.06qwen2 7B Q4_K - Medium4.36 GiBCUDA-1tg128119.92±0.43看 tg128 这列就行那是对话体感的直接反映。标准差大说明机器在飘先关后台程序再测。注意这个数值不含分词和采样耗时衡量的是纯推理速度。生成速度上不去先查 -ngl再对比量化版本扫 -ngl层数没卸完速度就卡在 CPU 上-ngl指定卸载到 GPU 的层数默认 -1 是全卸。想确认当前分配合不合理一条命令扫./build/bin/llama-bench -m models/qwen2.5-7b-q4_k_m.gguf -ngl 10,20,30,35nglpp512tg12810373.3613.4520472.6521.3630631.8740.04352400.01131.66注意最后两档34→35 层时 tg 从 71.76 跳到 131.66。数没你想的那么线性——7B 模型 Q4 量化后约 4.7 GiB加上 KV cache8G 显存装得下全量卸载才解锁 GPU 的真实算力。中间档速度上不去说明瓶颈还在 CPU 上那一截层。Q4_K_M 对 Q8_0两个量化版本谁更值得部署-m可以传多个文件一次测完./build/bin/llama-bench -m models/qwen2.5-7b-q4_k_m.gguf \ -m models/qwen2.5-7b-q8_0.gguf -p 0 -n 128modelsizetg128qwen2 7B Q4_K - Medium4.36 GiB131.42±0.59qwen2 7B Q8_08.32 GiB87.20±0.31Q8_0 慢约 34%体积是 2.4 倍换来的精度提升值不值取决于你的场景——这是 GGUF 量化性能对比要回答的问题。显存紧张就留 Q4_K_M追求质量就 Q8_0拿数据说话。一条命令扫完整参数矩阵参数支持逗号分隔多值、区间first-last以及first-laststep步长和first-last*mult倍数两种区间写法。多个参数同时给多值时llama-bench 会跑完所有组合./build/bin/llama-bench -m models/qwen2.5-7b-q4_k_m.gguf \ -ngl 8-248 -b 128,256,512,1024 -p 1024 -n 04 个层数 × 4 个 batch16 行结果一次出完比手动一个个试快得多。重复次数用-r控制默认 5 次结果飘的时候把它调到 10同时检查机器温度。长上下文-b 和 -t 各管一头场景换成 RAG 或长文总结卡点变成提示词处理速度。关掉生成、只测 PP./build/bin/llama-bench -m models/qwen2.5-7b-q4_k_m.gguf -n 0 -p 1024 -b 128,256,512,1024n_batchpp10241281436.51±3.665122254.45±15.5910242498.61±13.581024 相对 128 提升约 74%再往上报显存不足就降档小一档的值照样能当参照。纯 CPU 推理时线程数用-t扫./build/bin/llama-bench -m models/qwen2.5-7b-q4_k_m.gguf -n 0 -n 16 -p 64 -t 4,8,16,32threadspp64tg16423.18±0.0612.22±0.07832.29±1.2116.71±0.661633.52±0.0315.32±0.053259.00±1.1116.41±0.79别急着往上加线程8 到 16 时 tg 不升反降内存带宽争用的典型信号。最优值通常贴着物理核数超线程数翻倍往上加多半白搭。把基线存下来四种输出格式一张表收完-o切换输出格式格式命令用途md-o md默认直接贴进文档、PR 描述csv-o csv喂给 Excel 做透视表json-o json含samples_ts每次重复的原始数据和完整硬件配置方便程序化分析sql-o sql直接导入 SQLite 长期追踪./build/bin/llama-bench -o json -m models/qwen2.5-7b-q4_k_m.gguf baseline.json ./build/bin/llama-bench -o sql -m models/qwen2.5-7b-q4_k_m.gguf | sqlite3 bench.db之后每次代码或驱动更新后重跑sqlite3 bench.db select test_time, avg_ts from llama_bench一条查询就能看出回退发生在哪次提交。把基线 JSON 存进仓库每次 merge 前跑一次再入库llama.cpp 的性能迭代就不会悄无声息地漏掉。【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考