FlashMap: Flow Map Speculative Decoding
Jeff Shen, Zhejian Zhou, Ryan Lee, Jonathan May, Shirley Ho
cs.CL
2026-10-17
FlashMap 用连续流映射一次前向起草整块 token,参数约为 DFlash 的一半。Qwen3-8B 九项基准加速全部更高,平均再快 7.4%,GSM8K 贪心解码达 6.14 倍且分布无损。
投机解码用小模型起草一块未来 token,目标模型一次前向并行验证,从左到右接受,第一处拒绝即停。拒绝采样使输出分布与目标模型相同,加速无损。T=0 时保留与目标 argmax 一致的最长前缀。每轮提交数 γ 含目标在拒绝处补的一个 token,单 token 延迟约是(起草+验证)/γ。验证受访存限制,耗时几乎不随块长变。
EAGLE-3 条件在目标隐状态上,接受高,草稿却要逐 token 自回归,成本随块长涨。DFlash 用块离散扩散一次去噪出整块,起草成本与 K 无关,论文报告可超过 6 倍无损加速。一次去噪独立预测每个位置,提案等于各槽边缘相乘。联合分布相对该乘积的 total correlation 加容量也去不掉。续写若以各 1/2 概率为 new york 或 san diego,独立草稿有一半配成 new diego 或 san york。多步去噪能找回搭配,却直接牺牲少次前向。
FlashMap 把草稿换成 one-hot 嵌入上的连续 flow。状态从高斯噪声走到 K 个 token 的 one-hot,随机性只来自初始噪声,整块共享这一次噪声,一次抽样就定下整块模式。
网络是 6 层 DiT,宽 2048,16 头。槽间自注意力,对目标特征做交叉注意力,再加 MLP,并用 adaLN-Zero 按时间调制。输入为目标第 1、9、17、25、33 层隐状态,在锚点前投影,加上锚点 token 嵌入。锚点即上一轮已被接受的最后一个 token。词嵌入与 LM head 从目标冻结拷贝。各槽交叉熵的权重按 e 的 -(k-1)/7 次方向后衰减,早错一个会废掉后面整段。Qwen3 词表有 151,936 个 token,只在 t 接近 1 时才读得出来,训练因此对 τ 均匀抽样。τ 是初始解码错误已经去掉的比例。
沿 ODE 积完全程大约要 100 次前向。从纯噪声只评估一步,最优预测就是各槽边缘。联合结构靠后面的步骤顺着这次噪声把块收拢。Flow map 把时刻 s 到 t 收成一次前向。半群蒸馏要求这一跳等于经过中点的两跳。零长度跳跃拟合冻结的 teacher,长跳跃用学生拆开的两段来监督。一半的块训零长度跳跃,全部跳跃中 1/16 是从 0 到 1。起草走 1 步或 2 步。
数据为 OpenPerfectBlend 的 50 万条,块长 16。Flow 训约 3.9 万步,峰值学习率 6e-4;蒸馏约 2.3 万步,峰值 5e-5。EAGLE-3 与 DFlash 同一数据、同一设置重训。Qwen3-8B 上 DFlash 约 10 亿参数,FlashMap 约 5 亿。EAGLE-3 树大小 16,对齐验证预算。测速用 SGLang,并发 1,单张 H200 NVL。
一步 FlashMap 在 T=0 与 T=1 的九项基准上都最快。T=0 相对自回归解码的加速如下。
| 方法 | GSM8K | MATH | AIME25 | MBPP | HumanEval | LiveCodeBench | MT-Bench | Alpaca | Arena-Hard |
| EAGLE-3 | 3.20 | 3.09 | 2.82 | 2.57 | 2.87 | 2.90 | 1.80 | 1.78 | 1.92 |
| DFlash | 5.77 | 5.59 | 4.67 | 3.74 | 4.50 | 4.88 | 2.48 | 2.34 | 2.67 |
| FlashMap 1 步 | 6.14 | 5.89 | 4.89 | 4.02 | 4.73 | 5.26 | 2.73 | 2.56 | 3.04 |
| FlashMap 2 步 | 5.89 | 5.57 | 4.61 | 3.79 | 4.53 | 5.06 | 2.47 | 2.33 | 2.76 |
一步比同设置的 DFlash 平均快 7.4%,最高 6.14 倍出现在 GSM8K。T=0 时数学任务的 γ 与加速只高出 2.3% 和 5.5%,对话任务高出 7.4% 和 11.1%。T=1 也是一步领先全部九项,GSM8K 降到 5.12 倍,Arena-Hard 降到 2.30 倍。两步在 18 个加速数字上全部低于一步。
T=0 的 γ 如下。
| 方法 | GSM8K | MATH | AIME25 | MBPP | HumanEval | LiveCodeBench | MT-Bench | Alpaca | Arena-Hard |
| EAGLE-3 | 6.75 | 6.43 | 5.96 | 5.38 | 6.04 | 6.16 | 3.75 | 3.71 | 3.97 |
| DFlash | 7.43 | 7.09 | 5.92 | 4.77 | 5.74 | 6.35 | 3.14 | 2.96 | 3.38 |
| FlashMap 1 步 | 7.69 | 7.24 | 6.00 | 4.95 | 5.82 | 6.65 | 3.34 | 3.14 | 3.71 |
| FlashMap 2 步 | 8.31 | 7.69 | 6.36 | 5.24 | 6.26 | 7.19 | 3.40 | 3.20 | 3.80 |
两步 FlashMap 的 γ 在 18 个设置里都高于 DFlash,平均多 10%,加速赢了 13 个。一步只有约一半参数,γ 在 15 个设置里更高。T=0 的 MT-Bench 上 EAGLE-3 的 γ 为 3.75,高于两步 FlashMap 的 3.40。T=1 时 EAGLE-3 在 6/9 项 γ 领先,平均长出 9%,速度慢 35%。
Shuffle 测试把边缘和槽间搭配拆开:共用一个噪声,对照逐槽换噪声,γ 的差 Δ 来自联合结构。DFlash 以及只评估 1 次的 flow,Δ 都是 0。Flow 积 16 步,数学、代码、对话的 Δ 为 0.82、0.59、0.29。一步 FlashMap 为 0.32、0.13、0.08,两步为 0.78、0.47、0.25。一步只拿回一小部分搭配,两步接近 16 步的 flow。条件接受率同向。一步在块的后部掉得比 DFlash 快;两步第 16 槽在三个领域都更高,块内曲线基本不降。多份噪声拼成树再验证,相对单链大约可以再快 11%。
换的是草稿器,目标模型的采样分布保持原样。Qwen3-8B 上最快的是 1 次前向、约 5 亿参数的配置,九项加速都高于 DFlash 和 EAGLE-3。数学和代码约 4 到 6 倍,对话约 2.5 到 3 倍。绝对加速的主场是结构化文本。
和 DFlash 比,同一数据、同一验证预算下约 7.4% 的加速,属于增量。和 EAGLE-3 比,γ 互有胜负,端到端差在自回归起草的延迟。一步留下的 Δ 只有零点几个 token。只付得起一次起草前向时,多出来的主要是稍好的边缘预测,加上更小的网络。
只评了 Qwen3-4B 与 Qwen3-8B。其他家族和更大目标没有结果,4B 的数在附录。三个草稿都只用 OpenPerfectBlend 的 50 万条,绝对 γ 不能和全量数据训练的草稿比。速度测在并发 1 的单卡上,批处理服务没有做。任务是英文的数学、代码和对话,温度只有 0 和 1。没有比较接在 DFlash 上的草稿树、自回归后处理和低秩混合。训练步数也可能偏少,flow 语言模型原文约 100 万步训练、10 万步蒸馏,这里是 3.9 万步和 2.3 万步。
一步最快,一次前向并没有把块内依赖捕获完整。一步的条件接受率在块后部掉得比 DFlash 更快,把 K 再拉长帮助有限。共享噪声时,一步和两步的接受都还低于 16 步 flow;换独立噪声后,边缘也同样更差。块长曲线每个点只跑一次,论文写了没有误差。训练块长 16、推理改短的损失,文中转引的是约 0.15 个 token,不是这篇自己测的。