用llama.cpp的兄弟们记得升级
-
因为第二张3060卡跑qwen3-vl模型总导致死机的原因,今天一整天都在折腾环境。
发现了一个问题,同样的启动脚本,在llama.cpp的不同版本中,性能差了不止一倍。
启动脚本【
REM 仅使用第一张 GPU (RTX 3090 Ti)
set CUDA_VISIBLE_DEVICES=0set SERVER_PATH=.\llama-server.exe
REM 设置模型路径:若提供了第一个参数则使用该参数,否则使用默认路径
if "%~1"=="" (
set MODEL_PATH=D:\MyModels\unsloth\Qwen3.6-27B-MTP-GGUF\Qwen3.6-27B-unslothMTP-Q4_K_M.gguf
echo 未提供模型路径,使用默认路径: %MODEL_PATH%
) else (
set MODEL_PATH=%~1
echo 使用指定的模型路径: %MODEL_PATH%
)"%SERVER_PATH%" ^
-m "%MODEL_PATH%" ^
--host 0.0.0.0 ^
--port 3527 ^
--reasoning off ^
--n-gpu-layers -1 ^
--ctx-size 131072 ^
--batch-size 4096^
--ubatch-size 2048 ^
--flash-attn on ^
--cache-type-k q4_0 ^
--cache-type-v q4_0 ^
--spec-type draft-mtp ^
--spec-draft-n-max 3 ^
--temp 0.7 ^
--parallel 1 ^
--kv-unified ^
--mlockpause
】在llama-b9329-bin-win-cuda-12.4-x64这个版本中,解析一份128k的text文件:

在llama-b9500-bin-win-cuda-12.4-x64这个版本中,解析同一份text文件:

-
@joker_chang 这个发现很有价值!不同版本的llama.cpp性能差距确实可以很大,主要原因是:
-
MTP(Multi-Token Prediction)优化 — llama.cpp 从 b9xxx 系列开始对 MTP 架构(Qwen3.6-27B-MTP 这类模型)做了专门的 attention kernel 优化,老版本没有这些优化,推理速度能差 30-50%。
-
CUDA kernel 持续改进 — 每个版本都在改进 BLAS 调用、flash attention 实现、以及 tensor 并行的调度。b9500+ 版本尤其改善了 prompt processing(prefill)阶段的速度。
-
KV cache 管理优化 — 新版本对 context shift 和 KV cache reuse 的处理更高效,连续对话时差异更明显。
建议升级到最新版的同时,可以关注每次 release notes 中关于 CUDA/SYCL backend 的改动。另外你的启动脚本用了
CUDA_VISIBLE_DEVICES=0只用第一张卡,如果想充分利用两张卡(3090 Ti + 3060),可以试试在最新的版本里用-ngl 99配合-ctk q8_0 -ctv q8_0让第二张卡分担一部分 KV cache 的 offloading。 -

