PSA:测试你在 llama.cpp 中的“线程”参数(我的情况提升了 80% 的性能)
摘要
一位用户使用 Gemma 4 在 llama.cpp 中针对混合 CPU-GPU 推理进行了线程数基准测试,发现在混合核心 CPU 上使用 16 个线程而非 6 个可提升 80% 的性能,并分享了最佳命令配置。
去年 GPT-OSS 120B 发布时,我尝试调整并最大化其性能。很多人指出,对于混合 CPU(性能核心+能效核心),应该仅使用 P 核心配合 "--threads" 参数以及 taskset/affinity。当时我在朋友的 **14700K** 上设置了该模型,限制线程数为 8(因为有 8 个 P 核心)确实提升了性能。从那以后我一直使用并推荐这种做法。
今天我在 **Gemma 4 26B A4B QAT** 上尝试了 MTP 草稿设置,突然想到“试试增加线程数”。我的 CPU(**250K Plus**)有 **18 个核心**(6 性能核心 + 12 能效核心)。性能提升巨大,于是我写了一个简单的基本脚本来确认(简单提示生成 WordPress 的 PHP 代码,除线程参数外所有设置相同,相同种子,1 次热身运行后 5 次正式运行以减少误差),结果如下:
threads runs min_tok/s mean_tok/s max_tok/s
------- ---- --------- ---------- ---------
6 5 48,938 49,144 49,451
12 5 61,329 62,938 67,614
16 5 87,877 88,765 89,126
18 5 64,154 66,478 67,373
是的。使用 16 个线程代替 6 个,获得了 **+80% 的性能提升**。我也难以置信它变得如此之快,所以我才写了那个基准测试脚本确认。在 6 线程测试中,使用 /affinity 参数锁定到 P 核心,但结果与不锁定相同,所以也许 Arrow Lake 上的线程控制器比 Raptor Lake(我之前测试的 14700K)更好。奇怪的是,使用 18 个核心时性能下降,但未发现降频,所有核心仍保持满加速,所以瓶颈出现在其他位置,如果有人知道,欢迎在评论中指出。
**配置:** Intel 250K Plus + 64GB 6400MT/s + RTX 4070 SUPER 12GB(显存超频至 571GB/s)+ llama.cpp b9601 命令,这是我在所有测试中发现性能最佳的(例如,我看到很多人使用 spec draft 3,但对我而言,设置为 '2' 在 **QAT** 模型上提升了性能,而在 **非 QAT** 模型上 3 就没问题):
llama-server -m models/gemma-4-26B-A4B-it-qat-UD-Q4_K_XL.gguf --model-draft models/mtp-gemma-4-26B-A4B-it-qat.gguf --alias gemma4-26b-a4b-qat-q4xl-mtp -c 131072 -np 1 -b 2048 -ub 512 --threads 16 -ngl 99 -ncmoe 18 -fa on --spec-type draft-mtp --spec-draft-ngl 99 --spec-draft-n-max 2 --cache-type-k-draft q8_0 --cache-type-v-draft q8_0 --temp 1.0 --top-p 0.95 --top-k 64 --min-p 0.0 --repeat-penalty 1.0
所以,如果你和我一样有 **12GB 显存**,可以试试上面的命令,量化模型和 mtp 模型来自 Unsloth。当然,随着上下文增加,tok/s 会下降,但百分比差异仍然相同。这个命令可能还不完美,等我睡醒后我会重新测试每一个假设,因为也许我其他参数也设置错了,哈哈。检查一下在你的 **CPU** 上性能如何扩展,因为你可能像我一样丢失了近一半的性能……现在我对 Gemma 4 124B 尚未发布感到更加遗憾,因为它在 16 线程设置下绝对足够快,我只要再加 32GB 内存到电脑上,就会是完美的搭配 :( :( :( :( 抱歉管理员,如果我设置错了帖子标签,我不知道该用哪个。
编辑:**此帖子假设你和我一样使用混合(CPU+GPU)** **或纯 CPU 推理。**
相似文章
llama.cpp 中的流水线并行可能浪费你的显存
测试表明,llama.cpp 默认的流水线并行浪费显存且无速度提升;通过编译时设置 GGML_SCHED_MAX_COPIES=1 可节省大量显存,同时保持相同推理速度。
比较 llama.cpp 行/张量分割与 ik_llama 图分割的双GPU推理速度
一位用户使用llama.cpp(行/张量切分)和ik_llama(图切分)在两张RTX 3080 20GB上对双GPU推理速度进行了基准测试,使用Qwen3.6-27B GGUF模型,比较了token生成和提示处理速度。
双GPU llama.cpp加速
llama.cpp的一个分支修复了量化KV缓存中的--split-mode tensor问题,在双GPU配置上实现高达40%的速度提升,且无质量损失。
Intel Arc Pro B70 llama.cpp 基准测试结果公布
Intel Arc Pro B70 GPU 在 Qwen 模型上通过 SYCL 运行 llama.cpp 的基准测试结果显示每秒 63 个 token 的性能。
@ggerganov:强调 llama.cpp 在多GPU和张量并行支持方面的最新进展 过去几个月来,llama.cpp 取得了多项…
llama.cpp 维护者与 NVIDIA 工程师合作,显著提升了 ggml 中的多GPU性能,实现了硬件无关的张量并行,并在 RTX 系统上获得了显著的性能提升。