当前位置: 首页 > article >正文

Mixtral 8x7B:开源稀疏混合专家模型的新里程碑

人工智能咨询培训老师叶梓 转载标明出处

随着大模型规模的增大,计算成本和资源消耗也相应增加,这限制了它们的应用范围和效率。本论文介绍了一种新的稀疏混合专家模型(SMoE)——Mixtral 8x7B,它在保持较小计算成本的同时,实现了与更大模型相媲美的性能。

图1展示了专家混合层的工作原理。Mixtral 8x7B模型是一种具有稀疏结构的混合专家模型。与以往的模型相比,Mixtral 8x7B在每个层级上由8个前馈块(即专家)组成,通过一个路由器网络为每个token选择两个专家进行处理,并将它们的输出结合起来。尽管每个token只看到两个专家,但由于所选专家在每个时间步可以不同,因此每个token实际上可以访问到47B个参数,但在推理过程中仅使用13B个活跃参数。

Mixtral 8x7B的创新之处在于其稀疏结构设计,这使得模型在保持巨大参数量的同时,能够高效地进行计算。具体来说,Mixtral 8x7B在32k tokens的上下文大小下进行预训练,并且在多个评估基准上超越或匹配了Llama 2 70B和GPT-3.5的性能。特别是在数学、代码生成和多语言基准测试中,Mixtral 8x7B大幅超越了Llama 2 70B。

作者还提供了一个针对指令进行微调的模型——Mixtral 8x7B – Instruct,它在人类评估基准上超越了GPT-3.5 Turbo、Claude-2.1、Gemini Pro和Llama 2 70B的聊天模型。Mixtral – Instruct还在BBQ和BOLD等基准测试中显示出较低的偏见和更平衡的情感倾向。

Mixtral 8x7B模型的架构

Mixtral是基于变换器架构,并且对之前描述的模型进行了一些修改,特别是支持了32k tokens的完全密集上下文长度,并且将前馈块替换为了专家混合层(Mixture-of-Expert layers)。模型的架构参数在表1中进行了总结。

如图1所示Mixtral模型中的Mixture of Experts(MoE)层的运作机制结构中,每个输入向量(token)不是由单一的神经网络层处理,而是由多个专家(experts)中的一小部分处理。这些专家是并行的神经网络,每个都拥有独立的参数集。

门控网络(Gating Network)的作用是决定哪些专家将参与到每个token的处理中。门控网络为每个专家输出一个权重,这些权重通过softmax函数转换,以确保它们是正的并且总和为一,从而可以作为权重系数。在实践中,为了提高效率,只选择权重最高的K个专家(在Mixtral中K=2)来处理每个token,这通过Top-K操作实现,即只保留最高的K个权重,其余的权重设置为负无穷,这样在softmax操作中它们的影响就会消除。

在Mixtral模型中,SwiGLU是一种特定的前馈网络结构,用作专家网络。每个token不是由一个单一的SwiGLU网络处理,而是由两个不同的SwiGLU网络处理,这两个网络拥有不同的参数集。这两个SwiGLU网络被选中是基于门控网络的输出,即每个token的门控向量中最高的两个权重。

对于输入tokenx,MoE层的输出y 是由两个选定的SwiGLU专家网络的输出的加权和确定的,计算公式为:

这里,n 是专家的总数,表示从门控网络的输出中选取权重最高的两个专家,表示第i 个专家网络对输入x 的处理结果。这样,每个token实际上是通过两个专家的输出的加权和来更新的,权重由门控网络动态决定,从而实现了高效的参数利用和强大的模型性能。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加下方微信或评论留言,即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory。关注享粉丝福利,限时免费录播讲解。

LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

比较结果

在Mixtral与Llama模型的比较结果中,作者使用自己的评估管道重新运行了所有基准测试,以确保公平比较。测试涵盖了多种任务,包括常识推理、世界知识、阅读理解、数学和代码生成等。图2展示了Mixtral在各种基准测试中的性能,与不同的Llama模型相比,Mixtral在所有基准测试中都超越或匹配了Llama 2 70B,尤其是在数学和代码生成方面表现优异。

表2详细列出了Mixtral与Llama模型的比较结果。Mixtral在使用5倍更少的活跃参数进行推理的同时,超越或匹配了Llama 2 70B在几乎所有流行基准测试中的表现。图3进一步展示了Mixtral在MMLU、常识推理、世界知识和阅读理解、数学和代码方面与Llama 2模型的比较结果。Mixtral在几乎所有基准测试中都大幅超越了Llama 2 70B,除了阅读理解基准测试,同时使用的活跃参数降低了5倍。在数学和代码方面,Mixtral也大大优于Llama 2 70B。

表3展示了Mixtral 8x7B与Llama 2 70B和GPT-3.5的性能比较。Mixtral在大多数指标上的表现都优于或等同于其他两个模型。例如,在MMLU基准测试中,尽管Mixtral的容量(47B tokens)明显小于Llama 2 70B(70B tokens),但它仍然获得了更好的性能。

与Mistral 7B相比,Mixtral在预训练期间大幅增加了多语言数据的比例。这使得Mixtral在保持英语高准确性的同时,在多语言基准测试中表现良好。表4显示了Mixtral在四种语言(法语、德语、西班牙语和意大利语)的ARC挑战、Hellaswag和MMLU基准测试中超越了Llama 2 70B。

指令微调

模型是通过在指令数据集上进行监督式微调(Supervised Fine-Tuning, SFT),然后使用直接偏好优化(Direct Preference Optimization, DPO)在成对反馈数据集上进一步训练得到的。这种训练方法使得Mixtral – Instruct在MT-Bench基准测试上达到了8.30的得分,成为截至2023年12月最好的开源权重模型。

图6展示了LMSys排行榜的截图(截至2023年12月22日),其中Mixtral 8x7B Instruct v0.1以1121的Arena Elo评分领先于Claude-2.1(1117)、所有版本的GPT-3.5-Turbo(最高1117)、Gemini Pro(1111)和Llama-2-70b-chat(1077)。这表明Mixtral在开放式模型中以较大的优势领先。

路由分析

为了探究在训练过程中,是否有专家专门化于特定领域(例如数学、生物学、哲学等),作者测量了不同子集的The Pile验证数据集中选定专家的分布。图7展示了模型的第0层、第15层和第31层的专家选择比例。结果显示,在所有层中,对于不同主题的文档(如ArXiv论文、生物学的PubMed摘要和哲学的PhilPapers文档),专家分配的分布非常相似。只有在DM Mathematics中,专家分配的分布略有不同。这种差异可能是数据集合成性质及其对自然语言覆盖范围有限的后果,特别是在与输入和输出嵌入高度相关的第一层和最后一层。

图8展示了来自不同领域(Python代码、数学和英语)的文本示例,其中每个token都以背景色突出显示,对应其选择的专家。图中显示,像Python中的‘self’和英语中的‘Question’这样的词经常通过同一个专家路由,即使它们涉及多个token。同样,在代码中,缩进token总是被分配给相同的专家,特别是在与模型的输入和输出更相关的第一层和最后一层。

图8中连续的token经常被分配给相同的专家。他们在The Pile数据集中观察到一定程度的位置局部性。表5显示了每个领域和层中连续token获得相同专家分配的比例。连续分配的重复比例显著高于随机分配,这表明在较高层次上,专家选择表现出高度的时间局部性。这种局部性对于如何优化模型以进行快速训练和推理具有重要意义。例如,具有高局部性的情况在进行专家并行处理时更可能导致某些专家的过度订阅。相反,这种局部性可以被利用于缓存。

代码:https://github.com/mistralai/mistral-src

官网:https://mistral.ai/news/mixtral-of-experts/

论文链接:https://arxiv.org/pdf/2401.04088


http://www.kler.cn/news/306523.html

相关文章:

  • vue本地打包并将构建文件推送到服务器对应目录下
  • 4------维修手机工具 解锁 刷机 保资料修复 修改参数等多工具合集 工具预览与操作解析
  • ROS学习笔记1.Mapping
  • ??Nginx实现会话保持_Nginx会话保持与Redis的结合_Nginx实现四层负载均衡
  • 【JavaEE】IP协议 应用层协议
  • 【VMvare虚拟机-Ubuntu】解决内存不足问题
  • Oracle重做日志文件的添加及删除
  • 15. 数据维度转换 -- torch.reshape
  • 前端实战:使用JS和Canvas实现运算图形验证码(uniapp、微信小程序同样可用)
  • 代码随想录 | Day21 | 二叉树:找树左下角的值路径总和
  • 判断链表的全部n个字符是否中心对称。
  • Dbt基本概念与快速入门
  • office 2021安装教程
  • C - Make Isomorphic题解
  • Java 类和对象-小结(重要)
  • 基于STM32设计的智能货架(华为云IOT)(225)
  • VUE
  • 跨平台集成:在 AI、微服务和 Azure 云之间实现无缝工作流
  • 深入理解算法效率:时间复杂度与空间复杂度
  • Spark_natural_join
  • 828华为云征文 | 华为云Flexusx与Docker技术融合,打造个性化WizNote服务
  • 深入理解中比较两个字符串差异的方法”或“高效比对字符串:diff-match-patch:c++实战指南
  • c++面向对象
  • 栈OJ题——用栈实现队列
  • 嵌入式初学-C语言-数据结构--七
  • 【linux基础】linux中的开发工具(4)--调试器gdb的使用
  • 问题及解决方案汇总
  • 结构体内存对齐
  • 【算法】动态规划—最长公共子序列
  • HTML+CSS - 网页布局之多列布局定位