View a markdown version of this page

Daten für Amazon Nova-Modelle vorbereiten - Amazon Bedrock

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Daten für Amazon Nova-Modelle vorbereiten

Wenn Sie ein Amazon Nova-Modell mit der Feinabstimmung der Verstärkung optimieren, können Sie Ihre eigenen Eingabeaufforderungen verwenden oder vorhandene Amazon Bedrock-API-Aufrufprotokolle als Trainingsdaten verwenden.

Anforderungen und Quellen für Trainingsdaten

Sie können Trainingsdaten über eine der folgenden Optionen bereitstellen:

Anmerkung

Wir unterstützen nur das OpenAI-Chat-Abschlussformat.

Sammeln Sie Ihre Prompts und speichern Sie sie im Dateiformat .jsonl. Sie können benutzerdefinierte Datensätze im JSONL-Format hochladen oder vorhandene Datensätze aus Amazon S3 auswählen. Jeder Datensatz in der JSONL muss das OpenAI-Chat-Abschlussformat in der folgenden Struktur verwenden:

  • messages: Geben Sie in dieses Feld die Benutzer-, System- oder Assistentenrolle ein, die die für das Modell bereitgestellte Eingabeaufforderung enthält.

  • reference_answer: In diesem Feld sollte es die erwarteten Output- oder Bewertungskriterien enthalten, anhand derer Ihre Belohnungsfunktion die Antwort des Modells bewertet. Es ist nicht auf strukturierte Ausgaben beschränkt — es kann jedes Format enthalten, das Ihrer Belohnungsfunktion bei der Bewertung der Qualität hilft.

  • [Optional] Sie können Felder hinzufügen, die vom Grader Lambda für die Benotung verwendet werden.

Voraussetzungen:

  • JSONL-Format mit Eingabeaufforderungen im OpenAI-Chat-Abschlussformat (eine Eingabeaufforderung pro Zeile)

  • Mindestens 100 Datensätze im Trainingsdatensatz

  • Amazon Bedrock validiert automatisch das Format des Trainingsdatensatzes

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"] } }

Wenn Sie einen Job zur Feinabstimmung von Verstärkungen erstellen, können Sie Amazon Bedrock anweisen, vorhandene Aufrufprotokolle aus Ihrem S3-Bucket als Trainingsdaten zu verwenden. Für Amazon Bedrock ist ein Aufrufprotokoll eine detaillierte Aufzeichnung von Modellaufrufen.

Sie können kundenseitig gespeicherte Invoke/Converse API-Aufrufprotokolle von Amazon S3 für Schulungen verwenden.

Voraussetzungen:

  • Die API-Protokollierung muss für Ihre Amazon Bedrock-Nutzung aktiviert sein

  • Die Protokolle müssen in einem unterstützten Format vorliegen (Amazon Bedrock API Invoke/Converse )

  • Mindestens 100 Beispiele für Eingabeaufforderungen

Um Aufrufprotokolle für die Feinabstimmung der Verstärkung zu verwenden, legen Sie die Anmeldung für Modellaufrufe fest, verwenden Sie einen der Modellaufrufvorgänge und stellen Sie sicher, dass Sie einen Amazon S3-Bucket als Ziel für die Protokolle eingerichtet haben. Weitere Informationen zum Einrichten der Aufrufprotokolle finden Sie unter Überwachen des Modellaufrufs mithilfe von Logs und Amazon S3. CloudWatch

Bevor Sie mit der Feinabstimmung der Verstärkung mit Aufrufprotokollen aus einem S3-Bucket als Eingabe beginnen, geben Sie Amazon Bedrock Berechtigungen für den Zugriff auf die Protokolle. Weitere Informationen finden Sie unter Zugriff und Sicherheit bei der Modellanpassung.

Sie können optional mithilfe eines der Modellaufrufvorgänge Anforderungsmetadaten zu den Prompt-Antwort-Paaren im Aufrufprotokoll hinzufügen und diese dann später zum Filtern der Protokolle verwenden. Amazon Bedrock kann die gefilterten Protokolle zur Feinabstimmung des Modells verwenden.

Fügen Sie Anforderungsmetadaten zu Eingabeaufforderungen und Antworten in Ihren Aufrufprotokollen hinzu

Mithilfe von Aufrufprotokollen können Sie anhand von Anforderungsmetadaten, die den Aufrufprotokollen beigefügt sind, die Eingabeaufforderungen aus dem Trainingsdatensatz identifizieren, die Amazon Bedrock zur Feinabstimmung der Verstärkung verwenden soll.

Im Folgenden finden Sie ein Beispiel für ein Aufrufprotokoll aus einem Anruf mit: 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" } }

Sie können das Aufrufprotokoll als Eingabedatenquelle angeben, wenn Sie mit der Feinabstimmung von Verstärkungen beginnen. Sie können einen Job zur Feinabstimmung der Verstärkung über die Amazon Bedrock-Konsole starten, indem Sie die API oder das SDK verwenden. AWS CLI

Anforderungen für die Bereitstellung von Anforderungsmetadaten

Die Anforderungsmetadaten müssen die folgenden Anforderungen erfüllen:

  • Sie müssen im JSON-Format für key:value bereitgestellt werden.

  • Das Schlüssel/Wert-Paar muss eine Zeichenfolge mit maximal 256 Zeichen sein.

  • Es dürfen maximal 16 Schlüssel/Wert-Paare bereitgestellt werden.

Verwenden von Filtern für Anforderungsmetadaten

Sobald Aufrufprotokolle mit Anforderungsmetadaten verfügbar sind, können Sie Filter anwenden, die auf den Anforderungsmetadaten basieren, um selektiv auszuwählen, welche Eingabeaufforderungen zur Feinabstimmung des Modells aufgenommen werden sollen. Beispielsweise möchten Sie möglicherweise nur diejenigen mit "project": "CustomerService" und Anforderungsmetadaten einbeziehen. "priority": "High"

Um die Protokolle anhand mehrerer Anforderungsmetadaten zu filtern, verwenden Sie einen einzelnen booleschen Operator AND oder. OR Sie können diese Operatoren nicht kombinieren. Verwenden Sie für die Filterung von Metadaten für einzelne Anfragen den Equals Not Equals Operator or.

Eigenschaften effektiver Trainingsdaten

Effektive RFT-Trainingsdaten erfordern drei Hauptmerkmale:

  • Klarheit und Konsistenz — Verwenden Sie klare, unmissverständliche Eingabeaufforderungen mit einheitlicher Formatierung. Vermeiden Sie widersprüchliche Bezeichnungen, mehrdeutige Anweisungen oder widersprüchliche Referenzantworten, die das Training irreführen könnten.

  • Vielfalt — Berücksichtigen Sie unterschiedliche Eingabeformate, Randfälle und Schwierigkeitsgrade, die die Nutzungsmuster in der Produktion für verschiedene Benutzertypen und Szenarien widerspiegeln.

  • Effiziente Belohnungsfunktionen — Entwickeln Sie Funktionen, die schnell ausgeführt werden (Sekunden, nicht Minuten), mit denen Sie parallelisiert werden können und konsistente Ergebnisse liefern AWS Lambda, um eine kosteneffektive Schulung zu ermöglichen.

Zusätzliche Eigenschaften

Das RFT-Datenformat unterstützt benutzerdefinierte Felder, die über die grundlegenden Schemaanforderungen (messagesund) hinausgehen. reference_answer Diese Flexibilität ermöglicht es Ihnen, alle zusätzlichen Daten hinzuzufügen, die Ihre Belohnungsfunktion für eine korrekte Bewertung benötigt.

Anmerkung

Du musst das nicht in deinem Rezept konfigurieren. Das Datenformat unterstützt von Natur aus zusätzliche Felder. Füge sie einfach in deine Trainingsdaten-JSON ein und sie werden an deine Belohnungsfunktion im metadata Feld weitergegeben.

Allgemeine zusätzliche Eigenschaften

  • task_id— Eindeutige Kennung für das Tracking

  • difficulty_level— Indikator für die Komplexität des Problems

  • domain— Fachgebiet oder Kategorie

  • expected_reasoning_steps— Anzahl der Lösungsschritte

Diese zusätzlichen Felder werden während der Bewertung an Ihre Belohnungsfunktion weitergegeben, sodass eine ausgeklügelte Bewertungslogik ermöglicht wird, die auf Ihren speziellen Anwendungsfall zugeschnitten ist.

Beispiele mit zusätzlichen Eigenschaften

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 } }

Das reference_answer Feld enthält die erwarteten Ausgabe- oder Bewertungskriterien, anhand derer Ihre Belohnungsfunktion die Antwortvariablen des Modells bewertet. Es ist nicht auf strukturierte Ausgaben beschränkt — es kann jedes Format enthalten, das Ihrer Belohnungsfunktion bei der Bewertung der Qualität hilft.

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 }