ViT:3 Compact Architecture

news2024/9/21 0:35:02

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

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

本文先来看看Compact Architecture的优化方向。Compact Architecture是指设计轻量级、高效或者紧凑的模型,同时需要在下游任务中保持高性能。它包含各种策略和方法,可在不影响性能的情况下减小模型大小、计算复杂性和内存占用。这种方法的研究集中在2021年-2022年,紧凑架构对于算力不那么充裕的终端的确是一个很好的改进。这个领域一般涉及到如下几种优化方法,要么创新整体架构,要么优化整体架构,要么进行架构搜索,要么优化注意力机制。

架构优化

2020年Reformer引入了两种技术提高Transformer的效率。利用局部敏感哈希的替换点积注意力,将其复杂度从 O(L) 更改为 O(L log L),其中 L 是序列的长度。其次使用可逆残差层而不是标准残差,允许在训练过程中只存储一次激活,而不是 N 次。


2022年EfficientFormer分析了基于ViT的模型架构和算子,没有集成MobileNet结构,是一个完全基于Transformer的模型。这个架构定义了两种元块(MetaBlock),MB4D是基于CNN,而MB3D是传统的ViT块。

它一共有4个阶段,并且在最后两个阶段仅启用MB3D。可以这么理解,一开始先用CNN,到了最后才是使用注意力。因为一方面由于MHSA的计算相对于Token长度呈二次增长,因此在早期阶段集成它会大大增加计算成本。另一方面网络的早期阶段利用CNN捕获了低级特征,而后期阶段则学习长期的依赖关系。

它其实还构建了一个超网,采用搜索算法包括找到最优的超参数Cj(每个阶段的宽度)、Nj(每个阶段的块数,即深度)和最后N个要应用MB3D的块。实验结果证明还是挺不错的,而且在iphone12运行记过还是低延时。

“小编任务这个表格可以琢磨一下,其中第二行的Type和第三行的参数规模!”


之后半年的EfficientFormerV2提出了一种低延迟、高参数效率的超网。

(a)为原来EfficientFormer1.0的模型,在2.0的版本中奖FFN(b)在所有的块中进行统一,同时将注意力机制块进行调整(c)。在高分辨率的场景利用下采样和上采样(插值)的办法,将整体延迟从3.5ms压缩到1.5ms,而没有任何性能的损失。

EfficientFormer2.0提出了一种新的超网络设计方法,该方法在维护较高的准确性的同时,可以在移动设备上运行。同时它提出了一种细粒度的联合搜索策略,该策略可以同时优化延迟和参数数量,从而找到高效的架构。

最后EfficientFormer2.0在ImageNet-1K 数据集上的准确性比MobileNetV2和MobileNetV2×1.4高出约 4%,同时具有相似的延迟和参数。

<Transformer居然还能比MobileNet快!,请细品下图>

架构搜索优化

架构搜索一般会采用特定的搜索算法来找寻最优的网络参数,进而构建超网框架。比如2022年的Vision Transformer Slimming来探索和发现针对特定任务或某些约束下量身定制的紧凑架构。

随着budget的收缩,每层头数目不断地被优化降低。下图为它和其他几种瘦身算法的对比。DeiT-S 上,ViT-Slim的搜索过程只需要约43个 GPU 小时,并且搜索的结构灵活,不同模块的维度多样。根据运行设备的accuracy-FLOPs权衡的要求采用预算阈值,并执行重新训练过程以获得最终模型。大量实验表明,ViT-Slim可以在各种视觉转换器上压缩高达 40% 的参数和 40% 的 FLOP,同时在 ImageNet 上将准确度提高约 0.6%。

早在2021年的Autoformer利用weight Entanglement训练超网,然后在预设置好的搜索空间进行采样到子网,紧接着更新子网的参数,冻结其余参数不使其更新,最终通过进化算法得到参数量最小且精度最高模型。

下图为AutoFormer 超网络的整体架构。请注意每个层和深度中的Transformer块都是动态的。实线部分表示它们是被选择的,而虚线部分则不是。下图右为AutoFormer中详细的Transformer块。在层中搜索最佳嵌入维度、头数、MLP比率、Q-K-V维度的最佳块。

不同子网的梯度在ViT中与超网的梯度冲突比CNN更严重,这导致训练过早饱和,收敛性较差。为了缓解这个问题,2022年的NASViT提出了一系列技术,包括梯度投影算法、可切换层缩放设计以及简化的数据增强和正则化训练配方。所提出的技术显著改善了所有子网的收敛性和性能。

上图为NASViT的整体架构,下图为NASViT的搜索空间。

另外NASViT的注意力机制块如下:

此外,还有TF-TAS研究了免训练架构搜索方法。UniNet引入了上下文感知下采样模块,改善了Transformer和MLP的适配能力。

注意力机制优化

这个领域的优化专注于通过引入自适应注意力、学习稀疏注意力模式和动态调整注意力机制来降低计算复杂性。Fayyaz等通过对重要标记进行评分和自适应采样来实现自适应注意力。PatchMerger提取区域Token之间的全局信息,并通过自注意力与区域Token之间的信息交换局部自注意力。


如上图所示DynamicViT提出的预测模块(中间部分)插入到Transformer 块之间,以根据前一层产生的特征选择性地修剪掉信息量较少的Token。

上图通过可视化展示了修剪过程,从直观上还是比较好理解。通过这样的算法,后续层中处理的Token会大幅减少。


此外还有一种高效的视觉Transformer骨干网络SepViT,它借鉴深度可分离卷积的思想,通过深度可分离自我注意力实现局部-全局信息交互。

SepViT利用窗口令牌嵌入和分组自注意力,以较低的计算成本实现窗口间的注意力关系,提升远程视觉交互。实验表明,SepViT在性能与延迟之间实现了出色的权衡,相较于同类模型,在ImageNet分类上提升了精度并降低了延迟,同时在语义分割、目标检测和实例分割等任务中也表现优异。

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

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

相关文章

VMware共享文件夹设置

1、VMWare设置 1&#xff09;虚拟机 -> 设置 2&#xff09;点击 选项 -> 共享文件夹 -> 设置为 总是启用 -> 并 添加一个本地共享文件夹。设置完毕&#xff0c;点击 确定。 2、创建共享文件夹、挂载 1&#xff09;打开终端&#xff0c;在mnt/目录下创建一个名为…

原Veritas(华睿泰)中国研发中心敏捷教练、项目集经理郑鹤琳受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 原Veritas&#xff08;华睿泰中国&#xff09;中国研发中心敏捷教练、项目集经理郑鹤琳女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“敏捷项目管理-知行合一”。大会将于6月29-30日在北京举办&#xff0c;敬请关注…

So:万法皆空,唯因果不空

在《long long ago》中&#xff0c;我们说到long一词中藏着因果关系&#xff0c;long通汉字“以”字。long是生育过程中&#xff0c;婴儿已经呱呱坠地&#xff0c;但尚未剪掉脐带的形象。 下面我们来解剖另一个英语单词&#xff1a;so。 一、so&#xff1a;万法皆空&#xff…

前端vue-cli相关知识与搭建过程(项目创建,组件路由)very 详细

一.关于vue-cli 1.什么是vue Vue (读音 /vju ː /&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。 Vue.js 是前端的主流框架之一&#xff0c;和 Angular.js…

【大数据】Hadoop学习笔记

基本概念 Hadoop组成 HDFS: Hadoop分布式文件存储系统, 在Haddop中处于底层/核心地位YARN: 分布式通用的集群资源管理系统和任务调度平台, 支撑各种计算引擎执行MapReduce: 第一代分布式计算引擎, 但因为部分原因, 许多企业都不直接使用MapReduce, 但许多底层软件仍然在使用Ma…

v-jstools插件 - 自动补环境

一、为啥要补环境&#xff1f; 我们每次逆向扣完代码存放在 nodejs 上是运行不出结果的&#xff0c;因为缺少浏览器环境特有的一些 window/document/navigator/localstorage 等参数&#xff0c;所以我们需要把这些缺少的浏览器环境补上&#xff0c;让这份js代码在本地nodejs环…

无人机巡检小羊仿真

详细视频地址 仿真效果 可视化三维仿真 gazebo物理仿真 px4 飞控仿真 仿qgc简易地面站 详细视频地址

每日一题——Python代码实现PAT甲级1059 Prime Factors(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码点评 时间复杂度分析 空间复杂度分析 改进建议 我要更强 时间复杂度…

渗透测试基础(六) MS10-046漏洞攻击

1. 漏洞介绍 1.1 漏洞介绍 Microsoft Windows快捷方式LNK文件自动执行代码漏洞。Windows支持使用快捷方式或LNK文件。LNK文件是指向本地文件的引用,点击LNK文件与点击快捷方式所制定的目标具有相同效果。Windows没有正确的处理LNK文件,特制的LNK文件可能导致Windows自动执行…

【Day02】0基础微信小程序入门-学习笔记

文章目录 模板与配置学习目标WXML 模板语法1.数据绑定&#xff08;类似于 Vue2 &#xff09;2. 事件绑定3. 条件渲染4.列表渲染 WXSS模板样式1. rpx尺寸单位2.样式导入3. 全局样式和局部样式 全局配置1. window2. tabBar 页面配置网络数据请求总结 持续更新~ 模板与配置 学习目…

数据挖掘常见算法(聚类)

划分方法 K-均值算法(K-means算法) 方法: 首先选择K个随机的点,称为聚类中心.对于数据集中的,每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类.计算每一个组的平均值,将改组所关联的中心点移动到平均值的位置重复2~…

6. Revit API UI: PreviewControl(预览控件)

6. Revit API UI: PreviewControl&#xff08;预览&#xff09; PreviewControl 有时我们需要一个预览功能&#xff0c;而Revit也提供了一个PreviewControl类来帮助我们实现这个功能。 从类的继承关系来看&#xff0c;PreviewControl就是一个用户自定义控件&#xff0c;它就…

板凳--------第20章-信号:基本概念1

tlpi_hdr.h头文件使用及设置 liao__ran 于 2020-09-29 15:12:01 发布 阅读量1.6k 收藏 5 点赞数 1 分类专栏&#xff1a; linux系统编程手册 版权 linux系统编程手册 专栏收录该内容 7 篇文章 1 订阅 订阅专栏 使用的头文件&#xff0c;主要如下&#xff1a; ename.c.inc erro…

【文字+视频教程】在手机上用文生软件平台CodeFlying开发一个整蛊版《Flappy Bird》

前言&#xff1a; 在之前的文章中我们介绍了国内首家文生软件平台码上飞CodeFlying&#xff0c;并且教给了大家如何用它来开发复杂的项目信息管理系统以及恶搞拼图小游戏等。今天就继续给大家带来一起用码上飞开发整蛊版《Flappy Bird》小游戏的教程。 老规矩&#xff0c;咱还…

024.两两交换链表中的节点,用递归和 while 循环

题意 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 难度 中等 示例 输入&#xff1a;head [1,2,3,4] 输出&#xff1a;[…

嵌入式系统中C/C++有仓颉语言对比分析

大家好,今天给大家分享一下,如何使用仓颉,以及优势在哪里? 在 2024 年 6 月 21 日的华为开发者大会上,华为不仅官宣了下一代鸿蒙操作系统 HarmonyOS NEXT,而且还正式推出了自研的编程语言 仓颉 ,可谓是赚足了面子,遥遥领先! 值得一提的是,HarmonyOS NEXT 是华为从内到…

数据库管理系统(DBMS)

一.数据库管理系统 1.简介 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件&#xff0c;用于建立、使用和维护数据库&#xff0c;简称DBMS。它对数据库进行统一的管理和控制&#xff0c;以保证数据库的安全性和完整性。用户通过DBMS访问数据库中…

无线麦克风哪个品牌音质最好,一文告诉你无线领夹麦克风怎么挑选

随着直播带货和个人视频日志&#xff08;Vlog&#xff09;文化的兴起&#xff0c;以及自媒体内容创作的蓬勃发展&#xff0c;我们见证了麦克风行业的迅猛发展。在这一浪潮中&#xff0c;无线领夹麦克风以其无与伦比的便携性和操作效率&#xff0c;迅速赢得了广大视频制作者的喜…

WPF——属性

一、属性 类最初只有字段与函数&#xff0c;字段为一个变量&#xff0c;访问权限可以是private&#xff0c;protected&#xff0c;public。而将字段设为private&#xff0c;不方便外界对类数据的操作&#xff0c;但是将字段设为public又怕外界对数据进行非法操作&#xff0c;于…

【ChatBI】超轻量Python库Vanna快速上手,对接oneapi

oneapi 准备 首先确保你有oneapi &#xff0c;然后申请 kimi的api 需要去Moonshot AI - 开放平台 然后添加一个api key 然后打开oneapi的渠道界面&#xff0c;添加kimi。 然后点击 测试&#xff0c; 如果能生成响应时间&#xff0c;就是配置正确。 然后创建令牌 http:…