Luce Spark:无需卸载开销,在16GB GPU上运行35B MoE模型

Reddit r/LocalLLaMA 工具

摘要

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 社区。当然也可能存在错误。欢迎任何反馈! 编辑:让帖子更简洁了,抱歉各位😂
查看原文

相似文章

Luce Megakernel: 为什么没有人谈论这个?

Reddit r/LocalLLaMA

Lucebox Hub 为本地 LLM 推理提供优化的 CUDA 内核(Megakernel、DFlash、PFlash),在各种模型和 GPU 上相比 llama.cpp 实现了显著的加速(2-10 倍)。