20240613日志:大模型压缩方法COPAL

news2025/1/18 6:46:08

Location: Beijing

1 大模型剪枝

在这里插入图片描述

Fig. 1.1大模型压缩-剪枝

剪枝的分类:结构化修剪对于简化大型语言模型和提高其效率尤其相关。非结构化修剪关注的是选择性地去除单个权重,旨在消除网络中不那么关键的连接。
修剪的基于阶段的分类:修剪可以在训练前、训练期间或训练后。

2 大模型持续学习

2.1 持续学习与基于持续学习的剪枝

持续学习侧重于在动态环境中适应大型语言模型,从而在不丢失先验知识的情况下实现持续学习。
在持续学习领域,剪枝的作用有助于有效地维护和进化神经网络结构,COPAL提出一种优化LLM的新方法,该方法绕过了再训练过程。

2.2 在LLM中持续修剪的缺点

持续修剪涉及到对不断进化的模型权重进行修剪,而不失去预训练的LLM的原始能力。

2.2.1 持续剪枝

持续剪枝在重点和方法上不同于基于持续学习的剪枝。基于持续学习的剪枝只是在不断进化的环境中使用剪枝来管理网络复杂性。相比之下,持续修剪是指在整个生命周期中发生的无训练修剪过程。面对所有遇到的数据集,持续剪枝会动态地调整相关的权重。

2.2.2 持续剪枝中的权重停滞(WS)

如果对已经归零的修剪权值保持不变,这导致在将模型从一个数据集转换到另一个数据集时没有响应。称这个概念为“权重停滞”(WS)。在下面是从校准引导的修剪策略中观察到的权重停滞的数学见解。
考虑到权值的重要性,以 W i ∗ = ∣ W i ⋅ R i ∣ \mathbf{W}_i^*=|\mathbf{W}_i\cdot\mathcal{R}_i| Wi=WiRi作为剪枝过程的基础,其中 R i \mathcal{R}_i Ri是用一些标准对权值 W i \mathbf{W}_i Wi进行缩放或排序。对于给定的数据集 i i i、掩膜0器(原文叫mask) M i \mathcal{M}_{i} Mi I \mathcal{I} I作为指标函数,得到的修剪权值矩阵 W i p \mathbf{W}_{i}^{p} Wip如下:
M i = I ( W i ∗ < T s ) = { 0 if  w i ∗ < T s , w i ∗ ∈ W i ∗ 1 otherwise. , W i p = W i ⋅ M i . (1) \begin{aligned}&\mathcal{M}_{i}=\mathcal{I}(\mathbf{W}_{i}^{*}<\mathcal{T}_{s})=\begin{cases}0&\text{if }\mathbf{w}_{i}^{*}<\mathcal{T}_{s},\mathbf{w}_{i}^{*}\in\mathbf{W}_{i}^{*}\\1&\text{otherwise.}\end{cases}, \\&\mathbf{W}_{i}^{p}=\mathbf{W}_{i}\cdot\mathcal{M}_{i}.\end{aligned}\tag{1} Mi=I(Wi<Ts)={01if wi<Ts,wiWiotherwise.,Wip=WiMi.(1)
式中,阈值 T s \mathcal{T}_{s} Ts根据目标的稀疏比 s s s浮动,可以看出该公式的作用就是如果某个权值没有达到给定条件就置0,达到了就不变
然而,对于下一个数据集 i + 1 i+1 i+1,需要剪枝的权重 W i + 1 = W i p \mathbf{W}_{i+1}=\mathbf{W}_i^p Wi+1=Wip,这个初始矩阵 W i + 1 \mathbf{W}_{i+1} Wi+1已经有一组修剪(零)权重。最终这一次剪枝之后的权重矩阵如下:
M i + 1 = I ( W i + 1 ∗ < T s ) = I ( ∣ W i ⋅ R i + 1 ∣ ⋅ ∣ M i ∣ < T s ) = M i , W i + 2 = W i + 1 = W i ⋅ M i . (2) \begin{aligned} &\mathcal{M}_{i+1} =\mathcal{I}\left(\mathbf{W}_{i+1}^*<\mathcal{T}_s\right) \\ &=\mathcal{I}(|\mathbf{W}_{i}\cdot\mathcal{R}_{i+1}|\cdot|\mathcal{M}_{i}|<\mathcal{T}_{s})=\mathcal{M}_{i}, \\&\mathbf{W}_{i+2} =\mathbf{W}_{i+1}=\mathbf{W}_i\cdot\mathcal{M}_i. \end{aligned}\tag{2} Mi+1=I(Wi+1<Ts)=I(WiRi+1Mi<Ts)=Mi,Wi+2=Wi+1=WiMi.(2)
总结一下如下图
在这里插入图片描述

Fig. 1.2 WS

剪了个寂寞,这显然不合理

2.2.3 持续剪枝中的遗忘问题(Forgetting)

当使用新的校准数据集更新修剪后的模型权值时,可以观察到这种健忘现象,这将降低以前遇到的数据集或任务的性能,如图1.3
在这里插入图片描述

Fig. 1.3 遗忘

3 COPAL:基于敏感度分析的连续剪枝

这篇文章的主要创新点是寻找关键权重的方法。
为了克服遗忘和权重停滞,提出了一个基于敏感度分析的连续神经网络剪枝框架。总结这种方法如图3.1
在这里插入图片描述

Fig. 3.1 COPAL框架

3.1 敏感度

对于神经网络的给定层,可以得出 y \mathbf{y} y d X j i d\mathbf{X}_j^i dXji d W d\mathbf{W} dW的敏感度,服从下式
d y j i = ∂ f ∂ X j i d X j i + ∂ f ∂ W d W (3) d\mathbf{y}_j^i=\frac{\partial f}{\partial\mathbf{X}_j^i}d\mathbf{X}_j^i+\frac{\partial f}{\partial\mathbf{W}}d\mathbf{W}\tag{3} dyji=XjifdXji+WfdW(3)
在实际应用中用 Δ X j i \Delta\mathbf{X}_{j}^{i} ΔXji Δ W \Delta\mathbf{W} ΔW来代替 d X j i d\mathbf{X}_j^i dXji d W d\mathbf{W} dW可以对 y y y转化为灵敏度的表示如下式
S W i j = ∂ f ∂ W × Δ W , S X i j = ∂ f ∂ X i i × Δ X j i . (4) \begin{gathered} S_{\mathrm{W}}^{ij} =\frac{\partial f}{\partial\mathbf{W}}\times\Delta\mathbf{W}, \\ S_{\mathbf{X}}^{ij} =\frac{\partial f}{\partial\mathbf{X}_i^i}\times\Delta\mathbf{X}_j^i. \end{gathered}\tag{4} SWij=Wf×ΔW,SXij=Xiif×ΔXji.(4)
S W i j S_{\mathbf{W}}^{ij} SWij S X i j S_{\mathbf{X}}^{ij} SXij分别是对 y j i \mathbf{y}_j^i yji W \mathbf{W} W X \mathbf{X} X的灵敏度量度,出于实际考虑,将公式4转化为下式
S W i j = f ( W + Δ W , x j i ) − y j i , S x i j = f ( W , x j i + Δ x j i ) − y j i . (5) S_{\mathbf{W}}^{ij}=f(\mathbf{W}+\Delta\mathbf{W},\mathbf{x}_{j}^{i})-\mathbf{y}_{j}^{i}, \\S_{\mathbf{x}}^{ij}=f(\mathbf{W},\mathbf{x}_{j}^{i}+\Delta\mathbf{x}_{j}^{i})-\mathbf{y}_{j}^{i}.\tag{5} SWij=f(W+ΔW,xji)yji,Sxij=f(W,xji+Δxji)yji.(5)
这些量分别反映了 W \mathbf{W} W X \mathbf{X} X y y y的扰动,总结以上可得下式:
d y j i = S W i j + S x i j (6) d\mathbf{y}_j^i=S_\mathbf{W}^{ij}+S_\mathbf{x}^{ij}\tag{6} dyji=SWij+Sxij(6)

3.2 关键权重的识别

将数据集 i i i中第 j j j个输入向量上的损失函数定义为 d y j i d\mathbf{y}_j^i dyji的欧几里得范数的平方如下式
L j i = ∥ d y j i ∥ 2 2 . (7) \mathcal{L}_j^i=\left\|d\mathbf{y}_j^i\right\|_2^2.\tag{7} Lji= dyji 22.(7)
可以认为 L j i \mathcal{L}_j^i Lji越大,误差越大。将其与公式3联立得
L j i = ∥ ∂ f ∂ x j i d x j i + ∂ f ∂ W d W ∥ 2 2 . (8) \mathcal{L}_j^i=\left\|\frac{\partial f}{\partial\mathbf{x}_j^i}d\mathbf{x}_j^i+\frac{\partial f}{\partial\mathbf{W}}d\mathbf{W}\right\|_2^2.\tag{8} Lji= xjifdxji+WfdW 22.(8)
为了确定使 d y d\mathcal{y} dy最小的 W \mathbf{W} W,使上式 L j i \mathcal{L}_j^i Lji计算对 d W d\mathbf{W} dW的梯度,得
∇ d W L j i = 2 d y j i ∂ f ∂ W . (9) \nabla_{d\mathbf{W}}\mathcal{L}_{j}^{i}=2d\mathbf{y}_{j}^{i}\frac{\partial f}{\partial\mathbf{W}}.\tag{9} dWLji=2dyjiWf.(9)
(证明略)通过 ∇ d W L j i \nabla_{d\mathbf{W}}\mathcal{L}_{j}^{i} dWLji,可以得出输出灵敏度 d y j i d\mathcal{y}_{j}^{i} dyji的损失函数随权重灵敏度 d W d\mathbf{W} dW变化的关系。
这里引入 ∇ d W ′ L k \nabla_{d\mathbf{W}}^{\prime}\mathcal{L}^{k} dWLk来得到 k k k个数据集的梯度的绝对值的和。这个量的绝对值大小对于理解损失函数对每个单独样本的敏感度很重要。通过关注这个量的大小,评估模型对 W W W x x x扰动的鲁棒性。 L k \mathcal{L}^{k} Lk是数据集 k k k的损失函数。
∇ d W ′ L k = ∑ i = 0 k ∑ j ∣ ∇ d W L j i ∣ = ∇ d W ′ L ~ k + ∇ d W ′ L k − 1 . (10) \begin{aligned} \nabla_{d\mathbf{W}}^{\prime}\mathcal{L}^{k}& =\sum_{i=0}^k\sum_j|\nabla_{d\mathbf{W}}\mathcal{L}_j^i| \\ &=\nabla_{d\mathbf{W}}^{\prime}\tilde{\mathcal L}^{k}+\nabla_{d\mathbf{W}}^{\prime}\mathcal{L}^{k-1}. \end{aligned}\tag{10} dWLk=i=0kjdWLji=dWL~k+dWLk1.(10)
最后使用 L j i \mathcal{L}_j^{i} Lji沿 W \mathbf{W} W的方向导数 D \mathbf{D} D的大小来评估权重的重要性,方向导数 D \mathbf{D} D的大小用 W k ∗ \mathbf{W}_{k}^{*} Wk表示,公式表示为
W k ∗ = ∑ i = 0 : k ∑ j ∣ D W L j i ∣ = ∣ W ∣ ⋅ ∇ d W ′ L k = ∑ j ∣ W ⋅ ∇ d W L j k ∣ + W k − 1 ∗ (11) \begin{aligned}\mathbf{W}_{k}^{*}&=\sum_{i=0:k}\sum_{j}\left|D_{\mathbf{W}}\mathcal{L}_{j}^{i}\right|=|\mathbf{W}|\cdot\nabla_{d\mathbf{W}}^{\prime}\mathcal{L}^{k}\\&=\sum_{j}\left|\mathbf{W}\cdot\nabla_{d\mathbf{W}}\mathcal{L}_{j}^{k}\right|+\mathbf{W}_{k-1}^{*}\end{aligned}\tag{11} Wk=i=0:kj DWLji =WdWLk=j WdWLjk +Wk1(11)
较高的 W k ∗ \mathbf{W}_{k}^{*} Wk值表明损失函数对沿 W \mathbf{W} W方向的权重的变化高度敏感,可以看出这些权重对模型的性能很重要。最终对 k k k个数据集的梯度的绝对值的和较小的权重进行剔除,就得到了剪枝后的模型。
这篇文章解决遗忘问题的方式是对所有数据集都通用
COPAL1
reference


  1. COPAL: Continual Pruning in Large Language Generative Models ↩︎

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

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

相关文章

zustand 状态管理库的使用 结合TS

zustand 是一个用于React应用的简单、快速且零依赖的状态管理库。它使用简单的钩子&#xff08;hooks&#xff09;API来创建全局状态&#xff0c;使得在组件之间共享状态变得容易。 React学习Day10 基本用法 安装&#xff1a;首先&#xff0c;你需要安装zustand库。 npm insta…

快速LLaMA:面向大型语言模型的查询感知推理加速 论文摘要翻译与评论

论文摘要翻译与评论 论文标题&#xff1a; QuickLLaMA: Query-aware Inference Acceleration for Large Language Models 提出的框架 我们Q-LLM框架的示意图。来自记忆上下文的输入被分割成记忆块&#xff0c;通过查询感知的上下文查找来搜索与查询相关的块。目前的键值缓存…

Ansys工程机械CAE应用白皮书

在工程机械领域&#xff0c;CAE技术已得到广泛而成功的应用&#xff0c;作为功能最全面、最有效高效也是全球用户数目最多的Ansys软件&#xff0c;在卡特皮勒&#xff08;Caterpillar&#xff09;、John Deere、LIEBHERR、ARDEN、三一重工、中联重科、JCB、VOLVO、小松 &#x…

Unity 之通过自定义协议从浏览器启动本地应用程序

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity 之通过自定义协议从浏览器启动本地应用程序 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进…

微信朋友圈的高级玩法:让你的动态更吸引人

微信朋友圈作为一个展示个人生活和分享观点的平台&#xff0c;已经深入人们的日常生活。然而&#xff0c;随着用户数量的增加&#xff0c;如何在众多朋友圈动态中脱颖而出&#xff0c;成为许多人追求的目标。本文将介绍四种高级玩法&#xff0c;帮助你提升朋友圈的吸引力&#…

【Unity】加速Unity编辑器模式启动时间

Unity每次Play之后都会Reload Script Assemblies&#xff08;重新加载脚本程序集&#xff09;。 如果我们没有使用很多Assem&#xff0c;则并不需要在播放前重新编译。 可以在设置中将此事的重新编译关闭。 在Edit > Project Settings > Editor 面板中 找到Enter Play…

127.0.0.1与本机IP地址的区别

大家好&#xff0c;今天我们来聊聊一个在网络世界中常常被提及&#xff0c;但可能对于非专业人士来说还有些模糊的概念——127.0.0.1与本机IP地址。这两个地址在网络通信中都扮演着重要的角色&#xff0c;但它们之间又有着怎样的区别呢&#xff1f;让我们一起来探究一下。 一、…

关于JS中的.this

什么是.this? 在JavaScript中&#xff0c;this是一个非常重要的概念&#xff0c;它指的是函数执行的上下文对象。this的值取决于函数是如何被调用的&#xff0c;而不是在哪里被定义的。 .this的指向 在不同的场景中&#xff0c;.this指向并不是唯一的&#xff0c;下面举几个…

Java基础——异常详解(Error 与 Exception )

Java异常主要分为 Error 和 Exception 两种 Error&#xff1a; Error 类以及他的子类的实例&#xff0c;代表了JVM本身的错误。错误不能被程序员通过代码处理。 EXception&#xff1a; Exception 以及他的子类&#xff0c;代表程序运行时发送的各种不期望发生的事件。可以被J…

禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》Chapter 10插图

禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》 Chapter 10插图

C# 索引器与迭代器分部类详情

文章目录 一、迭代器二、查看Foreach执行中间语言三、foreach实现过程总结四、实现迭代器最常用的方法五、分布类概述及其使用六、索引器概述及声明七、索引器在类中的使用八、索引器在接口中的使用九、总结 一、迭代器 1、迭代器&#xff08;iterator&#xff09;解决的是集合…

饮食中的隐形杀手,该如何避免?

塑料发明至今&#xff0c;口碑经历了过山车式的翻转。 上世纪&#xff0c;塑料曾被誉为20世纪最伟大的发明之一&#xff0c;围绕着塑料科学研究诞生出了好几位诺贝尔奖得主。 1953年&#xff0c;因在高分子化学方面的贡献&#xff0c;德国科学施陶丁格获诺贝尔化学奖&#xf…

Stable Diffusion 秋叶整合包v4.7 :解压即用,快速入门AI绘画

Stable Diffusion秋叶整合包&#xff0c;超简单一键安装Stable Diffusion&#xff0c;无任何使用门槛&#xff0c;完全免费使用&#xff0c;支持Nvdia全系列显卡&#xff0c;来自B站up秋葉aaaki&#xff0c;近期发布了Stable Diffusion整合包v4版本&#xff0c;一键在本地部署S…

中国各区域人口密度可视化图

原文链接https://mp.weixin.qq.com/s?__bizMzUyNzczMTI4Mg&mid2247674303&idx1&sn830304f80a0429406c4a5e38dc7750ec&chksmfa777682cd00ff9434e4660bb52ab2bf19913b6732083de061664401a9ac0fa46581cd9e5e86&token1445576002&langzh_CN&scene21#we…

【TB作品】MSP430G2553,单片机,口袋板,流量积算仪设计

题9 流量积算仪设计 某型流量计精度为0.1%, 满刻度值为4L/s&#xff0c;流量计输出为4—20 mA。 设计基于MSP430及VFC32的流量积算仪。 具体要求 (1) 积算仪满刻度10000 L&#xff0c;精度0.1 L; 计满10000 L&#xff0c;自动归零并通过串口&#xff08;RS232&#xff09;向上位…

Llama 3 大型语言模型到底是如何炼成的?

Meta 在今年 4 月开源了 Llama 3 大型语言模型&#xff0c;这是 Meta&#xff0c;也是整个行业迄今为止功能最强大的开源 LLM。 那么 Meta 是如何训练 Llama 3 大型语言模型的&#xff0c;又在训练过程中遇到了什么问题&#xff0c;提出了什么新的解决方案呢&#xff1f;近日&…

【Nodejs 日志库 】

总结了几个比较好用的Nodejs日志库&#xff0c;我认为一个 合格的日志库 需要 支持多种传输&#xff0c;如文件、控制台、HTTP 等。可定制的日志级别和格式。异步日志记录。 根据上述的需求&#xff0c;挑选出 几款比较好用的日志库&#xff0c; 1. Winston&#xff08;Gith…

如何灵活运用keil工具进行问题分析(2)— 定位FreeRTOS的栈溢出导致hardfault问题

前言 &#xff08;1&#xff09;如果有嵌入式企业需要招聘湖南区域日常实习生&#xff0c;任何区域的暑假Linux驱动实习岗位&#xff0c;可C站直接私聊&#xff0c;或者邮件&#xff1a;zhangyixu02gmail.com&#xff0c;此消息至2025年1月1日前均有效 &#xff08;2&#xff0…

防火墙中的NAT

防火墙的NAT NAT分类 源NAT 基于源IP地址进行转换。 我们之前接触过的静态NAT&#xff0c;动态NAT&#xff0c;NAPT都属于源NAT&#xff0c;都是针对源IP地址进行转换的。源NAT主要目的是为了保证内网用户可以访问公网。 先执行安全策略&#xff0c;后执行NAT 目标NAT 基于…

【归档】工作流审批初体验

title: 工作流审批初体验 typora-root-url: 工作流审批初体验 date: 2023-05-09 17:00:39 tags: 项目插件 文章目录 参考文档工作流审批 flowable设置工作流模型绑定用户 设计表单绑定表单 用户发起流程上传查看流程范围流程可视化 请假流程与OA流程子集关系 参考文档 迁移文…