本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Amazon Nova 机型创建和管理微调任务
您可以使用 Amazon Bedrock 控制台或 API 创建钢筋微调 (RFT) 任务。RFT 作业可能需要几个小时,具体取决于训练数据的大小、周期数和奖励函数的复杂性。
先决条件
创建你的 RFT 作业
选择与您的首选方法对应的选项卡,然后按照以下步骤操作:
- Console
-
要在控制台中提交 RFT 作业,请执行以下步骤:
-
打开 Amazon Bedrock 控制台,然后导航到 Tune 下的自定义模型。
-
选择创建,然后选择创建钢筋微调作业。
-
在型号详情部分,选择 Amazon Nova 2 Lite 作为您的基本型号。
-
在自定义详细信息部分中,输入自定义名称。
-
在训练数据部分,选择您的数据源。您可以从存储在 Amazon S3 中的可用调用日志中进行选择,也可以选择训练数据集文件的 Amazon S3 位置,或者直接从您的设备上传文件。
您的训练数据集应采用 OpenAI 聊天完成数据格式。如果您以 Amazon Bedrock 调用或对话格式提供调用日志,Amazon Bedrock 会自动将其转换为 “聊天完成” 格式。
-
在奖励功能部分,设置您的奖励机制:
有关更多信息,请参阅 为 Amazon Nova 机型设置奖励功能。
-
(可选)在 “超参数” 部分中,调整训练参数或使用默认值。
-
在输出数据部分,输入 Amazon Bedrock 应保存任务输出的 Amazon S3 位置。
-
在 “角色配置” 部分,从下拉列表中选择现有角色或输入要创建的服务角色的名称。
-
(可选)在其他配置部分中,通过指向 Amazon S3 存储桶、KMS 加密设置以及任务和模型标签来配置验证数据。
-
选择创建钢筋微调作业开始作业。
- API
-
发送customizationType设置为的 CreateModelCustomizationJob 请求REINFORCEMENT_FINE_TUNING。
必填字段:roleArnbaseModelIdentifier、customModelName、jobName、、trainingDataConfig、outputDataConfig、rftConfig
请求示例:
{
"roleArn": "arn:aws:iam::123456789012:role/BedrockRFTRole",
"baseModelIdentifier": "amazon.nova-2.0",
"customModelName": "my-rft-model",
"jobName": "my-rft-job",
"customizationType": "REINFORCEMENT_FINE_TUNING",
"trainingDataConfig": {
"s3Uri": "s3://my-bucket/training-data.jsonl"
},
"customizationConfig": {
"rftConfig" : {
"graderConfig": {
"lambdaGrader": {
"lambdaArn": "arn:aws:lambda:us-east-1:123456789012:function:function-name"
}
},
"hyperParameters": {
"batchSize": 64,
"epochCount": 2,
"evalInterval": 10,
"inferenceMaxTokens": 8192,
"learningRate": 0.00001,
"maxPromptLength": 4096,
"reasoningEffort": "high",
"trainingSamplePerPrompt": 4
}
}
},
"outputDataConfig": {
"s3Uri": "s3://my-bucket/rft-output/"
}
}
Python API 示例请求:
import boto3
bedrock = boto3.client(service_name='bedrock')
# Set parameters
customizationType = "REINFORCEMENT_FINE_TUNING"
baseModelIdentifier = "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-lite-v1:0:256k"
roleArn = "${your-customization-role-arn}"
jobName = "MyFineTuningJob"
customModelName = "MyCustomModel"
customizationConfig = {
'rftConfig' : {
'graderConfig': {
'lambdaGrader': {
'lambdaArn': 'arn:aws:lambda:us-east-1:123456789012:function:function-name'
}
},
'hyperParameters': {
'batchSize': 64,
'epochCount': 2,
'evalInterval': 10,
'inferenceMaxTokens': 8192,
'learningRate':0.00001,
'maxPromptLength': 4096,
'reasoningEffort': 'high',
'trainingSamplePerPrompt':4
}
}
}
trainingDataConfig = {"s3Uri": "s3://${training-bucket}/myInputData/train.jsonl"}
outputDataConfig = {"s3Uri": "s3://${output-bucket}/myOutputData"}
# Create job
response_ft = bedrock.create_model_customization_job(
jobName=jobName,
customModelName=customModelName,
roleArn=roleArn,
baseModelIdentifier=baseModelIdentifier,
customizationConfig=customizationConfig,
trainingDataConfig=trainingDataConfig,
outputDataConfig=outputDataConfig,
customizationType=customizationType
)
jobArn = response_ft['jobArn']
监控您的 RFT 训练作业
Amazon Bedrock 在 RFT 训练期间通过可视化图表和指标提供实时监控。这些指标可以帮助您了解模型是否正确收敛以及奖励功能是否有效地指导了学习过程。
Job 状态跟踪
您可以在 Amazon Bedrock 控制台中通过验证和培训阶段监控您的 RFT 作业状态。
完成指标:
-
训练成功完成后,Job 状态更改为 “已完成”
-
自定义模型 ARN 可供部署
-
训练指标达到收敛阈值
实时训练指标
Amazon Bedrock 通过显示训练和验证指标的可视化图表在 RFT 训练期间提供实时监控。
核心训练指标
详细的指标类别
奖励指标 — critic/rewards/mean、critic/rewards/max、critic/rewards/min(奖励分配)和val-score/rewards/mean@1(验证奖励)
模型行为 —actor/entropy(政策差异;越高等于探索性越强)
训练运行状况 —actor/pg_loss(策略梯度损失)、actor/pg_clipfrac(剪辑更新的频率)和actor/grad_norm(梯度幅度)
响应特征 — prompt_length/mean、prompt_length/max、prompt_length/min(输入令牌统计信息)response_length/mean、、response_length/max、response_length/min(输出令牌统计信息)和response/aborted_ratio(不完整生成率;0 等于全部完成)
性能-perf/throughput(训练吞吐量)、perf/time_per_step(每个训练步骤的时间)和timing_per_token_ms/*(每个令牌的处理时间)
资源使用情况 — perf/max_memory_allocated_gb、perf/max_memory_reserved_gb(GPU 内存)和perf/cpu_memory_used_gb(CPU 内存)
训练进度可视化
控制台显示交互式图表,这些图表会随着您的 RFT 任务进行实时更新。这些可视化可以帮助您:
-
追踪趋同以实现最佳性能
-
尽早发现潜在的培训问题
-
确定最佳停靠点
-
比较不同时期的表现
设置推理
任务完成后,部署 RFT 模型以进行按需推理,或者使用预配置吞吐量以获得稳定的性能。有关设置推理的信息,请参阅为自定义模型设置推理。
使用 Playg round 中的测试来评估响应并将其与基础模型进行比较。要评估已完成的 RFT 模型,请参阅评估您的 RFT 模型。