View a markdown version of this page

CPT 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.

CPT auf Nova 2.0

Amazon Nova Lite 2.0 ist ein Argumentationsmodell, das auf größeren und vielfältigeren Datensätzen als Nova Lite 1.0 trainiert wurde. Obwohl es sich um ein größeres Modell handelt, bietet Nova Lite 2.0 schnellere Schlussfolgerungen als Nova Lite 1.0 und bietet gleichzeitig erweiterte Argumentationsfähigkeiten, längere Kontextlängen und eine verbesserte Leistung bei Mehrsprachigkeit.

CPT auf Nova 2.0 ermöglicht es Ihnen, diese erweiterten Funktionen mit Ihren domänenspezifischen Daten zu erweitern, sodass das Modell fundierte Fachkenntnisse in Spezialgebieten entwickeln und gleichzeitig seine überlegenen Argumentations- und Analysefähigkeiten beibehalten kann.

Im Folgenden finden Sie ein Beispielrezept für CPT. Sie finden dieses und andere Rezepte im Rezepte-Repository.

# Note: # This recipe can run on p5.48xlarge # Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-2-lite-v1:0:256k" # Model variant specification, do not change model_name_or_path: "nova-lite-2/prod" # Base model path, do not change replicas: 8 # Number of compute instances for training, allowed values are 4, 8, 16, 32 data_s3_path: "" # Customer data paths validation_data_s3_path: "" # Customer validation data paths output_s3_path: "" # Output artifact path, job-specific configuration - not compatible with standard SageMaker Training Jobs mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-cpt-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-cpt-run" # Optional for MLFlow. Note: leave this field non-empty ## Training specific configs training_config: task_type: cpt max_length: 8192 # Maximum context window size (tokens) global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_steps: 10 # The number of training steps to run total val_check_interval: 10 # The number of steps between running validation. Integer count or float percentage limit_val_batches: 2 # Batches of the validation set to use each trigger model: hidden_dropout: 0.0 # Dropout for hidden states, must be between 0.0 and 1.0 attention_dropout: 0.0 # Dropout for attention weights, must be between 0.0 and 1.0 optim: optimizer: adam lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Beta1 for Adam optimizer adam_beta2: 0.95 # Beta2 for Adam optimizer sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate, must be lower than lr

Datenaufbereitung für CPT auf 2.0

Datenformatanforderungen

Bei den Trainings- und Validierungsdatensätzen muss es sich um JSONL-Dateien im unten angegebenen Format handeln, wobei jede Zeile ein JSON-Objekt enthält, das eine Konversation mit den erforderlichen Feldern und der erforderlichen Struktur darstellt. Ein Beispiel:

{"text": "AWS stands for Amazon Web Services"} {"text": "Amazon SageMaker is a fully managed machine learning service"} {"text": "Amazon Bedrock is a fully managed service for foundation models"}

Texteinträge sollten natürlich fließende, qualitativ hochwertige Inhalte enthalten, die die Zieldomäne repräsentieren.

Testen Sie, ob die Daten in das Arrow-Format konvertiert werden können. Verwenden Sie das folgende Python-Skript, um Ihnen dabei zu helfen. Stellen Sie sicher, dass mindestens die datasets==2.18.0 Version verwendet wird:

from datasets import load_dataset, load_from_disk from pathlib import Path input_path = Path("<Your jsonl file>") output_path = Path("<Your output directory>") dataset = load_dataset("json", data_files=str(input_path), split="train") dataset.save_to_disk(str(output_path), max_shard_size="1GB") try: test_dataset = datasets.load_from_disk(output_dir) print(f"Dataset loaded successfully ✅! Contains {len(test_dataset)} samples") except Exception as e: print(e)

Es sollte dieselbe Anzahl von Zeilen drucken wie in der JSONL-Datei.

Wenn Sie Datamixing verwenden, führen Sie den ersten Job mit aus. max_steps=2 Dies hilft dabei, Optimierungen im Cluster für den Datenzugriff vorzunehmen und zu überprüfen, ob alle Datamixe verfügbar sind.

Wie bereitet man Daten für CPT vor

Trainingsdaten sind der wichtigste entscheidende Faktor für den Erfolg eines kontinuierlichen Vortrainings. CPT-Daten werden zwar oft als „unbeschriftet“ beschrieben, die Realität ist jedoch weitaus nuancierter. Wie Daten strukturiert, formatiert und präsentiert werden, bestimmt, ob das Modell die für den Geschäftsanwendungsfall erforderlichen Kenntnisse und Fähigkeiten vermittelt.

Vorbereitung strukturierter Geschäftsdatensätze für CPT

Dies ist eine häufige Herausforderung für Unternehmen und Organisationen, die auf ihren Bereich spezialisierte Basismodelle entwickeln. Die meisten Unternehmen verfügen über umfangreiche Repositorien strukturierter Daten: Produktkataloge, Benutzerprofile, Transaktionsprotokolle, Formulareinreichungen, API-Aufrufe und Betriebsmetadaten. Auf den ersten Blick sieht dieser Text ganz anders aus als der unstrukturierte Webtext, der normalerweise in Standardvorschulungen verwendet wird.

Um effektiv aus strukturierten Geschäftsdaten zu lernen, sollten Sie sorgfältig über nachgelagerte Aufgaben nachdenken und die Datendarstellung so gestalten, dass das Modell die richtigen prädiktiven Beziehungen lernt.

Um das volle Potenzial kontinuierlicher Vorschulungen auszuschöpfen, sollten Sie Folgendes in Betracht ziehen:

  • Welche Aufgaben sollte das Modell zur Zeit der Inferenz erfüllen

  • Welche Informationen sind in den Rohdaten enthalten

  • Wie strukturiert man diese Daten, damit das Modell lernt, die Informationen korrekt zu extrahieren und zu bearbeiten

Strukturierte Daten einfach in das Training zu übertragen, bringt dem Modell nicht bei, darüber nachzudenken. Gestalten Sie die Datendarstellung aktiv so, dass das Modell daraus lernt.

In den folgenden Abschnitten finden Sie eine Literaturübersicht, die die Bedeutung der Datenerweiterung aufzeigt, und es werden Beispiele für Strategien zur Erweiterung strukturierter Geschäftsdaten vorgestellt, die nützliche Anregungen zur Behandlung und Organisation von Unternehmensdatensätzen für CPT geben.

Strukturierte Daten für CPT in der Literatur

CPT kann zwar Domänenfakten in das Modell packen, schafft es jedoch häufig nicht, diese Fakten abrufbar und manipulierbar zu machen, wenn sich Eingaben oder Aufgaben verschieben. Kontrollierte Experimente zeigen, dass sich Modelle ohne vielfältige Erweiterung während des Vortrainings Fakten auf spröde Weise merken, die auch nach einer späteren Anpassung der Anweisungen schwer zu extrahieren sind, und sie empfehlen, instruktionsähnliche Signale zu Beginn des Trainings zu injizieren. Bei halbstrukturierten Daten reduzieren randomisierte Serialisierung und andere Erweiterungen die Überanpassung von Schemas. Aus diesem Grund sollte CPT mit Aufgaben im Befehlsstil verschachtelt werden, anstatt zuerst ausgeführt und dann IFT. Untersuchungen, die sich auf das Finanzwesen konzentrieren, haben außerdem ergeben, dass das gemeinsame Mischen von CPT- und Befehlsdaten während der Batchzeit die Generalisierung verbessert und das Vergessen im Vergleich zur sequentiellen Rezeptur reduziert. Der technische Bericht von Qwen folgt demselben Muster, indem hochwertige Unterrichtsdaten in die Vorschulung selbst integriert werden, wodurch das Lernen im Kontext gefördert wird und die Einhaltung der Anweisungen erhalten bleibt, während gleichzeitig neues Fachwissen erworben wird.

Die Erweiterung der Daten für halbstrukturierte Korpora ist ein wichtiger Hebel. CPT, das synthetische Graphen berücksichtigt, erweitert kleine Domänensätze zu Entitätsverknüpften Korpora, die explizit Beziehungen und Verbindungen vermitteln, wobei der Abruf zum Zeitpunkt der Inferenz erfolgt. Gemeinsames CPT in Kombination mit Instruktionsmischung übertrifft sequentielle Pipelines im Finanzwesen und die Bilanzierung allgemeiner Daten verringert den Abbau allgemeiner Fähigkeiten. CPT in sehr großem Maßstab kann auch weiterhin breit gefächerte Fähigkeiten beibehalten und sogar Kompromisse durch die Zusammenführung von Modellen ermöglichen, weist aber dennoch darauf hin, dass die Anpassung der Lehrpläne ein wesentlicher nächster Schritt ist, wodurch der Wert der Einführung von Unterrichtssignalen während der CPT verstärkt wird.

Schaffung von Diversität durch Randomisierung und Mischen

Eine allgemeine Strategie, die hilft, anhand strukturierter und halbstrukturierter Datensätze effektiv Modelle zu vermitteln, besteht darin, die Reihenfolge der Felder in den Datensätzen zu mischen und einige Schlüssel sogar nach dem Zufallsprinzip wegzulassen.

Das Mischen der Felder zwingt das Modell dazu, zu lesen, was jeder Wert bedeutet, anstatt zu wissen, wo er erscheint, und die Beziehungen zwischen allen Feldern zu lernen. Wenn beispielsweise bei einem Videospiel, das im Amazon Store veröffentlicht wird, „Titel“, „Plattform“, „Preis“, „Zustand“ und „Ausgabe“ in unterschiedlichen Permutationen erscheinen, kann sich das Modell nicht auf „der dritte Slot ist Plattform“ verlassen. Es muss Labels an Werte binden und die bilateralen Beziehungen zwischen den Attributen lernen: Titel ⇄ Plattform, Plattform ⇄ Preis, Zustand ⇄ Preis. So kann es beispielsweise anhand eines Spielnamens und eines beobachteten Preises auf eine wahrscheinliche Plattform schließen oder eine plausible Preisspanne für einen Titel und eine Plattform abschätzen.

Das zufällige Ablegen von Schlüsseln während der Serialisierung wirkt wie ein Feature-Dropout: Es verhindert die Koadaption in einem Feld und zwingt das Modell, fehlende Informationen aus den verbleibenden Beweisen wiederherzustellen. Fehlt „Platform“, muss das Modell es aus der Titelzeichenfolge oder dem Kompatibilitätstext übernehmen. Wenn „Price“ ausgeblendet ist, muss es eine Triangulierung nach Plattform, Edition und Zustand vornehmen. Dies sorgt für Symmetrie (A→B und B→A), Stabilität gegenüber unübersichtlichen Auflistungen in der realen Welt und Schemainvarianz, wenn Felder fehlen, umbenannt oder neu angeordnet werden.

Ein Beispiel im Einkaufsstil macht es konkret. Serialisieren Sie denselben Artikel auf mehrere Arten — „Titel: 'Elden Ring' | Plattform: PlayStation 5 | Zustand: Gebraucht—Wie neu | Preis: 34,99$“ und eine Permutation wie „Preis: 34,99$ | Titel: 'Elden Ring' | Zustand: Gebraucht—wie neu | Plattform: 5“ — und bei einigen Durchgängen lassen Sie „Platform“ weg, während „Kompatibel mit“ in der Beschreibung belassen wird. PlayStation PS5 Trainiere ergänzende Ziele wie die Vorhersage der Plattform anhand von {title, price} und die Vorhersage eines Preisbereichs anhand von {title, platform}. Da die Reihenfolge und sogar das Vorhandensein von Schlüsseln variieren, besteht die einzig stabile Strategie darin, die wahren Beziehungen zwischen Attributen zu lernen, anstatt sich eine Vorlage zu merken.

Die Art und Weise, wie Daten präsentiert werden, ist wichtig

LLMs Lernen Sie, indem Sie anhand dessen, was sie bereits gesehen haben, das nächste Token vorhersagen. Die Reihenfolge der Felder und Ereignisse, die während des Trainings angezeigt werden, entscheidet also darüber, was das Modell lernen kann. Wenn das Trainingsformat mit der tatsächlichen Aufgabe übereinstimmt, wird der Verlust genau auf die Entscheidungstoken zurückgeführt. Werden Felder ohne Struktur zusammengewürfelt, lernt das Modell Abkürzungen oder merkt sich Beliebtheit und scheitert dann, wenn es aufgefordert wird, zwischen Optionen zu wählen.

Zeigen Sie zuerst die Situation, dann die Optionen und dann die Entscheidung. Wenn das Modell auch Informationen zu Ergebnissen oder Erklärungen erhalten soll, fügen Sie diese nach der Entscheidung ein.

Proben für CPT verpacken

Was ist Verpacken?

Es bedeutet einfach, jedes Sequenzfenster in den Trainingsdaten mit mehreren ganzen Beispielen zu füllen, sodass das Fenster dicht mit echten Tokens und nicht mit Füllungen ist.

Warum dies wichtig ist

Während des Trainings wird eine maximale Kontextlänge festgelegt, zum Beispiel 8.192 Token. Stapel werden auf [Stapelgröße × Kontextlänge] geformt. Wenn ein Trainingsbeispiel kürzer als die Länge des Kontextes ist, werden die verbleibenden Positionen aufgefüllt. Auch wenn der Verlust maskiert wird, werden die Aufmerksamkeits- und MLP-Kernel immer noch mit dem Auffüllen gefüllt, sodass die Rechenleistung für Tokens, die kein Lernsignal enthalten, bezahlt wird.

Wie packt man?

Um mehrere Proben zu packen, verketten Sie mehrere Trainingsproben mit einem [DOC] Trennzeichen dazwischen (beachten Sie das Leerzeichen vor und nach dem [DOC]), sodass die gesamte Länge der Proben unter der gewünschten Kontextlänge liegt.

Ein Beispiel für ein gepacktes Dokument würde wie folgt aussehen:

{"text": "training sample 1 [DOC] training sample 2 [DOC] training sample 3"}

CPT-Tuning-Parameter

Zu den Parametern, die für die Feinabstimmung mit CPT 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: MLFlow Laufname

Konfiguration des Trainings

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

    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.

Trainer-Einstellungen

  • max_steps: Die Anzahl der auszuführenden Trainingsschritte. Jeder Schritt trainiert das Modell mit der global_batch_size Anzahl der Elemente

Einstellungen des Modells

  • hidden_dropout: Die Wahrscheinlichkeit, dass versteckte Statusausgaben gelöscht werden. Erhöhen Sie diesen Wert um etwa 0,0 bis 0,2, um eine Überanpassung bei kleineren Datensätzen zu vermeiden. Zulässig sind alle Werte zwischen 0 und 1, beide inklusive.

  • attention_dropout: Die Wahrscheinlichkeit, dass die Aufmerksamkeit verloren geht. Dieser Parameter kann bei der Generalisierung helfen. Zulässig sind alle Werte zwischen 0 und 1, beide inklusive.

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.

  • Name: Der Optimierer-Algorithmus. Derzeit wird nur distributed_fused_adam unterstützt.

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

  • warmup_steps: Die Anzahl der Schritte zur schrittweisen Erhöhung der Lernrate. Dies verbessert die Trainingsstabilität. Zulässig sind alle Werte zwischen 1 und 20, beide inklusive.

  • 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.