当前位置: 首页 > news >正文

Dynamic Sparse No Training: Training-Free Fine-tuning for Sparse LLMs

大语言模型(LLM)在设备上部署道路上落下了一个令人生畏的障碍。本文关注于大语言模型的剪枝算法。

动态稀疏训练(Dynamic Sparse Training,DST)是一种近期收到广泛关注的剪枝算法。与之前大部分剪枝方法需要训练整个网络不同,DST选择性更新一部分网络参数并允许稀疏网络拓扑动态进化。然而先前研究显示其在小规模BERT级别语言模型上微调的失败。

本文方法

本文算法将剪枝视作为设计一个二进制掩码指示权重是否移除。在给定剪枝率 p p p 条件下的LLM剪枝问题可以描述为:
min ⁡ M , W ∣ ∣ W ∗ A − ( M ⋅ W ) ∗ A ∣ ∣ 2 s . t . 1 − ∣ ∣ M ∣ ∣ 0 C o u t ⋅ C i n = p \min_{M,W}||W*A-(M\cdot W)*A||_{2}\quad s.t. \quad 1-\frac{||M||_{0}}{C_{out}\cdot C_{in}}=p M,Wmin∣∣WA(MW)A2s.t.1CoutCin∣∣M0=p

该问题可以从两个互补角度求解,1. 设计标准来剪枝对模型影响最小的权重,2. 对于获得的稀疏网络,剩下的权重自然地进行微调以进一步减少重建误差。这些常规的求解方式需要大量训练资源,对于大容量的LLM模型并不适用。

本文关注如何高效减少给定剪枝稀疏网络与对应密集网络间重建损失。本文不使用全微调或部分更新的方法恢复性能,而是根据对重建损失贡献在见之后细化稀疏掩码。本文方法源于Rigging the lottery:
Making all tickets winners中动态稀疏训练使用的剪枝-生长操作。DST在稀疏网络训练中包含权重剪枝和权重生长过程。基于此方法,本文DSþT,一种稀疏LLM无训练微调方法,该方法剥离权重更新并通过将优化目标转化为每个全中行的重建误差保持剪枝和增长。剪枝-生长过程与网络独立进行,并使用迭代方式逐渐优化稀疏掩码

DSþT从一个稀疏的LLM网络开始,可以使用任何已有的评估标准剪枝。然后通过查看重建损失执行迭代剪枝与生长。

生长标准

给定稀疏权重行 M r ⊙ W r M_{r}\odot W_{r} MrWr,尝试恢复剪枝权重使其在不同输入激活上获得最多的重建误差 Δ r \Delta_{r} Δr。这里的重建标准同时考虑重建误差变化的期望和方差。索引为i的恢复权重表示为:
i = { arg ⁡ max ⁡ k ¬ M r , k ⋅ W r , k ⋅ E [ A r ] / Var ⁡ ( A r ) , if  E [ Δ r ] > 0 , arg ⁡ min ⁡ k ¬ M r , k ⋅ W r , k ⋅ E [ A r ] / Var ⁡ ( A r ) , otherwise,  i=\left\{\begin{array}{l} \underset{k}{\arg \max } \neg \mathbf{M}_{r, k} \cdot \mathbf{W}_{r, k} \cdot \mathbb{E}\left[\mathbf{A}_{r}\right] / \operatorname{Var}\left(\mathbf{A}_{r}\right), \text { if } \mathbb{E}\left[\Delta_{r}\right]>0, \\ \underset{k}{\arg \min } \neg \mathbf{M}_{r, k} \cdot \mathbf{W}_{r, k} \cdot \mathbb{E}\left[\mathbf{A}_{r}\right] / \operatorname{Var}\left(\mathbf{A}_{r}\right), \text { otherwise, } \end{array}\right. i= kargmax¬Mr,kWr,kE[Ar]/Var(Ar), if E[Δr]>0,kargmin¬Mr,kWr,kE[Ar]/Var(Ar), otherwise, 
这里考虑引入输入激活的方差主要因为如果权重对 Δ r \Delta_{r} Δr 的影响在不同输入之间表现出很高的方差,那么恢复它可能不会导致稳定的误差减小。

剪枝标准

在选择恢复权重后,需要选择其余的权重进行剪枝以维护固定的稀疏率。对于剪枝标准,本文使用Wanda标准的变化版本。除了剪枝权重的标准指标,本文的标准强制要求所选权重在剪枝时应该为减少重建损失做出积极贡献。这有助于在不影响无训练微调重建损失稳定减少情况下保留关键权重。

i = { arg ⁡ max ⁡ k , M r , k ] ⋅ W r , k ⋅ E [ A r ] < 0 M r , k ⋅ ∣ W r , k ⋅ ∣ ∣ A r ∣ ∣ 2 , if  E [ Δ r ] > 0 , arg ⁡ max ⁡ k , M r , k ] ⋅ W r , k ⋅ E [ A r ] > 0 M r , k ⋅ ∣ W r , k ⋅ ∣ ∣ A r ∣ ∣ 2 , if  o t h e r w i s e , i=\left\{\begin{array}{l} \underset{k,M_{r,k}]\cdot W_{r,k}\cdot E[A_{r}]<0}{\arg \max } M_{r,k}\cdot |W_{r,k}\cdot ||A_{r}||_{2}, \text { if } \mathbb{E}\left[\Delta_{r}\right]>0, \\ \underset{k,M_{r,k}]\cdot W_{r,k}\cdot E[A_{r}]>0}{\arg \max } M_{r,k}\cdot |W_{r,k}\cdot ||A_{r}||_{2}, \text { if } otherwise, \\ \end{array}\right. i= k,Mr,k]Wr,kE[Ar]<0argmaxMr,kWr,k∣∣Ar2, if E[Δr]>0,k,Mr,k]Wr,kE[Ar]>0argmaxMr,kWr,k∣∣Ar2, if otherwise,

相关文章:

Dynamic Sparse No Training: Training-Free Fine-tuning for Sparse LLMs

大语言模型&#xff08;LLM&#xff09;在设备上部署道路上落下了一个令人生畏的障碍。本文关注于大语言模型的剪枝算法。 动态稀疏训练&#xff08;Dynamic Sparse Training&#xff0c;DST&#xff09;是一种近期收到广泛关注的剪枝算法。与之前大部分剪枝方法需要训练整个网…...

解决n+1查询数据库问题

文章目录 1. 问题描述2. 解决方法3. 总结 1. 问题描述 在写项目中&#xff0c;可能会碰到一个问题&#xff1a;通过查询表A得到一个list结果&#xff0c;再对list中的n个元素各查询一次关联的表B。形成对数据库执行n1次查询。这种代码会无形增加数据库的处理负担&#xff0c;影…...

DICOM 基础知识:深入理解DICOM数据结构与标签说明

目录 DICOM 图像概念 DICOM 图像关键特性&#xff1a; DICOM 文件结构 常见数据元素&#xff1a; 数据元素示例详解 DICOM-VR 数据类型说明 DICOM 标准支持的数据集 结语 DICOM 图像概念 DICOM&#xff08;Digital Imaging and Communications in Medicine&…...

Git - 如何删除 push 过一次的文件链路追踪?

&#xff08;以 target 文件夹为例&#xff09;如果你已经在 .gitignore 中添加了 target/ 目录&#xff0c;但 target 文件夹仍然出现在 Git 的变更列表中&#xff0c;可能是因为它之前已经被添加到 Git 仓库中。即使你更新了 .gitignore&#xff0c;Git 仍然会跟踪这些文件。…...

软件测试学习总结

一.软件测试概念和目的 软件测试的概念: 测试模型(V模型) 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的最终审查,它是软件质量保证的关键步骤。 通常对软件测试的定义有两种描述: 定义1:软件测试是为了发现错误而执行程序的过程 定义2:…...

c语言错题——#define对应的查找替换

文章目录 一、题目 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、题目 分析 结构体向最长的char对齐&#xff0c;前两个位段元素一共42位&#xff0c;不足8位&#xff0c;合起来占1字节&#xff0c;最后一个单独1字节&#xff0c;一共3字节。另外…...

Visual Basic介绍及简单例子

Visual Basic(简称 VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。 一、主要特点 易于学习和使用: Visual Basic 具有直观的可视化开发环境,使用户可以通过拖放控件和设置属性的方式快速创建用户界面。对于初学者来说,这种方式非常容易上手,无需深入了…...

Matlab学习01-矩阵

目录 一&#xff0c;矩阵的创建 1&#xff0c;直接输入法创建矩阵 2&#xff0c;利用M文件创建矩阵 3&#xff0c;利用其它文本编辑器创建矩阵 二&#xff0c;矩阵的拼接 1&#xff0c;基本拼接 1&#xff09; 水平方向的拼接 2&#xff09;垂直方向的拼接 3&#xf…...

【复旦微FM33 MCU 外设开发指南】外设篇1——硬件除法器

前言 本系列基于复旦微FM33LC0系列单片机的DataSheet编写&#xff0c;旨在提供一些开发指南。 本文章及本系列其他文章将持续更新&#xff0c;本系列其它文章请跳转【复旦微FM33 MCU 外设开发指南】总集篇 本文章最后更新日期&#xff1a;2024/10/24 文章目录 前言用途工作流…...

在元神操作系统启动时自动执行任务脚本

1. 背景 本文主要介绍让元神操作系统启动时自动执行任务脚本的方法&#xff0c;适用于无人化任务执行目的。将任务脚本及相关的应用程序准备好之后&#xff0c;把装有元神操作系统的U盘插入目标电脑&#xff0c;然后打开电脑电源就会自动完成所设置的任务。 2. 方法 &#x…...

JAVA学习-练习试用Java实现“判断是否为等边三角形的方法”

问题&#xff1a; 定义一个三角形类&#xff08;Triangle&#xff09;&#xff0c;包含三个边长&#xff08;a, b, c&#xff09;属性&#xff0c;并实现一个判断是否为等边三角形的方法。 解答思路&#xff1a; 下面是一个简单的 Triangle 类定义&#xff0c;其中包含了三个…...

Leetcode 140 Word Break II

题意&#xff1a;给定一个string以及一个wordDict,要求返回一个vector<string> &#xff0c;这个vector中的string都是word Dict中的组合 Input: s “catsanddog”, wordDict [“cat”,“cats”,“and”,“sand”,“dog”] Output: [“cats and dog”,“cat sand dog”…...

文理学院数据库应用技术实验报告0

文理学院数据库应用技术实验报告0 实验内容 打开cmd,利用MySQL命令连接MySQL服务器。 mysql -u root -p查看当前MySQL服务实例使用的字符集(character)。 SHOW VARIABLES LIKE character_set_server;查看当前MySQL服务实例支持的字符序(collation)。 SHOW VARIABLES LIKE c…...

Bootstrap 4 按钮

Bootstrap 4 按钮 Bootstrap 4 是一个流行的前端框架,它提供了大量的组件和样式,用于快速开发响应式和移动设备优先的网页。在本文中,我们将重点讨论 Bootstrap 4 中的按钮组件,包括它们的基本用法、样式选项和自定义方法。 基本按钮 在 Bootstrap 4 中,创建一个基本按…...

【笔记】LLM位置编码之标准位置编码

标准位置编码 起源原理证明&#xff1a;对于任何固定的偏移量 k k k&#xff0c; P E p o s k PE_{posk} PEposk​可以表示为 P E p o s PE_{pos} PEpos​的线性函数。计算 P E p o s k 与 P E p o s PE_{posk} 与PE_{pos} PEposk​与PEpos​的内积结论 通俗理解缺点 起源 由…...

环 境 配 置

01 Ubuntu18.04中QT环境 1. 下载安装包 官网 http://download.qt.io/archive/qt/5.9/5.9.1/qt-opensource-linux-x64-5.9.1.run 国内镜像服务器 ​https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.9/5.9.1/qt-opensource-linux-x64-5.9.1.run QQ群 ...... 2. 安装 把下载…...

理解dbt artifacts及其实际应用

dbt是数据分析领域的一种变革性工具&#xff0c;它使数据专业人员能够对仓库中的数据进行转换和建模。它的强大功能之一是生成dbt artifacts&#xff1a;dbt运行的结构化输出&#xff0c;提供对dbt项目及其操作的深入了解。 dbt 构件介绍 dbt构件是每次dbt运行时生成的JSON文…...

100种算法【Python版】第15篇——KMP算法

本文目录 1 算法原理1.1 部分匹配表2 实现步骤3 示例说明4 python实例5 算法应用领域1 算法原理 KMP(Knuth-Morris-Pratt)算法是一种用于高效字符串匹配的算法。它通过预处理模式字符串,构建一个部分匹配表(前缀函数),以避免重复比较,从而提高匹配效率。KMP 算法通过利…...

【软件工程】软件项目管理/工程项目管理复习资料

第一章 软件项目管理概述习题 一. 填空题 实现项目目标的制约因素有&#xff08; 项目范围 &#xff09;、&#xff08; 成本 &#xff09;、&#xff08; 进度计划 &#xff09;、&#xff08; 客户满意度 &#xff09;等。 项目管理&#xff08; 启动过程组 &#xff09;、…...

C语言基础题(大合集2)

1. 时间转换 给定秒数 --> 输出秒数 转化成 时/分/秒 //时间转换 //给定秒数 --> 转换成 小时/分/秒 int main() {//输入int seconds 0;int h 0;//小时int m 0;//分钟int s 0;//秒scanf("%d", &seconds);//计算h seconds / 60 / 60;m seconds / 60…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...