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-7B | 21–29 |
| LLaMA2-13B | 26–35 |
| Baichuan2-7B | 22–30 |
| Baichuan2-13B | 26–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-7B | 50.17 | 43.91 | 87.52% |
| LLaMA2-13B | 58.49 | 53.57 | 91.59% |
| Baichuan2-7B | 61.72 | 53.46 | 86.62% |
| Baichuan2-13B | 66.82 | 58.66 | 87.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:
| 方法 | XSum | GSM8K | StrategyQA | 平均 |
|---|---|---|---|---|
| Dense | 22.19 | 28.89 | 63.58 | 38.22 |
| ShortGPT | 17.59 | 2.35 | 46.00 | 21.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 的结果为:
| 方法 | XSum | GSM8K | StrategyQA | 平均保留率 |
|---|---|---|---|---|
| Dense | 22.19 | 28.89 | 63.58 | 100% |
| ShortGPT | 17.59 | 2.35 | 46.00 | 57.51% |
| ShortGPT-gen | 21.76 | 26.91 | 62.70 | 97.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% | 29 | 1.06× |
| 15.6% | 27 | 1.10× |
| 25.0% | 24 | 1.16× |
| 27.1% | 23 | 1.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 存在显著的深度冗余,但也表明“选择题可删层”并不等于“生成任务可无损删层”。
