

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 Chat Completions データ形式である必要があります。Amazon Bedrock の呼び出し形式または逆形式で呼び出しログを指定すると、Amazon Bedrock は自動的にそれらをチャット完了形式に変換します。

1. **報酬関数**セクションで、報酬メカニズムを設定します。
   + **Model as judge (RLAIF)** - Bedrock がホストするベースモデルを審査者として選択し、評価の手順を設定します。これは、コンテンツモデレーションなどの主観的なタスクに使用します。
**注記**  
コンソールの **Model as judge** オプションは、トレーニング中に設定を Lambda 関数に自動的に変換します。
   + **カスタムコード (RLVR)** - Lambda 関数を介して実行される Python コードを使用してカスタム報酬関数を作成します。これは、コード生成などの目標タスクに使用します。

   詳細については、「[Amazon Nova モデルの報酬関数の設定](reward-functions.md)」を参照してください。

1. (オプション) **Hyperparameters** セクションで、トレーニングパラメータを調整するか、デフォルト値を使用します。

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 トレーニング中にビジュアルグラフとメトリクスによるリアルタイムモニタリングを提供します。これらのメトリクスは、モデルが適切に収束するかどうか、および報酬関数が学習プロセスを効果的に導くかどうかを理解するのに役立ちます。

### ジョブステータスの追跡
<a name="rft-job-status"></a>

Amazon Bedrock コンソールで検証フェーズとトレーニングフェーズを通じて RFT ジョブのステータスをモニタリングできます。

**完了インジケータ:**
+ トレーニングが正常に完了すると、ジョブのステータスは**完了**に変わります
+ カスタムモデル 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/min` (出力トークン統計)`response_length/max`、および `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)。

**プレイグラウンドでテスト**を使用してレスポンスを評価し、ベースモデルと比較します。完了した RFT モデルの評価については、「」を参照してください[RFT モデルを評価する](rft-evaluate-model.md)。