ViT:4 Pruning

实时了解业内动态,论文是最好的桥梁,专栏精选论文重点解读热点论文,围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。

视觉转换器(ViT)架构已经广受欢迎,并广泛用于计算机视觉应用。然而,随着 ViT 模型规模的扩大,可训练参数直线上升,从而影响了部署和性能。因此如何进行有效的优化成为热点领域,各种的研究方向层出不穷。下图左一为基本的ViT块,左二到左五代表着紧凑架构优化法、剪枝优化法、知识蒸馏法和量化优化法。橙色虚线的部分代表每个领域重点优化的组件。

本文先来看看Pruning的优化方向。修Pruning的主要思路在于视觉转换器模型中删除不太重要的权重,通常分为非结构化修剪、结构化修剪和混合修剪技术。

Saliency显著性

在实际中,权重和显著性在神经网络的训练和优化过程中扮演着重要角色,特别是在权重修剪(pruning)中。权重修剪的目的是通过移除冗余或不重要的权重来减少模型的复杂性,提高推理速度,降低内存使用,同时尽量保持模型的性能。显著性通常通过一些评估标准(如梯度、Hessian 矩阵、费舍尔信息矩阵等)来计算。

Hessian 矩阵(海森矩阵)是一个方阵,包含了函数二阶偏导数的信息。

在神经网络中,Hessian矩阵用于描述损失函数(对标上图的f)在参数空间(对标x1,……,xn)中的曲率。它在评估权重显著性和权重修剪中有重要应用。使用 Hessian 矩阵的对角线元素评估每个参数的重要性。对角线元素代表了每个参数的二阶导数,反映了损失函数曲率的大小。曲率大的参数对模型性能影响较大,曲率小的参数影响较小。

费舍尔信息矩阵(Fisher Information Matrix, FIM)是衡量模型参数对数据概率分布敏感性的一种工具。它在神经网络权重修剪和模型优化中有重要应用。下面是费舍尔信息矩阵的定义和计算方法。

在实际中,对于每个样本计算参数θ的梯度gi(x为样本),然后通过外积求和来近似得到最终的数值:

费舍尔信息矩阵和Hessian矩阵一样,也是评估每个权重的重要性。一般较大的对角线元素表示该参数对模型输出的影响较大,因此姑且称之为更重要。

非结构化修剪

Rao引入了一个动态Token稀疏化框架,用于基于输入对冗余Token进行渐进式和自适应修剪,集成了轻量级预测模块来估计Token的重要性分数,并采用注意力屏蔽策略来区分令牌交互并以端到端的方式优化预测模块。

Cap提出了一种新型的理论基础修剪器,能够在修剪过程中准确有效地处理复杂的参数相关性。上图展示了三种不同的参数修剪方法:OBD(对角费舍尔)、WoodFisher/M-FAC和CAP,并比较了它们在处理参数之间的相互依赖关系上的不同之处。


说白了,第一种在减掉参数的时候,没有考虑到参数之间的依赖性。第二种虽然考虑到了,当时它的操作是一次性的。而CAP则是逐步的消除参数,同时在每一步每个参数被剪枝之后还会重新再次计算Saliency。

Cait引入了非对称标记合并,上图的HTM和VTM。在保留空间结构的同时有效地整合相邻标记,并结合一致的动态通道修剪。

Cait在图像输入Transformer的时候进行垂直和水平的压缩,在Vision Transformers中对不重要的通道进行统一修剪,增强了模型压缩。

结构化修剪

这种方法主要根据预定义的标准去除结构组件,例如注意力头或层。例如,WDPruning使用二进制掩码来根据参数的大小来识别无关紧要的参数。

上图为宽度剪枝,从QKV的转化矩阵,到多头的注意力剪枝,其中蓝色部分为被修剪的参数。

上图为Yu提出的了统一的框架,集成了修剪以生成紧凑型变压器。粉色为会被修剪的参数,虚线为连接跳跃修剪。

X-Pruner则是利用端到端的学习可解释性感知掩码来测量每个单元对预测目标类别的贡献,并自适应地搜索逐层阈值,以在确定修剪率的同时保留信息量最大的单元。整个修剪的过程如下:首先使用所提出的可解释性感知掩码训练一个Transformer,目标是量化每个单元对预测每个类别的贡献。然后在预定义的成本约束下探索逐层修剪阈值。最后对修剪后的模型再次执行微调。<请逆时针观察图片!>

混合修剪

SPViT开发了一种基于动态注意力的多头令牌选择器,用于自适应实例级Token选择,同时使用软修剪技术将信息量较小的Token合并到包Token。

ViT-Slim利用具有预定义因子的可学习和统一的稀疏性约束来表示连续搜索空间中各个维度的全局重要性。在上一章节已经介绍过了。

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

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

相关文章

QT事件处理系统之四:自定义事件的注册及拦截、发送

1、自定义事件的注册 自定义事件对象 自定义的事件类必须继承自QEvent,并且无需指定父类 自定义的事件类必须拥有全局唯一的Type值,使用QEvent::User+value即可。 class MyEvent : public QEvent {public:MyEvent();QString getStr() {

文华财经T8自动化交易程序策略模型指标公式源码

文华财经T8自动化交易程序策略模型指标公式源码&#xff1a; //定义变量 //资金管理与仓位控制 8CS:INITMONEY;//初始资金 8QY:MONEYTOT;//实际权益 8QY1:MIN(MA(8QY,5*R),MA(8QY,2*R)); FXBL:N1; DBKS:8QY1*N1;//计算单笔允许亏损额度 BZDKS:MAX(AA-BB,N*1T)*UNIT; SZDKS:MAX…

北方银行 - HDFS 现代化快速案例研究

故事很重要&#xff0c;客户故事是最好的。他们提供令人瞠目结舌的统计数据或克服巨大障碍的那些是获得最佳头条新闻的那些。它们也是最难发表的。我们知道&#xff0c;因为我们将与您分享一些我们正在孜孜不倦地努力出版的内容 - 但现在它们将保持匿名。话虽如此&#xff0c;如…

爬取同样内容,xpath方法会比bs4要慢很多吗?

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 红豆生南国&#xff0c;春来发几枝。 大家好&#xff0c;我是Python进阶者。 一、前言 前几天在Python白银交流群【沐子山树】问了一个Python网络爬虫的…

ARM32开发--WDGT看门狗

知不足而奋进 望远山而前行 目录 文章目录 前言 目标 内容 什么是看门狗 ARM中的看门狗 独立看门狗定时器 窗口看门狗定时器 独立看门狗FWDGT 初始化配置 喂狗 完整代码 窗口看门狗WWDGT 初始化配置 喂狗 完整代码 注意 总结 前言 嵌入式系统在如今的科技发…

JSON序列化与反序列化

目录 JSON序列化 查看JSON文件&#xff0c;设置数据模板类 ​编辑 Newtonsoft.Json下载 运行结果展示 JSON反序列化 序列化是将对象或数据结构转换为可以存储或传输的格式&#xff08;如JSON字符串&#xff09;的过程&#xff0c;而反序列化则是将这个格式的数据转换回原…

Web渗透:文件上传-后端过滤

在上一篇文件上传的内容中笔者阐述了文件上传漏洞产生的相关原理以及使用了一个pikachu靶场的例子进行演示&#xff0c;在这个例子中涉及到了前端代码对于文件上传漏洞的相关防护&#xff0c;以及站在攻击者的角度我们要如何绕过前端的防护成功进行攻击&#xff1b;但是事实上对…

Linux下手动查杀木马与Rootkit的实战指南

模拟木马程序的自动运行 黑客可以通过多种方式让木马程序自动运行&#xff0c;包括&#xff1a; 计划任务 (crontab)&#xff1a;通过设置定时任务来周期性地执行木马脚本。开机启动&#xff1a;在系统的启动脚本中添加木马程序&#xff0c;确保系统启动时木马也随之运行。替…

力扣-2663

题目 如果一个字符串满足以下条件&#xff0c;则称其为 美丽字符串 &#xff1a; 它由英语小写字母表的前 k 个字母组成。它不包含任何长度为 2 或更长的回文子字符串。 给你一个长度为 n 的美丽字符串 s 和一个正整数 k 。 请你找出并返回一个长度为 n 的美丽字符串&#…

JAVA+Netty简单实现Nginx反向代理网关功能【设计实践】

背景 本文实现一个类似于nginx或gateway的反向代理网关&#xff0c;实现思路是访客通过网络请求反向代理服务&#xff0c;代理服务连接到真实服务&#xff0c;维护访客和真实服务的数据交互。 这个实现和之前的内网穿透项目思路相似&#xff0c;只不过内网穿透是由客户端主动…

用python写一个AI Agent对接企业微信上下游协同的案例

要实现一个AI Agent对接企业微信上下游协同&#xff0c;我们可以使用Python编写一个企业微信机器人&#xff0c;用于接收和处理来自企业微信的消息。在此示例中&#xff0c;我们将使用wechatpy库来实现企业微信机器人&#xff0c;并使用requests库实现与上下游系统的通信。 首…

很冷门但真的有趣的IOS应用

Tuesday Tuesday纪念日小组件是一款功能丰富的倒数日和桌面小组件工具APP。此外&#xff0c;Tuesday软件还具有超萌小清新的风格&#xff0c;界面设计清新可爱&#xff0c;适合各种场景使用。用户可以通过小组件实现各种趣味功能&#xff0c;满足不同心情需求。 SideNotes Si…

查看显卡使用情况

查看 NVIDIA 显卡的使用情况&#xff0c;你可以使用命令行工具 nvidia-smi。这是一个非常有用的命令&#xff0c;可以提供关于你的 NVIDIA GPU 的详细信息&#xff0c;包括 GPU 的使用率、显存使用情况、GPU 时钟频率、电源使用情况、温度以及正在运行的进程等。 以下是一些基…

吴恩达机器学习 第三课 week2 推荐算法(上)

目录 01 学习目标 02 推荐算法 2.1 定义 2.2 应用 2.3 算法 03 协同过滤推荐算法 04 电影推荐系统 4.1 问题描述 4.2 算法实现 05 总结 01 学习目标 &#xff08;1&#xff09;了解推荐算法 &#xff08;2&#xff09;掌握协同过滤推荐算法&#xff08;Collabo…

2025秋招NLP算法面试真题(一)-史上最全Transformer面试题

史上最全Transformer面试题 Transformer为何使用多头注意力机制&#xff1f;&#xff08;为什么不使用一个头&#xff09;Transformer为什么Q和K使用不同的权重矩阵生成&#xff0c;为何不能使用同一个值进行自身的点乘&#xff1f; &#xff08;注意和第一个问题的区别&#…

查找和排序

目录 一、查找 1.1查找的基本概念 1.2顺序查找 1.3折半查找&#xff08;二分查找&#xff09; 1.4散列表的查找 1.4.1基本概念 1.4.2散列函数的构造方法 1.4.3解决冲突的方法 二、排序 2.1排序的基本概念 2.2插入排序 2.2.1直接插入排序&#xff1a; 2.2.2希尔排序…

linux 简单使用 sftp 和 lftp命令

目录 一. 环境准备二. sftp命令连接到SFTP服务器三. lftp命令3.1 连接FTP和SFTP服务器3.2 将文件从sftp服务器下载到本地指定目录 四. 通过WinSCP命令行从SFTP服务器获取文件到Windows 一. 环境准备 ⏹在安卓手机上下载个MiXplorer&#xff0c;用作SFTP和FTP服务器 官网: htt…

第12天:前端集成与Django后端 - 用户认证与状态管理

第12天&#xff1a;前端集成与Django后端 - 用户认证与状态管理 目标 整合Django后端与Vue.js前端&#xff0c;实现用户认证和应用状态管理。 任务概览 设置Django后端用户认证。创建Vue.js前端应用。使用Vuex进行状态管理。实现前端与后端的用户认证流程。 详细步骤 1. …

windows无法启动redis-server

Warning: no config file specified, using the default config. In order to specify a config file use D:\Code_enve\Redis\redis-server.exe /path/to/redis.conf Creating Server TCP listening socket *:6379: bind: No such file or directory以上是问题的报错信息&…

AIGC-Animate Anyone阿里的图像到视频 角色合成的框架-论文解读

Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation 论文:https://arxiv.org/pdf/2311.17117 网页:https://humanaigc.github.io/animate-anyone/ MOTIVATION 角色动画的目标是将静态图像转换成逼真的视频&#xff0c;这在在线零…