Press "Enter" to skip to content

使用Amazon SageMaker JumpStart来调试和部署Mistral 7B

今天,我们很高兴宣布可以使用Amazon SageMaker JumpStart来对Mistral 7B模型进行微调。您现在可以使用Amazon SageMaker Studio UI或者使用SageMaker Python SDK来对Mistral文本生成模型进行微调和部署,只需点击几下即可。

基础模型在生成任务中表现非常出色,包括纵览文本和摘要,回答问题,生成图像和视频等。尽管这些模型具有很好的泛化能力,但通常存在一些特定领域数据的使用案例(例如医疗保健或金融服务),这些模型可能无法为这些使用案例提供良好的结果。这就需要对这些生成型AI模型进行进一步微调,以适应特定的使用案例和领域特定的数据。

在本文中,我们将展示如何使用SageMaker JumpStart对Mistral 7B模型进行微调。

什么是Mistral 7B

Mistral 7B是由Mistral AI开发的基础模型,支持英文文本和代码生成功能。它支持多种用例,如文本摘要、分类、文本补全和代码补全。为了展示模型的可定制性,Mistral AI还发布了一个经过微调的Mistral 7B-Instruct模型,用于聊天用例,并使用了多种公开可用的对话数据集。

Mistral 7B是一个变压器模型,使用了分组查询注意力和滑动窗口注意力来实现更快的推理(低延迟)和处理更长序列的能力。分组查询注意力是一种将多查询和多头注意力组合起来的架构,以达到输出质量接近多头注意力,并且速度与多查询注意力相当。滑动窗口注意力方法利用变压器模型的多个层级来集中在先前出现的信息上,从而帮助模型理解更长的上下文范围。Mistral 7B具有8,000个令牌的上下文长度,在7B模型尺寸下具有低延迟和高吞吐量,并与更大的模型替代方案相比具有强大的性能,同时对内存要求较低。该模型在无限制下提供了Apache 2.0许可,可供使用。

您可以使用SageMaker Studio UI或SageMaker Python SDK来对模型进行微调。我们将在本文中讨论这两种方法。

通过SageMaker Studio UI进行微调

在SageMaker Studio中,您可以通过SageMaker JumpStart下的模型、笔记本和解决方案访问Mistral模型,如下图所示。

如果您没有看到Mistral模型,请通过关闭和重新启动SageMaker Studio版本来更新。有关版本更新的更多信息,请参阅关闭和更新Studio Apps

使用Amazon SageMaker JumpStart来调试和部署Mistral 7B 四海 第1张

在模型页面上,您可以指向包含用于微调的训练和验证数据集的Amazon Simple Storage Service (Amazon S3) 存储桶。此外,您还可以配置微调的部署设置、超参数和安全设置。然后,您可以选择开始训练在SageMaker ML实例上启动训练作业。

使用Amazon SageMaker JumpStart来调试和部署Mistral 7B 四海 第2张

部署模型

模型微调完成后,您可以使用SageMaker JumpStart上的模型页面部署它。在微调完成后,会出现部署微调模型的选项,如下图所示。

使用Amazon SageMaker JumpStart来调试和部署Mistral 7B 四海 第3张

通过SageMaker Python SDK进行微调

您还可以使用SageMaker Python SDK对Mistral模型进行微调。完整的笔记本可在 GitHub 上找到。在本节中,我们提供了两种微调的示例。

基于指令的微调

指令微调是一种技术,它使用指令对语言模型进行微调,用于处理自然语言处理(NLP)任务的集合。在这种技术中,模型通过遵循文本指令而不是针对每个任务的特定数据集来执行任务。模型使用每个任务的一组输入和输出示例进行微调,只要为任务提供提示,就可以使模型推广到未经明确训练的新任务。指令微调有助于提高模型的准确性和效果,并在特定任务没有大型数据集可用的情况下非常有用。

让我们通过SageMaker Python SDK的示例笔记本来看一下提供的微调代码。

我们使用Dolly数据集 的指令微调格式的子集,并指定描述输入和输出格式的template.json文件。训练数据必须以JSON行(.jsonl)格式进行格式化,其中每一行都是表示单个数据样本的字典。在这种情况下,我们将其命名为train.jsonl

下面的代码段是train.jsonl的示例。每个样本中的instructioncontextresponse键应该在template.json中有相应的条目{instruction}{context}{response}

{    "instruction": "什么是色散棱镜?",     "context": "在光学中,色散棱镜是一种用于分散光的光学棱镜,即将光分离成其光谱成分(彩虹的颜色)。不同波长(颜色)的光将以不同的角度被棱镜偏折。这是由于棱镜材料的折射率随波长(色散)变化所引起的。一般来说,较长的波长(红色)的偏折较小,而较短的波长(蓝色)的偏折较大。通过棱镜将白光分散成颜色的色散现象使得艾萨克·牛顿得出结论,白光由不同颜色的混合物组成。",     "response": "色散棱镜是一种光学棱镜,将光的不同波长以不同的角度分散。当白光经过色散棱镜照射时,它将分离成彩虹的不同颜色。"}

下面是template.json的示例:

{    "prompt": "以下是描述任务的指令,与提供进一步上下文的输入配对。"    "编写一个适当完成请求的响应。\n\n"    "### 指令:\n{instruction}\n\n### 输入:\n{context}\n\n",    "completion": " {response}",}

在将提示模板和训练数据上传到S3桶之后,您可以设置超参数。

my_hyperparameters["epoch"] = "1"my_hyperparameters["per_device_train_batch_size"] = "2"my_hyperparameters["gradient_accumulation_steps"] = "2"my_hyperparameters["instruction_tuned"] = "True"print(my_hyperparameters)

然后,您可以开始微调过程并部署模型到推理终端节点。在下面的代码中,我们使用了一个ml.g5.12xlarge实例:

from sagemaker.jumpstart.estimator import JumpStartEstimator
instruction_tuned_estimator = JumpStartEstimator(
    model_id=model_id,
    hyperparameters=my_hyperparameters,
    instance_type="ml.g5.12xlarge",)
instruction_tuned_estimator.fit({"train": train_data_location}, logs=True)
instruction_tuned_predictor = instruction_tuned_estimator.deploy()

领域自适应微调

领域自适应微调是将预训练的LLM进行细化以更好地适应特定领域或任务的过程。通过使用更小的、领域特定的数据集,LLM可以在原始训练期间获得的广泛知识的基础上进行微调,以理解和生成更准确、相关和有洞察力的特定领域的内容。

Mistral模型可以在任何领域特定数据集上进行微调。在进行微调之后,它应该能够在该特定领域生成领域特定的文本并解决各种自然语言处理任务。对于训练数据集,请提供一个包含单个CSV、JSON或TXT文件的train目录和一个可选的validation目录。对于CSV和JSON格式,使用”text”列的数据或如果不存在”text”列,则使用第一列的数据。确保每个目录下只有一个文件存在。例如,输入数据可以是按文本文件的形式的亚马逊的证券交易委员会文件:

本报告包含对我们的业务计划、目标和预期运营结果的估计、预测、陈述,这些陈述属于《1995年私人证券诉讼改革法》第27A条、《1933年证券法》第21E条和《1934年证券交易法》第7条的“前瞻性陈述”。这些前瞻性陈述可能出现在本报告的各个部分中,包括以下部分:“业务”(本表格10-K的第I部分,第1项),“风险因素”(本表格10-K的第I部分,第1A项)以及“管理对财务状况和经营结果的讨论和分析”(本表格10-K的第II部分,第7项)。这些前瞻性陈述通常由诸如“相信”、“预测”、“期望”、“预计”、“估计”、“意图”、“战略”、“未来”、“机会”、“计划”、“可能”、“应该”、“将”、“将会”、“将继续”、“可能会导致”和类似表达的词组所识别。

您可以通过将超参数“instruction_tuned”指定为“False”来开始领域自适应微调。其余的步骤与指导微调步骤相似。

我们在g5.12xlarge上将max_input_length设置为2048。您可以在较大的实例类型上使用更大的输入长度。详细信息请参阅示例 notebook

带微调和不带微调的推断示例

以下表格为2021-2022年以亚马逊的SEC文件进行微调的Mistral 7B模型的结果。我们比较微调前后的输出。

输入提示 微调前的输出 微调后的输出 参数
本表格10-K报告显示

该公司经营10年,共有10名员工。该公司共有10名员工,从事向公众提供服务的业务。该公司共有10名员工,从事向公众提供服务的业务。

该公司共有10名员工,从事向公众提供服务的业务。该公司共有10名员工,从事向公众提供服务的业务。该公司共有10名员工,从事向公众提供服务的业务。该公司共有10名员工,从事提供服务的业务。

我们在2004年、2003年和2002年的净销售额分别为12亿美元、15亿美元和18亿美元。这些金额包括我们国际网站的销售额。我们国际网站在2004年、2003年和2002年的净销售额分别为3.23亿美元、2.42亿美元和1.50亿美元。我们国际网站的净销售额在2004年、2003年和2002年分别占净销售额的27%、16%和8%。 “temperature”: 0.2, “max_new_tokens”: 150,
我们通过

我们在美国拥有1,700家零售店,其中包括1,200家美国店、400家加拿大店和100家墨西哥店。我们还通过电子商务网站为消费者提供服务。

什么是

最大的家居装修商店?

美国最大的家居装修零售商是家得宝(The Home Depot)。

什么是

世界上最大的家居装修商店?

世界上最大的家居装修商店是家得宝(Home Depot)。

什么是

哪个是最大的家居装修商店

我们的在线和实体店铺注重选择、价格和便捷性。我们设计我们的店铺,使得通过我们和第三方在几十个产品类别中销售数亿种独特的产品成为可能。客户通过我们的网站、移动应用程序、Alexa、设备、流媒体和亲自访问我们的店铺来访问我们的产品。我们还制造和销售Kindle、Fire平板电脑、Fire TV、Echo和Ring等电子设备,并开发和制作媒体内容。我们致力于为客户提供低价、快速免费送货、易于使用的功能以及及时的客户服务。此外,我们提供Amazon Prime等订阅服务。
我们的愿景是

成为我们服务社区的优质、可负担和易于获得的医疗保健服务的领先提供者。

我们的使命是为我们服务的社区提供优质、可负担和易于获得的医疗保健服务。

我们的价值观是:

– 正直:我们在所有交往中以诚实和正直的方式行事。- 尊重:我们尊重和尊重每个人。- 卓越:我们努力在我们所做的一切中追求卓越。- 同情心:我们同情我们的患者和彼此。- 团队合作:我们作为一个团队共同努力实现我们的目标。

我们对我们的患者的承诺是提供优质、可负担和易于获得的医疗保

正如您所看到的,与通用预训练模型相比,经过精细调整的模型提供了与亚马逊相关的更具体的信息。这是因为精细调整使模型能够理解所提供数据集的微妙之处、模式和具体情况。通过使用预训练模型并结合精细调整,我们确保您同时获得了两全其美的结果:预训练模型的广泛知识和对于您独特数据集的专业精度。在机器学习的世界中,并非一刀切适用于所有场景,而精细调整正是您所需的量身定制的解决方案!

结论

在本篇文章中,我们讨论了使用SageMaker JumpStart对Mistral 7B模型进行精细调整的方法。我们展示了如何使用SageMaker JumpStart控制台或SageMaker Python SDK来进行模型的精细调整和部署。作为下一步,您可以尝试使用GitHub存储库中提供的代码来在自己的数据集上进行模型的精细调整,以测试和评估适用于您的实际用例的结果。

Leave a Reply

Your email address will not be published. Required fields are marked *