Mamba与MoE架构强强联合,Mamba-MoE高效提升LLM计算效率和可扩展性

43008843de874a75be6866fb07305205.png

论文题目: MoE-Mamba: Efficient Selective State Space Models with Mixture of Experts
论文链接: https://arxiv.org/abs/2401.04081
代码仓库: GitHub - llm-random/llm-random

作为大型语言模型(LLM)基础架构的后起之秀,状态空间模型(State Space Models,SSMs)在序列数据建模领域中已取得了惊人的发展。其中Mamba模型改进了传统的SSM,其通过输入依赖的方式来调整SSM中的参数,允许模型自适应的根据输入数据选择性的传输或遗忘信息,来提高模型在密集型数据上的计算效率。与此同时,Mixture of Experts(MoE)框架也显着改进了基于Transformer的LLM,如何设计更高效的MoE混合策略也成为了LLM研究领域中的潮流方向。

本文介绍一篇来自IDEAS NCBR和华沙大学合作完成的文章,本文作者探索了如何将SSM与MoE结合起来,提出了一种名为MoE-Mamba的框架,MoE-Mamba继承了SSM序列模型的递归计算特性,在推理速度方面相比传统Transformer具有天然优势,同时预测精度优于 Mamba 和 Transformer-MoE。特别的是,MoE-Mamba可以在减少训练steps的情况下达到与普通 Mamba 相同的性能

01. 引言

SSMs模型相比Transformer具有很多优势,例如可并行训练、推理时的线性时间复杂度以及在长上下文任务上的依赖捕获能力。特别是近期提出的Mamba模型[1],基于选择性的SSM和硬件感知设计在多种语言理解任务上取得了优异的结果,被学术界广泛认为是下一个替代注意力Transformer结构的有力竞争者。Mamba对GPU显存的占用不依赖于上下文长度,因为其反向传播所需的中间状态不会被保存,而是在反向传播期间重新计算,强调了状态压缩的重要性。此外,专家混合模型MoE[2]被证明可以有效扩展和提升Transformer模型的性能,其可以大幅增加模型的参数数量,而不会对模型推理和训练所需的 FLOP 产生太大影响,例如近期开源的Mixtral8×7B [3],性能与LLaMa-2 70B相当,但是推理计算量仅为后者的1/6。

4d3db7d34a9f434ebf3abfe5e52080bb.png

本文引入了一种将Mamba与MoE层相结合的模型MoE-Mamba,MoE-Mamba实现了a+b>c的效果,上图展示了MoE-Mamba与其他baseline方法的性能对比效果,可以看到,MoE-Mamba可以在普通Mamba的基础上实现对模型训练步骤缩减的效果。如上图黑色虚线所示,MoE-Mamba在减少2.2倍训练steps的情况下达到了与普通Mamba相同的性能。后续的其他实验也表明,MoE-Mamba拥有大规模扩展模型参数规模的潜力

02. 本文方法

尽管 Mamba 的主要底层机制与 Transformer 中使用的注意力机制有很大不同,但 Mamba 仍然保留了 Transformer 模型的层次结构(即块叠加)。例如包含一层或多层的相同块依次堆叠,每一层的输出会被汇聚到残差信息流中再送入到下一个块中,残差流的最终状态随后被用于预测语言建模任务中的下一个token。下图展示了这些架构的细节对比,从左到右分别是vanilla Transformer、MoE-Transformer、Mamba、MoE-Mamba。

39316c309a36437cb2d00ccfbb5e5475.png

本文提出的MoE-Mamba充分利用了前两种架构的兼容性,例如,在原有Mamba结构的基础上仿照MoE-Transformer将两个mamba块中的其中一个替换成一个可选择的MoE块。这种将mamba层与MoE交错设置的模式可以有效地将序列的整个上下文集成到mamba块的内部表示中,从而将其与MoE层的条件处理分开。

b19196ff06eb4a16afb52ec48d98a517.png

此外,本文作者认为如果将Mamba块和MoE块在局部层的范围内进行并行执行也是一个非常有前景的改进方向,如上图左侧展示了一种并行的Mamba+MoE 架构,右侧展示了Mamba Block的构成。如果将Mamba Block中的输出投影也替换为MoE,模型可以选择更少的模块来匹配当前输入计算的需要,也能实现与原始Mamba架构相当的效果。当然,也可以进一步将MoE替换Conv Projection层来进一步减少计算量。

03. 实验效果

在本文的实验部分,作者比较了5种不同的设置:vanilla Transformer、Mamba、Mamba-MLP、MoE 和 MoE-Mamba。为了保证 Mamba 和本文MoE-Mamba模型中每个token的活动参数数量大致相同,作者将每个MoE前馈层的参数量进行了缩减。不包括嵌入层和非嵌入层,所有模型的每个 token 大约需要访问 26M 个参数,训练数据集使用C4,整体的训练量为大约6.5B个token和10万个训练steps。

4abaf58c60e6438a8b3019c786c358e1.png

上表展示了上述几种对比模型的训练效果,可以看到,MoE-Mamba 比普通 Mamba 模型有了显着的改进。值得注意的是,MoE-Mamba 只需 46% 的训练steps即可达到与 vanilla Mamba 相同的性能

38c3505059b24e9aa01b89eacc894728.png

MoE中的专家数量是MoE-Mamba中的一个重要超参数,为了评估Mamba能否随着专家数量的增加而扩展,作者在下图绘制了模型在不同专家数量情况下的运行情况,并且加入了Mamba 和 Mamba-MLP(后者相当于具有单个专家的 MoE-Mamba)作为参考。上表展示了模型在10万训练steps之后的结果,结果表明,MoE-Mamba可以很好的适应专家数量的变化,如果专家数量设置为8或超过8,MoE-Mamba可以获得比普通Mamba模型更好的最终性能

5dcdcb5239e04e78aac141a8506854b1.png

04. 总结

本文提出了一种将专家混合MoE技术与Mamba架构进行集成的模块,即MoE-Mamba。基于并行计算的天然优势,Mamba减轻了大模型中复杂循环顺序性质的影响,并且对硬件进行感知来实现参数扩展。Mamba相比普通注意力机制Transformer解决了序列模型中效率和有效性之间的基本权衡,强调了状态压缩的重要性。将Mamba与高度稀疏的MoE前馈层交错设置可以实现更高推理效率的LLM,但目前的组合方式仍然非常简单,作者也探索了一种局部并行的Mamba+MoE架构以实现更高的预测准确率和更稀疏的推理效果。期望后续有更多基于条件计算与状态空间模型技术相结合的技术出现,作者认为这条道路将能够更有效地扩展到更大的语言模型中。

参考

[1] Gu A, Dao T. Mamba: Linear-time sequence modeling with selective state spaces[J]. arXiv preprint arXiv:2312.00752, 2023.
[2] Sanseviero, O., Tunstall, L., Schmid, P., Mangrulkar, S., Belkada, Y., and Cuenca, P. Mixture of experts explained, 2023. URL https://huggingface.co/blog/moe.

[3] Mistral. Mixtral of experts, Dec 2023. URL https://mistral.ai/news/mixtral-of-experts/.


  关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区 

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

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

相关文章

Docker+Kafka+Kafka-ui安装与配置

前言 Docker、Kafka都是开发中常用到的组件。在自己的第三台电脑上去安装这些…所以写个博客记录一下安装过程。本文主要内容:Docker安装、kafka安装、kafka可视化配置。这次的电脑环境是Windows11,Intel处理器。 Docker安装 https://www.docker.com/p…

Nginx 解析漏洞复现

环境搭建 下载之后上传到虚拟机并解压 进入这个路径 (root?kali)-[~/vulhub-master/nginx/nginx_parsing_vulnerability]就能看到有docker-compose.yml 启动环境 正常显示 增加/.php后缀,被解析成PHP文件: 漏洞原因:开启了cgi.fix_pathin…

【Mysql】Navicat数据库勿删了mysql.infoschema@localhost,导致打不开数据库,如何修改

运行报错如下: 1449 . The user specified as a definer (mysql.infoschemaocalhost) does not exist该方法不需要重启mysql,或者重装;仅需要恢复删除的mysql.infoschemalocalhost用户 一、登录建立用户 mysql -uroot -pxxxxxx密码二、建立…

有哪些手机与电脑可以同步的简单好用笔记软件?

在我的日常工作、学习和生活中,笔记软件是我不可或缺的助手。无论是会议要点的记录、学习笔记的整理、还是日常生活的备忘录,一款好用笔记软件都能让这些信息井然有序,随时可查。特别是在忙碌的工作日,能够在电脑上整理工作笔记&a…

WordPress分类目录ID怎么看?如何查找WordPress标签ID?

在WordPress网站中,我们需要判断某篇文章是否属于某个分类目录,或者是否拥有某个标签,那么就需要用到分类目录ID和标签ID,那么WordPress分类目录ID怎么看?如何查找WordPress标签ID?下面boke112百科就跟大家…

Linux(CentOS)学习

一、认识Linux 1、如何修改Linux时区 2、配置固定IP 3、重启网络服务 3、小技巧快捷键 4、环境变量设置 5、Linux文件的上传和下载 6、压缩和解压 二、基础命令 1、目录命令 (1、)查看目录内容(ls) 1、ls //查看当前目录内容 2、- a //显示隐藏内容 3…

亿道信息新三防平板EM-I10J,性能和价格成最大亮点

亿道信息近期推出了一款新三防平板电脑名为EM-I10J,这款设备上市的初衷是为了在满足客户作业需求的同时为其提供更合适的价格选择,但这并不意味着EM-I10J的实力可以被小觑。 外观上I10J与之前的I10U并无不同之处,同样是10.1英寸高清电容式触…

【go从入门到精通】什么是go?为什么要选择go?

go的出生: go语言(或Golang)是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持…

基于springboot+vue的医院资源管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

Win32汇编ListView控件学习

此控件比较复杂;和基础win32控件不同;需要先初始化Windows公共控件库, invoke InitCommonControls 之后才可使用; lvdemo.asm, .386.model flat, stdcalloption casemap :none ; case sensitiveinclude window…

33-k8s项目实战-02-k8s的ca证书有效期更新

一、概述 我们知道,k8s各项组件之间的通信,都是使用https协议进行的,也就是ca证书,那么我们也知道ca证书都是有“有限期的”,一旦过期,系统就无法进行通信了; 这也是k8s在企业当中经常遇到的证书…

波奇学Linux:共享内存

进程通信的前提:不同的进程看到同一份的资源 直接原理:同一块物理内存映射到不同进程的共享区 共享内存拆解: 1.申请内存,通过页表映射到进程地址空间 2.返回首地址,便于进程利用 3.释放共享内存,去关联 4.内存的申请…

手机AI摄影时代开启,传音引领行业标准化建设

今年春节,AI摄影可谓大出风头。人们在社交平台晒出自己在龙年的AI写真,极大地增添了节日的氛围感,也让我们看到了“AI摄影”的价值。新年伊始,手机巨头们纷纷布局该赛道,基于AI大模型实现的影像功能成为业界关注焦点。…

c语言 广度优先搜索(Breadth-First Search,BFS)

广度优先搜索(Breadth-First Search,BFS)是一种图遍历算法,通常用于搜索或遍历树和图等数据结构。其基本思想是先访问起始顶点,然后逐层遍历其相邻的顶点,直到找到目标顶点或遍历完所有顶点。 BFS通常使用…

c++面试三 -- 智能指针--7000字

一、智能指针 C 中的智能指针是一种用于管理动态分配的内存的对象,它们可以自动进行内存管理,避免内存泄漏和悬挂指针等问题。 1. 悬挂指针 悬挂指针(dangling pointer)是指在程序中仍然存在但已经不再指向有效内存地址的指针。悬…

深入理解nginx的https sni机制

目录 1. 概述2. 初识sni3. nginx的ssl证书配置指令3.1 ssl_certificate3.2 ssl_certificate_key3.3 ssl_password_file4. nginx源码分析4.1 给ssl上下文的初始化4.2 连接初始化4.3 处理sni回调4.2 动态证书的加载5. 总结阅读姊妹篇: 深入理解nginx的https alpn机制 1. 概述 SN…

FreeRTOS 其它知识点

目录 一、低功耗Tickless模式 1、低功耗Tickless模式的引入 2、Tickless 具体实现 二、空闲任务 1、空闲任务相关知识点 2、钩子函数 3、空闲任务钩子函数 三、使用RTOS的好处 一、低功耗Tickless模式 1、低功耗Tickless模式的引入 FreeRTOS 的系统时钟是由滴答定时器中…

数字孪生与智慧交通的融合发展:推动交通行业数字化转型,构建智慧城市新生态

随着信息技术的快速发展和城市化进程的深入推进,交通行业正面临着前所未有的机遇与挑战。传统的交通管理模式已难以满足日益增长的交通需求,而数字化转型则成为了推动交通行业创新发展的必由之路。数字孪生技术作为一种前沿的信息技术手段,为…

LIS(最长上升子序列, 合唱队形)

最长上升子序列 直接使用动态规划: 这个题目的关键就是在于我们选定一个数,然后利用这个数作为标准和这个数之前的所有数进行比较,如果比前面某一个数要大,那么就需要将这数自己本身的现存的最长长度与比较出来的数的最长加一&am…

【iOS ARKit】RealityKit 同步机制

协作 Session 可以很方便地实现多用户之间的AR体验实时共享,但开发者需要自行负责并确保AR场景的完整性,自行负责虚拟物体的创建与销毁。为简化同步操作,RealityKit 内建了同步机制,RealityKit 同步机制基于 Multipeer Connectivi…