大模型压缩-LoRAP

这里写目录标题

  • 1.多头注意力和FFN的权重分布
  • 2 多头矩阵的低秩分解
  • FFN无梯度通道剪枝

这篇文章 1期望找到一个“剪枝+低秩分解”的路子,使结构化剪枝达到非结构化剪枝的性能。

1.多头注意力和FFN的权重分布

在这里插入图片描述

Fig. 1.1 多头注意力权重矩阵

从Fig.1.1可以看出多头注意力机制的qkvo矩阵表现出了稀疏性。
在这里插入图片描述

Fig. 1.2 FFN权重矩阵

然而从Fig.1.2可以看出FFN的 W u p W_{up} Wup, W d o w n W_{down} Wdown, W g a t e W_{gate} Wgate就没有这种表现。所以这篇文章指出用低秩分解来压缩多头注意力矩阵,用结构化剪枝来压缩FFN矩阵。

2 多头矩阵的低秩分解

对于一个权重 W i j W_{ij} Wij,用对应的输入激活 X X X ℓ 2 \ell_2 2范数来评估其重要度,用式1来表示
x d i n = ( ∥ X 1 ∥ 2 , ∥ X 2 ∥ 2 , ⋯ , ∥ X d i n ∥ 2 ) (1) \mathbf{x}_{d_{in}}=(\|\mathbf{X}_{1}\|_{2},\|\mathbf{X}_{2}\|_{2},\cdots,\|\mathbf{X}_{d_{in}}\|_{2})\tag{1} xdin=(X12,X22,,Xdin2)(1)
式中, ∥ X 1 ∥ j \|\mathbf{X}_{1}\|_{j} X1j表示 W : , j W_{:,j} W:,j的重要度。用式2表示其损失,
min ⁡ L , R ∑ i , j ( W i j − ( L R ) i j ) 2 ∥ X j ∥ 2 (2) \min_{\mathbf{L},\mathbf{R}} \sum_{i,j}(W_{ij}-(\mathbf{LR})_{ij})^2\|\mathbf{X}_j\|_2\tag{2} L,Rmini,j(Wij(LR)ij)2Xj2(2)
把重要度分数定义为对角线矩阵 D = d i a g ( x d i n ) \mathbf{D} = \mathrm{diag}(\mathbf{x}_{d_{in}}) D=diag(xdin),由公式2可变为公式3
min ⁡ L , R ∥ W D − L R D ∥ 2 (3) \min_{\mathbf{L},\mathbf{R}}\|\mathbf{WD}-\mathbf{LRD}\|_2\tag{3} L,RminWDLRD2(3)
W D \mathbf{WD} WD进行SVD分解,得到 S V D ( W D ) = U Σ V SVD(\mathbf{WD})=U\Sigma V SVD(WD)=UΣV,令 L = U Σ , R = V D − 1 \mathbf{L} = \mathbf{U}\boldsymbol{\Sigma},\mathbf{R} = \mathbf{V}\mathbf{D}^{-1} L=UΣ,R=VD1,为了压缩矩阵,保留权重矩阵 L \mathbf{L} L, R \mathbf{R} R的前 l l l r r r个分量,得到 L r = U r Σ r , R r = V r D − 1 \mathbf{L}_r=\mathbf{U}_r\mathbf{\Sigma}_r,\mathbf{R}_r=\mathbf{V}_r\mathbf{D}^{-1} Lr=UrΣr,Rr=VrD1,在实验中,论文选择将75%的参数分配给 W v W_v Wv W o W_o Wo矩阵,而将剩下的25%分配给 W q W_q Wq W k W_k Wk矩阵,参数来自对不同矩阵不同压缩比下模型的性能如Fig.2.1。
在这里插入图片描述

Fig. 2.1 不同矩阵不同压缩比下模型的性能

FFN无梯度通道剪枝

ℓ 2 \ell_2 2范数 W i , : W_{i,:} Wi,:来评估矩阵第 i i i行的重要度,用公式4表示
Φ ( W i , : ) = ∥ I ( W i , 1 ) , I ( W i , 2 ) , ⋯ , I ( W i , d i n ) ∥ 2 (4) \Phi(\mathbf{W}_{i,:})=\|I(W_{i,1}),I(W_{i,2}),\cdots,I(W_{i,d_{in}})\|_{2}\tag{4} Φ(Wi,:)=I(Wi,1),I(Wi,2),,I(Wi,din)2(4)
接下来考虑神经元之间的依赖关系,例如,在修剪下矩阵 W d o w n W_{down} Wdown的第 i i i个输入信道时,应对门矩阵 W g a t e W_{gate} Wgate和上矩阵 W u p W_{up} Wup中相应的输出信道进行相应的修剪。用公式5表示之间的依赖
W i g r o u p = { W i , : u p , W i , : g a t e , W : , i d o w n } (5) \mathbf{W}_i^{group}=\{\mathbf{W}_{i,:}^{up},\mathbf{W}_{i,:}^{gate},\mathbf{W}_{:,i}^{down}\}\tag{5} Wigroup={Wi,:up,Wi,:gate,W:,idown}(5)
由此评价某一有依赖关系的结构的重要度
C i g r o u p = Φ ( W i , : u p ) + Φ ( W i , : g a t e ) + Φ ( W : , i d o w n ) (6) C_{i}^{group}=\Phi(\mathbf{W}_{i,:}^{up})+\Phi(\mathbf{W}_{i,:}^{gate})+\Phi(\mathbf{W}_{:,i}^{down})\tag{6} Cigroup=Φ(Wi,:up)+Φ(Wi,:gate)+Φ(W:,idown)(6)
作者发现最不重要的1%的参数在模型性能中起着至关重要的作用。所以剪枝要把最不重要的和最重要的保留,由公式6给出剪枝原则
W i g r o u p = { W i g r o u p , i f C i g r o u p i n t o p ( p r ∗ 100 − 1 ) % , W i g r o u p , i f C i g r o u p i n m i n 1 % , 0. o t h e r w i s e . (6) \mathbf{W}_{i}^{group}=\begin{cases}\mathbf{W}_{i}^{group},&\mathrm{if} C_{i}^{group} \mathrm{in} \mathrm{top}(p_{r}*100-1)\%,\\\mathbf{W}_{i}^{group},&\mathrm{if} C_{i}^{group} \mathrm{in} \mathrm{min} 1\% ,\\0.&\mathrm{otherwise}.\end{cases}\tag{6} Wigroup= Wigroup,Wigroup,0.ifCigroupintop(pr1001)%,ifCigroupinmin1%,otherwise.(6)


  1. LoRAP: Transformer Sub-Layers Deserve Differentiated Structured Compression for Large Language Models ↩︎

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

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

相关文章

清华大学世界排名:2025QS世界大学排名第20名

近日,国际高等教育研究机构QS Quacquarelli Symonds正式发布了2025QS世界大学排名,其中麻省理工学院连续第13年蝉联榜首,北京大学排名由去年的全球第17上升至全球第14名,清华大学位列2025QS世界大学排名第20名,以下是查…

2024.6.30周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、模型架构 四、文章解读 一、Introduction 二、创新点 三、RBM 四、贪心算法 五、实验 六、结论 二、代码复现 总结 摘要 本周我阅读了一篇题目为Generative Pre-Trained Physics-Informed Neural Netwo…

ThreadPoolExecutor 线程回收时机详解

个人博客 ThreadPoolExecutor 线程回收时机详解 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor?可以参考: 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog Worker-工作线程管理 线程池设计了内部类Worker,主要是用来…

点餐|外卖订餐小程序|基于微信小程序的外卖订餐系统设计与实现(源码+数据库+文档)

点餐|外卖订餐小程序目录 目录 基于微信小程序的外卖订餐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户微信端功能模块 2、管理员服务端功能模块 3、商家务端功能模块 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…

Kafka~高吞吐量设计

Kafka 之所以能够实现高性能和高速度,主要归因于以下几个关键因素: 分布式架构:Kafka 采用分布式架构,可以水平扩展,通过增加服务器节点来处理更多的流量和数据存储。顺序写入磁盘:Kafka 将消息顺序地写入…

重生奇迹MU 正确获取金币的方式

在游戏中,需要消耗大量的金币来购买红药等物品。因此,如何快速赚取金币也成为玩家关注的问题。您知道有哪些方法可以快速地获得金币吗? 一、哪个地图上是最适合打金币的很关键 在选择打钱的地方时,不能盲目行动,需要…

【C++开发必备工具】Dependency Walker与Dependencies

Dependency Walker 与 Dependencies 1. Dependency Walker1.1 功能特点1.2 使用方法1.3 注意事项 2. Dependencies2.1 功能特点2.2 使用方法2.3 注意事项 3. 总结 1. Dependency Walker Dependency Walker 是一个免费软件工具,用于查看 Windows 应用程序的模块&…

数据库优化方式

优化MySQL数据库性能可以通过多种方式实现,这些方式包括但不限于: 索引优化: 确保经常用于查询的列上创建索引,以加快查询速度。避免创建过多的索引,因为它们会增加写操作的成本。 查询优化: 编写高效的SQ…

[数据集][目标检测]婴儿状态睡觉哭泣检测数据集VOC+YOLO格式7109张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):7109 标注数量(xml文件个数):7109 标注数量(txt文件个数):7109 标注…

C++语法基础:引用

前言 "打牢基础,万事不愁" .C的基础语法的学习 引入 引用是C里的概念,和C语言里的"指针常量"是类似的.在C里用得还挺多的,书中明确说明了类对象做参数时,传入类对象的引用.在<<C Prime Plus>> 6th Edition第274页有使用推荐 .用引用来回顾指针…

Cmake--学习笔记

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

leetCode.96. 不同的二叉搜索树

leetCode.96. 不同的二叉搜索树 题目思路 代码 // 方法一&#xff1a;直接用卡特兰数就行 // 方法二&#xff1a;递归方法 class Solution { public:int numTrees(int n) {// 这里把 i当成整个结点&#xff0c;j当成左子树最左侧结点,并一次当根节点尝试// f[ i ] f[ j - 1…

PostgreSQL的系统视图pg_statio_all_indexes

PostgreSQL的系统视图pg_statio_all_indexes 在 PostgreSQL 数据库中&#xff0c;pg_statio_all_indexes 视图提供了有关所有索引的 I/O 活动的统计信息。这些统计信息对于了解索引的使用情况和性能调优非常有帮助。 pg_statio_all_indexes 视图的结构 以下是 pg_statio_all…

基于Java的会员制医疗预约服务管理信息系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术ssm框架&#xff0c;结合JSPM工作流引擎 工具&#xff1a;IDEA/Eclipse、Navicat、Maven …

10大内网安全管理系统!企业内网安全必备系统

内网安全管理系统对于维护企业网络安全至关重要&#xff0c;它们帮助监控、管理内部网络资源&#xff0c;防止数据泄露和安全威胁。以下是十款知名的内网安全管理系统。 1. 安企神终端安全管理系统 详细介绍&#xff1a; 安企神是针对企业内网安全需求设计的一款综合管理系统&…

记一次windows 资源管理器 explorer.exe无限重启(桌面2秒一直刷新)问题的排查

一. 现象 进入锁屏界面一切正常&#xff0c;输入密码进入桌面后&#xff0c;开始无限刷新&#xff0c;无法正常操作&#xff0c;任务栏也不显示。CtrlAltDel 打开任务管理器&#xff0c;可见windows资源管理器进程时而出现&#xff0c;时而消失。进入安全模式一切正常。window…

kubernetes中使用Helm搭建Redis集群

1. 环境要求 首先需要有kubernetes集群环境&#xff0c;搭建kubernetes集群可以使用kubeSphere、kubespray等工具安装集群。其次要安装helm&#xff0c;并且添加了可用的Chart仓库 2. 确认合适的Chart包 helm官网上搜索redis 找到Star数多的Chart包&#xff0c;一类是redis包…

乐鑫 Matter 技术体验日|快速落地 Matter 产品,引领智能家居生态新发展

随着 Matter 协议的推广和普及&#xff0c;智能家居行业正迎来新的发展机遇&#xff0c;众多厂商纷纷投身于 Matter 产品的研发与验证。然而&#xff0c;开发者普遍面临技术门槛高、认证流程繁琐、生产管理复杂等诸多挑战。 乐鑫信息科技 (688018.SH) 凭借深厚的研发实力与行…

Gin框架基础

1、一个简单的Gin示例 下载并安装Gin: go get -u github.com/gin-gonic/gin1.1 一个简单的例子 package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {// 创建一个默认的路由引擎r : gin.Default()// 当客户端以GET方式访问 /hello…

常见Web认证方式对比

认证是一个在用户或者设备在访问一个受限的系统时&#xff0c;鉴定用户凭据的过程&#xff0c;即确认“你是谁”的问题。最常见的认证用户的方式是通过用户名和密码的形式进行校验&#xff0c;目前存在多种校验方式&#xff0c;本文将对其进行一个简单的对比&#xff0c;使得大…