FlashMap并行草拟加速大模型解码
FlashMap采用推测解码,一次前向计算联合草拟16个Token。在Qwen3-8B上报告最高6.14倍的无损加速,实际收益仍需结合部署环境验证。
AI 深度解读
FlashMap 想解决的是大模型生成时的一个矛盾:一次多猜几个 token 可以提速,但猜出来的内容如果前后不搭,目标模型很快就会拒收。它用连续流映射生成整块草稿,让不同位置一起决定内容,再交给目标模型验证。
据 MarkTechPost 转述,研究团队在 Qwen3-8B 上测得最高 6.14 倍无损加速。不过,这个数字来自单张 H200、并发 1 的测试。对自部署模型的开发者,值得看的是它如何兼顾草稿成本与接受率,以及哪些条件下收益会缩水。
一次猜 16 个 token,为什么还会前后不搭
推测解码(speculative decoding)的分工很直接:小模型先起草 K 个 token,目标模型用一次并行前向计算验证,留下符合要求的最长前缀。FlashMap 设置 K = 16,草稿模型与目标模型运行在同一张 GPU 上。
所谓「无损」,指验证机制保持目标模型的输出行为,不是允许小模型用近似答案换速度。加速取决于两笔账:一次能留下多少 token,以及生成草稿花了多少时间。
EAGLE-3 自回归起草,后面的 token 依赖前面的结果,块越长,起草成本越高。DFlash 用块扩散一次生成整块,但各位置采用独立预测,即作者所说的因子化近似。
原文的例子很直观:后续内容可能是「new york」,也可能是「san diego」。各位置独立选择,就可能拼出「new diego」或「san york」,目标模型在第二个位置便会拒收。
FlashMap 从高斯噪声一次映射到完整 token 块,让同一份噪声共同影响各位置的选择。它要学的不只是某个位置该填什么,还包括这些位置怎样组合才合理。
草稿生成得快,还得让目标模型愿意多收几步。
一步生成整块,训练时做了什么
FlashMap 来自 Polymathic AI、Princeton University、USC ISI、NYU 和 Flatiron Institute 的研究团队,建立在 Flow Map Language Models 之上。
草稿模型采用 6 个模块的扩散 Transformer(DiT),嵌入维度为 2048,有 16 个注意力头,读取目标模型第 1、9、17、25、33 层的隐藏状态。嵌入矩阵和 LM head 从目标模型复制,并在训练中冻结。
训练分两段。先训练 flow teacher,在 one-hot token 块上学习连续流,使用交叉熵,并通过时间重参数化处理 Qwen3 的 151,936 个词表项;再通过半群蒸馏得到 flow map student,把原本需要沿路径逐步完成的变换,压缩成从噪声到数据的一次跳转。
两个版本的草稿模型都使用 Open-PerfectBlend 的 500K 条样本。Qwen3-8B 对应 500M 参数,Qwen3-4B 对应 475M 参数;所有模型和消融实验合计约消耗 4,600 H200 GPU 小时,这不是单个模型的一次训练成本。
这里还有一个不能省略的实验结果:打乱测试显示,2-step FlashMap 能恢复 16-step teacher 的大部分联合结构收益,1-step 只保留其中一小部分。因此,一步版本跑得快,并不足以证明它已经充分学到了块内依赖。
6.14 倍是最好成绩,平均收益要看同条件比较
研究团队在相同数据和设置下重训 EAGLE-3、DFlash,覆盖数学、代码、聊天共 9 个基准,分别测试 temperature 0 和 1。硬件为单张 NVIDIA H200 NVL,使用 bf16,并发为 1。
在 Qwen3-8B 上,1-step FlashMap 在两个温度下的全部任务中都是最快的草稿方案。MarkTechPost 根据论文 Figure 1(c) 计算,temperature 0 时平均加速为 4.36 倍,DFlash 为 4.07 倍,EAGLE-3 为 2.55 倍;FlashMap 平均比重训 DFlash 快约 7%。
最高成绩来自 GSM8K:temperature 0 时加速 6.14 倍,平均接受长度为 7.69 token。同条件下,DFlash 为 5.77 倍,EAGLE-3 为 3.20 倍。最低成绩是 Alpaca 在 temperature 1 下的 2.28 倍。
接受长度也有改善:1-step 在 18 组设置中的 15 组超过 DFlash,参数量约为其一半;2-step 则在 18 组中全部胜出,平均高出 10%。原文给出的 temperature 0 相对 DFlash 增益,数学为 5.5%,聊天为 11.1%。
但更长的接受长度不自动等于更快。EAGLE-3 在 temperature 1 时接受长度高出 9%,运行却慢 35%。增加步骤也要付成本,num_steps=2 就是在用部分速度换接受率。另外,把 4 份噪声草稿组成树,平均还能让加速效果提高 11%。
换成 Qwen3-4B,temperature 0 下 FlashMap 在 9 个任务中的 4 个落后于 DFlash。模型规模一变,结论就不能照搬。
我的判断
我认可它把「整块内容的联合关系」作为优化对象。独立位置预测会制造不合理组合,这个解释清楚,也有打乱实验提供支持。
但部署选型更该看实测吞吐与延迟。1-step 保留的联合结构收益有限,说明提速还与草稿计算成本等因素有关,不能把全部收益都归给新的建模方式。
同条件重训的比较,比各项目自己的最高纪录更有参考价值。原文列出的 DFlash 最高 6.17 倍、EAGLE-3 最高 6.5 倍,以及 DSpark 相对 MTP-1 单用户快 60% 到 85%,并非同一实验口径,不能据此排名。
6.14 倍可以作为复现实验的目标,不能直接写进线上容量预算。
论文测的是并发 1,原文没有给出高并发、其他 GPU、长上下文和业务请求分布下的完整数据。它也没有单列代码任务的具体收益,不能据此断言日常 AI 编程一定会快多少。
能拿来做什么
- 如果正在自部署 Qwen3-8B 或 Qwen3-4B,可以用自己的代码问答、数学和聊天请求对比普通解码、DFlash 与 FlashMap,记录端到端延迟、接受长度和不同并发下的表现。
- 先用轻量路径验证接入。
flashmap依赖torch和transformers>=4.56,安装命令为uv pip install flashmap;spec_generate可让草稿与目标模型在同一 GPU 上运行。权重采用 Apache-2.0,代码采用 MIT。 - 接入服务时按版本核对参数:vLLM 0.31 使用
--speculative-config,将num_speculative_tokens设为 16;SGLang 0.5.20 使用--speculative-algorithm DSPARK并提供 FlashMap 草稿路径。原文未给出完整启动命令,不能把这些片段当成完整配置。 - 对需要随机采样的请求,单独验证 temperature 大于 0 的配置;原文要求 vLLM 设置
"draft_sample_method": "probabilistic"。再比较一步与num_steps=2的实际延迟,别只按接受长度选择。