本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
大型语言模型 (LLMs) 擅长多种生成任务,包括文本生成、摘要、完成、问答等。它们之所以有如此出色的表现,可以归结于它们庞大的规模以及针对不同数据集和各种任务进行的广泛训练。但是,在医疗保健和金融服务等特定领域中,这些模型可能需要进行自定义微调,以适应独特的数据和使用场景。通过根据自己的特定领域量身定制培训, LLMs 可以提高他们的绩效,并为目标应用程序提供更准确的输出。
Autopilot 提供了对一系列预训练生成式文本模型进行微调的功能。特别是,Autopilot 支持对由提供支持的通用大型语言模型 () LLMs 进行基于指令的微调。 JumpStart
注意
支持自动驾驶微调的文本生成模型目前只能在 Canvas 支持的 SageMaker 区域中使用。有关其支持的区域的完整列表,请参阅 SageMaker Canvas 的文档。
微调预训练模型需要包含清晰指令的特定数据集,用于指导模型如何针对任务生成输出或行为。模型从数据集中学习,调整其参数以遵从提供的指令。基于指令的微调包括使用标记的示例,将其格式化为提示-回答对,并以指令的形式措辞。有关微调的更多信息,请参阅微调基础模型。
以下指南概述了创建 Amazon A SageMaker utopilot 作业作为试点实验的过程,目的是 LLMs 使用 SageMaker A I AP I 参考微调文本生成。
注意
文本和映像分类、时间序列预测和大型语言模型微调等任务都可以通过 AutoML REST API 的第 2 版独家实现。如果您选择的语言是 Python,则可以直接引用 Amazon SageMaker Python 软件开发工具包的 A uto MLV2 对象
喜欢用户界面便利性的用户可以使用 Amazon SageMaker Canv as 访问预训练模型和生成式 AI 基础模型,或者创建针对特定文本、图像分类、预测需求或生成式 AI 量身定制的自定义模型。
要以编程方式创建自动驾驶实验以微调 LLM,你可以使用 Ama SageMaker zon Autopilot 支持的任何语言调用 CreateAutoMLJobV2
API 或。 AWS CLI
有关此 API 操作如何转换为所选语言中函数的信息,请参阅 CreateAutoMLJobV2
中的另请参阅部分并选择 SDK。例如,对于 Python 用户,请参阅 AWS SDK for Python (Boto3)中 create_auto_ml_job_v2
的完整请求语法。
注意
Autopilot 可以微调大型语言模型,无需对多个候选项进行训练和评估。取而代之的是,Autopilot 使用您的数据集直接微调目标模型,以增强默认的目标指标,即交叉熵损失。在 Autopilot 中微调语言模型不需要设置 AutoMLJobObjective
字段。
一旦你的法学硕士学位经过微调,你可以通过访问各种方法来评估其表现 ROUGE 在进行 DescribeAutoMLJobV2
API 调用BestCandidate
时得分。该模型还提供了有关其训练和验证损失以及困惑度的信息。有关评估微调模型生成的文本质量的指标完整列表,请参阅在 Autopilot 中微调大型语言模型的指标。
先决条件
在使用 Autopilot 在 SageMaker AI 中创建微调实验之前,请务必执行以下步骤:
-
(可选)选择要微调的预训练模型。
有关可在 Amazon A SageMaker utopilot 中进行微调的预训练模型列表,请参阅。支持进行微调的大型语言模型模型的选择不是强制性的;如果未指定型号,Autopilot 会自动默认为 Falc BInstruct on7 型号。
-
创建指令数据集。请参阅 数据集文件类型和输入数据格式,了解基于指令的数据集的格式要求。
-
将您的数据集置于 Amazon S3 存储桶中。
-
授予对包含您用于运行实验的 Amazon S3 执行角色的输入数据的 SageMaker Amazon S3 存储桶的完全访问权限。
-
此外,您还应为执行角色提供必要的权限,以访问所使用的默认存储 Amazon S3 存储桶 JumpStart。此访问权限是存储和检索中预训练的模型工件所必需的。 JumpStart要授予对此 Amazon S3 存储桶的访问权限,您必须针对执行角色创建新的内联自定义策略。
下面是一个策略示例,在配置
us-west-2
中的 AutoML 微调作业时,您可以在 JSON 编辑器中使用该策略:JumpStart的存储桶名称遵循预先确定的模式,该模式取决于. AWS 区域您必须相应地调整存储桶的名称。
{ "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::jumpstart-cache-prod-
us-west-2
", "arn:aws:s3:::jumpstart-cache-prod-us-west-2/*
" ] }
完成此操作后,您可以在 Autopilot API 请求中使用此执行角色的 ARN。
必需参数
调用 CreateAutoMLJobV2
创建用于 LLM 微调的 Autopilot 实验时,必须提供以下值:
-
AutoMLJobName
,用于指定您作业的名称。名称应为string
类型,最小长度为 1 个字符,最大长度为 32 个字符。 -
AutoMLJobInputDataConfig
中至少有一个training
类型的AutoMLJobChannel
。此通道指定微调数据集所在 Amazon S3 存储桶的名称。您可以选择定义validation
通道。如果未提供验证通道,并且在AutoMLDataSplitConfig
中配置了ValidationFraction
,则使用此分数将训练数据集随机划分为训练集和验证集。此外,您可以为数据集指定内容的类型(CSV 或 Parquet 文件)。 -
类型为
TextGenerationJobConfig
的AutoMLProblemTypeConfig
用于配置训练作业的设置。具体而言,您可以在
BaseModelName
字段中指定要微调的基础模型的名称。有关可在 Amazon A SageMaker utopilot 中进行微调的预训练模型列表,请参阅。支持进行微调的大型语言模型 -
OutputDataConfig
,指定用于存储 AutoML 作业构件的 Amazon S3 输出路径。 -
RoleArn
,指定用于访问您的数据的角色的 ARN。
以下示例提供了完整请求格式,用于对 CreateAutoMLJobV2
发出 API 调用以微调 (Falcon7BInstruct
) 模型。
{
"AutoMLJobName": "<job_name>",
"AutoMLJobInputDataConfig": [
{
"ChannelType": "training",
"CompressionType": "None",
"ContentType": "text/csv",
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://<bucket_name>/<input_data>.csv"
}
}
}
],
"OutputDataConfig": {
"S3OutputPath": "s3://<bucket_name>/output",
"KmsKeyId": "arn:aws:kms:<region>:<account_id>:key/<key_value>"
},
"RoleArn":"arn:aws:iam::<account_id>:role/<sagemaker_execution_role_name>",
"AutoMLProblemTypeConfig": {
"TextGenerationJobConfig": {
"BaseModelName": "Falcon7BInstruct"
}
}
}
所有其他参数都是可选的。
可选参数
以下各节提供了一些可以传递给微调 AutoML 作业的可选参数的详细信息。
您可以提供自己的验证数据集和自定义的数据拆分比率,也可以让 Autopilot 自动拆分数据集。
每个AutoMLJobChannel
对象(参见必填参数 Auto MLJob InputDataConfig)都有ChannelType
,可以将其设置为training
或指定在构建机器学习模型时如何使用数据的validation
值。
数据来源至少需要一个,最多可以有两个:一个用于训练数据,一个用于验证数据。如何将数据拆分为训练和验证数据集,取决于您有一个还是两个数据来源。
-
如果您只有一个数据来源,则默认情况下
ChannelType
设置为training
,并且必须具有此值。-
如果未设置
AutoMLDataSplitConfig
中的ValidationFraction
值,则默认情况下,将使用来自此来源中数据的 0.2 (20%) 进行验证。 -
如果
ValidationFraction
设置为介于 0 和 1 之间的值,则根据指定的值拆分数据集,该值指定用于验证的数据集的比例。
-
-
如果您有两个数据来源,则其中一个
AutoMLJobChannel
对象的ChannelType
必须设置为默认值training
。另一个数据来源的ChannelType
必须设置为validation
。这两个数据来源必须具有相同的格式(CSV 或 Parquet)和相同的架构。在这种情况下,您不可为ValidationFraction
设置值,因为每个来源的所有数据都用于训练或验证。设置此值会导致错误。
利用 Autopilot,您可以自动将微调模型部署到端点。要为经过微调的模型启用自动部署,请在 AutoML 作业请求中包括 ModelDeployConfig
。这允许将经过微调的模型部署到 A SageMaker I 端点。以下是可供自定义的配置。
-
要让 Autopilot 生成端点名称,请将
AutoGenerateEndpointName
设置为True
。 -
要为端点提供自己的名称,请设置
AutoGenerateEndpointName to
。False
and provide a name of your choice in EndpointName
对于需要在微调前接受最终用户许可协议的模型,您可以在配置 AutoMLProblemTypeConfig
时将 ModelAccessConfig
的 AcceptEula
属性设置为 TextGenerationJobConfig
中的 True
,从而接受 EULA。
在配置 AutoMLProblemTypeConfig
时,您可以在 TextGenerationJobConfig
的 TextGenerationHyperParameters
属性中设置超参数值,从而优化文本生成模型的学习过程。
Autopilot 允许在所有模型中设置四个通用超参数。
-
epochCount
:其值应是一个字符串,包含1
至10
范围内的整数值。 -
batchSize
:其值应是一个字符串,包含1
至64
范围内的整数值。 -
learningRate
:其值应是一个字符串,包含0
至1
范围内的浮点数值。 -
learningRateWarmupSteps
:其值应是一个字符串,包含0
至250
范围内的整数值。
有关每个超参数的更多详情,请参阅 优化文本生成模型学习过程的超参数。
以下 JSON 示例显示了传递到配置所有四个超参数的TextGenerationHyperParameters
字段。 TextGenerationJobConfig
"AutoMLProblemTypeConfig": {
"TextGenerationJobConfig": {
"BaseModelName": "Falcon7B",
"TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"}
}
}