从 SSM 到 Mamba2,Mamba 发展回溯

news/2024/11/16 15:28:52/文章来源:https://www.cnblogs.com/devil-sx/p/18400931

本文是 Mamba 阅读第一篇文章,本来想从三个问题出发(1)不同 SSM 模型的区别是什么?(2)Transformer 和 SSM 可以等效吗?什么情况下可以等效?(3)很多实验表明 Mamba1 和 Mamba2 并不是单纯替代关系[1],Mamba2 相比 Mamba1 的变化是什么?即 SSM 部分、Transformer 部分 以及 计算部分。时间有限后续博客完成遥遥无期,故将第一部分整理发表。

动态模型发展: 从 Transformer 到 Mamba

最近模型架构从静态计算到动态计算转变趋势越发明显,也许 Transformer 强大 scalability 来自其动态计算特征。

所谓静态计算,指参与计算的俩个操作数一个属于事先已知的静态参数(比如权重)一个属于推理中产生的动态参数(比如特征),传统 MLP 以及卷积层都属于静态计算;而动态计算则是俩个操作数都属于动态参数,比如早期动态卷积中的加权混合以及 Transformer 中的 Q、K 乘法等等。

模型中加入动态计算使得计算需求并不能单一反映计算量。比如 Transformer 的 KV Cache 容量随着 Token 数量平方增长。动态计算需求和模型参数一起反映模型规模更加准确。

但 Transformer 随着 Token 数量增长动态开销太过巨大,如果将 KV Cache 看作过去输入带来的状态,那么 Transformer 就像无损压缩将所有信息存储。针对 Transformer 巨大的开销,Mamba 采用 SSM 中的状态变量压缩所有过去输入信息,并引入动态机制选择性压缩重要部分。

一言以蔽之,Mamba 是采用 State Space 压缩过去信息的动态模型

Jamba

如图,MoE 机制将模型容量和激活参数解耦,而动态机制将激活参数和硬件容量需求解耦。动态模型下以静态模型参数作为唯一衡量指标并不恰当。

Mamba2

本文接下来将对各种 SSM 模型总结,从 SSM 角度梳理 Mamba2 的模型发展。

说文解字,从 S4 到 SSD

按 Mamba2 文章中 SSM 模型分为 3 类:

  • Structured State Space Model (传统卡尔曼现代控制理论中 S4 模型)
  • Diagnoal State Space Model (包括 S4D、S6[2]
  • Scalar-Identity SSM (也叫 1-Semiseparable Structed Masked Attention,包括 SSD)

SSM

S4 模型 4 个 S 来自 Structed State Space Sequential Model,也就是卡尔曼控制理论表示用状态方程和输出方程表示控制关系的那一套。其中 Sequential 揭示了 SSM 的计算本质,sequential 是有序 1D 数据结构,顺序性和 Transformer 中并行计算所有一个窗口内 Token 不同,而顺序 1D 与处理 2D 图像数据乃至 3D 空间数据相矛盾,后续 Mamba 扩展到非语言任务所采用五花八门的 trick 源自这里。

State Space

而将 SSM 迁移到 ML 中便是假设矩阵参数 A、B、C、D 是学习的权重参数,而输入作为激励 u,计算状态 x 和输出 y。实际推理是由于权重固定,实际对应的是 time-invariant 模型。

Var Dimension

回到 SSM 的计算形式,时间维对应实际是 token 的数量,和实际推理有关是一个动态维度,除了动态维度每个变量还有些固定静态维度,比如输入维度 p、状态维度 n 和输出维度 q。计算上状态空间便是用 A、B、C、D 矩阵将数据在 p、n、q 维度之间互相投影变化。 基于模型扩展考虑,输入输出维度一般选择相同,即 p = q。

Diagonal

自然可知状态方程中 A 是 nxn 的方程,表示状态变量在时间维度的作用关系。若将 A 退化为对角矩阵,从 nxn 退化到 n 个自由参数,Ax 矩阵向量乘退化到俩个 n 维向量乘法,便是 Diagonal State Space Model。

但此时模型仍是静态模型,A、B、C、D 是静态参数,因此 SSM 的计算也是静态计算。前文说到 SSM 可以看作将历史信息压缩到固定大小的空间(状态变量),而对于时间维度上不变的 A、B、C、D 就像对任何时间压缩率相等,那么显而易见,随着输入序列长度变大,历史信息在固定空间中所占比例更小。对所有信息采用相同压缩率并不符合压缩的味道,而 time-invariant 也有现实时变系统更多概念相违背。

因此 Mamba 再加了一个 S:Selective,A、B、C、D 并不直接由模型权重提供,而是计算中类似 Q、K、V 动态生成,实际是将 SSM 变为 time-variant 系统。

S6 中的另一个 S 则有点特殊,并非是模型的变动而是类似 Flash Attention 具体计算执行上的变化。前文说到 SSM 一个重要特征是天然 sequential 特性,这个特征实际与并行加速存在冲突,因为有序性,后面的输出要等到前面的输出结果,这种依赖关系便限制了并行加速。更专业的术语叫做前缀和问题(prefix sum)或者扫描问题(scan)[3],前缀和问题想要并行加速必定要引入额外的计算量[4],但如何在资源开销增加和加速销量之间 trade-off 仍然是一个重要的问题。Mamba 中使用的是 Blelloch 提出的前缀和算法[5]

可见 Mamba 有俩个明显的特征,一是理论延续性,SSM 家族的高贵血统使得系列工作中对数学的合理异常重视(当然一旦扯到Machine Learning解释性就靠边站了);二是不但对模型理论修正,计算实现也非常重视,毕竟是做出 Flash Attention 的作者呐。

那么进一步也不难猜测,Scalar-Idenetity 便是在 Diagnoal 基础上进一步退化 A,从n维向量直接退化到一个标量。


  1. 比如 Jamba 指出纯 Mamba 架构 Mamba2 胜过 Mamba1,但attn-Mamba 混合架构下 Mamba1 胜过 Mamba2 ,见 Jamba-1.5: Hybrid Transformer-Mamba Models at Scale ↩︎

  2. Mamba 类模型从卡尔曼 State Space Model 发展而来,除了有按 DNN 这边起名传统的昵称(什么 ELMO、BERT、Transformer),也有能反映在 SSM 家族谱系的正式名称,比如 Mamba1 也叫 S6,Mamba2 也叫 SSD ↩︎

  3. 扫描这个词非常生动形象,很容易联想到老式显像管电子束来回扫描出影像的画面。更泛化地说,扫描是将空间的信息按某种顺序在时间维上挨个输入。 ↩︎

  4. 这里的计算量并非指增加计算单元。而是变化模型的计算量本身,举个例子,对于一个固定模型,其计算量是固定的,增加单元只是缩短计算时间,而这里是类似 Flash Attention 中为了使算法可迭代引入了额外的迭代计算步骤一样,增加了总体计算量。 ↩︎

  5. Prefix Sums and Their Applications ↩︎

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

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

相关文章

CF1307(模拟赛记录)

比赛页面偶然发现一道做过的 G;C 的罚时:没开 longlong,谨记。 然后一个小时没想出 E ……E 题面: 在一年成功的牛奶生产后,Farmer John 奖励他的奶牛们它们最喜欢的美味的草。 在田里有 \(n\) 个单位的排成一行的草,每个单位的草有甜味 \(s_i\)。Farmer John 有 \(m\) 头…

学习记录-“unknown type name ‘HAL_StatusTypeDef’ ”报错

1:conf.h中用到的外设宏定义打开 2:#include "stm32g4xx_hal.h"放在最开头 如果有其他解决方法请增加

【待做】【Linux系列】使用fail2ban配置动态防火墙

一、安装二、测试三、基本配置四、相关命令原创 戒一双 LINUX开源玩家前面说的防火墙基本是静态的情况,在实际运行中我们可能需要动态调整防火墙策略,此时可以考虑使用Fail2ban。 Fail2ban 可以通过创建规则,自动更改防火墙配置,在尝试登录失败达到一定次数后禁止特定 IP,…

焦煤波浪 跌势快要结束了

如果走出这个形态 下周看止跌 开始震荡

洛谷 P5658 [CSP-S2019] 括号树

洛谷 P5658 [CSP-S2019] 括号树 题意 给定一棵树,每个点有一个括号 ( 或 )。 定义 \(s_i\) 表示 根节点到 \(i\) 每个点的括号组成的序列。 求每个 \(s_i\) 中合法括号子串的个数 \(f_i\)。 思路 定义 \(g_i\) 表示 \(s_i\) 中以 \(i\) 结尾的合法括号子串的个数。 有 \(f_i=f…

运输问题数学模型精解

运输问题(Transportation Problem)是运筹学中的经典问题之一,其历史可以追溯到19世纪中期。该问题最早由数学家和经济学家提出,目的是解决如何在需求和供给之间分配资源以最小化运输成本的问题。运输问题的数学模型最初由俄国数学家卡尔库尔肖夫(Karl Kulshov)在19世纪提…

基于视觉工具箱和背景差法的行人检测,行走轨迹跟踪,人员行走习惯统计matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印) 在三维图中,幅度越大,则表示人员更习惯的行走路线。2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)for j=1:length(inds)% 调整边界框格式[R_,C_] = find(lb == inds(j)); upLPo…

CF1534(模拟赛记录)

比赛页面ABCD 都打的可以,然而 E 的 +10 直接葬送了大概率过的 F1 …… 先猜了个 \(n-k+1\) 的结论,但是没有写搜索查正确性(事实上确实不正确),于是两次罚时,第一次是交互格式错了。 然后又猜了个 \(\min(n-k+1,(n-1)/(k-1))\) 的结论,过了几个小的搜索数据(\(n\le 6\…

简单比较 http https http2,我们要如何把http升级为https

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣http 超文本传输​​协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。 HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求…

作业二:个人项目

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)Planning 计划 10Estimate 估计这个任务需要多少时间 300Development 开发 150Analysis 需求分析 (包括学习新技术) 50Design Spec 生成设计文档 10Design Review 设计复审 20Coding Standard 代码规…

冯.诺依曼 体系结构

冯.诺依曼 体系结构 alloverzyt 转载自:https://www.cnblogs.com/quan0311/p/15025116.html 1964年,第一台计算机ENIAC诞生,人类进入计算机时代,后来,美籍匈牙利数学家:冯.诺依曼提出了计算机“存储程序”的计算机设计理念,即将计算机指令进行编码后存储在计算机的存储器…

剑网 3 单机版安装教程 + 虚拟机一键端

今天给大家带来一款单机游戏的架设:剑网 3。本人为了学习和研究软件内含的设计思想和原理,带了单机架设教程,不适用于联网,仅供娱乐。 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了。 如果你是小白也没问题,跟着教程走也是可以搭建成功的,但是…