0%

LayerSkip:让大模型“提前退出 + 自校验推理”成为可部署方案——深度技术评审

1. 为什么这篇论文值得认真读

如果要我用一句最朴素的话概括这篇论文:

它让同一个大模型“先用前几层快速猜,再用后几层批量核对修正”,从而在不引入第二个草稿模型的情况下实现明显加速。

这件事看起来像“推理技巧”,但本质上是训练与部署的联合设计

今天大模型推理的核心痛点是:

  • 每生成一个 token,通常都要走完整网络深度;
  • 自回归导致串行瓶颈,无法像训练时那样大规模并行;
  • 延迟和成本都很高;
  • 多模型 speculative decoding 虽然有效,但显存与工程复杂度上去了。

LayerSkip 的价值在于它不是简单“后处理加速补丁”,而是三步联动:

  1. 训练阶段让模型早层更有预测能力;
  2. 推理阶段允许早退层先草拟 token;
  3. 用同一模型剩余深层做校验修正,并复用缓存减少额外开销。

论文给出的代表性速度收益是:

  • CNN/DM 最高 2.16×
  • coding 最高 1.82×
  • TOPv2 最高 2.0×

如果你是系统工程师,这篇论文最重要的不是“2.16×这个数字”,而是它提出了一个更有长期价值的问题:

我们能不能在训练时就把“可加速推理”写进模型能力结构里,而不是等部署时硬抠?

这是一个方向性问题。LayerSkip 给出了一个可行答案。


2. 前置知识:理解这篇论文前需要知道什么

这一节我按“懂一点电脑、但没做过大模型”的标准讲。

2.1 为什么大模型推理这么贵

大模型像一个很长的流水线。每一层都要做大量矩阵运算。

你让它写一句话,它不是一次性写完,而是一个词一个词往外吐。每吐一个词,通常都要把整个深网络再跑一遍。

所以成本来源不是单点,而是“三重叠加”:

  • 模型层数深;
  • 序列越来越长;
  • 生成是串行过程。

这就是为什么大家都在研究“每个 token 少算一点”。

2.2 什么是自回归解码

自回归就是:

  • 先预测第一个 token;
  • 把它拼回输入;
  • 再预测下一个;
  • 反复进行。

它的优点是稳定、泛化好;缺点是慢。

2.3 什么是 speculative decoding(猜测式解码)

经典 speculative decoding 一般是两模型:

  • 小草稿模型先猜一串 token;
  • 大模型并行验证这串 token;
  • 能接受的就直接收下,冲突处再修正。

好处:通常比“每个 token 都让大模型慢慢写”更快。
代价:你要维护两套模型和缓存,显存与工程复杂度都上升。

2.4 什么叫 early exit(提前退出)

大模型有很多层。提前退出就是“走到中间某一层就不往后走了,直接解码”。

直觉上会更快,因为少算了很多层。

问题是:普通模型训练时只关心最后一层输出,中间层并不一定“会答题”,所以早退常常会掉质。

2.5 KV Cache 到底在做什么

KV Cache 是注意力机制的历史缓存。

你每生成一个新 token,不需要把前面所有 token 的键值再重算,可以直接拿缓存复用。

在工程上它非常关键:

  • 决定了很多显存消耗;
  • 决定了推理速度上限;
  • 也是多模型 speculative decoding 复杂化的主要来源之一。

2.6 延迟、吞吐、显存占用不是一回事

这三个指标经常被混着讲:

  • 延迟(Latency):一条请求多久完成;
  • 吞吐(Throughput):单位时间处理多少 token/请求;
  • 显存/内存占用(Memory Footprint):部署要多少资源。

某个方法可能提速但显存更大;也可能显存友好但延迟一般。LayerSkip 的优势在于它尝试同时兼顾“速度 + 单模型内存友好”。


3. 论文要解决的核心问题(精确定义)

本文的问题可以严谨写成:

标准大模型解码每 token 走全层,延迟高。纯 early exit 虽快但常掉质。传统 speculative decoding 能保质提速,但通常需要额外 draft 模型与更大内存/工程复杂度。能否通过训练改造,让同一模型早层做 draft、晚层做 verify,并利用缓存复用实现高效推理?

拆成三个子问题:

子问题 A:中间层默认不擅长直接解码

没有专门训练时,中间层输出不是“可直接当最终答案”的表示。

子问题 B:默认模型把太多“决定性计算”放在深层

即便某些 token 早就能猜对,模型也往往还是走到很后面才稳定输出。

子问题 C:两模型 speculative decoding 的部署成本高

两模型意味着:

  • 两套权重、
  • 两套缓存逻辑、
  • 更复杂服务编排。

LayerSkip 的目标是:单模型里把这三件事一起解决。


4. 一段话看懂 LayerSkip

LayerSkip 的核心是“训练和推理一起改”:

  • 训练时对层做结构化 dropout(浅层小、深层大),逼模型别过度依赖后层;
  • 同时加 early exit loss,让同一个 LM head 学会从多层表示解码;
  • 推理时先在前 E 层自回归草拟,再用后 L-E 层并行核对修正;
  • 由于 draft 和 verify 共用同一模型前缀层,缓存可复用(KVQ cache),显存与延迟压力更可控。

一句话:把“深度”从固定成本变成可调度资源。


5. Figure 1 全流程拆解:训练—推理—校验

Figure 1 是整篇论文最关键的总图。

它明确给出三段式闭环:

  1. 训练(layer dropout + early exit loss);
  2. 早退推理(前 E 层就出 token);
  3. 自校验推理(后层验证并纠正)。

我很喜欢这张图的原因是:它不是在讲一个小技巧,而是在讲一个端到端可运行系统

很多论文只说“我有个模型结构想法”,但不告诉你如何落到服务。LayerSkip 这点做得很好:

  • 训练目标直接面向推理可加速;
  • 推理算法又回头利用训练塑造出的早层能力;
  • 最后通过缓存复用把系统成本打下来。

这才是“工程论文”该有的闭环。


6. Figure 2 全流程拆解:为什么作者相信“早层有价值”

Figure 2 用了一个 HumanEval 的代码补全样例,逐层观察 token 预测变化。

作者看到几个关键现象:

  1. 很早层预测通常不靠谱;
  2. 后层逐渐收敛到最终 token;
  3. 有些 token 在最终层之前就已经预测正确;
  4. 中间层会“犹豫/反复改主意”。

论文里给了一个非常具体的数字:在示例中,平均一个 token 需要 23.45/32 层才稳定。

这意味着什么?

  • 哪怕你有完美“何时退出”判定器,默认模型也只能省一部分算力(大约 26% 上限);
  • 想更大幅提速,必须让模型本身变得“更早可判定”。

这就是 LayerSkip 的训练改造动机:

不是只做退出策略,而是让模型学会“早点把该算明白的事算明白”。

作者还指出一个很有趣现象:看似简单 token(比如 for 循环开头)在默认模型里也经常需要走完全部层。这种“浅层能力浪费”正是可优化空间。


7. 方法第一部分:Layer Dropout(分层随机跳层训练)

7.1 直觉

普通 dropout 是“神经元级随机失活”。LayerSkip 的 layer dropout 是“层级随机跳过”。

关键不是“跳层”本身,而是跳层概率设计:

  • 浅层掉得少;
  • 深层掉得多。

这等于在训练时持续给模型施压:

后层可能不在,你必须在前层把信息组织得更可用。

7.2 公式

论文把第 l 层在训练步 t 的更新写为:

$ x_{l+1,t}=x_{l,t}+M(p_{l,t})f_l(x_{l,t}) $

其中 M(p) 是伯努利门,按概率关闭该层贡献。

每层 dropout 概率:

$ p_{l,t}=S(t)D(l)p_{max} $

  • pmax:最大 dropout 强度;
  • D(l):层深度缩放;
  • S(t):时间课程缩放。

作者采用“深层指数增大”的 D(l),使最后层 dropout 最大。

7.3 为什么越深层 dropout 越大

如果你各层一视同仁地 dropout,只能得到一般正则化效果,不会定向提升“早层可解码性”。

LayerSkip 的目标非常明确:推理时希望前几层能先给出可用草稿。所以训练也要朝这个方向施压。

附录 Figure 12 也给了支持:在平均 dropout 相同的前提下,指数型层间分配比常数分配训练损失更优。这说明它不是拍脑袋。

7.4 为什么从零预训练要用时间课程

论文区分两类场景:

  • 从已有模型继续训练/微调:S(t)=1 即可;
  • 从零预训练:需要时间课程(逐步增强),否则训练不稳或效果差。

这是很实用的经验结论。因为随机初始化时网络还没形成稳定特征,太早强推结构化丢层容易把优化搞崩。


8. 方法第二部分:Early Exit Loss(共享 LM Head)

8.1 为什么中间层直接解码会差

标准 LM head 主要被训练去读最后层表示。中间层表示即便“有信息”,也未必能被同一个头直接映射成正确 token。

所以 early exit 需要专门训练信号。

8.2 总损失函数怎么构建

论文把总损失写成多层 CE 的加权和:

$ J(X,Y,t)=\sum_{l=0}^{L-1}\tilde e(t,l)J_{CE}(g(x_{l+1}),Y) $

这里 \tilde e(t,l) 由两部分决定:

  • 课程掩码 C(t,l)(当前步启用哪些层的早退监督);
  • 层权重 e(l)(后层权重更大)。

论文里后层惩罚更重,目的是避免“只顾早层,最后层退化太多”。

这个平衡是合理的。

8.3 轮转课程 vs 渐进课程

作者给了两种早退损失课程:

  • Rotational(轮转):每步只激活部分层的退出监督,循环覆盖全层;
  • Gradual(渐进):逐步从后往前打开更多层监督。

为什么需要课程?

因为“所有层、每步都监督”会带来两个问题:

  1. 训练太慢;
  2. 最后层准确率可能下降。

这点很工程现实,不是学术花活。

8.4 共享 LM Head 的工程价值

很多早退工作会给每层挂单独 head。LayerSkip 选择“全层共用一个 LM head”。

优点非常直接:

  • 参数更少;
  • 训练显存更省;
  • 推理逻辑更简单;
  • 部署维护成本更低。

我认为这是这篇论文最“可上线”的设计决策之一。


9. 推理第一部分:纯 Early Exit

最基础模式很简单:

  • 每个 token 只跑前 E 层;
  • 直接接 LM head 解码。

Figure 4 给出成本对比:

  • 标准推理:每 token 约 L 层成本;
  • 早退推理:每 token 约 E 层成本(E<L)。

但纯早退的问题同样明显:层数越浅越快,质量通常掉得越多。尤其是生成任务,错误会累积。

所以 LayerSkip 的真正落地点不是“纯早退”,而是“早退 + 自校验”。


10. 推理第二部分:Self-Speculative Decoding

10.1 Self-Drafting(自草拟)

第一步,使用同一模型前 E 层自回归生成 d 个 draft token。

这里没有外部 draft 模型。等价于“同一个模型的浅层子网”当草稿器。

10.2 Self-Verification(自校验)

第二步,用剩余 L-E 层对 draft 序列做并行验证:

  • 逐位比对 draft 与 verify;
  • 接受最长一致前缀;
  • 在分歧点采用验证结果纠正。

这和传统 speculative 的逻辑一致,但全部在同一模型里完成。

10.3 KVQ Cache 复用

这是论文系统贡献核心之一。

因为 draft 与 verify 共享同一模型前缀层顺序,作者实现了:

  • Single KV Cache:前缀层 KV 可直接复用;
  • Exit Query Cache:保存退出层查询信息,让验证阶段继续后层计算时少做重复工作。

两者合并为 KVQ cache。
这不是小优化,而是决定“单模型方案是否真的省”的关键。

10.4 与传统 Draft&Verify 的关键差异

相较于两模型 speculative:

  • LayerSkip 只需要一个模型;
  • 显存占用更友好;
  • 前缀计算与缓存可复用更自然;
  • 但前提是你得按 LayerSkip 训练过。

相较于“跳过中间块”的自推测方法,LayerSkip 强调顺序一致前缀带来的复用优势。


11. 实验设置

11.1 四类训练范式

论文不是单场景验证,而是覆盖了四个训练范式:

  1. Continual pretraining:在预训练模型上继续训练(含 Llama2 7B/13B,后续还测了 Llama3 8B、Llama3.2 1B);
  2. Pretraining from scratch:从零训练 1.5B 与 7B;
  3. Code finetuning:Llama1 7B 在代码域继续微调;
  4. Task-specific finetuning:在 TOPv2 上任务微调。

这个覆盖面是加分项,说明方法不只是某个特定设置下的“巧合”。

11.2 模型规模与硬件

附录给出较完整配置。涉及:

  • 1.5B / 7B / 13B,24~40 层;
  • A100 30GB / 80GB 与 H100;
  • 多组 batch、步数、学习率配置。

这说明实验投入是严肃的,不是玩具级。

11.3 任务与指标

评估覆盖分类任务与生成任务:

  • 分类类:BoolQ、PIQA、SIQA、HellaSwag、RACE、MMLU 等;
  • 生成类:NQ、TriviaQA、GSM8K、MATH、HumanEval、MBPP;
  • 生成系统指标:CNN/DM、XSUM、TOPv2 的 EM/ROUGE、速度与 acceptance。

指标组合是合理的,因为“是否可部署”不能只看准确率,也必须看 speedup 和时延。


12. 结果解读(带具体数字)

12.1 早层可用性显著提升

Figure 6 / Figure 8 / Figure 10 的共同趋势是:

  • baseline 早退到中层后,很多生成任务快速崩;
  • LayerSkip(尤其 LD+EE)显著抬升中层可用性;
  • 最后层通常只轻微回退或接近持平(参数调得合适时)。

论文还强调了一个现象:

  • 分类任务早层看起来“没那么糟”;
  • 生成任务更容易累积错误,所以更能体现 LayerSkip 价值。

举个文中点名例子:Llama2 7B 的 NaturalQuestions 在 baseline 中层可从 25.1% 掉到 0%;LayerSkip 同条件下可回到约 4%。

12.2 Continual pretraining 结果

Table 3 给出较核心的生成加速结果。

在 CNN/DM 上:

  • Llama2 7B:Self-Spec 可到 1.86×,ROUGE-2 基本保持(0.079→0.078);
  • Llama2 13B:Self-Spec 可到 1.81×,ROUGE-2 基本保持(0.098→0.098)。

在 XSUM 上:

  • Llama2 7B:约 1.54×
  • Llama2 13B:约 1.34×
  • ROUGE-2 行为总体接近 autoregressive。

在同表 coding 相关设置下,也出现 1.6×~1.8× 级别收益,同时保持较好的质量。

作者还与 prior Draft&Verify 对比:

  • CNN/DM 上他们更快(文中对比给出约 1.81× vs 1.56× 量级);
  • XSUM 上略慢(约 1.34× vs 1.48×)。

这很真实,说明它不是“全场景无脑碾压”,而是整体上有竞争力。

12.3 从零预训练结果

Table 4 报告从零训练 26B tokens 的结果:

  • 1.5B 模型在 CNN/DM 上 Self-Spec 约 1.76×
  • 7B 模型在同设定达到论文 headline 2.16×

这一组结果对我来说价值很高:说明“推理友好深度结构”可以在预训练阶段被塑造,而不是只能后期修补。

12.4 代码任务微调结果

Table 5 是我很关注的一表,因为代码任务对 token 错误非常敏感。

基线 autoregressive 在该设置下约 85.9%

纯 early exit 的质量-速度权衡明显:

  • E=18:约 83.3%;
  • E=12:约 79.4%;
  • E=6:约 62.9%;

层越浅越快,但掉得也越多。

Self-Spec 的意义是把质量拉回来:

  • 文中总结为“可在几乎不掉质量下拿到明显加速”;
  • 速度可达 1.82× 量级。

12.5 TOPv2 任务微调结果

TOPv2 是严格 exact match 任务,容错很低。

论文报告 Self-Spec acceptance(不同退出层):

  • E=6:76.0%
  • E=12:约 97.2% / 97.6%(文中与表格呈现有轻微写法差异,量级一致);
  • E=18:98.9%

并达到 2.0× 速度提升。

这说明在结构化任务上,验证环节可以高效“兜底”。

12.6 CPU 结果与缓存复用消融

附录 Table 11 给了 CPU 上 TOPv2 的实测,非常有参考价值:

  • Autoregressive:EM 85.39,约 165 ms/token
  • Early Exit(E=6):可快到 44 ms/token,但 EM 掉到 29.8
  • Self-Spec(E=6):EM 82.9,约 87 ms/token
  • Self-Spec(E=12):EM 82.9,约 104 ms/token
  • Self-Spec(E=18):EM 82.9,约 134 ms/token

这组数据非常清楚地证明:

  • 纯早退快但太伤质量;
  • 自校验把质量拉回,同时仍显著快于全量自回归。

再看 Table 7(KVQ 复用消融):

  • 作者报告在不同任务上可节省约 9–20 ms/token

这证明 KVQ 不是“概念加分项”,而是有实测收益。


13. 图表证据逐项复盘

Figure 1

给出完整 pipeline,是全篇路标图。

Figure 2

给出逐层 token 演化证据,证明“默认模型早层潜力不足但并非全无可能”。

Figure 3

把训练视为“共享权重多深度子模型集合”,这个视角很重要。

Figure 4

直观对比 L vs E 的 token 成本。

Figure 5

解释三种解码路径(自回归、传统 speculative、self-spec)的计算与复用差异。

Figure 6 / 8 / 10

给出不同训练范式下 early-exit 曲线,支持“方法可迁移”。

Figure 7 / 9

展示文本样例,直观看到 pure early-exit 的错误如何被 verify 修复。

Figure 11

非常关键:随着训练 token 增加,最后层 PPL 下降是正常的,但中层 PPL 在默认训练下可能显著变差;EE/LD 能缓解。这是方法合理性的强证据。

Figure 12

指数型层 dropout 配置优于常数型配置(在相同平均 dropout 下)。


14. 这篇论文真正强在哪里

我认为有六个硬优点。

优点 1:训练-推理协同设计

不是只改推理,不是只改训练,而是两端耦合优化。

优点 2:单模型自推测,内存更友好

相比两模型 speculative,部署复杂度与显存压力更可控。

优点 3:共享 LM head,工程落地成本低

不需要给每层挂独立 head,维护与服务更简单。

优点 4:评估覆盖广

continual、scratch、domain finetune、task finetune 都测了。

优点 5:有系统侧实证

CPU 结果 + KVQ 复用消融,使结论更“工程可信”。

优点 6:揭示了深层依赖的训练动力学

Figure 11 不只是加速结果,而是对“为什么默认模型中层难用”给出实证线索。


15. 局限性与边界条件

论文也坦诚写了不足,我补充展开如下。

局限 1:不是即插即用

要取得最好效果,通常需要按 LayerSkip 配方训练/微调过。

局限 2:超参变多

pmaxescaleREd 都要调。调不好会影响最后层质量或收益。

局限 3:最后层精度有回退风险

论文多处提到若设置不当会掉最后层表现。

局限 4:固定退出层并不最优

不同 token 难度不同,固定 E 是工程简化,不是理论最优。

局限 5:不同任务收益差异明显

不是所有任务都能拿到同样加速比。

局限 6:从零训练要调学习率

论文强调了这一点,说明落地成本并非零。

局限 7:acceptance 决定最终收益

草拟质量不够高时,verify 回滚频繁,收益会被吞掉。


16. 可复现性评估

我给这篇论文的可复现性评价是:中上(有代码,有配置,但工程细节仍需经验)

有利因素

  • 开源代码与 checkpoint;
  • 附录有训练配置、学习率与架构表;
  • 指标定义和任务分类相对清晰;
  • 给了 self-spec 伪代码。

复现难点

  • 规模实验资源成本不低;
  • cache 复用实现细节对框架敏感;
  • 不同硬件/内核下速度数字会波动;
  • 超参调优需要服务侧观测闭环。

实操建议

若你要复现,不建议直接上最大配置。建议:

  1. 先在 task-specific finetune 规模跑通;
  2. 做 E 与 d 的网格扫描;
  3. 同时看 acceptance、质量、时延三维曲线;
  4. 再引入 KVQ 复用对照;
  5. 最后再扩到更大模型。

17. 如果我在 2026 年继续做这条线,会怎么推进

我会优先做五件事。

方向 1:动态 per-token 退出层

当前固定 E 过于粗粒度。可以根据 token 置信度或 draft-verify 分歧信号动态决定深度。

方向 2:与量化联合

LayerSkip(减有效深度)与量化(减数值成本)是互补关系,理论上可叠加。

方向 3:与现代服务引擎融合

在 vLLM 类分页缓存框架中验证 KVQ 复用收益是否稳定可复现。

方向 4:中层蒸馏增强

在现有 EE 基础上加中层 logits/hidden 蒸馏,可能进一步提高 acceptance。

方向 5:按请求类型自适应策略

低风险请求走激进早退,高风险请求提高 E 或降低 d,实现质量-成本分级服务。


18. 工程落地启发(可执行)

给做推理系统的同学,我提 8 条可直接落地的建议。

  1. 把深度当成调度资源,而不是固定结构。
  2. 训练目标要提前为推理优化让路。
  3. 单模型方案优先评估缓存复用潜力。
  4. 一定要单独评估生成任务,不要只看分类任务。
  5. 早退单独使用风险大,尽量配验证环节。
  6. acceptance 是核心线上指标,必须持续监控。
  7. 质量回归要重点盯最后层与中层分化趋势。
  8. CPU 场景也值得测,很多边缘部署更看重它。

19. 总结结论

我的最终判断:

LayerSkip 是一篇“思路正确、工程意识强、证据比较扎实”的推理效率论文。它真正有价值的地方,不是某个孤立加速数字,而是把训练阶段改造成可服务化友好结构,让同一模型完成“草拟 + 校验 + 缓存复用”的闭环。

它不是无代价方案:

  • 需要额外训练/微调;
  • 需要调参;
  • 不同任务收益不同。

但它很可能是未来“训练-部署联合优化”路线中的一个重要基线。

如果你关注 Efficient ML,尤其是“怎样在不显著牺牲质量下把推理做快”,这篇论文值得你认真读、认真复现。


20. 参考文献

  1. Elhoushi et al. LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding. ACL 2024.
  2. Leviathan et al. Fast Inference from Transformers via Speculative Decoding. 2023.
  3. Fan et al. Reducing Transformer Depth on Demand with Structured Dropout. 2020.
  4. Schuster et al. Confident Adaptive Language Modeling. 2022.
  5. Zhang et al. Draft & Verify / Self-speculative decoding related work. 2023.

21. 附录 A:常见问答

Q1:这是不是“删层剪枝”?

不完全是。它不是把层永久删掉,而是推理时先用前层快速生成,再让后层验证修正。模型结构本身还在。

Q2:这和量化是不是一回事?

不是。量化是“每次计算更便宜”;LayerSkip 是“很多 token 少走几层 + 校验修正”。

Q3:为什么不用第二个小模型做草稿?

可以用。传统 speculative 就这么做。LayerSkip 的优势是单模型缓存复用更自然、内存更友好。

Q4:是不是只 early exit 就够了?

通常不够。纯 early exit 质量容易掉。self-verify 才是可部署关键。

Q5:我先看哪几张图最有效?

建议顺序:

  1. Figure 1(总流程)
  2. Figure 2(动机)
  3. Figure 5(self-spec 机制)
  4. Figure 6/8/10(主结果)
  5. Figure 11(训练动力学)

Q6:最值得工程团队学到的一点是什么?

训练要为服务场景服务。不是训练结束再“补丁式”提速,而是从训练时就塑造可加速结构。


22. 附录 B:证据清单

  • 问题定义完整: 是(速度、质量、内存/复杂度三者兼顾)。
  • 前置知识完整: 是(自回归、早退、speculative、缓存)。
  • 方法讲清: 是(LD、EE、Self-Spec、KVQ)。
  • 公式覆盖: 是(层 dropout 概率、总损失、课程机制)。
  • 关键图讨论: Figure 1/2/3/4/5/6/8/10/11/12。
  • 关键表讨论: Table 3/4/5/7/11 + Table 6 的 acceptance 核心结论。
  • 具体数字: 是(23.45/32、2.16×、1.82×、2.0×、CPU ms/token、acceptance)。
  • 局限性: 是(需改训练、调参复杂、固定 E 非最优等)。
  • 可复现性: 是(代码可用,附录配置较全,仍有工程门槛)。
  • 工程启发: 是(深度调度、缓存复用、acceptance 监控、分级策略)。

评审写于 2026-04-15。