RACER:无需训练,让大模型推理速度翻倍

一句话介绍

结合检索信号与 logit 信号生成草稿的投机解码方法,在各 benchmark 上一致实现 2 倍加速,超越所有 training-free 基线,比需要额外训练的 EAGLE-3 还快



动机

大模型做自回归解码时,每步只生成一个 token,而且前一个 token 是后一个 token 的输入,形成严格的链式依赖,需要做大量串行的前向运算,速度很慢

投机解码(Speculative Decoding) 是目前最有效的加速策略之一。它的核心思路是:

  1. 草稿阶段:一个快速的"草稿生成器"(drafter)先预测接下来的多个 token 候选
  2. 验证阶段:目标模型一次性并行验证这些候选(只需要一次前向计算)

当前常见的投机解码方法可分为两类:

模型驱动:训练一个轻量级辅助模型来当草稿生成器。代表方法有 Medusa(在目标模型顶部接多个预测头)、EAGLE 系列(利用目标模型的中间特征训练一个 Transformer 层)。效果好,但代价是额外的训练成本、显存占用和模型对齐问题。

免模型(model-free):不需要额外模型,直接从推理过程中挖掘信号。这里又细分为:

  • 检索型(PLD, REST, SAM Decoding):在已生成的上下文或外部语料中查找 n-gram 精确匹配,把匹配到的后续 token 作为草稿
  • Logits 型(Token Recycling, LogitSpec):利用目标模型每步产生的概率分布(logits),从 top-k 候选中构建草稿树

模型每生成一个 token,都会输出覆盖整个词表的概率分布------我们通常只取最高概率的那个 token,但其余 top-k 候选同样蕴含有用信息。Logits 型方法把每步的 top-k 候选保存为一张邻接矩阵("token A 后面最可能跟哪些 token"),然后从中展开草稿树。

两种免模型方法各有明显短板:检索型只在有精确匹配时才有效,遇到新内容就束手无策;Logits 型虽然不依赖匹配、任何时候都能给出候选(概率分布永远存在),但它只有模型内部的统计估计,缺乏来自实际上下文的结构性信号

解决方案

核心思想

作者提出 RACER 方法 (Retrieval-Augmented Contextual Rapid Speculative Decoding),它的洞察简洁而直接:检索提供"已见信息"(seen information),logits 提供"未见信息"(unseen information),两者天然互补,应该被统一起来

具体来说,RACER 同时维护两棵草稿树:

  • Logits Tree:基于历史 logits 的 top-k 邻接矩阵,通过 BFS 展开构建
  • Retrieval Tree:基于 AC 自动机的 n-gram 检索,通过频率排序展开

两棵树合并成一棵统一的草稿树,交给目标模型一次性验证。整个过程不需要训练、不引入额外模型、内存开销极低,真正做到即插即用。

Logits Tree 构建

如何在只有当前位置的 logits 的情况下,近似出后续的概率分布?RACER 对比了两种策略:

  • Last-Logit(直接复用当前步):假设相邻位置的分布变化不大,直接把当前步的 logits 当作下一步的近似。好比说"刚才模型觉得 A 最可能,那下一步也先按这个分布来猜"
  • Copy-Logit(复用历史同 token) :如果当前生成的 token 是 X,就去历史中找最近一次也生成了 X 的位置,把那个位置下一步的真实 logits 借过来用

在 Vicuna-7B + Spec-Bench 上,固定只展开一层草稿,取 top-63 个候选 token,然后让目标模型验证,结果如下:

策略 MAT(平均接受 token 数) 50% 覆盖所需排名 85% 覆盖所需排名
Last-Logit 1.57 Rank 11 Rank 37
Copy-Logit 1.87 Rank 1 Rank 9

Copy-logit 展示出极强的头部集中效应:在所有被接受的草稿 token 中,有 50% 恰好就是排名第 1 的候选,前 9 名就覆盖了 85%。相比之下,last-logit 需要看到 Rank 11 才覆盖 50%,分布更分散

基于上述头部集中效应,RACER 设计了一种自适应的树展开策略,简单来说就是排名靠前的子节点获得更多的展开预算(宽度),排名靠后的预算指数递减,形成上层宽、下层窄的金字塔结构

Retrieval Tree 构建

AC 自动机

已有的检索型方法(如 REST)常使用后缀数组做子串匹配,原理是将文本的所有后缀排序建索引,从而支持高效的任意子串查找。比如对字符串 "abcab",它的后缀有 "abcab", "bcab", "cab", "ab", "b",排序后建立索引,就能快速查找任意子串出现的位置

但在持续生成的场景中,它有一个致命问题:空间随上下文长度线性增长,没有淘汰机制(增删操作的代价较高),长文本生成时内存会不断膨胀

RACER 选择了 Aho-Corasick(AC)自动机作为检索结构,其本质上是一棵字典树(trie / 前缀树),额外维护了失配链接:当前路径匹配失败时,能快速跳转到最长合法后缀对应的位置继续匹配,避免从头开始。相比之下,字典树天然支持固定容量 + 节点淘汰,更适合长文本场景

LRU 淘汰

AC 自动机中存储的是已生成文本中的 n-gram 模式------比如生成过"人工智能技术"就会存入 [人工, 智能]、[智能, 技术] 等节点。随着不断生成新文本,新 n-gram 需要插入,但节点容量有上限。RACER 额外使用一个 LRU 双向链表来管理这个固定容量的缓存,并通过一张 hash map 来记录链表结点与树结点之间的对应关系。LRU 链表支持 3 种操作:

  • Touch(标记访问):匹配过程中经过某个节点时,将其移到 LRU 链表头部,标记为"最近使用"
  • Insert(插入):新 n-gram 沿字典树路径逐层插入;如果容量已满,淘汰最久未访问的叶子节点,把它重置后重新分配
  • Evict(淘汰):只淘汰叶子节点(因为 Touch 时会同时标记所有祖先,父节点永远比子节点"新鲜"),不会破坏树结构
  • 匹配:沿着目标序列在 trie 中游走,每经过一个结点都执行 Touch;匹配失败时,沿着树的 failure link 回退到最长合法后缀,并 Touch 它的所有祖先,标记为已访问,直到完全匹配或回退到根结点
  • 插入:要插入某个 n-gram 时,从 root 出发找到其前缀结点,创建新的边并 Touch 新结点;如果容量已满,找到链表尾部的结点执行 Evict

这实际上利用了自然语言的 Zipf 长尾分布 特性:少数 n-gram 反复出现(如 defreturnself.),而绝大多数 n-gram 只出现一两次。淘汰这些罕见模式几乎不会损失匹配能力。实验表明,约 10,000 个节点就足以达到最佳效果(几十 MB 内存),再增加也无显著收益

以上所有操作都在 O(1) 或 O(d) 时间内完成(d 为 n-gram 长度,通常 ≤ 10),几乎不增加推理延迟

基于频率的候选选择

检索到匹配后,RACER 不是简单取最长匹配的后续 token,而是:

  1. 收集所有匹配位置(包括通过失配链接找到的短匹配)的后续子树
  2. 按频率排序所有候选
  3. 选择出现最频繁的 top-k 候选

这确保了检索草稿兼具多样性和统计可靠性

融合策略

给定固定的草稿容量 C(默认 64),RACER 的集成策略非常直接:

  1. 检索优先:先按频率选取检索候选(因为来自精确匹配,可靠性高)
  2. Logits 补充:剩余容量分配给 Logits Tree 做 BFS 展开
  3. Trie 合并:两棵树通过字典树合并成统一草稿树
  4. 正向反馈:检索匹配到的上下文会刷新 logits 的邻接矩阵,使后续 logits 预测更准确

消融实验清晰地展示了两个组件的互补性:

去掉 Logits 的影响最大(MAT 下降超过 1),说明 logits 是投机扩展的主力。去掉 Retrieval 的影响在推理任务上尤为明显(MGSM-ZH 下降 0.7),说明检索在重复模式丰富的场景中提供了关键的结构性引导

实验结果

RACER 在三个基准上进行了全面评估,覆盖通用、代码和推理任务。

与 training-free 方法对比

在 Vicuna 系列(7B/13B/33B)上,RACER 全面超越 PLD、REST、Token Recycling、LogitSpec:

值得注意的是,RACER 的优势随模型规模增大而扩大:33B 上领先 TR 达 0.53x。

与 EAGLE-3 对比

EAGLE-3 是当前最强的 model-based 方法,需要额外训练草稿模型。虽然 EAGLE-3 在 MAT 上通常更高(毕竟有专门训练的模型),但 RACER 在端到端加速比上经常更优:

原因在于:

  1. EAGLE-3 的额外草稿模型需要计算开销,模型越大越明显
  2. EAGLE-3 在中文推理(MGSM-ZH)上表现不佳(Qwen3-8B 仅 0.86x),可能因训练数据分布偏英文

RACER 因为不依赖任何训练数据,在各语言、各任务上都保持稳定

推理模型上的表现

在 OpenPangu-7B 和 Qwen3 系列(8B/14B/32B)等推理模型上,RACER 同样表现出色。推理模型通常生成更长的输出(包含大量 <think> 思考链),这为检索组件提供了丰富的重复模式,RACER 的加速效果尤为显著。

参数鲁棒性

RACER 对超参数不敏感:

  • 草稿容量:16→64 稳步提升,64 后饱和
  • AC 自动机容量:10K~20K 节点最佳,更大无明显收益
  • n-gram 深度 × top-k 宽度:在 (9-11) × (8-10) 范围内性能平坦

采样温度鲁棒性

在不同采样温度(greedy, T=0.5, T=1.0)下,RACER 的加速比几乎不变。这意味着在实际部署中不需要为不同的解码策略重新调参

时间开销分析

在 Vicuna-7B + HumanEval 的案例研究中,草稿生成、logits 更新、检索更新的时间开销加在一起,相比模型前向计算(prefill + verification)可以忽略不计。RACER 的加速完全来自减少目标模型的调用次数,不引入显著的额外开销

相关推荐
X journey2 小时前
机器学习进阶(22):朴素贝叶斯
人工智能·机器学习
easy_coder2 小时前
Agent 学习路线:从 ReAct 到微型框架实现
人工智能·云计算
百度Geek说2 小时前
你写的 Skill,及格了吗?
人工智能
suke2 小时前
马斯克 600 亿美元收购 Cursor!史上最贵「分手费」100 亿,xAI 代码能力要起飞了
人工智能·ai编程
mit6.8242 小时前
越使用 AI,越不担忧
人工智能
前端双越老师2 小时前
为什么现在 RAG 越少越少提及了
人工智能·agent
RFID舜识物联网2 小时前
RFID耐高温标签:汽车喷涂线智能追溯的破局之道
大数据·人工智能·科技·物联网·安全·汽车
ai产品老杨2 小时前
架构实战:基于 GB28181/RTSP 多协议兼容的 AI 视频中台——支持源码交付与边缘异构部署
人工智能·架构·音视频
前端技术2 小时前
华为余承东:鸿蒙终端设备数突破5500万
java·前端·javascript·人工智能·python·华为·harmonyos