有趣的大模型之我见 | Mistral 7B 和 Mixtral 8x7B

开发者告诉我们,有一些因素阻碍了他们更好更广泛地使用基础模型。比如,在可预见的将来,随着技术的新进步,不断有新的模型加入,同时模型的升级和迭代也在不断加速。那么,对于特定的用例,如何选择合适的模型或者几个相互配合的模型组合,这可能需要时间和资源。为了减少开发者在大模型选择上的试错成本,我想从 Amazon Bedrock 可调用的大模型入手,逐一谈谈他们有趣的灵魂,包括他们的出身,技术特点以及使用场景。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

首先让我们来谈谈目前刚刚在 Amazon Bedrock 上推出的两种著名的大型语言模型, Mistral 7B 和 Mixtral 8x7B。之所以要首先聊聊这两个模型,是因为 Mistral AI 已经根据 Apache 2.0 许可发布了 Mistral 7B 和 Mixtral 8x7B 的源代码,并表示这些模型 “可以不受限制地使用”。 这些模型的权重也可以通过其官网从其 CDN 下载。

在 Mistral 的文档中,他们展示了如何使用 SkyPilot 在包括 Amazon Web Services 在内的云端启动模型。他们还提供了有关如何使用 vLLM 在自己的(或云端)硬件上启动 Mistral 模型的说明。

在这里致敬所有为开源做出贡献和努力的人和组织。

Mistral 7B 和 Mixtral 8x7B 的出身

Mistral 7B 和 Mixtral 8x7B 是由 Mistral AI 特别面向开发人员设计和制作。其实 Mistral AI 是一家小型的法国初创公司,但拥有一支由科学家组成的核心团队, Mistral AI 的创始人 Arthur Mensch、Guillaume Lample 和 Timothee Lacroix 在人工智能/机器学习领域拥有丰富的经验。他们设计和制作大模型的目标是 “运送行之有效的东西”,而不是写白皮书。

他们是一群有趣的灵魂!

Mistral 7B

技术特点

2023 年 9 月,Mistral AI 发布了 Mistral 7B,这是一款 70 亿个参数的大语言模型(LLM)。与之前的许多 LLM 一样,Mistral 7B 是一款基于变压器的解码器模型。根据其白皮书提供的所有评估基准测试中,Mistral 7B 的表现优于最好的开放式 13B 模型(Llama 2),在推理、数学和代码生成方面,也超过了发布的最佳 34B 模型(Llama 1)。

image.png

图1: Mistral 7B | Mistral AI | Frontier AI in your hands

我好奇他的性能之所以优于 Llama 2 和 Llama 1 是否和它用于实现加快推理速度,在低推理成本情况下有效处理任意长度序列的机制和手段相关。

分组查询注意力 (Group Query Attention, GQA)

分组查询注意力(Group Query Attention,简称 GQA)是一种注意力机制,用于在查询-键-值结构中进行信息检索和关联。它是在 Transformer 模型的基础上提出的一种扩展,用于处理具有分组属性的查询和键值对。

为了更进一步理解这个机制,我们展开一下 Transformer 基于解码器模型的结构。

Transformer 语言模型在发展过程中一个重要突破是采用“多头自注意力架构”即“multi-headead self attention”。这个架构可以让模型学习输入序列中每个词与其他词之间的关系信息。

例如,对于句子“我有一个冰激凌要给你”,自注意力架构给了模型学习一个人拥有冰激凌,另一个人没有这个机会。“冰激凌”这个词很可能“关注”到“我”这个词,因为它们之间存在着逻辑关系。多头注意力机制进一步提升了模型学习序列依赖关系的能力。每个注意力头都可以专注于学习序列不同类型的关系,如语法关系和语义关系。

最后通过线性映射将各个注意力头的输出结果整合融合,从而获取更丰富的上下文信息。

因此,多头自注意力架构充分利用了输入序列中的全局上下文,使 Transformer 模型获得了强大的语言理解能力。

「《Attention Is All You Need》论文中提出的注意力可视化的一些方法」

image.png

为了让模型更好学习序列中词之间的这种关系,会采用复杂的矩阵乘法运算 key(K) 值、value(V) 值和查询 (Q) 值三个参数。简而言之,我们需要处理和存储大量的参数,以执行这些计算。具体参数数量取决于模型实现细节。“多头注意力”中的“多头”指每个注意力头试图学习输入序列不同关系特征。Mistral 和 Llama2 模型都采用了 32 个叠加层中含 32 个自注意力头的结构。即 32×32=1024 个注意力头。每个头含有数万到十万级别的参数。

所以这就解释了这些模型参数规模能达到十几亿的原因。

“自注意力”机制是通过 K、V 和 Q 值来计算的,起初,每个自注意力计算单元都有自己的 K、V 和 Q 值。随后提出了多查询注意力 (Multi-Query Attention,MQA),它在层中共享单独的 K 和 V 值来服务所有的 Q 值。 这大大减少了需要存储的参数数量,但模型质量降低,生成的效果不如原始设计。而分组查询注意力,即 Group Query Attention /GQA 技术使 K 和 V 值在一个可配置数量的 Q 值之间共享,即减少了参数又不影响模型效果。

image.png

来自论文 《GQA:Training Generalized Multi》:分组注意力

论文 《GQA:Training Generalized Multi》证明: “经过训练后的 GQA 质量可以接近多头注意力,速度与 MQA 相当”,既优化参数又保持效果。 Mistral 7B 论文表示:GQA 显著加快了推理速度,减少解码时的内存需求,支持更高批次处理,对实时应用至关重要。

总之,GQA 技术通过参数分组共享平衡存储与效果,有效提升了 Mistral 模型的性能。

滑动窗注意力 (Sliding Window Attention, SWA)

模型上下文长度越长,功能越强大?这一点是有争议的,比如 1000 词与 10 万词文本处理难度和效率差异很大。传统的 Transformer 注意力机制允许每个词与所有其他词交互,这在学习语义上非常强。但是随着上下文长度增长, 计算量会呈平方增长,计算开销提升很快。因此传统 Transformer 注意力在很长文本上的计算效率理论上会遇到瓶颈。

引入滑动窗注意力机制,即 SWA 很好的解决了这个问题。模型的上下文越长,它就越有用。想象一下,用 1000 个单词总结一页文本和用 10 万个单词总结整本书有何区别。

image.png

图片来源:https://arxiv.org/pdf/2310.06825.pdf?trk=cndc-detail

滑动窗口注意力 (SWA) 引入了一个可配置大小的 “注意力窗口”,这个窗口会滑过输入序列,而不是计算所有文本词汇之间的注意力值(权重)。它是计算窗口内词汇的注意力值,这减轻了计算量。一个可能的担忧是,对于很长序列来说,序列最后一个词汇可能无法 “关注” 开头词汇。虽然理论确实如此,但窗口外词汇仍受到窗口前面词汇影响,因为窗口带动上下文意义上的 “影响链”,通过各层传播。

Mistral 7B 论文中表示:“SWA 的设计旨在以更低的计算成本更有效地处理更长的序列,从而缓解 LLM 的常见局限性。”,“ 与 GQA 结合,两种注意力机制共同促进了 Mistral 7B 的性能和效率的提高。”

Mixtral 8x7B

技术特点

继 Mistral 7B 之后,Mistral AI 在 2023 年 12 月发布了 Mixtral 8x7B。Mixtral 8x7B 是一个采用稀疏混合专家机制即 Spars Mixture of Experts Model(SMoE)的大语言模型,它不仅具有高质量的效果,更重要的是其完全开放提供的预训练权重参数, 该模型采用 Apache 2.0 许可,这对开发者社区和后续研究都有很大价值。

有趣的是,这个模型与 Mistral 7B 具有相同的 Transformer 架构,甚至代码库也是一样的,仅仅在上层添加了少量实现稀疏混合专家机制即 SMoE 的代码。这一小修改却使模型效能有很大提升。白皮书中明确显示, Mixtral 8x7B 在各项基准测试中,表现优于或与 Llama 270B 和 GPT-3.5 相当。尤其在代码生成等任务上,Mixtra 8x7B 优势更为明显,远超 Llama 270B。同时 Mixtral 模型还可以微调成一个指令跟随模型,在 MT-Bench 上获得 8.3 分。

image.png

总之,采用 SMoE 结构,显著提升了 Mixtral 的计算效率和语言理解能力。

什么是Sparse Mixture of Experts(SMoE)?

我们知道模型各层中的多头自注意力机制即 multi-headead self attention,其实模型各层中还有另外一个组件“前馈网络” 即(Feedforward Neural Network,FFN)。FFN 的作用是对数据进行额外变换,提取更细腻的模式规律,从而提升模型学习和理解语言语义的能力。

每个自注意力头脑都试图学习输入序列不同词关系的一些特征信息。如果我们在 FNN 部分引入多个网络,那么每个网络是否也能学习语言的一些不同方面?也就是说,这些 FFN 网络将在语言的某些方面成为 “专家”。添加 FFN 可以增强模型的学习和理解语言演绎的能力。但是,简单的在层中添加更多 FFN 会增加模型的规模和复杂性,我们可以直接扩大 FFN 规模来实现相同的效果。从而避免复杂度的增加。为什么要这样做?答案是 “Sparsity,稀疏性”。每当谈论 Mixtral 模型时,请记住它是一个“稀疏性”的专家 Mixtral 模型。

image.png

图片来源:https://arxiv.org/pdf/2401.04088.pdf?trk=cndc-detail

在 FFN 子网络之前,存在一种 router/gate 机制,它能学习后决定哪些(一个或多个)专家网络对输入词汇(token)会产生最好的效果。对于序列中的每个 token,可能有所不同。正如论文所说:“对于每个词汇,在每个层中,路由器网络会选择两个专家网络处理当前状态,并结合它们的输出。尽管每个词汇只能看到两个专家,但在每个时间步骤所选的专家都可能有所不同。” 这意味着,对于任何一个通过整个网络的词汇(token),只使用网络的一个子集。这实现了稀疏激活,这使得网络效率更高。每个词汇都可以访问 47B 的参数,但在推理过程中只使用 13 活动参数。这一种技术增加了模型参数数量,同时控制了成本和延迟,因为模型每个词汇只使用总参数集的一小部分。

根据 Mistrals 的研究,该模型 “在所有评估的基准测试中,准确性表现都优于或与 Llama 270B 和 GPT-3.5(较大的模型)持平”

从数学理论出发,Mixtral 8x7B 是指每层有 8 位专家。它不是整个网络的 8 倍,而 “只是” FFN 子网络,再加上 router/gate 中的一些参数。所以 Mixtral 8x7B 的参数不是 560 亿(8x70亿),而是 467 亿,其中每个词汇/ token 仅使用 129 亿个参数。

什么是专家?

稀疏混合专家机制中使用 "专家 "这样的词,仅仅是为了描述模型结果,如果将这些 "专家 "拟人化,想象它们具有与人类相似的技能,比如,一位专家擅长法语,另一位专家擅长代码等,那么将于实际完全不符。

Mistral 在论文中指出:"出乎意料的是,我们并没有观察到根据主题分配专家的明显模式"。论文进一步说明了观察到的专家分配情况。

image.png

图片来源:https://arxiv.org/pdf/2401.04088.pdf?trk=cndc-detail

在论文中的这幅插图中,不同的颜色代表了模型在代码示例、数学样本和文本样本中学会使用的不同专家。这三列显示了模型不同层次中专家分配的差异。

正如标题所说:“专家的选择似乎更符合语法而不是领域,尤其是在初始层和最后一层。”

如何运行 Mistra 和 Mixtral 模型

在本地运行 Mistral 模型

即使您的机器没有 GPU,也可以在本地运行这些模型。

我在 MacBook Pro M2 上使用 32GB 内存,运行了一个高性能版本的 Mistral 7B,以及可以工作的 Mixtral 8x7B 版本,且没有特殊设置也没有优先关闭其他应用程序。这得益于模型本地运行社区的努力,他们通过量化 (quantisation) 进一步“缩减”模型规模。量化会将模型内如 16 位浮点 (FP16) 精度参数等浮点数,转换为更小的数值,如 8 位或者 4 位。这极大减小了模型大小,降低了运行时计算复杂度,并意味着模型可以在 CPU 上运行。当然,天下没有免费的午餐, 模型在生成过程中会损失一些精度,但它们的性能还是可以的。

量化过程很复杂, 但幸运的是,我们已经可以下载这些模型。

在普通计算设备上也可以评估和应用这些先进模型,真的很有意思。

image.png

ollama.com

Llama.cpp 项目提供了一个运行时环境,可以支持 Mistral/Mixtral 等模型。Ollama 项目进一步将其打包,只需使用 Ollama 下载模型文件,运行即可。完事儿了~! 使用极其简单~!(macOS 和 Linux 现已支持,Windows 支持即将推出。)

需要注意的是:这些不是 Mistral 模型的完整版本,而是量化后的本地版本,生产环境需要 GPU 等硬件加速支持,因此,它们适用于本地测试,但不适合生产环境部署。

在全托管的无服务器架构上运行

image.png

Amazon Bedrock 控制台页面

Amazon Bedrock 提供了一个单一的 API 接口,可连接各种先进的人工智能模型,例如 AI21 Labs、Anthropic、Cohere、Meta、Stability AI、Amazon 以及现在的 Mistral AI。

要在 Amazon Web Services 账户中访问这些模型,需要执行以下操作:

  • 在 Amazon Web Services console 中导航进入到 Amazon Bedrock 页面。Mistral 模型已在俄勒冈州上线,因此确认选择 “us-west-2” 地区。(更多地区即将推出,请检查其他地区是否支持)

  • 展开左侧的菜单,向下滚动并选择 “Model access(模型访问权限)”

image.png

Amazon Bedrock Console Page-Menu

  • 选择橙色的 “Manage model acess /管理模型访问权限” 按钮,然后向下滚动以查看新的 Mistral AI 模型。点击你需要模型旁边的复选框,然后单击 “save change/保存更改”。

image.png

Amazon Bedrock-Model Access

您现在可以访问模型了! 前往 Amazon Bedrock text playground,通过 prompt 开始你的体验。需要代码实现时,可以参考 Amazon SDK Code Example 的代码示例。

Happy Prompt!

延展阅读:

  • Community | Mistral AI - Winds of Change

  • Mistral AI models coming soon to Amazon Bedrock | AWS News Blog

  • Mistral AI | Frontier AI in your hands

文章来源:有趣的大模型之我见 | Mistral 7B 和 Mixtral 8x7B

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

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

相关文章

24计算机考研调剂 | (研究所)北京微电子技术研究所

北京微电子技术研究所2024年考研调剂信息 调剂信息 一、招生专业 二、调剂对象 统考科目为思想政治理论、英语(一)、数学(一);本科为电子科学与技术、微电子学、集成电路设计、电子信息工程、通信工程、计算机科学与…

代码随想录算法训练营 DAY 16 | 104.二叉树最大深度 111.二叉树最小深度 222.完全二叉树的节点个数

104.二叉树最大深度 深度和高度 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取…

8节点空间壳单元Matlab有限元编程 | 曲壳单元 | 模态分析 | 3D壳单元 | 板壳理论| 【源代码+理论文本】

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

linux 升级openssl1.1.1w 亲测记录

下载好openssl源码包,解压到指定目录下 tar -xzvf openssl-1.1.1w.tar.gz -C /usr/localcd openssl-1.1.1w/*预编译、编译、安装*/./config --prefix/usr/local/openssl sharedmake && make install备份配置系统中原有的文件、创建软链接、动态库查找路径配置文件 ld.s…

day-25 无重复字符的最长子串

思路:动态规划的思想,遍历字符串,每遇到一个新的字符,将其存入HashMap中,并给其一个唯一值value(value递增),当前字符若与HashMap中的字符都不一样,则存入HashMap中,若已经存在&…

剑指offer经典题目整理(七)

一、经典dp——最大子数组之和 1.链接 53. 最大子数组和 - 力扣(LeetCode) 2.描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 3.思路 这是…

深入BEV感知中的魔鬼细节:综述、评估和秘诀

深入BEV感知中的魔鬼细节:综述、评估和秘诀 论文链接:https://arxiv.org/pdf/2209.05324.pdf 学习感知任务的鸟瞰图(BEV)中的强大表示法是一种趋势,并引起了工业界和学术界的广泛关注。大多数自动驾驶常规方法是在前…

力扣---子集---回溯(子集型回溯)---递归

递归法思路: 首先考虑为什么能用递归(因为存在大问题和小问题之间的关系,大问题:从第 i 个数字到最后一个数字之间找子集,小问题:从第 i1 个数字到最后一个数字之间找子集)。其次,用…

力扣hot100题解(python版81-90题)

81、爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶示…

如何正确看待竞争对手

很多人一天到晚的抱怨说实体经济不行啦,互联网经济也不行啦,我跟你说,抱怨没有用,你抱怨,这个时代是这样,不抱怨它也是这样,你抱怨,它也在,你不抱怨它还在。不是实体经济…

基于springboot+vue的毕业论文管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

基于SpringBoot的网上订餐系统

技术:springbootvuemysql 一、系统背景 随着我国经济的飞速发展,人们的生活速度明显加快,在餐厅吃饭排队的情况到处可见,近年来由于新兴IT行业的空前发展,它与传统餐饮行业也进行了新旧的结合,很多餐饮商户…

ensp不同vlan间的互相通信

关于不同vlan之间的通信,本章做了最简洁的案例,表示说明 1. 网段设置 1.1 划分四个不同 的 vlan vlan网段vlan10192.168.10.254 /24vlan20192.168.20.254 /24vlan30192.168.30.254 /24vlan40192.168.40.254 /24 1.2 SW1的配置 #进入视图 sys #更改交…

微调alpaca-lora遇到的一些问题

1、环境简介 环境: 系统:Ubuntu torch:2.2.1 python:3.10 gpu:V100 16g peft:0.9.0 使用PEFT中的lora方式微调llama-2-7b-hf,项目地址:alpaca-lora 2、混合精度训练Tensor相互计算会…

第十九章 TypeScript 装饰器Decorator

Decorator 装饰器是一项实验性特性,在未来的版本中可能会发生改变 它们不仅增加了代码的可读性,清晰地表达了意图,而且提供一种方便的手段,增加或修改类的功能 若要启用实验性的装饰器特性,你必须在命令行或tsconfig…

Springboot+vue的高校教师科研管理系统+数据库+报告+免费远程调试

项目介绍: Javaee项目,springboot vue前后端分离项目 本文设计了一个基于Springbootvue的前后端分离的高校教师科研管理系统,采用M(model)V(view)C(controller)三层体系结构&#xf…

THM学习笔记—Bounty Hacker

nmap扫描,扫了一大堆但只有三个端口是开放的 试试ftp是否可以匿名登录 可以匿名登录,把里面的文件下载下来 查看里面的内容,猜lin为用户名,locks.txt为密码列表,使用hydra进行ssh登录。 找到密码了,进行ssh…

【Mybatis整合mysql之Json类型属性适配手把手】

【Mybatis整合mysql之Json类型属性适配&&手把手】 场景 JSON 数据类型是 MySQL 5.7.8 开始支持的。在此之前,只能通过字符类型(CHAR,VARCHAR 、TEXT或LONGTEXT )来保存 JSON 文档。在开发中发现,Mybatis查询…

AWS监控,AWS 性能监控工具

监控云部署的性能是 IT 环境正常运行的内在条件。AWS 云是一个架构良好的框架,管理员可以使用专用的AWS 性能监控工具增强服务的功能。执行AWS监视是为了跟踪在AWS环境中积极运行的应用程序工作负载和资源。AWS监视器跟踪各种AWS云指标,以帮助提高在其上…

电子证书查询系统如何制作证书?

1、制作空白证书:网上找一张证书背景图,用PPT工具或photoshop等图片处理工具,将证书上固定的文字打上,有公章的话贴上电子公章,不固定的内容留空白。 2、制作电子证书:上传前一步制作好的空白证书&#xf…