学习记录——TransNormerLLM、SRFormer、PLG-ViT、EfficientViT

news2024/11/15 11:02:19

关于Transformer

  • Transformer 存在局限。首要的一点,它们有着对于序列长度的二次时间复杂度,这会限制它们的可扩展性并拖累训练和推理阶段的计算资源和时间效率。
  • 基于 Transformer的模型在提高窗口大小以优化性能的同时,也带来了相应的计算负担。
  • 视觉Transformer(ViT)作为卷积神经网络(CNNs)的一种可行替代方案的出现,源于多头自注意力机制的成功应用。与标准卷积相比,多头自注意力机制提供了全局感受野。虽然ViT在各种视觉识别任务中展示了潜力,但自注意力的计算复杂性在将这些方法应用到资源受限的应用中带来了挑战。
  • 现有transformer模型的速度通常受到内存低效操作的限制,特别是MHSA中的张量整形和逐元函数。研究者发现注意力图在头部之间具有高度相似性,导致计算冗余。

Scaling TransNormer to 175 Billion Parametes

线性注意力的Transformer大模型
2023

TransNormerLLM 是首个基于线性注意力的 LLM。
  其中值得格外注意的一项改进是将 TransNormer 的 DiagAttention 替换成线性注意力,从而可提升全局的互动性能。研究者还引入了带指数衰减的 LRPE 来解决 dilution 问题。此外,研究者还**引入了 Lightning Attention(闪电注意力)**这种全新技术,并表示其可以将线性注意力在训练时的速度提升两倍,并且其还能通过感知 IO 将内存用量减少 4 倍。不仅如此,他们还简化了 GLU 和归一化方法,而后者将整体的速度提升了 20%。他们还提出了一种稳健的推理算法,可以在不同的序列长度下保证数值稳定和恒定的推理速度,由此能提升模型在训练和推理阶段的效率。

  • 改进一:位置编码
      TransNormer 中的较低层使用了 DiagAttention 来避免 dilution 问题。但是,这会导致 token 之间缺乏全局互动能力。为了解决这个问题,研究者为 TransNormerLLM 使用了带指数衰减的 LRPE(线性化相对位置编码),从而可在较低层保留完整的注意力。研究者把这种方法称为 LRPE-d。
  • 改进二:门控机制
      门控可以增强模型的性能并使训练过程平滑。研究者为 TransNormerLLM 使用了来自论文《Transformer quality in linear time》的 Flash 方法并在 token 混合中使用了门控式线性注意力(GLA)的结构。
      为了进一步提升模型速度,他们还提出了 Simple GLU(SGLU),其去除了原始 GLU 结构的激活函数,因为门本身就能引入非线性。
  • 改进三:张量归一化
      研究者使用了 TransNormer 中引入的 NormAttention。在 TransNormerLLM 中,他们使用一种新的简单归一化函数 SimpleRMSNorm(简写为 SRMSNorm)替换了 RMSNorm。

整体结构

在这里插入图片描述
  在该结构中,输入 X 的更新通过两个连续步骤完成:首先,其通过使用了 SRMSNorm 归一化的门控式线性注意力(GLA)模块。然后,再次通过使用了 SRMSNorm 归一化的简单门控式线性单元(SGLU)模块。这种整体架构有助于提升模型的性能表现。下方给出了这个整体流程的伪代码:
在这里插入图片描述

闪电注意力

  为了加快注意力计算速度,研究者引入了闪电注意力(Lightning Attention)算法,这能让新提出的线性注意力更适合 IO(输入和输出)处理。

SRFormer: Permuted Self-Attention for Single Image Super-Resolution

ICCV 2023

  提出了一种新的置换自注意力(PSA)用于图像超分辨率任务,可以在保持计算成本较低的同时,处理大窗口自注意力,并基于PSA构建了一个新的超分辨率网络,SRFormer,在各项基准测试中取得了最先进的性能。
  SR 是计算机视觉中的一个重要任务,目的是从低分辨率的图像恢复出高质量的版本。早期,以 CNNs 为主的方法主导了 SR 领域,通过利用残差学习,密集连接或者通道注意力来构建网络结构。然而,近期的研究显示,基于Transformer的模型在 SR 任务上展现出了更好的表现,其中一个典型的例子就是SwinIR,它采用了Swin Transformer的技术,在多个基准测试中大大提升了SR模型的表现。
  置换自注意力:PSA 的设计目标是在大窗口(例如24x24)内建立有效的两两关系,而不增加额外的计算负担。为此,作者在键和值矩阵上减少了通道的维度(压缩),并采用了一种置换操作,将部分空间信息传递到通道维度(置换)这种方法即使在通道减少的情况下,也不会损失空间信息,并且每个注意力头可以保持适当数量的通道以产生表达力强的注意力图。

SRFormer 的架构

在这里插入图片描述

  • 像素嵌入层:将低分辨率的RGB图像转换为特征嵌入,这些嵌入会被送入特征编码器进行处理。
  • 特征编码器:包含了 N 个排列自注意力组,每个组由 M 个 PAB 和一个 3×3 卷积层构成。
  • 高分辨率图像重建层:最后,特征编码器的输出和特征嵌入的残差,会被送入高分辨率图像重建层,从而得到高分辨率图像。
    此处,排列自注意块(PAB)是整个模型的核心,它包含了置换注意力层(PSA)和卷积前馈网络(ConvFFN)。这里我们可以简单看下 PSA 和常规的 MHSA 的区别:
    在这里插入图片描述

  PSA 层的主要思想是,它将输入特征图划分成 N 个非重叠的方块窗口,然后通过三个线性层得到 Q,K,V 三组值。这里的 保持与输入 同样的通道维度,而 和 的通道维度被压缩。随后,作者提出了一种将空间信息排列到通道维度的方法,使得每个注意力头能生成更具表现力的注意力图。最后,利用 ,, 来进行自注意力操作。
  ConvFFN 则是一个辅助部分,它在自注意之后添加一个 3x3 卷积层以恢复高频信息。 作者发现,这样的操作几乎不增加计算量,但能够补偿自注意操作过程中造成的高频信息的损失。

Lightweight Vision Transformer with Bidirectional Interaction

Light-Weight Vision Transformer with Parallel Local and Global Self-Attention

PLG-ViT 同时具有并行局部和全局自注意力的轻量化视觉Transformer

  本文提出了一种轻量级的PLG-ViT(Light-Weight PLG-ViT),它是一种计算效率高但功能强大的特征提取器。
  创新包括在Transformer阶段之间进行高效降采样操作以及Transformer层内部的新型、更强大的前向网络。

模型设计

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
  在图上中,展示了原始PLG-ViT的CCF-FFN。在原始FFN的开头,特征按照默认值
α进行了深度增加,其中α默认为4。然后是一个深度可分离的3×3层和一个全连接层(FC),恢复了原始的深度。
  本文的CCF-FFN+保留了原始FFN的一般结构,并将来自初始逐点卷积的特征馈送到后续的深度可分离卷积中。然而,这些特征还与从深度可分离的3×3卷积中得到的特征进行了拼接。这种融合可以在减小α值(从4减小到3)的同时实现更丰富的特征,从而减少参数数量。

此外,本文在深度可分离卷积之后利用ConvNeXt-v2的全局响应归一化(GRN)来提高模型的特征表示能力,减少训练的计算成本。

  本文的最后一次重新设计针对的是PLG-SA层全局分支中的 Patch 采样。原始的采样通过添加自适应最大池化和平均池化来获得一个全局窗口,为后续的全局自注意力提供了固定数量的 Token。

EfficientViT: Memory Efficient Vision Transformer with Cascaded Group Attention

CVPR 2023

  研究者探讨了如何更快地使用Vision transformers,试图找到设计高效transformer架构的原则。基于主流的Vision transformers DeiT和Swin,系统地分析了影响模型推理速度的三个主要因素,包括内存访问、计算冗余和参数使用。特别是,发现transformer模型的速度通常是内存限制的。

  基于这些分析和发现,研究者提出了一个新的存储器高效transformer模型家族,命名为EfficientViT。具体来说,设计了一个带有三明治布局的新块来构建模型。三明治布局块在FFN层之间应用单个存储器绑定的MHSA层。它减少了MHSA中内存绑定操作造成的时间成本,并应用了更多的FFN层来允许不同信道之间的通信,这更具内存效率。然后,提出了一种新的级联群注意力(CGA)模块 来提高计算效率。其核心思想是增强输入注意力头部的特征的多样性。与之前对所有头部使用相同特征的自我注意不同,CGA为每个头部提供不同的输入分割,并将输出特征级联到头部之间。该模块不仅减少了多头关注中的计算冗余,而且通过增加网络深度来提高模型容量。
在这里插入图片描述

End

以上仅作个人学习记录使用

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

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

相关文章

刷完这个笔记,15K真的不能再少了....

大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…

LVDS端口ESD静电放电保护电路图(经典)

Low Voltage Differential Signaling(LVDS)是一种低压差分信号技术接口,是美国NS公司为克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。LVDS端口电路包括两部分:驱动板侧的…

day50-springboot+ajax分页

分页依赖&#xff1a; <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency> 配置&#xff1a; …

spring — Spring Security 5.7与6.0差异性对比

1. spring security Spring Security 是一个提供身份验证、授权和针对常见攻击保护的框架。 凭借对保护命令式和反应式应用程序的一流支持&#xff0c;它成为基于Spring的标准安全框架。 Spring Security 在最近几个版本中配置的写法都有一些变化&#xff0c;很多常见的方法都…

Unity通过代码切换材质

效果展示 代码 using System.Collections; using System.Collections.Generic; using UnityEngine;public class MaterialSwitcher : MonoBehaviour {public Material newMaterial; // 新材质private Material oldMaterial; // 旧材质private Renderer renderer; // 渲染器组件…

C# Onnx Paddle模型 OCR识别服务

效果 项目 可运行程序exe下载 Demo&#xff08;完整源码&#xff09;下载

中小学分班查询系统如何制作?这个方法值得借鉴

暑假即将结束&#xff0c;新学年即将开始&#xff0c;学校面临着一个重要的任务&#xff0c;那就是学生的分班问题。这个问题涉及到新生入学的分班&#xff0c;以及低年级学生升入高年级时的分班。对于负责分班的老师们来说&#xff0c;这无疑增加了不少工作量和挑战。 在开学…

弹性布局,网格布局,JavaScript

弹性盒子布局&#xff08;Flexbox Layout&#xff09;&#xff1a;通过display: flex;设置容器为弹性盒子&#xff0c;可以实现更复杂的自适应和响应式布局。 网格布局&#xff08;Grid Layout&#xff09;&#xff1a;通过display: grid;设置容器为网格布局&#xff0c;可以将…

编译运行LeGO-LOAM算法(跑.bag包)

ubuntu18.04 ros melodic 官方链接&#xff1a;https://github.com/RobustFieldAutonomyLab/LeGO-LOAM 文章目录 1、下载并编译 gtsam2、下载并编译 LeGO-LOAM3、测试运行 1、下载并编译 gtsam 我下载的是gtsam-4.0.2&#xff0c;官网用的gtsam-4.0.0&#xff0c;因为我用的实…

关于个人微信API接口的开发

个人微信开发API接口可拓展功能说明 1、个人微信多账号管理、聚合聊天、多个微信号同时登陆、多个微信号集中在一个窗口进行聊天&#xff0c;实现一人多号同时沟通快速提升沟通效率&#xff0c;提升微信营销效率。 2、客服灵活分配&#xff1a;客服主管可自由分配微信号给指定…

如何使用njsscan识别Node.JS应用中的不安全代码

关于njsscan njsscan是一款功能强大的静态应用程序测试&#xff08;SAST&#xff09;工具&#xff0c;可以帮助广大研究人员找出Node.JS应用程序中不安全的代码模式。该工具使用了 libsast的简单模式匹配器和语法感知语义代码模式搜索工具 semgrep实现其功能。 工具安装 当前…

2023年华数杯数学建模C题思路代码分析 - 母亲身心健康对婴儿成长的影响

# 1 赛题 C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、 压力等&#xff0c;可能会对婴儿的认知、情…

华为测试开发秋招三面,两轮技术综合面试+HR,险过!

流程上是三轮面试&#xff0c;两轮的技术综合面试HR面试&#xff0c;先面前两轮&#xff0c;前两轮过了&#xff0c;再联系面试者HR面试&#xff0c;面试的岗位是测试岗&#xff0c;两轮面试在1个半小时左右。 面试时&#xff0c;对自己要有自信&#xff0c;对自己的简历也要吃…

flutter:Future、Stream、RxDart

Future 在Flutter中&#xff0c;Future是Dart语言中的一个类&#xff0c;用于表示异步操作的结果。与Future相关的的重要关键字包括async和await。 async&#xff1a;这个关键字用于在方法或函数声明前添加&#xff0c;以指示该方法为异步方法。在异步方法中&#xff0c;执行…

zsh中安装ros-<ros2-distro>-turtlebot3*失败 || 以humble为例

在zsh中尝试使用 sudo apt install ros-<ros2-distro>-turtlebot3* 安装turtlebot3相关仿真包失败&#xff0c;报错E: 无法定位软件包。 但是在bash中尝试使用同样的命令却可以安装。 原因是zsh中如果要使用通配符&#xff0c;那么一定要放在字符串里&#xff0c;以上…

冒泡排序【Java算法】

文章目录 1. 概念2. 思路3. 代码实现 1. 概念 比较前后相邻的两个数据&#xff0c;如果前面数据大于后面的数据&#xff0c;就将这两个数据互换。这样对数组的第0个数据到第 N - 1 个数据进行一次遍历后&#xff0c;最大的一个数据就 “沉” 到数组的第 N - 1 个位置。 N N - …

UI自动化测试之日志记录和单元测试

设置日志 很多公司要求自动化测试需要有日志记录。 记录程序运行时的状态和结果&#xff0c;方便排查问题。 实现步骤&#xff1a; ①在项目中创建config目录&#xff08;不用创建包&#xff09;&#xff0c;复制粘贴log.conf文件 ②在项目中创建logs目录&#xff0c;用于…

第三方材料检测实验室LIMS系统源码 lims源码

实验室LIMS系统采用国际规范的业务管理流程和严格的质量控制体系&#xff0c;对每个检测流程节点采用 “人、机、料、法、环、测”进行质量控制&#xff0c;可记录&#xff0c;可追溯。强大的数据查询和统计分析能力&#xff0c;提高工作效率&#xff1b;自动化地采集实验室原始…

轻量化YOLOv5改进 | 结合repghost结构冲参数化网络,实现轻量化和加速推理,

RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization 论文总结本文改进repghost 核心代码测试参数量和计算量🔥🔥🔥 “引入RepGhostNet以加速CNN网络推理” “网络宽度的自定义调整:无缝嵌入YOLOv5” “通过结构重参数化优化网络性能” “实现高效和…

nexus迁移

数据和配置迁移 打包两个目录&#xff0c;配置nexus-2.13.0-01和数据sonatype-work 数据量大可以split分割之后迁移再合并 大概看下文件目录 [roottest nexus]# tree -L 3 . ├── nexus-2.13.0-01 │ ├── bin │ │ ├── jsw │ │ ├── nexus │ │ …