Mamba:7 VENI VIDI VICI

若在阅读过程中有些知识点存在盲区,可以回到如何优雅的谈论大模型重新阅读。另外斯坦福2024人工智能报告解读为通识性读物。若对于如果构建生成级别的AI架构则可以关注AI架构设计。技术宅麻烦死磕LLM背后的基础模型。

序列模型的效率与有效性之间的权衡取决于状态编码(压缩)的程度:追求高效性一定要求具有较小的状态,追求有效性一定要求状态包含更多的上下文信息。而在Mamba中的指导思想是选择性:或者重点关注,或者过滤掉无关的输入从而具备较强的的上下文感知能力。

Mamba

若读者仔细的将前面的六个部分进行仔细的推敲和阅读,那么在这篇终章理解Mamba就轻松多。

先来看看这幅经典的图,从图中可以看到在常规的状态空间模型SSM中,矩阵A、B和C都是固定,而在Mamba中加入了选择机制,矩阵B和C不再是固定矩阵,随着输入x而变化(某种程度而言,BC跟随时间或者步长的变化而变化)。因此Mamba不再是时不变系统了,而是时变系统。

图中有个离散化的参数∆t,它其实是离散化的一个参数。大白话的理解就是要是想忽略掉某次的输入那么t会比较小,要是想要稍微记久一点,那么t会相对大。t也是根据输入x进行变化的。另外从图上可以看出来状态都存储在GPU的高速SRAM中,而矩阵参数都存放在HBM中。

先来看看它的算法,不用害怕里面横七竖八的数学符号,左侧为S4的算法,右侧为Mamba的算法,Mamba有个另外的别名S6。

B: Batch Size(训练的批次大小)

L: Sequence Length (每句序列长度)

D: Size of the input vector (每个Token的向量长度,类似d_model)

N: Size of the hidden state h.(隐含层的长度)

相对于S4而言,S6扩展了矩阵B/C/∆的维度,而且它们和输入x相关,同时这三者在运算过程中会作为参数离散化为\overline{A}\overline{B}\overline{A}\overline{B}的维度为(B,L,D,N)。

理解选择性

先来看看选择性机制的效果,传统SSM可以利用卷积核选择性将固定间隔的记忆内容输出(左图),而Mamba可以将不固定间隔的上下文内容输出,同时能够根据场景决定什么时候重置状态,这其实更加符合大语言模型的需求场景。

RNN的经典门控机制是Mamba选择机制的一个实例。RNN门控和连续时间系统离散化很早就有研究人员将他们建立联系。更广泛地说,在SSM的作用可以看成RNN门控机制。 换句话说,SSM的离散化是智能门控机制的原则基础。<是不是看到这里脑袋一片空白……>

不着急,看来那么先来看看下面的图片,Mamba块的输入x先经过两个线性变换,然后经过σ的激活函数在输送给SSM。还记得RNN中的激活函数没有,激活函数输出[0,1]之间。通过和输入x相乘决定让多少的信息通过,这就是门控

那么回过来看看下面的定理:

符号控制着“关注”或者“忽略”当前输入xt的平衡。它摇身一变,泛化为RNN的门例如上面定理的g_{t})。较大的∆值将重置状态h并关注当前输入x,而较小的∆值保持状态并忽略当前输入。 SSM在这里可以被理解为由时间步长离散化的连续系统(不清楚的见之前的ZOH)。

按照这种方式理解,直觉上是∆->∞ 代表系统更长时间地关注当前输入(因此“选择”它且忘记当前状态),而∆->0 表示被忽略的瞬态输入。

其他的特点

选择性机制:线性 RNN 在长距离竞技场基准测试中确实表现出色,但这并不意味着它们是很好的语言模型。对于语言建模,线性RNN的性能比 Transformer 差得多。正如Mamba论文中所指出的,其原因是线性 RNN 无法选择性地忘记输出向量中的信息。如果权重接近 0,则每次输入后输出向量将设置为 0,实际上模型将始终立即忘记当前输入之前的任何内容。 如果循环权重接近1,则输出向量在与权重相乘时不会改变。而大模型最重要的是根据看到的输入来决定何时存储信息以及何时忘记信息。

Mamba在此对每个输入向量应用线性函数,为该输入生成单独的权重向量,然后使用这些生成的权重执行循环扫描。这样,某些输入可以生成接近0的权重,从而从输出向量中删除信息。 至于如何使用稳定的配置避免Mamba的梯度消失和爆炸,Mamba原始论文没有提及。

并行扫描:已经在Mamba5解释了原理,大家可以对照图推理。由于 Mamba是时变系统,无法使用卷积进行评估(还记得之前SSM的卷积表达模式没有)。但是它可以采用并行扫描算法进行并行化。

内存分配:Mamba还使用另一种技巧,即增加输出向量的大小。在标准RNN 中,输出向量与输入向量大小相同。Mamba将输出向量的大小扩展了16 倍。这使得它能够存储来自先前输入的更多信息。当然输出向量在传递到下一层之前被投影回原始大小。

通常这会使计算时间增加16倍,但事实证明,在GPU上Mamba层的主要瓶颈是在高性能内存中读取和写入数据所需的时间。GPU有两种类型的内存,SRAM和HBM(不明白的话,请跳转至此)。

GPU包含两种主要类型的内存:HBM (High Bandwidth memory)和SRAM (Static Random-Access memory)。HBM虽然带宽很高,但与更快但更小的SRAM相比,它的访问时间相对较慢。Mamba则使用SRAM在矩阵乘法期间进行快速访问,这是其计算的关键。

对于Mamba的递归操作,事实证明传输数据所花费的时间实际上比计算本身所花费的时间要大得多。 因此Mamba将输入向量和模型参数传输到SRAM,然后在单个块中计算整个Mamba操作,包括将输出投影回较小的原始大小,然后将结果写回HBM。这样,只需在高性能内存之间传输原始大小的向量,实际计算时间即便慢了16倍,但计算时间与传输时间相比非常小,不会真正影响总时间。

所有的离散化和计算都在SRAM内完成

重新计算:Mamba不保存大小为(B,L,D,N)的中间状态以避免内存爆炸。 然而中间状态对于向后传递计算新的梯度是必要,所以采用的方式是重新计算这些中间状态。

这么设计的原因是从HBM读取到SRAM的、A、B、C 和输出梯度的大小为 O(BLN + DN),并且输入梯度的大小也为O(BLN + DN),重新计算避免了从HBM读取O (BLND)的时间成本,这也意味着相对于读取写入,重新计算中间状态可以加速SSM的梯队传播。

内核融合:GPU复制数据的速度比计算操作的速度相对慢。为了让操作更快,Mamba融合CUDA内核生成自定义的CUDA内核,该内核依次执行操作,无需将中间结果复制到HBM(左图)。

最后以Mamba的架构图进行收官,希望读者看到山顶的太阳,留下的更是难忘的路途风景。

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

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

相关文章

实锤,阿里云盾会拦截百度云防护的IP!

今天凌晨&#xff0c;一位站长联系上云加速客服&#xff0c;反馈说&#xff0c;网站突然出现了502的情况。 在检查云防护子域名配置没有问题、本地强制回源没有问题的情况下&#xff0c;我们得出结论是要么服务器内防火墙拦截了云防护的IP段&#xff0c;要么服务器商拦截了云防…

分布式计算、并行计算、网格计算、边缘计算

分布式计算 分布式计算是一种计算方法&#xff0c;它将一个大型的计算任务分解成多个子任务&#xff0c;并将这些子任务分布在网络上的多台计算机&#xff08;节点&#xff09;上同时执行。这些节点通过通信网络协同工作&#xff0c;共同完成任务。每个节点可以独立处理自己的…

如何使用AzurEnum快速枚举Microsoft Entra ID(Azure AD)

AzurEnum是一款针对Azure的安全工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以轻松快速地枚举Microsoft Entra ID&#xff08;Azure AD&#xff09;。 该工具基于纯Python 3开发&#xff0c;可以在Windows和Linux系统上运行&#xff0c;但考虑到性能和稳定性&a…

远程桌面如何配置?使用快解析远程访问

远程桌面如何设置&#xff1f; 远程桌面作为windows系统内置的一个组件&#xff0c;多年来深受用户喜爱。使用此功能&#xff0c;我们能够轻而易举的控制我们想要控制的电脑。下面我就简单的介绍一下远程桌面的设置方法。 在讲具体设置方法之前&#xff0c;首先应该给大家普及…

dfs记忆化搜索,动态规划

动态规划概念&#xff1a; 给定一个问题&#xff0c;将其拆成一个个子问题&#xff0c;直到子问题可以直接解决。然后把子问题的答案保存起来&#xff0c;以减少重复计算。再根据子问题的答案反推&#xff0c;得出原问题解。 821 运行时间长的原因&#xff1a; 重复大量计算…

MLM之GPT-4o:GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略

MLM之GPT-4o&#xff1a;GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;2024年5月13日&#xff0c;OpenAI重磅发布新旗舰模型GPT-4o&#xff0c;这是一个全新的旗舰模型&#xff0c;可以实时跨越音频、视觉和…

Unity Render入门

概述 在unity中渲染相关的组件是和Render关联的&#xff0c;比如我们常见的3D模型中的MeshRender&#xff0c;UI中的RenderCanvas等都是和Render相关联的&#xff0c;相信在unity的学习过程中&#xff0c;一定看到过非常多和Render相关的内容&#xff0c;那让我们学习一下这部…

python批量生成防伪识别二维码

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结 一.前言 二维码(QR Code)是一种矩阵条码技术,它使用黑白矩形图案来表示二进制数据,这些矩形图案可以被设备扫描并解读。二维码可以被用来存储

每日一题——PAT(乙级)1002 写出这个数(举一反三、思想解读)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三题目链接 我的写法&#xff1a; nums_sounds{0:ling,1:yi,2:er,3:san,4:si,5:wu,6:liu,7:qi,8:ba,9:jiu, }sum0inputsinput() input_nums[] for i i…

绝地求生:29.2商城更新内容预览:挣脱尘网通行证,经典皮肤返场,空投活动

就在今天历经9小时维护&#xff0c;29.2版本终于上线&#xff0c;柠檬茶带大家一起看看&#xff0c;这次游戏里都更新了哪些内容吧。 挣脱尘网通行证 豪华版&#xff1a;$14.99 普通版&#xff1a;$4.99 豪华版比普通版多10级升级券和2套生存者宝箱 分支一 分支二 分支三 额外…

现代加密技术(对称和非对称加密)

1.分类 现代加密技术&#xff1a;对称和非对称加密&#xff0c;对称加密即共享密钥&#xff0c;非对称加密是公钥加密算法。 2.基础总结 AES是什么算法&#xff1f; 分组加密算法&#xff0c;对称加密算法AES的分组长度是&#xff1f;固定128位AES密钥长度是多少&#xff1f;支…

树莓派3B+入门(无外设)

昨日刚到一块树莓派3B&#xff0c;甚是喜爱&#xff0c;然半宿未眠 1、下载 在官网先下载烧录文件https://www.raspberrypi.com/software/ 下载完毕打开&#xff0c;选择&#xff0c;根据自己板子型号定 操作系统用最新的就行&#xff0c;64位不太稳定 储存卡&#xff0c;需…

C++ | Leetcode C++题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; class Solution { public:int numDecodings(string s) {int n s.size();// a f[i-2], b f[i-1], c f[i]int a 0, b 1, c;for (int i 1; i < n; i) {c 0;if (s[i - 1] ! 0) {c b;}if (i > 1 && s[i - 2] ! 0 &&a…

24HN逆向部分wp

24H&N逆向部分wp 菜鸡新手师傅wp&#xff0c;Re 5/9&#xff0c;记录一下qaq&#xff08;好久没写博客了&#xff0c;水一篇hh&#xff09; 最喜欢的逆向题 64位&#xff0c;进主函数之后直接看&#xff0c;要求输入第5位为i&#xff0c;然后后面依次相等&#xff0c;长…

DevOps + 架构

一、DevOps 1定义 开发&#xff0c;测试&#xff0c;运维&#xff0c;甚至运营。出一个东西&#xff0c;就能马上走完一个流程&#xff0c;看效果 软件交付的速度和质量很重要 二、架构 1、解决系统复杂度 首先找到系统复杂度在哪里。 经典案例&#xff1a; 假设我们需要设…

Vue3实战笔记(22)—路由Vue-Router 实战指南(路由传参)

文章目录 前言一、路由router-link二、路由传参1.query方式2.params方式3.props传参 总结 前言 vue-router 是 Vue.js 官方路由管理器。它和 Vue.js 核心深度集成&#xff0c;让用 Vue.js 构建单页应用变得易如反掌。 前面提到过简单的使用路由&#xff0c;直到上文使用404界面…

僵尸网络的威胁值得关注

僵尸网络&#xff08;botnet&#xff09;是指一组受到恶意软件感染并遭到恶意用户控制的计算机。术语“僵尸网络”由“机器人&#xff08;bot&#xff09;”和“网络&#xff08;network&#xff09;”两个词组合而成&#xff0c;每台受感染设备被称为“机器人”。僵尸网络可用…

视频下载器 - 网页视频自动嗅探2.2.4

【应用名称】&#xff1a;视频下载器 - 网页视频自动嗅探 【适用平台】&#xff1a;#Android 【软件标签】&#xff1a;#Video #Downloader 【应用版本】&#xff1a;2.2.4 【应用大小】&#xff1a;33MB 【软件说明】&#xff1a;软件升级更新。支持多种格式的看片神器&am…

【AI+agent智能助手】使用Dify新手小白也能分分钟构建属于自己的 AI 原生应用

最近有读者看了我这篇文章 【人工智能】字节版GPTs「扣子」coze免费使用chatGPT4模型操作步骤 &#xff0c; 私信我有没有本地私有化 智能体推荐。 这里推荐一款&#xff0c; Dify支持私有化部署&#xff0c;新手小白也能分分钟构建属于自己的 AI 原生应用。 官方地址&#…

如何将Git仓库中的文件打包成zip文件?

要将Git仓库中的文件打包成zip文件&#xff0c;您可以使用git archive命令。这个命令允许您将任何git可访问的树或提交导出成一个归档文件。以下是一些基本的步骤&#xff1a; 打开命令行或终端。切换到您的Git仓库的目录。执行git archive命令。 git archive --formatzip --o…