翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Nova モデルのデータを準備する
強化ファインチューニングを使用して Amazon Nova モデルをファインチューニングする場合、独自のプロンプトを使用するか、既存の Amazon Bedrock API 呼び出しログをトレーニングデータとして使用できます。
トレーニングデータの要件とソース
トレーニングデータは、次のいずれかのオプションを使用して提供できます。
注記
OpenAI チャット完了形式のみがサポートされています。
プロンプトを収集し、.jsonl ファイル形式で保存します。カスタムデータセットを JSONL 形式でアップロードすることも、Amazon S3 から既存のデータセットを選択することもできます。JSONL の各レコードは、次の構造で OpenAI チャット完了形式を使用する必要があります。
-
messages: このフィールドには、モデルに提供される入力プロンプトを含むユーザー、システム、またはアシスタントロールを含めます。 -
reference_answer: このフィールドには、報酬関数がモデルのレスポンスをスコアリングするために使用する期待される出力または評価基準が含まれている必要があります。これは構造化された出力に限定されず、報酬関数が品質を評価するのに役立つ任意の形式を含めることができます。 -
[オプション] グレーディングにグレーダー Lambda が使用するフィールドを追加できます。
要件:
OpenAI チャット完了形式のプロンプトを含む JSONL 形式 (1 行あたり 1 つのプロンプト)
トレーニングデータセットに最低 100 レコード
Amazon Bedrock はトレーニングデータセットの形式を自動的に検証します
強化ファインチューニングジョブを作成すると、Amazon Bedrock に S3 バケットからの既存の呼び出しログをトレーニングデータとして使用させることができます。Amazon Bedrock の場合、呼び出しログはモデル呼び出しの詳細なレコードです。
Amazon S3 からカスタマー側で保存された Invoke/Converse API 呼び出しログをトレーニングに使用できます。
要件:
-
Amazon Bedrock の使用に対して API ログ記録を有効にする必要があります
-
ログはサポートされている形式である必要があります (Amazon Bedrock Invoke/Converse API)
-
少なくとも 100 個のプロンプト例
呼び出しログを使用して強化ファインチューニングを行うには、モデルの呼び出しログをオンに設定し、モデルの呼び出しオペレーションのいずれかを使用して、Amazon S3 バケットをログの送信先として設定していることを確認します。呼び出しログの設定の詳細については、CloudWatch Logs と Amazon S3 を使用したモデル呼び出しのモニタリング」を参照してください。
S3 バケットからの呼び出しログを入力として強化ファインチューニングジョブを開始する前に、S3 バケットからログにアクセスするためのアクセス許可を Amazon Bedrock に付与する必要があります。詳細については、「モデルのカスタマイズのアクセスとセキュリティ」を参照してください。
必要に応じて、いずれかのモデル呼び出しオペレーションを使用して呼び出しログのプロンプトと応答のペアにリクエストメタデータを追加し、後でそれを使用してログをフィルタリングできます。Amazon Bedrock は、フィルタリングされたログを使用してモデルを微調整できます。
呼び出しログのプロンプトとレスポンスにリクエストメタデータを追加する
呼び出しログを使用すると、Amazon Bedrock が呼び出しログにアタッチされたリクエストメタデータを使用して強化ファインチューニングに使用するトレーニングデータセットプロンプトを特定できます。
以下は、 を使用した InvokeModel呼び出しからの呼び出しログの例ですrequestMetadata。
{ "schemaType": "ModelInvocationLog", "schemaVersion": "1.0", "timestamp": "2024-09-11T17:16:18Z", "accountId": "XXXXX", "identity": { "arn": "arn:aws:sts::XXXXXXX:assumed-role/Admin/XXXXXX" }, "region": "us-east-1", "requestId": "7ee514f3-9eff-467c-af75-8fd564ce58e5", "operation": "InvokeModel", "modelId": "meta.llama3-1-405b-instruct-v1:0", "input": { "inputContentType": "application/json", "inputBodyJson": { "prompt": "story of two dogs", "max_tokens_to_sample": 300 }, "inputTokenCount": 13 }, "output": { "outputContentType": "application/json", "outputBodyJson": { "type": "completion", "completion": " Here is a story about two dogs:\n\nRex and Charlie were best friends who lived next door to each other. Every morning, their owners would let them out into the backyard to play. Rex was a golden retriever with long, shaggy fur. He loved to run and chase sticks. Charlie was a corgi with short legs and a big smile. He was happy just sniffing the grass and rolling around. \n\nThe two dogs spent every day playing together. Rex would grab a stick and bring it over to Charlie, wagging his tail excitedly. Charlie would take the other end of the stick in his mouth and they'd have a friendly game of tug-of-war. After tiring themselves out, they'd flop down in the warm sunshine for a nap. \n\nAt lunchtime, their owners would call them in for food. Rex would gobble up his kibble hungrily while Charlie ate his at a more leisurely pace. After lunch, it was right back outside for more playtime. The afternoon sunbeams would light up their fur as they chased each other around the yard. \n\nWhen it started getting late, their owners called them in for the night. Rex and Charlie would head inside, tired but happy after another fun day of play. After slurping up fresh water from their bowls, they'd curl up on their beds, Rex's fluffy golden tail tucked over his nose and little", "stop_reason": "max_tokens", "stop": null }, "outputTokenCount": 300 }, "requestMetadata": { "project": "CustomerService", "intent": "ComplaintResolution", "priority": "High" } }
強化ファインチューニングジョブを開始するときに、呼び出しログを入力データソースとして指定できます。Amazon Bedrock コンソール、 API、または SDK を使用して AWS CLI、強化ファインチューニングジョブを開始できます。
リクエストメタデータを提供するための要件
リクエストメタデータは、次の要件を満たしている必要があります。
-
JSON
key:value形式で提供されている。 -
キーと値のペアは、最大 256 文字の文字列である必要がある。
-
最大 16 個のキーと値のペアを指定する。
リクエストメタデータのフィルターの使用
リクエストメタデータを含む呼び出しログが利用可能になったら、リクエストメタデータに基づいてフィルターを適用して、モデルを微調整するために含めるプロンプトを選択的に選択できます。たとえば、 "project": "CustomerService"および "priority": "High"リクエストメタデータを持つもののみを含めることができます。
複数のリクエストメタデータを使用してログをフィルタリングするには、単一のブール演算子ANDまたは を使用しますOR。これらの演算子を組み合わせることはできません。単一リクエストのメタデータフィルタリングには、 Equals または Not Equals演算子を使用します。
効果的なトレーニングデータの特徴
効果的な RFT トレーニングデータには、次の 3 つの主要な特性が必要です。
-
明確性と一貫性 – 明確であいまいなプロンプトを一貫したフォーマットで使用します。トレーニングを誤解する矛盾するラベル、あいまいな指示、または矛盾する参照回答は避けてください。
-
多様性 – さまざまな入力形式、エッジケース、およびさまざまなユーザータイプやシナリオにわたる本番稼働用の使用パターンを反映する難易度レベルが含まれます。
-
効率的な報酬関数 – 迅速に (数分ではなく秒単位で) 実行され、 と並列化され AWS Lambda、費用対効果の高いトレーニングのために一貫したスコアを返す関数を設計します。
その他のプロパティ
RFT データ形式は、コアスキーマ要件 (messages および ) を超えるカスタムフィールドをサポートしますreference_answer。この柔軟性により、報酬関数が適切な評価に必要な追加データを追加できます。
注記
レシピでこれを設定する必要はありません。データ形式は、本質的に追加のフィールドをサポートします。トレーニングデータ JSON に含めるだけで、 metadataフィールドの報酬関数に渡されます。
一般的な追加プロパティ
task_id– 追跡用の一意の識別子difficulty_level– 問題の複雑さインジケータdomain– サブジェクトエリアまたはカテゴリexpected_reasoning_steps– ソリューションのステップ数
これらの追加フィールドは評価中に報酬関数に渡されるため、特定のユースケースに合わせた高度なスコアリングロジックが可能になります。
追加プロパティの例