FlashMap 投机解码:Qwen3-8B 加速 6.14 倍与 16 token 草稿

一句话结论:FlashMap 用连续流映射替换了块扩散草稿器,一次前向起草 16 个 token,在 Qwen3-8B 上把无损解码加速推到 6.14 倍,代价是训练侧要烧掉约 4600 张 H200 卡时。

大模型推理的成本账单里,解码阶段一直是最难压缩的一块。预填充是并行的,prompt 越长越划算;解码是严格串行的,每吐一个 token 都要把整个模型权重过一遍。投机解码给出了这条路上最主流的解法:先让一个轻量草稿器写出若干 token,再让目标大模型一次性并行验证,只保留其中与自身输出一致的最长前缀。整个过程是无损的,输出与不开投机解码完全相同,收益只取决于两件事,草稿被接受多少,以及草稿本身有多便宜。

过去两年里草稿器的形态换过几轮。EAGLE-3 走自回归路线,轻量但要一个 token 一个 token 地写,草稿越长成本越高。DFlash 换成块扩散,一次前向写完整块,速度上来了,代价是块内每个槽位独立预测,忽略了槽位之间的依赖。2026 年 10 月 17 日,Polymathic AI 与普林斯顿大学、USC ISI、纽约大学、Flatiron 研究所联合发布的 FlashMap 给出了第三条路径,把离散扩散换成连续流映射,在保住一次前向写完整个块的同时,重新把块内的联合结构建模回来。

接受长度才是投机解码的胜负手

投机解码的加速比不取决于草稿器写得多快,而取决于目标模型接受它写出的概率。论文里用的指标叫接受长度,含义是每一轮实际提交的 token 数,其中包含目标模型自己产出的那 1 个。接受长度越高,目标模型被调用的次数越少,加速越明显。

以 FlashMap 在 Qwen3-8B 上温度为 0 的 GSM8K 为例,接受长度 7.69 意味着目标模型平均每验证一次就能确认 6.69 个草稿 token。同一套数据下 DFlash 的接受长度是 7.43,EAGLE-3 是 6.75,差距看似不大,换算成端到端速度就是 6.14 倍对 5.77 倍对 3.20 倍的差别。加速比和接受长度并非线性对应,因为草稿器自身的前向开销也会摊到每一轮里,这正是 FlashMap 把草稿器参数压到目标模型一半以下的原因。

论文的核心观察是,因子化近似才是块扩散草稿器真正的天花板。DFlash 对块内每个槽位独立预测,于是当上下文的合法延续有两个同样可能的分支时,独立的草稿器有一半概率把它们拼在一起。论文举的例子是,模型在写完 in 之后,接下来可能是 new york 也可能是 san diego,独立预测会产出 new diego 或者 san york 这类混搭序列,目标模型在第二个槽位就整段拒收。

FlashMap 的做法是让一次噪声采样同时决定块内所有槽位的模式。每一个噪声样本映射到一整个 token 块,块内不会出现一半新模式一半旧模式的拼接。论文用 shuffle 测试量化了这个差异,把每个槽位的噪声打乱、保留各自的边缘分布、只抽掉槽位之间的依赖,DFlash 的接受长度变化是 0.00,因为它本来就没有联合结构可丢。

速度对照:18 组设置全部领先

下面是 Qwen3-8B 上九项基准的端到端加速比,全部为相对目标模型自回归解码的倍数,测量条件是单张 H200 NVL、并发为 1、bf16 精度、关闭思考模式。

方法 GSM8K MATH AIME25 MBPP HumanEval LCB MT-Bench Alpaca Arena-Hard
EAGLE-3(16)T=0 3.20 3.09 2.82 2.57 2.87 2.90 1.80 1.78 1.92
DFlash T=0 5.77 5.59 4.67 3.74 4.50 4.88 2.48 2.34 2.67
FlashMap 1 步 T=0 6.14 5.89 4.89 4.02 4.73 5.26 2.73 2.56 3.04
FlashMap 2 步 T=0 5.89 5.57 4.61 3.79 4.53 5.06 2.47 2.33 2.76
EAGLE-3(16)T=1 2.94 2.69 2.24 2.37 2.53 2.51 1.66 1.57 1.55
DFlash T=1 4.89 4.24 3.23 3.42 3.82 3.54 2.24 2.06 2.05
FlashMap 1 步 T=1 5.12 4.39 3.56 3.47 3.95 3.85 2.44 2.28 2.30
FlashMap 2 步 T=1 5.07 4.15 3.28 3.43 3.86 3.57 2.29 2.14 2.14

FlashMap 单步模式在这 18 组温度与基准的组合里全部拿到最高加速比,相对同条件重训的 DFlash 平均快 7.4 个百分点。最好的一格是温度 0 的 GSM8K,6.14 倍;最差的一格是温度 1 的 Alpaca,2.28 倍。这个跨度本身就是结论,数学和代码类任务收益最大,闲聊类任务收益最小,因为闲聊的可预测性低,草稿更容易被拒。

温度把整体加速拉低了大约 1 倍。同一个 GSM8K,温度 0 时 FlashMap 单步 6.14 倍,温度 1 时降到 5.12 倍。随机采样让目标模型接受草稿变得更难,这是投机解码的固有属性,不是 FlashMap 的缺陷。

接受长度:1 步换速度,2 步换接受率

速度之外,论文同时给出了完整接受长度对照。FlashMap 单步在 18 组设置中有 15 组高于 DFlash,两步模式则是 18 组全部领先,平均高出 10 个百分点。

方法 GSM8K MATH AIME25 MBPP HumanEval LCB MT-Bench Alpaca Arena-Hard
EAGLE-3(16)T=0 6.75 6.43 5.96 5.38 6.04 6.16 3.75 3.71 3.97
DFlash T=0 7.43 7.09 5.92 4.77 5.74 6.35 3.14 2.96 3.38
FlashMap 1 步 T=0 7.69 7.24 6.00 4.95 5.82 6.65 3.34 3.14 3.71
FlashMap 2 步 T=0 8.31 7.69 6.36 5.24 6.26 7.19 3.40 3.20 3.80
EAGLE-3(16)T=1 6.15 5.55 4.61 4.94 5.29 5.37 3.43 3.25 3.20
DFlash T=1 6.30 5.40 4.10 4.37 4.88 4.62 2.85 2.62 2.61
FlashMap 1 步 T=1 6.40 5.40 4.37 4.29 4.87 4.90 3.00 2.81 2.83
FlashMap 2 步 T=1 7.11 5.74 4.52 4.75 5.35 5.06 3.16 2.96 2.95

两步模式在温度 0 的 GSM8K 上把接受长度推到 8.31,这是全表最高值。EAGLE-3 在温度 1 的部分任务上接受长度仍然领先,平均比 FlashMap 单步高 9 个百分点,但它的平均速度要慢 35%。这是一个典型的取舍,接受率最高的不等于整体最快。

shuffle 测试给出了联合结构到底值多少的答案。16 步的连续流教师模型在数学任务上共享与打乱的接受长度差值是 0.82,FlashMap 两步是 0.78,单步只剩 0.32。代码任务分别是 0.59、0.47 和 0.13,对话任务分别是 0.29、0.25 和 0.08。两步模式基本追回了教师模型的联合结构增益,单步只保住了一小部分。

架构与训练成本

FlashMap 的草稿器是一个 6 块的条件扩散变换器,嵌入维度 2048,16 个注意力头,用 adaLN-Zero 按时间步调制,MLP 用 GELU,注意力带 QK 归一化。草稿块大小固定为 16。嵌入矩阵和语言模型头直接复用目标模型并保持冻结,条件信息取自目标模型的第 1、9、17、25、33 层隐藏状态。训练分两段,先训一个连续流教师模型,再用半群蒸馏把它压成一步去噪器。

项目 FlashMap DFlash EAGLE-3
Qwen3-8B 草稿器参数量 500M 1049M 302M
Qwen3-4B 草稿器参数量 475M 537M 149M
草稿块长度 16 16 16
训练数据 Open-PerfectBlend 50 万样本 同左 同左
教师模型训练 20 轮 3.9 万步 同左重训 同左重训
蒸馏训练 12 轮 2.3 万步 无 无

训练集群是 4 个 H200 SXM5 节点共 32 张卡。Qwen3-8B 的教师模型约 25 小时,蒸馏约 9 小时,Qwen3-4B 教师模型约 17 小时,加上重训的 DFlash 与 EAGLE-3 基线以及各项消融,全部模型加起来的总算力约为 4600 张 H200 卡时。

论文也坦承这个量级偏轻。作为参照,同源的连续流语言模型原始工作训练超过 100 万步、蒸馏超过 10 万步,FlashMap 的 3.9 万步与 2.3 万步都属于早期版本。作者认为更好的离散流映射蒸馏策略能让单步模型接近多步教师。

树状验证是另一条增益路径。把 4 个独立噪声采样合并成 16 token 的树,验证预算不变,Qwen3-8B 温度 0 下各基准提升 4% 到 24%,平均 11 个百分点。GSM8K 从 6.34 涨到 6.84,MATH 从 5.57 到 6.07,AIME25 从 4.90 到 5.29。把树扩大到 64 可以继续提高接受长度,但加速比不再稳定上升。

部署方式与三个短板

代码已开源,模型权重与插件同步放出。评测栈是 SGLang 0.5.20,drafter 框架用的是 DeepSpec 的固定提交。第三方部署说明补充了 vLLM 0.31 的接法,把 num_speculative_tokens 设为 16,SGLang 0.5.20 用 speculative-algorithm DSPARK 走 FlashMap 草稿路径,温度大于 0 时 vLLM 侧还要设置 draft_sample_method 的 probabilistic 选项,设 num_steps 为 2 可以用速度换接受长度。

论文本身只验证了 SGLang 路径,vLLM 的接入说明来自项目文档而非论文实验,量产前需要自己复测一遍。

第一个短板在较小的目标模型上。Qwen3-4B 温度 0 单步模式下,FlashMap 在 GSM8K、MATH、AIME25、MBPP 四项上低于 DFlash,差距分别是 0.04、0.21、0.09 和 0.01 倍,温度 1 时在 LCB 上还差 0.01 倍。8B 上全面领先的结论不能直接外推到 4B。

第二个短板是评测条件窄。全部加速比都在单卡、并发为 1 下测得,批量服务场景没有评估,而真实生产系统的并发往往远大于 1。

第三个短板是基线不够全。论文主要对照 EAGLE-3 与 DFlash,没有覆盖 DFlash 之后的若干改进路线,比如草稿树、自回归后处理、低秩隐变量混合。

把视角拉远一点看,这条路线和站内记录过的其他推理优化是同一条脉络。DeepSeek 开源的 DeepInfer 推理框架走的是另一条路,官方数字是 GPU 占用减 35%、成本降 28%;llm-d 1.0 把 17000 节点的分布式推理吞吐提升 2.9 倍、首 token 延迟砍掉 85%;TokenGate 用门控剪枝把长上下文预填充提速 11.3 倍。FlashMap 补的是解码这一段,恰好是最难压的那段。至于存储侧的硬约束,英伟达下一代 Groq LPU 放弃 SRAM 转用 3D 堆叠 DRAM,正是针对大模型推理的存储墙,和 FlashMap 处理的是同一条成本链上的不同环节。本地跑的路线另有思路,Recursive Flint 开源的 40B 稀疏模型只激活 2.5B,在本地机器上跑到 131 token 每秒,绕开了投机解码这套工具链。

相关阅读

常见问题

FlashMap 的 6.14 倍加速能直接用在生产环境吗

不能直接照搬。论文的测量条件是单张 H200 NVL、并发为 1、关闭思考模式,vLLM 接入路径来自项目文档而非论文实验。批量服务场景下草稿器的收益会被并发摊薄,量产前需要用自己的模型和流量重新压测。

FlashMap 和 DFlash、EAGLE-3 怎么选

目标模型是 8B 及以上、且以数学代码类任务为主,选 FlashMap 单步模式,速度和接受率同时领先。目标模型是 4B 或者负载以闲聊为主,DFlash 在这些场景里更稳。想要最高接受率且能接受速度损失,用 FlashMap 两步模式,GSM8K 温度 0 下接受长度能到 8.31。

投机解码会改变模型输出吗

不会。投机解码保留了目标模型生成的最长匹配前缀,输出与不开投机解码逐 token 一致,属于无损加速。加速比取决于草稿被接受的概率和草稿本身的开销,与随机性设置有关,温度越高收益越小。

小结

FlashMap 最有价值的贡献是把块扩散草稿器的联合结构缺失去掉了。DFlash 的因子化近似让块内每个槽位独立决策,一半的草稿会因为混搭模式在第二个槽位就被整段拒收,这个天花板靠加参数加训练都绕不过去。FlashMap 用连续流映射让一次噪声采样决定整块内容,配合两步蒸馏把联合结构的增益追回接近教师模型的水准。

6.14 倍是论文里最好的那一格,不是平均值。温度 0 的数学任务是这个方法的主场,闲聊场景下加速会掉到 2 倍出头。真正落地的门槛在训练成本,半小时级别的 H200 训练换 7 个百分点的平均加速,比值需要自己判断。