Fortgesetztes Vortraining (CPT)
Fortgesetztes Vortraining (CPT, Continued Pre-Training) ist der Prozess des weiteren Trainings eines vortrainierten Basismodells anhand neuer Daten unter Verwendung derselben unbeaufsichtigten Ziele (wie maskierte Sprachmodellierung oder kausale Sprachmodellierung). Es bewahrt die zuvor erlernten allgemeinen Sprachfunktionen und passt sich gleichzeitig an neue Bereiche oder Verteilungsverschiebungen an.
CPT beinhaltet keine architektonischen Änderungen oder Optimierungen für spezifische nachgelagerte Aufgaben. Stattdessen erweitert es die Kapazität des Modells zum Sprachverständnis auf bereichsspezifische Weise.
Sie sollten CPT in den folgenden Szenarien verwenden:
-
Sie verfügen über umfangreiche, unbeschriftete Daten, die spezifisch für einen bestimmten Bereich sind (z. B. Medizin oder Finanzen).
-
Sie möchten, dass das Modell allgemeine Sprachfunktionen beibehält und betreffend bereichsspezifischer Inhalte verbessert wird.
-
Sie möchten die Zero-Shot- und Few-Shot-Leistung in speziellen Bereichen verbessern, ohne umfangreiche, aufgabenspezifische Optimierungen vornehmen zu müssen.
Anforderungen an das Datenformat
Wir empfehlen, bei der Durchführung von CPT die folgenden Datensatzmerkmale einzuhalten:
-
Diversität: Ihre Daten sollten ein breites Spektrum von Ausdrücken innerhalb des Zielbereichs abdecken, um eine Überanpassung zu vermeiden.
-
Repräsentation: Ihre Daten sollten die Verteilung widerspiegeln, der das Modell bei der Inferenz ausgesetzt sein wird.
-
Reinheit: Rauschen und Redundanz in Ihren Daten können die Leistung beeinträchtigen. Deduplizierung und Textnormalisierung verbessern das Modelltraining.
-
Skalierung: Größere Datensätze sind hilfreich, aber ab einem bestimmten Schwellenwert (z. B. die Ausführung mehrerer Epochen mit begrenzten Daten) steigt das Risiko einer Überanpassung.
Bei den Trainings- und Validierungsdatensätzen muss es sich um JSONL-Dateien im Converse-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 Ihren Zielbereich repräsentieren.
Datensatzvalidierung
Um Ihren Datensatz zu validieren, bevor Sie Ihren CPT-Job einreichen, überprüfen Sie die folgenden Bedingungen:
-
Jede Zeile muss ein gültiges JSON-Objekt enthalten.
-
Jedes Objekt hat ein „Text“-Feld, das Zeichenkettendaten enthält.
-
Es sind keine anderen Felder als „Text“ vorhanden.
-
Die Datei ist eine
.jsonl-Erweiterung.
Trainingsdauer
Wie viel Zeit für das Training aufgewendet wird, hängt stark von der Größe des Datensatzes, der Anzahl der verwendeten Instances und dem trainierten Modell ab. Die Trainingsdauer steigt gewöhnlich linear an. Die folgende Tabelle enthält einige Beispiele zur Trainingsdauer für verschiedene Modelle.
Modelltyp |
GB |
Anzahl der Proben im Datensatz |
Anzahl der P5-Instances |
|
Ungefähre Trainingsdauer in Stunden |
|---|---|---|---|---|---|
Amazon Nova Micro |
256 |
100 000 |
8 |
8,192 |
4 |
Amazon Nova Lite |
256 |
100 000 |
16 |
8,192 |
4 |
Amazon Nova Pro |
256 |
100 000 |
24 |
8,192 |
10 |
Bei den Trainings- und Validierungsdatensätzen muss es sich um JSONL-Dateien im Operationsformat von Amazon Bedrock Converse handeln, wobei jede Zeile ein JSON-Objekt enthält, das eine Konversation mit den erforderlichen Feldern und der erforderlichen Struktur darstellt.
Zu den Amazon-Nova-Parametern, die für die Optimierung mit CPT verfügbar sind, gehören:
-
Ausführungskonfiguration
-
name: Ein aussagekräftiger Name für Ihren Trainingsjob. Dies hilft bei der Identifizierung Ihres Jobs in der AWS-Managementkonsole. -
model_type: Die zu verwendende Amazon-Nova-Modellvariante. Die verfügbaren Optionen sindamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300koderamazon.nova-pro-v1:0:300k. -
model_name_or_path: Der Pfad zum Basismodell, das Sie für Ihr Training verwenden. Die verfügbaren Optionen sindnova-micro/prod,nova-lite/prod,nova-pro/prod, oder der S3-Pfad für den Checkpoint nach dem Training (s3://customer-escrow-bucket-unique_id/training_run_name). -
replicas: Die Anzahl der Datenverarbeitungs-Instances, die für das verteilte Training verwendet werden sollen. Die verfügbaren Werte variieren abhängig vom ausgewählten Modell. Amazon Nova Micro unterstützt 2, 4 oder 8 Replikate. Amazon Nova Lite unterstützt 4, 8, 16 oder 32 Replikate. Amazon Nova Pro unterstützt 6, 12 oder 24 Replikate. -
data_s3_path: Der S3-Speicherort des Trainingsdatensatzes, der eine JSONL-Datei ist. Diese Datei muss sich im selben AWS-Konto und derselben AWS-Region wie 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, der eine JSONL-Datei ist. 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 TensorBoard-Protokolle gespeichert sind. Alle angegebenen S3-Speicherorte müssen sich im selben AWS-Konto und in derselben AWS-Region befinden.
-
-
Konfiguration des Trainings
-
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 8192 Token für CPT.Längere Sequenzen verbessern die Trainingseffizienz auf Kosten eines erhöhten Speicherbedarfs. Wir empfehlen Ihnen, den Parameter
max_lengthan Ihre Datenverteilung anzupassen.
-
-
Trainer-Einstellungen
-
global_batch_size: Die Gesamtzahl der Trainingsproben, die zusammen in einem Vorwärts- oder Rückwärtsdurchlauf auf allen Geräten und Workern 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.
-
max_epochs: die Anzahl abgeschlossener Durchläufe durch Ihren TrainingsdatensatzIm Allgemeinen benötigen größere Datensätze weniger Epochen zum Konvergieren und kleinere Datensätze mehr Epochen. Wir empfehlen, die Anzahl der Epochen an die Größe der Daten anzupassen, um eine Überanpassung zu vermeiden.
-
-
Modelleinstellungen
-
hidden_dropout: Die Wahrscheinlichkeit, dass versteckte Zustandsausgaben verloren gehen. 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 Aufmerksamkeitsgewichtungen verloren gehen. Dieser Parameter kann bei der Generalisierung helfen. Zulässig sind alle Werte zwischen 0 und 1, beide inklusive. -
ffn_dropout: Die Wahrscheinlichkeit, dass Ausgaben eines Feed-Forward-Netzwerks verloren gehen. 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 nurdistributed_fused_adamunterstü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 Rückgangs. Gültige Werte liegen zwischen 0 und 1 (beide inklusive), müssen jedoch unter der Lernrate liegen.
-
CPT-Rezept
Das Folgende ist ein Rezept für CPT.
## Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16 data_s3_path:[S3_PATH_TO_TRAIN_DATASET]validation_data_s3_path:(OPTIONAL)[S3_PATH_TO_VALIDATION_DATASET]output_s3_path:[S3_PATH_TO_STORE_MANIFEST]## Training specific configs training_config: max_length: 8192 # Maximum context window size (tokens). global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_epochs: 2 # Number of training epochs 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 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: 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 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 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
Einschränkungen
Für CPT gelten folgende Einschränkungen:
-
Multimodale Datensätze werden nicht unterstützt.
-
Zwischen-Checkpoints werden nicht zur Bewertung gespeichert und Sie können nicht von einem Zwischen-Checkpoint aus fortfahren. Nur der letzte Checkpoint wird gespeichert.
-
Die MLflow-Protokollierung wird nicht unterstützt.