Saber: Efficient Sampling with Adaptive Acceleration and Backtracking Enhanced Remasking for DLMs¶
会议: ACL 2026
arXiv: 2510.18165
代码: GitHub
领域: LLM效率
关键词: 扩散语言模型, 自适应采样, 回溯重遮蔽, 代码生成加速, 速度-质量权衡
一句话总结¶
本文提出 Saber,一个面向扩散语言模型(DLM)的免训练采样算法,通过自适应加速(根据已建立的上下文动态调整并行解码量)和回溯增强重遮蔽(撤销被新上下文证伪的 token)两种策略,在代码生成上平均提升 Pass@1 1.9% 的同时实现 251.4% 的推理加速。
研究背景与动机¶
领域现状:DLM(如 LLaDA、Dream)通过迭代去遮蔽实现并行生成,是自回归模型的有力替代。但在代码生成等结构约束强的任务上,减少采样步数会导致 Pass@1 灾难性暴跌(甚至超过 60%)。
现有痛点:(1) 静态加速策略(固定 token 数或置信度阈值)对简单阶段太保守、对复杂阶段太激进;(2) DLM 的解码是不可逆的——一旦 token 被解遮蔽就无法撤销,早期错误会永久锁定并传播。
核心矛盾:并行生成的速度优势 vs 错误传播导致的质量崩溃——需要同时解决非均匀难度和错误累积两个问题。
本文目标:设计一种能自适应调整并行度且允许自我修正的 DLM 采样方法。
切入角度:两个关键洞察——(1) 生成难度随上下文建立而递减(置信度单调上升);(2) 已生成 token 的置信度会随新上下文变化(可能从高变低)。
核心 idea:自适应阈值 + 回溯重遮蔽——早期谨慎(少量解遮蔽)+后期激进(大量并行),同时允许撤销"后悔"的 token。
方法详解¶
整体框架¶
Saber 不改动 DLM 的权重和架构,而是把标准的"逐步去遮蔽"采样循环改造成一个带反悔能力的两阶段过程。每一步先做自适应加速——根据当前已建立的上下文动态决定这一步能并行解遮蔽多少个新 token;再做回溯重遮蔽——回头检查那些已经定下来的 token 是否被新上下文证伪,把最可疑的几个重新打回遮蔽态。如此一路迭代,输入的全遮蔽序列在"早期谨慎、后期激进、随时可撤销"的节奏下被逐步填满,既享受并行带来的步数压缩,又避免早期错误被永久锁死。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["全遮蔽序列输入"] --> B["自适应动态阈值加速<br/>阈值 τ_t = 已解遮蔽 token 的平均置信度<br/>置信度高于 τ_t 的 token 并行解遮蔽,组成草稿集 D_t"]
B --> C["回溯增强重遮蔽<br/>计算置信度下降 Δ_j,把降幅最大的 μ_t 个 token 打回遮蔽态"]
C -->|仍有遮蔽 token| B
C -->|全部解遮蔽完成| D["生成完成"]
关键设计¶
1. 自适应动态阈值加速:让并行度随上下文自然升档
静态加速策略的死穴在于用一个固定的 token 数或置信度阈值贯穿全程,对刚起步、上下文稀疏的阶段过于激进,对接近收尾、信息充分的阶段又过于保守。Saber 的做法是把阈值绑定到生成进度本身:第 \(t\) 步的阈值取已解遮蔽 token 的平均解遮蔽时置信度 \(\tau_t = \frac{1}{|\mathcal{U}_{t-1}|} \sum_{j \in \mathcal{U}_{t-1}} c_j^{\text{unmask}}\),凡是当前置信度超过 \(\tau_t\) 的遮蔽 token 都被纳入这一步的草稿集 \(\mathcal{D}_t\) 一并解遮蔽。
由于生成难度随上下文建立而单调下降、模型置信度随之上升,\(\tau_t\) 会自然地水涨船高:早期均值低、门槛松但能过关的 token 少,于是只敢解遮蔽最确定的几个;后期均值高、整体置信普遍偏高,门槛虽抬升却放行了大量 token,实现激进并行。整个"谨慎→激进"的升档过程无需手工调度,完全由模型自身的置信度信号驱动。
2. 回溯增强重遮蔽:给不可逆的解码装上后悔药
传统 DLM 采样的另一处硬伤是解码不可逆——token 一旦被解遮蔽就钉死在那里,早期的一个错误会污染其后所有步骤的上下文并不断传播放大。Saber 在每步加速之后追加一次回溯:对每个已解遮蔽 token 计算它在新上下文下相对上一步的置信度下降 \(\Delta_j = c_j^{t-1} - c_j^t\),挑出下降最剧烈的若干个重新打回遮蔽态,留待后续在更充分的上下文里重新决策。
撤销的数量 \(\mu_t = \max(1, \lfloor |\mathcal{D}_t| / \mu \rfloor)\) 与当前步的激进程度成正比——这一步并行解遮蔽得越多,回头校验、允许反悔的额度也越大,让激进加速和自我修正始终保持匹配。正是这套机制把"一旦决定不可撤销"的限制打破,从根本上掐断了错误传播链条。
3. 无训练即插即用:只动采样、不动模型
Saber 的全部逻辑都发生在采样过程的 token 选择与撤销环节,不触碰模型权重、不改架构、不需任何重新训练。这一选择使它与"改进 DLM 训练"这条研究路线完全正交——任何现成的 DLM(LLaDA、Dream 等)都能直接套上 Saber 获得加速与质量收益,而不必为适配额外付出训练成本。
损失函数 / 训练策略¶
免训练方法。在 LLaDA-8B-Instruct 上实验,温度 0,生成长度 256 token。
实验关键数据¶
主实验¶
代码生成 Pass@1 和推理速度
| 方法 | HumanEval Pass@1 | MBPP Pass@1 | 平均步数 | 相对加速 |
|---|---|---|---|---|
| Confidence (标准) | 43.29 | 42.86 | 256 | 1.0x |
| Fast-dLLM | 38.54 | 38.95 | ~80 | ~3.2x |
| Saber | 45.12 | 44.76 | ~72 | ~3.5x |
消融实验¶
| 配置 | HumanEval Pass@1 | 说明 |
|---|---|---|
| Saber (完整) | 45.12 | 完整模型 |
| w/o 回溯 | 42.68 | 去掉回溯,质量下降 |
| w/o 自适应 | 43.89 | 去掉自适应,速度下降 |
| 固定阈值 | 40.12 | 静态阈值最差 |
关键发现¶
- Saber 同时提升质量(+1.9% Pass@1)和速度(251.4% 加速)——打破了 DLM 的速度-质量权衡
- 回溯机制是质量提升的主要来源——允许模型修正早期错误避免了级联失败
- 自适应加速是速度提升的主要来源——后期阶段大量并行解遮蔽
- Saber 在不同 DLM(LLaDA、Dream)上均有效——模型无关性
亮点与洞察¶
- "谨慎→激进"的自适应策略非常直觉且有效——上下文越丰富模型越自信,应该允许更多并行
- 回溯重遮蔽是 DLM 领域的重要创新——打破了"一旦决定不可撤销"的限制
- 两个策略协同作用——自适应加速允许激进并行,回溯机制确保激进不会导致灾难
局限与展望¶
- 回溯增加了每步的计算开销(需要重新评估已解遮蔽 token 的置信度)
- 超参数 \(\mu\)(回溯比例)需要调优
- 仅在代码生成上验证,自然语言生成的效果未知
- DLM 整体仍落后于 ARM,Saber 只是缩小了差距
相关工作与启发¶
- vs Fast-dLLM: 固定阈值加速,Saber 用动态阈值更精确
- vs ReMDM: 分阶段重遮蔽,Saber 逐步回溯更细粒度
- vs ARM Speculative Decoding: 解决不同问题——ARM 加速单token生成,Saber 优化DLM的并行解遮蔽
评分¶
- 新颖性: ⭐⭐⭐⭐ 自适应+回溯的组合在DLM领域是首创
- 实验充分度: ⭐⭐⭐⭐⭐ 5个代码基准+多DLM+详细消融
- 写作质量: ⭐⭐⭐⭐ 动机分析清晰,算法伪代码完整
- 价值: ⭐⭐⭐⭐ 对DLM实用化有显著推进