专家优先的llama.cpp

Reddit r/LocalLLaMA 工具

摘要

一位开发者创建了llama.cpp的实验性分支,该分支仅将已使用的专家(expert)而非完整层卸载到显存,从而在RTX 2060 12GB等显存有限的GPU上为MoE模型带来了速度提升。作者正在寻找测试者,以验证其在其他Nvidia GPU上的性能表现。

此内容适用于所有拥有12GB显存的用户。嗨,我创建了llama.cpp的一个分支,实现了实验性的“专家替代层”方案。原因是我的RTX 2060只有12GB显存。听起来似乎不小,但对于密集模型来说仍然太少。正因如此,我主要使用MoE模型。 问题在于,你需要将一些层拆分到CPU上。想必大家都知道,Qwen3.6-35B-A3B每个token仅使用8个专家,其余专家未被使用。那么,为什么不将专家填满显存,而非要加载包含大量未使用专家的完整层呢? 我开始创建一个UI来监控哪些专家被使用。这已经显示出,前几层比后几层更有必要放在显存中;原因是它们比其他层更频繁地更换专家。 不幸的是,llama.cpp的n-cpu-moe会将前几层留在CPU上,所以我尝试了-ot,但那是另一个故事了。通过优化配置,我达到了大约22 tk/s。(请记住,2060的CUDA核心数量仅为3060的一半左右。) 使用默认的--n-cpu-moe,我得到19 tk/s。我只运行Q6模型,因为编码时的退化很明显。我的上下文未量化(同样原因),而且由于Java开发,我需要100k的大上下文窗口。 然而,使用我的专家变体,命中率约为62%,速度提升到了26 tk/s。盈亏平衡点出现在42%的命中率。这意味着提示词在缓存中使用了GPU上所选专家中的42%。 当我测试较小的RAM大小(内置参数用于指定显存使用量)时,我想到了另一个用例。通过良好的配置文件,你可以在不牺牲速度的情况下大幅减少显存使用。 现在,我的问题是:有人愿意测试一下吗?我真的很想知道它在3060/4060或类似显卡上的表现。(需要CUDA,以及Qwen 35B A3B或Gemma 26B A4B)。**目前仅限Linux上测试。** 真的,我并不想赚取任何星星之类的。我不在乎;我只想知道它在哪些NVIDIA显卡上能提升多少token生成速度。 需要以下操作: 检出并构建 [https://github.com/adrianhoehne/llama.cpp](https://github.com/adrianhoehne/llama.cpp) 然后使用额外参数启动: ./build/bin/llama-server --moe-layer-perf-out experts.json \ --cpu-moe \ --ctx-size 100000 \ --parallel 1 然后启动一个提示词并等待。这比平时更长,因为所有专家仍在CPU上。之后,将参数替换为: ./build/bin/llama-server --moe-hot-cache experts.json \ --moe-hot-cache-max-mib -1 \ --moe-hot-cache-auto-reserve-mib 1024 \ --moe-hot-cache-update-rate 0.10 \ --cpu-moe \ --ctx-size 100000 \ --parallel 1 并开始测量。 我还将专家使用情况的视图添加到了Llama UI中:[UI按钮](https://preview.redd.it/1yy5050qgp2h1.png?width=238&format=png&auto=webp&s=d088ae8ce597204f19f68f828be5be1da1fc2d9d)
查看原文

相似文章

花了3天在搭载40GB显存笔记本+TB4外置显卡的独特组合上,对llama.cpp的各类标志参数进行基准测试。最终实现:生成速度提升70%、预填充速度提升40%、上下文容量增加6万token,并向llama项目提交了关于MTP的技术问题报告。以下是实践中的关键发现。

Reddit r/LocalLLaMA

作者在配备RTX 4090笔记本显卡和AMD XTX 7900外置显卡的混合GPU环境中对llama.cpp运行参数进行了基准测试,实现了生成速度提升70%、预填充速度提升40%,并在多GPU配置中发现了一个与MTP相关的错误。