20240623日志:大模型压缩-sliceGPT

context

  • 1. 剪枝方案图释
  • 2. 正交矩阵Q

1. 剪枝方案图释

在这里插入图片描述

Fig. 1.1 剪枝方案

图中的阴影是表示丢弃掉这部分数据。通过引入正交矩阵 Q Q Q使 Q ⊤ Q = Q Q ⊤ = I \mathrm{Q}^\top\mathrm{Q}=\mathrm{Q}\mathrm{Q}^\top=\mathrm{I} QQ=QQ=I,来大量缩减 X X X的列数和 W W W的行数。
由于 Q Q Q是正交矩阵,有 ∥ Q x ∥ = x ⊤ Q ⊤ Q x = x ⊤ x = ∥ x ∥ \|\mathbf{Q}x\|=\sqrt{x^\top\mathbf{Q}^\top\mathbf{Q}x}=\sqrt{x^\top x}=\|x\| Qx=xQQx =xx =x,所以 Q Q Q x x x相乘不会影响 x x x的范数。
在一般情况下,假设 X ℓ \mathbf{X}_{\ell} X是transformer中一个块的输出,在经过RMSNorm(对每一行 x ← X ∣ ∣ X ∣ ∣ x\leftarrow \frac{\mathbf{X}}{\left|\left|\mathbf{X}\right|\right|} xXX处理),然后 R M S N o r m ( X ℓ ) \mathrm{RMSNorm}(\mathbf{X}_{\ell}) RMSNorm(X)作为下一块的输入。若引入矩阵 Q Q Q,则有 R M S N o r m ( X ℓ ) = R M S N o r m ( X ℓ Q ) Q ⊤ \mathrm{RMSNorm}(\mathbf{X}_\ell)=\mathrm{RMSNorm}(\mathbf{X}_\ell\mathbf{Q})\mathbf{Q}^\top RMSNorm(X)=RMSNorm(XQ)Q,所以实际上引入 Q Q Q不改变transformer的结构。对于transformer中的每一attention或FFN层都有线性层,同时由于transformer中有残差连接(图中的 + ◯ \textcircled{+} +操作),这里把矩阵 Q Q Q引入每一块的线性层,所以需要把矩阵 Q Q Q引入到所有之前的层(一直到编码阶段)和所有之后的层(一直到LM头)。
W i n ℓ \mathbf{W}_{in}^\ell Win W o u t ℓ \mathbf{W}_{out}^\ell Wout为transformer的第 ℓ \ell 块的线性层的权重矩阵, b i n ℓ \mathbf{b}_{in}^\ell bin b o u t ℓ \mathbf{b}_{out}^\ell bout为相对应的偏置, W e m b d \mathbf{W}_{embd} Wembd W h e a d \mathbf{W}_{head} Whead为编码和头矩阵, Q Q Q D D D维矩阵,则可以用以下矩阵来模型不变性变换
W ~ e m b d = W e m b d Q , (1) b ~ o u t ℓ = Q ⊤ b o u t ℓ , (4) W ~ i n ℓ = Q ⊤ W i n ℓ , (2) W ~ h e a d = Q ⊤ W h e a d . (5) W ~ o u t ℓ = W o u t ℓ Q , (3) \begin{aligned}\tilde{\mathbf{W}}_{embd}&=\mathbf{W}_{embd}\mathbf{Q} ,&&\text{(1)}&&\tilde{b}_{out}^{\ell}=\mathbf{Q}^{\top}b_{out}^{\ell} ,&&\text{(4)}\\\tilde{\mathbf{W}}_{in}^{\ell}&=\mathbf{Q}^{\top}\mathbf{W}_{in}^{\ell},&&\text{(2)}&&\tilde{\mathbf{W}}_{head}=\mathbf{Q}^{\top}\mathbf{W}_{head} .&&\text{(5)}\\\tilde{\mathbf{W}}_{out}^{\ell}&=\mathbf{W}_{out}^{\ell}\mathbf{Q} ,&&\text{(3)}\end{aligned} W~embdW~inW~out=WembdQ,=QWin,=WoutQ,(1)(2)(3)b~out=Qbout,W~head=QWhead.(4)(5)偏置矩阵保持不变 b ~ i n ℓ = b i n ℓ , b ~ h e a d = b h e a d \tilde{b}_{in}^{\ell}=b_{in}^{\ell},\tilde{b}_{head}=b_{head} b~in=bin,b~head=bhead
文章主题思想如图Fig. 1.2
在这里插入图片描述

Fig. 1.2 图解slicegpt(三张图从左到右分别是a、b和c)

图中,(a)中的 W Q W_Q WQ W K W_K WK W V W_V WV是注意力中的QKV操作, W V W_V WV表示注意力机制的输出矩阵, M = I − 1 D 1 1 ⊤ \mathbf{M}=\mathbf{I}-\frac{1}{D}\mathbf{1}\mathbf{1}^{\top} M=ID111是用来使矩阵 X X X中的每一个元素拉回到0上下,与下一步的 x ← X ∣ ∣ X ∣ ∣ x\leftarrow \frac{\mathbf{X}}{\left|\left|\mathbf{X}\right|\right|} xXX共同完成归一化处理, W 1 W_1 W1 W 2 W_2 W2是MLP操作。(b)与(c)中的 ( α ) (\alpha) (α)就是diag( α \alpha α),矩阵 ( α ′ ) (\alpha^{'}) (α)来自前一块。向量 α \alpha α和偏置 β \beta β在每个LayerNorm实例上独立学习。diag( α \alpha α)是一个矩阵操作,表示将一个向量 ( α ) (\alpha) (α)作为对角线元素创建一个对角矩阵。
最后移除一些不重要的行和列。

2. 正交矩阵Q

使用主成分分析(PCA)来求解 Q ℓ Q_{\ell} Q(transformer中第 ℓ \ell 块),在训练集中抽取一些数据作为校准数据,喂给模型用来从前到后逐层提取正交矩阵。对于校准数据集中的 i i i条数据,使模型中第 ℓ \ell 层输出为 X ℓ , i X_{\ell,i} X,i,则有
C ℓ = ∑ i X ℓ , i ⊤ X ℓ , i \mathrm{C}_{\ell}=\sum_{i}\mathrm{X}_{\ell,i}^{\top}\mathrm{X}_{\ell,i} C=iX,iX,i Q ℓ Q_{\ell} Q C ℓ \mathrm{C}_{\ell} C的降序排列特征值的特征矩阵。

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

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

相关文章

androidx.preference框架介绍

一,概要 Preference作为setting核心框架,笔者对此框架做一个简单的解析,androidx.preference本质是对设置领域提供了一层View封装,以android view本身的策略模式进行二次开发,将常用的一些设置样式封装到不同的Preference中,以达到快速开发设置相关功能。并且,此风格与…

将 MinIO 与 Keycloak OIDC 集成

Keycloak是一种单点登录解决方案。使用Keycloak,用户使用Keycloak而不是MinIO进行身份验证。如果没有Keycloak,您将不得不为每个用户创建一个单独的身份 - 从长远来看,这将很麻烦。您需要一个集中身份解决方案来管理 MinIO 的身份验证和授权。…

OpenHarmony 5.0 纯血鸿蒙系统

OpenHarmony-v5.0-Beta1 版本已于 2024-06-20 发布。 OpenHarmony 5.0 Beta1 版本标准系统能力持续完善,ArkUI 完善了组件通过 C API 调用的能力;应用框架细化了生命周期管理能力,完善了应用拉起、跳转的能力;分布式软总线连接能力…

【面试题】漏洞复现的步骤

漏洞复现是信息安全工作中非常重要的一个环节,它通过对已发现的漏洞进行模拟攻击,来验证漏洞的存在性并深入理解其影响。以下是漏洞复现的主要步骤,并尽量以分点表示和归纳的形式呈现: 1. 收集漏洞信息 从漏洞公告、CVE&#xf…

Vue2中的render函数

Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力。这时你可以用render渲染函数,它比模板更接近编译器 。 在Vue2中,render函数是一个可选的、用于生成虚拟DOM的特殊函数。它是Vu…

国际网络专线怎么开通?

在全球化日益加速的今天,企业越来越需要稳定、高效的网络来支撑他们的跨国业务。国际网络专线,作为外贸企业、出海企业等拓展全球业务的关键基础设施,其重要性不言而喻。那么,企业如何才能开通国际网络专线呢?本文将详…

Amazon Q Developer 实战:从新代码生成到遗留代码优化(下)

简述 本文是使用 Amazon Q Developer 探索如何在 Visual Studio Code 集成编程环境(IDE),从新代码生成到遗留代码优化的续集。在上一篇博客《Amazon Q Developer 实战:从新代码生成到遗留代码优化(上)》中…

docker常见问题-持续更新

docker 启动的问题解决 解决: 下载更新linux的win子系统, 重启就可以 WSL 2 installation is incomplete. 更加报错提示,猜测可能是我们使用的wsl2版本老了,需要我们自己手动更新一下,我们根据提示去微软官网下载最新版的wsl2安装后即可正常打开。更新包下载链接。 https://ws…

HBase:大数据时代的分布式存储利器

HBase:大数据时代的分布式存储利器 HBase:大数据时代的分布式存储利器1. HBase简介2. HBase特点3. HBase应用场景4. 总结 HBase:大数据时代的分布式存储利器 随着互联网和大数据技术的飞速发展,数据存储和计算需求呈现出爆炸式增…

Arduino - 串行绘图仪

Arduino - Serial Plotter Arduino - 串行绘图仪 In this tutorial, we will learn how to use the Serial Plotter on Arduino IDE, how to plot the multiple graphs. 在本教程中,我们将学习如何在Arduino IDE上使用串行绘图仪,如何绘制多个图形。 A…

webstorm无法识别@路径的问题,左键无法跳转

在项目根目录下创建 webstorm.config.js use strict; const webpackConfig require(vue/cli-service/webpack.config.js); module.exports webpackConfig;webstorm设置里找到以下位置,引入新建的 webstorm.config.js即可,不生效把webstorm重启一下

android Studio 无线开发调试: PC机远程安卓电脑 免费

背景 公司的安卓机比较大,还有连接着串口设备不好挪动。 但是遇到问题调试很麻烦。想找到一套远程调试方法。 实现 要求: adb android Studio 2023.3.1 安卓机IP:1928.168.1.228 直接用adb远程连接:adb connect 1928.168.1.228 默认端口…

HarmonyOS Next开发学习手册——ExtensionAbility

概述 EmbeddedUIExtensionAbility 是EMBEDDED_UI类型的ExtensionAbility组件,提供了跨进程界面嵌入的能力。 EmbeddedUIExtensionAbility需要和 EmbeddedComponent 一起配合使用,开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的Embed…

读AI新生:破解人机共存密码笔记11智能爆炸

1. 大猩猩问题 1.1. 大约1000万年前,现代大猩猩的祖先创造了进化出现代人类的遗传谱系 1.1.1. 它们的物种基本上没有未来,除了我们屈尊所允许它们拥有的未来 1.1.2. 我们不希望在超级智能机器面前处于类似的地位 1.2. 大猩猩问题就是人类是否能在一个…

电脑提示msvcr120.dll丢失怎样修复

文件功能与重要性:msvcr120.dll 文件的功能和重要性体现在多个方面,以下是对其核心功能的详细分析: 运行时支持 msvcr120.dll 提供了运行时环境,使得使用 Microsoft Visual C 2013 编译的程序能够调用必要的运行时函数。这些函数…

Mysql----表的约束

提示:以下是本篇文章正文内容,下面案例可供参考 一、表的约束 表的约束:表中一定要有约束,通过约束让插入表中的数据是符合预期的。它的本质是通过技术手段,让程序员插入正确的数据,约束的最终目标是保证…

Java | Leetcode Java题解之第189题轮转数组

题目: 题解: class Solution {public void rotate(int[] nums, int k) {k % nums.length;reverse(nums, 0, nums.length - 1);reverse(nums, 0, k - 1);reverse(nums, k, nums.length - 1);}public void reverse(int[] nums, int start, int end) {whil…

【机器学习】图神经网络(NRI)模型原理和运动轨迹预测代码实现

1.引言 1.1.NRI研究的意义 在许多领域,如物理学、生物学和体育,我们遇到的系统都是由相互作用的组分构成的,这些组分在个体和整体层面上都产生复杂的动态。建模这些动态是一个重大的挑战,因为往往我们只能获取到个体的轨迹数据,而不知道其背后的相互作用机制或具体的动态…

Shardingsphere-Proxy 5.5.0数据迁移

Shardingsphere-Proxy 5.5.0数据迁移 Shardingsphere系列目录:背景配置集群部署搭建Zookeeper修改shardingsphere-proxy配置重启shardingsphere-proxy 执行数据迁移连接代理数据库实例(Navicate)应用代理数据库注册目标分片数据库存储单元创建…

如何将图片旋转任意角度?这四种方法轻松将图片旋转至任意角度!

如何将图片旋转任意角度?当我们涉及到图片时,常常会面临角度不佳的挑战,这一问题可能会给我们带来一系列不便,让我们深入探讨这些挑战,并探寻解决之道,首先,错误的角度可能导致视觉失真&#xf…