Luce Spark:无需卸载开销,在16GB GPU上运行35B MoE模型
摘要
Luce Spark 是一款开源工具,通过智能地将热门专家缓存到 GPU 上,同时将其他专家保留在系统 RAM 中,从而在 16GB GPU 上运行 35B MoE 模型。它采用校准放置和有限异步缓存,保持高吞吐量,避免了常见的卸载速度断崖。
各位 Llamas 朋友,时间宝贵,所以我会尽量简短(同时尝试解释所有内容哈哈)。**TL;DR:**
* **在 16 GB GPU 上运行 33-35B MoE 模型。** Qwen3.6 35B-A3B:13.3 GiB(原需 \~20.5)。Laguna XS.2 33B-A3B:14.6 GiB(原需 18.8)。均在 RTX 3090 上测量,均低于 16 GiB。
* **只有活跃的专家留在 GPU 上。** A3B 模型每个 token 路由到 \~8 个(共 256 个)专家。Spark 会校准你的流量命中哪些专家,并保持这些专家为热点;长尾专家位于系统 RAM 中,通过有界 GPU 缓存按需交换。
* **自我调优。** 专家放置策略从实时路由中学习,并保存在模型旁边。每次重启都会加载更优的配置文件。无需语料库,也无需离线校准步骤。
* **一条命令,两种后端。** `dflash_server <model.gguf> --spark` 适用于 laguna 和 qwen35moe。服务器会自动选择缓存大小,如果存在已学习的配置文件则加载,并持续保存。
* **无速度断崖的卸载。** 在卸载模式下,laguna 将整个 token 作为**一个融合图**运行,而非 40 个逐层图。完全驻留时,该图与全 GPU 运行**位相同且速度相同(119 tok/s)**;60% 驻留时保持 **\~100 tok/s**(是朴素卸载 66 tok/s 的 1.5 倍)。
该项目开源,可在此处找到:[https://github.com/Luce-Org/lucebox-hub](https://github.com/Luce-Org/lucebox-hub) (Apache2.0)。核心思路并不神奇。专家卸载早已存在:llama.cpp (--n-cpu-moe / --cpu-moe)、ktransformers、ik\_llama.cpp 都支持。将热门专家保留在 GPU 上,其余留在 RAM 中是标准技巧。其工作原理分为三个部分:
* **校准放置(Calibrated placement)。** Spark 从真实请求中累积每个(层,专家)的路由频率,并固定最常用的集合。在保留流量上,这使冷命中率从 36%(均匀分割)降至约 7%。
* **有限异步缓存(Bounded async cache)。** 一个固定大小的备用 GPU 插槽环。当冷专家命中时,权重从固定的主机内存异步复制(与计算重叠)到备用插槽中,并驱逐 LRU 条目。未命中只会降低吞吐量,不会引起停顿。该环是对热门专家栈的少量过度分配,因此交换只需复制三个权重张量并更新一个路由条目,由现有 GPU FFN 处理,无需特殊路径。两种后端采用相同机制。
* **一个融合图(One fused graph)。** 卸载路径原本每个 token 构建 40 个逐层图。将路由 FFN 合并到注意力图中,并将整个 token 作为一个图运行,消除了提交开销。完全驻留时,融合解码与全 GPU 位相同(128/128 token,由 spark/bench.py 验证),并以相同的 \~119 tok/s 运行。
***内存,RTX 3090 上的峰值显存,上下文 4096:***
`\`模型 全 GPU Spark 节省 是否适合 16GB\`\`
`\`Laguna XS.2 33B-A3B 18.8 GiB 14.6 GiB 4.2 GiB 是\`\`
`\`Qwen3.6 35B-A3B \~20.5 GiB 13.3 GiB \~7 GiB 是\`\`
***速度,提升来源:***
`\`配置 解码速度 占全 GPU 百分比\`\`
`\`朴素卸载(均匀) 66 55%\`\`
`\`Spark,校准放置 81 68%\`\`
`\`Spark,校准 + 缓存 + 融合图 \~100 \~85%\`\`
`\`全 GPU(需要 24 GB) 119 100%\`\`
***一条自我调优命令:***
`# laguna 或 qwen35moe,使用相同标志`
`\`dflash\_server models/Qwen3.6-35B-A3B-Q4\_K\_M.gguf --spark\`\`
`# 可选:每层缓存槽数(默认 32)`
`\`dflash\_server models/laguna-xs2-Q4\_K\_M.gguf --spark --spark-slots 48\`\`
***诚实的局限性:***
* 在 RTX 3090(24 GB)上测量。峰值 VRAM 低于 16 GiB,但我们尚未在真正的 16 GB 显卡上运行。如果有人拥有 4060 Ti 16GB / 5060 Ti 16GB,我非常希望得到真实数据。
* 卸载仍略逊于全 GPU。缩小最后 \~15% 的差距需要更多显存或预测下一个专家,而 token 级预测的召回率上限约为 53%,因此这是未完成的工作,并非免费午餐。
* 尚未在相同设置下与 llama.cpp --n-cpu-moe 进行直接对比。这是最想添加的比较。我们为此付出了巨大努力以帮助本地 AI 社区。当然也可能存在错误。欢迎任何反馈!
编辑:让帖子更简洁了,抱歉各位😂
相似文章
@sudoingX: 那些用16GB显卡的,别再滑了。@pupposandro 和 @davideciffa 把 qwen 35b-a3b 压缩到13.3GB,在……上实测
一种名为 luce spark 的技术让 Qwen 35B-a3B MoE 模型能够在16GB GPU(如RTX 3090)上运行,通过学习哪些专家被频繁使用,并将其余专家从内存流式加载,实现约100 tok/s,且不受显存瓶颈限制。
在老款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投机解码的优化技巧。
Luce Megakernel: 为什么没有人谈论这个?
Lucebox Hub 为本地 LLM 推理提供优化的 CUDA 内核(Megakernel、DFlash、PFlash),在各种模型和 GPU 上相比 llama.cpp 实现了显著的加速(2-10 倍)。
@tom_doerr: 在单个4GB GPU上运行70B大语言模型 https://github.com/lyogavin/airllm
AirLLM是一个开源工具,优化推理内存使用,无需量化即可在单个4GB GPU上运行70B大语言模型,并支持在8GB显存上运行405B模型。
@outsource_: 全新 GLM+ Qwen 18B 可在消费级 GPU 上运行,仅用一半显存就打败 35B MoE
全新的 18B 融合量化模型 Qwopus-GLM-18B-GGUF,仅用一半显存即可在消费级 GPU 上运行,性能超越 35B MoE 模型。