Mamba解读(FlashAttention,SSM,LSSL,S4,S5,Mamba)

  • Sequence model
  • Scale and Efficiency
    • FlashAttention
      • Motivation
      • Method
      • FlashDecoding
    • Mamba
      • State-Space Models(SSM)
      • Selective State Space Models(Mamba)

Sequence model

seq2seq任务将 输入序列 x ( t ) x(t) x(t) 映射为 输出序列 y ( t ) y(t) y(t),其中序列可以是离散的(如文本),也可以是连续的(如音频)。在大多数情况下我们使用离散的(连续序列可以经过采样得到离散序列)
在这里插入图片描述

常见序列建模任务seq2seq架构:

RNN:无限的context window,输入seq长度为N,内存占用 d ( d < < N ) d(d<<N) dd<<N

  • Training: O ( N ) O(N) O(N),不可并行训练。
  • Inference:对每个增加的token的推理时间恒定。
    在这里插入图片描述

在这里插入图片描述

Transmformer:有限的context window,输入seq长度为N,内存占用 N 2 N^2 N2

  • Training: O ( N 2 ) O(N^2) O(N2),可并行训练,使用self-attention。
  • Inference: O ( N ) O(N) O(N),对每个增加的token的推理时间会平方增加(如增加第N个token,需要将其和前N-1个token进行计算)。

在这里插入图片描述

因此我们希望构造一个Model可以实现:

  • 像Transformer一样可并行训练,又可以像RNN一样线性缩放到长序列。
  • 同时在推理时,像RNN一样,对每个增加的token,增加的推理时间恒定。

这就引出了State Space Model (SSM)!

Scale and Efficiency

Model的Scale Law在最近几年展现出巨大的涌现能力,随之而来的挑战就是Efficiency效率问题。两个解决方案是,FlashAttentionMamba

在这里插入图片描述

FlashAttention

Motivation

Transformer由Endoer组成(Attention+MLP),根据Attention的原理,Attention scalessequence length N N N的平方 O ( N 2 ) O(N^2) O(N2),加倍sequence length意味着4倍的推理时间和内存占用。
在这里插入图片描述

对于Modeling long sequence contextGPU内存读写是制约Attention计算效率的瓶颈,FlashAttention可以减少GPU内存读写,同时支持更长的sequence tokens交互:可以实现更快、更长上下文的Transformer。现在已经广泛应用于各大深度学习库,如Torch、Hggingface等。
在这里插入图片描述

在FlashAttention之前,已经有很多算法,尝试解决Modeling long sequence问题:核心思路都是提出近似N^2的Attention操作,损失一些Attention的质量,来提升计算速度。但工业界训练LLM时,并不认可这些花哨的近似方法,原因如下:(1)这些理论上的加速Attention的方法使得模型质量更差;(2)这些方法,只是在理论上减少了浮点数运算,但不减少GPU的IO,真正的瓶颈是Attention中large matrix的IO速度,并不会真正的加速计算和节省GPU内存!
在这里插入图片描述

Method

为了解决GPU内存读写引发的Attention效率问题,我们必须了解硬件:(下图是GPU的成千上万个SM计算单元中的一个)

在这里插入图片描述

  • HBM是高带宽存储器,即GPU的内存(GPU Memory)。数据处理速度慢,但存储空间大。
  • Compute是GPU的计算组件,用于执行矩阵乘法/加法等。
  • SRAM是GPU的Cache,用于HBMCompute之间的数据缓存。数据处理速度快,但存储空间小。

GPU工作时:①data传入HBM,②data从HBM传入SRAM和Compute进行运算,③result再写回HBM。问题在于HBMSRAM的传输速度很慢

在这里插入图片描述

FlashAttention的核心思想减少GPU中HBM和SRAM之间的内存读写(Tiling 和 Recomputation)

  • Softmax Tiling:将Q K V分块,从HBM送入SRAM计算Attention(使用ReScaling技巧得到Local分块计算的正确Attention结果,否则Softmax除的那个系数将是错误的)。
    在这里插入图片描述

  • Backward Recomputation:backward计算梯度时需要forward时Attention输出的计算结果。但我们forward后不存储attn_matrix,只存储softmax除的系数,而是在backward时重新计算attn_matrix。因为重新计算is cheap,GPU读写is expensive! 因此即使计算量增加了,但总体速度还是提升了。
    在这里插入图片描述

FlashAttention-2FlashAttention-1 的基础上进行了并行优化,将speed和sequence length都提升了2倍。

在这里插入图片描述

FlashDecoding

当我们做Long squence的Attention时,仅仅用FlashAttention分块计算,KV Cache可能依然非常的长(包含history context),而Q非常的短(只有几个tokens)。因此我们使用FlashDecoding按照seq_len维度进行划分KV,和FlashAttention一样分块计算,只是分的块更加细粒度了,这样可以进一步提升GPU的并行处理能力。
在这里插入图片描述

Mamba

虽然FlashAttention可以优化Transformer的速度和内存占用,但Transformer本质仍然是 O ( N 2 ) O(N^2) O(N2)的模型(N是sequence length),FlashAttention没有从本质降低计算量,在推理时依然需要保持KV Cache,这是令人头疼的。因此我们希望从本质出发,去寻找一个更加优秀的结构,去替代Attention:

在这里插入图片描述

  • RNN:可以处理无限的sequence lengthsequence length就是timestep大小),训练慢(需要沿着sequence length逐个计算,每个token计算都进行一次backword),推理快(每个timestep的隐藏状态可以重用,可并行)。

在这里插入图片描述
在这里插入图片描述

相较于Attention,RNN的优点是在推理生成每个token输出时,只需要考虑之前的隐藏状态和当前的输入。 它可以防止重新计算所有先前的隐藏状态,而这正是 Attention 所做的。缺点:快速遗忘。如最后一个隐藏状态在生成名称“Maarten”时,可能不再包含有关单词“Hello”的信息。 随着时间的推移,RNN 往往会忘记信息,因为它们只考虑先前的一个状态。
在这里插入图片描述

  • Attention:不能处理无限长度(存储/时间和sequence length成平方关系 O ( N 2 ) O(N^2) O(N2)),训练快(只需要一次矩阵乘法,可并行),推理慢(需要计算每个注意力权重)。

在这里插入图片描述
缺点: 当生成下一个标记时,即使我们已经生成了一些前面的标记,我们也需要重新计算整个序列的Attention。
在这里插入图片描述

  • SSM:可以处理无限长度( O ( N ) O(N) O(N)),训练快,推理快。由state equation状态方程output equation输出方程组成。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

State-Space Models(SSM)

在这里插入图片描述

state equation状态方程:矩阵A和矩阵B分别控制着 当前状态 h ( t ) h(t) h(t) 和 输入 x ( t ) x(t) x(t) 如何影响状态的变化到 h ′ ( t ) h'(t) h(t)
在这里插入图片描述
output equation输出方程:描述了状态 h ( t ) h(t) h(t) 如何转换为输出 y ( t ) y(t) y(t)的一部分 (通过矩阵C),以及输入 x ( t ) x(t) x(t)如何影响输出 y ( t ) y(t) y(t)(通过矩阵D)
在这里插入图片描述

上述的A,B,C,D都是可学习的参数

将上述的两个方程整合在一起,得到了如下的结构:
在这里插入图片描述
让我们逐步了解一般技术,以了解这些矩阵如何影响学习过程:

step1:假设我们有一些输入信号 x(t),该信号首先乘以矩阵 B,该矩阵描述了输入如何影响系统。
在这里插入图片描述
step2:更新后的状态(类似于神经网络的隐藏状态)是一个包含环境核心“知识”的潜在空间。 我们将状态与矩阵 A 相乘,矩阵 A 描述了所有内部状态如何连接,因为它们代表了系统的底层动态。(您可能已经注意到,矩阵 A 在创建状态表示之前应用,并在状态表示更新后更新)
在这里插入图片描述
step3:然后,我们使用矩阵 C 来描述如何将状态转换为输出。
在这里插入图片描述
step4:最后,我们可以利用矩阵 D 提供从输入到输出的直接信号。 这通常也称为跳跃连接。
在这里插入图片描述这两个方程共同旨在根据观测数据预测系统的状态。 由于输入预计是连续的,因此 SSM 的主要表示是连续时间表示。

在这里插入图片描述

Mamba 基础讲解【SSM,LSSL,S4,S5,Mamba】
Mamba复现与代码解读

Selective State Space Models(Mamba)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
S4将整个history_context总结为一个fixed_context,而Mamba提出的Selective机制,依然存储整个history_context,但选择将部分history_context总结为一个fixed_context
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Web3 革命:揭示区块链技术的全新应用

随着数字化时代的不断发展&#xff0c;区块链技术作为一项颠覆性的创新正在改变着我们的世界。而在这一技术的进步中&#xff0c;Web3正逐渐崭露头角&#xff0c;为区块链技术的应用带来了全新的可能性。本文将探讨Web3革命所揭示的区块链技术全新应用&#xff0c;并展望其未来…

Linux网络编程一(协议、TCP协议、UDP、socket编程、TCP服务器端及客户端)

文章目录 协议1、分层模型结构2、网络应用程序设计模式3、ARP协议4、IP协议5、UDP协议6、TCP协议 Socket编程1、网络套接字(socket)2、网络字节序3、IP地址转换4、一系列函数5、TCP通信流程分析 第二次更新&#xff0c;自己再重新梳理一遍… 协议 协议&#xff1a;指一组规则&…

图像处理与视觉感知---期末复习重点(6)

文章目录 一、图像分割二、间断检测2.1 概述2.2 点检测2.3 线检测2.4 边缘检测 三、边缘连接3.1 概述3.2 Hough变换3.3 例子3.4 Hough变换的具体步骤3.5 Hough变换的法线表示形式3.6 Hough变换的扩展 四、阈值处理4.1 概述4.2 计算基本全局阈值算法4.3 自适应阈值 五、基于区域…

视频汇聚/安防监控/视频存储EasyCVR平台EasyPlayer播放器更新:新增【性能面板】

视频汇聚/安防监控/视频存储平台EasyCVR基于云边端架构&#xff0c;可以在复杂的网络环境中快速、灵活部署&#xff0c;平台视频能力丰富&#xff0c;可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云…

什么是js、ajax

1.什么是js JavaScript&#xff08;简称 JS&#xff09;是一种轻量级、解释型的编程语言&#xff0c;通常用于在 Web 页面上添加交互性、动态性和动画效果。它是世界上最流行的编程语言之一&#xff0c;也是唯一一种可以在 Web 浏览器中运行的编程语言。 2.什么是AJAX ajax…

Spring Boot接收从前端传过来的数据常用方式以及处理的技巧

一、params 传参 参数是会拼接到url后面的请求 场景规范:url后面的key值<=3个参数的时候,使用params 传参 支持的请求方式:get(正规的是get方式)、post 都行 例如: http://localhost:8080/simpleParam?name=Tom&age=10 在postman里面的体现为 后端接收的接口…

Set a Light 3D Studio:探索光影艺术的全新维度mac/win中文版

Set a Light 3D Studio 是一款领先的三维建模和渲染软件&#xff0c;它将设计师、艺术家和摄影师的创意想法转化为生动逼真的三维场景。这款软件以其强大的功能和直观的界面&#xff0c;成为行业内众多专业人士的首 选工具。 set.a.light 3D STUDIO中文版软件获取 在Set a Lig…

微信小程序-文字转语音(播放及暂停)

1、使用微信小程序的同声传译功能 小程序平台-设置-第三方设置-插件管理-新增同声传译插件 小程序app.json文件配置 "plugins": {"WechatSI": {"version": "0.3.5","provider": "wx069ba97219f66d99"}},小程序中…

FPGA高端项目:解码索尼IMX327 MIPI相机+图像缩放+视频拼接+HDMI输出,提供开发板+工程源码+技术支持

目录 1、前言免责声明 2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理自研HLS图像缩放详解Video Mixer…

【Redis】NoSQL之Redis的配置和优化

关系型数据库与非关系型数据库 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系型模型&#xff08;二维表&#xff09;的基础上&#xff1b;一般面向于记录&#xff1b; SQL语句(标准数据查询语句)就是一种基于关系型数据库的语言&#xff0c;用于执行…

ES8 学习 -- async 和 await / 对象方法扩展 / 字符串填充

文章目录 1. async 和 await1.1 基本语法1.2 使用示例1.3 案例练习 2. 对象方法扩展2.1 Object.values(obj)2.2 Object.entries(obj)2.3 Object.getOwnPropertyDescriptors(obj)使用示例 3. 字符串填充4. 函数参数的末尾加逗号 1. async 和 await async 函数&#xff0c;使得异…

【前端面试3+1】09 ES6新特性、Promise原理 、浏览器从输入到页面渲染的过程、【罗马数字转整数】

一、ES6新特性 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript的一个重要更新版本&#xff0c;引入了许多新特性和语法改进&#xff0c;下面详细说明一些主要的新特性&#xff1a; 1. let 和 const 声明&#xff1a; 使用let和const关键字可以声明块级作用域的变量&a…