20240613日志:COPAL

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 ↩︎

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

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

相关文章

解决Pycharm远程连接WSL2的python解释器,使用调试模式时显示超时的问题

环境 windows 11wsl2ubuntu20.04pycharm2023.3.3 问题 Pycharm远程连接WSL2的python解释器&#xff0c;使用调试模式时显示超时 分析 TCP连接错误。 解决方法 windows高级防火墙设置->入站规则->找到pycharm2023.3.3的TCP连接规则->双击允许连接 步骤截图见下…

【C语言】解决C语言报错:Use of Uninitialized Variable

文章目录 简介什么是Use of Uninitialized VariableUse of Uninitialized Variable的常见原因如何检测和调试Use of Uninitialized Variable解决Use of Uninitialized Variable的最佳实践详细实例解析示例1&#xff1a;局部变量未初始化示例2&#xff1a;数组未初始化示例3&…

Explain Python Machine Learning Models with SHAP Library

Explain Python Machine Learning Models with SHAP Library – Minimatech &#xff08;能翻墙直接看原文&#xff09; Explain Python Machine Learning Models with SHAP Library 11 September 2021Muhammad FawiMachine Learning Using SHapley Additive exPlainations …

Linux--MQTT(二)通信基本原理

一、MQTT 通信基本原理 MQTT 是一种基于 客户端 - 服务端 架构的消息传输协议&#xff0c;所以在 MQTT 协议通信中&#xff0c;有两个最为重要的角色&#xff0c;它们便是服务端 和 客户端 。 举例&#xff1a;若开发板向“芯片温度”这一主题发布消息&#xff0c;那么服务…

父亲节:我要做爸爸的健康监督员

父亲节将至&#xff0c;总想着能为爸爸做些什么&#xff0c;来表达我们的感激与关爱。在这个特殊的日子里&#xff0c;成为爸爸的健康监督员&#xff0c;用华为 Watch 4 的智慧健康功能&#xff0c;任何时刻都可以关注爸爸的健康状况&#xff0c;放心又安心了。 用一键微体检…

创建一个electron桌面备忘录

Sound Of Silence 1.创建electron项目命令&#xff1a; npm create quick-start/electron my-new-project 2选择&#xff1a;√ Select a framework: vue √ Add TypeScript? ... No √ Add Electron updater plugin? ... Yes √ Enable Electron download mirror proxy? .…

多模态大模型:基础架构

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则…

【使用 WSL子系统 在 Windows 上安装 Linux(官方教程)】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、使用 wsl --install二、额外的命令 前言 在最新的Windows Insider Preview版本中&#xff0c;只需运行wsl.exe-install&#xff0c;就可以安装运行WSL所需…

Matlab|基于V图的配电网电动汽车充电站选址定容-可视化

1主要内容 基于粒子群算法的电动汽车充电站和光伏最优选址和定容 关键词&#xff1a;选址定容 电动汽车 充电站位置 仿真平台&#xff1a;MATLAB 主要内容&#xff1a;代码主要做的是一个电动汽车充电站和分布式光伏的选址定容问题&#xff0c;提出了能够计及地理因素和服…

【原创】springboot+mysql小区用水监控管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

C++ 45 之 赋值运算符的重载

#include <iostream> #include <string> #include <cstring> using namespace std;class Students05{ public:int m_age;char* m_name;Students05(){}Students05(const char* name,int age){// 申请堆空间保存m_name;this->m_name new char[strlen(name)…

Kotlin 语言基础学习

什么是Kotlin ? Kotiln翻译为中文是:靠他灵。它是由JetBrains 这家公司开发的,JetBrains 是一家编译器软件起家的,例如常用的WebStorm、IntelliJ IDEA等软件。 Kotlin官网 JetBrains 官网 Kotlin 语言目前的现状: 目前Android 已将Kotlin 作为官方开发语言。 Spring 框…

应急响应 | 基本技能 | 01-系统排查

系统排查 目录 系统基本信息 Windows系统Linux系统 用户信息 Windows系统 1、命令行方式2、图形界面方法3、注册表方法4、wmic方法 Linux系统 查看所有用户信息分析超级权限账户查看可登录的用户查看用户错误的登录信息查看所有用户最后的登录信息查看用户最近登录信息查看当…

快速上手SpringBoot

黑马程序员Spring Boot2 文章目录 1、SpringBoot 入门程序开发1.1 创建一个新的项目 2、浅谈入门程序工作原理2.1 parent2.2 starter2.3 引导类2.4 内嵌tomcat 1、SpringBoot 入门程序开发 1.1 创建一个新的项目 file > new > project > empty Project 创建新模块&a…

ubuntu20.04桌面蓝屏问题解决

前些天做仿真项目&#xff0c;遇到了ubuntu蓝屏问题&#xff0c;于是想着找几个参考办法修复&#xff0c;但不管用&#xff0c;疑似是重要组件损坏。 损坏的原因是强制关机&#xff0c;但究竟是强制关了哪一个卡死的进程&#xff0c;不得而知&#xff0c;我有一个关不掉的仿真…

Waf 绕过手法测试

设备类型 由上到下,waf的检测细腻度依次降低 网络层WAF&#xff1a;先拦截流量&#xff0c;进行检测后再转发给 应用层WAF&#xff1a;先经过apache/nginx解析后再交给php处理 云 WAF&#xff08;CDNWAF&#xff09;&#xff1a;简单的看成CDN加上软件WAF的结合体&#xff0c…

vue格网图

先看效果 再看代码 <n-gridv-elsex-gap"20":y-gap"20"cols"2 s:2 m:3 l:3 xl:3 2xl:4"responsive"screen" ><n-grid-itemv-for"(item,index) in newSongList":key"item.id"class"cursor-pointer …

Spring底层架构核心概念解析

BeanDefinition BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点.比如: beanClass:表示Bean类型scope:表示Bean作用域,单例/原型等lazyInit:表示Bean是否懒加载initMethodName:表示Bean初始化时要执行的方法destoryMethodName:表示Bean销毁时…

文章解读与仿真程序复现思路——电工技术学报EI\CSCD\北大核心《计及台风时空特性和灵活性资源协同优化的配电网弹性提升策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…