在 M3 Ultra 上原生支持 DSpark MTP 的 DeepSeek V4.1F Q4(40 t/s / 800 t/s)

Reddit r/LocalLLaMA 工具

摘要

作者针对 Apple M3 Ultra 优化了 DeepSeek V4.1 Flash,使用 DSpark 推测解码实现了高达 40 t/s 的解码速度,同时保持了与上游模型字节级一致的准确性。

我喜欢 DeepSeek V4.1 Flash 作为代理模型,但在 ds4 上以 16 t/s 的速度运行,等待一个真实的回合非常痛苦。看来一些 Reddit 用户和 M3 Ultra 用户欣赏我对 GLM 53 Flash 的优化,所以我 fork 了 antirez/ds4 以适配 V4.1 Flash,看看我为 GLM 在 M3 Ultra 上优化的经验能有多少应用到此处。很多都适用了,但没有我期望的那么多。 截图是我的用户界面中一个真实的 91 分钟代理回合:解码了 101k 令牌,预填充了 4.6M 令牌,缓存命中率为 99.5%,56 次工具调用(无错误),上下文从 3k 增长到 127k。 https://github.com/IngeniousIdiocy/ds4-v41-m3ultra#v41 上游 ds4 与本分支的比较,相同 Mac,Q4 权重: - 解码,8k 上下文:16.6 → 31.3 t/s - 解码,300k 上下文:14.0 → 28.3 t/s - 预填充,62k 提示:737 → 813 t/s - TTFT,23k 系统提示:35.8 秒 → 31.1 秒 - 相同提示通过磁盘 KV 缓存恢复:0.23 秒 - DSpark 在代码上,串行 → 推测:32.1 → 40.5 t/s - DSpark 在代理回合,答案阶段:31.3 → 41.3 t/s 在贪心解码下,输出与上游字节级一致,包括开启 DSpark 时。SHA-256 清单和重新运行它们的脚本都在仓库中。 解码:模型每个令牌读取约 14 GB 的权重。在 700 GB/s 的带宽下,解码上限约为 50 t/s。上游为 16.6 t/s。损失在于每个令牌的数百次小分发,而不是矩阵乘法。所有层在一个命令缓冲区中处理。Engram 行获取在工作者池中运行,而不是在关键路径上。384 专家路由器是一次分发,而不是九次。共享专家门控+上投+SwiGLU 是一个内核。BF16 舍入在生成内核内部完成,移除了约 770 次重新舍入分发。超连接预测在投影内核内部运行。 深度解码:V4.1 的压缩注意力从整个上下文中为每层选择 512 个块。这个选择链在长上下文时是减速的 98%。现在各层只对掩码允许的块进行评分,每行压缩一次允许的索引,并使用有界基数选择选择前 512 个。300k 解码达到 8k 速率的 90%。 预填充:预填充只提升了 10%,这已经是极限了。预填充是计算密集型的。矩阵工作占一半时间,上游的 GEMM 内核已经运行在测量上限的 95-100%。M3 的 Metal GEMM 在这些形状上最高达到 23-24 TFLOPS,而 Metal 4 TensorOps 路径在 M5 之前的硬件上被禁用。增益来自注意力核心、Engram 磁盘等待和粘合层。每个 8k 块现在写一个可继续的检查点,这样长提示可以恢复而不是重新开始。 DSpark:V4.1 自带自己的多令牌起草器。开启后,解码步骤是一个 6 行验证,而不是一行。因此目标不再是串行 t/s,而是每个提交令牌的权重字节。6 个验证行通过成对的 Q8 投影共享一个权重流。所有 6 行的 Engram 获取重叠。验证块独立提交。验证从每个块的 177 毫秒减少到 112 毫秒,权重带宽从 213 增加到 337 GB/s。准入控制器移植自我的 GLM-5.3 分支。它测量每个请求的墙时间,拒绝起草器不确定的草案,并在起草失败时退避。保持开启。在温度 > 0 时,它执行精确的推测采样。起草器故障会禁用该会话的 DSpark,而不是猜测。 磁盘 KV 缓存:在每个块边界进行全前缀快照。恢复时间为 0.23 秒,而冷启动为 31 秒。驱逐保留一个路标阶梯,并衰减旧条目的分数,这样长时间聊天不会驱逐自己的历史。设计与我的 GLM 分支相同。 准确性:这些都没有改变模型的计算内容。每个内核都以与它替换的上游内核相同的数学和顺序执行,因此输出是相同的,而不是接近的。在贪心解码下,本分支在所有固定项上产生与上游相同的字节,无论是否开启 DSpark,仓库中的清单允许你自己检查。这里没有用质量换速度。 仓库中还包括:每分发带宽账本、一个在单个驻留服务器中运行两个配置的 A/B 固定项,以及保真度清单。CHANGES-V41.md 列出了尝试和拒绝的内容,并附有数字。 本分支仅适用于 M3 Ultra。这些权重需要约 300 GB 的 RAM,目前 512 GB M3 Ultra 是唯一有足够内存的 Apple 机器。除此之外,优化依赖于对该特定芯片的详细测量:其双芯片内存行为、每核驻留和带宽,以及 Metal 如何在其 80 个 GPU 核心上调度分发和线程组。我们正在针对一台机器、一组权重(Q4)优化一个模型的实际执行,并检查预测的内核节省是否在完整解码或预填充中存活。权重不重新分发。目标是上游发布的 Q4 GGUF,通过其下载脚本获取。起草器 GGUF 为 7.8 GB,你可以从官方检查点的三个分片中的 mtp 张量自己构建。命令在 README 中。 感谢 antirez 的 ds4。
查看原文

相似文章

如何在M3 Ultra上让DeepSeek V4 Flash快12倍

Reddit r/LocalLLaMA

作者通过优化内核和实现有效的缓存策略,在Mac Studio M3 Ultra上将DeepSeek V4 Flash的速度提升了12倍,将聊天轮次延迟从6-20秒降低到1.6秒。