View a markdown version of this page

Amazon Nova 2 での RFT のデータの準備 - Amazon Nova

Amazon Nova 2 での RFT のデータの準備

Amazon Nova 2 の RFT は現在、テキストベースのトレーニングデータをサポートしています。このページでは、Amazon Nova 2 理解モデルの RFT トレーニングデータを準備するためのデータ形式、サポートされている機能、制約、およびベストプラクティスについて説明します。

ヒント

トレーニングジョブを開始する前にデータセット形式を検証するには、検証ツール を参照してください。

データ形式

RFT トレーニングデータは、OpenAI の強化ファインチューニング形式に従います。JSONL トレーニングファイルの各行は、次の最上位フィールドを持つ JSON オブジェクトです。詳細については、各セクションを展開してください。

必須。system、user、オプションで assistant ロールを使用した会話ターンの配列。

  • role – 必須。一般的な値: system (モデルへの指示) および user (タスクまたは入力)。

  • content – 必須。メッセージのテキストコンテンツ。システムターンの場合は指示、ユーザーターンの場合はタスクまたは入力です。

"messages": [ { "role": "system", "content": "instructions" }, { "role": "user", "content": "prompt" } ]

必須。報酬関数がモデルのレスポンスをスコアリングするために使用する期待される出力または評価基準。このフィールドは構造化された出力に限定されず、報酬関数が品質を評価するのに役立つ任意の形式を含めることができます。

"reference_answer": { "field": "value" }

オプション。この例でモデルが使用できるツール仕様の配列。各項目は、ツールのインターフェイスとメタデータを定義します。完全な例については、ツール呼び出し を参照してください。

"tools": [ { "type": "function", "function": { "name": "tool-name", "description": "tool-description", "parameters": { ... } } } ]

RFT データ形式は、messages および reference_answer を超えるカスタムフィールドをサポートします。適切な評価のために報酬関数が必要とする追加データを含めてください。レシピで設定する必要はありません。これらは実行時に metadata フィールドの報酬関数に渡されます。

一般的な例としては次のようなものがあります。

メタデータ

  • id – 追跡用の一意の識別子

  • task_id – タスクレベルの識別子

  • difficulty_level – 問題の複雑さインジケータ

  • domain – サブジェクトエリアまたはカテゴリ

  • expected_reasoning_steps – ソリューションのステップ数

評価の基準:

  • evaluation_criteria – 特定のグレーディングルーブリック

  • custom_scoring_weights – さまざまな側面の相対的な重要性

  • context_data – 問題の背景情報

  • external_references – 関連するドキュメントまたはリソースへのリンク

データの検証

トレーニングジョブを送信する前に、データセットを検証してフォーマットの問題を早期に検出してください。使用可能な検証ツールについては、検証ツール を参照してください。

入力例

以下は、さまざまな RFT ユースケースに対応したフィールドの組み合わせ方を示す、完全な JSON オブジェクトの例です。

Chemistry problem
{ "id": "chem-01", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Calculate the molecular weight of caffeine (C8H10N4O2)" } ], "reference_answer": { "molecular_weight": 194.19, "unit": "g/mol", "calculation": "8(12.01) + 10(1.008) + 4(14.01) + 2(16.00) = 194.19" } }
Math problem
{ "id": "math-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }
Code problem
{ "id": "code-002", "messages": [ { "role": "system", "content": "You are a helpful programming assistant" }, { "role": "user", "content": "Write a Python function that reverses a string without using built-in reverse methods" } ], "reference_answer": { "code": "def reverse_string(s):\n result = ''\n for i in range(len(s) - 1, -1, -1):\n result += s[i]\n return result", "test_cases": [ { "input": "hello", "expected_output": "olleh" }, { "input": "", "expected_output": "" }, { "input": "a", "expected_output": "a" }, { "input": "Python123", "expected_output": "321nohtyP" } ], "all_tests_pass": true } }
Tool usage
{ "id": "tool-001", "messages": [ { "role": "system", "content": "You are a helpful game master assistant" }, { "role": "user", "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier." } ], "tools": [ { "type": "function", "function": { "name": "StatRollAPI", "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.", "parameters": { "type": "object", "properties": { "modifier": { "description": "An integer representing the modifier to apply to the total of the stat roll.", "type": "integer" } }, "required": ["modifier"] } } } ], "reference_answer": { "tool_called": "StatRollAPI", "tool_parameters": { "modifier": 2 }, "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value" } }
With additional properties

次の例には、評価中に報酬関数に渡されるカスタムメタデータフィールドが含まれており、特定のユースケースに合わせた高度なスコアリングロジックが可能になります。

{ "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }

サポートされている機能

次の表は、Amazon Nova 2 での RFT の機能サポートをまとめたものです。

RFT 機能のサポート
機能 Amazon Nova 2 の RFT
テキスト理解 Nova 2.0 Lite でサポートされています。「一般的/テキスト理解」を参照してください。
画像理解 サポートされていません
動画理解 サポートされていません
ドキュメント理解 サポートされていません
ツール呼び出し Nova 2.0 Lite でサポートされています。「ツール呼び出し」を参照してください。
推論 Nova 2.0 Lite でサポートされています。「推論」を参照してください。

一般的/テキスト理解

このセクションでは、Amazon Nova 2 トレーニングデータの RFT を準備するための一般的な制約とベストプラクティスをまとめています。

制約

一般的なデータセットの制約
制約 詳細
データセット形式 JSONL (1 行につき 1 つの JSON オブジェクト)。
最小トレーニング例数 100
最小評価例数 100
サポートされているモダリティ テキストのみ

ベストプラクティス:

  • 最小データセットサイズ (トレーニング例 100、評価例 100) から開始し、報酬関数を検証して RFT がユースケースに適していることを確認した後にスケールアップすることをお勧めします。

  • 評価優先アプローチをお勧めします。大規模な RFT トレーニングに投資する前に、モデルのベースラインパフォーマンスを評価します。

    • 高パフォーマンス (>95% の報酬) – モデルのパフォーマンスが既に良好なため、RFT は不要な場合がある。

    • パフォーマンスが非常に低い (0% の報酬): まず SFT に切り替えて基本的な機能を確立する。

    • 中程度のパフォーマンス – RFT が適切である可能性が高い

  • 小さなデータセットから始めることで、報酬関数にバグがないことを検証し、RFT が適切なアプローチであることを確認し、問題を早期に特定して修正し、スケールアップする前にワークフローをテストできます。

  • モデルレスポンスで一貫して実行される高品質の入力データと信頼性の高い報酬関数を優先します。

入力例

{ "id": "math-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }

ツール呼び出し

RFT はツール呼び出しパターンに関するモデルのトレーニングをサポートしているため、モデルは外部ツールまたは関数を呼び出すタイミングと方法を学習できます。

制約

ツール呼び出しの制約
制約 詳細
ツール定義の場所 ツールは、トレーニング例の最上位 tools 配列で宣言されます。
ツール定義の形式 各ツールには、type、function.name、function.description、および function.parameters に有効な JSON スキーマを含める必要があります。
リファレンスの回答 reference_answer を使用して、期待されるツール呼び出し (tool_called、tool_parameters など) を指定することで、報酬関数が正確性を評価できるようにします。

ベストプラクティス:

  • ツール定義がすべてのトレーニングサンプルで一貫しているようにしてください

  • このモデルは、提供するデモンストレーションからツール呼び出しパターンを学習します

  • 各ツールを使用するタイミングと使用しないタイミングのさまざまな例を含めます

入力例

{ "id": "tool-001", "messages": [ { "role": "system", "content": "You are a helpful game master assistant" }, { "role": "user", "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier." } ], "tools": [ { "type": "function", "function": { "name": "StatRollAPI", "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.", "parameters": { "type": "object", "properties": { "modifier": { "description": "An integer representing the modifier to apply to the total of the stat roll.", "type": "integer" } }, "required": ["modifier"] } } } ], "reference_answer": { "tool_called": "StatRollAPI", "tool_parameters": { "modifier": 2 }, "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value" } }

推論

Amazon Nova 2 の RFT は推論モードをサポートしています。このモードでは、モデルは最終的な回答を生成する前に明示的な思考トークンを生成します。reasoning_effort トレーニング設定フィールドを使用して、トレーニング中の推論動作を制御します。

制約

推論の制約
制約 詳細
利用可能なモード none (reasoning_effort フィールドを省略)、low、および high。RFT には medium オプションはありません。
デフォルトの動作 reasoning_effort フィールドが設定にない場合、推論は無効になります。
トークンの制限 推論が有効になっている場合は、拡張推論出力に対応するように max_new_tokens を 32768 に設定する必要があります。

各モードを使用するタイミング

次の場合は、high推論を使用します。

  • 複雑な分析タスク

  • 数学的な問題解決

  • 複数ステップの論理的演繹

  • ステップバイステップの思考が価値を追加するタスク

以下の場合は none (reasoning_effort を省略) または low 推論を使用します。

  • 単純な事実のクエリ

  • 直接的な分類

  • 速度とコストの最適化

  • 簡単な質問への回答

コストとパフォーマンスのトレードオフ

高い推論モードは以下を増加させます。

  • トレーニング時間とコスト

  • 推論のレイテンシーとコスト

  • 複雑な推論タスクのモデル機能

効果的なトレーニングデータの特徴

明確性と一貫性

優れた RFT の例には、さまざまなモデル出力にわたって正確な報酬計算を可能にする明確かつ曖昧ではない入力データが必要です。以下を含むデータのノイズを避けます。

  • 不整合なフォーマット

  • 矛盾するラベルまたは指示

  • あいまいなプロンプト

  • 参照回答の競合

あいまいさがあると、トレーニングプロセスが誤った方向に導かれ、モデルが意図しない動作を学習します。

多様性

データセットは、堅牢な実際のパフォーマンスを確保するために、本番稼働用ユースケースの完全な多様性をキャプチャする必要があります。以下が含まれます:

  • さまざまな入力形式とエッジケース

  • ログとユーザー分析から実際の本番稼働用使用パターンをマッピングする

  • ユーザータイプ、地理的リージョン、季節的変動をまたいでサンプリングする

  • 単純な問題から複雑な問題まで、難易度レベルを含める

報酬関数に関する考慮事項

効率的なトレーニングのために以下のように報酬関数を設計します。

  • (数分ではなく) 数秒以内に実行する

  • Lambda と効果的に並列化する

  • 一貫性のある信頼できるスコアを返す

  • さまざまなタイプのモデル出力を適切に処理する

高速でスケーラブルな報酬関数により、迅速なイテレーションと費用対効果の高い実験が行えます。

LLM-as-a-judge を使用した RFT トレーニング

概要

大規模言語モデル (LLM) は、強化ファインチューニング (RFT) ワークフローのジャッジとしてますます使用され、モデルの最適化をガイドする自動報酬シグナルを提供します。このアプローチでは、LLM は、正確性、品質、スタイルの準拠性、セマンティック同等性など、指定された基準に照らしてモデル出力を評価し、強化学習プロセスを推進する報酬を割り当てます。

これは、従来の報酬関数をプログラムで定義することが難しいタスクに特に役立ちます。これには、さまざまな表現 (「1/3」、「0.333」、「3 分の 1」など) が意味的に同等かどうかを判断するタスク、一貫性や関連性などの微妙な性質を評価するタスクなどがあります。LLM ベースのジャッジを報酬関数として使用することで、広範な人間の注釈を必要とせずに RFT を複雑なドメインにスケールできるため、従来のアラインメントの問題を超えたさまざまなユースケースでモデルの迅速なイテレーションと継続的な改善が可能になります。

LLM ジャッジの検証

LLM-as-a-judge を本番環境にデプロイする前に、ジャッジモデルの評価が人間の判断と一致していることを確認します。これには以下が含まれます。

  • タスクの代表的なサンプルに関する LLM ジャッジと人間の評価者間の合意率を測定する

  • LLM の人間との合意が人間間の合意レート以上であることを確認する

  • ジャッジモデルの潜在的なバイアスを特定する

  • 報酬シグナルがモデルを意図した方向に導くという信頼を構築する

この検証ステップは、自動評価プロセスが本番品質基準を満たすモデルを生成するのに役立ちます。

LLM ジャッジ向けの Lambda 設定

LLM-as-a-judge の使用は、検証可能な報酬による強化学習(RLVR)に Lambda 関数を使用する手法を発展させたものです。Lambda 関数内で、Amazon Bedrock でホストされているいずれかのモデルを呼び出します。

重要な設定要件:

設定 要件 詳細
Amazon Bedrock スループット 十分なクォータ 使用する Amazon Bedrock モデルのスループットクォータがトレーニングワークロードに十分であることを確認します
Lambda タイムアウト 延長タイムアウト Lambda 関数のタイムアウトを最大 15 分に設定します。デフォルト設定は 3 秒で、Amazon Bedrock モデルレスポンスでは不十分です
Lambda の同時実行 同時実行数の増加 Lambda はトレーニング中に並行して呼び出されます。同時実行数を増やして利用可能なスループットを最大化する
レシピ設定 Lambda 設定の一致 同時実行制限はレシピで設定する必要があります