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.
Feinabstimmung von Amazon Nova-Modellen mithilfe von SageMaker Trainingsjobs
Die Feinabstimmung von Amazon Nova-Modellen mit SageMaker Schulungsjobs bietet eine leistungsstarke Möglichkeit, Basismodelle an Ihre spezifischen Anwendungsfälle anzupassen.
Themen
Voraussetzungen
Bevor Sie mit einem Schulungsjob beginnen, sollten Sie Folgendes beachten.
-
Amazon S3 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 Buckets in dem Bereich befinden AWS-Region , in dem Sie alle anderen Ressourcen für Schulungen erstellen. Weitere Informationen finden Sie unter Einen Allzweck-Bucket erstellen.
-
Eine IAM-Rolle mit Berechtigungen zum Ausführen eines Trainingsjobs. Stellen Sie sicher, dass Sie eine IAM-Richtlinie mit anhängen.
AmazonSageMakerFullAccessWeitere Informationen finden Sie unter So verwenden Sie SageMaker Ausführungsrollen. -
Grundlegende Amazon Nova-Rezepte finden Sie unterAmazon Nova-Rezepte abrufen.
Datenaufbereitung
Die Vorbereitung qualitativ hochwertiger, ordnungsgemäß formatierter Daten ist ein wichtiger erster Schritt bei der Feinabstimmung umfangreicher Sprachmodelle. Ganz gleich, ob Sie Supervised Fine-Tuning (SFT) oder Direct Preference Optimization (DPO) verwenden, entweder mit Full-Rank- oder Low-Rank-Adaptation (LoRa), Ihre Daten müssen bestimmte Formatanforderungen erfüllen, um ein erfolgreiches Modelltraining sicherzustellen. In diesem Abschnitt werden die erforderlichen Datenformate, Validierungsmethoden und Best Practices beschrieben, mit denen Sie Ihre Datensätze effektiv für die Feinabstimmung von Amazon Nova-Modellen vorbereiten können.
SFT
Anforderungen an das SFT-Datenformat — Sowohl für Full-Rank SFT als auch für LoRa SFT sollten die Daten dem Converse-Format entsprechen. Beispiele und Einschränkungen dieses Formats finden Sie unter Vorbereiten von Daten für die Feinabstimmung von Understanding models.
SFT-Datenvalidierung — Um Ihr Datensatzformat vor der Einreichung zu überprüfen, empfehlen wir die Verwendung des folgenden Validierungsskripts aus dem Amazon Bedrock Samples Repositoryjsonl Dateien den erforderlichen Formatspezifikationen entsprechen, und mögliche Probleme identifizieren, bevor Sie Ihren Feinabstimmungsauftrag einreichen.
DPO
Anforderungen an das DPO-Datenformat — Sowohl für DPO mit vollem Rang als auch für DPO mit LoRa sollten die Daten dem Converse-Format entsprechen. Der Datensatz muss außerdem ein ähnliches Format wie SFT haben, mit der Ausnahme, dass für den letzten Zug Präferenzpaare erforderlich sind.
Andere Einschränkungen des DPO-Datensatzes — Andere Einschränkungen für Datensätze sind für SFT dieselben. Weitere Informationen finden Sie unter Einschränkungen für Datensätze. Es wird eine einzige JSONL-Datei für das Training und eine einzige JSONL-Datei für die Validierung erwartet. Der Validierungssatz ist optional.
Empfehlungen für DPO-Datensätze — Mindestens 1.000 Präferenzpaare für ein effektives Training. Hochwertige Präferenzdaten werden zu effizienteren Ergebnissen führen.
Beispiel für ein DPO-Datenformat
// N-1 turns same as SFT format { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "non-preferred" } ] }
Beispiel für ein DPO-Datenformat (Multi-Turn)
{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }
Beispiel für ein DPO-Datenformat (mit Bildern)
{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }
Für Schulungsaufträge gilt standardmäßig ein Zeitlimit von einem Tag, obwohl die Schätzungen in den folgenden Tabellen zur Veranschaulichung von einer Schulungsdauer von 5 Tagen ausgehen. Als bewährte Methode empfehlen wir, das Zeitlimit für Schulungen auf maximal 28 Tage zu erhöhen, um einem längeren Trainingsaufwand Rechnung zu tragen. Informationen zur Beantragung einer Erhöhung des Limits finden Sie unter Eine Erhöhung des Kontingents beantragen.
Grenzwerte für SFT-Datensätze
| Länge des Kontextes | Modell | Methode | Datensätze | Beschreibung |
|---|---|---|---|---|
|
Jobs mit 32.000 Kontextlänge |
Amazon Nova Micro | Voller Rang und LoRa | Nur Text |
Wenn Sie ein Dataset verwenden, bei dem alle Datensätze eine Kontextlänge von 32.000 haben und beispielsweise über 5 Epochen laufen, können Sie nur bis zu 100.000 Datensätze haben. |
|
Amazon Nova Lite |
Voller Rang | Nur Text |
Wenn Sie ein Dataset verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 100.000 Datensätze haben. |
|
| Bild und Video |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32.000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 50.000 Datensätze haben. |
|||
| LoRa | Nur Text |
Wenn Sie ein Dataset verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 100.000 Datensätze haben. |
||
| Bild und Video | Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 90.000 Datensätze haben. | |||
|
Amazon Nova Pro |
Voller Rang | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 40.000 Datensätze haben. |
|
| Bild und Video |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32.000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 30.000 Datensätze haben. |
|||
| LoRa | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 40.000 Datensätze haben. |
||
| Bild und Video |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32.000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 35.000 Datensätze haben. |
|||
|
Jobs mit einer Kontextlänge von 64 000 |
Amazon Nova Micro | Voller Rang und LoRa | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 64 000 haben und beispielsweise 5 Epochen lang laufen, können Sie nur bis zu 50.000 Datensätze haben. |
|
Amazon Nova Lite |
Voller Rang | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 64 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 50.000 Datensätze haben. |
|
|
Bild und Video |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 64 KB haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 30.000 Datensätze haben. |
|||
| LoRa | - |
LoRa wird bei 64k für Nova Lite nicht unterstützt. |
||
| Amazon Nova Pro | Voller Rang und LoRa | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 64 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 17 000 Datensätze haben. |
|
|
Bild und Video |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 64 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 15.000 Datensätze haben. |
Grenzwerte für DPO-Datensätze
| Länge des Kontextes | Modell | Methode | Datensätze | Beschreibung |
|---|---|---|---|---|
|
Jobs mit 16.000 Kontextlänge |
Amazon Nova Micro | Voller Rang | Nur Text |
Wenn Sie ein Dataset verwenden, bei dem alle Datensätze eine Kontextlänge von 16.000 haben und beispielsweise über 5 Epochen laufen, können Sie nur bis zu 120.000 Datensätze haben. |
| LoRa | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 16 000 haben und beispielsweise 5 Epochen lang laufen, können Sie nur bis zu 125.000 Datensätze haben. |
||
|
Amazon Nova Lite |
Voller Rang | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 16.000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 130.000 Datensätze haben. |
|
|
Image |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 16 000 haben und beispielsweise 5 Epochen lang laufen, können Sie 20.000 Stichproben innerhalb von 2 Tagen abschließen |
|||
| LoRa | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 16.000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 140.000 Datensätze haben. |
||
|
Image |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 16 000 haben und der beispielsweise 5 Epochen umfasst, können Sie innerhalb von 2 Tagen 20.000 Stichproben erstellen. |
|||
|
Amazon Nova Pro |
Voller Rang | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 16 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 45.000 Datensätze haben. |
|
|
Image |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 16 000 haben und beispielsweise 5 Epochen lang laufen, können Sie 20.000 Stichproben innerhalb von 4 Tagen abschließen |
|||
| LoRa | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 16 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 55.000 Datensätze haben. |
||
|
Image |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 16 000 haben und beispielsweise 5 Epochen lang laufen, können Sie 20.000 Stichproben innerhalb von 4 Tagen abschließen |
|||
|
Jobs mit einer Kontextlänge von 32 000 |
Amazon Nova Micro | Voller Rang | Nur Text |
Wenn Sie ein Dataset verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise über 5 Epochen laufen, können Sie nur bis zu 45 000 Datensätze haben. |
| LoRa | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise 5 Epochen lang laufen, können Sie nur bis zu 50.000 Datensätze haben. |
||
|
Amazon Nova Lite |
Voller Rang | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 55.000 Datensätze haben. |
|
| Image |
Wenn Sie ein Dataset verwenden, bei dem alle Datensätze eine Kontextlänge von 32.000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 35.000 Datensätze haben. |
|||
| LoRa | Nur Text |
Wenn Sie ein Dataset verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 60.000 Datensätze haben. |
||
| Image |
Wenn Sie ein Dataset verwenden, bei dem alle Datensätze eine Kontextlänge von 32.000 haben und beispielsweise über 5 Epochen laufen, können Sie bis zu 35.000 Datensätze haben. |
|||
| Amazon Nova Pro | Voller Rang | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 20.000 Datensätze haben. |
|
| Image |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 64 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 16 000 Datensätze haben. |
|||
| LoRa | Nur Text |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 32 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 22.000 Datensätze haben. |
||
| Image |
Wenn Sie einen Datensatz verwenden, bei dem alle Datensätze eine Kontextlänge von 64 000 haben und beispielsweise 5 Epochen lang laufen, können Sie bis zu 18 000 Datensätze haben. |
Indem Sie die Anzahl der Epochen oder die Kontextlänge Ihrer Datensätze reduzieren, könnten Sie mehr Datensätze bereitstellen.
SFT- und LoRa-PEFT-Konfigurationen mit vollem Rang
In diesem Abschnitt finden Sie Anleitungen zu Rezeptkonfigurationen sowohl für Ansätze zur überwachten Feinabstimmung (Full-Rank Supervised Fine-Tuning, SFT) als auch für die parametereffiziente Feinabstimmung mit niedriger Ranganpassung (LoRa PEFT). Diese Rezeptdateien dienen als Vorlage für Ihre Modellanpassungsaufgaben. Sie ermöglichen es Ihnen, Trainingsparameter, Hyperparameter und andere wichtige Einstellungen festzulegen, die bestimmen, wie Ihr Modell aus Ihren Daten lernt. Um die Hyperparameter anzupassen, folgen Sie den Richtlinien unter Hyperparameter auswählen.
Feinabstimmung von Konfigurationen (Full-Rank SFT und LoRa PEFT)
Der einzige Unterschied zwischen Full-Rank SFT und LoRa PEFT in Bezug auf das Rezept ist die LoRa-PEFT-Konfiguration, die für vollen Rang auf „Null“ und bei Verwendung der LoRa-PEFT-basierten Feinabstimmung auf entsprechende Werte gesetzt ist. SageMaker HyperPod Beispielrezepte
Informationen zur Konfiguration „Ausführen“.
| Schlüssel | Definition | Mikro | Leicht | Profi | |
|---|---|---|---|---|---|
| Konfiguration ausführen | model_type |
Gibt die zu verwendende Nova-Modellvariante an. Ändern Sie dieses Feld nicht. |
„Amazon. nova-micro-v1:0:128 k“ |
„Amazonas. nova-lite-v1:0:300 k“ |
„Amazonas. nova-pro-v1:0:300 k“ |
| Modellname_oder_Pfad |
Der Pfad zum Basismodell. |
„nova-micro/prod“ |
„Nova-Lite/Prod“ |
„nova-pro/prod“ |
|
| Nachbildungen |
Die Anzahl der Recheninstanzen, die für verteilte Schulungen verwendet werden sollen. |
2, 4 oder 8 |
4, 8 oder 16 |
6, 12 oder 24 |
Über die Konfiguration von „training_config“.
| Root-Schlüssel | Schlüssel für Kinder | Definition | Min | Max | |
|---|---|---|---|---|---|
| max_length |
Die maximale Sequenzlänge in Tokens. Dies bestimmt die Größe des Kontextfensters für das Training. Kann auf das nächste 1024-Vielfache eingestellt werden, Maximalwert: 65536 (für Lite Lora 32768). |
1024 |
65536, außer Lite LoRa, das 32768 unterstützt. | ||
| global_batch_size |
Gesamtzahl der Stichproben pro Schritt, zulässige Werte sind 16, 32, 64. Höchstwert: 32 für Nova Pro, 64 für Nova Lite und Micro. |
16 | 32 für Nova Pro, 64 für Nova Lite und Micro. | ||
| Konfiguration des Trainers | Trainer | max_epochs |
Die Anzahl der vollständigen Durchläufe, die Ihren Trainingsdatensatz durchlaufen haben. Für die meisten Anpassungsaufgaben sind 1—5 Epochen in der Regel ausreichend. Es wird empfohlen, bis zu 5 zu behalten. |
1 | - |
| Konfiguration des Modells | model | hidden_dropout |
Wahrscheinlichkeit, dass versteckte Statusausgaben gelöscht werden. Erhöhen Sie den Wert (0,0-0,2), um eine Überanpassung bei kleineren Datensätzen zu reduzieren. Die Grenzen liegen zwischen 0 und 1. |
0 | 1 |
| model | attention_dropout |
Die Wahrscheinlichkeit, dass die Aufmerksamkeit nachlässt, ist gewichtet. Kann bei der Generalisierung helfen. Die Grenzen liegen zwischen 0 und 1. |
0 | 1 | |
| model | ffn_dropout |
Wahrscheinlichkeit, dass Feed-Forward-Netzwerkausgänge ausfallen. Die Grenzen liegen zwischen 0 und 1. |
0 | 1 | |
| Konfiguration des Optimierers | model.optim | lr |
Lernrate, steuert die Schrittgröße während der Optimierung. Die Grenzwerte liegen zwischen 0 und 1. In der Regel zwischen 1e-6 und 1e-4 eingestellt, um eine gute Leistung zu erzielen. |
0 | 1 |
| model.optim | Name |
Optimizer-Algorithmus. Derzeit wird nur |
- | - | |
| model.optim | adam_w_mode |
Aktiviert den AdamW-Modus (true/false). |
- | - | |
| model.optim | eps |
Epsilon für numerische Stabilität. |
|||
| modell.optim | Gewicht_Zerfall |
Die Stärke der L2-Regularisierung muss zwischen 0,0 und 1,0 liegen. |
0 | 1 | |
| model.optim | Betas |
Adam Optimizer Betas, müssen zwischen 0,0 und 1,0 liegen. |
0 | 1 | |
| model.optim | sched_warmup_steps |
Anzahl der Schritte zur schrittweisen Erhöhung der Lernrate. Dies verbessert die Stabilität des Trainings. Zwischen 1 und 20. |
1 | 20 | |
| model.optim | sched_constant_steps |
Schritte mit konstanter Lernrate. |
1.00E-10 | 1.00E-06 | |
| modell.optim | sched.min_lr |
Minimale Lernrate am Ende des Zerfalls. Die Grenzwerte liegen zwischen 0 und 1, müssen aber unter der Lernrate liegen. |
0 | 1 | |
|
LoRa PEFT-Konfiguration |
model.peft | peft_schema |
Benutze „lora“ oder „null“. „lora“ verwendet die LoRa-PEFT-Methode zur parametereffizienten Feinabstimmung. „Null“ leitet eine Feinabstimmung mit vollem Rang ein. |
- | - |
| model.links | lora_tuning.loraplus_lr_ratio |
Der Skalierungsfaktor für die LoRa+-Lernrate muss zwischen 0,0 und 100,0 liegen. |
0 | 100 | |
| model.left | lora_tuning.alpha |
Skalierungsfaktor für LoRa-Gewichte. Zulässige Werte sind 32, 64, 96, 128, 160 und 192. |
32 | 192 | |
| model.left | lora_tuning.adapter_dropout |
Regularisierung für LoRa-Parameter. Muss zwischen 0,0 und 1,0 liegen. |
0 | 1 |
Feinabstimmung bestimmter Konfigurationen (DPO)
Der einzige Unterschied zwischen Direct Preference Optimization (DPO) und LoRa PEFT und FullRank SFT besteht in der dpo_cfg-Konfiguration und den zulässigen Werten. In der Tabelle unter dem Beispiel finden Sie Informationen zu den zulässigen Daten, die speziell für DPO zulässig sind. Beispielrezepte sind im SageMaker HyperPod GitHub Rezepte-Repository
| Stammschlüssel | Schlüssel für Kinder | Definition | Min | Max | |
|---|---|---|---|---|---|
| max_length | Die maximale Sequenzlänge in Tokens. Dies bestimmt die Größe des Kontextfensters für das Training. Kann auf das nächste 1024-Vielfache eingestellt werden, Maximalwert: 32.768. |
1024 |
32768 |
||
| globale_Batchgröße |
Globale Batchgröße, zulässige Werte sind {16, 32, 64, 128, 256}. |
16 | 256 | ||
| Konfiguration des Trainers | Trainer | max_epochs |
Die Anzahl der vollständigen Durchläufe, die Ihren Trainingsdatensatz durchlaufen haben. Für die meisten Anpassungsaufgaben sind 1—5 Epochen in der Regel ausreichend. Die maximale Anzahl von Epochen ist 5. |
1 | 5 |
| Konfiguration des Modells | model | hidden_dropout |
Wahrscheinlichkeit, dass versteckte Statusausgaben gelöscht werden. Erhöhen Sie den Wert (0,0-0,2), um eine Überanpassung bei kleineren Datensätzen zu reduzieren. Die Grenzen liegen zwischen 0 und 1. |
0 | 1 |
| model | attention_dropout |
Die Wahrscheinlichkeit, dass die Aufmerksamkeit nachlässt, ist gewichtet. Kann bei der Generalisierung helfen. Die Grenzen liegen zwischen 0 und 1. |
0 | 1 | |
| model | ffn_dropout |
Wahrscheinlichkeit, dass Feed-Forward-Netzwerkausgänge ausfallen. Die Grenzen liegen zwischen 0 und 1. |
0 | 1 | |
| Konfiguration des Optimierers | model.optim | lr |
Lernrate, steuert die Schrittgröße während der Optimierung. Die Grenzwerte liegen zwischen 0 und 1. In der Regel zwischen 1e-6 und 1e-4 eingestellt, um eine gute Leistung zu erzielen. |
0 | 1 |
| model.optim | Name |
Optimizer-Algorithmus. Derzeit wird nur |
- | - | |
| model.optim | adam_w_mode |
Aktiviert den AdamW-Modus (true/false). |
- | - | |
| model.optim | eps |
Epsilon für numerische Stabilität. |
1.00E-10 | 1.00E-06 | |
| modell.optim | Gewicht_Zerfall |
Die Stärke der L2-Regularisierung muss zwischen 0,0 und 1,0 liegen. |
0 | 1 | |
| model.optim | Betas |
Adam Optimizer Betas, müssen zwischen 0,0 und 1,0 liegen. |
0 | 1 | |
| model.optim | sched_warmup_steps |
Anzahl der Schritte zur schrittweisen Erhöhung der Lernrate. Dies verbessert die Stabilität des Trainings. Zwischen 1 und 20. |
1 | 20 | |
| model.optim | sched_constant_steps |
Schritte mit konstanter Lernrate. |
|||
| model.optim | sched.min_lr |
Minimale Lernrate am Ende des Zerfalls. Die Grenzwerte liegen zwischen 0 und 1, müssen aber unter der Lernrate liegen. |
0 | 1 | |
|
LoRa PEFT-Konfiguration |
model.peft | peft_schema |
Benutze „lora“ oder „null“. „lora“ verwendet die LoRa-PEFT-Methode zur parametereffizienten Feinabstimmung. „Null“ leitet eine Feinabstimmung mit vollem Rang ein. |
- | - |
| model.links | lora_tuning.loraplus_lr_ratio |
Der Skalierungsfaktor für die LoRa+-Lernrate muss zwischen 0,0 und 100,0 liegen. |
0 | 100 | |
| model.left | lora_tuning.alpha |
Skalierungsfaktor für LoRa-Gewichte. Zulässige Werte sind 32, 64, 96, 128, 160 und 192. |
32 | 192 | |
| model.left | lora_tuning.adapter_dropout |
Regularisierung für LoRa-Parameter. Muss zwischen 0,0 und 1,0 liegen. |
0 | 1 | |
| DPO-Konfiguration | model-dpo_cfg | Beta |
Stärke der Durchsetzung von Präferenzen. |
0.001 | 0.1 |
Einsatz eines maßgeschneiderten Nova-Modells bei SageMaker Trainingsaufträgen
In diesem Abschnitt wird gezeigt, wie Sie ein benutzerdefiniertes Nova-Modell für SageMaker Trainingsjobs in einer Jupyter-Notebook-Umgebung ausführen. Sie finden ein vollständiges Beispiel, in dem der Prozess der Konfiguration und des Starts eines Trainingsjobs beschrieben wird, sowie Referenztabellen zur Auswahl der entsprechenden Container-Image URIs - und Instanzkonfigurationen. Mit diesem Ansatz haben Sie die programmatische Kontrolle über Ihre Feinabstimmungsabläufe und können gleichzeitig die verwaltete Infrastruktur für SageMaker die Modellanpassung nutzen. Weitere Informationen finden Sie unter Verwenden eines SageMaker KI-Schätzers zur Durchführung eines Schulungsjobs.
Referenztabellen
Bevor Sie das Beispiel-Notebook ausführen, finden Sie in den folgenden Tabellen Informationen zur Auswahl der entsprechenden Container-Image URIs - und Instanzkonfigurationen.
Image-URI auswählen
| Rezept | Image-URI |
|---|---|
|
SFT-Bild-URI |
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-latest |
|
DPO-Bild-URI |
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest |
Auswahl des Instanztyps und der Anzahl
| Modell | Job type | Instance-Typ | Anzahl der empfohlenen Instanzen | Anzahl der erlaubten Instanzen |
|---|---|---|---|---|
| Amazon Nova Micro | Feinabstimmung (SFT/DPO) |
p5.48xlarge |
2 | 2,4,8 |
| Amazon Nova Lite | Feinabstimmung (SFT/DPO) |
p5.48xlarge |
4 | 4,8,16 |
| Amazon Nova Pro | Feinabstimmung (SFT/DPO) |
p5.48xlarge |
6 | 6,12,24 |
Beispiel für ein Notizbuch
Das folgende Beispielnotizbuch zeigt, wie ein Trainingsjob ausgeführt wird. Weitere Notizbücher für die ersten Schritte zur Anpassung von Nova-Modellen mithilfe von SageMaker KI-Schulungsjobs finden Sie unter Verwenden eines SageMaker KI-Schätzers zur Ausführung eines Trainingsjobs.
# 1. Install dependencies !pip install sagemaker # 2. Import dependencies and initialize sagemaker session import sagemaker,boto3 sm = boto3.client('sagemaker', region_name='us-east-1') sagemaker_session = sagemaker.session.Session(boto_session=boto3.session.Session(), sagemaker_client=sm) # 3. Configure your job # Define the core configuration for launching a SageMaker Training Job. This includes input/output S3 URIs, container image, hardware setup, and other runtime parameters. Update the placeholders below before submitting the job. job_name = "<Your Job Name>" input_s3_uri = "<S3 path to input data>" validation_s3_uri = "<S3 path to validation data>" # optional, leave blank if no validation data output_s3_uri = "<S3 path to output location>" image_uri = "<Image URI from documentation>" # you can choose the image for SFT/DPO instance_type = "ml.p5.48xlarge" # do not change instance_count = <Integer number of hosts> # change hosts as needed. Refer to documentation for allowed values based on model type. role_arn = "<IAM Role you want to use to run the job>" recipe_path = "<Local path to the recipe file>" # 4. Launch SageMaker Training Job # This block sets up and runs the SageMaker training job using the PyTorch estimator. It configures the training image, hardware, input channels, and TensorBoard integration. Validation data is included if provided. from sagemaker.debugger import TensorBoardOutputConfig from sagemaker.pytorch import PyTorch from sagemaker.inputs import TrainingInput tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=output_s3_uri, ) estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role_arn, instance_count=instance_count, instance_type=instance_type, training_recipe=recipe_path, sagemaker_session=sagemaker_session, image_uri=image_uri, tensorboard_output_config=tensorboard_output_config, # Add the setting for using TensorBoard. disable_profiler=True, debugger_hook_config=False ) trainingInput = TrainingInput( s3_data=input_s3_uri, distribution='FullyReplicated', s3_data_type='Converse' ) if (validation_s3_uri): validationInput = TrainingInput( s3_data=validation_s3_uri, distribution='FullyReplicated', s3_data_type='Converse' ) estimator.fit(inputs={"train": trainingInput, "validation": validationInput}) # inputs must be called "train" and "validation", do not change else: estimator.fit(inputs={"train": trainingInput}) # 5. Monitor your training job # To monitor your training job, you can either: # * Go to your AWS console -> Amazon Sagemaker AI -> Training -> Training Jobs # * run the following command # sm.describe_training_job(TrainingJobName="<complete training job name>")
Anleitungen zur Optimierung von Hyperparametern
Die effektive Feinabstimmung Ihres Nova LLM-Modells erfordert eine sorgfältige Auswahl der Hyperparameter. In diesem Abschnitt werden zwar die grundlegende Rezeptstruktur und die Komponenten erläutert, die Optimierung von Hyperparametern für Ihren spezifischen Anwendungsfall erfordert jedoch häufig zusätzliche Anleitungen. Umfassende Empfehlungen zur Auswahl von Hyperparametern, bewährten Methoden und Optimierungsstrategien finden Sie unter Hyperparameter auswählen. Diese Ressource bietet detaillierte Anleitungen zur Auswahl geeigneter Lernraten, Chargengrößen, Trainingsepochen und anderer kritischer Parameter auf der Grundlage der Merkmale und Trainingsziele Ihres Datensatzes. Wir empfehlen, bei der Feinabstimmung Ihrer Rezepturkonfiguration, um eine optimale Modellleistung zu erzielen, diesen Leitfaden zu Rate zu ziehen.
Einzelheiten zu Minimal-, Maximal- und Standardwerten für Epochen, Lerngeschwindigkeit und Lernaufwärmschritte finden Sie unter Hyperparameter für das Verständnis von Modellen.
Häufig vorkommende Rezeptänderungen
Hier sind einige gängige Rezeptanpassungen, die auf bestimmten Anwendungsfällen basieren:
-
Für kleinere Datensätze (< 1.000 Beispiele)
training_config: max_epochs: 2 # More passes through a smaller dataset model: hidden_dropout: 0.1 # Increase regularization weight_decay: 0.01 # Increase regularization
-
Für Effizienz bei begrenzter Rechenleistung
peft: peft_scheme: "lora" lora_tuning:
-
Für die Feinabstimmung komplexer Befehle
optim: lr: 5e-6 # Lower learning rate for more stable learning sched: warmup_steps: 100 # Longer warmup for stability