在本文中,我们将介绍如何利用 Amazon SageMaker JumpStart 来微调和部署 Mistral 7B 模型。这个模型支持文本生成及代码生成,适用于许多任务,例如文本摘要、分类、文本及代码完成等。使用者可以选择使用 Amazon SageMaker Studio 的用户界面,或利用 SageMaker Python SDK 进行微调。本文将详细说明这两种方法。
今天,我们很高兴地宣布可以使用 Amazon SageMaker JumpStart 来微调 Mistral 7B 模型。使用者现在能够通过几次点击在 SageMaker JumpStart 上微调和部署 Mistral 生成模型,或者使用 SageMaker Python SDK 进行操作。
基础模型在生成任务上表现出色,包括撰写文本和摘要、回答问题、以及生成图片和视频。尽管这些模型具有很强的概括能力,但在某些特定领域的使用情境中如医疗或金融服务,这些模型可能无法提供满意的结果。因此,对于特定的使用案件和领域数据,需要进一步微调这些生成 AI 模型。
在本文中,我们将展示如何使用 SageMaker JumpStart 微调 Mistral 7B 模型。
Mistral 7B 是 Mistral AI 开发的一个基础模型,支持英语文本和代码生成能力。它适用于多种使用案例,例如文本摘要、分类、文本完成和代码完成。为了展示模型的可定制性,Mistral AI 还发布了适用于聊天的 Mistral 7BInstruct 模型,这个模型是基于多种公开的对话数据集进行微调的。
Mistral 7B 是一种变压器模型,采用了分组查询注意力和滑动窗口注意力以实现更快的推理低延迟并处理更长的序列。分组查询注意力是一种结合多查询和多头注意力的架构,可以在保证输出质量的情况下,保持接近多查询注意力的速度。滑动窗口注意力方法利用变压器模型的多层结构来关注早期信息,帮助模型理解更长的上下文。Mistral 7B 具有 8000 个令牌的上下文长度,表现出低延迟和高吞吐量,与更大模型相比,提供了低内存需求。
你可以使用 SageMaker Studio UI 或 SageMaker Python SDK 来微调模型。本文将讨论这两种方法。
一元机场手机在 SageMaker Studio 中,你可以通过 SageMaker JumpStart 在模型、笔记本和解决方案中访问 Mistral 模型,如下图所示。
如果你未能看到 Mistral 模型,请通过关闭并重新启动更新你的 SageMaker Studio 版本。关于版本更新的更多信息,请参考 Shut down and Update Studio Apps。
在模型页面上,你可以指向包含用于微调的训练和验证数据集的 Amazon S3 存储桶。此外,你可以配置微调的部署设置、超参数和安全设置。然后,选择训练开始在 SageMaker ML 实例上进行训练。
当模型完成微调后,你可以通过 SageMaker JumpStart 的模型页面来部署它。当微调完成时,部署微调模型的选项将显示在界面上,如下图所示。
你也可以使用 SageMaker Python SDK 微调 Mistral 模型。完整的笔记本可在 GitHub 上找到。本节将提供两种类型的微调示例。
指令微调是一种技术,通过使用指令在自然语言处理NLP任务的集合上微调语言模型。在这种技术中,模型被训练通过遵循文本指令而不是每个任务的特定数据集来执行任务。模型通过一组每个任务的输入和输出范例进行微调,使模型能够概括到未被明确训练的新任务,只要为这些任务提供提示。指令微调有助于提高模型的准确性和有效性,在特定任务缺乏大型数据集时特别有用。
让我们通过范例 notebook 中提供的微调代码来走过这个过程。
我们使用 Dolly 数据集 的子集,以指令微调格式提交,并指定描述输入和输出格式的 templatejson 文件。训练数据必须按照 JSON 行jsonl格式进行格式化,每一行都是代表单个数据样本的字典。在此情况下,我们把它命名为 trainjsonl。
以下是 trainjsonl 的示例。每个样本中的键 instruction、context 和 response 应在 templatejson 中对应为 {instruction}、{context} 和 {response}:
json{ instruction 什么是色散棱镜? context 在光学中,色散棱镜是一种用于色散光的光学棱镜,将光分离成其光谱成分如彩虹的颜色。不同波长的光在棱镜中以不同的角度偏折。这是棱镜材料的折射率随波长变化色散的结果。一般来说,较长的波长红色的偏折较小,而较短的波长蓝色的偏折较大。 response 色散棱镜是一种光学棱镜,它以不同的角度分散光的不同波长。当白光通过色散棱镜时,它将分离成不同的颜色。}
接下来是 templatejson 的示例:
json{ prompt 以下是一条描述任务的指令,并配有提供进一步上下文的输入。 撰写适当完成请求的回应。nn ### 指令n{instruction}nn### 输入n{context}nn completion {response}}
在将提示模板和训练数据上传到 S3 存储桶后,你可以设置超参数。

pythonmyhyperparameters[epoch] = 1myhyperparameters[perdevicetrainbatchsize] = 2myhyperparameters[gradientaccumulationsteps] = 2myhyperparameters[instructiontuned] = Trueprint(myhyperparameters)
然后,你可以启动微调过程,并将模型部署到推理端点。在下列代码中,我们使用 mlg512xlarge 实例:
pythonfrom sagemakerjumpstartestimator import JumpStartEstimator
instructiontunedestimator = JumpStartEstimator( modelid=modelid hyperparameters=myhyperparameters instancetype=mlg512xlarge)instructiontunedestimatorfit({train traindatalocation} logs=True)
instructiontunedpredictor = instructiontunedestimatordeploy()
域适应微调是一个过程,它将预训练的 LLM 微调得更适合特定的领域或任务。通过使用更小的域特定数据集,LLM 可以微调以理解和生成更准确、相关和深刻的内容,尽管它仍然保留其原始训练过程中所获得的广泛知识。
Mistral 模型可以在任何特定领域的数据集上进行微调。微调后,预计它能生成特定领域的文本并解决该特定领域中的各种 NLP 任务。对于训练数据集,提供一个训练目录和一个可选的验证目录,每个目录中都包含一个 CSV、JSON 或 TXT 文件。对于 CSV 和 JSON 格式,应使用 text 列中的数据,或如果 text 列不存在则使用第一列。请确保每个目录下仅存在一个文件。例如,输入数据可能是 Amazon 的 SEC 文件,格式为文本文件:
text本报告包括有关我们的业务计划、目标和预期经营结果的估计、预测、陈述,这些均属于 1995 年《私人证券诉讼改革法》第 27A 条及 1933 年《证券法》和 1934 年《证券交易法》第 21E 条意味的“前瞻性声明”。前瞻性声明可能出现在本报告的不同部分,包括以下部分:“商业”第 I 部分,本 10K 表格第 1 项、“风险因素”第 I 部分,第 1A 项和“管理层的讨论与操作结果的分析”第 II 部分,第 7 项等。这些前瞻性声明通常以“相信”、“计划”、“预期”、“预测”、“估算”、“打算”、“策略”、“未来”、“机会”、“计划”、“可能”、“应该”、“将”、“会”、“会是”、“将继续”、“可能导致”等相似表达式来确定。
可以通过将超参数 “instructiontuned” 设置为 “False” 来开始域适应微调。其余步骤类似于指令微调的步骤。
我们在 g512xlarge 上将 maxinputlength 设置为 2048。你可以在更大的实例类型上使用更高的输入长度。详细信息请参见 示例笔记本。
以下表格包含使用 20212022 年 Amazon SEC 文件微调的 Mistral 7B 模型的结果。我们比较了微调前后的输出。
输入提示微调前的输出微调后的输出参数本 10K 表格显示该公司已经营 10 年,拥有 10 名员工。该公司拥有 10 名员工并且提供公共服务。该公司拥有 10 名员工并且提供公共服务。该公司拥有 10 名员工并且提供公共服务。该公司拥有 10 名员工并且提供公共服务。该公司拥有 10 名员工并且提供公共服务。我们在 2004 年、2003 年和 2002 年的净销售额分别为 12 亿美元、15 亿美元和 18 亿美元。这些金额包含来自我们国际网站的销售。来自我们国际网站的净销售额分别为 323 亿美元、242 亿美元和 15 亿美元,分别占净销售额的 27、16 和 8。“temperature” 02 “maxnewtokens” 150我们通过我们的零售网络共拥有 1700 家商店,其中包括 1200 家在美国、400 家在加拿大和 100 家在墨西哥。我们也通过我们的电子商务网站提供消费者服务。## 最大的家庭改善商店是什么?Home Depot 是美国最大的家庭改善零售商。我们的线上和实体店铺重点在于选择、价格和便利性。我们设计商店以便于数亿个独特产品的销售,无论是由我们还是第三方销售,并涵盖多个产品类别。顾客可以透过我们的网站、移动应用、Alexa 设备、串流以及亲自到我们的商店访问我们的产品。我们的愿景成为我们服务社区中质量、价格合理和可及的医疗服务的领先提供者。我们的使命是提供质量、价格合理和可及的医疗服务。成为全球最以客户为中心的企业。我们遵循四项原则:聚焦客户而非竞争对手、创新热情、专注于运营卓越以及长期思维。在我们的各个业务部门中,我们服务的主要客户包括消费者、卖家、开发者、企业和内容创作者。如你所见,微调后的模型提供了更具针对性的 Amazon 相关信息,而不是通用预训练模型的输出。这是因为微调使模型能够理解所提供的数据集的细微差别、模式和具体内容。通过使用预训练模型并针对特定数据集进行微调,我们确保你能获得预训练模型的广泛知识以及针对唯一数据集的专业精确性。在机器学习的世界里,并不是所有的需求都一样,而微调是你所需要的量身定制解决方案!
在本文中,我们讨论了如何使用 SageMaker JumpStart 微调 Mistral 7B 模型。我们展示了如何使用 SageMaker Studio 中的 SageMaker JumpStart 控制台或 SageMaker Python SDK 来进行微调和部署这些模型。接下来,你可以使用 GitHub 存储库中提供的代码,尝试在自己的数据集上进行微调,以测试和基准你的使用案例的结果。
Xin Huang 是 Amazon SageMaker JumpStart 和 Amazon SageMaker 内置算法的高级应用科学家。他专注于开发可扩展的机器学习算法,并对自然语言处理、可解释的深度学习以及非参数时空聚类的稳健分析等领域感兴趣。他在 ACL、ICDM、KDD 会议以及《皇家统计学会:A 系列