今日arXiv最热NLP大模型论文:微软提出SliceGPT,删除25%模型参数,性能几乎无损

引言:探索大型语言模型的高效压缩方法

随着大型语言模型(LLMs)在自然语言处理领域的广泛应用,它们对计算和内存资源的巨大需求成为了一个不容忽视的问题。为了缓解这些资源限制,研究者们提出了多种模型压缩方法,其中剪枝(pruning)技术因其在后训练阶段应用的潜力而备受关注。然而,现有的剪枝技术面临着需要额外数据结构支持和在当前硬件上受限的加速效果等挑战。在这篇博客中,我们将探讨一种新的剪枝方案——SliceGPT,它通过删除权重矩阵的行和列来压缩大型模型,同时保持了模型的性能。

论文标题:

SLICEGPT: COMPRESS LARGE LANGUAGE MODELS BY DELETING ROWS AND COLUMNS

论文机构:

ETH Zurich, Microsoft Research

论文链接:

https://arxiv.org/pdf/2401.15024.pdf

项目地址:

https://github.com/microsoft/TransformerCompression

声明:本期论文解读非人类撰写,全文由赛博马良「AI论文解读达人」智能体自主完成,经人工审核、配图后发布。

公众号「夕小瑶科技说」后台回复“智能体内测”获取智能体内测邀请链接!

SliceGPT的核心思想是利用变换器网络中的计算不变性,通过对每个权重矩阵应用正交矩阵变换,使得模型的计算结果保持不变。这种方法不仅减少了模型的参数数量,还降低了嵌入维度,从而减少了网络之间传递的信号量。通过大量实验,研究者们证明了SliceGPT能够在保持高达99%的零样本任务性能的同时,剪掉高达25%的模型参数。更重要的是,这种压缩方法无需额外的代码优化,就能在现有的硬件上实现更快的运行速度,这为未来减少预训练模型的内存和计算需求提供了新的视角。

SliceGPT方法概述:如何通过删除权重矩阵的行和列来压缩模型

SliceGPT是一种新颖的模型压缩方法,它通过删除权重矩阵的行和列来减少大型语言模型的参数数量。这种方法的核心思想是通过对模型的权重矩阵进行“切片”操作,即去除整行或整列,从而实现对模型的压缩。与其他剪枝方法不同,SliceGPT不仅仅是将权重矩阵中的某些元素设为零,而是完全移除掉权重矩阵的一部分。

在SliceGPT中,首先对网络进行单次变换,使得预测保持不变,然后再进行切片操作。这种变换保证了即使在切片后,模型的预测性能也只会受到很小的影响。通过这种方法,可以在不牺牲太多性能的前提下,显著减少模型的参数数量。例如,在LLAMA-2 70B、OPT 66B和Phi-2模型上的实验表明,SliceGPT能够在保持99%、99%和90%的零样本任务性能的同时,移除多达25%的模型参数。

SliceGPT的另一个优势是,压缩后的模型可以在更少的GPU上运行,并且运行速度更快,无需额外的代码优化。例如,在24GB的消费级GPU上,LLAMA-2 70B模型的推理计算量减少到了稠密模型的64%;在40GB的A100 GPU上,减少到了66%。

1. 切片前的准备:

在进行切片之前,需要对网络进行一次变换,以确保变换后的网络可以保持预测的不变性。这一步骤至关重要,因为它确保了在切片操作之后,模型的性能不会受到太大影响。

2. 切片操作:

切片操作涉及到移除权重矩阵的行和列。具体来说,就是在变换后的权重矩阵中,移除那些对模型性能贡献较小的行和列。这样,权重矩阵变得更小,网络的嵌入维度也随之减少。

3. 实验验证:

通过在不同的模型和任务上进行实验,SliceGPT证明了其在压缩模型方面的有效性。实验结果显示,即使在移除了大量参数的情况下,模型仍能保持较高的性能。

计算不变性的发现:理解RMSNorm操作如何使得变换保持不变

SliceGPT方法的成功部分归功于对变换网络中的计算不变性的发现。具体来说,研究者们发现,可以在变换器网络的每个权重矩阵上应用正交矩阵变换,而不改变模型的输出。这种计算不变性是通过RMSNorm操作实现的,该操作在网络的不同块之间执行,并保持变换的不变性。

正交矩阵和RMSNorm:

正交矩阵Q满足Q^TQ = QQ^T = I的关系,其中I是单位矩阵。正交矩阵的一个重要性质是,它不会改变向量的范数。RMSNorm操作通过将输入矩阵X的每一行除以其范数来实现规范化。由于正交变换不改变向量的范数,因此在RMSNorm之前和之后应用正交矩阵Q和Q^T不会改变网络的输出。

计算不变性的证明:

在RMSNorm连接的变换器网络中,如果在RMSNorm之前插入带有正交矩阵Q的线性层,在RMSNorm之后插入Q^T,则网络保持不变。这是因为信号矩阵的每一行都被Q乘以,规范化后再乘以Q^T,从而保持了网络的计算不变性。这一发现是SliceGPT能够成功压缩模型的关键。

通过这种计算不变性,SliceGPT能够在保持模型性能的同时,显著减少模型的参数数量和计算需求。这一发现不仅对于SliceGPT方法至关重要,也为未来减少预训练模型的内存和计算需求提供了新的思路。

实现模型压缩

在深度学习和自然语言处理领域,大型语言模型(LLMs)因其出色的性能而备受青睐。然而,这些模型通常参数量巨大,需要消耗大量的计算和内存资源。为了解决这一问题,研究者们提出了多种模型压缩技术,其中SliceGPT是一种新颖的后训练稀疏化方案,它通过替换权重矩阵为更小的矩阵来降低网络的嵌入维度,从而实现模型的压缩。

1. SliceGPT的PCA方法

SliceGPT的核心思想是利用计算不变性(computational invariance),即在不改变模型输出的前提下,对权重矩阵进行正交变换。具体来说,SliceGPT首先通过主成分分析(PCA)计算出每个权重矩阵的正交矩阵Q。这一步骤的目的是将信号矩阵投影到其主成分上。在这个过程中,研究者们发现不同网络块的信号并不对齐,因此需要在每个块应用不同的正交矩阵Qℓ。

2. 模型压缩过程

在计算出正交矩阵Qℓ后,SliceGPT通过删除权重矩阵的行或列来减小模型大小。这一过程称为“切片”(slicing)。由于PCA的目标是计算出一个低维表示Z,并进行近似重构,SliceGPT将这一思想应用到信号矩阵X之间,通过删除矩阵的次要主成分来实现压缩。具体来说,SliceGPT删除了Win的行和Wout及Wembd的列,并且还删除了插入到残差连接中的矩阵Q⊤ℓ−1Qℓ的行和列。

通过这种方法,SliceGPT成功地压缩了包括LLAMA-2 70B、OPT 66B和Phi-2在内的多个模型,最多减少了30%的参数量,同时保持了超过90%的密集模型性能。

实验设置

1. 使用的模型

在实验中,研究者们使用了OPT、LLAMA-2和Phi-2模型家族进行评估。这些模型是基于Transformer架构的大型语言模型,具有数十亿的参数量。实验排除了OPT 175B模型,因为它的性能不如较小的LLAMA-2模型。

2. 任务

实验涵盖了语言生成和流行的零样本任务。零样本任务包括PIQA、WinoGrande、HellaSwag、ARC-e和ARC-c等知名任务。

3. GPU类型

为了全面展示SliceGPT带来的速度提升,实验使用了多种GPU类型,包括Quadro RTX6000(24GB内存)作为消费级GPU的代表,以及40GB A100和80GB H100作为数据中心级别的基准。通过这些不同的GPU,研究者们能够评估SliceGPT在不同硬件条件下的性能和效率。

实验结果表明,SliceGPT不仅能够在单个GPU上快速完成模型压缩,而且在不同的GPU上都展现出了显著的速度和性能提升。

实验结果分析

1. 语言生成任务的性能表现

在语言生成任务中,SliceGPT的性能通过WikiText-2数据集进行评估。实验结果显示,应用SliceGPT到OPT模型与LLAMA-2模型时,随着模型大小的增加,SliceGPT的性能也随之提升。与SparseGPT采用的2:4稀疏比例相比,SliceGPT在25%的切片水平上表现更优。例如,在LLAMA-2模型上,SliceGPT的表现超过了SparseGPT 2:4。对于OPT模型,30%切片的模型在除了2.7B之外的所有模型大小上都优于2:4稀疏比例。

2. 零样本任务的性能表现

在零样本任务中,SliceGPT在五个知名任务上进行了评估:PIQA、WinoGrande、HellaSwag、ARC-e和ARC-c。实验结果表明,Phi-2模型的切片版本与LLAMA-2 7B模型的切片版本性能相当。最大的OPT和LLAMA-2模型可以非常有效地压缩,即使移除了30%的66B OPT模型的参数,性能损失也只有几个百分点。

3. 通过吞吐量和推理时间评估模型效率

在吞吐量方面,与稠密模型相比,SliceGPT在80GB H100 GPU上对25%和50%切片的模型进行了评估。实验发现,25%切片的模型在吞吐量上比稠密模型提高了高达1.55倍。在50%切片的情况下,最大的模型只需要一个GPU而不是两个,吞吐量显著提高:分别为3.13倍和1.87倍。这意味着对于固定数量的GPU,这些模型达到了稠密模型的6.26倍和3.75倍吞吐量。

在推理时间方面,SliceGPT压缩模型的端到端运行时间也得到了研究。在Quadro RTX6000和A100 GPU上,使用25%切片的模型在生成单个令牌的时间上分别比稠密模型快了16-17%和11-13%。在两种情况下,都减少了使用的GPU数量,相对于部署稠密模型,提供了能源和成本节约。例如,对于LLAMA-2 70B,使用RTX6000 GPU的计算需求从1764 GPUms减少到1075 GPUms。

恢复微调(RFT)的效果:探讨RFT对压缩模型性能的影响

恢复微调(RFT)是在切片后对模型进行少量微调,以恢复因切片而损失的性能。实验中,对切片后的LLAMA-2和Phi-2模型应用了RFT,使用LoRA方法进行微调。微调后,Phi-2模型在仅使用WikiText-2数据集时无法恢复从切片中损失的准确率,但使用Alpaca数据集后,能够恢复几个百分点的准确率。例如,25%切片并进行RFT后的Phi-2模型的平均准确率为65.2%,而稠密模型为72.2%。切片模型大约有2.2B参数,并保留了2.8B模型90.3%的准确率。这表明即使是小型语言模型也可以从训练后的剪枝中受益。

结论与未来工作

在本文中,我们介绍了SliceGPT,这是一种新的大型语言模型(LLM)的后训练稀疏化方案。SliceGPT通过替换每个权重矩阵为一个更小的(稠密)矩阵,从而减少了网络的嵌入维度。通过广泛的实验,我们证明了SliceGPT能够在保持高性能的同时,显著减少模型参数的数量。例如,在LLAMA-2 70B、OPT 66B 和 Phi-2 模型上,我们能够去除高达25%的模型参数,同时保持了99%、99% 和 90%的零样本任务性能。此外,我们的切片模型能够在更少的GPU上运行,并且运行速度更快,无需任何额外的代码优化。

1. 计算不变性的发现: 我们提出了计算不变性的概念,并展示了如何在不改变模型输出的情况下,对变换器网络中的每个权重矩阵应用正交矩阵变换。

2. 切片转换的应用: 我们利用这一发现,对变换器架构的每个块进行编辑,将信号矩阵投影到其主成分上,并移除变换后权重矩阵的行或列以减小模型大小。

3. 实验验证: 我们在OPT、LLAMA-2和Phi-2模型上进行了多项实验,展示了SliceGPT在压缩这些模型方面的能力,压缩比可达30%,并在下游任务上保持了超过90%的密集模型性能。

未来的研究方向可能包括:

  • 参数更少的密集LMs性能: 我们发现,参数更少但密集的LMs在性能上优于参数少于13B的剪枝LMs。我们预计,随着研究的深入,这种情况不会持续太久。我们的剪枝模型虽然参数更多,但允许在GPU内存中加载更大的批量大小,并且没有稀疏结构的开销。结合这两种方法可能会获得最佳效果。

  • 计算Q的其他方法: 探索其他计算Q的方法可能会改善结果。

  • 降低推理时间和GPU数量: 为了进一步减少推理时间和所需的GPU数量,可以使用量化和结构性剪枝等补充方法。

我们希望我们对计算不变性的观察能够帮助未来的研究在提高深度学习模型的效率方面取得进展,并可能激发新的理论洞见。

声明:本期论文解读非人类撰写,全文由赛博马良「AI论文解读达人」智能体自主完成,经人工审核、配图后发布。

公众号「夕小瑶科技说」后台回复“智能体内测”获取智能体内测邀请链接!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《短链接--阿丹》--技术选型与架构分析

整个短链接专栏会持续更新。有兴趣的可以关注一下我的这个专栏。 《短链接--搭建解析》--立项+需求分析文档-CSDN博客 阿丹: 其实整套项目中的重点,根据上面的简单需求分析来看,整体的项目难题有两点。 1、快速的批量生成短链,并找到对应的存储。 并且要保持唯一性质。…

java基本知识详解

八大基本数据类型 java的数据类型可以说很简洁,只有整型,浮点型,字符型,和布尔型四大种,八小种基本类型。 整型 byte:-2^7 ~ 2^7-1,即-128 ~ 127。1字节。 short:-2^15 ~ 2^15-…

SpringIOC之support模块PropertySourcesPlaceholderConfigurer

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

app对接优量汇收益如何?

优量汇作为国内头部的广告联盟,开发者在对接时要注意哪些方面? AdSet官网 | 聚合SDK广告变现平台-上海神蓍信息科技有限公司 一、优量汇优势: (1)快速变现,节省对接时间 1、快速变现,节省接…

router路由跳转的两种模板

<router-link><router-link/> <router-view><router-view/> link &#xff1a;链接&#xff0c;联系 view&#xff1a;指看见展现在人们面前的、可以稳定地进行详细审视的事物 将语境拉回到router里&#xff0c;抽象概括一下 router-link就是一个…

Git命令窗口:创建一个.bashrc文件,别名实现git log (代替冗余的指令)查询提交修改日志功能

在我们的用户下创建一个.bashrc文件&#xff0c;然后添加如下代码。即可实现我们命令窗口由于每次想要看到好的效果而输入几条指令的问题。 这里我们就只需要使用 git-log 代替我们的git log。这样在命令窗口看到的效果就清晰明了。

MySQL进阶45讲【12】为什么你的MySQL偶尔会卡一下

1 前言 平时的工作中&#xff0c;不知道大家有没有遇到过这样的场景&#xff0c;一条SQL语句&#xff0c;正常执行的时候特别快&#xff0c;但是有时也不知道怎么回事&#xff0c;它就会变得特别慢&#xff0c;并且这样的场景很难复现&#xff0c;它不只随机&#xff0c;而且持…

Spring Web Header 解析常见错误

在上一章&#xff0c;我们梳理了 URL 相关错误。实际上&#xff0c;对于一个 HTTP 请求而言&#xff0c;URL 固然重要&#xff0c;但是为了便于用户使用&#xff0c;URL 的长度有限&#xff0c;所能携带的信息也因此受到了制约。 如果想提供更多的信息&#xff0c;Header 往往…

树莓派-Ubuntu22.04

树莓派 1 安装Ubuntu系统2 ssh登录3 配置3.1 安装软件3.2 换源3.3 安装桌面3.4 开机脚本 1 安装Ubuntu系统 通过制作sdk&#xff0c;使系统在sdk中运行&#xff1a; 下载制作软件&#xff1a;https://www.raspberrypi.com/software/ 下载Ubuntu镜像&#xff1a;https://cn.ub…

PMP证书的价值对哪些人更有用

在软考和PMP的对比中&#xff0c;许多网友认为软考证书比PMP证书更有含金量&#xff0c;大部分人是从持有证书后获得的实质便利来看的。虽然PMP证书在落户、退税等方面不及软考证书&#xff0c;但也有自身独有的价值。 一&#xff0c;PMP证书作用一览 PMP证书不限制行业、覆盖…

简单的TcpServer(英译中)

目录 一、TCP socket API 详解1.1 socket()1.2 bind()1.3 listen()1.4 accept()1.5 connect 二、TcpServer&#xff08;英译中&#xff09;2.1 TcpServer.hpp2.2 TcpClient.cc2.3 Task.hpp2.4 Thread.hpp2.5 ThreadPool.hpp2.6 makefile2.7 Main.cc2.8 log.hpp2.9 Init.hpp2.10…

Vue - 快速入门(一)

阅读文章可以收获&#xff1a; 1. 明白什么是vue 2. 如何创建一个vue实例 3. vue中的插值表达式如何使用 4. 如何安装vue的开发者工具 Vue 概念 什么是vue&#xff1f; Vue 是一个用于 构建用户界面 的 渐进式 框架 框架优点&#xff1a;大大提升开发效率 (70%↑) 缺点…

Spring Boot3,启动时间缩短 10 倍!

前面松哥写了一篇文章和大家聊了 Spring6 中引入的新玩意 AOT&#xff08;见Spring Boot3 新玩法&#xff0c;AOT 优化&#xff01;&#xff09;。 文章发出来之后&#xff0c;有小伙伴问松哥有没有做性能比较&#xff0c;老实说&#xff0c;这个给落下了&#xff0c;所以今天…

2024最新版MySQL安装使用指南

2024最新版MySQL安装使用指南 Installation and Usage Guide to the Latest Oracle MySQL in 2024 By JacksonML 1. MySQL简介 MySQL是世界上最受欢迎的开源数据库之一。MySQL属于Oracle&#xff08;甲骨文&#xff09;公司的产品&#xff0c;其具有强大的功能&#xff0c;但…

Vue-53、Vue技术vuex使用

vuex 是什么 1、概念 专门在Vue 中实现集中式状态&#xff08;数据&#xff09;管理的一个Vue 插件&#xff0c;对vue 应用中多个组件的共享状态进行集中式的 管理&#xff08;读/写&#xff09;&#xff0c;也是一种组件间通信的方式&#xff0c;且适用于任意组件间通信。2、…

《动手学深度学习(PyTorch版)》笔记7.5

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

rclone基础命令解析及实战

rclone命令解析及实战 1 rclone介绍&#xff1a;远程同步工具 rclone是一个开源的远程数据同步工具&#xff0c;由Golang编写&#xff0c;旨在在不同平台的文件系统和多种类型的对象存储产品之间提供数据同步功能。 它支持超过 40 种不同的云存储服务&#xff0c;包括 Amazon S…

常用Hallmark及KEGG、GO基因查询

文献&#xff1a;The Molecular Signatures Database (MSigDB) hallmark gene set collection - PMC (nih.gov) GSEA | MSigDB | Browse Human Gene Sets (gsea-msigdb.org)通过msigdb数据库可以查看各个Hallmark、KEGG、GO具体包含的基因细节。 Hallmark nameProcess categor…

C# Socket通信从入门到精通(21)——Tcp客户端判断与服务器断开连接的三种方法以及C#代码实现

前言 我们开发的tcp客户端程序在连接服务器以后,经常会遇到服务器已经关闭但是作为客户端的我们不知道,这时候应该应该有一个机制我们可以实时监测客户端和服务器已经断开连接,如果已经断开了连接,我们应该及时报警提示用户客户端和服务器已经断开连接,本文介绍三种可以监…

DAY12之滑动窗口最大值

今天内容有点超乎我的能力 直接放卡哥的讲解了 239. 滑动窗口最大值 - 力扣&#xff08;LeetCode&#xff09; 先看超时的暴力解法 class Solution { public:vector<int> maxSlidingWindow(vector<int>& nums, int k) { vector<int>result; for(int …
最新文章