強化ファインチューニングジョブを作成する - Amazon Bedrock

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

強化ファインチューニングジョブを作成する

Amazon Bedrock コンソールまたは API を使用して、強化ファインチューニングジョブを作成できます。RFT ジョブは、トレーニングデータのサイズ、エポック数、報酬関数の複雑さに応じて、数時間かかる場合があります。

前提条件

  • RFT トレーニングデータと出力アーティファクトを保存する Amazon S3 バケットにアクセスするには、IAM サービスロールを作成します。このロールは、 を使用して自動的に作成AWS マネジメントコンソールすることも、手動で作成することもできます。RFT 固有のアクセス許可については、「」を参照してくださいアクセスとセキュリティの微調整の強化

  • (オプション) カスタムモデルに対して行われた入出力データ、RFT ジョブ、または推論リクエストを暗号化します。詳細については、「カスタムモデルの暗号化」を参照してください。

RFT ジョブを作成する

任意の方法のタブを選択し、その手順に従います。

Console

コンソールで RFT ジョブを送信するには、次の手順を実行します。

  1. にサインインAWS マネジメントコンソールし、https://console.aws.amazon.com/bedrock で Amazon Bedrock コンソールを開きます。

  2. 左側のナビゲーションペインの [調整][カスタムモデル] を選択します。

  3. モデル テーブルで、作成 を選択します。次に、強化ファインチューニングジョブの作成を選択します。

  4. モデルの詳細セクションで、ベースモデルとして Amazon Nova 2 Lite を選択します。

  5. 「カスタマイズの詳細」セクションに、カスタマイズ名を入力します。

  6. トレーニングデータセクションで、データソースを選択します。

    • 保存済み呼び出しログを使用する - Amazon S3 に保存されている使用可能な呼び出しログから選択します。

    • 新しいデータセットをアップロードする - トレーニングデータセットファイルの Amazon S3 の場所を選択するか、デバイスからファイルを直接アップロードします。

    注記

    トレーニングデータセットは OpenAI Chat Completions データ形式である必要があります。Amazon Bedrock の呼び出し形式または逆形式で呼び出しログを指定すると、Amazon Bedrock は自動的にそれらをチャット完了形式に変換します。

  7. 報酬関数セクションで、報酬メカニズムを設定します。

    • Model as judge (RLAIF) - Bedrock がホストするベースモデルを審査者として選択し、評価の手順を設定します。これは、コンテンツモデレーションなどの主観的なタスクに使用します。

      注記

      コンソールの Model as judge オプションは、トレーニング中に設定を Lambda 関数に自動的に変換します。

    • カスタムコード (RLVR) - Lambda 関数を介して実行される Python コードを使用してカスタム報酬関数を作成します。これは、コード生成などの目標タスクに使用します。

    詳細については、「報酬関数の設定」を参照してください。

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

  9. 出力データセクションに、Bedrock がジョブ出力を保存する Amazon S3 の場所を入力します。

  10. ロール設定セクションで、以下を選択します。

    • 既存のロールを選択する - ドロップダウンリストから選択します

    • ロールの作成 - サービスロールの名前を入力します。

  11. (オプション) 追加設定セクションで、以下を設定します。

    • Amazon S3 バケットをポイントしてデータを検証する

    • KMS 暗号化設定

    • ジョブタグとモデルタグ

  12. 強化ファインチューニングジョブの作成を選択してジョブを開始します。

API

customizationTypeに設定して CreateModelCustomizationJob リクエストを送信しますREINFORCEMENT_FINE_TUNING。次のフィールドを指定する必要があります。

必須フィールド:

  • roleArn - RFT アクセス許可を持つサービスロールの ARN

  • baseModelIdentifier - カスタマイズする基盤モデルのモデル ID または ARN

  • customModelName - 新しくカスタマイズしたモデルの名前

  • jobName - トレーニングジョブの名前

  • customizationTypeREINFORCEMENT_FINE_TUNING に設定

  • trainingDataConfig - トレーニングデータセットまたは呼び出しログ設定の Amazon S3 URI

  • outputDataConfig - 出力データを書き込む Amazon S3 URI

  • rftConfig - 報酬関数設定 (RLVR または RLAIF) とハイパーパラメータ設定

リクエストの例:

{ "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 ジョブワークフロー

RFT ジョブはこの自動ワークフローに従います。

  1. レスポンスの生成 - アクターモデルはトレーニングプロンプトからレスポンスを生成します

  2. 報酬計算 - 報酬関数はプロンプトとレスポンスのペアを評価します

  3. アクターモデルトレーニング - モデルは GRPO を使用してスコア付きペアから学習します

トレーニング中、損失、報酬、報酬マージン、精度などのトレーニングおよび検証メトリクスを含むリアルタイムグラフを使用して進行状況をモニタリングできます。成功すると、カスタムモデル ARN を使用して RFT モデルが作成されます。

推論をセットアップする

ジョブが完了したら、オンデマンド推論のためにワンクリックで結果の RFT モデルをデプロイできます。一貫したパフォーマンスを必要とするミッションクリティカルなワークロードには、プロビジョンドスループットを使用することもできます。推論を設定したら、プレイグラウンドでテストを使用してレスポンスをインタラクティブに評価し、ベースモデルとside-by-sideして比較します。

RFT ジョブの進行状況のモニタリングについては、「」を参照してくださいRFT トレーニングジョブをモニタリングする

完了した RFT モデルの評価については、「」を参照してくださいRFT モデルを評価する