

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.

# Nova 1.0 fein abstimmen
<a name="nova-fine-tune-1"></a>

**Anmerkung**  
Sie können die Modelle der Amazon Nova 1.0-Serie mithilfe von Supervised Fine-Tuning (SFT) und Direct Preference Optimization optimieren. [Informationen zur Feinabstimmung von Nova 2.0-Modellen finden Sie unter Feinabstimmung von Nova 2.0.](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-fine-tune-2.html)

## Voraussetzungen
<a name="nova-model-training-jobs-prerequisites"></a>

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 Buckets dort befinden, AWS-Region wo Sie alle anderen Ressourcen für Schulungen erstellt haben. Weitere Informationen finden Sie unter [Erstellen eines Buckets für allgemeine Zwecke](https://docs.aws.amazon.com//AmazonS3/latest/userguide/create-bucket-overview.html).
+ Eine IAM-Rolle mit Berechtigungen zum Ausführen eines Trainingsjobs. Stellen Sie sicher, dass Sie eine IAM-Richtlinie mit `AmazonSageMakerFullAccess` anhängen. Weitere Informationen finden Sie unter [So verwenden Sie SageMaker KI-Ausführungsrollen](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-roles.html).
+ Grundlegende Amazon-Nova-Rezepte finden Sie unter [Abrufen von Amazon-Nova-Rezepten](nova-model-recipes.md#nova-model-get-recipes).

## Datenaufbereitung
<a name="nova-model-training-prepare-data"></a>

Die Vorbereitung qualitativ hochwertiger, ordnungsgemäß formatierter Daten ist ein wichtiger erster Schritt bei der Feinabstimmung großer Sprachmodelle. Ganz gleich, ob Sie die überwachte Feinabstimmung oder direkte Präferenzoptimierung mit Full-Rank- oder Low-Rank-Adaptation verwenden, müssen Ihre Daten 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.

### Anforderungen an das Datenformat
<a name="nova-model-training-prepare-data-format"></a>

**SFT**

Anforderungen an das SFT-Datenformat — Sowohl für SFT mit vollem Rang als auch für LoRa-SFT sollten die Daten dem unten angegebenen Format entsprechen. Beispiele und Einschränkungen für dieses Format finden Sie unter. [Vorbereitung der Daten für die multimodale Feinabstimmung](fine-tune-prepare-data-understanding.md)

SFT-Datenvalidierung – Um Ihr Datensatzformat vor der Einreichung zu überprüfen, empfehlen wir die Verwendung des folgenden Validierungsskripts aus dem [Beispielrepository von Amazon Bedrock](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/custom-models/bedrock-fine-tuning/nova/understanding/dataset_validation/nova_ft_dataset_validator.py). Mit diesem Validierungstool können Sie sicherstellen, dass Ihre `jsonl`-Dateien den erforderlichen Formatspezifikationen entsprechen, und mögliche Probleme identifizieren, bevor Sie Ihren Feinabstimmungsjob 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 unten angegebenen 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.

Weitere Einschränkungen des DPO-Datensatzes – Es gelten dieselben weiteren Datensatzeinschränkungen wie bei SFT. Weitere Informationen finden Sie unter [Vorbereitung der Daten für die multimodale Feinabstimmung](fine-tune-prepare-data-understanding.md). Es wird eine einzige JSONL-Datei für das Training und eine einzige JSONL-Datei für die Validierung erwartet. Der Validierungsdatensatz ist optional.

Empfehlungen für DPO-Datensätze – Mindestens 1 000 Präferenzpaare für ein effektives Training. Hochwertige Präferenzdaten führen zu effizienteren Ergebnissen.

### Beispiele
<a name="nova-model-training-prepare-data-example"></a>

**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 (mehrere Züge)**

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

### Einschränkungen von Datensätzen
<a name="nova-model-training-prepare-data-limits"></a>

Für Trainingsjobs gilt standardmäßig ein Zeitlimit von einem Tag, wobei die Schätzungen in den folgenden Tabellen zur Veranschaulichung von einer Trainingsdauer von 5 Tagen ausgehen. Als bewährte Methode empfehlen wir, das Zeitlimit für Trainings auf maximal 28 Tage zu erhöhen, um längeren Trainings-Workloads Rechnung zu tragen. Informationen dazu, wie Sie eine Erhöhung des Limits anfordern, finden Sie unter [Beantragen einer Kontingenterhöhung](https://docs.aws.amazon.com//servicequotas/latest/userguide/request-quota-increase.html).

**Einschränkungen für SFT-Datensätze**



- ** Jobs mit einer Kontextlänge von 32 000 **
  - **Modell:** Amazon Nova Micro / **Methode:** Full-Rank und LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie nur bis zu 100 000 Einträge haben.
  - **Modell:** Amazon Nova Lite / **Methode:** Full-Rank / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 100 000 Einträge haben.
  - **Datensätze:** Bild und Video / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 50 000 Einträge haben.
  - **Methode:** LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 100 000 Einträge haben.
  - **Datensätze:** Bild und Video / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 90 000 Einträge haben.
  - **Modell:** Amazon Nova Pro / **Methode:** Full-Rank / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 40 000 Einträge haben.
  - **Datensätze:** Bild und Video / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 30 000 Einträge haben.
  - **Methode:** LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 40 000 Einträge haben.
  - **Datensätze:** Bild und Video / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 35 000 Einträge haben.

- ** Jobs mit einer Kontextlänge von 64 000 **
  - **Modell:** Amazon Nova Micro / **Methode:** Full-Rank und LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 64 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie nur bis zu 50 000 Einträge haben.
  - **Modell:** Amazon Nova Lite / **Methode:** Full-Rank / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 64 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 50 000 Einträge haben.
  - **Datensätze:** Bild und Video / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 64 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 30 000 Einträge haben.
  - **Methode:** LoRA / **Datensätze:** - / **Description:** LoRA wird bei einer Kontextlänge von 64 000 für Nova Lite nicht unterstützt.
  - **Modell:** Amazon Nova Pro / **Methode:** Full-Rank und LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 64 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 17 000 Einträge haben.
  - **Datensätze:** Bild und Video / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 64 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 15 000 Einträge haben.



Einschränkungen für DPO-Datensätze



- ** Jobs mit einer Kontextlänge von 16 000 **
  - **Modell:** Amazon Nova Micro / **Methode:** Full-Rank / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie nur bis zu 120 000 Einträge haben.
  - **Methode:** LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie nur bis zu 125 000 Einträge haben.
  - **Modell:** Amazon Nova Lite / **Methode:** Full-Rank / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 130 000 Einträge haben.
  - **Datensätze:** Image / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie 20 000 Beispiele in 2 Tagen ausführen.
  - **Methode:** LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 140 000 Einträge haben.
  - **Datensätze:** Image / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie 20 000 Beispiele in 2 Tagen ausführen.
  - **Modell:** Amazon Nova Pro / **Methode:** Full-Rank / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 45 000 Einträge haben.
  - **Datensätze:** Image / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie 20 000 Beispiele in 4 Tagen ausführen.
  - **Methode:** LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 55 000 Einträge haben.
  - **Datensätze:** Image / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 16 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie 20 000 Beispiele in 4 Tagen ausführen.

- ** Jobs mit einer Kontextlänge von 32 000 **
  - **Modell:** Amazon Nova Micro / **Methode:** Full-Rank / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie nur bis zu 45 000 Einträge haben.
  - **Methode:** LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie nur bis zu 50 000 Einträge haben.
  - **Modell:** Amazon Nova Lite / **Methode:** Full-Rank / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 55 000 Einträge haben.
  - **Datensätze:** Image / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 35 000 Einträge haben.
  - **Methode:** LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 60 000 Einträge haben.
  - **Datensätze:** Image / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 35 000 Einträge haben.
  - **Modell:** Amazon Nova Pro / **Methode:** Full-Rank / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 20 000 Einträge haben.
  - **Datensätze:** Image / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 64 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 16 000 Einträge haben.
  - **Methode:** LoRA / **Datensätze:** Nur Text / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 32 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 22 000 Einträge haben.
  - **Datensätze:** Image / **Description:** Wenn Sie einen Datensatz verwenden, bei dem alle Einträge eine Kontextlänge von 64 000 haben, und diesen beispielsweise für 5 Epochen ausführen, können Sie bis zu 18 000 Einträge haben.



Indem Sie die Anzahl der Epochen oder die Kontextlänge Ihrer Datensätze reduzieren, könnten Sie mehr Datensätze bereitstellen.

## Konfigurationen für Full-Rank SFT und LoRA PEFT
<a name="nova-model-training-jobs-recipe-config"></a>

Dieser Abschnitt enthält Anleitungen zu Rezeptkonfigurationen sowohl für Ansätze zur überwachten Full-Rank-Feinabstimmung (SFT, Supervised Fine-Tuning) als auch zur parametereffizienten Feinabstimmung mit Low-Rank Adaptation (LoRA PEFT). Diese Rezeptdateien dienen als Vorlage für Ihre Modellanpassungsjobs. 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 Anweisungen unter [Auswählen von Hyperparametern](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html).

### Feinabstimmungskonfigurationen (Full-Rank SFT und LoRA PEFT)
<a name="nova-model-training-jobs-recipe-config-1"></a>

Der einzige Unterschied zwischen Full-Rank SFT und LoRA PEFT in Bezug auf das Rezept ist die LoRA-PEFT-Konfiguration. Diese ist für Full-Rank auf „Null“ gesetzt und bei Verwendung der LoRA-PEFT-basierten Feinabstimmung auf die entsprechenden Werte. [Beispielrezepte sind im Rezepte-Repository verfügbar.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes) GitHub Die folgenden Tabellen enthalten detaillierte Konfigurationen, die eventuell hilfreich sein können.

Informationen zur **„Lauf“-Konfiguration**


|  | Key (Schlüssel) | Definition | Micro | Lite | Pro | 
| --- | --- | --- | --- | --- | --- | 
| Ausführungskonfiguration | 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“ | 
|  | model\_name\_or\_path | Der Pfad zum Basismodell. | „nova-micro/prod“ | „nova-lite/prod“ | „nova-pro/prod“ | 
|  | Replikate | Die Anzahl der Computing-Instances, die beim verteilten Training verwendet werden sollen. | 2, 4 oder 8 | 4, 8 oder 16 | 6, 12 oder 24 | 

Informationen über die **„training\_config“-Konfiguration**



- ****
  - **Root-Schlüssel:** 
  - **Untergeordnete Schlüssel:** max\_length
  - **Definition:** Die maximale Sequenzlänge in Token. Dies bestimmt die Größe des Kontextfensters für das Training. Kann auf das nächste Vielfache von 1.024 eingestellt werden; Höchstwert: 65.536 (für Lite Lora: 32.768).
  - **Min:** 1024
  - **Max:** 65.536, außer Lite LoRA, das 32.768 unterstützt.

- ****
  - **Root-Schlüssel:** 
  - **Untergeordnete Schlüssel:** global\_batch\_size
  - **Definition:** Gesamtzahl der Stichproben pro Schritt; zulässige Werte sind 16, 32 und 64. Höchstwert: 32 für Nova Pro; 64 für Nova Lite und Micro.
  - **Min:** 16
  - **Max:** 32 für Nova Pro; 64 für Nova Lite und Micro.

- ****Trainer-Konfiguration****
  - **Root-Schlüssel:** Trainer
  - **Untergeordnete Schlüssel:** max\_epochs
  - **Definition:** Die Anzahl abgeschlossener Durchläufe durch Ihren Trainingsdatensatz Für die meisten Anpassungsaufgaben sind 1–5 Epochen in der Regel ausreichend. Es wird empfohlen, es bei höchstens 5 zu belassen.
  - **Min:** 1
  - **Max:** -

- ****Modellkonfiguration****
  - **Root-Schlüssel:** model / **Untergeordnete Schlüssel:** hidden\_dropout / **Definition:** Die Wahrscheinlichkeit, dass versteckte Zustandsausgaben verloren gehen. Erhöhen Sie diesen Wert (0,0–0,2), um eine Überanpassung bei kleineren Datensätzen zu vermeiden. Die Grenzwerte liegen zwischen 0 und 1. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model / **Untergeordnete Schlüssel:** attention\_dropout / **Definition:** Die Wahrscheinlichkeit, dass Aufmerksamkeitsgewichtungen verloren gehen. Kann bei der Generalisierung helfen. Die Grenzwerte liegen zwischen 0 und 1. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model / **Untergeordnete Schlüssel:** ffn\_dropout / **Definition:** Die Wahrscheinlichkeit, dass Ausgaben eines Feed-Forward-Netzwerks verloren gehen. Die Grenzwerte liegen zwischen 0 und 1. / **Min:** 0 / **Max:** 1

- ****Konfiguration des Optimierers****
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** lr / **Definition:** Die Lernrate, die die Schrittgröße während der Optimierung steuert. Die Grenzwerte liegen zwischen 0 und 1. In der Regel auf 1e-6 bis 1e-4 eingestellt, um eine gute Leistung zu erzielen. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** Name / **Definition:** Der Optimierer-Algorithmus. Derzeit wird nur `distributed_fused_adam` unterstützt. / **Min:** - / **Max:** -
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** adam\_w\_mode / **Definition:** Aktivieren Sie den AdamW-Modus (wahr/falsch). / **Min:** - / **Max:** -
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** eps / **Definition:** Epsilon für numerische Stabilität. / **Min:**  / **Max:** 
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** weight\_decay / **Definition:** Die L2-Regularisierungsstärke; muss zwischen 0,0 und 1,0 liegen. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** betas / **Definition:** Die Beta-Werte des Adam-Optimierers müssen zwischen 0,0 und 1,0 liegen. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** sched\_warmup\_steps / **Definition:** Die Anzahl der Schritte zur schrittweisen Erhöhung der Lernrate. Dies verbessert die Trainingsstabilität. Zwischen 1 und 20. / **Min:** 1 / **Max:** 20
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** sched\_constant\_steps / **Definition:** Schritte mit konstantem Lerntempo. / **Min:** 1.00E-10 / **Max:** 1.00E-06
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** sched.min\_lr / **Definition:** Die minimale Lernrate am Ende des Rückgangs. Die Grenzwerte liegen zwischen 0 und 1, wobei der Wert kleiner als die Lernrate sein muss. / **Min:** 0 / **Max:** 1

- ** **LoRA-PEFT-Konfiguration** **
  - **Root-Schlüssel:** model.peft / **Untergeordnete Schlüssel:** peft\_scheme / **Definition:** Verwenden Sie „lora“ oder „null“. „lora“ verwendet die LoRA-PEFT-Methode zur parametereffizienten Feinabstimmung. „null“ leitet eine Full-Rank-Feinabstimmung ein. / **Min:** - / **Max:** -
  - **Root-Schlüssel:** model.peft / **Untergeordnete Schlüssel:** lora\_tuning.loraplus\_lr\_ratio / **Definition:** Der Skalierungsfaktor für die Lernrate von LoRA\+; muss zwischen 0,0 und 100,0 liegen. / **Min:** 0 / **Max:** 100
  - **Root-Schlüssel:** model.peft / **Untergeordnete Schlüssel:** lora\_tuning.alpha / **Definition:** Der Skalierungsfaktor für LoRA-Gewichtungen. Zulässige Werte sind 32, 64, 96, 128, 160 und 192. / **Min:** 32 / **Max:** 192
  - **Root-Schlüssel:** model.peft / **Untergeordnete Schlüssel:** lora\_tuning.adapter\_dropout / **Definition:** Regularisierung für LoRA-Parameter. Muss zwischen 0,0 und 1,0 liegen. / **Min:** 0 / **Max:** 1



### Feinabstimmung bestimmter Konfigurationen (DPO)
<a name="nova-model-training-jobs-recipe-config-2"></a>

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 Werten, die speziell für DPO zulässig sind. [Beispielrezepte sind im Rezepte-Repository verfügbar.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes) GitHub Die folgende Tabelle enthält detaillierte Konfigurationen, die eventuell hilfreich sein können.



- ****
  - **Root-Schlüssel:** 
  - **Untergeordnete Schlüssel:** max\_length
  - **Definition:** Die maximale Sequenzlänge in Token. Dies bestimmt die Größe des Kontextfensters für das Training. Kann auf das nächste Vielfache von 1.024 eingestellt werden; Höchstwert: 32.768.
  - **Min:** 1024
  - **Max:** 32768

- ****
  - **Root-Schlüssel:** 
  - **Untergeordnete Schlüssel:** global\_batch\_size
  - **Definition:** Globale Batch-Größe; zulässige Werte sind {16, 32, 64, 128, 256}.
  - **Min:** 16
  - **Max:** 256

- ****Trainer-Konfiguration****
  - **Root-Schlüssel:** Trainer
  - **Untergeordnete Schlüssel:** max\_epochs
  - **Definition:** Die Anzahl abgeschlossener Durchläufe durch Ihren Trainingsdatensatz Für die meisten Anpassungsaufgaben sind 1–5 Epochen in der Regel ausreichend. Die maximale Anzahl von Epochen ist 5.
  - **Min:** 1
  - **Max:** 5

- ****Modellkonfiguration****
  - **Root-Schlüssel:** model / **Untergeordnete Schlüssel:** hidden\_dropout / **Definition:** Die Wahrscheinlichkeit, dass versteckte Zustandsausgaben verloren gehen. Erhöhen Sie diesen Wert (0,0–0,2), um eine Überanpassung bei kleineren Datensätzen zu vermeiden. Die Grenzwerte liegen zwischen 0 und 1. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model / **Untergeordnete Schlüssel:** attention\_dropout / **Definition:** Die Wahrscheinlichkeit, dass Aufmerksamkeitsgewichtungen verloren gehen. Kann bei der Generalisierung helfen. Die Grenzwerte liegen zwischen 0 und 1. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model / **Untergeordnete Schlüssel:** ffn\_dropout / **Definition:** Die Wahrscheinlichkeit, dass Ausgaben eines Feed-Forward-Netzwerks verloren gehen. Die Grenzwerte liegen zwischen 0 und 1. / **Min:** 0 / **Max:** 1

- ****Konfiguration des Optimierers****
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** lr / **Definition:** Die Lernrate, die die Schrittgröße während der Optimierung steuert. Die Grenzwerte liegen zwischen 0 und 1. In der Regel auf 1e-6 bis 1e-4 eingestellt, um eine gute Leistung zu erzielen. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** Name / **Definition:** Der Optimierer-Algorithmus. Derzeit wird nur `distributed_fused_adam` unterstützt. / **Min:** - / **Max:** -
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** adam\_w\_mode / **Definition:** Aktivieren Sie den AdamW-Modus (wahr/falsch). / **Min:** - / **Max:** -
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** eps / **Definition:** Epsilon für numerische Stabilität. / **Min:** 1.00E-10 / **Max:** 1.00E-06
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** weight\_decay / **Definition:** Die L2-Regularisierungsstärke; muss zwischen 0,0 und 1,0 liegen. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** betas / **Definition:** Die Beta-Werte des Adam-Optimierers müssen zwischen 0,0 und 1,0 liegen. / **Min:** 0 / **Max:** 1
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** sched\_warmup\_steps / **Definition:** Die Anzahl der Schritte zur schrittweisen Erhöhung der Lernrate. Dies verbessert die Trainingsstabilität. Zwischen 1 und 20. / **Min:** 1 / **Max:** 20
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** sched\_constant\_steps / **Definition:** Schritte mit konstantem Lerntempo. / **Min:**  / **Max:** 
  - **Root-Schlüssel:** model.optim / **Untergeordnete Schlüssel:** sched.min\_lr / **Definition:** Die minimale Lernrate am Ende des Rückgangs. Die Grenzwerte liegen zwischen 0 und 1, wobei der Wert kleiner als die Lernrate sein muss. / **Min:** 0 / **Max:** 1

- ** **LoRA-PEFT-Konfiguration** **
  - **Root-Schlüssel:** model.peft / **Untergeordnete Schlüssel:** peft\_scheme / **Definition:** Verwenden Sie „lora“ oder „null“. „lora“ verwendet die LoRA-PEFT-Methode zur parametereffizienten Feinabstimmung. „null“ leitet eine Full-Rank-Feinabstimmung ein. / **Min:** - / **Max:** -
  - **Root-Schlüssel:** model.peft / **Untergeordnete Schlüssel:** lora\_tuning.loraplus\_lr\_ratio / **Definition:** Der Skalierungsfaktor für die Lernrate von LoRA\+; muss zwischen 0,0 und 100,0 liegen. / **Min:** 0 / **Max:** 100
  - **Root-Schlüssel:** model.peft / **Untergeordnete Schlüssel:** lora\_tuning.alpha / **Definition:** Der Skalierungsfaktor für LoRA-Gewichtungen. Zulässige Werte sind 32, 64, 96, 128, 160 und 192. / **Min:** 32 / **Max:** 192
  - **Root-Schlüssel:** model.peft / **Untergeordnete Schlüssel:** lora\_tuning.adapter\_dropout / **Definition:** Die Regularisierung für LoRA-Parameter. Muss zwischen 0.0 und 1.0 liegen. / **Min:** 0 / **Max:** 1

- ****DPO-Konfiguration****
  - **Root-Schlüssel:** model-dpo\_cfg
  - **Untergeordnete Schlüssel:** Beta
  - **Definition:** Die Stärke der Durchsetzung von Präferenzen.
  - **Min:** 0.001
  - **Max:** 0.1



## Ausführen eines maßgeschneiderten Nova-Modells bei Training Jobs SageMaker
<a name="nova-model-training-jobs-notebook"></a>

In diesem Abschnitt wird gezeigt, wie Sie ein benutzerdefiniertes Nova-Modell für SageMaker Training Jobs 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. Dieser Ansatz gibt Ihnen die programmatische Kontrolle über Ihre Feinabstimmungsabläufe und nutzt gleichzeitig die verwaltete Infrastruktur von SageMaker KI für die Modellanpassung. Weitere Informationen finden Sie unter [Verwenden eines SageMaker KI-Schätzers zur Durchführung](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html) eines Trainingsjobs.

### Referenztabellen
<a name="nova-model-training-jobs-reference-table"></a>

Bevor Sie das Beispiel-Notebook ausführen, finden Sie in den folgenden Tabellen Informationen zur Auswahl der entsprechenden Container-Image URIs - und Instanzkonfigurationen.

**Auswahl des Image-URI**


| Rezept | Image-URI | 
| --- | --- | 
| Image-URI für SFT | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-latest | 
| Image-URI für DPO | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest | 

**Auswahl des Instance-Typs und der Anzahl von Instances**


| Modell | Feinabstimmung des Jobtyps | Art der Technik | Instance-Typ | Empfohlene Anzahl von Instances | Erlaubte Anzahl von Instances | 
| --- | --- | --- | --- | --- | --- | 
| Amazon Nova Micro | SFT | LoRA | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | LoRa\+voller Rang | g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  |  | p4d.24xlarge | 2 | 2, 4, 8 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 1 | 1, 2, 4, 8 | 
|  | DPO | LoRA | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | LoRa\+voller Rang | p4d.24xlarge, p5.48xlarge, p5en.48xlarge | 2 | 2, 4, 8 | 
| Amazon Nova Lite | SFT | LoRA | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 1 | 1, 4, 8, 16 | 
|  |  | LoRa\+voller Rang | p4d.24xlarge | 4 | 4, 8, 16 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 2 | 2, 4, 8, 16 | 
|  | DPO | LoRA | g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | LoRa\+voller Rang | p4d.24xlarge, p5.48xlarge, p5en.48xlarge | 4 | 4, 8, 16 | 
| Amazon Nova Pro | SFT | LoRA | p4d.24xlarge | 6 | 6, 12, 24 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 3 | 3, 6, 12, 24 | 
|  |  | LoRa\+voller Rang | p5.48xlarge, p5en.48xlarge | 6 | 6, 12, 24 | 
|  | DPO | LoRA | p4d.24xlarge | 6 | 6, 12, 24 | 
|  |  | LoRa\+voller Rang | p4d.24xlarge | 12 | 12, 24 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 4 | 4, 8, 16 | 

### Beispiel-Notebook
<a name="nova-model-training-jobs-notebook"></a>

Das folgende Beispiel-Notebook zeigt, wie ein Trainingsjob ausgeführt wird. Weitere Notizbücher für die ersten Schritte zur Anpassung von Nova-Modellen mithilfe von SageMaker Trainingsjobs finden Sie unter [Verwenden eines SageMaker KI-Schätzers zur Ausführung eines Schulungsjobs](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

```
# 1. Install dependencies

!pip install sagemaker==2.254.1

# 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>"
output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption

# 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,
    output_kms_key=output_kms_key
)

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})
```

## Anleitung zur Hyperparameteroptimierung
<a name="nova-model-hyperparameter"></a>

Die effektive Feinabstimmung Ihres Nova-LLM-Modells erfordert eine sorgfältige Auswahl der Hyperparameter. Auch wenn in diesem Abschnitt die grundlegende Rezeptstruktur und die Komponenten erläutert werden, erfordert die Optimierung von Hyperparametern für Ihren spezifischen Anwendungsfall häufig zusätzliche Anleitungen. Umfassende Empfehlungen zur Auswahl von Hyperparametern, Best Practices und Optimierungsstrategien finden Sie unter [Auswählen von Hyperparametern](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html). Diese Ressource bietet detaillierte Anleitungen zur Auswahl geeigneter Lernraten, Batchgrößen, Trainingsepochen und anderer kritischer Parameter gemäß den Merkmalen und Trainingszielen Ihres Datensatzes. Wir empfehlen, bei der Feinabstimmung Ihrer Rezeptkonfiguration diesen Leitfaden zu Rate zu ziehen, um eine optimale Modellleistung zu erzielen.

Einzelheiten zu den Mindest-, Höchst- und Standardwerten für Epochen und zur Lerngeschwindigkeit sowie Aufwärmschritte für das Lernen finden Sie unter [Hyperparameter für Modelle mit Verständnisfunktion](https://docs.aws.amazon.com//nova/latest/userguide/fine-tune-hyperparameters-understanding-models.html).

**Gängige Rezeptänderungen**

Hier einige gängige Rezeptanpassungen für bestimmte Anwendungsfälle:
+ **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 Optimierung komplexer Befehle**

  ```
  optim:
      lr: 5e-6  # Lower learning rate for more stable learning
      sched:
          warmup_steps: 100  # Longer warmup for stability
  ```