【论文阅读】Mamba:选择状态空间模型的线性时间序列建模(一)

文章目录

  • Mamba:选择状态空间模型的线性时间序列建模
    • 介绍
    • 状态序列模型
    • 选择性状态空间模型
      • 动机:选择作为一种压缩手段
      • 用选择性提升SSM
    • 选择性SSM的高效实现
      • 先前模型的动机
      • 选择扫描总览:硬件感知状态扩展

Mamba论文

Mamba:选择状态空间模型的线性时间序列建模

摘要:结构化状态空间模型表现得不如注意力,我们认为这些模型的缺陷是缺乏能力去实现基于内容的推理,并且作了一些改进。首先,让SSM参数是输入的函数来解决它们处理离散模态的不足,使模型取决于当前token沿着长度维度选择性地传播或者遗忘信息。第二,尽管这些改变阻止了使用高效地卷积,我们在循环模式设计了一种硬件感知的并行算法。我们将这些选择性SSM集合到一个简化的端到端神经网络结构没有注意力甚至是MLP(Mamba)。Mamba可以快速推断(5倍于transformer)和序列长度的线性缩放。

介绍

最近,结构化状态序列模型成为一类有前景的序列建模结构。这些模型可以被解释成循环神经网络和卷积神经网络的结合,从经典状态空间模型中获得启发。这类模型可以被高效计算无论是卷积还是递归形式。但在建模离散和信息密集的模态如文本时没有那么有效。

我们提出一类新的选择性状态空间模型。

选择机制

首先,我们得出先前模型的一个关键不足:以依赖输入的范式高效选择输入的能力。(即关注或者遗忘特定输入)。我们设计了一种简单的选择机制,通过基于输入来参数化SSM参数。无限地遗忘不相关信息或记忆相关信息。

硬件感知算法

实际上,所有前面的SSM模型都是时间和输入不变的以确保高效计算。我们通过硬件感知的算法解决这一点。循环计算模型,通过扫描而不是卷积,但并不实例化扩展的状态,以避免不同层级GPU存储间的IO。

结构

我们简化先前的序列模型结构通过结合先前SSM的设计和Tansformer的MLP块为单个块。

选择SSM,以及扩展Mamba结构,是一个完全的循环模型,有使它们在序列处理上作为通用基础模型的属性

(i) 高质量:选择性在密集模态例如语言和基因上带来更强的表现。

(ii)训练和推断快

(iii) 长文本

我们在经验上验证了Mamba作为通用序列FM backbone的潜力,在预训练和特定领域任务表现上。一些模态和任务的种类

  • 合成
  • 语音和基因
  • 语言建模
    在这里插入图片描述
    结构化SSM独立地映射输入 x x x的每个通道(例如D = 5)到输出 y y y通过一个更高维的隐式状态(例如N = 4)。先前的SSM避免实例化这个大的有效状态 ( D N , t i m e s   b a t c h   s i z e   B   a n d   s e q u e n c e   l e n g t h   L ) (DN, times \ batch\ size\ B \ and \ sequence\ length\ L) (DN,times batch size B and sequence length L)需要时间不变性的巧妙交替计算路径: ( Δ , A , B , C ) (\Delta, \textbf A, \textbf B, \textbf C) (Δ,A,B,C)参数在时间上是不变的。我们的选择机制添加了后输入依赖动态,也需要一个合适的硬件感知算法在GPU存储层级中的高级别实例化扩展状态。

状态序列模型

这一部分详见专栏其他文章,如Mamba状态空间模型背景,这里不再赘述

SSM 结构

SSM是独立的序列变换可以结合端到端神经网络结构(我们有时也叫SSM结构SSNN,像CNN对于线性卷积层,SSM层对于SSNN。)我们讨论一些最知名的SSM结构,很多同时作为我们的原始baseline。

  • 线性注意力是自注意力的一个估计,包含一个递归可以被看作是线性SSM的退化。
  • H3泛化了这个递归去使用S4,可以被看作两个门控连接中间夹一个SSM。H3也插入了标准的局部卷积,在主要SSM层前框架化维一个shift-SSM
  • Heyena使用H3相同的结构但是用一个MLP参数化全局卷积替代S4层。
  • RetNet在结构中添加了额外的门来使用更简单的SSM,允许一个可选的并行化计算路径,使用多头注意力的变种代替卷积。
  • RWKV是最近的设计用于语言建模的RNN,基于另一个线性注意力估计。它的主要"WKV"机制包含时不变递归,可以被看作两个SSM的调和

选择性状态空间模型

我们使用从合成任务而来的直觉驱动我们的选择机制,之后解释如何结合状态空间模型和这个机制。得出的时变SSM不能使用卷积,造成了如何高效计算它们的技术挑战。我们通过利用现代硬件存储层级的一个硬件感知算法克服这个问题。我们之后描述一个简单SSM结构没有注意力甚至MLP块。最后,我们讨论选择机制的额外属性。

动机:选择作为一种压缩手段

我们提出序列建模的一个基本问题是压缩内容到一个更小的状态。事实上,从这一观点我们可以看到流行的序列模型的权衡。例如,注意力是同时是有效和低效的,因为它显然一点也没有压缩内容,从自回归推断需要存储整个内容(例如KV缓存)可以看到这一事实,直接导致了线性时间推断和Transformers的二次方训练时间。换句话说,循环模型是高效的因为它们有有限状态,实现常数时间推断和线性时间训练。然而他们的有效性被这些状态压缩内容有多好而限制。

为了理解这一原则,我们注意两个合成任务的运行示例。

  • 选择复制任务通过打乱token的位置来记忆。它需要内容感知推断来记忆相近的tokens(上色的)过滤掉无关的(白色的)
  • 注意力机制是著名的机制假说解释LLM内容内学习能力,它需要内容感知推断来了解何时在合适上下文中产生正确输出

这些任务揭示了LTI模型的失效机制。从循环角度,他们固定的动态(例如 ( A ‾ , B ‾ ) (\overline{\textbf A}, \overline{\textbf B}) (A,B))不能让他们从他们的内容中选择合适的信息或者以输入依赖的范式影响序列传递的隐藏状态。从卷积角度上看,已知全局卷积可以解决原始的复制任务,因为它只需要时间感知,但对于选择性复制任务有困难,因为它缺少内容感知,更具体的,在输入到输出的空间是变化的不能被建模成一个固定的卷积核。

总而言之,序列模型效率和有效的权衡由他们压缩状态压缩得有多好定义:高效率得模型必须有较少得状态,而有效得模型必须由可以保存内容中所有必须信息的状态。反过来,我们提出一个搭建序列模型的基本法则是选择性:或者内容感知能力来关注于或过滤输入到序列状态。特别是,一个选择机制控制信息是如何在序列维度传播和交互的。

用选择性提升SSM

(左)标准版本的复制任务包含常数空间在输入输出元素间可以通过时不变模型如线性递归和全局卷积解决。(右上)选择复制任务在输入间有随机的空间需要时变模型集合他们的内容来选择性记住或者忽略输入。(右下)归纳头任务是联想回忆的一个例子,需要根据上下文检索答案,是LLM的一项关键能力。
在这里插入图片描述
在这里插入图片描述

算法一和算法而描述了我们使用的主要选择机制。主要的不同是让一些参数 Δ , B , C \Delta, \textbf B, \textbf C Δ,B,C是输入的函数,以及贯穿始终的张量形状变化。特别是,我们高亮这些参数现在有·一个长度维 L L L,意味着模型从时不变变成时变。(注意形状标注在第二部分有描述)这失去了卷积的等价性,对其效率有影响,在之后讨论。

我们特别选择 s B ( x ) = L i n e a r N ( x ) , s C ( x ) = L i n e a r N ( x ) , s Δ ( x ) = B r o a d c a s t D ( L i n e a r 1 ( x ) ) s_B(x) = Linear_N(x),s_C(x) = Linear_N(x),s_{\Delta}(x) = Broadcast_D(Linear_1(x)) sB(x)=LinearN(x),sC(x)=LinearN(x),sΔ(x)=BroadcastD(Linear1(x))

τ Δ = s o f t p l u s \tau_\Delta = softplus τΔ=softplus L i n e a r d Linear_d Lineard是一个参数映射到维度 d d d s Δ s_\Delta sΔ τ Δ \tau_\Delta τΔ的选择是由于和RNN门控机制的联系在3.5描述。

选择性SSM的高效实现

然而,如之前提到的SSM使用的核心缺陷是计算有效性,是为什么S4和所有衍生使用LTI(非选择性)模型,通常以全局卷积的形式。

先前模型的动机

我们先回顾一下我们方法克服前面方法限制的动机和总览。

  • 在高层次,循环模型例如SSM总是在表达性和速度间取得平衡,像是在3.1讨论的那样,有更大隐藏状态维度的模型应该更有效但更慢。因此我们想要最大化隐藏状态维度而不付出速度和存储代价。

  • 注意循环模式比卷积模式更灵活,因为后者是由前者扩展而来。然而,这可能需要计算和实例化 ( B , L , D , N ) (B,L,D,N) (B,L,D,N)的潜在状态 h h h,相比于 ( B , L , D ) (B,L,D) (B,L,D)的输入 x x x和输出 y y y N N N倍。因此更高效的卷积被引入,可以跳过状态计算并实例化一个卷积核

    ( B , L , D ) (B,L,D) (B,L,D)

  • 前面的LTI SSM利用对偶循环-卷积模式以一个因子 N ( ≈ 10 − 100 ) N(\approx10-100) N(10100)来提升有效状态,比传统RNN大得多,没有效率损失。

选择扫描总览:硬件感知状态扩展

选择机制设计被用来克服LTI模型的限制。在同时,我们需要回顾SSM计算问题。我们解决它用了三种经典技术:核融合,并行扫描和重计算。我们作了两个主要观察:

  • 原始的循环计算使用了 O ( B L D N ) F L O P s O(BLDN)FLOPs O(BLDN)FLOPs而卷积计算使用 O ( B L D l o g ( L ) ) O(BLDlog(L)) O(BLDlog(L))FLOPs,但是前者有更小的常数因子。因此对于长序列和不大的状态维度 N N N,循环模式实际用了更少的FLOPs。
  • 两个挑战是递归的序列性质和大存储使用量。为了解决后者,就像卷积模式一样,我们可以尝试不实际实现完整状态 h h h

最后,我们还必须避免保存中间状态,这对于反向传播是必要的。我们谨慎地应用经典的重新计算技术来降低内存需求:当输入从HBM加载到SRAM时,中间状态不会被存储,而是在后向通道中重新计算。因此,融合的选择性扫描层具有与FlashAttention优化Transformer实现相同的内存需求。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试入门

文章目录 一、入门1. 软件2. 软件基本组成3. 软件产生过程4. 软件测试5. 软件测试目的🏆 小结 二、测试主流技能1. 功能测试2. 自动化测试3. 接口测试4. 性能测试🏆 小结 三、测试分类1. 按测试阶段划分2. 按代码可见度划分🏆 小结 三、质量模…

数字人ai直播软件突破AI大模型技术,改变未来科技格局!

数字人AI直播软件在AI大模型技术上的突破,将不可避免地改变未来科技格局。这一突破让人们看到了AI技术的无限可能性,并为未来的科技发展打开了新的大门。 AI大模型技术是近年来人工智能领域的一个热点,它通过构建庞大、复杂的神经网络模型&a…

bug - poi getMergedRegion合并后的行列number错误

第一个CellRangeAddress 的Row number 应该是0&#xff0c;但是给出的是1。 其它的CellRangeAddress 与实际大致相差4-5不等&#xff0c;没有规律。 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>…

气象数据免费下载(超级好用)

你是不是做实验经常性的需要一些气象数据&#xff0c;例如PM2.5、相对湿度、月均温度等等…… 但是当你开始寻找数据时就遇到困难了&#xff0c;由于权限、数据网站之类的麻烦你会花费大量无用时间&#xff0c;甚至有时候一无所获得不偿失&#xff0c;这就很头疼了&#xff01;…

一篇了解电感的使用

一、电感理论基础 1.电感的定义 当电流通过线圈后&#xff0c;会产生磁场&#xff0c;磁感线穿过线圈&#xff0c;产生的磁通量与电流 i有如下关系&#xff1a; 将漆包线、纱包线或塑皮线等在绝缘骨架或磁心、铁心上绕制而成的器件&#xff0c;当线圈通过电流后&#xff0c;在…

工地安全反光衣穿戴监测报警摄像机

工地安全反光衣穿戴监测报警摄像机是为了提高工地施工人员的安全意识和监管效率而设计的。这种设备结合了反光衣、监测系统和报警摄像机的功能&#xff0c;可以有效减少工地事故的发生。 首先&#xff0c;工地安全反光衣是一种具有高度可见度的服装&#xff0c;能够使穿戴者在夜…

Unity中PICO实现移动交互

文章目录 前言一、在允许行走的地面加上对应的组件1、Teleportation Anchor 移动锚点2、Teleportation Area 移动区域 二、在 玩家&#xff08;需要移动的对象&#xff09;上挂载对应组件1、Teleportation Provider 被移动对象2、在 Teleportation Anchor 或 Teleportation Are…

一文学会搭建 cli 脚手架工具

文章目录 设置工具命令package.json bin 字段注释&#xff1a;#!/usr/bin/env node设置环境变量 接收命令选项参数process 实现commander 命令行交互&#xff1a;inquirer下载项目模板&#xff1a;download-git-repo执行额外命令&#xff1a;自动安装依赖child_processexeca 体…

FineReport决策报表Excel导出数据不全解决办法

一、首先建立决策报表 决策报表不带参数导出办法&#xff08;即没有参数面板&#xff09; 普通决策报表导出&#xff08;没有搜索面板&#xff09; 如果决策报表带参数&#xff08;即有搜索框&#xff09;&#xff0c;用上面的办法只能导出部分数据&#xff0c;数据不全 二、…

Go语言框架路由Controller控制器设计思路gin路由根据控制器目录分层生成路由地址

Controller设计好处 框架设计用controller分请求路由层级&#xff0c;应用从app目录开始对应请求url路由地址&#xff0c;这样设计师方便开发时候通过请求地址层级快速定位接口方法对应的代码位置。 例如api接口请求路径为&#xff1a;​​http://localhost:8110/​​busines…

C.C语言分支和循环语句

文章目录 一. 什么是语句 二. 分支语句&#xff08;选择结构&#xff09; 2.1. if 语句 2.1.1. 语法结构 2.1.2. 悬空else 2.1.3. 书写形式的对比 2.1.4. 练习 2.2. switch 语句 3.2.1. 语法结构 3.2.2. 在switch语句中的 break 3.2.3. default子句 3.2.4. 练习 三…

打造你的贪吃蛇游戏:HTML、CSS与JavaScript的完美结合

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

IPSEC VPPN实验

实验背景&#xff1a;FW1和FW2是双机热备的状态。 实验要求&#xff1a;在FW和FW3之间建立一条IPSEC通道&#xff0c;保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 IPSEC VPPN实验配置&#xff08;由于是双机热备状态&#xff0c;所以FW1和FW2只需要配置FW1主设备即可&…

portainer管理远程docker和docker-swarm集群

使用前请先安装docker和docker-compose&#xff0c;同时完成docker-swarm集群初始化 一、portainer-ce部署 部署portainer-ce实时管理本机docker&#xff0c;使用docker-compose一键拉起 docker-compose.yml version: 3 services:portainer:container_name: portainer#imag…

Java高频面试之消息队列与分布式篇

有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 消息队列的基本作用&#xff1f; 异步通信&#xff1a;消息队列提供了异步通信的能力&#xff0c;发送方可以将消息发送到队列中&#xff0c;而无需等待接收方立即处理。发送方和接收方可以解耦&#x…

【数据结构】单链表的层层实现!! !

关注小庄 顿顿解馋(●’◡’●) 上篇回顾 我们上篇学习了本质为数组的数据结构—顺序表&#xff0c;顺序表支持下标随机访问而且高速缓存命中率高&#xff0c;然而可能造成空间的浪费&#xff0c;同时增加数据时多次移动会造成效率低下&#xff0c;那有什么解决之法呢&#xff…

Matlab|2机5节点牛拉法(含报告)

目录 主要内容 下载链接 主要内容 采用牛拉法计算2机5节点的潮流计算程序&#xff0c;程序迭代稳定&#xff0c;运行可靠&#xff0c;含报告资料。 下载链接

pytorch的梯度图与autograd.grad和二阶求导

前向与反向 这里我们从 一次计算 开始比如 zf(x,y) 讨论若我们把任意对于tensor的计算都看为函数&#xff08;如将 a*b&#xff08;数值&#xff09; 看为 mul(a,b)&#xff09;&#xff0c;那么都可以将其看为2个过程&#xff1a;forward-前向&#xff0c;backward-反向在pyto…

【Web】浅聊Java反序列化之C3P0——JNDI注入利用

目录 简介 原理分析 EXP 前文&#xff1a;【Web】浅聊Java反序列化之C3P0——URLClassLoader利用 【Web】浅聊Java反序列化之C3P0——不出网Hex字节码加载利用 简介 出网的情况下&#xff0c;这个C3P0的Gadget可以和fastjson&#xff0c;Snake YAML , JYAML,Yamlbeans , …

【Javascript编程实操05】1、小明买洗发水、香皂、牙刷组合 2、利用循环写出100以内的奇数的和及偶数的和

前言 1、小明买洗发水、香皂、牙刷组合 代码&#xff1a; 实现效果&#xff1a; 2、利用循环写出100以内的奇数的和及偶数的和 代码&#xff1a; 实现效果&#xff1a; 总结 前言 本次主要是继续针对Javascript阶段的for循环的实操练习&#xff0c;共有2个实操&#xff…