一个 llama.cpp PR 在 GPU 上缓存“热”MoE 专家 — 8GB VRAM 下报告 33 → 56 tok/s
摘要
一个 llama.cpp PR 增加了基于热力图的“热”MoE 专家 GPU 缓存,在 8GB VRAM 下对某些模型将 tok/s 提升了约 1.7-2 倍,但对其他模型结果不一。
一个全新的 llama.cpp PR(#26563)增加了一个热力图,用于追踪哪些 MoE 专家最常被使用。它不会将所有专家都放在 GPU 上,也不会全部卸载到 CPU,而是将频繁被选中的专家缓存在显存中,同时让冷专家继续在 CPU 上运行。作者在 Qwen3.6-35B-A3B + 8GB VRAM 上的结果:
Q2_M: 33.25 → 56.0 tok/s(1.68 倍)
Q5_K_P: 17.34 → 35.93 tok/s(2.07 倍)
使用 --expert-hot-s -1 启用 Autofit
负面结果可能更有意思:启用缓存后,Qwen3.5-122B-A10B 和 Laguna-S-2.1 实际上变慢了。所以这显然不是一个通用的“让 MoE 更快”的开关。我猜测,只有当专家复用度足够高,足以抵消额外的追踪和缓存管理开销时,它才会有帮助。
目前的局限性:
仅支持 CUDA
仅在单 token 解码期间生效
根据缓存的专家不同,输出可能会有轻微差异
仍是一个开放的 PR,尚未合并进 llama.cpp
这看起来是一个有用的方向,可以让我们在消费级 GPU 上运行更大的 MoE 模型,而不用使用极低量化来“毁掉”它们。有人在 3060、4060 或其他 8–12GB 显卡上测试过这个分支吗?我特别想看看在编程、普通聊天和长上下文工作负载下的命中率和 tok/s 对比。
来源:llama.cpp PR #26563
相似文章
专家优先的llama.cpp
一位开发者创建了llama.cpp的实验性分支,该分支仅将已使用的专家(expert)而非完整层卸载到显存,从而在RTX 2060 12GB等显存有限的GPU上为MoE模型带来了速度提升。作者正在寻找测试者,以验证其在其他Nvidia GPU上的性能表现。
@leftcurvedev_: 任何拥有8GB或12GB显存配置的用户都需要明白,“-ncmoe”是在llama.cpp上提升性能的关键标志…
解释了llama.cpp中的-ncmoe标志如何通过将部分专家层卸载到CPU+内存,在有限显存(8-12GB)上提升MoE模型(如Qwen3.6 35B A3B)的性能,基准测试显示在RTX 3070Ti上可实现高达5倍的加速。
在老款GTX 1080(8GB显存,128k上下文)上,约30B的MoE模型达到24+ tok/s的推理速度
一位开发者展示了如何使用llama.cpp,通过MoE卸载和TurboQuant KV缓存量化技术,在老款GTX 1080(8GB显存)上以128k上下文运行Qwen 3.6 35B-A3B和Gemma 4 26B-A4B等MoE模型,达到24+ tok/s的推理速度,并揭示了针对Gemma MTP投机解码的优化技巧。
Llama.cpp PR 带来 8% 速度提升
一个 llama.cpp PR 将采样从 CPU 移至 GPU,在 RTX 5090 上为 Qwen3.6-35B 推理带来 8% 的 token 速度提升,在 Tesla P40 上约为 4%。
llama.cpp 在混合专家模型(MoE)和 GPU+CPU 卸载场景下,P 核比 E 核更慢?
观察到在使用 GPU+CPU 卸载运行混合专家模型时,llama.cpp 在 P 核上的运行速度比 E 核慢。