

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

# 为 Amazon Nova 机型创建和管理微调任务
<a name="rft-submit-job"></a>

您可以使用 Amazon Bedrock 控制台或 API 创建钢筋微调 (RFT) 任务。RFT 作业可能需要几个小时，具体取决于训练数据的大小、周期数和奖励函数的复杂性。

## 先决条件
<a name="rft-prerequisites"></a>
+ 创建具有所需权限的 IAM 服务角色。有关全面的安全和权限信息，包括特定于 RFT 的权限，请参阅。[Amazon Nova 机型的访问和安全](rft-access-security.md)
+ （可选）加密输入和输出数据、您的 RFT 作业或向自定义模型发出的推理请求。有关更多信息，请参阅[自定义模型的加密](https://docs.aws.amazon.com/bedrock/latest/userguide/encryption-custom-job.html)。

## 创建你的 RFT 作业
<a name="rft-submit-job-how-to"></a>

选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

------
#### [ Console ]

要在控制台中提交 RFT 作业，请执行以下步骤：

1. 打开 Amazon Bedrock 控制台，然后导航到 **Tune** 下的**自定义模型**。

1. 选择**创建**，然后选择**创建钢筋微调作业**。

1. 在**型号详情**部分，选择 **Amazon Nova 2 Lite** 作为您的基本型号。

1. 在**自定义详细信息**部分中，输入自定义名称。

1. 在**训练数据**部分，选择您的数据源。您可以从存储在 Amazon S3 中的可用调用日志中进行选择，也可以选择训练数据集文件的 Amazon S3 位置，或者直接从您的设备上传文件。
**注意**  
您的训练数据集应采用 OpenAI 聊天完成数据格式。如果您以 Amazon Bedrock 调用或对话格式提供调用日志，Amazon Bedrock 会自动将其转换为 “聊天完成” 格式。

1. 在**奖励功能**部分，设置您的奖励机制：
   + **Model as judge (RLAIF)**-选择 Bedrock 托管的基本模型作为评判并配置评估说明。将其用于主观任务，例如内容审核。
**注意**  
在训练期间，控制台的 “**模型即判断**” 选项会自动将您的配置转换为 Lambda 函数。
   + **自定义代码 (RLVR)-使用通过 L** ambda 函数执行的 Python 代码创建自定义奖励函数。将其用于诸如代码生成之类的客观任务。

   有关更多信息，请参阅 [为 Amazon Nova 机型设置奖励功能](reward-functions.md)。

1. （可选）在 “**超参数**” 部分中，调整训练参数或使用默认值。

1. 在**输出数据**部分，输入 Amazon Bedrock 应保存任务输出的 Amazon S3 位置。

1. 在 “**角色配置**” 部分，从下拉列表中选择现有角色或输入要创建的服务角色的名称。

1. （可选）在**其他配置**部分中，通过指向 Amazon S3 存储桶、KMS 加密设置以及任务和模型标签来配置验证数据。

1. 选择**创建钢筋微调作业**开始作业。

------
#### [ API ]

发送`customizationType`设置为的 CreateModelCustomizationJob 请求`REINFORCEMENT_FINE_TUNING`。

**必填字段：**`roleArn``baseModelIdentifier`、`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 训练作业
<a name="rft-monitor-job"></a>

Amazon Bedrock 在 RFT 训练期间通过可视化图表和指标提供实时监控。这些指标可以帮助您了解模型是否正确收敛以及奖励功能是否有效地指导了学习过程。

### Job 状态跟踪
<a name="rft-job-status"></a>

您可以在 Amazon Bedrock 控制台中通过验证和培训阶段监控您的 RFT 作业状态。

**完成指标：**
+ 训练成功**完成**后，Job 状态更改为 “已完成”
+ 自定义模型 ARN 可供部署
+ 训练指标达到收敛阈值

### 实时训练指标
<a name="rft-real-time-metrics"></a>

Amazon Bedrock 通过显示训练和验证指标的可视化图表在 RFT 训练期间提供实时监控。

#### 核心训练指标
<a name="rft-core-metrics"></a>
+ **训练损失**-衡量模型从训练数据中学习的程度
+ **训练奖励统计信息**-显示由您的奖励函数分配的奖励分数
+ **奖励幅度**-衡量好坏回应奖励之间的区别
+ **训练集和验证集的精度**-显示模型在训练和保留数据上的性能

**详细的指标类别**
+ **奖励指标** — `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 内存）

#### 训练进度可视化
<a name="rft-progress-visualization"></a>

控制台显示交互式图表，这些图表会随着您的 RFT 任务进行实时更新。这些可视化可以帮助您：
+ 追踪趋同以实现最佳性能
+ 尽早发现潜在的培训问题
+ 确定最佳停靠点
+ 比较不同时期的表现

## 设置推理
<a name="rft-setup-inference"></a>

任务完成后，部署 RFT 模型以进行按需推理，或者使用预配置吞吐量以获得稳定的性能。有关设置推理的信息，请参阅[为自定义模型设置推理](model-customization-use.md)。

使用 Playg **round 中的测试**来评估响应并将其与基础模型进行比较。要评估已完成的 RFT 模型，请参阅[评估您的 RFT 模型](rft-evaluate-model.md)。