ShortGPT: Layers in Large Language Models are More Redundant Than You Expect 解读

一、论文基本信息

论文题目:ShortGPT: Layers in Large Language Models are More Redundant Than You Expect

核心方法:

  • ShortGPT:面向选择题、困惑度评估等场景的静态层剪枝;

  • ShortGPT-gen:面向自回归生成任务的动态层跳过方法。

论文最早于 2024 年发布 arXiv 版本,后续扩展版本正式发表于Findings of ACL 2025。正式版本增加了生成任务分析和 ShortGPT-gen。官方实现位于icip-cas/ShortGPT,包含 ShortGPT 和 ShortGPT-gen 两部分。(arXiv)

一句话概括:

ShortGPT 发现很多 LLM 层对隐藏状态的改变非常小,于是用输入输出余弦相似度构造 Block Influence 指标,直接删除影响最小的完整 Transformer 层。

它属于:

训练后、无梯度、层级结构化剪枝,也就是深度剪枝。


二、论文要解决什么问题?

前面看到的 LLM 剪枝方法大致有两类:

SparseGPT、Wanda删除单个权重,属于非结构化剪枝;模型层数、隐藏维度和注意力头数都不改变。

LLM-Pruner、LoRAPrune、Compresso、Sheared LLaMA删除 head、FFN channel、hidden dimension 或 layer,属于结构化剪枝,但通常需要梯度、可学习 mask、LoRA 或继续预训练。

ShortGPT 提出了一个非常直接的问题:

LLM 中的很多完整 Transformer 层,是不是本来就没有发挥多大作用?

作者观察到,在很多采用Pre-Norm结构的 LLM 中,某一层的输出隐藏状态和输入隐藏状态非常相似。也就是说,一个 token 经过完整的 Attention 和 FFN 后,表示方向几乎没有变化。

如果一层的输入和输出几乎相同,那么这层可能接近一个恒等映射,可以直接跳过。论文进一步通过逐层删除实验发现,LLM 的冗余主要集中在中后部层;前几层和最后一层通常更加重要。


三、为什么 Pre-Norm LLM 容易出现层冗余?

当前很多 LLM 使用 Pre-Norm Transformer。一个简化的残差块可以理解为:

如果某一层学到的残差变化相对于很小,那么:

这样,该层输入与输出的余弦相似度就非常高。

论文专门比较了 Pre-Norm 和 Post-Norm 模型的训练过程:Pre-Norm 模型不同层的输入输出长期保持较高相似性,而实验中的 Post-Norm 模型在训练约 26B tokens 后不再表现出同样趋势。作者据此认为,Pre-Norm 的稳定性和残差路径可能也带来了更明显的深度冗余。

不过要注意:

输入输出相似不等于该层毫无作用。

某一层可能只对隐藏状态做了很小的方向调整,但这个小调整仍可能对某些任务至关重要。因此 ShortGPT 不是严格证明某层冗余,而是用表示变化大小作为一个简单的重要性代理。


四、Block Influence:层重要性如何计算?

ShortGPT 提出Block Influence,BI衡量一个 Transformer 层对隐藏状态的影响。

对第 (i) 层,BI 定义为:

其中:

  • 是第 (i) 层输入中第 (t) 个 token 的隐藏状态;

  • 是经过这一层后的隐藏状态;

  • 对校准文本和所有 token 求平均。

其含义很直观:

  • 余弦相似度高,BI 小:输入输出几乎相同,该层改变很小;

  • 余弦相似度低,BI 大:该层对表示进行了较大变换,更应该保留。

因此:

BI 越小,层越优先被删除。

作者选择余弦相似度而不是欧氏距离,是因为 LayerNorm 会削弱隐藏状态绝对模长的重要性,表示方向通常比数值尺度更值得关注。论文的逐层删除实验显示,BI 与删除单层后产生的困惑度变化具有较好的正相关性。


五、ShortGPT 的完整流程

ShortGPT 的流程非常简单。

第一步:准备校准数据

论文主要使用PG19文本作为校准集。校准数据只用于运行前向传播和统计隐藏状态,不需要标签,也不需要反向传播。

第二步:收集每层输入和输出

把校准文本送入原始 LLM,保存各层输入隐藏状态和输出隐藏状态。

第三步:计算 BI

计算每一层输入输出的平均余弦相似度,并转换成 BI 分数。

第四步:排序并删除完整层

将所有层按照 BI 从小到大排序,删除分数最低的若干层。

第五步:直接推理

原始 ShortGPT 不需要微调、LoRA、蒸馏或权重补偿,层删除后即可直接评估。

所以它的成本主要是:

少量校准样本的一次前向传播。


六、ShortGPT 剪的到底是什么?

ShortGPT 删除的是一个完整的 Transformer block,包括:

  • Self-Attention;

  • FFN;

  • 对应归一化和残差分支中的计算。

因此它是标准的:

Layer-level structured pruning

或者:

Depth pruning

剪枝后会发生真实结构变化:

  • 模型层数减少;

  • 参数量减少;

  • 每个 token 经过的 Transformer block 数减少;

  • KV Cache 中对应层的 K/V 也不再需要保存;

  • 不依赖非结构化稀疏 kernel。

它不是:

  • 单权重剪枝;

  • attention head pruning;

  • FFN neuron pruning;

  • token pruning;

  • hidden dimension pruning。


七、论文发现哪些层最冗余?

论文正式版本在约 25% 层剪枝设置下得到的删除结果是:

模型被删除的层
LLaMA2-7B21–29
LLaMA2-13B26–35
Baichuan2-7B22–30
Baichuan2-13B26–35

可以看到,最终被删除的层几乎都是连续的中后部层。使用 PG19 和 MMLU 作为校准数据时,LLaMA2 得到的删除层甚至完全相同,说明 BI 的层排序对校准数据具有一定稳定性。

这项观察比方法本身更值得注意:

当前 LLM 可能在中后部堆叠了多个功能高度相似的 Transformer 层。

但最后一层通常不能随意删除。论文发现,在 LLaMA2-7B 中:

  • 原始困惑度:7.60;

  • 删除最后完整一层:13.37;

  • 只删除最后一层 Attention:7.65;

  • 只删除最后一层 FFN:12.35。

这说明最后一层的重要性主要来自FFN,作者推测最后 FFN 已经接近输出分类器的一部分。


八、选择题和判别任务结果

正式版本在 LLaMA2和 Baichuan2 的多个选择题基准上进行了评估,包括 HellaSwag、PIQA、BoolQ、RACE、MMLU、CMMLU 等。

约删除四分之一层时:

模型Dense 平均分ShortGPT 平均分性能保留率
LLaMA2-7B50.1743.9187.52%
LLaMA2-13B58.4953.5791.59%
Baichuan2-7B61.7253.4686.62%
Baichuan2-13B66.8258.6687.79%

在 LLaMA2-13B 上,删除约 24.6% 的层后,MMLU 从55.00仅下降到54.69;但不同任务的敏感性差异很大,例如 HellaSwag、PIQA 等下降更加明显。

总体上,论文认为 ShortGPT 在相近压缩率下优于 LLM-Pruner、SliceGPT 和 LaCo,尤其在选择题任务上,直接减深度有时比压缩 embedding dimension 或内部通道更稳。

但这里需要谨慎理解:

ShortGPT 并不是每个任务都只下降一点。

“保留约 90% 性能”是多个任务平均后的结论,个别能力可能下降得更加明显。


九、为什么普通 ShortGPT 在生成任务上失效?

ShortGPT 在多项选择题上表现较好,但直接用于自回归生成时会严重退化。

例如 LLaMA2-13B:

方法XSumGSM8KStrategyQA平均
Dense22.1928.8963.5838.22
ShortGPT17.592.3546.0021.98

尤其 GSM8K 从28.89降到2.35。在 7B 模型上,删除约四分之一层后,GSM8K 也接近失效。

原因在于:

选择题只需要对几个固定答案计算得分,而自回归生成会把每一步产生的误差带入下一步。

删层导致的微小表示误差,在生成数十个 token 后会不断累积,最终造成:

  • 推理链断裂;

  • 数值计算错误;

  • 输出跑题;

  • 重复或异常生成。

这说明“单层影响小”不意味着“连续生成几十步后影响仍然小”。


十、ShortGPT-gen:如何改善生成任务?

为解决自回归误差累积,正式版本提出ShortGPT-gen

它采用一种不对称执行策略:

  • 输入提示词的 tokens跳过 BI 较低的冗余层;

  • 模型新生成的 tokens仍然经过全部 Transformer 层。

在被跳过的层中,输入 tokens 没有新的输出隐藏状态,因此解码时使用前一个未跳过层的隐藏状态生成相应的 K/V;新生成 token 则完整经过该层。

因此 ShortGPT-gen 主要压缩的是:

Prompt Prefill 阶段。

而自回归 decoding 阶段仍执行完整网络,从而避免生成误差逐步积累。

LLaMA2-13B 的结果为:

方法XSumGSM8KStrategyQA平均保留率
Dense22.1928.8963.58100%
ShortGPT17.592.3546.0057.51%
ShortGPT-gen21.7626.9162.7097.12%

ShortGPT-gen 显著修复了生成性能,但它有一个根本代价:

ShortGPT-gen 不会真正删除模型层,也不减少模型权重大小。

它保留完整模型,只对部分 tokens 动态跳层,因此属于动态计算,而不是静态模型压缩。


十一、BI 与其他层重要性指标相比如何?

论文比较了四种层排序方法:

Sequential:先删浅层。

Reverse-order / Norm:优先删深层,或者按照隐藏状态模长排序。

Relative Magnitude:衡量残差更新相对于输出的幅度。

Block Influence:使用输入输出余弦变化。

结果显示,BI 在困惑度和 MMLU 的综合表现上最好;Relative Magnitude 也具有较强竞争力。单纯依据层序或隐藏状态范数虽然在部分任务上有效,但困惑度表现不稳定。

这说明 BI 的优势不是它有复杂理论,而是它与 Pre-Norm 残差结构的行为较匹配:

一层究竟做了多少方向性变化,可能比这一层输出有多大更值得关注。


十二、真实加速是否等于层数减少比例?

并不等于。

论文在 GPTQ 量化的 LLaMA2-7B 上报告:

剪枝比例剩余层数吞吐量提升
9.4%291.06×
15.6%271.10×
25.0%241.16×
27.1%231.19×

删除约 27% 的层,实际吞吐只提升约19%,没有达到理想的 (1/(1-0.27)\approx1.37) 倍。

原因包括:

  • Embedding、LM Head 和采样过程没有被压缩;

  • 内存访问和框架调度存在固定开销;

  • 小 batch 解码常常受显存带宽限制;

  • 删除层不能消除所有非 Transformer 开销;

  • 实际 kernel 利用率不会随层数线性变化。

所以 ShortGPT 的部署结论应该表述为:

层剪枝能带来真实速度收益,但加速通常明显低于理论层数缩减比例。


十三、能否与量化结合?

可以。层删除和权重量化处理的是两个正交维度:

  • ShortGPT 减少模型深度;

  • GPTQ 减少每个权重的比特数。

论文在 LLaMA2-7B 上得到:

  • 原始:MMLU 45.4;

  • 4-bit:44.9;

  • ShortGPT:44.0;

  • 先 4-bit 再 ShortGPT:42.4;

  • 先 ShortGPT 再 4-bit:41.2。

这说明二者可以组合,但“正交”并不代表组合后没有额外精度损失,而且执行顺序也会产生一定差异。


十四、它和其他 LLM 剪枝方法的区别

与 SparseGPT、Wanda

SparseGPT 和 Wanda 删除单个权重,模型深度和矩阵形状不变。

ShortGPT 删除完整 Transformer 层,得到更浅的 dense 模型。

因此:

SparseGPT/Wanda 是权重级稀疏化。

ShortGPT 是层级结构化剪枝。

ShortGPT 不需要稀疏 kernel,但粒度更粗,删错一层带来的损伤也更大。

与 LLM-Pruner、LoRAPrune

LLM-Pruner 和 LoRAPrune 会剪 head、FFN channel 等结构,并进行 LoRA 恢复。

ShortGPT 只删除完整层,原始版本不使用梯度或恢复训练。

因此:

LLM-Pruner/LoRAPrune 更细粒度、更复杂。

ShortGPT 更粗粒度,但极其简单。

与 Sheared LLaMA

Sheared LLaMA 同时剪 layer、head、hidden dimension 和 FFN dimension,再继续预训练 50B tokens。

ShortGPT 只根据 BI 删层,几乎没有训练成本。

因此:

Sheared LLaMA 面向生产高质量小型 base model。

ShortGPT 面向低成本、训练后快速深度压缩。

与 LaCo

LaCo 不是简单删除层,而是逐渐合并相似层。

ShortGPT 直接移除低 BI 层,不做参数融合。

前者试图保留被压缩层的信息,后者更简单,但可能产生更大的生成误差。


十五、扩展到 Mamba 和 RWKV 的结果

正式版本还将类似的 block influence 思想用于 Mamba-2.8B 和 RWKV-7B。

删除约 25% blocks 后:

  • Mamba 保留约90.37%的平均性能;

  • RWKV 只保留约70.89%

这说明 block-level redundancy 不只存在于 Transformer,但不同架构对深度删除的鲁棒性差异很大,不能简单假设 ShortGPT 的结论适用于所有序列模型。


十六、方法优点

第一,极其简单。
只需少量文本前向传播、计算余弦相似度和删除层。

第二,无需梯度和训练。
不需要反向传播、Hessian、LoRA、蒸馏或继续预训练。

第三,真正结构化。
ShortGPT 静态版本会物理删除完整层,普通 dense 推理框架即可运行。

第四,校准数据相对稳健。
PG19 与 MMLU 得到了相同的 LLaMA2 删除层序列。

第五,揭示了重要架构现象。
它说明大模型扩大深度后,不同层未必都学习到了同等独特的变换。


十七、方法局限

1. BI 是局部指标,忽略层间协同

BI 分别衡量每一层的输入输出变化,但同时删除多层时,误差不一定等于各层误差之和。

两个单独看都不重要的层,可能承担互补功能;连续删除多层后,功能损失可能突然放大。

论文也观察到,剪枝率提升到某个阈值时,MMLU 会出现断崖式下降,说明网络中存在关键层和非线性交互。

2. 高余弦相似不代表功能冗余

某一层可能只对少数 token、少数知识或少数任务产生关键变化。平均余弦相似度容易掩盖这种长尾作用。

3. 静态 ShortGPT 不适合复杂生成

GSM8K 等任务上,普通 ShortGPT 的性能可能接近失效。ShortGPT-gen 虽然修复生成能力,却不减少模型体积。

4. 实际加速有限

删除约四分之一层,实测吞吐提高约 16%–19%,而不是理论上的 33%以上。

5. 缺少现代模型的广泛验证

核心实验集中在 LLaMA2 和 Baichuan2。对 GQA、MoE、长上下文、现代 instruction-tuned 模型以及推理模型,层冗余分布可能不同。


十八、整体评价

ShortGPT 最重要的贡献并不是提出了多复杂的剪枝算法,而是揭示了一个非常直接的现象:

LLM 的参数冗余不仅存在于权重、神经元和注意力头中,也大量存在于模型深度上。

它把 LLM 层剪枝简化成了:

看这一层是否真正改变了隐藏状态。

如果没有明显改变,就直接删除。

这种思路的优点是简单、训练成本近乎为零、结构硬件友好;缺点则是粒度太粗,对生成任务和高压缩率尤其敏感。

从方法脉络看:

  • SparseGPT:剪权重,二阶重构;

  • Wanda:剪权重,权重与激活联合评分;

  • LLM-Pruner:剪耦合结构组;

  • LoRAPrune:用 LoRA 梯度指导结构剪枝;

  • Sheared LLaMA:剪成目标结构并继续预训练;

  • Compresso:LoRA、L0 mask 与提示协同训练;

  • ShortGPT:用 BI 直接删除变化最小的完整层。

因此它最准确的定位是:

training-free, calibration-based, layer-level structured pruning for LLMs。


十九、一句话总结

《ShortGPT: Layers in Large Language Models are More Redundant Than You Expect》提出 Block Influence,用一层输入与输出隐藏状态的平均余弦差异衡量层重要性:输入输出越相似,说明该层对表示改变越小,越适合删除。ShortGPT 根据 BI 直接删除完整 Transformer 层,不需要梯度或微调,在 LLaMA2-13B 上删除约四分之一层后仍保留约 91.6% 的选择题平均性能;但普通 ShortGPT 在自回归生成中会因误差累积严重退化,因此正式版本又提出 ShortGPT-gen,让提示词 tokens 跳过冗余层、生成 tokens 经过全部层。它证明了 LLM 存在显著的深度冗余,但也表明“选择题可删层”并不等于“生成任务可无损删层”。