news 2026/10/17 10:39:31

(2026|NAVER AI,推测解码/SD,置信门控,Loop-aware Training,用更多 draft 前向换更少 target 前向)DLoop:循环推测解码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(2026|NAVER AI,推测解码/SD,置信门控,Loop-aware Training,用更多 draft 前向换更少 target 前向)DLoop:循环推测解码

DLoop: Looped Speculative Decoding


论文地址:https://arxiv.org/abs/2610.07659

项目页面:https://github.com/naver-ai/DLoop

学术交流群:922230617


目录

1. 背景:推测解码的效率瓶颈

2. 核心思想:让一次验证覆盖多个 drafting stage

3. 关键挑战:后续 drafting stage 缺少 target 隐状态

4. Loop-aware Training:让 draft 模型适应跨 stage 的隐状态链

4.1 为什么直接推理会“分布偏移”?

4.2 采样训练为什么能解决偏移?

4.3 一个类比

4.4 为什么不能只靠 “采样” 而不改 Loss?

5. 实验结果

5.1 主结果:DLoop 对现有 draft 模型普遍有效

5.2 消融:Loop 和 Loop-aware Training 缺一不可

5.3 与 Adaptive Draft Length 方法对比

5.4 与 Tree Verification 结合

5.5 加速来源:用更多 draft 前向换更少 target 前向

5.6 并发 Serving 下的表现


1. 背景:推测解码的效率瓶颈

推测解码(Speculative Decoding, SD)已成为大模型推理加速的标配技术:用一个轻量级草稿(draft)模型快速生成多个候选 token,再由目标(target)模型并行验证,从而在单次前向传播中产出多个 token。

【图中 ③:已接受大括号画长了,已拒绝括号画短了。只有 sleeping 被接受,其他的拒绝。】

然而,论文揭示了 SD 存在效率瓶颈:标准 SD 每轮 draft 后立即验证,但 target 模型经常接受全部 draft token。此时验证本身成为不必要的开销——既然 draft 模型很自信,为什么不继续draft?

2. 核心思想:让一次验证覆盖多个 drafting stage

DLoop 将标准 SD 的「draft→verify→draft→verify」交替结构,改为「draft→draft→…→verify」的循环结构。

关键在于一个置信度门控函数:

其中,k 表示 draft 模型(M_d)中一个 block 包含的 token 数,s 表示 drafting stage,l_i 表示 M_d 分配给 token ^x_i 的 log 概率,c_s 表示置信度分数。

只要最新 block 的置信度分数 c_s 超过阈值 g,就继续下一个 drafting stage;否则停止循环,由 target模型一次性验证所有累积的 draft token。

直观理解:log 概率之和等价于「整个 block 被全盘接受的联合概率」。由于 log 概率非正,任何一个位置不确定都会拉低总分,这与 SD「一旦拒绝就丢弃后续所有 token」的接受规则天然对齐。

3. 关键挑战:后续 drafting stage 缺少 target 隐状态

标准 SD 中,draft 模型依赖 target 模型对 prefix 计算的隐状态 h_{1:t-1}。但在循环中,第二、第三个 drafting stage 的输入 token 尚未被验证,target 模型自然没有它们的隐状态。

DLoop 的解法:用 draft 模型自己的隐状态 h̃ 替代。具体地,第 s 个 drafting stage 的输入为:

即:prefix 部分仍用 target 隐状态,但后续位置使用 draft 模型在前几个 stage 中计算出的最终层隐状态。每个 drafting stage 只需处理 k 个新位置。

4. Loop-aware Training:让 draft 模型适应跨 stage 的隐状态链

问题来了:在 DLoop 的第二个及之后的 drafting stage 中,target 模型没有验证这些 token,因此没有计算它们的隐状态。DLoop 只能用 draft 模型自己产生的、跨多个 stage 累积的隐状态链h̃作为输入。

标准 SD 训练中,draft 模型没有被训练成「在跨多个 stage 累积的、未验证的、自己的隐状态链条件下继续预测」。直接推理会导致分布偏移,本质上是 exposure bias。

训练方案:

  • 每个训练样本随机采样额外 drafting stage 数 S−1∼Uniform{1,…,N},覆盖各种循环深度。

  • 第一 stage 用 target 隐状态 h,后续 stage 用 draft 自己产生的隐状态链h̃,总计 S stage。

  • 损失只监督第一 stage 和最后一 stage:

中间 stage 不计算 logits,只提供隐状态链。这样做是因为中间 stage 预测更近的 block(更容易),最后一 stage 预测最远的 block(最难),把监督集中在最难的部分。

关键区别:

  • 训练时h̃是在 ground-truth token 下计算的,推理时h̃是在 draft 自己生成的 token 下计算的。
  • 因此,该训练方案并没有完全复现推理时的噪声分布,而是让模型在结构上适应跨 stage 隐状态链(见 Sec. 2.3.2),并学会在含噪条件下预测正确 token。这大幅缩小了分布偏移,但没有完全消除它。

关键结论:loop-aware training 单独使用只带来 <7% 的指标变化;但与循环门控结合后,增益超过两者之和——说明训练是在「为循环做准备」,而非单纯提升单 stage 质量。

4.1 为什么直接推理会“分布偏移”?

标准 draft 模型的训练数据是:Target 模型的隐状态 h_{1:t−1} + 真实 token。

但在 DLoop 的第二个及以后的 drafting stage 中,Target 模型并没有验证这些 token,因此没有计算它们的隐状态。DLoop 只能用 draft 模型自己产生的、跨多个 stage 累积的隐状态链h̃_{t:t+(s-1)k-1}作为输入。

如果直接推理:

  • Autoregressive draft:标准训练中只在单个 block 内见过自己的隐状态,链长最多 k,且每个新 block 都重置到 target 的干净隐状态。它没有见过跨多个 stage 累积的h̃链。

  • Parallel draft:标准训练时一次前向输出整个 block,完全不把自己的隐状态作为后续输入。h̃作为输入对它来说是全新的。

这相当于让一个只学过在 “标准跑道” 上开车的人,突然去 “泥泞山路” 上开。模型没见过这种输入分布,因此输出会变得不可靠,甚至崩溃。

4.2 采样训练为什么能解决偏移?

DLoop 的 loop-aware training 并不是简单地 “做采样”,而是在训练过程中刻意模拟推理时的输入结构。具体逻辑如下:

第一步:随机采样循环深度 S∼{1,…,N}。这保证了模型在训练时见过各种长度的循环(从 1 到 N)。如果只训练固定深度,模型就只会适应那一种特定的误差累积程度,无法泛化。

第二步:在训练中真实地 “跑循环”。训练时,第一 stage 用 target 的 h,第二 stage 开始,强制使用 draft 模型自己前几个 stage 产生的累积隐状态链h̃。

此时,训练时的输入结构与推理时对齐:

但要注意:训练时h̃是在ground-truth token条件下计算的;推理时h̃是在draft 模型自己生成的 token条件下计算的。因此两者在数学形式上结构一致,但 token 来源不同,分布并未完全一致。

第三步:用 Loss 强制模型学会纠错

第一项保证基础能力不退化。第二项(只监督最后一个 stage)非常关键:它强迫 draft 模型在已经看过自己前几个 stage 产生的、带有误差的隐状态链之后,依然要预测出正确的 ground-truth token。

这就教会了模型:“即使我前面的隐状态有点脏,我也要从中提取有用信息,把后面的 token 预测对。”

4.3 一个类比

想象你在教一个学生做数学题:

  • 标准训练:你只给他看标准答案的解题步骤(target h),让他写出下一步。

  • 直接推理:考试时,你突然让他看自己上一题写错的步骤(drafth̃),他当然懵了。

  • 采样训练:训练时,你故意让他先自己做第一步,然后把他自己写的第一步(哪怕写错了)遮住标准答案,让他基于自己写错的步骤继续往下做。做错没关系,你用最终的正确结果来纠正他。

但这里也有一个细微差别:训练时,学生写错步骤后,他继续做题时的 “笔迹特征”(隐状态)仍然是在知道正确答案的情况下产生的;推理时则完全基于自己生成的内容。所以是接近但不完全一样。Loop-aware training 缩小了这个差距,但没有彻底消除。

4.4 为什么不能只靠 “采样” 而不改 Loss?

如果只是采样循环深度,但 Loss 依然只监督第一 stage,或者不把h̃作为输入,那就没有意义。

DLoop 的精髓在于:它把 draft 模型自己的隐状态h̃作为了训练输入的一部分,并且通过损失函数强制模型在这种 “含噪输入” 下依然能输出正确结果。这本质上是一种针对隐状态的Scheduled Sampling(计划采样)或DAgger思想的变体。

5. 实验结果

5.1 主结果:DLoop 对现有 draft 模型普遍有效

可以看到:

  • 接受长度(τ)和速度(spd)都提升;

  • 对 parallel draft 模型(DFlash,Domino,DSpark)同样有效;

  • 不需要额外参数;

  • 兼容公开权重。

5.2 消融:Loop 和 Loop-aware Training 缺一不可

结论:

  • 只开 loop:接受长度提高,但速度不一定提高,因为额外 draft stages 增加耗时;

  • 只训练:两个指标变化小于 7%,接近原始模型;

  • Loop + Training:每个设置都提升,而且增益超过两者单独增益之和。

Loop-aware training 的作用不是让单个 drafting stage 更强,而是让 draft model 适应 loop 带来的额外 stages。

5.3 与 Adaptive Draft Length 方法对比

结论:

  • 在 EAGLE-3 上,这些方法最多把 speedup 提高约0.14×;

  • 在 DSpark 上,没有任何方法超过原始 draft model 的 speedup;

  • DLoop 在两个 draft 模型上都取得最高平均接受长度和 speedup。

原因:

  • 这些方法大多通过提前停止来减少 draft 长度;

  • 对 parallel draft model,提前停止只缩短验证,不节省 draft stage 成本;

  • DLoop 允许完整 drafting stage 作为最小单位,并决定是否再来一轮。

5.4 与 Tree Verification 结合

在树验证基础上,DLoop 继续提升:

  • DFlash + DDTree:speedup 再提升12%~13%;

  • Domino + DARTree:再提升7%~8%;

  • DSpark + DARTree:再提升22%~25%。

说明 DLoop 和 tree verification 是互补的:

  • Tree verification 在 “宽度” 上扩展候选;

  • DLoop 在 “长度” 上增加 drafting stages。

5.5 加速来源:用更多 draft 前向换更少 target 前向

论文 Table 4 显示:

  • 每个 loop 的时间随 S 增大而增加;

  • 但 τ 增长更快;

  • 因此每 token 时间从 S=1 的 4.60~6.42 ms 降到 S≥5 的 0.68~2.97 ms;

  • 验证次数减少7.6%~34.1%。

一个 verification 需要 target model 完整前向,成本远高于一个 drafting stage。
因此,只要额外 draft 能减少足够多的 verification,总体就更快。

5.6 并发 Serving 下的表现

论文还在 SGLang 下测试了并发吞吐:

  • 低并发时,DLoop 明显提升 throughput;

  • 并发升高后,收益逐渐减小;

  • DFlash + DLoop 到 c=8 仍有收益,c=32 略低于 DFlash;

  • DSpark + DLoop 到 c=16 仍有收益,c=32 时在 MATH-500 继续提升,HumanEval 接近持平。

原因:

  • 高并发下 target model 逐渐成为 batch-bound;

  • 额外 speculative work 会占用 batch capacity;

  • 每个样本的 loop depth 不同,会导致 ragged execution,增加 padding 或调度开销。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 10:38:22

高三英语从91到126分我只抓了这四件事

上个学期&#xff0c;我英语一直处于瓶颈期&#xff0c;没有什么提升。最近我换了个思路&#xff1a;通过研究“怎么考英语”。一两个月后的月考&#xff0c;我考了126。我总结了一下几点经验。 1.单词&#xff1a;去真题里捞高频词 我拿出近十年真题&#xff0c;不急着做&…

作者头像 李华
网站建设 2026/10/17 10:38:04

电子信息与通信工程专业培养方案编制要点与避坑指南

简介&#xff1a;这份培养方案文档依据西安电子科技大学“卓越工程师教育培养计划”应用型方案整理&#xff0c;适用于电子信息工程、通信工程、网络工程等专业制定教学计划或开展课程改革&#xff0c;也可作为在校生规划学业、对照能力要求的参考。方案系统列出了培养目标与能…

作者头像 李华
网站建设 2026/10/17 10:37:55

工业智能体落地实践:从数据治理到模型部署的工程指南

1. 工业智能体不是什么未来概念&#xff0c;而是今年就得动手的工程这几年跑工厂、看产线&#xff0c;我最大的感受是&#xff1a;很多企业一提“智能”&#xff0c;第一反应还是上几台机械臂、装一堆传感器、搞个大屏看板。这些当然有用&#xff0c;但本质上还是“自动化”的延…

作者头像 李华
网站建设 2026/10/17 10:33:37

高级密码学核心思想与工程落地:零知识证明、同态加密、MPC与后量子

高级密码学这个词&#xff0c;一摆出来就容易让人产生两种误解。第一种人觉得它就是"更难的手写RSA"——把大数乘法和素数判断玩出花&#xff1b;第二种人直接把它归类为学术圈自嗨的抽象数学&#xff0c;跟日常工程八竿子打不着。我在这行摸爬滚打几年后想说&#x…

作者头像 李华
网站建设 2026/10/17 10:32:40

6美元ESP32毫米波雷达入门:HX2401+FMCW信号处理实战

1. 项目概述&#xff1a;为什么6美元能做出毫米波雷达&#xff0c;又凭什么说它“吊打”宜家传感器&#xff1f;最近在某开源硬件社区刷到一个标题特别扎眼的项目&#xff1a;“6美元ESP32手搓毫米波雷达&#xff0c;开源方案吊打宜家传感器”。我第一反应是点开——不是因为信…

作者头像 李华