オープンウェイトモデルのデータを準備する - Amazon Bedrock

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

オープンウェイトモデルのデータを準備する

OpenAI 互換 APIs を使用して強化ファインチューニングを使用してオープンウェイトモデルをファインチューニングする場合は、目的 を使用して独自のプロンプトを JSONL 形式で取得してトレーニングデータを提供しますfine-tune

トレーニングデータの形式と要件

トレーニングデータは、100-20K000 の例を含む OpenAI チャット完了形式に従う必要があります。各トレーニングの例は次のとおりです。

  • messages: このフィールドには、モデルに提供される入力プロンプトを含むユーザー、システム、またはアシスタントロールを含めます。

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

  • [オプション] グレーディングにグレーダー Lambda が使用するフィールドを追加できます。

要件:

  • OpenAI チャット完了形式のプロンプトを含む JSONL 形式 (1 行あたり 1 つのプロンプト)

  • 目的は に設定する必要があります fine-tune

  • トレーニングデータセットに最低 100 レコード

  • Amazon Bedrock はトレーニングデータセットの形式を自動的に検証します

Example: General question-answering
{ "messages": [ { "role": "system", "content": "You are a helpful assistant" }, { role": "user", "content": "What is machine learning?"} ], "reference_answer": "Machine learning is a subset of artificial intelligence that enables computers to learn and make decisions from data without being explicitly programmed." }
Example: Math problem
{ "id": "sample-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"] } }

ファイル API

OpenAI 互換ファイル API を使用して、ファインチューニングジョブのトレーニングデータをアップロードできます。ファイルは Amazon Bedrock に安全に保存され、ファインチューニングジョブを作成するときに使用されます。API の詳細については、OpenAIファイルドキュメントを参照してください。

トレーニングファイルをアップロードするには、任意の方法のタブを選択し、ステップに従います。

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # Upload training file with open(TRAINING_FILE_PATH, 'rb') as f: file_response = client.files.create( file=f, purpose='fine-tune' ) # Store file ID for next steps training_file_id = file_response.id print(f"✅ Training file uploaded successfully: {training_file_id}")
HTTP request

に POST リクエストを行います/v1/files

curl https://bedrock-mantle.us-west-2.api.aws/v1/files \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -F purpose="fine-tune" \ -F file="@training_data.jsonl"

特定のファイルの詳細を取得するには、任意の方法のタブを選択し、手順に従います。

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # Retrieve file details file_details = client.files.retrieve(training_file_id) # Print raw response print(json.dumps(file_details.model_dump(), indent=2))
HTTP request

に GET リクエストを行います/v1/files/{file_id}

curl https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \ -H "Authorization: Bearer $OPENAI_API_KEY"

アップロードされたファイルを一覧表示するには、任意の方法のタブを選択し、手順に従います。

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # List files files_response = client.files.list(purpose='fine-tune') # Print raw response print(json.dumps(files_response.model_dump(), indent=2))
HTTP request

に GET リクエストを行います/v1/files

curl https://bedrock-mantle.us-west-2.api.aws/v1/files?purpose=fine-tune \ -H "Authorization: Bearer $OPENAI_API_KEY"

ファイルを削除するには、任意の方法のタブを選択し、手順に従います。

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # Delete file delete_response = client.files.delete(training_file_id)
HTTP request

に DELETE リクエストを行います/v1/files/{file_id}

curl -X DELETE https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \ -H "Authorization: Bearer $OPENAI_API_KEY"

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

効果的な RFT トレーニングデータには、次の 3 つの主要な特性が必要です。

  • 明確性と一貫性 – 明確であいまいなプロンプトを一貫したフォーマットで使用します。トレーニングを誤解する矛盾するラベル、あいまいな指示、または矛盾する参照回答は避けてください。

  • 多様性 – さまざまな入力形式、エッジケース、およびさまざまなユーザータイプやシナリオにわたる本番稼働用の使用パターンを反映する難易度レベルが含まれます。

  • 効率的な報酬関数 – すばやく (分ではなく秒単位) 実行し、 と並列化し AWS Lambda、一貫したスコアを返す関数を設計して、費用対効果の高いトレーニングを実現します。

その他のプロパティ

RFT データ形式は、コアスキーマ要件 (messages および ) を超えるカスタムフィールドをサポートしますreference_answer。この柔軟性により、報酬関数が適切な評価に必要な追加データを追加できます。

注記

レシピでこれを設定する必要はありません。データ形式は、本質的に追加のフィールドをサポートします。トレーニングデータ JSON に含めるだけで、 metadataフィールドの報酬関数に渡されます。

一般的な追加プロパティ

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

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

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

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

これらの追加フィールドは評価中に報酬関数に渡されるため、特定のユースケースに合わせた高度なスコアリングロジックが可能になります。

追加プロパティの例

Chemistry problem
{ "id": "chem-001", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C" } ], "reference_answer": { "donor_bond_counts": 2, "acceptor_bond_counts": 4 } }

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

Math problem with metadata
{ "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 }