SPOT:用“落子顺序”预测给扩散语言模型做投机解码(Enhancing Speculative Decoding for Diffusion Language Models via Commit-Order Prediction)

扩散语言模型(DLM)精确解码每次前向只确定一个被遮盖的位置,快的多位置解码又会损失质量。作者发现上一轮前向在 92–100% 的位置上已经给出了正确的词,缺的是“下一步确定哪个位置”。SPOT 用一个 0.62M 参数的小模型只读目标模型的输出分布来预测这个顺序,生成一棵候选树,目标模型一次前向验证整棵树;草稿和目标共享 Gumbel 噪声,所以任何温度下输出分布都不变。

扩散语言模型(DLM)精确解码每次前向只确定一个被遮盖的位置,快的多位置解码又会损失质量。作者发现上一轮前向在 92–100% 的位置上已经给出了正确的词,缺的是“下一步确定哪个位置”。SPOT 用一个 0.62M 参数的小模型只读目标模型的输出分布来预测这个顺序,生成一棵候选树,目标模型一次前向验证整棵树;草稿和目标共享 Gumbel 噪声,所以任何温度下输出分布都不变。

点赞 7 · 代码星数 7

理由

  • 作者称在 SDAR-8B 上把目标前向次数最多减少 6.8 倍、吞吐最高达到标准解码的 3.4 倍,且在 T=0 和 T=1 的每个任务和预算下都持平或超过已有草稿方法。
  • 无损:被接受的草稿等于目标模型自己的下一状态,准确率就是目标模型本身的(README 给出 GSM8K、MBPP、HumanEval、MATH500 对照表)。
  • 草稿模型可以跨模型迁移,覆盖 SDAR 三个尺寸、LLaDA2.0-mini、LLaDA-8B 和 Dream-7B 共六个 DLM;扩展版 SPOT-Sets 在动态阈值解码上让 SDAR-8B 吞吐平均再提高 59%。
  • 代码和草稿检查点都是 MIT 许可,还带一个免费 Colab 示例。

用法

  • 代码:github.com/Eliezer318/SPOT-dLLM;草稿模型:抱脸 EliezerS/SPOT-dLLM(huggingface-cli download EliezerS/SPOT-dLLM --local-dir drafters),目标模型首次运行自动下载。
  • 没有本地显卡可用仓库的 Colab 笔记本,在 SDAR-1.7B 上对比无草稿解码和 SPOT。
  • 本地:pip install -r requirements.txt 后 python run_sweep.py --model sdar --draft slot --slot-mode ddtree_b --slot-ckpt drafters/sdar8b_b32.pt --budgets 0,8,20 …;阈值解码换成 --unmasking threshold --draft sets。

风险

  • 只适用于扩散语言模型(SDAR、LLaDA、Dream 系列),不能给普通自回归模型加速;目前是评测脚本形态,没有接入 vLLM / SGLang 这类服务框架。
  • SPOT-Sets 最快的 γ 版本用“乘积规则”接受草稿,可能改变输出;要保持阈值解码器原输出得用稍慢的 exact 版本。
  • 数字来自 256 词生成长度、单张 RTX PRO 6000 Blackwell 的作者测量;README 新闻栏还写着检查点“正在准备发布”,与下方已列出的检查点表并存,下载前以抱脸页面为准。

打开 · 代码 · 抱脸论文页

Hugging Face Daily Papers

Explore the latest AI Radar updates