[论文笔记]Mixtral of Experts

引言

今天带来大名鼎鼎的Mixtral of Experts的论文笔记,即Mixtral-8x7B。

作者提出了Mixtral 8x7B,一种稀疏专家混合(Sparse Mixture of Experts,SMoE)语言模型。Mixtral与Mistral 7B具有相同的架构,不同之处在于每个层由8个前馈块(即专家)组成。对于每个令牌(Token),在每个层中,路由器网络选择两个专家处理当前状态并结合它们的输出。尽管每个令牌只看到两个专家,但在每个时间步长上选择的专家可以不同。因此,每个令牌可以访问47B参数,但在推理过程中只使用13B活跃参数。Mixtral在32k令牌的上下文大小下进行训练,并且在所有评估的基准测试中表现优于或与Llama 2 70B和GPT-3.5相匹配。还提供了一个经过微调以遵循指示的模型Mixtral 8x7B – Instruct,在人类基准测试中超过了GPT-3.5 Turbo。基础模型和指导模型都以Apache 2.0许可协议发布。

1. 总体介绍

在这篇工作中,作者介绍了Mixtral 8x7B,一个稀疏混合专家模型,其权重开放并在Apache 2.0下许可。Mixtral在大多数基准测试中优于Llama 2 70B和GPT-3.5。由于每个令牌仅使用其参数的子集,Mixtral可在低批量大小下实现更快的推理速度,并在大批量大小下实现更高的吞吐量。

Mixtral是一个稀疏专家混合网络。它是一个仅解码器模型,其中前馈块从8个不同组的参数集中进行选择。在每个层中,对于每个令牌,路由器网络选择其中的两个组(专家)来处理该令牌并将它们的输出按加法结合。这种技术可以增加模型的参数数量,同时控制成本和延迟,因为模型每个令牌只使用总参数集的一部分。

Mixtral是使用具有32k令牌的多语言数据进行预训练的。它在多个基准测试中要么匹配要么超越Llama 2 70B和GPT-3.5的性能。特别是在数学、代码生成以及需要多语言理解的任务中,Mixtral展示出优越的能力,明显优于Llama 2 70B在这些领域。实验证明,Mixtral能够成功地从其32k令牌的上下文窗口中检索信息,无论序列长度及信息在序列中的位置如何

作者还介绍了Mixtral 8x7B – Instruct,这是一个经过监督微调和直接偏好优化以遵循指示的聊天模型。其性能明显优于GPT-3.5 Turbo等在人类评估基准上的聊天模型。

image-20240603232912655

图1:专家混合层。每个输入向量通过路由器被分配给8个专家中的2个。该层的输出是两个被选中的专家输出的加权和。在Mixtral中,一个专家是一个标准的前馈块,就像原始Transformer架构中的前馈网络块。

2. 架构细节

Mixtral基于一个transformer架构,并使用了和Mistral 7b中描述的相同的修改,但与之不同的是,Mixtral支持完全密集的32k token的上下文长度,并且将前馈块替换为专家混合层。模型架构参数总结如下表1所示。

image-20240604135354389

2.1 稀疏混合专家

图1简要介绍了专家混合层。对于给定的输入 x x x,MoE模块的输出由专家网络输出的加权和确定,其中权重由门控网络的输出给出。即给定 n n n个专家网络 { E 0 , E i , . . . , E n − 1 } \{E_0, E_i, ..., E_{n−1}\} {E0,Ei,...,En1},专家层的输出由以下公式给出:
∑ i = 0 n − 1 G ( x ) i ⋅ E i ( x ) \sum_{i=0}^{n-1} G(x)_i \cdot E_i(x) i=0n1G(x)iEi(x)
这里, G ( x ) i G(x)_i G(x)i表示第 i i i个专家的门控网络的 n n n维输出,而 E i ( x ) E_i(x) Ei(x)表示第 i i i个专家网络的输出。如果门控向量是稀疏的,我们可以避免计算门控为零的专家的输出。有多种不同的方法可以实现 G ( x ) G(x) G(x)​ ,但一个简单而有效的方法是对线性层的Top-K个logits进行softmax运算。使用
G ( x ) : = Softmax ( TopK ( x ⋅ W g ) ) G(x) := \text{Softmax}(\text{TopK}(x\cdot W_g)) G(x):=Softmax(TopK(xWg))
其中, ( TopK ( ℓ ) ) i : = ℓ i (\text{TopK}(ℓ))_i := ℓ_i (TopK())i:=i,如果 ℓ i ℓ_i i是logits ℓ ∈ R n ℓ ∈\R^n Rn的前K个元素之一,否则 ( TopK ( ℓ ) ) i : = − ∞ (\text{TopK}(ℓ))_i :=-\infty (TopK())i:= K K K的值,即每个标记使用的专家数量,是一个超参数,用于调节处理每个标记所需的计算量。如果保持 K K K不变而增加n,可以增加模型的参数数量,同时保持其计算成本基本恒定。

这引发了模型的总参数数量(通常称为稀疏参数数量)与用于处理单个标记的参数数量(称为活跃参数数量)之间的区别,其中稀疏参数数量随 n n n增加,而活跃参数数量随K增加直至 n n n

MoE层可以在单个GPU上高效运行,并使用高性能的专门内核。例如,Megablocks将MoE层的前馈网络操作转换为大型稀疏矩阵乘法,显著提高执行速度,并自然处理不同的专家分配不同数量的标记的情况。此外,MoE层可以通过标准的模型并行技术将其分布到多个GPU,并通过一种称为专家并行的特定分区策略进行。在MoE层的执行过程中,要由特定专家处理的标记被路由到相应的GPU进行处理,并将专家的输出返回到原始标记位置。请注意,EP在负载平衡方面存在挑战,必须均匀分布工作负载到各个GPU,以防止单个GPU过载或遇到计算瓶颈。

在Transformer模型中,MoE层独立地应用于每个标记,并替换transformer块的前馈(FFN)子块。对于Mixtral,使用与专家函数 E i ( x ) E_i(x) Ei(x)相同的SwiGLU架构,并设置 K = 2 K = 2 K=2。这意味着每个标记被路由到两个具有不同权重集的SwiGLU子块中。综上所述,对于输入标记 x x x,输出 y y y的计算如下:
y = ∑ i = 0 n − 1 Softmax ( Top2 ( x ⋅ W g ) ) i ⋅ SwiGLU i ( x ) y = \sum_{i=0}^ {n-1} \text{Softmax}(\text{Top2}(x \cdot W_g))_i \cdot \text{SwiGLU}_i(x) y=i=0n1Softmax(Top2(xWg))iSwiGLUi(x)
这个公式与GShard架构相似,但有两个例外:所有的FFN子块替换为MoE层,而GShard替换其他块;此外,GShard对每个标记分配的第二个专家使用了更复杂的门控策略。

3. 结果

将Mistral 7B与Llama进行比较,并使用作者自己的评估流程重新运行所有基准测试,以进行公平比较。对各种任务的性能进行了测量,分类如下:

  • 常识推理(0-shot):Hellaswag,Winogrande,PIQA,SIQA,OpenbookQA,ARC-Easy,ARC-Challenge ,CommonsenseQA

  • 世界知识(5-shot):Natur alQuestions,TriviaQA

  • 阅读理解(0-shot):BoolQ,QuAC

  • 数学:GSM8K(8-shot,maj@8)和MATH(4-shot,maj@4)

  • 代码:Humaneval (0-shot)和MBPP (3-shot)

  • 热门聚合结果:MMLU(5-shot),BBH(3-shot),和AGI Eval(3-5-shot,仅限英文多项选择题)

image-20240604142101438

在表2中报告了Mixtral、Mistral 7B、Llama 2 7B/13B/70B和Llama 1 34B2的详细结果。图2比较了Mixtral在不同类别中与Llama模型的性能。在大多数指标上,Mixtral超过了Llama 2 70B。特别是,在代码和数学基准测试中,Mixtral展现出了卓越的性能。

image-20240604142200638

大小和效率 将性能与Llama 2系列进行比较,旨在了解Mixtral模型在成本性能范围内的效率(见图3)。作为一种稀疏的Mixture-of-Experts模型,Mixtral每个标记只使用13B个活跃参数。以5倍较低的活跃参数,Mixtral能够在大多数类别中胜过Llama 2 70B。

注意,重点关注活跃参数数量,它与推理计算成本成正比,但不考虑内存成本和硬件利用率。为了提供Mixtral的内存成本与其稀疏参数数量47B成比例,这仍然小于Llama 2 70B。至于设备利用率,SMoEs层由于路由机制和在每个设备上运行多个专家时内存负载增加而引入了额外开销。它们更适合批处理工作负载,其中可以达到良好的算术强度。

image-20240604142319696

与Llama 2 70B和GPT-3.5的比较 在表3中,进行了Mixtral 8x7B与Llama 2 70B和GPT-3.5的性能比较。Mixtral的性能与其他两个模型相似或更好。在MMLU上,Mixtral获得了更好的性能,尽管其容量显着较小。

3.1 多语言基准测试

与Mistral 7B相比,作者在预训练期间显著提高了多语言数据的比例。额外的容量使得Mixtral在多语言基准测试中表现出色,同时在英语方面保持高准确性。特别是,在法语、德语、西班牙语和意大利语方面,Mixtral在表4中明显优于Llama 2 70B。

image-20240604142412114

3.2 长距离性能

为了评估Mixtral处理长篇上下文的能力,引入的密钥(passkey)检索任务上对其进行评估,这是一个设计用来衡量模型在随机插入的长提示中检索密钥的能力的合成任务。图4(左)的结果显示,Mixtral无论上下文长度或密钥在序列中的位置如何,都能实现100%的检索准确率。图4(右)显示,在proof-pile数据集的一个子集上,随着上下文大小的增加,Mixtral的困惑度呈单调下降趋势。

image-20240604142458098

3.3 偏见基准测试

为了确定可能需要通过微调/偏好建模进行修正的潜在缺陷,对基准模型在Bias Benchmark for QA (BBQ) 和Bias in Open-Ended Language Generation Dataset (BOLD) 上进行了性能测量。BBQ是一个手写的问题集数据集,旨在检测针对九个不同社会相关类别的社会偏见:年龄、残疾状态、性别认同、国籍、外貌、种族/民族、宗教、社会经济地位、性取向。BOLD是一个大规模数据集,包含23679个用于偏见基准测试的英文文本生成提示,涵盖五个领域。使用评估框架对Llama 2和Mixtral在BBQ和BOLD上进行基准测试,表5中显示结果。

image-20240604142706229

与Llama 2相比,Mixtral在BBQ基准测试上呈现出较少的偏见。对于BOLD中的每个组,更高的平均情感分数意味着更积极的情绪,较低的标准差表示组内偏见较少。总体而言,Mixtral表现出比Llama 2更积极的情感,在每个组内的方差相似。

4. 指令微调

image-20240604142904156

使用指令数据集进行监督微调(SFT),然后使用配对反馈数据集进行直接偏好优化(DPO)来训练Mixtral - Instruct。Mixtral - Instruct在MT-Bench上达到8.30的得分(见表2),使其成为截至2023年12月最好的开放权重模型。由LMSys进行的独立人工评估结果如图6所示,显示Mixtral - Instruct优于GPT-3.5-Turbo、Gemini Pro、Claude-2.1和Llama 2 70B chat。

5. 路由分析

在本节中,对路由器进行了一项关于专家选择的小型分析。具体而言,对训练过程中是否有一些专家专门针对某些特定领域(如数学、生物学、哲学等)进行了调查。

image-20240604143022667

为了调查这一点,对The Pile验证数据集的不同子集上选择的专家进行了分布测量。结果如图7所示,分别对应模型的第0层、第15层和第31层(分别是模型的第一层和最后一层)。在基于主题的专家分配中没有观察到明显的模式。例如,在所有层级上,ArXiv论文(使用Latex编写)、生物学(PubMed摘要)和哲学(PhilPapers)文档的专家分配分布非常相似。

只有在DM Mathematics领域,专家分配存在略微不同的分布。这种差异可能是数据集的合成性质和自然语言范围有限的覆盖的结果,在第一层和最后一层尤为明显,因为这些层级的隐藏状态与输入和输出嵌入的相关性非常高。

image-20240604143135489

这表明路由器确实表现出一些结构化的句法行为。图8展示了不同领域(Python代码、数学和英语)的文本示例,其中每个标记都用与其选择的专家相对应的背景颜色进行了突出显示。图示显示,例如,在Python中的self和英语中的Question等单词通常会通过相同的专家进行路由,即使它们涉及多个标记。同样,在代码中,缩进标记始终分配给同一专家,特别是在第一层和最后一层,其中隐藏状态与模型的输入和输出更相关。

image-20240604143242022

连续的标记通常被分配给同样的专家。实际上,在The Pile数据集中,观察到一定程度的位置局部性。表5显示了每个领域和层级中连续标记分配给相同专家的比例。对于较高层级,连续分配重复的比例显著高于随机分配。这对于如何优化模型的快速训练和推理具有影响。例如,在进行专家并行时,具有高局部性的情况更有可能导致某些专家的过度订阅。相反,这种局部性可以用于缓存。

6. 结论

在本论文中,作者介绍了Mixtral 8x7B,这是第一个在开源模型中达到最新技术水平的专家混合网络。由于每个时间步只使用两个专家,因此Mixtral每个标记只使用13B个活跃参数,同时表现优于之前每个标记使用70B参数的最佳模型Llama 2 70B。

总结

⭐ 作者提出了Mixtral-8x7B,是一种稀疏的混合专家模型,通过门控机制来选择专家(MoE层),每个时间步只激活少量的专家,可以加快推理计算,但实际上要存储所有的参数所需的资源也是不少的。

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

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

相关文章

Mybatis03-ResultMap及分页

1、属性名和字段名不一致问题 1.问题 数据库中的字段 新建一个项目Mybatis-04,拷贝之前,测试实体类字段不一致的情况 public class User {private int id;private String name;private String password; }select * from mybatis.user where id #{id} …

2024年会计、金融与工商管理国际会议(ICAFBA 2024)

2024年会计、金融与工商管理国际会议 2024 International Conference on Accounting, Finance, and Business Administration 【1】会议简介 2024年会计、金融与工商管理国际会议是一场集合了全球会计、金融与工商管理领域专家学者的学术盛会。此次会议旨在深入探讨会计、金融与…

【C++课程学习】:类和对象(上)(类的基础详细讲解)

🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🍟1.1类的引出: 🍟1.2类的结构: 🍟1.3类的…

进入新公司有焦虑感怎么办?

前因 前两天技术交流群里有童鞋问了一个很有意思的问题,他问如何克服进入新公司的焦虑感?很多热心的童鞋都纷纷支招,比如 “主动干活”、“专注干活”、“让时间冲淡焦虑感”、……等等,这些都很有道理,不过&#xff…

最小栈、栈的弹出(C++)

1.最小栈 思路分析: 代码: class MinStack { public:MinStack() {}void push(int val) {st.push(val);//两种情况需要更新最小值//1.最小栈为空(就是存最小值的那个栈)//2.插入的值小于或等于最小栈的栈顶元素if(minstack.empty()||minstack.top()>…

高并发系统限流原理

短时间内巨大的访问流量,我们如何让系统在处理高并发的同时还能保证自身系统的稳定性?估计有人会说,增加机器就可以了,因为我的系统架构设计就是按照分布式思想进行架构设计的,所以可以只需要增加机器就可以解决问题了…

word自带公式编辑器技巧

1.实现多行公式换行且对齐 1.1 准备阶段(默认Unicode模式) 进入公式编辑模式,输入\eqarray,紧接着按下空格键输入空格,如下 1.2 实现换行和对齐 将要编辑的公式输入到括号内 &:实现位置对齐 &…

【微机原理与汇编语言】循环程序设计

一、实验目的 1.熟练掌握8086/8088常用汇编指令的使用方法 2.熟练掌握循环结构程序编程技巧 3.熟练掌握汇编语言程序运行调试方法 二、实验要求 认真分析实验题目,设计程序流程图,独立完成代码编写及运行调试。 三、实验题目 给出不大于255的十个…

中信证券:A股下半年将迎来年度级别上涨行情的起点

中信证券认为, 过去3年压制A股表现的经济动能转换,资本市场生态,中美战略博弈这三大叙事都将迎来重大拐点,随着政策、价格、外部三类信号逐步验证,2024年下半年A股市场将迎来年度级别上涨行情的起点 过去3年压制A股表…

uniapp小程序开发 | 从零实现一款影视类app (后台接口实现,go-zero微服务的使用)

uniapp小程序开发实战系列,完整介绍从零实现一款影视类小程序。包含小程序前端和后台接口的全部完整实现。系列连载中,喜欢的可以点击收藏。 该篇着重介绍获取轮播图后台接口和获取正在热映电影的两个后台接口的实现。 后台服务使用golang,…

vue3学习(七)

前言 接上一篇学习笔记,今天主要是分享上次学习完了,还没来得及记录,趁今天晚上换换脑子的时间记录下。 今天主要是记录的vuex文件的拆分,因为毕竟如果只在一个index.js文件写,文件会随着业务的复杂性上升&…

益智内容教培教育课程小程序的效果是什么

从孩子出生开始,很多家长们就可以开始制定学习计划,幼儿园前后时间段益智学习家长们很看重,各样的线上课程、线下读本及老师指导等。 市场中也有相关从业公司,在品牌拓展和内容触达转化方面发力,客商双方服务获取条件…

王道408数据结构CH4_串

概述 4 串 4.1 串的实现 4.1.1 存储结构 定长顺序存储 #define Maxsize 255typedef struct{char *ch[Maxsize];int length; }SString;堆分配存储 typedef struct{char *ch;int length; }HString;块链存储 4.1.2 基本操作 4.2 模式匹配(子串定位) 4.2.…

如何有效防御.360勒索病毒:.360勒索病毒加密文件预防方法探讨

导言: 随着信息技术的飞速发展,网络安全问题也日益凸显。其中,勒索病毒作为一种新型的网络安全威胁,给用户和企业带来了极大的困扰和损失。特别是.360勒索病毒,以其独特的加密方式和恶劣的勒索手段,引起了…

宝兰德参编!《2023年中国数据库年度行业分析报告》正式发布

近日,墨天轮发布 《2023年中国数据库年度行业分析报告》(以下简称《报告》)。宝兰德深度参与《报告》重要章节内容的编写工作,凭借在中间件领域深厚的技术沉淀和丰富的实践经验,输出了大量具有专业性和前瞻性的意见&am…

计算机组成原理一轮

目录 一、计算机系统概论 组成 概念 二、计算机的运算方法 二进制和八进制、二进制和八进制间的转换 任意进制数转换为十进制数 十进制转二进制 移码 定点数的移位运算 定点数的加减运算 定点数的乘除运算 相乘 相除 溢出的判别方法 采用一位符号位 采用双符号…

【微机原理与汇编语言】并行接口8255实验

一、实验目的 掌握可编程并行接口芯片8255的工作原理及初始化方法掌握8255在实际应用中的硬件连接及编程应用 二、实验要求 根据实验室现有条件,针对实验任务,设计实验方案并进行实现。 三、实验内容 启动0#计数器,每计5个数&#xff08…

elasticsearch安装与使用(1)-使用docker安装Elasticsearch

1、Elasticsearch安装 docker network create elastic docker pull docker.elastic.co/elasticsearch/elasticsearch:8.3.3 docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -it docker.elastic.co/elasticsearch/elasticsearch:8.3.3-----------------…

大模型时代,是 Infra 的春天还是冬天?

Highlights 大模型时代元年感悟 Scaling Laws 是大模型时代的摩尔定律,是最值得研究的方向 LLM 发展的三个阶段: 算法瓶颈 -> 数据瓶颈 -> Infra 瓶颈 为什么 GPT 一枝独秀, BERT、T5 日落西山? 大模型时代,是大部分 Infra 人的冬天,少部分 Infra 人的春天(算法研…