View a markdown version of this page

SFT auf Nova 2.0 - Amazon Nova

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.

SFT auf Nova 2.0

Amazon Nova Lite 2.0 bietet erweiterte Funktionen für die überwachte Feinabstimmung, darunter einen erweiterten Argumentationsmodus, ein verbessertes multimodales Verständnis und eine erweiterte Kontexthandhabung. Mit SFT on Nova 2.0 können Sie diese leistungsstarken Funktionen an Ihre spezifischen Anwendungsfälle anpassen und gleichzeitig die überragende Leistung des Modells bei komplexen Aufgaben beibehalten.

Zu den wichtigsten Funktionen von SFT on Nova 2.0 gehören:

  • Unterstützung des Argumentationsmodus: Trainieren Sie Modelle so, dass sie vor den endgültigen Antworten explizite Argumentationsspuren erzeugen, um die Analysemöglichkeiten zu verbessern.

  • Fortgeschrittenes multimodales Training: Präzise Feinabstimmung in Sachen Dokumentenverständnis (PDF), Videoverständnis und bildgestützte Aufgaben.

  • Funktionen zum Aufrufen von Tools: Trainieren Sie Modelle, um externe Tools effektiv zu nutzen und Funktionen für komplexe Workflows aufzurufen.

  • Erweiterte Kontextunterstützung: Nutzen Sie längere Kontextfenster mit besserer Stabilität und Genauigkeit für dokumentenintensive Anwendungen.

Anmerkung

Weitere Informationen darüber, welche Container-Images oder Beispielrezepte verwendet werden sollten, finden Sie unter Amazon Nova-Rezepte.

Unten finden Sie ein Beispielrezept für SFT. Sie finden dieses und andere Rezepte im Rezepte-Repository.

run: name: my-full-rank-sft-run model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://my-bucket-name/train.jsonl # only and not compatible with SageMaker Training Jobs replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: s3://my-bucket-name/outputs/ # Output artifact path (HyperPod job-specific; not compatible with standard SageMaker Training Jobs) mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-full-rank-sft-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-full-rank-sft-run" # Optional for MLFlow. Note: leave this field non-empty training_config: max_steps: 100 # Maximum training steps. Minimal is 4. save_steps: ${oc.select:training_config.max_steps} # How many training steps the checkpoint will be saved save_top_k: 5 # Keep top K best checkpoints. Note supported only for 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 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "null" # Disable LoRA for PEFT

Auswahl des Argumentationsmodus (nur Nova 2.0)

Amazon Nova 2.0 unterstützt den Argumentationsmodus für erweiterte Analysefunktionen:

  • Argumentationsmodus (aktiviert):

    • reasoning_enabled: trueIn der Trainingskonfiguration festgelegt

    • Modellieren Sie Übungen, um Argumentationsspuren vor den endgültigen Antworten zu generieren

    • Verbessert die Leistung bei komplexen Argumentationsaufgaben

  • Modus ohne Argumentation (deaktiviert):

    • Den Parameter setzen reasoning_enabled: false oder weglassen (Standard)

    • Standard-SFT ohne explizite Begründung

    • Geeignet für Aufgaben, bei denen Argumentation nicht von Vorteil ist step-by-step

Anmerkung
  • Wenn Argumentation aktiviert ist, ist ein hoher Argumentationsaufwand erforderlich. Für SFT gibt es keine Option mit geringem Argumentationsaufwand.

  • Inhalte zum multimodalen Denken werden für SFT nicht unterstützt. Der Argumentationsmodus gilt für reine Texteingaben.

Das Training von Amazon Nova mit einem Datensatz ohne Argumentation reasoning_enabled: true ist zulässig. Dies kann jedoch dazu führen, dass das Modell seine Argumentationsfähigkeit verliert, da Amazon Nova in erster Linie lernt, die in den Daten enthaltenen Antworten zu generieren, ohne Argumentation anzuwenden.

Wenn Sie Amazon Nova mit einem Datensatz ohne Argumentation trainieren, aber dennoch Argumentation während der Inferenz verwenden möchten:

  1. Deaktivieren Sie die Argumentation während des Trainings () reasoning_enabled: false

  2. Aktiviere die Argumentation später während der Inferenz

Dieser Ansatz ermöglicht zwar eine Argumentation zum Zeitpunkt der Inferenz, garantiert jedoch keine bessere Leistung im Vergleich zu Schlussfolgerungen ohne Argumentation.

Bewährte Methode: Aktivieren Sie Argumentation sowohl für Training als auch für Folgerungen, wenn Sie Datensätze mit Argumentation verwenden, und deaktivieren Sie sie für beide, wenn Sie Datensätze verwenden, die keine Argumentation verwenden.

Anmerkung

Weitere Informationen darüber, welche Container-Images oder Beispielrezepte verwendet werden sollten, finden Sie unter Amazon Nova-Rezepte.

Datenformat für das Aufrufen des Tools

SFT unterstützt Trainingsmodelle für die Verwendung von Tools (Funktionsaufruf). Im Folgenden finden Sie ein Beispiel für ein Eingabeformat für den Aufruf von Tools:

Beispiel für eine Eingabe:

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

Wichtige Überlegungen zum Aufrufen von Tool-Daten:

  • ToolUse darf nur in der Runde des Assistenten erscheinen

  • ToolResult darf nur in der Runde eines Benutzers erscheinen

  • ToolResult sollte nur Text oder JSON sein; andere Modalitäten werden derzeit für Amazon Nova-Modelle nicht unterstützt

  • Das InputSchema in der ToolSpec muss ein gültiges JSON-Schema-Objekt sein

  • Jeder Assistent ToolResult muss auf einen gültigen Wert toolUseId aus einem vorherigen Assistenten verweisen ToolUse, wobei jeder Assistent genau einmal pro toolUseId Konversation verwendet wird

Anmerkung

Weitere Informationen darüber, welche Container-Images oder Beispielrezepte verwendet werden sollten, finden Sie unter Amazon Nova-Rezepte.

Dokument, das das Datenformat versteht

SFT unterstützt Trainingsmodelle für Aufgaben zum Verständnis von Dokumenten. Im Folgenden finden Sie ein Beispiel für ein Eingabeformat:

Beispiel für eine Eingabe

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

Wichtige Überlegungen zum Verständnis von Dokumenten:

  • Es werden nur PDF-Dateien unterstützt

  • Die maximale Dokumentgröße beträgt 10 MB

  • Ein Beispiel kann Dokumente und Text enthalten, darf jedoch keine Kombination von Dokumenten mit anderen Modalitäten (wie Bildern oder Videos) enthalten

Anmerkung

Weitere Informationen darüber, welche Container-Images oder Beispielrezepte verwendet werden sollten, finden Sie unter Amazon Nova-Rezepte.

Video Understanding für SFT

SFT unterstützt die Feinabstimmung von Modellen für Videoverständnisaufgaben. Im Folgenden finden Sie ein Beispiel für ein Eingabeformat:

Beispiel für eine Eingabe

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

Wichtige Überlegungen zum Verständnis von Videos:

  • Videos können maximal 50 MB groß sein

  • Videos können bis zu 15 Minuten lang sein

  • Pro Beispiel ist nur ein Video zulässig. Mehrere Videos in derselben Stichprobe werden nicht unterstützt

  • Ein Beispiel kann Video und Text enthalten, aber kein Video mit anderen Modalitäten (wie Bildern oder Dokumenten) mischen

Anmerkung

Weitere Informationen darüber, welche Container-Images oder Beispielrezepte verwendet werden sollten, finden Sie unter Amazon Nova-Rezepte.

Anweisungen zum Hochladen von Daten

Laden Sie Trainings- und Validierungsdatensätze in einen S3-Bucket hoch. Geben Sie diese Speicherorte im run Rezeptblock an:

## Run config run: ... data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl"

Hinweis: Ersetzen Sie<bucket-name>,<training-directory>, <validation-directory><training-file>, und <validation-file> durch tatsächliche S3-Pfade.

Hinweis: Validierungsdatensätze werden derzeit nicht für SFT mit Amazon Nova 2.0 unterstützt. Wenn ein Validierungsdatensatz bereitgestellt wird, wird dieser ignoriert.

Einen Job zur Feinabstimmung erstellen

Definieren Sie das Basismodell mithilfe der model_name_or_path Felder model_type und im run Block:

## Run config run: ... model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod ...

SFT-Tuning-Parameter

Zu den Parametern, die für die Optimierung mit SFT verfügbar sind, gehören:

Ausführen der Konfiguration

  • Name: Ein aussagekräftiger Name für Ihren Ausbildungsjob. Auf diese Weise können Sie Ihren Job in der AWS Management Console leichter identifizieren.

  • model_type: Die zu verwendende Amazon Nova-Modellvariante. Die verfügbaren Optionen sind. amazon.nova-2-lite-v1:0:256k

  • model_name_or_path: Der Pfad zum Basismodell, das Sie für Ihr Training verwenden möchten. Die verfügbaren Optionen sindnova-lite-2/prod, oder der S3-Pfad für den Checkpoint nach dem Training (). s3://customer-escrow-bucket-unique_id/training_run_name

  • Replikate: Die Anzahl der Recheninstanzen, die für verteilte Schulungen verwendet werden sollen. Die verfügbaren Werte variieren abhängig vom ausgewählten Modell. Amazon Nova Lite 2.0 unterstützt 4, 8, 16 oder 32 Replikate.

  • data_s3_path: Der S3-Speicherort des Trainingsdatensatzes, bei dem es sich um eine JSONL-Datei handelt. Diese Datei muss sich in demselben Konto und derselben Region wie AWS der Cluster befinden. Alle angegebenen S3-Standorte müssen sich im selben Konto und in derselben Region befinden.

  • validation_data_s3_path: (Optional) Der S3-Speicherort des Validierungsdatensatzes, bei dem es sich um eine JSONL-Datei handelt. Diese Datei muss sich im selben Konto und derselben Region wie der Cluster befinden. Alle angegebenen S3-Standorte müssen sich im selben Konto und in derselben Region befinden.

  • output_s3_path: Der S3-Speicherort, an dem das Manifest und die Protokolle gespeichert werden. TensorBoard Alle angegebenen S3-Standorte müssen sich im selben Konto und in derselben AWS Region befinden. AWS

  • mlflow_tracking_uri: Der ARN der App, der für die Protokollierung verwendet werden soll. MLFlow MLFlow

  • MLFlow mlflow_experiment_name: Name des Experiments.

  • mlflow_run_name: Name der Ausführung. MLFlow

Konfiguration des Trainings

  • max_steps: Die Anzahl der auszuführenden Trainingsschritte. In jedem Schritt wird das Modell anhand der global_batch_size Anzahl der Elemente trainiert.

  • save_steps: Die Häufigkeit (in Schritten), mit der Modell-Checkpoints während des Trainings gespeichert werden.

  • save_top_k: Die maximale Anzahl der besten Checkpoints, die auf Grundlage von Validierungsmetriken beibehalten werden sollen.

  • max_length: Die maximale Sequenzlänge in Token. Dies bestimmt die Größe des Kontextfensters für das Training. Der maximal unterstützte Wert beträgt 32768 Token für SFT.

    Längere Sequenzen verbessern die Trainingseffizienz auf Kosten eines erhöhten Speicherbedarfs. Wir empfehlen, dass Sie den Parameter max_length an Ihre Datenverteilung anpassen.

  • global_batch_size: Die Gesamtzahl der Trainingsproben, die zusammen in einem Vorwärts- oder Rückwärtsgang für alle Geräte und Mitarbeiter verarbeitet wurden.

    Dieser Wert multipliziert die Batchgröße pro Gerät und die Anzahl der Geräte. Er wirkt sich auf die Stabilität des Trainings und den Durchsatz aus. Wir empfehlen Ihnen, mit einer Batchgröße zu beginnen, die problemlos in Ihren Arbeitsspeicher passt, und anschließend hochzuskalieren. Bei Domain-spezifischen Daten können größere Batches zu einer übermäßigen Gradientenglättung führen.

  • reasoning_enabled: Boolesches Kennzeichen zur Aktivierung von Argumentationsfähigkeiten während des Trainings.

Ratenplaner für Lernprogramme

  • warmup_steps: Die Anzahl der Schritte zur schrittweisen Erhöhung der Lernrate. Dies verbessert die Trainingsstabilität.

  • min_lr: Die minimale Lernrate am Ende des Zerfalls. Gültige Werte liegen zwischen 0 und 1 (beide inklusive), müssen jedoch unter der Lernrate liegen.

Konfiguration des Optimierers

  • lr: Die Lernrate, die die Schrittgröße während der Optimierung steuert. Für eine gute Leistung empfehlen wir Werte zwischen 1e-6 und 1e-4. Zulässig sind alle Werte zwischen 0 und 1, beide inklusive.

  • weight_decay: Die Stärke der L2-Regularisierung. Höhere Werte (zwischen 0,01 und 0,1) erhöhen die Regularisierung.

  • adam_beta1: Die exponentielle Zerfallsrate für Schätzungen des ersten Moments im Adam-Optimizer. Die Standardeinstellung ist 0,9.

  • adam_beta2: Die exponentielle Zerfallsrate für Schätzungen des zweiten Moments im Adam-Optimizer. Die Standardeinstellung ist 0,95.

PEFT-Konfiguration

  • peft_scheme: Das zu verwendende parametereffiziente Feinabstimmungsschema. Die Optionen stehen für die Feinabstimmung mit vollem Rang oder 'null' für die Feinabstimmung auf LoRa-Basis zur Verfügung. lora

LoRa-Tuning (wenn peft_scheme 'lora' ist)

  • alpha: Der LoRa-Skalierungsparameter. Steuert das Ausmaß der Low-Rank-Anpassung. Typische Werte liegen im Bereich von 8 bis 128.

  • lora_plus_lr_ratio: Das Lernratenverhältnis für die LoRa+-Optimierung. Dieser Multiplikator passt die Lernrate speziell für LoRa-Parameter an.

Anleitung zu Hyperparametern

Verwenden Sie je nach Trainingsansatz die folgenden empfohlenen Hyperparameter:

Training mit vollem Rang

  • Epochen: 1

  • Lernrate (lr): 1e-5

  • Minimale Lernrate (min_lr): 1e-6

LoRa (Low-Rank-Anpassung)

  • Epochen: 2

  • Lernrate (lr): 5e-5

  • Minimale Lernrate (min_lr): 1e-6

Hinweis: Passen Sie diese Werte je nach Datensatzgröße und Validierungsleistung an. Überwachen Sie die Trainingsmetriken, um eine Überanpassung zu vermeiden.