Wink Pings

RTX 3060 跑 400GB 的 DeepSeek:prefill 提速 10 倍,评论区先对起了账

有人用 Betelgeuse 在 12GB 显卡加 16GB 内存上跑 DeepSeek V4.1 Flash,prefill 从 3 tok/s 提到 62 tok/s。但帖子里的量化版本和模型体积对不上,作者说是 Claude 写错了。

一张 RTX 3060 12GB,16GB 单通道 DDR4 内存,跑 DeepSeek V4.1 Flash,decode 18 到 19 tok/s。帖子发在 r/LocalLLaMA,作者 zyxciss。

先补背景。DeepSeek 这类 MoE 模型,专家层多,整体权重远超单卡显存。out-of-core 的做法是把大部分专家权重放在 SSD 或内存里,用到哪个加载哪个。麻烦出在 prefill。你发一段 prompt,模型要处理所有 token,batch 内不同 token 激活的专家合起来几乎覆盖全部层。标准实现按顺序从硬盘流式读,GPU 干等,首 token 时间能拖到几十秒。之前对这个路线的普遍印象是:能跑,但没法交互。

zyxciss 说他们在 Betelgeuse 里把这个问题修了,做法有三点:

  1. 每层维护 20 个常驻槽位,5 个在显存,15 个在内存,路由互不干扰。
  2. prefill 不切成 3 token 的小批次,按 16 token 一批走,内存里的专家通过 PCIe 并行流入执行环。
  3. 第一遍跑完后,把 prompt 和早期生成最常用的 top-5 专家物理换进显存热槽,不改变逻辑路由。

结果 warm prefill 从 3 到 6 tok/s 提到 61.80 tok/s,TTFT 基本即时。decode 稳定在 18 到 19 tok/s,磁盘读降到 0.00%。他们还用了 DeepSeek 原生的 DSpark drafter,p_min 0.50,结构化代码上接受率 80% 到 90%。

配置细节:Q8_XL expert backbone 加 IQ4_NL Engram 表,DeepSWE 72.3 分。110GB 的 Engram 表全放 NVMe,只在第 1 和第 14 层激活,每 token 碰 48 行约 192KB,用一个 2MB 的显存缓冲承接,不占内存。系统是 CachyOS,跑在 MemoryMax=12G 的 cgroup 里,0 swap。模型总大小 305.6+110.6GB。发帖人还提了一句,换双通道 16GB 内存,PP 能从 61 tok/s 到 120 tok/s。

帖子附带的运行截图

帖子给了一张 Betelgeuse 和 Strata 的对比表,挑关键几行:

指标BetelgeuseStrata
GPURTX 3060 12GBRTX 5070 12GB / RTX 3060 12GB / 4× R9700
内存16GB64GB(5070)/ 46GB(3060)
存储1.7 GB/s NVMe3.6 GB/s NVMe(5070)
Warm PP61.80 tok/s121 tok/s(4K)到 231 tok/s(8K),5070
PP(3060)61.80 tok/s149 tok/s(8K)
Warm Decode18.15–18.92 tok/s8–10 tok/s(3060 + 64GB)
Decode 峰值27.92 tok/s9.9 tok/s(代码)
量化Q8_XL(UD-3.1)GSQ-RCO IQ2_XS

两边测试条件不完全对齐,Strata 有些数字是 RTX 5070 跑出来的,对比只能看个大概。

帖子发出来,评论区先没聊技术,先对起了账。

有网友 bobaburger 指出,GitHub readme 上写的是 UD-Q2_K_XL backbone 加 IQ4_NL Engram,18 tok/s,帖子里说 Q8,结尾又提 Q4,到底哪个是准的。zyxciss 回复说,是 Claude 弄错了。

另一位 Skyline34rGt 说得更直接:300GB 加 100GB 的 ngrams 规模,对应的是 iq2xxs 加 iq4 ngrams,不是 Q8 或 Q4。按他的说法,Q4 和 Q8 都应该超过 500GB,还要另算 ngrams。

这就有点尴尬。帖子标题和正文反复强调 Q8_XL,但按模型体积推算,更像是低比特量化。发帖人把锅甩给了 Claude,没给进一步解释。

其他跟帖里,有人问 context 长度,没得到回复。有人问 62 tok/s 的 prefill 算不算可用。有人问双 GPU 支持,有人问 3080 16GB 和 5070 Ti 能不能跑。还有人吐槽链接 404,zyxciss 说修好了。另外他提到 bel-cli 末尾会循环输出,是 bug,bel-server 正常。

有个叫 AvidCyclist250 的网友分享了自己的体验:4080 加 64GB 内存,用 Strata 跑 deepseek q2,16 t/s,但 NVMe 持续高负载,他不喜欢,换回了 qwen 的量化版。

回到这件事本身。out-of-core MoE 的 prefill 优化是真问题,Betelgeuse 提的三点做法也有具体工程细节。但一篇技术帖,最关键的量化版本被网友用算术当场质疑,作者只用一句“Claude 弄错了”带过,这让人没法直接采信那些速度数字。

GitHub 链接在帖子末尾,想试的人可以先看 readme 里的实际配置,再决定要不要花时间。

发布时间: 2026-11-08 03:58