

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**

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/nova/latest/userguide/nova-fine-tune-1.html)

Einschränkungen für DPO-Datensätze

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/nova/latest/userguide/nova-fine-tune-1.html)

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\$1type |  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\$1name\$1or\$1path |  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\$1config“-Konfiguration**

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/nova/latest/userguide/nova-fine-tune-1.html)

### 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\$1cfg-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.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/nova/latest/userguide/nova-fine-tune-1.html)

## 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\$1voller 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\$1voller 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\$1voller 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\$1voller 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\$1voller Rang | p5.48xlarge, p5en.48xlarge | 6 | 6, 12, 24 | 
|  | DPO | LoRA | p4d.24xlarge | 6 | 6, 12, 24 | 
|  |  | LoRa\$1voller 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
  ```