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× 加速且不改变生成分布。
研究背景与动机¶
- 领域现状:投机解码(SD)是 LLM 无损加速的主流方法——用快速 draft model 预生成 token,再由完整 verify model 并行验证。自推测解码(Self-SD)通过跳过 verify model 的部分层来构建 draft model,避免额外模型的兼容性问题。
- 现有痛点:(1) 传统 SD 需要找/训 draft model,对专用 LLM 不可行;(2) Self-SD 使用贝叶斯优化在训练集上搜索固定跳层集合,耗时且不具泛化性——不同任务/上下文需要不同的跳层策略;(3) SWIFT 虽然逐步优化但依赖积累足够用户请求(冷启动慢)。
- 核心矛盾:跳层策略应随上下文变化而调整(动态),但现有方法要么静态固定跳层集合,要么依赖离线优化。
- 本文要解决什么? 设计一种即插即用的动态跳层策略,无需训练、无需预优化、根据上下文实时调整。
- 切入角度:利用上一次验证步的完整隐状态作为"ground truth"目标,用动态规划实时选择最优跳层组合。
- 核心idea一句话:用上次验证的完整隐状态作为参考,通过动态规划在每步推测前选择使近似误差最小的跳层集合。
方法详解¶
整体框架¶
验证阶段(完整 L 层)→ 保存各层隐状态 \(X = \{x_0, ..., x_{L-1}\}\) → 推测阶段前,运行 DP 算法选择跳 M 层的最优集合 \(\mathcal{S}\) → 用跳层后的子模型生成 draft token → 验证阶段接受/拒绝 → 更新隐状态 → 重复。
关键设计¶
- 动态规划选择跳层集合:
- 做什么:给定 L 层模型和跳 M 层的预算,找到使跳层后隐状态与完整隐状态最接近的跳层组合
- 核心思路:定义状态 \(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]\))
- 时间复杂度:\(O(L \times M)\) 次前向计算(但每次只计算单层),利用 GPU 并行可使额外延迟几乎可忽略
-
设计动机:基于"层间嵌入缓慢变化"的观察,跳层导致的误差可控
-
上下文自适应性:
- 做什么:每次验证后重新运行 DP,根据新的完整隐状态更新跳层策略
- 设计动机:不同生成阶段(如开头 vs 中间 vs 结尾)可能需要不同的关键层。静态策略无法适应
-
实现:验证阶段本来就需要前向传播所有层获取隐状态,无额外存储成本
-
GPU 并行优化:
- DP 中的多个候选路径可以并行计算
- Layer 前向传播可以批量执行
- 使额外延迟(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 多任务评估,超参分析完整
- 写作质量: ⭐⭐⭐⭐ 动机清晰,方法描述详细
- 价值: ⭐⭐⭐⭐ 即插即用的无损加速对实际部署有价值