Mixtral

24

Mixtral8x7B现已在Amazon SageMaker JumpStart上线

by Rachna Chadha Karl Albertsen Fabio Nonato de Paula Ashish Khetan Kyle Ulrich 和 Christopher Whitten 发布于2023年12月22日公告 最佳实践 技术指南永久链接评论 分享:

今天,我们非常高兴地宣布由Mistral AI开发的Mixtral8x7B大型语言模型(LLM)已通过Amazon SageMaker JumpStart向客户提供,并支持一键部署以进行推理。Mixtral8x7B LLM是一个经过预训练的稀疏混合专家模型,基于7亿个参数构建,并在每个前馈层中包含八个专家。您可以通过SageMaker JumpStart试用此模型,这是一个提供算法和模型访问的机器学习(Machine Learning ML)中心,以便您快速开始接触机器学习。在本文中,我们将介绍如何发现和部署Mixtral8x7B模型。

关键要点

Mixtral8x7B是一个强大的大型语言模型,支持多种语言及代码生成。该模型具有优异的性能,在多个NLP基准上表现超过传统模型。通过Amazon SageMaker JumpStart,您可以轻松访问和部署该模型。

Mixtral8x7B介绍

Mixtral8x7B是Mistral AI开发的基础模型,支持英语、法语、德语、意大利语和西班牙语文本,并具备代码生成能力。它可用于多种应用场景,如文本摘要、分类、文本完成和代码补全,且在聊天模式下表现优异。为了展示模型的灵活性,Mistral AI还发布了一款适用于聊天场景的Mixtral8x7Binstruct模型,该模型经过多种公开对话数据集的微调。Mixtral模型支持最大32000个token的上下文长度。

Mixtral8x7B在性能上显著提升,稀疏混合专家架构使其在Mistral AI测试的12项自然语言处理(NLP)基准中,有9项的表现超过了之前的最先进模型。Mixtral的性能与其尺寸相比,匹敌或超越多达10倍的其他模型。通过每个token只使用部分参数,该模型在推理速度和计算成本上也优于同等大小的稠密模型例如,总参数量为467亿,但每个token仅使用129亿的参数。这种高性能、多语言支持和计算效率的结合,使得Mixtral8x7B成为NLP应用的理想选择。

此模型在Apache 20许可证下提供,用户可以在没有限制的情况下使用。

什么是SageMaker JumpStart

利用SageMaker JumpStart,机器学习从业者可以从不断增涨的最佳基础模型列表中进行选择。该平台允许ML从业者将基础模型部署到专用的AWS SageMaker实例中,且处于网络隔离的环境内,并利用SageMaker进行模型的训练和部署以实现自定义。

现在,您可以通过Amazon SageMaker Studio的少量点击或通过SageMaker Python SDK以编程方式发现和部署Mixtral8x7B,从而在SageMaker的各项功能组合中获得模型性能和MLOps控制,如Amazon SageMaker Pipelines、Amazon SageMaker Debugger或容器日志。该模型在AWS安全环境内被部署,受限于您的VPC控制,以确保数据安全。

发现模型

您可以通过SageMaker JumpStart在SageMaker Studio UI和SageMaker Python SDK中访问Mixtral8x7B基础模型。在本节中,我们将介绍如何在SageMaker Studio中发现这些模型。

SageMaker Studio是一个集成开发环境(IDE),提供一个基于Web的可视化界面,您可以访问专门构建的工具,进行所有ML开发步骤,从准备数据到构建、训练和部署ML模型。有关如何开始使用SageMaker Studio的详细信息,请参见Amazon SageMaker Studio。

在SageMaker Studio中,您可以通过在导航窗格中选择JumpStart访问SageMaker JumpStart。

在SageMaker JumpStart主页,您可以在搜索框中搜索“Mixtral”。搜索结果中会显示Mixtral 8x7B和Mixtral 8x7B Instruct。

您可以选择模型卡查看关于模型的详细信息,例如许可证、训练所用数据和使用说明。您还会找到Deploy(部署)按钮,可以用来部署模型并创建一个端点。

部署模型

当您选择Deploy(部署)后,部署过程开始。完成后,您将创建一个端点。您可以通过传递示例推理请求有效负载来测试该端点,或者使用SDK选择测试选项。当您选择使用SDK时,您会看到可以在SageMaker Studio中使用的示例代码。

使用SDK进行部署时,我们首先选择Mixtral8x7B模型,指定modelid为值huggingfacellmmixtral8x7b。您可以用以下代码在SageMaker上部署任一选定模型。同样,您可以使用其模型ID部署Mixtral8x7B instruct:

pythonfrom sagemakerjumpstartmodel import JumpStartModel

model = JumpStartModel(modelid=huggingfacellmmixtral8x7b)predictor = modeldeploy()

这将以默认配置将模型部署到SageMaker,包括默认实例类型和默认VPC配置。您可以通过在JumpStartModel中指定非默认值,改变这些配置。

Mixtral

部署后,您可以通过SageMaker预测器对已部署的端点运行推理:

pythonpayload = {inputs Hello!} predictorpredict(payload)

示例提示

您可以像与任何标准文本生成模型相同的方式与Mixtral8x7B模型进行交互,将输入序列处理并输出预测的下一个词。在本节中,我们提供了一些示例提示。

代码生成

利用前面的示例,我们可以使用代码生成提示,如下所示:

python

代码生成

payload = { inputs 写一个计算Python中阶乘的程序 parameters { maxnewtokens 200 }}predictorpredict(payload)

您将获得如下输出:

输入文本 写一个计算Python中阶乘的程序生成文本一个数字的阶乘是从1到该数字的所有整数的乘积。

例如,5的阶乘是12345 = 120。

0的阶乘是1。

负数的阶乘是未定义的。

一个数字的阶乘可以写作n!。

例如,5! = 120。

计算Python中阶乘的程序

pythondef factorial(n) if n == 0 return 1 else return n factorial(n1)

print(factorial(5))

输出

120

解释

在上述程序中,我们定义了一个名为factorial的函数,该函数接受一个参数n。

如果n等于0,则返回1。

否则,返回n乘以阶乘函数的n1。

然后,我们将参数5传递给阶乘函数并打印结果。

程序的输出是120,这是5的阶乘。

如何在Python中计算阶乘

在上述程序中,我们使用递归函数来计算一个数字的阶乘。

递归函数是一个调用自身的函数。

在这种情况下,阶乘函数用参数n1调用自身。

这个过程继续下去,直到n等于0,此时函数返回1。

一个数字的阶乘也可以使用循环来计算。

例如,以下程序使用for循环计算数字的阶乘

pythondef factorial(n) result = 1 for i in range(1 n1) result = i return result

情感分析提示

您可以使用Mixtral 8x7B进行情感分析,提示如下:

pythonpayload = { inputs 推文 我讨厌我的手机电池耗尽时的感觉。 情感 消极

推文 我今天过得不错 1情感 积极推文 这是文章的链接情感 中立推文 这支新音乐视频真是太棒了情感parameters {    maxnewtokens 2}

}predictorpredict(payload)

您将获得如下输出:

输入文本 推文 我讨厌我的手机电池耗尽时的感觉。情感 消极

推文 我今天过得不错 1情感 积极

推文 这是文章的链接情感 中立

推文 这支新音乐视频真是太棒了情感生成文本 积极

问答提示

您可以使用Mixtral8x7B来进行问答提示,示例代码如下:

闪连加速器免费版

python

问答

payload = { inputs 请提醒我C编程语言的发明时间是何时? parameters { maxnewtokens 100 }}queryendpoint(payload)

您将获得如下输出:

输入文本 请提醒我C编程语言的发明时间是何时?生成文本

C语言是在1972年由Dennis Ritchie在贝尔实验室发明的。

C是一种通用编程语言。它是为编写UNIX操作系统而发明的。

C是一种结构化编程语言。它是一种中级语言。它是一种过程语言。

C是一种编译语言。它是一种可移植语言。

C是一种区分大小写的语言。它是一种自由形式的语言。

Mixtral8x7B Instruct

经过指令微调的Mixtral8x7B接受格式化指令,其中对话角色必须以用户提示开始并交替进行用户指令和助手(模型回答)。必须严格遵循指令格式,否者模型将生成次优输出。用于构建Instruct模型提示的模板如下:

pythonltsgt [INST] 指令 [/INST] 模型回答lt/sgt [INST] 后续指令 [/INST] ]]

请注意,ltsgt和lt/sgt是开始字符串(BOS)和结束字符串(EOS)的特殊标记,而[INST]和[/INST]是普通字符串。

以下代码展示了如何将提示格式化为指令格式:

pythonfrom typing import Dict List

def formatinstructions(instructions List[Dict[str str]]) gt List[str] 格式化指令,其中对话角色必须交替用户/助手/用户/助手/ prompt List[str] = [] for user answer in zip(instructions[2] instructions[12]) promptextend([ [INST] (user[content])strip() [/INST] (answer[content])strip() ]) promptextend([ [INST] (instructions[1][content])strip() [/INST] ]) return join(prompt)

def printinstructions(prompt str response str) gt None bold unbold = 033[1m 033[0m print(f{bold}gt 输入{unbold}n{prompt}nn{bold}gt 输出{unbold}n{response[0][generatedtext]}n)

知识检索

您可以使用以下代码进行知识检索提示:

pythoninstructions = [{role user content 蛋黄酱的食谱是什么?}]prompt = formatinstructions(instructions)payload = { inputs prompt parameters {maxnewtokens 315 dosample True}}response=predictorpredict(payload)printinstructions(prompt response)

您将获得如下输出:

输入[INST] 蛋黄酱的食谱是什么? [/INST]

输出这是一个自制蛋黄酱的简单食谱:

材料

1个蛋黄1汤匙芥末第戎芥末是不错的选择1杯油菜籽油或植物油均可12汤匙白醋或柠檬汁盐适量

步骤

在一个中等大小的碗中,将蛋黄和芥末搅拌在一起。确保这些成分在室温下。开始一点一点地添加油,并不断搅拌。这个步骤至关重要,以确保蛋黄酱能乳化而不分离。一旦添加了大约四分之一的油,混合物变稠,就可以开始细流地添加剩余的油,仍然要持续搅拌。当所有的油都已加入且蛋黄酱变稠后,加入醋或柠檬汁和盐搅拌均匀。如果蛋黄酱太稠,可以用少许水稀释。将蛋黄酱存放在冰箱内,几天内食用。

注意:制作自制蛋黄酱时,使用巴氏消毒的鸡蛋或蛋黄以减少食源性疾病的风险。

编码

Mixtral模型在编码任务中也展示了显著的优势,示例如下:

pythoninstructions = [{role usercontent 在Bash中,怎样列出当前目录下不包括子目录最近一个月内修改过的所有文本文件?}]prompt = formatinstructions(instructions)payload = {inputs promptparameters {maxnewtokens 256 dosample True temperature 02}}response=predictorpredict(payload)printinstructions(prompt response)

您将获得如下输出:

输入[INST] 在Bash中,怎样列出当前目录下不包括子目录最近一个月内修改过的所有文本文件? [/INST]输出要列出当前目录下最近一个月内修改过的所有文本文件,您可以在Bash中使用find和grep命令的组合。以下是您需要的命令:

bashfind maxdepth 1 type f name txt mtime 30

让我们来分解一下这个命令:

find 表示在当前目录中开始搜索。maxdepth 1限制搜索仅在当前目录中不包括子目录。type f表示要寻找文件。name txt过滤结果,仅包含扩展名为txt的文件。mtime 30过滤结果,仅包含最近30天内修改过的文件。

这个命令将输出当前目录中所有近期内修改过的文本文件的路径。

数学与推理

Mixtral模型在数学准确性方面也表现优越:

pythoninstructions = [{role usercontent 我为6个孩子买了冰淇淋。每个冰淇淋球125美元,我用10美元的钞票支付。我找回了多少钱?请先解释再回答。}]prompt = formatinstructions(instructions)payload = {inputs prompt

AWS 每周汇总:WhatsApp、AWS Lambda、负载均衡器、AWS 控制台等2024年10月14日由 Sbastien Stormacq 发表于 2024 年 10 月 14 日 在 Amazon MemoryDB、Amazon Polly、Amazon Redshift、Amazon Simple Storage Service (S3)、AWS CodePipeline、AWS 控制...

AWS Global Accelerator 部署最佳实践关键要点用户期望无论应用在哪个平台上,都会提供稳定、高效的服务,而 AWS Global Accelerator 可帮助满足这一需求。配置 Global Accelerator 时,应避免连接碰撞,以确保网络延迟减少。本文提供了多种情况下避免连接碰撞的建议,以及不同的架构配置选项。用户在使用应用时,通常期望体验稳定、一致且高效的性能,无论应...