大规模语言模型剪枝又一力作,比SparseGPT还快300倍!

news2024/9/21 0:33:57

87476f0ff6e7d1c070db0b0db8e71bad.gif

©Paperweekly 原创 · 作者 | An.

单位 | 中科院自动化所

研究方向 | 计算机视觉、模型压缩

DenseNet、ConvNeXt、Network Slimming 一作刘壮研究员的剪枝新工作,针对 LLMs 特点设计的极低成本无需微调的剪枝算法,耗时接近幅值剪枝,性能表现与 SparseGPT [1] 相当。

40e3427549898107ec52feb6765eab46.png

论文标题:

A Simple and Effective Pruning Approach for Large Language Models

论文链接:

https://arxiv.org/pdf/2306.11695.pdf

代码链接:

https://github.com/locuslab/wanda

1bb7224043c5799d18bc34195b790bb1.png

动机&背景

大规模语言模型(LLMs)的实用化部署需要解决高计算成本的问题,模型剪枝是主流且很有潜力的解决方案。现有的剪枝方法大都需要重新训练或漫长的迭代修剪,LLMs 巨大的微调成本阻碍了这些方法的应用。今年年初出现的 SparseGPT 不再需要传统的重新训练,但仍需要一个计算密集型的权重补偿过程。

SparseGPT 工作中的实验表明——幅值剪枝在较高剪枝率下在 LLMs 的性能退化严重,这与过往幅值剪枝在小模型的趋势不符。作者敏锐地观察到了这一差异,提出了一种简单有效的方法来解决幅值剪枝在 LLMs 下的性能退化,称为 Wanda(Pruning by Weights and activations)。

这一方法的提出受到了最近研究 [2] 的启发——在 LLMs 达到一定规模时(大约为 6B 参数),一小组隐藏特征的幅值将显著大于其他特征,这些异常特征对于 LLMs 的预测能力至关重要,当这些特征被置零时,语言模型的性能会出现严重退化。具体来说,本文引入了一种新的剪枝度量,每个权重的重要性由其幅值大小和相应输入激活的范数的乘积来决定。该方法利用这个新的度量,在线性层的每个输出内局部比较权重并删除较低的优先级权重来获得稀疏的 LLMs。

3a294f2857360468251aa3a26cdbd1d2.png

方法:Wanda

该方法由两个简单但必不可少的组件构成——剪枝度量和剪枝粒度。首先,作者提出了一种新的剪枝度量,将权重和输入激活结合到权重重要性的计算中。其次,作者在每个输出的基础上比较权重,而不是整个层,并发现这一因素对于有效地修剪 LLM 至关重要。图 1 是 Wanda 的概述。

ad7bdfe8c1911a350a63f10dba0143c9.png

▲ 图1. Wanda和幅值剪枝的方法对比

2.1 关键组件

剪枝度量:权重 形状为 ,输入激活 形状为 。对于每个权重,作者通过其大小和相应的输入特征范数的乘积来评估其重要性。具体地,当前权重 的得分可定义为:

a90b18acedd5c6f3e7ed9926066baed9.png

剪枝粒度:作者认为,除了剪枝度量之外,剪枝粒度,即用于比较重要性的权重集,在修剪 LLM 中发挥着重要作用。现有的剪枝方法通常采用分层或全局修剪策略,这意味着在网络中的每个层内或所有层之间比较权重。本文采用了一种全新的剪枝粒度——在每个输出的基础上(图 1 中的每行)比较和删除权重,其中在每个输出神经元内局部比较权重重要性得分。权重 的比较组被定义为连接到输出 的所有权重:

1750283108f70f807fe82b0d32859f11.png

这一剪枝粒度有助于以均匀的比率去除每个输出的权重,以防止不同输出特征之间的不平衡剪枝。作者也在图像分类模型上做了类似的实验,并没有类似的趋势。这表明以“每个输出”为粒度进行剪枝可能是由于语言模型任务的某些特性导致的。

2.2 算法流程

Wanda 的具体流程如算法 1 所示。先在参考样本上进行单次前向传递,用于估计特征范数,接下来可以根据式(1)直接计算每个权重的重要性,并按照式(2)的剪枝粒度进行修剪。Wanda 不需要权重更新和微调,在修剪完毕后可以直接使用。

10b77a5617ea1b9a1da05ccab9f13fff.png

2.3 扩展&对比

N:M 结构化稀疏:Wanda可以自然地扩展到结构化的 N:M 稀疏性,只需要在每 M 个连续权重中使用相同的度量来比较与输出连接的所有权重的权重。

对比分析:SparseGPT 是最优脑手术 OBS [3] 在 LLM 剪枝的复兴,而 Wanda 可以视为最优脑损伤 OBD [4] 在 LLM 剪枝的复兴。具体对比见表 1。

16853d6fd8241b576d19b5a061f46dc8.png

▲ 表1. Wanda与LLM上现有剪枝算法的对比

767951bf50e4849901c4327b1457e056.png

实验

1. 语言模型:如表 2 所示,Wanda 在任何剪枝模式下都大大优于幅值剪枝,且在完全不更新权重的情况下和 SparseGPT 持平。从图 2 中也可以看出 Wanda 解决了幅值剪枝的性能退化问题,随着稀疏率的增加,Wanda 和 SparseGPT 呈现相近的退化趋势。

450acf9124dd63023c19790473ce3853.png

▲ 表2. WikiText数据集上LLaMA模型的剪枝方法对比

53bea72983fda30c8fa5d3caede7acba.png

▲ 图2. Wanda和其他剪枝方法在LLaMA上的性能退化趋势

2. Zero-shot 任务:表 3 对比了不同剪枝方法在下游 zero-shot 任务的性能表现,Wanda 远超幅值剪枝,与 SparseGPT 各有优劣。

894a83514d7ea8d842a86f2e9c712808.png

▲ 表3. 7个zero-shot任务下剪枝算法的性能对比

3. 剪枝成本:表 4 对比了在不同模型规模下 Wanda 和 SparseGPT 的剪枝成本,与 SparseGPT 相比 Wanda 的时间开销可以忽略不计,在 65B 的模型上至需要 5.6 秒。

28a74adb50212c096276906c561deb33.png

▲ 表4. Wanda和SparseGPT的时间开销(单位:秒),不包括共享的前向传递过程

4. 消融实验:表 5 分析了不同剪枝度量和剪枝粒度的性能对比,证明了适当的剪枝粒度对于修剪 LLMs 的重要性。图 3 分析了不同参考样本下剪枝算法的性能变化,样本越多性能越好,Wanda 比 SparseGPT 对少样本更鲁棒。表 6 尝试将 SparseGPT 的权重更新策略与 Wanda 结合,实验发现权重更新不能帮助 Wanda 进一步提升性能。

5b9c6761f1fa4551d0f6fc0da21f51f9.png

▲ 表5. 剪枝度量和剪枝粒度的消融实验

d002a5d91e0e83fb244fa54eedcca8c2.png

▲ 图3. Wanda对少样本更鲁棒

fd5ff0ef9de0cdddb9398fee79266d7f.png

▲ 表6. 权重更新对Wanda没用

5. 扩展-图像分类:图 4 分析了 Wanda 在 ViT 图像分类任务的性能,在图像分类任务上,Wanda 仍优于幅值剪枝,但没有有效缓解性能退化的问题,我猜测这是因为实验所采用的 ViT 过小,没有出现类似 LLM 的“紧凑大幅值特征”的特性。

4dbcd418e1969d83037501e02ab2c301.png

outside_default.png

参考文献

outside_default.png

[1] Elias Frantar and Dan Alistarh. SparseGPT: Massive language models can be accurately pruned in one-shot. arXiv preprint arXiv:2301.00774, 2023.

[2] Tim Dettmers, Mike Lewis, Younes Belkada, and Luke Zettlemoyer. LLM.int8(): 8-bit matrix multiplication for transformers at scale. In Advances in Neural Information Processing Systems, 2022.

[3] Babak Hassibi, David G Stork, and Gregory J Wolff. Optimal brain surgeon and general network pruning. In IEEE International Conference on Neural Networks, 1993.

[4] Yann LeCun, John S Denker, and Sara A Solla. Optimal brain damage. In Advances in Neural Information Processing Systems, 1989.

更多阅读

5794f9ac29357bcccfd933f48e4828d0.png

42964285a3d243482d3b80f5b6229a8b.png

aaec8234a55f70e94bc23c6cce45a585.png

000a31e6a93c4b8370706e6164a4e518.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

e7bb898aa7bdbf0466348b061ab63218.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

f6f6c7346764f79cb8b32ed28f998f0d.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/733550.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Spring Boot的高校实验室信息管理系统设计与实现(Java+spring boot+MySQL+VUE)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的高校实验室信息管理系统设计与实现(Javaspring bootMySQLVUE) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 后端:Java springboot…

玩转ChatGPT:Code interpreter (vol. 1)

一、写在前面 喜大普奔,GPT-4传说中的Code interpreter插件已经可以用了!!! 二、什么是Code interpreter 代码解释器(Code Interpreter)是一个工具,它能够读取和执行编程代码。这里有几个主要…

程序请求报错java.lang.NoSuchMethodError

[23-7-3 9:09:19:069 CST] 00000017 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E:应用程序 east5_20230629_war 中 servlet XXX 的某一服务方法创建了未捕获到的异常。 创建的异常:org.springframework.web.util.NestedServ…

Android 短视频直播特效,音视频图像处理 FFmepg OpenGLES OpenCV开发详细内容

1 音视频开发基础 2 Android OpenGL ES开发基础 3 Android FFmpeg OpenGLES 音视频播放器核心开发 4 Android FFmpeg H.264 AAC 封装mp4 5 Android OpenCV 机器学习人脸标定SDK开发实战 6 Android OpenCV 开发实践 7 Android 短视频App FFmpeg OpenGL ES OpenCV人脸特效渲…

python pytorch 纯算法实现前馈神经网络训练(数据集随机生成)

python pytorch 纯算法实现前馈神经网络训练(数据集随机生成) 下面这个代码大家可以学习学习,这个代码难度最大的在于反向传播推导, 博主推了很久,整个过程都是纯算法去实现的,除了几个激活函数&#xff0…

【前端知识】React 基础巩固(十八)——组件化开发(二)

React 基础巩固(十八)——组件化开发(二) 生命周期 生命周期是一个抽象的概念,在生命周期的整个过程中,分成了很多个阶段 比如装载阶段(Mount),组件第一次在 DOM 树中被渲染的过程比如更新过程…

【C语言】你知道浮点数是怎么存储的吗?

前言 🎈大家好,我是何小侠🎈 🍃大家可以叫我小何或者小侠🍃 💐希望能通过写博客加深自己对于学习内容的理解💐 🌸也能帮助更多人理解和学习🌸 积学以储宝,酌…

Debian 11 x64 安装 MySQL 8.0.33

更新 sudo apt update sudo apt install gnupg安装 DEB Package wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.25-1_all.deb sudo dpkg -i mysql-apt-config_0.8.25-1_all.deb具体版本见官方网站:MySQL Community Downloads,这里仅以版本 …

详解什么是新零售和新零售的四种商业模式

前言 自推出新零售概念以来,新零售已成为当前的热门话题。今天我们将进一步了解什么是新零售。 一、什么是新零售? 新零售,英文是New Retailing,即企业以互联网为依托,通过运用大数据、人工智能等先进技术手段,对商…

VMware虚拟机里的Ubuntu通过主机的代理联网

问题描述:主机win10,通过代理联网。主机里装有VMware的虚拟机Ubuntu,想要通过主机的代理进行上网。 步骤: 1 将虚拟机的网络设置为NAT模式。 2 在win10命令行中输入ipconfig,查询ipv4的局域网地址。(注&…

使用docker安装Nacos,远程连接nacos报错,please check server x.x.x.x ,port 9848 is available

报错: please check server 127.0.0.1 ,port 9848 is available 原因: 当nacos客户端升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。这两个端口在nacos原先的端口上(默认8848),进行一定偏移量自动生成.。 当客户端升级成2.x版本时&…

[工业互联-20]:常见EtherCAT主站方案:TwinCAT的Windows 解决方案

目录 第1章 TwinCAT简介 第2章 软件架构 第3章 应用程序架构 第1章 TwinCAT简介 TwinCAT是由德国Beckhoff公司开发的一套功能强大的自动化软件平台。 它是一个集成的开发环境,用于实现实时控制、PLC编程、运动控制、HMI(人机界面)设计和…

service 2 暴露服务的 3种 方式

【k8s 系列】k8s 学习十九,service 2 之前我们简单的了解一下 k8s 中 service 的玩法,今天我们来分享一下 service 涉及到的相关细节,我们开始吧 为什么要有 服务 Service? 因为服务可以做到让外部的客户端不用关心服务器的数量…

【二叉树part09】| 669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

目录 🎈LeetCode669. 修剪二叉搜索树 🎈LeetCode108.将有序数组转换为二叉搜索树 🎈LeetCode538.把二叉搜索树转换为累加树 🎈LeetCode669. 修剪二叉搜索树 链接:669.修剪二叉搜索树 给你二叉搜索树的根节点 root…

使用Go 语言的三个原因

几个星期前,我一个朋友问我:“为什么要关心 Go 语言”? 因为他们知道我热衷于 Go 语言,但他们想知道为什么我认为其他人也应该关心。有三个原因:安全性、生产力和并发性。有些语言可以涵盖一个也有可能是两个方面&…

代码逐行解析!冠军选手解读锂电池生产温度预测赛事方案

Datawhale干货 作者:鱼佬、骆秀韬,Datawhale成员 本实践是数据挖掘类型的比赛,聚焦于工业场景。实践任务本质上为回归任务,其中会涉及到时序预测相关的知识。 本实践可帮助大家: 快速掌握数据挖掘任务基本流程&#x…

【开源-文章迁移利器】MarkDown本地图片转云端存储脚本-支持目录递归查找转换

从一些笔记软件导出markdown文档后,图片都是本地图片,文档数量过多,用typora一一打开上传图片过于繁琐,特开发一个一键迁移文章图片的脚本,方便markdown文档的迁移。 文章目录 大致需求开源地址设计思路脚本介绍快速使…

蓝桥杯专题-真题版含答案-【大衍数列】【圆周率】【分糖果】【等额本金】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

Java csv文件上传下载中的相关转换

目录 一. 需求二. List<Entity>转List<List<String>>2.1 实体类2.2 转换 三. 上传csv文件转List<Map>3.1 csv文件3.2 前台3.3 实体类3.4 转换3.5 效果 一. 需求 &#x1f914;项目中遇到了两个需求 1.查询数据库&#xff0c;得到List<Entity>这…

快速搭建一个美观且易用的 Django 管理后台 —— django-xadmin

Django-xadmin&#xff08;也称为Xadmin&#xff09;是一个第三方的 Django 应用程序&#xff0c;它提供了一系列工具和模板来快速开发基于 Django 的后台管理界面。使用 Django-xadmin 可以用很少的代码就创建出一个强大的、具备实时查看数据、增、删、改等基本操作的 Django …