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.
Optimieren Sie Nova 2.0
Voraussetzungen
Bevor Sie einen Trainingsjob beginnen, sollten Sie Folgendes beachten.
-
Amazon-S3-Buckets zum Speichern Ihrer Eingabedaten und der Ausgabe von Trainingsjobs. Sie können entweder einen Bucket für beide oder separate Buckets für jeden Datentyp verwenden. Stellen Sie sicher, dass sich Ihre Bereiche dort befindenAWS-Region, wo Sie auch alle anderen Ressourcen für Schulungen erstellen. Weitere Informationen finden Sie unter Erstellen eines Buckets für allgemeine Zwecke.
-
Eine IAM-Rolle mit Berechtigungen zum Ausführen eines Trainingsjobs. Stellen Sie sicher, dass Sie eine IAM-Richtlinie mit
AmazonSageMakerFullAccessanhängen. Weitere Informationen finden Sie unter So verwenden Sie SageMaker Ausführungsrollen. -
Grundlegende Amazon-Nova-Rezepte finden Sie unter Abrufen von Amazon-Nova-Rezepten.
Was ist SFT?
Supervised Fine-Tuning (SFT) trainiert ein Sprachmodell mithilfe von beschrifteten Eingabe-Ausgabe-Paaren. Das Modell lernt anhand von Demonstrationsbeispielen, die aus Eingabeaufforderungen und Antworten bestehen, und verfeinert seine Fähigkeiten, um es an bestimmte Aufgaben, Anweisungen oder erwünschte Verhaltensweisen anzupassen.
Datenaufbereitung
-Übersicht
Nova 2.0-SFT-Daten verwenden dasselbe Converse-API-Format wie Nova 1.0, mit zusätzlichen optionalen Inhaltsfeldern für Argumentation. Vollständige Formatspezifikationen finden Sie unter:
-
Inhalt der Argumentation: ReasoningContentBlock
Unterstützte Features
-
Eingabearten — Text, Bild oder Video in Inhaltsblöcken für Benutzer
-
Assistenteninhalte — Reine Textantworten und Argumentationsinhalte
-
Zusammensetzung des Datensatzes — Muss homogen sein. Wählen Sie eine der folgenden Optionen:
-
Reine Text-Wendungen
-
Text- und Bilddrehungen
-
Text und Videodrehungen (unterstützt das Verständnis von Dokumenten)
-
Wichtig
Sie können Bilder und Videos nicht innerhalb desselben Datensatzes oder in verschiedenen Zügen mischen.
Aktuelle Einschränkungen
-
Inhalte zum multimodalen Denken — Obwohl das Converse-Format bildbasierte Argumentationsinhalte unterstützt, unterstützt Nova 2.0 SFT nur textbasierte Argumentationsinhalte im Feld ReasoningText.
-
Validierungssätze — Sie können mit Nova 2.0 keinen Validierungsdatensatz für SFT bereitstellen. Wenn Sie einen Validierungsdatensatz angeben, wird dieser während des Trainings ignoriert. Diese Einschränkung gilt sowohl für UI-basierte als auch für programmatische Jobeinreichungen.
Unterstützte Medienformate
-
Bilder — PNG, JPEG, GIF
-
Videos — MOV, MKV, MP4
Beispiele für Datenformate
Aufrufen von Tools
Nova 2.0 SFT unterstützt Trainingsmodelle anhand von Werkzeugaufrufmustern, sodass Ihr Modell lernen kann, wann und wie externe Tools oder Funktionen aufgerufen werden müssen.
Datenformat für den Werkzeugaufruf
Zu den Trainingsdaten für das Aufrufen von Tools gehört ein toolConfig Abschnitt, in dem die verfügbaren Tools definiert sind, sowie Konversationsrunden, in denen die Verwendungsmuster der Tools veranschaulicht werden.
Beispieleingabe
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemCost", "description": "Retrieve the cost of an item from the catalog", "inputSchema": { "json": { "type": "object", "properties": { "item_name": { "type": "string", "description": "The name of the item to retrieve cost for" }, "item_id": { "type": "string", "description": "The ASIN of item to retrieve cost for" } }, "required": [ "item_id" ] } } } }, { "toolSpec": { "name": "getItemAvailability", "description": "Retrieve whether an item is available in a given location", "inputSchema": { "json": { "type": "object", "properties": { "zipcode": { "type": "string", "description": "The zipcode of the location to check in" }, "quantity": { "type": "integer", "description": "The number of items to check availability for" }, "item_id": { "type": "string", "description": "The ASIN of item to check availability for" } }, "required": [ "item_id", "zipcode" ] } } } } ] }, "messages": [ { "role": "user", "content": [ { "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "The user wants to check how many pieces of the item with ASIN id-123 are available in the zipcode 94086" } } }, { "toolUse": { "toolUseId": "getItemAvailability_0", "name": "getItemAvailability", "input": { "zipcode": "94086", "quantity": 20, "item_id": "id-123" } } } ] }, { "role": "user", "content": [ { "toolResult": { "toolUseId": "getItemAvailability_0", "content": [ { "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]" } ] } } ] }, { "role": "assistant", "content": [ { "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?" } ] } ] }
Anforderungen für das Aufrufen von Tools
Beachten Sie bei der Erstellung von Trainingsdaten für Tool-Calls die folgenden Anforderungen:
| Anforderung | Description |
|---|---|
| ToolUse Platzierung | ToolUse darf nur in der Runde des Assistenten erscheinen |
| ToolResult Platzierung | ToolResult darf nur abwechselnd vom Benutzer angezeigt werden |
| ToolResult Format | ToolResult sollte nur Text oder JSON sein. Andere Modalitäten werden für Nova-Modelle nicht unterstützt |
| InputSchema-Format | Das InputSchema in der ToolSpec muss ein gültiges JSON-Schemaobjekt sein |
| toolUseId übereinstimmend | Jeder ToolResult muss auf ein gültiges Element toolUseId eines vorhergehenden Assistenten verweisen ToolUse, wobei jeder Assistent genau einmal pro Konversation toolUseId verwendet wird |
Wichtige Hinweise
-
Stellen Sie sicher, dass Ihre Tooldefinitionen in allen Trainingsbeispielen konsistent sind
-
Das Modell lernt anhand der von Ihnen bereitgestellten Demonstrationen Muster für den Aufruf von Tools
-
Geben Sie verschiedene Beispiele an, wann die einzelnen Tools verwendet werden sollten und wann nicht
Verstehen von Dokumenten
Nova 2.0 SFT unterstützt Schulungen zu dokumentenbasierten Aufgaben, sodass Ihr Modell lernen kann, wie man PDF-Dokumente analysiert und Fragen zu ihnen beantwortet.
Datenformat für das Verständnis von Dokumenten
Zu den Trainingsdaten für das Dokumentenverständnis gehören Dokumentverweise in den Inhaltsblöcken für den Benutzer, wobei das Modell lernt, den Inhalt des Dokuments zu extrahieren und zu analysieren.
Eingabebeispiel
{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the document to answer the question.", "type": "text" } ] } ] }
Einschränkungen des Verständnisses von Dokumenten
| Einschränkung | Details |
|---|---|
| Unterstütztes Format | Nur PDF-Dateien |
| Maximale Dokumentgröße | 10 MB |
| Mischen von Modalitäten | Ein Beispiel kann Dokumente und Text enthalten, aber es ist nicht möglich, Dokumente mit anderen Modalitäten (Bilder, Videos) zu mischen |
Bewährte Methoden für das Verständnis von Dokumenten
-
Stellen Sie sicher, dass die Dokumente klar formatiert sind und der Text extrahierbar ist
-
Stellen Sie verschiedene Beispiele für verschiedene Dokumenttypen und Fragenformate bereit
-
Fügen Sie Argumentationsinhalte hinzu, um dem Modell zu helfen, Muster für die Dokumentenanalyse zu erlernen
Video-Verständnis
Nova 2.0 SFT unterstützt Schulungen zu videobasierten Aufgaben, sodass Ihr Modell lernen kann, wie es Fragen zu Videoinhalten analysiert und beantwortet.
Datenformat für das Verständnis von Videos
Zu den Trainingsdaten für das Verständnis von Videos gehören Videoreferenzen in den Inhaltsblöcken für den Nutzer. Dabei lernt das Modell, anhand von Videoinhalten Informationen und Argumentation zu extrahieren.
Eingabe als Beispiel
{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/videos/customer_service_debugging.mp4", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the video to answer the question.", "type": "text" } ] } ] }
Einschränkungen beim Videoverständnis
| Einschränkung | Details |
|---|---|
| Maximale Videogröße | 50 MB |
| Maximale Videodauer | 15 Minuten |
| Videos pro Probe | Pro Probe ist nur ein Video erlaubt. Mehrere Videos in derselben Stichprobe werden nicht unterstützt |
| Mischen von Modalitäten | Ein Beispiel kann Video und Text enthalten, Video kann jedoch nicht mit anderen Modalitäten (Bildern, Dokumenten) kombiniert werden |
Unterstützte Videoformate
-
MOV
-
MKV
-
MP4
Bewährte Methoden zum Verständnis von Videos
-
Halten Sie die Videos kurz und konzentrieren Sie sich auf den Inhalt, der für Ihre Aufgabe relevant ist
-
Stellen Sie sicher, dass die Videoqualität ausreicht, damit das Modell aussagekräftige Informationen extrahieren kann
-
Stellen Sie klare Fragen, die sich auf bestimmte Aspekte des Videoinhalts beziehen
-
Fügen Sie verschiedene Beispiele hinzu, die verschiedene Videotypen und Fragenformate abdecken
Argumentationsmodus versus Modus ohne Argumentation
Inhalt des Denkens verstehen
Der Inhalt des Arguments (auch genannt chain-of-thought) erfasst die Zwischenschritte des Modells beim Denken, bevor eine endgültige Antwort generiert wird. Verwenden assistant Sie wiederum das reasoningContent Feld, um diese Argumentationsspuren einzufügen.
Wie wird der Verlust berechnet
-
Mit Argumentationsinhalt — Der Trainingsverlust umfasst sowohl Argumentationstoken als auch Token für das Endergebnis
-
Ohne Inhalt zum Argumentieren — Der Trainingsverlust wird nur anhand der endgültigen Ausgangstoken berechnet
Sie können mehrere Runden des Assistenten in Konversationen mit reasoningContent mehreren Runden einbeziehen.
Richtlinien zur Formatierung
-
Verwenden Sie Klartext, um Inhalte zu begründen
-
Vermeiden Sie Markup-Tags wie
<thinking>und,</thinking>sofern dies nicht ausdrücklich für Ihre Aufgabe erforderlich ist -
Stellen Sie sicher, dass der Inhalt der Argumentation klar und relevant für den Problemlösungsprozess ist
Wann sollte der Argumentationsmodus aktiviert werden
Stellen Sie reasoning_enabled: true in Ihrer Trainingskonfiguration ein, wann:
-
Deine Trainingsdaten enthalten Tokens zur Argumentation
-
Sie möchten, dass das Modell Denkansätze generiert, bevor die endgültigen Ergebnisse erstellt werden
-
Sie benötigen eine verbesserte Leistung bei komplexen Argumentationsaufgaben
Das Training von Nova mit reasoning_enabled = true einem Datensatz ohne Argumentation ist zulässig. Dies kann jedoch dazu führen, dass das Modell seine Argumentationsfähigkeit verliert, da Nova in erster Linie lernt, die in den Daten enthaltenen Antworten zu generieren, ohne Argumentation anzuwenden. Wenn Sie Nova anhand eines Datensatzes ohne Argumentation trainieren möchten, aber dennoch erwarten, dass bei Inferenz Argumentation stattfindet, können Sie das Argumentieren während des Trainings () reasoning_enabled = false deaktivieren, es aber für Inferenz aktivieren. Dieser Ansatz ermöglicht zwar die Verwendung von Argumenten zum Zeitpunkt der Inferenz, garantiert jedoch keine bessere Leistung im Vergleich zu Schlussfolgerungen ohne Argumentation. Generell sollten Sie Argumentation sowohl für Training als auch für Folgerungen aktivieren, wenn Sie Datensätze mit Argumentation verwenden, und deaktivieren Sie sie für beide, wenn Sie Datensätze ohne Argumentation verwenden.
Stellen Sie ein, wann: reasoning_enabled: false
-
In deinen Trainingsdaten gibt es keine Argumentationsnachweise
-
Sie trainieren an einfachen Aufgaben, für die keine expliziten Argumentationsschritte erforderlich sind
-
Sie möchten die Geschwindigkeit optimieren und die Token-Nutzung reduzieren
Generierung von Argumentationsdaten
Wenn es Ihrem Datensatz an Argumentationsspuren mangelt, können Sie diese mit einem Modell, das Argumentation ermöglicht, wie Nova Premier, erstellen. Stellen Sie dem Modell Ihre Input-Output-Paare zur Verfügung und erfassen Sie dessen Argumentationsprozess, um einen mit Argumenten erweiterten Datensatz zu erstellen.
Verwendung von Argumentationstoken für das Training
Beim Training mit aktiviertem Argumentationsmodus lernt das Modell, internes Denken von der endgültigen Antwort zu trennen. Der Trainingsprozess:
-
Organisiert Daten als Tripel: Eingabe, Argumentation und Antwort
-
Optimiert mithilfe von standardmäßigen Verlusten bei der Vorhersage des nächsten Tokens sowohl bei Argumentations- als auch bei Antwort-Tokens
-
Ermutigt das Modell, intern zu argumentieren, bevor Antworten generiert werden
Inhalt für effektives Denken
Hochwertige Inhalte zum Argumentieren sollten Folgendes beinhalten:
-
Zwischengedanken und Analysen
-
Logische Ableitungen und Inferenzschritte
-
Step-by-step Ansätze zur Problemlösung
-
Explizite Zusammenhänge zwischen Schritten und Schlussfolgerungen
Dies hilft dem Modell, die Fähigkeit zu entwickeln, „erst nachzudenken, bevor man antwortet“.
Richtlinien für die Vorbereitung von Datensätzen
Größe und Qualität
-
Empfohlene Größe — 2.000-10.000 Proben
-
Mindestanzahl der Proben — 200
-
Priorität — Qualität vor Quantität. Stellen Sie sicher, dass die Beispiele korrekt und gut kommentiert sind
-
Abstimmung der Anwendungen — Der Datensatz sollte Ihre Anwendungsfälle in der Produktion genau widerspiegeln
Diversität
Nennen Sie verschiedene Beispiele, die:
-
Decken Sie das gesamte Spektrum der erwarteten Eingaben ab
-
Stellen Sie verschiedene Schwierigkeitsgrade dar
-
Schließe Sonderfälle und Varianten mit ein
-
Vermeiden Sie eine Überanpassung an schmale Muster
Formatierung der Ausgabe
Geben Sie das gewünschte Ausgabeformat in den Antworten des Assistenten eindeutig an:
-
JSON-Strukturen
-
Tabellen
-
CSV-Format
-
Benutzerdefinierte Formate, die für Ihre Anwendung spezifisch sind
Multi-turn-Konversationen
Denken Sie bei Multiturn-Datensätzen an Folgendes:
-
Der Verlust wird nur für die Züge eines Assistenten berechnet, nicht für die Züge eines Benutzers
-
Jede Antwort des Assistenten sollte korrekt formatiert sein
-
Sorgen Sie für Konsistenz in allen Gesprächsrunden
Checkliste für Qualität
-
Ausreichende Datensatzgröße (2K-10.000 Stichproben)
-
Vielfältige Beispiele für alle Anwendungsfälle
-
Klare, konsistente Ausgabeformatierung
-
Präzise Beschriftungen und Anmerkungen
-
Repräsentativ für Produktionsszenarien
-
Frei von Widersprüchen oder Unklarheiten
Hochladen Ihrer Daten
Datensätze sollten in einen Bucket hochgeladen werden, auf den Trainingsjobs zugegriffen werden kann. SageMaker Informationen zum Einstellen der richtigen Berechtigungen finden Sie unter Voraussetzungen.
Einen Ausbildungsjob beginnen
Auswahl von Hyperparametern und Aktualisierung des Rezepts
Das Setup für Nova 2.0 ist weitgehend das gleiche wie für Nova 1.0. Sobald die Eingabedaten auf S3 hochgeladen wurden, verwenden Sie das Rezept aus SageMaker Hyperpod Recipes
Bitte verwenden Sie v2.254.1 von SageMaker pySDK, um die strikte Kompatibilität mit dem Nova-Training zu gewährleisten. Ein Upgrade des SDK auf Version 3.0 wird zu grundlegenden Änderungen führen. Support für Version 3 von SageMaker PySDK ist in Kürze verfügbar.
Beispieleingabe
!pip install sagemaker==2.254.1
run: name: {peft_recipe_job_name} model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: {peft_model_name_or_path} data_s3_path: {train_dataset_s3_path} # SageMaker Hyperpod (SMHP) only and not compatible with SageMaker Training jobs. Note replace my-bucket-name with your real bucket name for SMHP job replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: "" # Output artifact path (Hyperpod job-specific; not compatible with standard SageMaker Training jobs). Note replace my-bucket-name with your real bucket name for SMHP job training_config: max_steps: 10 # Maximum training steps. Minimal is 4. save_steps: 10 # How many training steps the checkpoint will be saved. Should be less than or equal to max_steps save_top_k: 1 # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1. max_length: 32768 # Sequence length (options: 8192, 16384, 32768 [default], 65536) global_batch_size: 32 # Global batch size (options: 32, 64, 128) reasoning_enabled: true # If data has reasoningContent, set to true; otherwise False lr_scheduler: warmup_steps: 15 # Learning rate warmup steps. Recommend 15% of max_steps min_lr: 1e-6 # Minimum learning rate, must be between 0.0 and 1.0 optim_config: # Optimizer settings lr: 1e-5 # Learning rate, must be between 0.0 and 1.0 weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Exponential decay rate for first-moment estimates, must be between 0.0 and 1.0 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates, must be between 0.0 and 1.0 peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "lora" # Enable LoRA for PEFT lora_tuning: alpha: 64 # Scaling factor for LoRA weights ( options: 32, 64, 96, 128, 160, 192), lora_plus_lr_ratio: 64.0
Das Rezept enthält auch weitgehend dieselben Hyperparameter wie Nova 1.0. Die bemerkenswerten Hyperparameter sind:
-
max_steps— Die Anzahl der Schritte, für die Sie den Job ausführen möchten. Im Allgemeinen gilt für eine Epoche (ein Durchlauf durch Ihren gesamten Datensatz) die Anzahl der Schritte = Anzahl der Datenstichproben/globale Batchgröße. Je größer die Anzahl der Schritte und je kleiner Ihre globale Batchgröße ist, desto länger dauert die Ausführung des Jobs. -
reasoning_enabled— Steuert den Argumentationsmodus für Ihren Datensatz. Optionen:-
true: Aktiviert den Argumentationsmodus (entspricht hohem Argumentationsvermögen) -
false: Deaktiviert den Argumentationsmodus
Hinweis: Bei SFT gibt es keine detaillierte Kontrolle über den Grad des Argumentationsaufwands. Die Einstellung
reasoning_enabled: trueermöglicht die volle Argumentationsfähigkeit. -
-
peft.peft_scheme— Die Einstellung „Lora“ ermöglicht eine PEFT-basierte Feinabstimmung. Wenn Sie es auf Null setzen (keine Anführungszeichen), wird die Full-Rank-Feinabstimmung aktiviert.
Starte den Trainingsjob
from sagemaker.pytorch import PyTorch # define OutputDataConfig path if default_prefix: output_path = f"s3://{bucket_name}/{default_prefix}/{sm_training_job_name}" else: output_path = f"s3://{bucket_name}/{sm_training_job_name}" recipe_overrides = { "run": { "replicas": instance_count, # Required "output_s3_path": output_path }, } estimator = PyTorch( output_path=output_path, base_job_name=sm_training_job_name, role=role, disable_profiler=True, debugger_hook_config=False, instance_count=instance_count, instance_type=instance_type, training_recipe=training_recipe, recipe_overrides=recipe_overrides, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, tags=[ {'Key': 'model_name_or_path', 'Value': model_name_or_path}, ] ) print(f"\nsm_training_job_name:\n{sm_training_job_name}\n") print(f"output_path:\n{output_path}")
from sagemaker.inputs import TrainingInput train_input = TrainingInput( s3_data=train_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) estimator.fit(inputs={"validation": val_input}, wait=False)
Anmerkung
Die Weitergabe eines Validierungsdatensatzes wird für die überwachte Feinabstimmung von Nova 2.0 nicht unterstützt.
Um den Job zu beginnen:
-
Aktualisieren Sie das Rezept mit Ihren Datensatzpfaden und Hyperparametern
-
Führen Sie die angegebenen Zellen im Notizbuch aus, um den Trainingsjob abzusenden
Das Notizbuch verarbeitet die Auftragsübermittlung und ermöglicht die Statusverfolgung.