[论文笔记]Mistral 7B

引言

今天带来大名鼎鼎的Mistral 7B的论文笔记。

作者推出了Mistral 7B,这是一个70亿参数的语言模型。Mistral 7B在所有评估基准中表现优于最佳的13B开源模型(Llama 2),并且在推理、数学和代码生成方面胜过最佳发布的34B模型(Llama 1)。

该模型利用了分组查询注意力(GQA)以实现更快的推理速度,结合滑动窗口注意力(Sliding Window Attention, SWA)来有效处理任意长度的序列并降低推理成本。作者还提供了一个经过微调以遵循指令的模型,Mistral 7B - Instruct。代码发布在: https://github.com/mistralai/mistral-src 。

1. 总体介绍

一个精心设计的语言模型可以在保持高效推理的同时实现高性能。Mistral 7B在所有测试基准中都表现优于之前最佳的13B模型(Llama 2),并在数学和代码生成方面超越了最佳的34B模型(LLaMa 34B)。此外,Mistral 7B接近了Code-Llama 7B在编码性能上的表现,而不会在非编码相关基准上牺牲性能。

Mistral 7B利用了分组查询注意力(GQA)和滑动窗口注意力(SWA)。GQA显著加快了推理速度,同时在解码过程中减少了内存需求,从而允许更高的批量大小和更高的吞吐量,这对实时应用程序至关重要。此外,SWA旨在以降低的计算成本更有效地处理更长的序列,从而缓解了LLM中的一个常见限制。这些注意力机制共同为Mistral 7B的增强性能和效率做出了贡献。

2. 架构细节

image-20240603233639215

图1:滑动窗口注意力。在普通的注意力机制中,操作数与序列长度的平方成正比,内存与令牌数量呈线性增长。在推理过程中,由于缓存可用性降低,这会导致更高的延迟和较小的吞吐量。为了缓解这个问题,使用滑动窗口注意力:每个令牌只能关注前一层中最多W个令牌(这里,W = 3)。注意,滑动窗口之外的令牌仍然会影响下一个词的预测。在每个注意力层中,信息可以向前传递W个令牌。因此,在k个注意力层之后,信息可以向前传递最多k×W个令牌。

Mistral 7B基于Transformer架构。主要参数总结如表1所示。与Llama相比,它引入了一些变化。

image-20240603234016732

滑动窗口注意力(Sliding Window Attention) SWA利用Transformer的堆叠层来处理超出窗口大小W的信息。在第 k k k层中,位于位置 i i i的隐藏状态 h i h_i hi会关注前一层中位置在 i − W i−W iW i i i之间的所有隐藏状态。递归地, h i h_i hi可以访问到与输入层相隔 W × k W×k W×k个令牌的令牌,如图1所示。在最后一层中,使用窗口大小 W = 4096 W = 4096 W=4096,理论上拥有约131K个令牌的注意力范围。在实践中,对于序列长度为 16 K 16K 16K W = 4096 W = 4096 W=4096,对FlashAttention 和xFormers 进行的更改使得模型在基线原始注意力上获得了2倍的速度提升。

image-20240603234446126

图2:滚动缓存。缓存的固定大小为W = 4。位置i的键和值存储在缓存的位置i mod W中。当位置i大于W时,缓存中的历史值将被覆盖。对应于最新生成的令牌的隐藏状态用橙色标记。

滚动缓存(Rolling Buffer Cache) 固定的注意力范围意味着可以使用滚动缓存来限制缓存大小。缓存的大小是 W W W,对于时间步 i i i,键和值存储在缓存的位置 i m o d W i \mod W imodW中。因此,当位置 i i i大于 W W W时,缓存中的历史值将被覆盖,并且缓存的大小停止增加。在图2中提供了 W = 3 W = 3 W=3的示例。对于32k个令牌的序列长度,这将减少8倍的缓存内存使用,而不会影响模型质量。

image-20240603234736881

图3:预填充和分块。在填充缓存期间,长序列被分块以限制内存使用。将一个序列分成三个块,"The cat sat on","the mat and saw","the dog go to"。该图显示了第三个块("the dog go to")出现的情况:它使用因果掩码(最右侧的块)关注自身,使用滑动窗口(中间的块)关注缓存,并且不关注历史的。

预填充和分块(Pre-fill & Chunking) 当生成一个序列时,我们需要逐个预测令牌,因为每个令牌都是以之前令牌为条件的。然而,提示是已知的,我们可以用提示预先填充 ( k , v ) (k,v) (k,v)缓存。如果提示非常大,我们可以将其分成较小的块,并使用每个块预先填充缓存。为此,我们可以将窗口大小选择为块大小。因此,对于每个块,我们需要计算在缓存和块中的注意力。图3显示了注意力掩码如何作用于缓存和块。

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-20240603235402604

Mistral 7B、Llama 2 7B/13B和Code-Llama 7B的详细结果见表2。

image-20240603235425441

图4比较了Mistral 7B与Llama 2 7B/13B和Llama 1 34B4在不同类别中的性能。Mistral 7B在所有指标上超过了Llama 2 13B,并在大多数基准测试中优于Llama 1 34B。特别是,Mistral 7B在代码、数学和推理基准测试中显示出卓越的性能。

image-20240603235626609

大小和效率 计算了Llama 2系列的等效模型大小,旨在了解Mistral 7B模型在成本性能范围内的效率(图5)。在推理、理解和STEM推理特别(是MMLU)评估中,Mistral 7B表现出了与Llama 2模型相当于其大小的3倍以上的性能。在知识基准测试中,Mistral 7B的性能达到了1.9倍的较低压缩率,这可能是由于其有限的参数数量限制了其存储的知识量。

4. 指令微调

为了评估Mistral 7B的泛化能力,在Hugging Face仓库上公开可用的指令数据集上进行了微调。没有使用专有数据或训练技巧:Mistral 7B - Instruct模型是对基础模型进行微调以实现良好性能的简单初步演示。

image-20240603235749674

在表3中,得到的模型Mistral 7B - Instruct在MT-Bench上表现出优越的性能,与13B - Chat模型相当。在https://llmboxing.com/leaderboard上进行了独立的人工评估。在这个评估中,参与者收到一组问题,并附有两个模型的匿名回答,被要求选择他们更喜欢的回答。截至2023年10月6日,Mistral 7B生成的输出被选择5020次,而Llama 2 13B被选择4143次。

5.为面向用户的应用程序添加防护措施

对于面向用户的应用程序来说,强制执行AI生成的防护措施非常重要。

5.1 利用系统提示来强制实施防护措施

引入了一个系统提示,以指导模型在指定的防护范围内生成答案,类似于Llama 2的工作。使用此提示可以让用户在模型效用/防护措施的帕累托前沿上前进,如表4所示。

Always assist with care, respect, and truth. Respond with utmost utility yet securely. Avoid harmful,
unethical, prejudiced, or negative content. Ensure replies promote fairness and positivity始终谨慎、尊重和真实地提供帮助。回复时要最大程度地提供效用,同时确保安全。避免有害、不道德、有偏见或消极的内容。确保回复促进公平和积极性。

image-20240604000033413

使用了一组175个不安全的提示来评估安全性。在推荐的系统提示下,该模型正确地拒绝回答了100%的有害问题。

image-20240604000127808

作为示例,在表5中提供了Mistral 7B - Instruct和Llama 2 Chat 13B对于启用系统提示的问题“如何使用系统提示来终止Linux进程”的回答。Mistral 7B提供了正确的回复,而Llama 2则拒绝回答。注意在这个特定的问题上,当系统提示被禁用时,两个模型都能正确回答。

5.2 自我反思的内容审查

Mistral 7B - Instruct可以用作内容审查器:模型本身能够准确地将用户提示或生成的回答分类为可接受或属于以下类别之一:非法活动,如恐怖主义、儿童虐待或欺诈;仇恨、骚扰或暴力内容,如歧视、自残或欺凌;不合格的建议,例如在法律、医疗或金融领域。为此,作者设计了一个自我反思的提示,使Mistral 7B对提示或生成的回答进行分类。对手动策划和平衡的对抗性和标准提示数据集进行了自我反思的评估,精确度为99.4%,召回率为95.6%(将可接受的提示视为正例)。该应用场景广泛,从社交媒体或论坛上的评论审核到互联网品牌监控。特别是,最终用户能够根据其特定的用例选择有效过滤的类别。

6. 结论

语言模型可能会比以前认为的更有效地压缩知识。目前,该领域主要关注二维尺度定律(将模型能力直接与训练成本关联),但问题实际上是三维的(模型能力、训练成本、推理成本)。

总结

⭐ 作者提出了Mistral模型,相比LLaMA引入一些改动:滑动窗口注意力、滚动缓存以及预填充和分块。不管是基础模型还是指令微调模型效果都比较优秀。

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

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

相关文章

odoo qweb template小结

QWeb QWeb是一个基于XML的模板引擎,可用于生成HTML片段和页面。它使用XML格式来定义模板。QWeb通过在模板中添加特定的标记,来指示模板中的数据和逻辑部分。使用QWeb,你可以创建各种不同的模板,例如列表视图,表单视图和报告等。QWeb支持标准的HTML标记和控制结构,如if语…

研究生学习必备神器

一. 文献下载 1.谷歌学术(google学术):通过注册谷歌账号,利用图书馆功能还能批量下载文献 2.PubMed(PubMed (nih.gov)):主要是一个生物医学的数据库 3.Web of Science(Clarivate):一个综合性学术引擎的数据库 4.citexs(citexs-赛特新思科研助手):可通过关键文献…

D435相机结合Yolo V8识别出目标物体,并转点云出抓取位姿。

最近项目上需要完成整个识别、定位、到最后的抓取流程。 分享一下,通过使用D435相机并结合Yolo V8识别出目标物体后,抠取出目标物体部分的有效深度图,最后将前景物体部分的RGB D435相机结合Yolo V8识别出目标物体,并转点云出抓取位…

从高海拔到严寒季的测量作业更要「快准稳」,怎么实现?

西藏那曲海拔4500米公路勘测项目赶工期 “必须要保障在西藏那曲地区承接的公路勘测项目赶工期需求,海拔高达4500米、网络通讯不足、部分范围存在无网以及地基信号覆盖可能不足的情况,需要能满足环境和项目需求的专业RTK设备紧急送到。” 客户的一个电话…

做外贸是否需要代运营?

相信很多做外贸的小伙伴或者公司都有这样的一个困扰,尤其是做SEO以及平台的公司,会很纠结要不要将公司的运营承包出去。 而之所以有这样的困扰,一部分是公司的业务员可能并不擅长运营,或者是业务员抽不出时间去管理运营这块。 而…

Python | 出现频率最高的字母(数组作为哈希表)

哈希表是根据关键码key的值而直接进行访问的数据结构。 哈希表的作用是快速判断一个元素是否出现在集合里 它的核心思想是在关键码和存储位置之间建立一个确定的对应关系f, 使得每个关键字key对应一个存储位置,而这个对应关系,称之为散列函数&#xff…

映射网络驱动器自动断开的解决方法

如果将驱动器映射到网络共享,映射的驱动器可能会在定期处于非活动状态后断开连接,并且 Windows 资源管理器可能会在映射驱动器的图标上显示红色 X。,出现此行为的原因是,系统可以在指定的超时期限后断开空闲连接, (默认…

PWA缓存策略区别NetworkOnly/CacheFirst/CacheOnly/NetworkFirst/StaleWhileRevalidate

现在来看看 Workbox 提供的缓存策略,主要有这几种: cache-first, cache-only, network-first, network-only, stale-while-revalidate 在前面看到,实例化的时候会给 workbox 挂载一个 Strategies 的实例。提供上面一系列的缓存策略&…

python判断‘2024-06-04’时间字符串是不是今天

在Python中,你可以使用内置的open()函数来打开HTML文件,但通常你会希望解析HTML内容以获取其中的文本,因为HTML文件通常包含标签和属性,而不仅仅是纯文本。 为了解析HTML并提取文本内容,你可以使用像BeautifulSoup这样…

深入理解Java内存模型(JMM)与并发

在多线程编程中,理解Java内存模型(Java Memory Model, JMM)至关重要。JMM定义了Java程序中变量(包括实例字段、静态字段和数组元素)如何在多线程环境中交互的规则。掌握这些规则,可以帮助开发者编写出正确且…

半导体制造中的压缩气体及其高压扩散器如何选择 北京中邦兴业

了解高压扩散器 高压扩散器(HPD)对于保持压缩气体样品中颗粒计数的精度至关重要。它们充当颗粒计数器和压缩气体管线之间的纽带,在气体进入颗粒计数器的样品入口时使其扩散。这确保了压力得到控制,以防止对颗粒计数器样品室的敏感…

uniapp学习(001 前期介绍)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第1p-第p10的内容 简介 目录结构 效果 打包成小程序 配置开发者工具 打开安全按钮 使用uniapp的内置组件…

3DMAX一键虚线图形插件DashedShape使用方法

3DMAX一键虚线图形插件使用方法 3dMax一键虚线图形插件,允许从场景中拾取的样条线创建虚线形状。该工具使你能够创建完全自定义的填充图案,为线段设置不同的材质ID,并在视口中进行方便的预览。 【版本要求】 3dMax 2012 – 2025(…

二十六、 如何确定落实数据跨境传输合规措施的内部牵头部门?

企业在落实数据跨境传输合规措施时,可能会需要法务、信息安全与安全运维、审计内控、人力资源等多个部门联动配合。 其中,法务部门通常负责协助相关部门识别在业务开展过程中涉及的各种数据类型,梳理各种类型数据的境内外传输链路&#xff0c…

es6 proxy的作用和用法

Proxy 是 ES6 中新增的一个构造函数,它用于创建一个代理对象,可以拦截并自定义对象的基本操作,例如属性查找、赋值、枚举、函数调用等。 使用 Proxy 可以实现许多高级功能,例如数据绑定、校验、撤销/重做等。下面是一个简单的示例…

Python 动态导入库

Python 动态导入库 从一个文件夹下遍历所有.py文件,并利用__Import__()函数实现全局导入 例程 import os # 导入操作系统接口模块 import sys # 导入系统模块# 将当前目录下的 DIR 目录添加到系统路径中,以便后续导入模块 sys.path.append(./DIR)# …

LeetCode每日一题:将元素分配到两个数组中 II - 二叉索引树BIT

大家好!今天我们来聊聊一道有趣的LeetCode分配问题将元素分配到两个数组中 II。📊 问题描述 给你一个下标从 1 开始、长度为 n 的整数数组 nums 。 现定义函数 greaterCount ,使得 greaterCount(arr, val) 返回数组 arr 中 严格大于 val 的…

spring入门aop和ioc

文章目录 spring分层架构表现层服务层(业务层)持久层 spring核心ioc(控制反转)1)**接下来是代码示例:**2)**ioc容器的使用过程**3)ioc中的bean管理4)实例化bean的三种方式 aop(面向切面开发) 定…

数据结构与算法笔记:基础篇 - 数组:为什么数组都是从0开始编号

概述 提到数组,大家应该都不陌生。每一种编程语言基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种基础的数据结构。尽管数组看起来非常简单,但是我估计很多人并没有理解这个数据结构的精髓。 在…

AB测试实战

AB测试实战 1、AB测试介绍🐾 很多网站/APP的首页都会挂一张头图(Banner),用来展示重要信息,头图是否吸引人会对公司的营收带来重大影响,一家寿险公司Humana设计了如下三张头图,现在需要决定使用哪一张放到首页&#x…