大模型装不下,也不必一次全搬进来
想象一家厨房有上百位厨师,但每道菜只需要其中几位。真正麻烦的不是厨师人数,而是怎样提前叫对人,并让他们及时赶到灶台。大型 MoE 模型也有类似问题:MoE(Mixture-of-Experts,混合专家模型)包含许多“专家”子网络,每次生成文字只启用一部分。模型总体很大,实际计算却不需要同时动用全部专家。
Betelgeuse 想做的,就是在 RTX 3060 12GB 显存、16GB DDR4 内存和消费级 NVMe 固态硬盘上,运行约 100GB+ 级的 Qwen 3.8 Flash Next IQ4_XS。IQ4_XS 是一种 4 比特量化版本——量化指用更少比特保存模型权重,从而压低存储需求。这里的“16GB 内存跑模型”并不等于模型完整装进了内存;它还依赖显卡和固态硬盘,并不断换入、换出专家。
本文的性能与正确性数据均来自作者 zyxciss 在 Reddit 发布的两轮测试,尚无论文、第三方复测或完整日志独立印证。
先猜谁上场,再安排搬运
普通的 CPU/GPU 卸载,会把权重和计算分摊到显卡、处理器及系统内存,让显存装不下的模型仍能运行。但如果每生成一个 token——模型输出文字时的基本单位——都要临时从固态硬盘寻找专家,显卡就会频繁等数据。
Betelgeuse 的思路是提前预测下一步可能启用哪些专家,再安排搬运。它在显存里维护“专家槽池”,把近期可能使用的专家放在最靠近计算的位置;被显存淘汰的专家进入主机内存的 victim cache,也就是一层接替显存的缓存;更冷的数据才留在 NVMe。异步 DMA 则让硬件在后台搬运数据,尽量把传输时间藏在计算过程里。说白了,它不是让小房间突然变大,而是改进进出房间的排班。
作者还强调,这一版不再靠丢弃专家换速度。他此前曾用 gate pruning——忽略路由权重较低的“冷门”专家——做出更高数字,后来认为这会损害低比特模型的输出质量与推理能力,因此废弃原型。作者称,IQ4_XS 测试没有丢弃专家,并相对 stock llama.cpp 保持 100% Byte-Exact,也就是输出字节完全一致。不过,这仍是作者自测结论。
同样是16GB,插法差出十个 token
最直观的一组结果来自两种总容量相同的内存配置。
在单条 16GB DDR4、约 19GB/s 内存带宽下,Betelgeuse 跑 IQ4_XS 达到 14.0 tok/s。作者报告,同一环境中 stock llama.cpp 约为 0.5 tok/s,Strata 的 --low-ram 模式约为 4—5 tok/s。
换成两条 8GB DDR4 组成双通道后,总内存仍是 16GB,带宽却约增至 38GB/s。Betelgeuse 随之升到 24.0 tok/s;作者报告 stock llama.cpp 约为 0.6 tok/s,Strata 约为 5—6 tok/s。作者把这次提升归因于内存带宽翻倍:显卡的数据搬运引擎和 CPU 不必再争用同一条内存通道。
据 Reddit r/LocalLLaMA 与 Rekenkracht.net 整理的公开过程,首轮测试受到“为何使用单条内存”的质疑,作者随后换成同容量双通道重测。这个来回比单个跑分更有启发:本地模型的速度不仅取决于内存有多少,也取决于数据能多快穿过内存。
另一组 2 比特 IQ2_XS 测试提供了补充参照。作者称,这个约 68GB 的构建在 RTX 3060 12GB 加单条 16GB DDR4 上持续约 22.03 tok/s,峰值可到 48 tok/s;stock llama.cpp 为 1.47 tok/s,Strata 为 8.11 tok/s。需要分清:48 tok/s 属于 2 比特版本,不能套到本文标题所说的 4 比特版本上。
为什么值得关注
Betelgeuse 有意思的地方,不只是把一个百GB级模型塞进消费级机器,而是展示了一种更现实的本地推理路线:显存、内存和固态硬盘不再被当作彼此割裂的仓库,而是组成分层缓存;专家预测负责猜下一步要什么,调度系统负责提前搬到位。
它也是 llama.cpp 的一个 fork——即从原项目代码分出的修改版本——提供 bel-cli 和 bel-server。作者称还会向上游提交较干净的 PR,也就是请求原项目接纳这些改动。若方案能经受更完整的复现与审查,它的意义会超过一次硬件跑分。
局限与未知
- 两轮数据来自同一作者账号,尚无第三方复测;stock llama.cpp 与 Strata 的版本、参数及缓存冷热状态也可能影响对比。
- “100% Byte-Exact”和“0 dropped experts”未披露完整测试语料、采样参数、上下文长度、校验范围与可复现日志。
- 首轮 IQ2_XS 测试明确使用
MemoryMax=12G的 cgroup 内存限制,后续 IQ4_XS 测试是否沿用同一限制并不清楚;现有材料也不足以核实全部实现细节。