VRAM 中的 2 位副本 + 系统 RAM 中的精确残差作为验证器:为无法装入 GPU 显存的模型实现推测解码

Reddit r/LocalLLaMA 论文

摘要

一位业余研究者提出了一种推测解码方案:由 GPU 上的 2 位模型副本草拟 token,而系统内存中的完整残差(6–8 位)负责验证它们,两者仅通过 PCIe 交换激活值。初步测量表明,2 位模型加 8 位残差的质量优于 Q8_0,且这款 2 位草拟模型的接受率超过了 Gemma 4 的官方草拟模型。

大家好!最近我做了一些研究和开发,但没有时间继续深入这个想法了(孩子、工作等等)。不过,也许有人会感兴趣。我不觉得这会是什么重大成果,但它或许是一种有趣的方法,可以用于某些场景。我相信这不是 AI 垃圾内容,你们可以利用这些信息,借助 Claude 或 Astra 自己试一试。这个想法是我自己提出的,我也正在自己的生产环境应用中使用它,它帮我省了很多钱(项目与 LLM 无关)。不确定它是否已经过时,它也可以与 MTP 配合使用。请大家友善一些。我只是把自己的想法分享给大家,欢迎任何人尝试。太长不看版:在 GPU 上保留模型的一个 2 位版本,把其余权重(6–8 位的残差部分)放在系统内存中。2 位副本先生成草稿 token,再由完整模型进行验证:GPU 计算 2 位部分,CPU 计算残差部分,只有激活值通过 PCIe 传输。因此,草稿模型不会额外占用内存,它本身就是验证模型的一部分。我的测量结果(使用真实权重,但先反量化后在 PyTorch 中运行,所以暂时还没有每秒 token 数的数据):- 2 位 + 8 位残差比 Q8_0 更接近 bf16,KL 散度约为其一半 - 使用 6 位残差时,可以达到 Q8_0 级别的质量,同时从内存读取的字节数减少约 28% - 复用验证模型 KV 缓存的 2 位草稿模型,每次验证所接受的 token 数比 Google 官方 Gemma 4 草稿模型多 25–30%(31B,16 节点树:5.23 对 4.20)- 我的 CPU 内核验证 16 个 token 所需的时间与验证 1 个基本相同,因为瓶颈在内存带宽。我找到的最接近的方案是 SubSpec,但它使用独立的 4 位副本,并通过 PCIe 流式传输权重,而不是按位拆分模型。这个方案只有在你的显存装不下 Q8 时才有意义。如果装得下,直接用 llama.cpp 就好。这是公开仓库的链接,希望能对某些人的研究有所帮助 https://huggingface.co/HappyGuitar123/twobit-residual-spec 我也建议使用某个前沿大语言模型,以高推理强度来分析它,这样你会获得更深入的理解。我相信这个想法有一定潜力。祝好
查看原文

相似文章

投机解码的验证感知训练

Hugging Face Daily Papers

验证感知训练(VAT)通过在训练中模拟顺序验证并自适应损失权重以匹配接受模式,改进投机解码的草稿模型,从而提升接受长度和推理加速。

什么是推测性解码?(在paperswithco.de上热门)[R]

Reddit r/MachineLearning

推测性解码是一种推理优化技术,它使用快速草稿模型提出未来 token,并由较大模型并行验证,从而提高 LLM 的生成速度。文章强调了它在 Papers with Code 上的热门状态,以及最近的 SGLang 博客文章,该文章介绍了使用 DFlash 模型实现的最先进延迟。