读《Mixtral of Experts》

摘要

稀疏混合专家(SMoE) 语言模型Mixtral 8x7B(那大概可以理解成他是一个缝合怪,把所有的任务模型缝合到一起,然后有一个类似打分投票的路由机制来针对输入问题选择任务子模型从而得到针对性的结果。)。Mixtral具有与Mistral 7B相同的架构,不同之处在于每层由8个前馈块(即专家)组成。对于每一个令牌,在每一层,路由器网络都会选择两名专家来处理当前状态并组合他们的输出。尽管每个令牌只能看到两个专家,但在每个时间步长选择的专家可能不同。结果,每个令牌都可以访问47B参数,但在推理期间仅使用13B活动参数。Mixtral是用32k个令牌的上下文大小进行训练的,在所有评估的基准中,它都优于或匹配Llama 2 70B和GPT-3.5。特别是,Mixtral在数学、代码生成和多语言基准测试方面大大优于Llama 2 70B。我们还提供了一个根据说明进行微调的模型,Mixtral 8x7B–Instruction,它在人类基准测试上超过了GPT-3.5 Turbo、Claude-2.1、Gemini Pro和Llama 2 70B–聊天模型。基本模型和指令模型都是在Apache 2.0许可证下发布的。

引言

由于Mixtral只对每个令牌使用其参数的子集,因此在低批量时可以实现更快的推理速度,在大批量时可以获得更高的吞吐量。Mixtral是一个稀疏的专家混合网络。它是一个仅解码器的模型(那就意味着它更多地在意输出,所以和bert是相反的极端,bert更侧重于完型理解,Mixtral侧重于生成),其中前馈块从一组8个不同的参数中选取。在每一层,对于每一个令牌,路由器网络选择其中两个组(“专家”)来处理令牌,并将其输出相加。这项技术增加了模型的参数数量,同时控制了成本和延迟,因为模型每个令牌只使用总参数集的一小部分。

使用32k令牌的上下文大小使用多语言数据进行预训练的

混合专家层。每个输入矢量由路由器分配给8个专家中的2个。该层的输出是两个选定专家的输出的加权和。在Mixtral中,专家是一个标准的前馈块,就像在vanilla transformer架构中一样。
在这里插入图片描述

Mixtral在数学、代码生成和需要多语言理解的任务方面表现出卓越的能力,在这些领域显著优于Llama 2 70B。实验表明,无论序列长度和信息在序列中的位置如何,Mixtral都能够成功地从其32k个令牌的上下文窗口中检索信息。我们还介绍了Mixtral 8x7B–Instruction,这是一种使用监督微调和直接偏好优化进行微调以遵循指令的聊天模型[25]。在人类评估基准上,它的性能显著超过了GPT-3.5 Turbo、Claude-2.1、Gemini Pro和Llama 2 70B聊天模型。Mixtral–Instruction还展示了减少的偏见,以及在BBQ和BOLD等基准中更平衡的情绪。

那总结一下就是:
总参数可以增多,因为实际每token利用参数少,节省复杂度成本
在数学、代码生成和多语言领域出色
Mixtral 8x7B–Instruction聊天更客观沉稳

架构细节

提到专家层的稀疏性,我的理解是这个专家门控遇到稀疏的张量会使得大部分的专家权重为0,从而避免计算这些多余的内容,从而达到门控、路由等等达到有选择有针对的效果。

至于这个专家权重的得到,

  1. 输入x会与门控网络的权重Wg相乘,得到logits。
  2. Top-K 操作会从这些 logits 中选择 K 个最大的值。这意味着只有部分专家(即得分最高的 K 个)会被选中来处理当前的 token(也就是x)
  3. 然后通过 Softmax函数将这些 Top-K 的 logits 转化为概率分布,即权重 G(x)。
  4. 接下来,模型计算每个专家网络 Ei(x)的输出,并将这些输出乘以对应的权重 G(x)i。由于大多数权重为零(即那些没有被选中的专家),模型实际上不会计算这些专家的输出,从而节省了计算资源。(所以实际利用的参数量只和k有关)
  5. 最后,模型将所有被选中的专家的加权输出相加,形成最终的输出

可以单/多GPU处理,但是多GPU分布式时需要注意均匀分配工作负载

对于Transformer结构来说,不论是在自然语言处理(NLP)还是计算机视觉(CV)领域,它都是以一次处理整个序列的方式运行的。即使是在处理图像的时候,所有的patches(tokens)也是作为序列的一部分一起处理的。
当论文中提到“MoE layer is applied independently per token”时,并不是指物理上独立地单个处理每个token。而是指在计算过程中,每个token都会通过MoE层,并且每个token都可以独立地选择它的“专家”或参数集合。这个过程在模型的内部是并行化的,并且是由深度学习框架在后台处理的。模型并不是逐个序列化地处理每个token,而是在整个批次的tokens上并行地应用MoE层。
所以,虽然处理是“独立”于每个token的,但这并不意味着在硬件上每个token是单独处理的。在硬件上,这些操作仍然是在一个批次的数据上高度并行化的,以利用现代GPU的并行处理能力。这样的设计旨在保持Transformer模型在处理大规模数据时的高效率,同时通过MoE层引入更多的模型容量和灵活性。

结果

与llama打擂台
•常识推理(0-shot): Hellaswag [32], Winogrande [26], PIQA [3], SIQA [27], OpenbookQA [22], ARC-Easy, ARC-Challenge [8], CommonsenseQA[30]
•世界知识(5-shot): NaturalQuestions [20], TriviaQA[19]
•阅读理解(0-shot): BoolQ [7], QuAC[5]
•数学:GSM8K [9] (8-shot) with maj@8和Math [17] (4-shot) with maj@4
•代码:Humaneval [4] (0-shot)和MBPP [1] (3-shot)
•大众综合结果:MMLU16、BBH29和AGI Eval34

路由分析

专家模型的选择并没有显示出强烈的针对特定领域问题的倾向性。这意味着专家子模型并不是专门为解决某个特定领域的问题而训练的。专家并没有在某个具体问题上表现出专业化的行为,所以它们不太可能被单独摘出来单独作为针对特定问题的模型。

这样的结果可能意味着Mixtral模型的路由器在分配任务给专家时,侧重于更细粒度的特征而非整体的领域或主题。

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

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

相关文章

尝试添加服务器中正在运行的docker容器时报错:当前用户没有运行“docker”的权限

尝试添加服务器中正在运行的docker容器时报错:当前用户没有运行“docker”的权限 环境 1,通过vscode ssh到服务器的 2,服务器端有一个contianer,但是无法通过vscode的Dev contianer组件将服务器中正在运行的contianer添加过来 3…

python爬虫实战(9)--获取澎pai热榜

1. 需要的类包 import pandas as pd import requests2. 请求地址 通过分析,数据可以直接从接口获取,无需解析页面标签,直接取出我们需要的数据即可。 def fetch_hot_news(api_url):response requests.get(api_url)if response.status_cod…

设计模式——解释器模式

更多内容,前往IT-BLOG 在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的表达式(例如:正则表达式等),那么这些问题实例将是该表达式的一些句子…

yolov5_master的下载、环境搭建、数据处理及训练全过程

本文借用了以下微博的文章,觉得写的比较全,所以照抄了过来,并且搭建了一遍可以正常训练,在这里作为笔记以后用的时候方便找,这个yolov5_master的使用可以将pth模型文件转换为onnx文件,进而转换为rknn文件&a…

Hotspot源码解析-第十七章-虚拟机万物创建(三)

17.4 Java堆空间内存分配 分配Java堆内存前,我们先通过两图来了解下C堆、Java堆、内核空间、native本地空间的关系。 1、从图17-1来看,Java堆的分配其实就是从Java进程运行时堆中选中一块内存区域来映射 2、从图17-2,可以看中各内存空间的…

HTTPS详解及openssl简单使用

OpenSSL 中文手册 | OpenSSL 中文网 本文介绍https传输协议中涉及的概念,流程,算法,如何实现等相关内容。 HTTP传输过程 HTTP 之所以被 HTTPS 取代,最大的原因就是不安全,至于为什么不安全,看了下面这张图…

200行C++代码写一个QT串口助手

前言 今天分享一个用QT写的串口助手,关键代码会直接在文章的对应位置贴出,完整的工程文件(用的VS 2019)可以进入我的主页免费下载,也可以关注我的公众号“折途想要敲代码” 回复关键词“qt串口助手”免费获取。 …

基于ssm快餐店点餐结算系统的设计与实现+vue论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装快餐店点餐结算系统软件来发挥其高效地信息处理的作用&…

自定义一个对象【minio】

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 相关文章推荐: 对象存储MinIO的简介与部署 两种MinIO分布式集群部署方式 记录一次跨越16个月的minio版本升级与数据迁…

JS 高频面试题

JS 的数据类型有哪些,有什么区别 基本数据类型(Undefined、Null、Boolean、Number、String、Symbol) 引用数据类型(对象、数组和函数) 区别: 原始数据类型直接存储在栈(stack)中的简…

DeepSeek 发布全新开源大模型,数学推理能力超越 LLaMA-2

自从 LLaMA 被提出以来,开源大型语言模型(LLM)的快速发展就引起了广泛研究关注,随后的一些研究就主要集中于训练固定大小和高质量的模型,但这往往忽略了对 LLM 缩放规律的深入探索。 开源 LLM 的缩放研究可以促使 LLM…

Leetcode 1049 最后一块石头的重量II

题意理解&#xff1a; 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。 思路转化&#xff1a;我们可…