优雅谈大模型11:Mistral

news2025/7/19 9:51:56

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

Mistral 7B是AI社区中讨论最多的语言模型之一,它是由Mistral AI于 2023年10月在论文“Mistral 7B”中引入的,Mistral AI是一家法国初创公司,也是目前开源大型语言模型研发的领先公司。正如在原始论文中提到的那样,Mistral经过精心设计,具有卓越的性能和效率,优于最好的开放式13B。在初步介绍了Transformer的架构以及注意力机制之后,将Mistral 7B的介绍放在这个时间节点,目前是对两者进行对比,让读者有更深的印象。

Mistral 7B

Mistral 7B 是decoder-only的模型,这意味着它有着类似于transformer架构的解码器模块。如今大多数语言模型都是解码器模型,因为它们的场景不是服务于双向处理的文本生成。Mistral 7B使用大小为4096的Embedding<移步“初识Embedding”>,这意味着每个标记都由 4096 维向量表示。注意力块有32个head<移步“深入注意力机制”>,而Transformer 有8个head,但Mistral使用multi-head注意力机制的变种,带有滑动窗口的分组查询的注意力 (GQA-Grouped Query Attention)。Mistral 7B的上下文长度为 8192,这意味着在预测序列中的下一个Token,它最多可以带上8192个Tokens。

滑动窗口注意力

Mistral 7B引入的较新概念之一是滑动窗口注意力,而不是通常的多头注意力。在正常的self-attention的机制中,每个Token都和它前面的所有Token都进行注意力分析。而Mistral采用的方式则是使用大小为 w 的滑动窗口,该窗口不允许Token与超出窗口的Token进行注意力联动。

如上图所示,窗口大小为3与因果掩码一起极大地有助于加快训练和推理速度,执行了更少的点积计算。聪明的读者会想到会不会导致输出质量下降,毕竟无法捕获完整的上下文。

其实大语言模型由多个相互堆叠的转换器块(Block)组成,意味着有n个转换器块一个堆叠一个。在 Mistral 7B 的情况下是 32 个。这允许Token间接查找与其他Token的关系。

如上图最左侧的图形所示,引入了滑动窗口,Token之间的注意力就需要间接的关联。虽然“on”不考虑第一个单词“The”,但由于堆叠变压器块的传递性质,“on”一词间接地与“The”一词有关。大白话的讲,滑动窗口注意力机制将直接注意力限制在有限的窗口,然后通过多层转换器的模块使得信息在整个序列中传播。<有点类似CNN,下图左>。

滚动缓冲区

Mistral的另一个主要组件是具有滚动缓冲区的KV Cache。由于Mistral是仅解码器模型,因此它是围绕着针对下个Token的预测任务进行训练。

它的推理方式是:从开始Token的特殊令牌为输入开始的标记,然后生成第一个Token。紧接着使用开始Token和第一个生成的Token作为上下文生成第二个Token,如此类推,直到遇到另一个称为结束Token的特殊Token。

因此,在每个时间步都会预测下个Token,将其与输入连接起来并重复该过程。为了避免重复在上个时间步中已计算过的的大量冗余计算,Mistral 采用一种称为键值(KV) 缓存的方法来优化此过程,其中仅缓存键和值向量,同时在每个步骤更新查询向量。这允许模型在多个步骤中重复的使用键和值向量,从而减少冗余计算加快推理速度。

Mistral在注意力块中采用了滑动窗口技术,因此不需要对不属于窗口大小的Token执行计算。因此缓存的大小限制在滑动窗口的范围。在实际工作中,它会循环覆盖之前的缓存,节省了空间的占用率。

当然,语言模型通常与一些PROMPT一起配合使用,由于在 Mistral 中使用了 KV 缓存,可以进行预填充KV缓存。如果PROMPT非常大,可以将其分块成更小的块,并用每个块预填充缓存。

Mixtral 8x7B

Mistral AI还在2024年1月的论文“Mixtral of Experts”中介绍了Mixtral 8x7B,它与Mistral 7B具有相同的架构,但引入了稀疏混合专家的概念,其中每层由8个前馈块组成,称为专家<具体可以移步链接>。专家混合是一种集成技术,在这种技术中,有多个“专家”模型,每个模型都对数据的一个子集进行训练,然后将专家的输出组合在一起以产生一个单一的输出。

Mixtral 8x7B和Mixtral 7B的参数对比

在Mixtral 8x7B中,对于每个Token,路由器网络在每一层都会选择两个专家来处理当前状态并组合他们的输出。因此,每个Token都可以访问 47B参数,但在推理过程中仅使用13B的激活参数。如此可以训练一个具有大量参数的语言模型来捕获更多信息,但不会牺牲推理时间。

下面为一个例子,专家的选择似乎更多地与语法而不是领域保持一致,尤其是在初始层和最终层。

 

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

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

相关文章

android studio4.1后不能ButterKnife

麻蛋L最近发现 android studio不能使用ButterKnife啦&#xff01;ButterKnife Injections不维护&#xff0c;butterknife Zelezny也不维护&#xff01;&#xff01;&#xff01;日…难受&#xff0c;兄弟们换下一家&#xff1a;IDsCreate&#xff0c;一毛一样的好用&#xff01…

2024年计算机科学与电子信息工程国际会议(ICSEIE 2024)

2024 International Conference on Computer Science and Electronic Information Engineering 【1】大会信息 会议简称&#xff1a;ICSEIE 2024 大会时间&#xff1a;2024-07-19 大会地点&#xff1a;中国苏州 截稿时间&#xff1a;2024-07-05(以官网为准&#xff09; 审稿通…

git提交错了?别慌,直接删除提交记录

git revert 和git reset &#xff01;这两个命令都有撤销操作的功能&#xff01;哪一个可以删除提提交记录&#xff1f;&#xff1f;&#xff1f; 使用git revert撤销提交 revert的英文释义是回复、恢复&#xff08;到原来的状态&#xff09; 作用 git revert 是 Git 中用于撤…

IntelliJ IDEA 用maven创建web项目

前言 已经安装并配置好Tomcat。具体步骤&#xff1a;Tomcat安装及环境变量配置(一看就会)-CSDN博客​编辑https://blog.csdn.net/longyongyyds/article/details/135825647 具体步骤 1.新建一个maven项目 2&#xff0c;配置好tomcat服务器 3.运行测试一下 maven教程&#xf…

搜维尔科技:特斯拉称工厂内有两台人形机器人开始自主工作

搜维尔科技消息&#xff0c;据外电报道&#xff0c;特斯拉声称&#xff0c;其目前拥有两台 Optimus 人形机器人在工厂内自主工作&#xff0c;这尚属首次。 如果目前这场薪酬方案混乱有什么好处的话&#xff0c;那就是特斯拉几乎看起来又有了一个公关部门。 当然&#xff0c;其…

3d模型文件格式有那些,什么区别?---模大狮模型网

3D模型文件格式有很多种&#xff0c;每种格式都有其特点和应用场景。常见的3D模型文件格式包括OBJ、FBX、STL、3DS、DAE等&#xff0c;下面将逐一介绍这些格式的区别。 1. OBJ格式&#xff1a;OBJ是一种开放的3D模型文件格式&#xff0c;可以被几乎所有的3D软件所支持。OBJ格式…

Linux:线程概念 线程控制

Linux&#xff1a;线程概念 & 线程控制 线程概念轻量级进程 LWP页表 线程控制POSIX 线程库 - ptherad线程创建pthread_createpthread_self 线程退出pthread_exitpthread_cancelpthread_joinpthread_detach 线程架构线程与地址空间线程与pthread动态库 线程的优缺点 线程概念…

笔记98:按列压缩矩阵 csc_matrix 的 “含义”

1. 如何按列压缩矩阵&#xff1a; 注&#xff1a;按列压缩&#xff08;Compressed Sparse Column -- CSC&#xff09;&#xff0c;是一种使用三个特征数组就可以表示整个矩阵的方法&#xff1b; 标准二次规划问题 &#xff1a;状态量&#xff1a;矩阵&#xff1a;向量&#xff…

11_从注意力机制到序列处理的革命:Transformer原理详解

1.1 简介 Transformer是一种深度学习模型&#xff0c;主要用于处理序列数据&#xff0c;尤其是自然语言处理任务&#xff0c;如机器翻译、文本摘要等。该模型由Vaswani等人在2017年的论文《Attention is All You Need》中首次提出&#xff0c;它的出现极大地推动了自然语言处理…

确定性网络_v0

目录 一、背景二、技术参考文献 一、背景 确定性网络&#xff08;Deterministic Networking&#xff09;是提供确定性服务质量的网络技术&#xff0c;是在以太网的基础上为多种业务提供端到端确定性服务质量保障的一种新技术。通过对网络数据转发行为的控制&#xff0c;将时延…

Ubuntu系统设置中文输入法

重新设置超级用户权限(root)密码(非必要) sudo passwd root 需要注意的是Ubuntu的root密码不能少于8个字符 设置成功后输入命令和新的密码即可无需输入sudo启用root命令 su - 更新软件包列表 sudo apt update sudo apt upgrade 安装fcitx5输入法框架 个别情况需要卸载旧的…

陪诊小程序开发,陪诊师在线接单

近几年&#xff0c;陪诊师成为了一个新兴行业&#xff0c;在科技时代中&#xff0c;陪诊小程序作为互联网下的产物&#xff0c;为陪诊市场带来了更多的便利。 当下生活压力大&#xff0c;老龄化逐渐严重&#xff0c;年轻人很难做到陪同家属看病。此外&#xff0c;就诊中出现了…

【Hive下篇: 一篇文章带你了解表的静态分区,动态分区! 分桶!Hive sql的内置函数!复杂数据类型!hive的简单查询语句!】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;本篇文章主要分享的是大数据开发中hive的相关技术。连接查询&#xff01;正则表达式&#xff01; 虚拟列&#xff01;爆炸函数&#xff01;行列转换&#xff01; Hive的数据压缩和数据存储…

怎么提升机器人外呼的转化效率

在某些情况下&#xff0c;如市场调查、产品推广等&#xff0c;语音机器人可以高效地完成大量的呼叫任务&#xff0c;并能通过预设的语音脚本和智能识别功能&#xff0c;初步筛选和分类潜在客户。此时&#xff0c;不转人工可能更为高效和经济。 然而&#xff0c;在一些需要深度沟…

kettle从入门到精通 第六十九课 ETL之kettle kettle cdc mysql,轻松实现增量同步

1、之前kettle cdc mysql的时候使用的方案是canalkafkakettle&#xff0c;今天我们一起学习下使用kettle的插件Debezium直接cdc mysql。 注&#xff1a;CDC (Change Data Capture) 是一种技术&#xff0c;用于捕获和同步数据库中的更改。 1&#xff09;Debezium步骤解析mysql b…

喜讯:NetMarvel 深度合作伙伴「点金石」斩获2024·MAMA 营销增长奖

全球市场瞬息万变&#xff0c;如何让增长做到有迹可循&#xff1f; 5月20日&#xff0c;由 AppsFlyer 举办的「2024 MAMA 移动互联网高层峰会」在三亚拉开序幕。在本届颁奖典礼上&#xff0c;NetMarvel 深度合作伙伴——点金石&#xff08;GameGoing&#xff09; 荣获「营销增长…

为什么要进行数据库设计?

本文介绍数据库设计的定义、知识要求和设计的内容。 01、数据库设计的定义和知识要求 数据库设计是指对于一个给定的应用环境,根据用户的需求,在某一具体的数据库管理系统上,构造一个性能良好的数据模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的信…

从 PERL 脚本获取输出并将其加载到 MySQL 数据库的解决方案

1、问题背景 有一段 Python 脚本可以调用 Perl 脚本来解析文件&#xff0c;解析后&#xff0c;Perl 脚本会生成一个输出&#xff0c;这个输出将被加载到 Python 脚本中的 MySQL 数据库中。Python 脚本如下&#xff1a; pipe subprocess.Popen(["perl", "./pa…

【方法】如何解除PDF“打开密码”?

很多人会给PDF文件设置密码保护&#xff0c;防止文件被随意打开。那如果后续想要解除“打开密码”&#xff0c;如何操作呢&#xff1f; 首先&#xff0c;我们要分两种情况来看&#xff0c;一种是知道密码的情况下&#xff0c;不需要保护文件了&#xff0c;也就是不想每次打开P…

Requests —— 请求头设置!

前戏 在我们进行自动化测试的时候&#xff0c;很多网站都会都请求头做个校验&#xff0c;比如验证 User-Agent&#xff0c;看是不是浏览器发送的请求&#xff0c;如果我们不加请求头&#xff0c;使用脚本访问&#xff0c;默认User-Agent是python&#xff0c;这样服务器如果进行…