尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Structured Pruning of Large Language Models 解读

Structured Pruning of Large Language Models 解读
📅 发布时间:2026/7/21 7:42:52

一、论文基本信息

论文题目:Structured Pruning of Large Language Models

作者:Ziheng Wang、Jeremy Wohlwend、Tao Lei

发表会议:EMNLP 2020

方法名称:FLOP,Factorized Low-rank Pruning

官方代码:asappresearch/flop,仓库说明这是论文提出的factorized L0-based pruning的 PyTorch 实现。(GitHub)

这篇论文中的Large Language Models要结合 2020 年语境理解,主要指当时的大型预训练语言模型和大规模语言建模模型,比如Transformer-XL、RoBERTa、SRU language model等,不是今天我们说的 LLaMA、GPT-4 这类超大 decoder-only LLM。


二、论文要解决的问题

这篇论文关注一个非常核心的问题:

语言模型越来越大,参数多、推理慢、训练贵,那么它们真的需要这么大的矩阵和这么高的秩吗?

传统剪枝方法主要有两类。

第一类是非结构化权重剪枝。
它把单个权重置零,例如 magnitude pruning。这类方法通常能保持不错精度,但剪完后矩阵还是原来的形状,只是里面有很多零散的 0。论文指出,这种不规则稀疏矩阵在普通硬件上很难获得真实训练和推理加速。(ACL Anthology)

第二类是结构化剪枝。
它删除整行、整列、块或特征维度。这类方法更容易加速,但剪枝模式太受限制,常常比非结构化剪枝损失更大。论文也提到,某些 block sparse 方法还需要特殊线性代数实现或硬件支持。(ACL Anthology)

所以这篇论文想解决的是:

能不能既保持结构化剪枝的真实加速能力,又避免普通行列剪枝过于粗糙的问题?

作者给出的答案是:用低秩分解来做结构化剪枝。


三、核心思想

这篇论文的核心思想是:

不要直接剪原始权重矩阵,而是先把权重矩阵分解成多个 rank-1 components,然后剪掉不重要的 rank-1 components。

一个普通线性层本来是一个大矩阵。论文把它改写成两个小矩阵的乘积。这个乘积可以理解成很多个 rank-1 组件的和。每个 rank-1 组件都是一个结构化单元。

然后模型训练时学习:

哪些 rank-1 components 应该保留。

哪些 rank-1 components 可以删除。

删除之后,剩下的仍然是两个 dense 矩阵相乘,而不是不规则稀疏矩阵。论文明确强调,低秩分解可以保留 dense matrix structure,因此不需要特殊稀疏矩阵算子或硬件来获得加速。(ACL Anthology)

这就是 FLOP 的核心:

用低秩结构做剪枝对象,而不是用单个权重做剪枝对象。


四、为什么低秩剪枝比普通结构化剪枝更灵活?

普通结构化剪枝通常剪的是:

某一列。

某一行。

某一个 block。

这种剪法很规整,但限制也很强。例如剪掉某一列,就意味着整个输入特征维度都被删掉;剪掉某个 block,就意味着这个局部区域全部消失。

FLOP 的思路更柔和:

一个 rank-1 component 可以影响整个矩阵,但它本身仍然是一个可删除的结构化单元。

它不像单个权重剪枝那么细碎,也不像整行整列剪枝那么粗暴。

论文也指出,input feature pruning 可以看作低秩剪枝的一个特例,因此低秩剪枝比普通输入维度剪枝更一般、更灵活。(ACL Anthology)

所以 FLOP 的定位可以理解为:

它是一种介于非结构化剪枝和粗粒度结构化剪枝之间的方法。

它剪的是结构单元,但这个结构单元是低秩分解中的 rank-1 component。


五、FLOP 具体怎么剪?

FLOP 会给每个 rank-1 component 加一个可学习的 gate。

如果 gate 打开,这个 rank-1 component 保留。

如果 gate 关闭,这个 rank-1 component 删除。

训练结束后,只保留 gate 非零的 rank-1 components。对应到矩阵实现上,就是只保留两个低秩矩阵中对应的列和行。论文说明,训练后只需要存储非零对角 gate 对应的列和行,非零 gate 也可以吸收到其中一个矩阵里,最终推理仍然是普通 dense matrix multiplication。(ACL Anthology)

这点很关键。

它不是得到一个稀疏大矩阵,而是得到两个更小的 dense 矩阵。

因此它更容易获得真实加速:

非结构化剪枝:大矩阵 + 零散 0。

FLOP:小矩阵 × 小矩阵。


六、两种剪枝版本:FLOP-AGP 和 FLOP-L0

论文里主要有两个 FLOP 版本。

6.1 FLOP-AGP

FLOP-AGP 是比较简单的版本。

它对低秩分解中的 gate 做 magnitude-based gradual pruning。也就是说,逐步删除 gate 值较小的 rank-1 components。

这个版本说明了一个重要事实:

只要剪枝对象换成低秩组件,即使用普通 magnitude gradual pruning,也能得到不错结果。

论文在摘要和方法里都强调,简单 magnitude pruning 已经能取得强结果。(ACL Anthology)

6.2 FLOP-L0

FLOP-L0 是更完整的版本。

它使用Hard Concrete / L0 regularization来学习 gate 是否打开。L0 的目标是鼓励更多 gate 变成 0,从而删除更多 rank-1 components。

但普通 L0 正则有一个问题:

很难精确控制最终模型大小。

同一个正则系数,在不同学习率或训练调度下,可能得到完全不同的压缩率。论文因此引入Augmented Lagrangian Method,把目标模型大小作为约束,让模型更稳定地达到指定压缩比例。(ACL Anthology)

简单理解就是:

FLOP-L0 不只是鼓励稀疏,而是尽量让最终模型大小接近用户指定预算。


七、为什么它能加速训练和推理?

这篇论文的一个重要卖点是:

它不只是减少参数,还能加速训练和推理。

原因是训练时 gate 在一个 batch 内共享。当某些 rank-1 components 被关闭时,当前 batch 可以只计算保留下来的部分,执行更小的矩阵乘法。论文明确说,batch 内共享 pruning mask 后,可以选择当前 batch 活跃的参数,执行更小的矩阵乘法,因此当 mask 变稀疏时可以获得训练加速。(ACL Anthology)

推理时则更直接:

训练得到固定 mask。

删除被关闭的 rank-1 components。

把剩余部分编译成小 dense 矩阵。

所以 FLOP 不依赖稀疏矩阵库,也不要求特殊硬件。

这和 Movement Pruning、Magnitude Pruning 很不同。后者参数虽然少,但如果矩阵形状不变,推理速度不一定明显提升。


八、它对 embedding / softmax 也能剪

语言模型有一个特殊问题:

输入 embedding 和输出 softmax 层非常大。

尤其是词表很大的语言模型,embedding / softmax 可能占据大量参数。论文指出,输入和输出层在大语言模型中是特殊挑战,因为它们可能占据很大参数比例。(ACL Anthology)

FLOP 可以和 adaptive embedding / adaptive softmax 结合。传统 adaptive embedding 会按照词频给不同词簇手工设定不同维度:高频词维度大,低频词维度小。

FLOP 进一步让这个维度自动学习。

也就是说:

不是人工规定低频词用多少维。

而是给每个词簇的低秩维度加 gate,让模型自己决定保留多少。

论文发现,FLOP 会更激进地剪掉低频词的 embedding 维度,这和人工经验一致:低频词不需要占用和高频词一样多的表示容量。(ACL Anthology)

这个设计很有价值,因为它把 FLOP 从普通线性层扩展到了语言模型中最占参数的 embedding / softmax 层。


九、实验设置

论文实验覆盖三类模型和任务。

第一,WikiText-103 word-level language modeling。
模型是 12 层 SRU,参数量约 100M,其中约 50% 参数在 adaptive embedding / softmax 层。(ACL Anthology)

第二,Enwik8 character-level language modeling。
使用 SRU 和 Transformer-XL,其中 Transformer-XL 是 12 层、约 41M 参数;论文对 self-attention 和 feed-forward 层中的矩阵引入 pruning。(ACL Anthology)

第三,RoBERTa-base 下游分类任务。
论文在 SST-2、MRPC、STS-B、QNLI 上做 fine-tuning 压缩。因为 RoBERTa-base 本身不是低秩分解训练出来的,所以作者先对每个矩阵做 SVD,再在分解矩阵之间加入 pruning mask。(ACL Anthology)


十、主要实验结果

10.1 WikiText-103:50% 参数压缩只损失 0.8 PPL

WikiText-103 上,SRU base 模型测试 PPL 是24.5。FLOP-L0 在50% 压缩时得到25.3 PPL,只损失0.8 PPL;在 70% 压缩时得到 27.7 PPL,在 80% 压缩时得到 31.9 PPL。相比 FAC、AGP、NP-L0 等 baseline,FLOP 在多个压缩比例下表现更好。(ACL Anthology)

这个结果说明:

低秩组件剪枝在语言建模中非常有效。

尤其是 50% 压缩时,性能损失很小。


10.2 Adaptive embedding:低频词被剪得更多

论文分析了不同词频簇中的参数使用情况。结果显示,FLOP 会对低频词更激进地减少维度。论文明确说,FLOP learns to prune the dimension more aggressively for less-frequent words。(ACL Anthology)

这说明 FLOP 不只是统一压缩所有模块,而是能自动分配容量:

高频词保留更多表示维度。

低频词保留更少表示维度。

这比人工指定 adaptive embedding 维度更灵活。


10.3 Enwik8:SRU 和 Transformer-XL 上都有效

在 Enwik8 的 SRU character-level language model 上,base 模型 BPC 是1.24。FLOP-L0 在 70% 压缩时得到1.25 BPC,几乎接近原模型;在 80% 压缩时得到 1.27,在 90% 压缩时得到 1.33。(ACL Anthology)

在 Transformer-XL 上,base 模型 BPC 是1.08。FLOP-L0 在 80% 压缩时得到1.13 BPC,在 90% 压缩时得到1.17 BPC。论文指出 FLOP-L0 在这些设置下优于对比方法,说明该方法可以应用到 Transformer-XL 这类架构。(ACL Anthology)

这个结果说明:

FLOP 不是只适用于 RNN,也能用于 Transformer 的 attention 和 FFN 矩阵。


10.4 RoBERTa 下游任务:35% 参数压缩保留接近 99% 性能

在 RoBERTa-base 下游分类任务中,原模型参数量约125M,平均分为90.83。压缩到80M,也就是约35% 参数减少后,平均分为89.48。论文总结说,这相当于保留了接近 99% 的性能,同时减少 35% 参数。(ACL Anthology)

具体任务上:

SST-2:92.43 → 92.09

MRPC:90.9 → 88.61

STS-B:90.22 → 88.18

QNLI:89.77 → 89.05

这说明 FLOP 可以迁移到预训练模型 fine-tuning 场景,但压缩率没有语言建模实验那么激进。一个重要原因是 RoBERTa 的 embedding 层仍然占很大比例,而论文这个实验没有像 WikiText-103 那样完整压缩 embedding。论文也指出,如果进一步 factorize embedding layer,可能获得更高压缩率。(ACL Anthology)


十一、它是不是结构化剪枝?

是的,它是结构化剪枝,但不是我们通常说的 head pruning 或 layer pruning。

它的结构单元是:

低秩分解中的 rank-1 component。

剪掉一个 rank-1 component,就等价于同时删掉低秩矩阵中的一列和另一矩阵中的一行。

所以它不是:

非结构化 weight pruning。

attention head pruning。

Transformer layer pruning。

FFN neuron pruning。

它更准确的名字是:

low-rank component pruning。

也可以说是:

基于低秩分解的结构化矩阵剪枝。

它的优势是:

剪完后仍然是 dense computation。

缺点是:

每个原始矩阵需要被低秩分解或重新参数化。


十二、和低秩分解有什么区别?

普通低秩分解方法通常是:

预先指定一个 rank。

把矩阵直接替换成固定低秩矩阵。

比如原矩阵 rank 设成 128,训练时就一直是 128。

FLOP 不一样。

它先给矩阵一个较大的分解空间,然后通过 gate 学习哪些 rank-1 components 真正需要。

也就是说:

普通低秩分解:人工指定 rank。

FLOP:训练过程中自动学习有效 rank。

这就是它比简单 factorized model from scratch 更强的原因。论文对比 FAC,也就是固定比例低秩模型从头训练,结果显示 FLOP 在多个压缩率下明显更好。(ACL Anthology)


十三、和 Movement Pruning / Block Pruning 的区别

Movement Pruning剪的是单个权重,产生非结构化稀疏。它高稀疏下精度强,但普通硬件上不一定快。

Block Pruning剪的是矩阵 block 或结构维度,更硬件友好,但仍然主要围绕稀疏模式组织。

FLOP的想法不同:

它不制造稀疏大矩阵,而是直接把矩阵改写成低秩小矩阵。

因此 FLOP 的核心不是“哪些权重为 0”,而是:

这个矩阵真正需要多少 rank-1 components。

如果从压缩谱系看:

Movement Pruning:权重级稀疏。

Block Pruning:块级 / 半结构化稀疏。

FLOP:低秩结构化压缩。


十四、和 Head Pruning、CoFi 的区别

Head pruning 删除完整 attention head,只作用于 MHA 的特定结构。

CoFi 删除 MHA layer、FFN layer、attention heads、FFN intermediate dimensions、hidden dimensions,是多粒度结构化剪枝。

FLOP 更通用:

只要是矩阵乘法,就可以用低秩分解加 rank-1 component pruning。

论文也强调 FLOP applies to any matrix multiplication。(ACL Anthology)

所以它不是专门为 Transformer head 设计的,而是一个通用矩阵压缩方法。

但也正因为它通用,它没有显式利用 Transformer 的语义结构,例如:

哪个 head 重要。

哪一层冗余。

哪个 FFN channel 可以删。

它关注的是矩阵本身的有效秩。


十五、方法优点

第一,结构化且硬件友好。
FLOP 剪完后得到的是小 dense 矩阵,而不是不规则稀疏矩阵,因此更容易在普通硬件上加速。论文也强调它不需要特殊线性代数 primitive 或硬件。(ACL Anthology)

第二,比普通行列剪枝更灵活。
剪 rank-1 component 比剪输入维度或矩阵列更不受限制,因此在相同参数预算下通常性能更好。论文分析中也强调,factorization-based pruning 相比 input feature pruning 具有更小性能下降。(ACL Anthology)

第三,适用范围广。
它可以用于 SRU、Transformer-XL、RoBERTa,也可以用于 embedding / softmax 层。(ACL Anthology)

第四,可以自动学习不同模块的容量。
尤其在 adaptive embedding 中,它能自动给不同词频簇分配不同维度,而不是人工指定。

第五,可以加速训练和推理。
因为训练时 batch 内共享 mask 后可以执行更小矩阵乘法,推理时也只保留压缩后的 dense factorization。(ACL Anthology)


十六、方法局限

第一,需要低秩重参数化。
对于已经训练好的模型,如果原来不是低秩分解形式,需要先做 SVD 或重新参数化。这会增加实现复杂度。论文在 RoBERTa 实验中就是先对每个矩阵做 SVD,再插入 pruning mask。(ACL Anthology)

第二,不直接剪 Transformer 语义结构。
它不会告诉你哪个 attention head 冗余、哪一层冗余、哪个 FFN channel 冗余。它关注的是矩阵低秩组件,而不是 Transformer 模块功能。

第三,压缩率受 embedding 等未处理模块影响。
RoBERTa 下游任务只压缩到 35% 参数减少,很大原因是 embedding 层占比大,而该实验对 embedding 压缩有限。论文也指出进一步 factorizing embedding layer 可能获得更高压缩。(ACL Anthology)

第四,可能改变原模型结构实现。
原来一个 Linear 变成两个 Linear 的乘积。虽然矩阵更小,但实际速度是否提升还取决于 batch size、矩阵形状、框架融合能力等。

第五,对现代 decoder-only LLM 的适用性需要重新验证。
这篇论文实验主要是 SRU、Transformer-XL、RoBERTa 和早期语言建模任务,不能直接等同于 LLaMA、Mistral、Qwen 这类现代 LLM 的剪枝效果。


十七、整体评价

这篇论文最重要的贡献,是把结构化剪枝从“删行、删列、删块”转向“删低秩组件”。

它抓住了一个很关键的问题:非结构化剪枝虽然精度好,但不快;粗粒度结构化剪枝虽然快,但容易伤精度。低秩组件剪枝在两者之间提供了一个很好的折中:

它是结构化的,所以能变成小 dense 计算。

它又比行列剪枝灵活,所以性能损失更小。

这篇论文对后续工作有两个启发。

第一,矩阵有效秩本身就是一种冗余来源。
Transformer 的 Q/K/V、FFN、输出投影等矩阵可能不需要完整 rank。

第二,压缩不一定非要产生稀疏矩阵。
把大矩阵改写成低秩小矩阵,也是一条很重要的部署路线。

如果你后面做 Transformer 剪枝实验,这篇论文适合放在low-rank structured pruning这一类,而不是 head pruning、layer pruning 或 token pruning。


十八、一句话总结

《Structured Pruning of Large Language Models》提出 FLOP,将语言模型中的权重矩阵低秩分解为多个 rank-1 components,并在训练中通过 magnitude pruning 或 L0 gate 自适应删除不重要的低秩组件;剪枝后模型仍然执行小 dense 矩阵乘法,因此比非结构化稀疏更容易获得真实训练和推理加速。它的核心价值是证明:大型语言模型的矩阵有效秩存在明显冗余,基于低秩组件的结构化剪枝可以在 WikiText-103、Enwik8、Transformer-XL 和 RoBERTa 下游任务上取得较好的压缩—性能折中。

相关新闻

  • 深入解析TI CLA协处理器:流水线冲突、延迟槽与高效编程实践
  • Sqribble:面向结构化文档的云原生操作系统
  • Open File Viewer -- 一个前端多文件类型的预览神器

最新新闻

  • 武汉智工职业技术学校王牌招生专业详解 附 2026 完整招生简章 - 武汉中职最新信息发布
  • 2026毓典奢品汇北京江诗丹顿回收避坑指南|纵横四海传袭系列行情 顶奢腕表高价变现攻略 - 二奢行情速报
  • 内存泄漏系列专题分析之三十一:Camx进程dumpsys meminfo Unknown部分内存拆解
  • react学习与使用
  • 2026食品自动化产线选型指南:软包装抓取专用柔爪供应商推荐 - 品牌深度评测
  • 重磅公示|2026年7月百达翡丽香港官方售后服务中心网点地址及电话 - 百达翡丽服务中心

日新闻

  • Python开发内部工具:7大核心库实战解析
  • 合肥雷达官方2026年7月最新信息:客户服务网点地址与售后热线权威公示 - 亨得利官方服务中心
  • PCA实战指南:从变量纠缠诊断到主成分业务解读

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号