跳转至

CLaSp: In-Context Layer Skip for Self-Speculative Decoding

会议: ACL 2025
arXiv: 2505.24196
代码: 无
领域: 模型压缩 / LLM效率
关键词: speculative decoding, layer skipping, self-speculative, dynamic programming, lossless acceleration

一句话总结

CLaSp 提出一种无需训练的自推测解码方法,通过动态规划算法在每个验证步骤后根据上下文动态调整跳层策略,利用上一次验证的完整隐状态作为目标来选择最优跳层集合,在 LLaMA3 系列上实现 1.3-1.7× 加速且不改变生成分布。

研究背景与动机

  1. 领域现状:投机解码(SD)是 LLM 无损加速的主流方法——用快速 draft model 预生成 token,再由完整 verify model 并行验证。自推测解码(Self-SD)通过跳过 verify model 的部分层来构建 draft model,避免额外模型的兼容性问题。
  2. 现有痛点:(1) 传统 SD 需要找/训 draft model,对专用 LLM 不可行;(2) Self-SD 使用贝叶斯优化在训练集上搜索固定跳层集合,耗时且不具泛化性——不同任务/上下文需要不同的跳层策略;(3) SWIFT 虽然逐步优化但依赖积累足够用户请求(冷启动慢)。
  3. 核心矛盾:跳层策略应随上下文变化而调整(动态),但现有方法要么静态固定跳层集合,要么依赖离线优化。
  4. 本文要解决什么? 设计一种即插即用的动态跳层策略,无需训练、无需预优化、根据上下文实时调整。
  5. 切入角度:利用上一次验证步的完整隐状态作为"ground truth"目标,用动态规划实时选择最优跳层组合。
  6. 核心idea一句话:用上次验证的完整隐状态作为参考,通过动态规划在每步推测前选择使近似误差最小的跳层集合。

方法详解

整体框架

验证阶段(完整 L 层)→ 保存各层隐状态 \(X = \{x_0, ..., x_{L-1}\}\) → 推测阶段前,运行 DP 算法选择跳 M 层的最优集合 \(\mathcal{S}\) → 用跳层后的子模型生成 draft token → 验证阶段接受/拒绝 → 更新隐状态 → 重复。

关键设计

  1. 动态规划选择跳层集合:
  2. 做什么:给定 L 层模型和跳 M 层的预算,找到使跳层后隐状态与完整隐状态最接近的跳层组合
  3. 核心思路:定义状态 \(g[l, m]\) 表示"到第 \(l\) 层已跳 \(m\) 层时的隐状态",目标最小化 \(\|g[L, M] - x_{L-1}\|\)。DP 递推:第 \(l\) 层要么执行(\(g[l+1, m] = f_l(g[l, m])\))要么跳过(\(g[l+1, m+1] = g[l, m]\)
  4. 时间复杂度:\(O(L \times M)\) 次前向计算(但每次只计算单层),利用 GPU 并行可使额外延迟几乎可忽略
  5. 设计动机:基于"层间嵌入缓慢变化"的观察,跳层导致的误差可控

  6. 上下文自适应性:

  7. 做什么:每次验证后重新运行 DP,根据新的完整隐状态更新跳层策略
  8. 设计动机:不同生成阶段(如开头 vs 中间 vs 结尾)可能需要不同的关键层。静态策略无法适应
  9. 实现:验证阶段本来就需要前向传播所有层获取隐状态,无额外存储成本

  10. GPU 并行优化:

  11. DP 中的多个候选路径可以并行计算
  12. Layer 前向传播可以批量执行
  13. 使额外延迟(DP 选择开销)远小于跳层带来的加速收益

与传统 Self-SD 的区别

  • Self-SD:离线贝叶斯优化 → 固定跳层集合 → 推理时不变
  • CLaSp:在线 DP 优化 → 动态跳层集合 → 每步验证后更新

实验关键数据

主实验:Spec-Bench(LLaMA3 系列)

方法 LLaMA3-8B 加速比 LLaMA3-70B 加速比 需要训练
自回归基线 1.0× 1.0× -
Self-SD (静态) ~1.2× ~1.3× 需要 BO
SWIFT ~1.3× ~1.4× 动态但需积累
CLaSp 1.3-1.5× 1.5-1.7×

关键发现

  • 无损加速:CLaSp 生成分布与原模型完全一致(speculative decoding 保证)
  • 动态策略优于静态:跳层集合随上下文变化而变化,在多样化任务上稳定优于固定跳层
  • DP 开销可忽略:GPU 并行下 DP 选择仅增加 <5% 延迟
  • 即插即用:无需训练、无需校准数据、不修改模型参数

亮点与洞察

  • 将推测解码中的 draft model 设计转化为组合优化问题:哪些层跳过 = 组合选择,DP 是天然适合的求解工具
  • 利用验证阶段的"免费"信息:验证阶段的完整隐状态本来就会计算,用它们作为 DP 的目标不引入额外计算
  • 即插即用的实用性:对专用/私有 LLM 尤其有价值——不需要找 draft model、不需要训练额外模块

局限性 / 可改进方向

  • 加速比有限(1.3-1.7×),不如有训练的投机解码方法(EAGLE 可达 2×+)
  • DP 假设跳层误差可追踪,但大量跳层时误差累积可能不准
  • 未探索与 tree attention 结合以进一步提升接受率
  • 未在 MoE 模型上验证

相关工作与启发

  • vs Self-SD (Zhang et al., 2024): Self-SD 用贝叶斯优化固定跳层集合,CLaSp 用 DP 动态调整,无需离线优化
  • vs EAGLE (Li et al., 2024): EAGLE 训练专用 draft head(加速更大但需训练)。CLaSp 无需任何训练
  • vs LayerSkip (Elhoushi et al., 2024): LayerSkip 需要在训练时引入跳层正则化。CLaSp 纯推理时使用

评分

  • 新颖性: ⭐⭐⭐⭐ 动态规划选择跳层的思路新颖,利用验证隐状态做目标巧妙
  • 实验充分度: ⭐⭐⭐⭐ Spec-Bench 多任务评估,超参分析完整
  • 写作质量: ⭐⭐⭐⭐ 动机清晰,方法描述详细
  • 价值: ⭐⭐⭐⭐ 即插即用的无损加速对实际部署有价值