[论文] RidgeFill:无训练的深层缓存填充,加速 Prefill

Reddit r/LocalLLaMA 论文

摘要

RidgeFill 通过用闭式解岭回归预测深层输入、跳过大部分上层计算来加速 LLM prefill,在 Qwen3.8 系列上实现最高 1.6x 的 TTFT 提速,且几乎不损失检索精度。

我们提出 RidgeFill,这是一种无需训练的方法,通过不对 prompt 计算模型的大部分上层来缩短 prefill。底层完整运行到某个切分点;从切分层的状态出发,一个一次性用闭式解拟合的岭回归预测之后每一层的输入,每个后层据此预测写入自己的缓存,其自身的投影保持不变。被选中的一组行——最后几千个 token 和每个解码步骤——仍运行完整模型,因此无需训练任何内容,也不会丢弃任何 token。在 vLLM 中的 Qwen3.8-Flash-Next 上,在 9K 到 32K token 时首 token 时间(TTFT)比精确计算快 1.50 到 1.60 倍,一个完整的 64K 请求从 82.6 秒降至 47.5 秒,而 RULER 的 needle 任务得分为 99.8(对照 100.0)。在单张 A100 上的 llama.cpp 分支中运行 Qwen3.8-27B,在 16K 到 120K token 时快 1.25 到 1.31 倍;RULER 变化为 -1.2 和 -1.4 分,LongBench v2 为 -1.4,95% 置信区间包含零,但不能排除几个百分点的损失。在三个 8 到 9B 的参考模型上,拟合的映射在两个稠密模型上比恒等(即完全绕过该层)填充多找回 49.1 和 49.6 个填充区域的 RULER 分数。 - OpenReview(存档副本) - PDF - DOI - 项目主页 - GitHub(Qwen3.8 27B 的 llama.cpp 分支,快速开始) - GitHub(数据) - HuggingFace(五个模型的映射) 这个想法最初源于 DeepSeek 的 V4.1 架构。起初我们发现该方法是一个可移植的思路,适用于其他模型,但注意到在上下文召回任务和整体可用性上有明显下降。这在 DSV4.1 中并不是问题,因为模型是带着 prefill 近似整体训练的,所以模型吸收了误差,大体上如此。于是问题转向了如何将这种方法适配到其他模型上,同时提升可用性。从那时起,工作主要转向探究误差究竟存在于"填充"区域的何处,以及如何测量并降低这种误差。基于这些发现,我们意识到可以更密集地训练这个组件来消除误差。这与我们让社区更易采用的目标相悖。它也可能带来下游影响,使训练后的组件更依赖具体任务、更不具泛化性。我们决定不这样做。相反,我们只是选择简单地绕过 prefill 中最敏感部分的投影。通过接受这一点,每个人都可以用标准的本地推理级硬件在不同模型上产生自己的方法实现。如果你选择采用这种方法,我强烈建议针对每个模型分别调整其机制。在不同架构之间,这种方法应当进行调优。论文中为追求这一目标,进行了相当详尽的消融实验和测量。Qwen3.8 27B 版本现已可通过我们的 llama.cpp 分支和 HF 上的 RidgeFill 文件使用。该方法也已在 tcclaviger 的 vLLM 分支和 Deadcode 的引擎 Radiance(仅限 v1.3.0)中实现,适用于 Qwen3.8 Flash Next。非常感谢所有测试者以及 Launch80 社区的支持!
查看原文

相似文章

CacheScope:用于免训练扩散模型加速的精确计算分配

arXiv cs.LG

CacheScope 提出一种无需训练的扩散模型推理加速方法,通过归一化浅层探测变化信号,在线识别高风险缓存步骤并回退到精确计算,在 FLUX.1-dev、Wan2.1 和 Open-Sora 上实现最高 3.57 倍加速,并使 LPIPS 中位数降低 70.1%。