选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

创建 AutoML 作业,使用 API 微调文本生成模型

聚焦模式
创建 AutoML 作业,使用 API 微调文本生成模型 - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

大型语言模型 (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 对象AWS SDK for Python (Boto3)

喜欢用户界面便利性的用户可以使用 Amazon SageMaker Canv as 访问预训练模型和生成式 AI 基础模型,或者创建针对特定文本、图像分类、预测需求或生成式 AI 量身定制的自定义模型。

要以编程方式创建自动驾驶实验以微调 LLM,你可以使用 Ama SageMaker zon Autopilot 支持的任何语言调用 CreateAutoMLJobV2API 或。 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 存储桶的完全访问权限。

    • 有关检索 SageMaker AI 执行角色的信息,请参阅获取执行角色

    • 有关向您的 SageMaker AI 执行角色授予访问 Amazon S3 中一个或多个特定存储桶的权限的信息,请参阅中的向 A SageMaker I 执行角色添加其他 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 文件)。

  • 类型为 TextGenerationJobConfigAutoMLProblemTypeConfig 用于配置训练作业的设置。

    具体而言,您可以在 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 自动拆分数据集。

每个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,您可以自动将微调模型部署到端点。要为经过微调的模型启用自动部署,请在 AutoML 作业请求中包括 ModelDeployConfig。这允许将经过微调的模型部署到 A SageMaker I 端点。以下是可供自定义的配置。

对于需要在微调前接受最终用户许可协议的模型,您可以在配置 AutoMLProblemTypeConfig 时将 ModelAccessConfigAcceptEula 属性设置为 TextGenerationJobConfig 中的 True,从而接受 EULA。

对于需要在微调前接受最终用户许可协议的模型,您可以在配置 AutoMLProblemTypeConfig 时将 ModelAccessConfigAcceptEula 属性设置为 TextGenerationJobConfig 中的 True,从而接受 EULA。

在配置 AutoMLProblemTypeConfig 时,您可以在 TextGenerationJobConfigTextGenerationHyperParameters 属性中设置超参数值,从而优化文本生成模型的学习过程。

Autopilot 允许在所有模型中设置四个通用超参数。

  • epochCount:其值应是一个字符串,包含 110 范围内的整数值。

  • batchSize:其值应是一个字符串,包含 164 范围内的整数值。

  • learningRate:其值应是一个字符串,包含 01 范围内的浮点数值。

  • learningRateWarmupSteps:其值应是一个字符串,包含 0250 范围内的整数值。

有关每个超参数的更多详情,请参阅 优化文本生成模型学习过程的超参数

以下 JSON 示例显示了传递到配置所有四个超参数的TextGenerationHyperParameters字段。 TextGenerationJobConfig

"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }

在配置 AutoMLProblemTypeConfig 时,您可以在 TextGenerationJobConfigTextGenerationHyperParameters 属性中设置超参数值,从而优化文本生成模型的学习过程。

Autopilot 允许在所有模型中设置四个通用超参数。

  • epochCount:其值应是一个字符串,包含 110 范围内的整数值。

  • batchSize:其值应是一个字符串,包含 164 范围内的整数值。

  • learningRate:其值应是一个字符串,包含 01 范围内的浮点数值。

  • learningRateWarmupSteps:其值应是一个字符串,包含 0250 范围内的整数值。

有关每个超参数的更多详情,请参阅 优化文本生成模型学习过程的超参数

以下 JSON 示例显示了传递到配置所有四个超参数的TextGenerationHyperParameters字段。 TextGenerationJobConfig

"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。