20240613日志:COPAL

news2024/11/25 11:40:36

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/1827681.html

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

相关文章

微软OneDrive简介:特点、应用场景、使用方法、注意事项

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

热门开源项目ChatTTS: 国内语音技术突破,实现弯道超车

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Cesium入门学习(一)

下载cesium源代码 安装依赖 npm install注册账户&#xff0c;申请一个token 没有这个token&#xff0c;会导致地图中只能看到一个宇宙&#xff0c;没有办法看到地球 cesium的官网&#xff1a;cesium官网 替换token 替换对应位置的token 启动 运行 npm run build npm r…

西门子学习笔记15 - 位逻辑操作的学习

1、点动操作&#xff08;按下按钮就启动松开就停止&#xff09; 2、自锁电路&#xff08;可以自己保持的状态除非常闭停止按下&#xff09; 3、取反操作&#xff08;顾名思义就是反过来1就变成0&#xff0c;0就变成1&#xff09; 4、置为复位&#xff08;置位之后如果不复位的话…

注解(Annotation)(一)

Java 注解&#xff08; Annotation &#xff09;又称 Java 标注&#xff0c;是 JDK5.0 引入的一种注释机制。 Java 语言中的类、 构造器、 方法、成员变量、参数等都可以被注解进行标注。 自定义注解 --- 格式 自定义注解就是自己做一个注解来使用。 public interface …

Python自然语言处理的力量:NLTK库介绍

文章目录 Python自然语言处理的力量&#xff1a;NLTK库介绍1. NLP的魔法&#xff1a;为什么选择NLTK&#xff1f;2. 什么是NLTK&#xff1f;3. 快速安装NLTK4. 8个NLTK的基本函数使用方法4.1 分词4.2 词性标注4.3 命名实体识别4.4 频率分布4.5 停用词过滤4.6 词形还原4.7 句子分…

PySide(PyQt)实现鼠标画框局部放大

按住鼠标左键画框&#xff0c;裁切画面并局部放大&#xff0c;可以用来生成ROI 1、在QtDesigner中创建ui文件&#xff0c;命名为crop.ui&#xff1a; 2、自定义脚本ImageLabel.py &#xff1a; from PySide6.QtCore import Qt, QRect, Signal, QPoint from PySide6.QtGui impo…

cmake构建Qt项目

cmake构建Qt项目 项目结构 一、添加头文件 # 添加头文件目录&#xff0c;还需要在add_executable中添加头文件&#xff01;&#xff01;&#xff01; include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) add_executable(landlardsinclude/test.h)二、添加源文件 aux…

如何从印刷体的图片中把手写体部分统统去掉?--免费途径

AI图像处理技术 我是从国外某个网站上找到在线AI免费credit的处理方式的。国内的基本没有全功能试用、或者即使收费也不好用。 国内的差距主要是&#xff1a;1、对图片分辨率和大小有更多限制&#xff0c;即使收费用户也是&#xff1b;2、需要安装app之类&#xff0c;然后连线…

深入探讨限流算法:固定窗口、滑动窗口、漏桶与令牌桶原理及应用场景

固定窗口算法 简单粗暴&#xff0c;但有临界问题&#xff1a; 滑动窗口算法 滑动窗口通俗来讲是一种流量控制技术&#xff0c;描述接收方TCP数据报缓冲区大小的数据。发送方根据这个数据计算最大可发送的数据量。滑动窗口协议是TCP使用的一种流量控制方法&#xff0c;允许发送…

英语学习笔记37——Making a bookcase

Making a bookcase 做书架 词汇 Vocabulary work v. 工作 ing形式&#xff1a;working 搭配&#xff1a;work on 工作 做……工作    work for 人 为……而工作 例句&#xff1a;我正在做我的家庭作业。    I am working on my homework.    我正在为Bobby工作。 …

解决Qt的multimedia库在clion中依赖库补全的问题

解决Qt的multimedia库在clion中使用报错的问题 在clion中&#xff0c;使用Qt的multimedia库时会报如下错误&#xff1a; defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer" 我猜测出现这个错误的原因很可能是因为…

监控异地组网的方法?

监控异地组网是一项关键的技术&#xff0c;能够实现远程连接和访问。在复杂的网络环境中&#xff0c;使用传统的方法可能会遭遇网络限制和访问速度较慢的问题。而采用新兴的监控异地组网方法&#xff0c;如【天联】组网技术&#xff0c;可以克服这些问题并提供更好的用户体验。…

4.8.2 利用Spark SQL计算总分与平均分

姓名语文数学英语物理化学陈燕文8998807665张晓峰9078928456李太白8793677892洪小琳9867879076 1. 准备数据 创建本地成绩文件&#xff1a;scores.txt&#xff0c;包含学生成绩数据。上传到 HDFS&#xff1a; 创建目录&#xff1a;hdfs dfs -mkdir -p /scoresumavg/input上传文…

如何通过在线封装APP快速上线?小猪APP分发帮你解决难题

你是否曾经为了上线一款APP而头疼不已&#xff1f;开发完成后&#xff0c;封装、测试、分发&#xff0c;这些繁琐的步骤让人望而却步。别担心&#xff0c;小猪APP分发来了&#xff01;这篇文章将带你了解如何通过在线封装APP快速上线&#xff0c;并且告诉你为什么选择小猪APP分…

海底管缆先敷后埋与边敷边埋有什么区别?

海缆铺设有两种方式&#xff1a;“边敷边埋”和“先敷后埋”。 “边敷边埋”冲埋式埋设犁施工法———通过埋设犁(水力开沟机)泵送高压水&#xff0c;在海底冲出一条沟槽的同时&#xff0c;将海缆平铺下去,然后利用在潮汐作用下海床面自行回填(必要时采取压盖保护施工)。主要施…

MATLAB直方图中bin中心与bin边界之间的转换

要将 bin 中心转换为 bin 边界&#xff0c;请计算 centers 中各连续值之间的中点。 d diff(centers)/2; edges [centers(1)-d(1), centers(1:end-1)d, centers(end)d(end)];要将 bin 边界转换为bin 中心 bincenters binedges(1:end-1)diff(binedges)/2;

1832javaERP管理系统之能力物料管理Myeclipse开发mysql数据库servlet结构java编程计算机网页项目

一、源码特点 java erp管理系统之能力物料管理是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了serlvet设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用 B/S模式开发。开发环境为TOMCAT7.0,My…

special characters are not allowed

处理域名连接nacos读取配置异常 1 项目启动报错2 问题处理3 刷新依赖重启问题解决 1 项目启动报错 使用ip可以正在启动&#xff0c;但是使用域名报下面的错误 2024-06-15 17:37:22.981 ERROR 29268 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : parse …

等级考试3-2021年3月题

作业&#xff1a; #include <iostream> using namespace std; int chonghe(int,int,int,int); int main(){int a[1000],b[1000];int n,ma0;cin>>n;for(int i0;i<n;i){cin>>a[i]>>b[i];}for(int i0;i<n;i){for(int ji1;j<n;j){mamax(ma,chongh…