Daten für Modelle mit offenem Gewicht 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 Modelle mit offenem Gewicht vorbereiten

Wenn Sie Open-Weight-Modelle mit Verstärkungsfeinabstimmung mithilfe von OpenAI-Compatible verfeinern APIs, stellen Sie Trainingsdaten bereit, indem Sie zu diesem Zweck Ihre eigenen Eingabeaufforderungen im JSONL-Format mitbringen. fine-tune

Format und Anforderungen der Trainingsdaten

Die Trainingsdaten müssen dem OpenAI-Format für Chat-Vervollständigungen mit 100-20.000 Beispielen entsprechen. Jedes Trainingsbeispiel enthält:

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

  • reference_answer: In diesem Feld sollte es die erwarteten Ergebnis- oder Bewertungskriterien enthalten, anhand derer Ihre Belohnungsfunktion die Antwort des Modells bewertet. Es ist nicht auf strukturierte Ergebnisse 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 Aufforderung pro Zeile)

  • Der Zweck muss auf eingestellt sein fine-tune

  • Mindestens 100 Datensätze im Trainingsdatensatz

  • Amazon Bedrock validiert automatisch das Format der Trainingsdatensätze

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

Datei-API

Sie können die OpenAI-kompatible Datei-API verwenden, um Ihre Trainingsdaten für die Feinabstimmung von Jobs hochzuladen. Dateien werden sicher in Amazon Bedrock gespeichert und bei der Erstellung von Feinabstimmungsaufträgen verwendet. Vollständige API-Details finden Sie in der Dokumentation zu OpenAIDateien.

Um eine Trainingsdatei hochzuladen, wählen Sie die Registerkarte für Ihre bevorzugte Methode und gehen Sie dann wie folgt vor:

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

Stellen Sie eine POST-Anfrage an/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"

Um Details zu einer bestimmten Datei abzurufen, wählen Sie die Registerkarte für Ihre bevorzugte Methode und gehen Sie dann wie folgt vor:

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

Stellen Sie eine GET-Anfrage an/v1/files/{file_id}:

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

Um hochgeladene Dateien aufzulisten, wählen Sie die Registerkarte für Ihre bevorzugte Methode und folgen Sie dann den Schritten:

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

Stellen Sie eine GET-Anfrage an/v1/files:

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

Um eine Datei zu löschen, wählen Sie die Registerkarte für Ihre bevorzugte Methode und folgen Sie dann den Schritten:

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

Stellen Sie eine DELETE-Anfrage an/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"

Eigenschaften effektiver Trainingsdaten

Effektive RFT-Trainingsdaten erfordern drei Hauptmerkmale:

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

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

  • Effiziente Belohnungsfunktionen — Entwerfen Sie Funktionen, die schnell (Sekunden, nicht Minuten) ausgeführt werden, parallelisiert werden und konsistente Ergebnisse AWS Lambda liefern, um ein kostengünstiges Training 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, zusätzliche Daten hinzuzufügen, die Ihre Prämienfunktion für eine korrekte Auswertung benötigt.

Anmerkung

Sie müssen dies nicht in Ihrem Rezept konfigurieren. Das Datenformat unterstützt von Natur aus zusätzliche Felder. Nehmen Sie sie einfach in Ihre JSON-Trainingsdaten auf und sie werden an Ihre Belohnungsfunktion im metadata Feld weitergegeben.

Allgemeine zusätzliche Eigenschaften

  • task_id— Eindeutige Kennung für die Nachverfolgung

  • 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 Prämienfunktion übergeben und ermöglichen so eine ausgeklügelte Bewertungslogik, 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 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.

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 }