跳转至

CadLLM: Improving the Throughput of Diffusion-based LLMs via Training-Free Confidence-Aware Calibration

会议: ACL 2026 Findings
arXiv: 2512.07173
代码: 有
领域: 模型压缩
关键词: 扩散语言模型, 推理加速, 自适应解码, 置信度校准, 无训练方法

一句话总结

提出 CadLLM,一种免训练的自适应推理加速方法,利用扩散语言模型(dLLM)的 token 解码置信度信号动态调整块大小、步数、词表采样范围和提交阈值四个维度,在 LLaDA 和 DREAM 上实现 1.1-2.28× 的吞吐量提升且保持竞争性准确率。

研究背景与动机

领域现状:掩码扩散语言模型(如 LLaDA、DREAM)通过多步去噪马尔可夫过程迭代精炼嘈杂状态来生成文本,展示了强大的生成能力。fast-dLLM 提出基于静态置信度阈值的并行解码加速。

现有痛点:fast-dLLM 使用固定的块大小、固定步数和固定采样宽度,忽略了置信度在序列和步骤间的动态变化。具体来说:(1) 固定块大小无视不同区域的难度差异;(2) 统一采样宽度忽略了确定性差异;(3) 固定提交阈值不适应不同推理阶段的置信度变化。

核心矛盾:静态调度策略对容易的块过度精炼(浪费计算),对困难的块精炼不足(损害质量)——需要根据置信度信号自适应分配计算资源。

本文目标:设计一种免训练、模型无关的即插即用方法,利用置信度信号自适应控制 dLLM 推理的多个资源维度。

切入角度:作者通过分析不同块和步骤间的置信度动态发现置信度变化显著——块内置信度快速上升后趋于平稳,不同块间难度差异大。

核心 idea:用 token 解码置信度作为单一共享信号,驱动四个闭环控制策略(块大小、步数、词表大小、阈值),在不确定性持续处分配计算资源,在预测稳定处节省资源。

方法详解

整体框架

CadLLM 在 dLLM 的每次前向传播后,利用 token 置信度作为反馈信号,通过四个线性插值策略动态更新块大小 \(B_t\)、步数 \(S_t\)、词表大小 \(V_t\) 和阈值 \(\tau_t\),形成闭环控制器。即插即用,兼容 KV 缓存的 dLLM。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["掩码 dLLM 一次前向传播"] --> B["token 解码置信度 c̄<br/>(滑动窗口均值,单一共享信号)"]
    B --> C["自适应块大小 B_t<br/>有把握放大块、犹豫缩小块"]
    B --> D["自适应步数 S_t / 阈值 τ_t<br/>没把握多去噪几步、阈值随进度松弛"]
    B --> E["自适应词表大小 V_t<br/>高置信度收窄 softmax 候选省算力"]
    C --> F["按 B_t / S_t / V_t / τ_t 并行解码并提交 token"]
    D --> F
    E --> F
    F -->|未生成完,置信度反馈下一步| A
    F -->|生成完成| G["输出文本"]

关键设计

1. 自适应块大小 \(B_t\):按置信度决定一次并行解码多少 token

固定块大小的麻烦在于不同区域的难度天差地别(Figure 1(a))——简单段落给小块是浪费前向传播,困难段落给大块又会一次性提交太多没把握的 token。CadLLM 让块大小跟着置信度走:\(B_t = \text{clip}(B_{\min} + (B_{\max} - B_{\min}) \cdot \bar{c}, B_{\min}, B_{\max})\),其中 \(\bar{c}\) 是滑动窗口(\(\Delta=2\))内的平均置信度。模型有把握时块放大,把一次前向的成本摊到更多 token 上;模型犹豫时块缩小,把算力集中到这一小段反复精炼。

2. 自适应步数 \(S_t\) 与自适应阈值 \(\tau_t\):一个控精炼深度,一个控提交激进度

块大小定了“一次解码范围”,但每块内部要精炼几步、提交时多大胆,仍是固定的就不合理。CadLLM 用两条互补的曲线来调:步数与置信度反相关 \(S_t = \text{clip}(S_{\text{base}} + (S_{\max} - S_{\text{base}})(1 - \bar{c}), S_{\text{base}}, S_{\max})\),越没把握就多花几步去噪;提交阈值随生成进度 \(g_t\) 逐渐松弛 \(\tau_t = \tau_{\text{base}}(1-g_t) + \tau_{\min} g_t\),开头从严防止早提交,越往后越放开以免无谓拖延。这里阈值是整个方法的命门——消融里去掉自适应阈值,吞吐量直接暴跌 71.6%,因为它直接决定了有多少 token 能在每一步被“放行”。

3. 自适应词表大小 \(V_t\):动态裁剪 softmax 的候选词表省计算

softmax 的延迟随词表大小急剧上涨(Figure 1(b)),~50K 的全词表比一个小子集慢近一个数量级,可大多数时候模型并不需要在全词表上挑词。CadLLM 把词表子集大小写成 \(V_t = \text{clip}(V_{\text{phase}}(g_t) \cdot f_{\text{conf}}(\bar{c}) \cdot f_{\text{rep}}(r_t), V_{\min}, V_{\max})\):生成早期或低置信度时把词表放大保住鲁棒性,高置信度时收窄词表省下 softmax 开销;其中 \(f_{\text{rep}}(r_t)\) 是一个重复检测因子,专门防止词表收得太窄把模型逼进退化的重复循环——这是快速解码里很容易踩的坑。

损失函数 / 训练策略

CadLLM 完全免训练,所有策略通过线性插值+裁剪实现,不引入额外的推理时计算。

实验关键数据

主实验

在 LLaDA-Instruct 上(单张 H100)的结果:

基准 CadLLM 准确率 CadLLM 吞吐量倍数 Fast-dLLM 准确率 生成长度
GSM8K 78.01% 1.33× 79.00% 256
MATH 32.06% 1.34× 32.40% 256
HumanEval 35.97% 2.28× 37.19% 256
HumanEval 43.29% 1.74× 45.12% 512

消融实验

配置 Token/s 准确率 说明
All ON 121.72 78.01% 完整模型
No \(V_t\) 119.67 74.41% 准确率下降 4.6%
No \(S_t\) 136.76 76.12% 速度快但准确率降
No \(B_t\) 111.19 78.32% 吞吐量降 8.6%
No \(\tau_t\) 34.57 78.17% 吞吐量暴跌 71.6%
All OFF 34.32 78.01% 无自适应

关键发现

  • 自适应阈值是效率的绝对核心:去掉后吞吐量从 121.72 暴跌到 34.57 token/s,NFE 增加 289%
  • HumanEval 上加速最显著(2.28×),因为代码生成中置信度变化更大
  • 在 DREAM 上同样有效(1.1-1.4×提升),验证了模型无关性
  • 自适应词表不影响速度但严重影响准确率(-4.6%),说明采样宽度控制的重要性

亮点与洞察

  • 用单一置信度信号驱动四个资源维度的闭环控制器设计简洁优雅,"最小自适应性"已经大幅超越静态调度
  • 重复检测器(防止词表缩小导致退化循环)是一个实用的工程细节,避免了快速解码的常见陷阱
  • 线性插值策略的选择是刻意为之——证明即使最简单的单调映射也能显著获益,为更复杂策略建立了下界

局限与展望

  • 仅在 LLaDA 和 DREAM 两个 dLLM 上验证,对更大规模模型的效果未知
  • 超参数(\(B_{\min}, B_{\max}, S_{\max}\) 等)需要手动设定,虽±20%敏感性分析显示稳定
  • 准确率与基线相当但并非完全无损,HumanEval 上有 1-2% 的损失
  • 未来可探索非线性控制策略或强化学习优化策略参数

相关工作与启发

  • vs fast-dLLM: 静态阈值+固定块大小是资源分配不均的根源,CadLLM 用自适应策略解决
  • vs 自回归加速(投机解码等): dLLM 天然支持并行解码,CadLLM 在此基础上优化并行度
  • vs Lu et al. (并发工作): 他们也发现固定块大小导致过早提交低置信度 token,与本文动机一致

评分

  • 新颖性: ⭐⭐⭐⭐ 四维自适应控制的统一设计在 dLLM 加速中是新的
  • 实验充分度: ⭐⭐⭐⭐ 消融详尽,多任务多长度验证
  • 写作质量: ⭐⭐⭐⭐ 动机分析清晰,方法描述精确
  • 价值: ⭐⭐⭐⭐ 对 dLLM 推理部署有直接实用价值