优雅谈大模型10:MoE

news2024/11/18 1:38:27

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。

大型语言模型能够取得巨大的进步完全取决于缩放定律。随着基础模型的参数规模增加,性能的确也是平滑提升。当不断地扩展这些参数规模大的LLMs时,内存成本和计算资源也会随之而剧增,进而达到硬件的最终极限。那么是否可以使用稀疏激活的大语言模型来解决这个问题?

Mixture of Experts (MoE)

专家混合(层)MoE,允许增加语言模型的大小或容量,而无需相应增加计算量。只是将模型的某些层替换为该层的多个副本(称为“专家”,可以理解为每个副本专注各自的领域),这些副本具有独立的参数。

然后使用门控机制稀疏地(如何理解稀疏,就是将部分的请求分给部分专家)选择用于处理每个输入的专家。这个想法其实早在90年代早期的条件计算研究,它允许以一种易于处理的方式训练大规模模型。

先来看看Decode-Only的Transformer架构,例如GPT系列都是基于Decode-Only,而Bert则是基于Encode-Only的架构。Decode-Only的大模型基本都是由Decoder Block堆叠而成,每一个Block的结构如上图左侧所示。在通过多头注意力模块之后,会接一个FFNN层。<若是忘记FFNN,可以点击链接回去温习!>

在LLMs中,MoE对这个架构进行了简单修改——用MoE层替换了前馈层!该MoE层由多个专家组成(数量在几个到几千个之间),其中每个专家都是前馈子层,各自拥有独立的参数。

可以通过将编码器和解码器中的前馈子层替换为MoE层,进而将原来的模型转换为MoE模型。也可以只将这些子层的一部分(例如,每隔N层)转换为MoE层。

也许会疑惑,不是增加了很多专家,肯定向模型添加了大量参数。毕竟MoE模型在Transformer的每个前馈子层内具有多个独立的神经网络。其实可以这么来理解稀疏的,给定一个Token序列作为输入,使用路由机制稀疏地选择一组专家,每个Token将被发送到这些专家,而不是激活所有的专家,因此MoE模型前向传递的计算成本远低于具有相同参数数量的密集模型的计算成本。

MoE的结构

MoE应用于 transformer 模型时,MoE 层有两个主要组件:

  • Sparse MoE Layer: 将变压器中的前馈层替换为几个结构相似的“专家”的稀疏层。

  • Router: 路由器,确定将 MoE 层中的哪些令牌发送给哪些专家。

稀疏MoE层中的每个专家都是一个前馈神经网络,具有自己独立的参数集 。每个专家的架构都模仿传统的前馈子层。路由器将每个Token作为输入,并在专家上产生概率分布,以确定每个Token发送到哪个专家。

路由器有自己的一组参数,并与网络的其余部分共同训练。每个Token都可以发送给许多专家,一般而言只向通过某些计算得到的前k位专家发送Token。k取决于参数设置,例如k=1或k=2 则意味着每个Token分别由一个或两个专家处理。

例如,假设有一个7B参数LLM,并将其每个前馈子层替换为一个由 8 个专家组成的MoE层,其中每个令牌激活2个专家。这与Mixtral-8x7B(Mistral-7B的MoE变体)所使用的架构完全相同。完整模型大约有 47B 参数,所有这些参数都必须加载到内存中。但是,该模型的推理成本与 14B参数模型相当。每个Token只使用两个专家来处理,这会产生约2 x 7B的矩阵乘法。然而整体实现了约50B的参数模型。

MoE模型被广泛使用,能够用固定的计算资源训练更大的模型。与密集模型相比,MoE模型的预训练速度更快,并且与具有相同参数数量的密集模型相比,推理速度要快得多。

但是MoE类的LLMs也会消耗更多的VRAM,因为所有专家都必须加载到内存中,再者GPU擅长高效执行算术运算,但不擅长分支,而条件计算则对分支计算的要求较高。此外MoE模型容易出现过拟合,并且很难微调。

当然MoE和RNN网络也是可以可以整合。

门控机制

为了计算MoE模块的输出,可以利用专家输出的加权组合,其中权重由路由器提供。路由器输出权重的N维向量(N是专家的数量)。当路由器输出稀疏时,在计算 MoE时不考虑权重为零的专家。

对于MoE内部路由有很多不同的策略。最简单的方法是将输入乘以权重矩阵并应用softmax。为了进一步保证是稀疏的输出,有研究人员提出一种改进的门控机制,为这种简单的softmax门控机制增加了稀疏性和噪声。

上图示意在应用softmax之前,将可调节的高斯噪声添加到路由器的输出。另外除了Top K专家的输出,所有输出都被设置为-∞进行屏蔽以确保专家的选择是稀疏的。

MoE的经典问题是,在训练期间,网络一般都会倾向重复的使用相同的少数专家。门控机制将收敛到一种状态,即始终为每个输入选择同一组专家。这是一个循环,一旦一个专家被频繁的选中,它的训练速度更快,因此它会被继续选中!很多研究都在解决这个问题的方法,例如可以通过在训练损失中添加一个简单的“软”约束来平衡。

说来也简单,首先在每个批次的训练过程中,将每个专家的门控得分做累加得到Importance Score。那意味着在某个批次中经常被选中的专家将获得最高的分数。

接下来通过取专家Importance Score的平方变异系数 (CV) 来计算辅助损失函数。若所有专家的分数都非常相似,那么CV值就会很小,反之亦然。将这个损失项添加到模型的训练目标中以便于鼓励专家在每批中获得同等的重要性。

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

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

相关文章

牛客java基础(一)

A 解析 : java源程序只允许一个public类存在 &#xff0c;且与文件名同名 ; D hashCode方法本质就是一个哈希函数&#xff0c;这是Object类的作者说明的。Object类的作者在注释的最后一段的括号中写道&#xff1a;将对象的地址值映射为integer类型的哈希值。但hashCode()并不…

使用python绘制桑基图

使用python绘制桑基图 桑基图效果代码 桑基图 桑基图&#xff08;Sankey Diagram&#xff09;是一种用来表示流动&#xff08;如能源、资金、材料等&#xff09;在不同实体之间转移的图表。 每个流的宽度与流量成正比&#xff0c;通常用于显示能量或成本流动的分布情况。 桑基…

【TB作品】MSP430F149单片机,广告牌,滚动显示

LCD1602滚动显示切换播放暂停字符串 显示Public Places 显示No Smoking 播放 暂停 部分代码 char zifu1[] "Public Places "; char zifu2[] "Class Now "; char zifu3[] "No admittance "; char *zifu[] { zifu1, zifu2, zifu3 }…

初识C++ · 模板进阶

目录 前言&#xff1a; 1 非类型模板参数 2 按需实例化 3 模板特化 4 模板的分离编译 前言&#xff1a; 前面模板我们会了简单的使用&#xff0c;这里带来模板的进阶&#xff0c;当然&#xff0c;也就那么几个知识点&#xff0c;并不太难。 1 非类型模板参数 先来看这样…

C语言过度C++语法补充(面向对象之前语法)

目录 1. C相较于C语言新增的语法 0. C 中的输入输出 1. 命名空间 1. 我们如何定义一个命名空间&#xff1f; 2. 如何使用一个命名空间 3. 命名空间中可以定义什么&#xff1f; 4. 在 相同或者不同 的文件中如果出现 同名的命名空间 会如何&#xff1f; 5. 总结~~撒花~~…

大模型基础——从零实现一个Transformer(1)

一、Transformer模型架构图 主要模块&#xff1a; embedding层&#xff1a; Input/Output Embedding&#xff1a; 将每个标记(token)转换为对应的向量表示。 Positional Encoding&#xff1a;由于没有时序信息&#xff0c;需要额外加入位置编码。 N个 block堆叠: Multi-Head …

vue不同页面切换的方式(Vue动态组件)

v-if实现 <!--Calender.vue--> <template><a-calendar v-model:value"value" panelChange"onPanelChange" /></template> <script setup> import { ref } from vue; const value ref(); const onPanelChange (value, mod…

Oracle EBS AP发票验证-计税期间出现意外错误解决方法

系统版本 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状: **打开发票题头或发票行“税详细信息”**错误提示如下: 由于以下原因而无法针对"税"窗口中所做的修改更新 Oraclee Payables信息: 尚未为税率或帐户来源税率设置可退回税/应纳税额帐户。请…

【Linux】The server quit without updating PID file的几种解决方案

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

简单聊下服务器防病毒

在当今数字化时代&#xff0c;服务器作为数据存储、处理与传输的核心设备&#xff0c;其安全性显得尤为关键。服务器防病毒工作&#xff0c;不仅是保障企业信息安全的重要一环&#xff0c;更是维护用户数据隐私的关键举措。以下&#xff0c;我们将从多个方面&#xff0c;简单探…

29网课交单平台 epay.php SQL注入漏洞复现

0x01 产品简介 29网课交单平台是一个专注于在线教育和知识付费领域的交单平台。该平台基于PHP开发,通过全开源修复和优化,为用户提供了高效、稳定、安全的在线学习和交易环境。作为知识付费系统的重要组成部分,充分利用了互联网的优势,为用户提供了便捷的支付方式、高效的…

Java使用OpenCV计算两张图片相似度

业务&#xff1a;找出两个表的重复的图片。 图片在表里存的是二进制值&#xff0c;存在大量由于一些特殊情况例如扫描有差异&#xff0c;导致图片存的二进制值不同&#xff0c;但图片其实是一样来的。 所以找出两个表重复相同的图片&#xff0c;不可能只是单纯的比较二进制值…

若依RuoYi-Vue分离版—增加通知公告预览及缩放功能

若依RuoYi-Vue分离版—增加通知公告预览及缩放功能 前言开发通知公告 前言 若依分离版的通知公告没有预览功能&#xff0c;想开发通知公告功能 开发通知公告 效果如下 具体开发内容 修改若依notice代码如下。 <template><div class"app-container"&g…

三十五篇:数字化转型的引擎:赋能企业的ERP系统全景

数字化转型的引擎&#xff1a;赋能企业的ERP系统全景 1. 引言 在这个快速变化的数字时代&#xff0c;现代企业面临着前所未有的挑战和机遇。企业资源计划&#xff08;ERP&#xff09;系统&#xff0c;作为数字化转型的核心&#xff0c;扮演着至关重要的角色。它不仅是企业运营…

霸气的短视频:成都科成博通文化传媒公司

霸气的短视频&#xff1a;瞬间的力量与魅力 在数字化浪潮中&#xff0c;短视频以其独特的魅力迅速崛起&#xff0c;成为社交媒体的新宠。而在众多短视频中&#xff0c;那些充满霸气、让人热血沸腾的作品&#xff0c;总能引起广泛的关注和讨论。成都科成博通文化传媒公司将从内…

Linux文本处理三剑客之awk命令

官方文档&#xff1a;https://www.gnu.org/software/gawk/manual/gawk.html 什么是awk&#xff1f; Awk是一种文本处理工具&#xff0c;它的名字是由其三位创始人&#xff08;Aho、Weinberger和Kernighan&#xff09;的姓氏首字母组成的。Awk的设计初衷是用于处理结构化文本数…

SSM整合总结

一.核心问题 (一)两个容器 web容器 web相关组件&#xff08;controller,springmvc核心组件&#xff09; root容器 业务和持久层相关组件&#xff08;service,aop,tx,dataSource,mybatis,mapper等&#xff09; 父容器&#xff1a;root容器&#xff0c;盛放service、mapper、…

前端 JS 经典:打印对象的 bug

1. 问题 相信这个 console 打印语句的 bug&#xff0c;其实小伙伴们是遇到过的&#xff0c;就是你有一个对象&#xff0c;通过 console&#xff0c;打印一次&#xff0c;然后经过一些处理&#xff0c;再通过 console 打印&#xff0c;发现两次打印的结果是一样的&#xff0c;第…

算法金 | 这次终于能把张量(Tensor)搞清楚了!

大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 1. 张量&#xff08;Tensor&#xff09;基础概念 1.1 张量的定义与重要性 张量是深度学习中用于表示数据的核心结构&#xff0c;它可以视…

国标GB/T 28181详解:国标GBT28181-2022的客户端主动发起历史视音频回放流程

目录 一、定义 二、作用 1、提供有效的数据回顾机制 2、增强监控系统的功能性 3、保障数据传输与存储的可靠性 4、实现精细化的操作与控制 5、促进监控系统的集成与发展 三、历史视音频回放的基本要求 四、命令流程 1、流程图 2、流程描述 五、协议接口 1、会话控…