

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.

# Amazon-Nova-Destillation
<a name="nova-distillation"></a>

Diese Schnellstartanleitung hilft Ihnen bei den ersten Schritten mit der Amazon Nova-Modelldestillation mithilfe von überwachter Feinabstimmung (SFT) auf SageMaker KI.

Die Modelldestillation ist eine SageMaker KI-Methode, die Wissen von großen, fortschrittlichen Modellen auf kleinere, effiziente Modelle überträgt. Bei Amazon Nova-Modellen gibt ein größeres „Lehrer“ -Modell (wie Amazon Nova Pro oder) seine Funktionen an ein kleineres „Schüler“ -Modell (wie Amazon Nova Lite oder Amazon Nova Micro) weiter. Dadurch entsteht ein maßgeschneidertes Modell, das eine hohe Leistung beibehält und gleichzeitig weniger Ressourcen verbraucht.

## Zentrale Komponenten
<a name="nova-distillation-training-job-components"></a>

Der Destillationsprozess umfasst hauptsächlich zwei Arten von Modellen:

**Lehrermodelle** dienen als Wissensquelle und umfassen:
+ Amazon Nova Pro (Amazonas). nova-pro-v1:0)
+  (Amazonas. nova-premier-v1:0)

**Schülermodelle** erhalten das Wissen und setzen es um:
+ Amazon Nova Lite (Amazonas). nova-lite-v1:0:300 k)
+ Amazon Nova Micro (Amazonas). nova-micro-v1:00:128 k)
+ Amazon Nova Pro (Amazonas). nova-pro-v1:0:300 k) — Nur verfügbar, wenn Sie es als Lehrer verwenden

## Anwendungsfälle
<a name="nova-distillation-training-job-use-case"></a>

Die Modelldestillation ist besonders in den folgenden Szenarien von Vorteil:
+ Für Ihre Anwendung gelten strenge Latenz-, Kosten- und Genauigkeitsanforderungen.
+ Sie benötigen ein benutzerdefiniertes Modell für bestimmte Aufgaben, verfügen jedoch nicht über ausreichend hochwertige, beschriftete Trainingsdaten.
+ Sie möchten die Leistung moderner Modelle erreichen und gleichzeitig die Effizienz kleinerer Modelle beibehalten.

## Voraussetzungen
<a name="nova-distillation-training-job-prerequisites"></a>
+ AWS-Konto mit Zugriff auf Amazon Nova-Modelle und entsprechenden Servicekontingenten (min. 6 P5- und 1 R5-Instances).
+ IAM-Rolle mit Berechtigungen für SageMaker Schulungsjobs.
+ Amazon-S3-Bucket, um Trainingsdaten und -ergebnisse zu speichern

## Einrichten der Datenerweiterung
<a name="nova-distillation-training-job-data-augment"></a>

In der Phase der Datenerweiterung werden mithilfe von SageMaker Training Jobs hochwertige Schulungsdaten mithilfe des Lehrermodells generiert. In diesem Abschnitt werden der Einrichtungsprozess und die Anforderungen beschrieben.

### IAM role (IAM-Rolle)
<a name="nova-distillation-training-job-data-augment-iam"></a>

Informationen zum Erstellen von IAM-Rollen und Anhängen von Richtlinien finden Sie unter [Erstellen von Rollen und Anhängen von Richtlinien (Konsole)](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_job-functions_create-policies.html). Wenn Sie das verwenden AWS CLI, folgen Sie den Anweisungen unter [Create-Role](https://docs.aws.amazon.com//cli/latest/reference/iam/create-role.html) und. [attach-role-policy](https://docs.aws.amazon.com//cli/latest/reference/iam/attach-role-policy.html) Weitere Informationen finden Sie im [ SageMaker AI *Developer Guide unter So verwenden Sie SageMaker KI-Ausführungsrollen*](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-roles.html).

Nachfolgend sind Beispielbefehle zu Ihrer Information aufgeführt.

**Erstellen Sie eine SageMaker KI-Ausführungsrolle**

Die Rolle wird mit einer Vertrauensbeziehung geschaffen, die es SageMaker KI, Amazon Bedrock, ermöglicht, diese Rolle zu übernehmen. Dadurch können diese Dienste bei der Ausführung von Batch-Inferenzjobs in Ihrem Namen handeln.

```
aws iam create-role \
 --role-name NovaCustomizationRole \
 --assume-role-policy-document '{
 "Version": "2012-10-17",		 	 	 
 "Statement": [
 {
 "Effect": "Allow",
 "Principal": {
 "Service": ["sagemaker.amazonaws.com",
            "bedrock.amazonaws.com"]
 },
 "Action": "sts:AssumeRole"
 }
 ]
}'
```

**Hinzufügen der erforderlichen Richtlinien**

```
# Attach AmazonSageMakerFullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess

# Attach AmazonBedrockFullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonBedrockFullAccess

 # Attach S3 access policy
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
 
# Attach AmazonEC2FullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess
 
# Attach AmazonEC2ContainerRegistryFullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess
 
# Attach AmazonEC2ContainerRegistryFullAccess
 aws iam attach-role-policy \
 --role-name NovaCustomizationRole \
 --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
```

Fügen Sie der für den Destillations-Container erforderlichen Kundenausführungsrolle die folgende Inline-Richtlinie an.
+ AWS KMS Berechtigungen: Ermöglicht der Rolle die Interaktion mit dem AWS Key Management Service, der für den Zugriff auf verschlüsselte Ressourcen oder die Verwaltung von Verschlüsselungsschlüsseln erforderlich ist.
+ `IAM:PassRole`: Diese Berechtigung ist häufig erforderlich, wenn ein Dienst diese Rolle an einen anderen Dienst übergeben muss. Dies ist ein übliches Muster bei AWS Dienstintegrationen.

```
aws iam put-role-policy \
 --role-name NovaCustomizationRole \
 --policy-name Distillation-Additional-Permissions\
 --policy-document '{
 "Version": "2012-10-17",		 	 	 
 "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*"
        }
    ]
}
```

### Amazon-VPC-Konfiguration
<a name="nova-distillation-training-job-data-augment-vpc"></a>

Um die Amazon VPC-Konfiguration für SageMaker Training Jobs mithilfe von zu erstellen AWS-Managementkonsole, folgen Sie den Anweisungen unter [Konfigurieren Sie Ihre private VPC für SageMaker KI-Schulungen (Konsole)](https://docs.aws.amazon.com//sagemaker/latest/dg/train-vpc.html).

**Erstellen einer neuen Amazon VPC**

```
Name: Distillation-VPC
IPv4 CIDR: 10.0.0.0/16 (or your preferred range)
Availability Zones: 2
Public Subnets: 2
Private Subnets: 2
NAT Gateways: 1 (in one AZ)
```

**Erstellen Sie eine Sicherheitsgruppe**

```
Name: Distillation-SG
Description: Security group for data distillation jobs
Inbound Rules: Allow all traffic from self
Outbound Rules: Allow all traffic (0.0.0.0/0)
```

**Erstellen von VPC-Endpunkten für die folgenden Services**

```
com.amazonaws.[region].s3
com.amazonaws.[region].sagemaker.api
com.amazonaws.[region].sagemaker.runtime
com.amazonaws.[region].bedrock.api
com.amazonaws.[region].bedrock.runtime
com.amazonaws.[region].sts
com.amazonaws.[region].logs
com.amazonaws.[region].ecr.api
com.amazonaws.[region].ecr.dkr
```

Für jeden Endpunkt:
+ Wählen Sie Ihre Destillations-VPC.
+ Auswahl der privaten Subnetze
+ Wählen Sie die Sicherheitsgruppe Distillation-SG.

### AWS KMS Schlüssel
<a name="nova-distillation-training-job-data-augment-kms"></a>

Bei der Arbeit mit Amazon Bedrock Batch Inference ist ein AWS KMS Schlüssel für Datensicherheit und Compliance erforderlich. Amazon Bedrock Batch-Inferenzaufträge erfordern, dass die Eingabe- und Ausgabe-Buckets von Amazon S3 mit AWS KMS Schlüsseln verschlüsselt werden, um den Datenschutz im Ruhezustand zu gewährleisten.

Erstellen Sie einen KMS-Schlüssel AWS CLI mit diesem Befehl:

```
# Create KMS key
aws kms create-key \
  --description "KMS key for Nova distillation"
```

Der Befehl gibt die wichtigsten Informationen einschließlich des ARN aus. Beispielausgabe:

```
{
    "KeyMetadata": {
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Arn": "arn:aws:kms:{{us-east-1}}:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }
}
```

**Anmerkung**  
Speichern Sie den ARN des KMS-Schlüssels aus der Ausgabe, da Sie ihn für die Erstellung des Amazon-S3-Buckets im nächsten Abschnitt benötigen.

### Amazon-S3-Bucket
<a name="nova-distillation-training-job-data-augment-s3"></a>

Sie benötigen zwei Arten von Amazon-S3-Speicher. Der kundenverwaltete Amazon-S3-Bucket speichert Ihre Eingabedaten und `manifest.json`-Ausgabedateien. Sie erstellen und verwalten diesen Bucket und können für die Ein- und Ausgabe einen einzigen Bucket verwenden. Dieser Bucket muss mit KMS-Verschlüsselung konfiguriert sein, da er sensible Ausgabedaten speichert und von Batch-Inferenzjobs in Amazon Bedrock verwendet wird. Amazon Bedrock benötigt KMS-verschlüsselte Buckets für die Verarbeitung von Batch-Inferenzaufgaben. 

Der serviceverwaltete Amazon-S3-Bucket speichert Modellgewichtungen. Während Ihres ersten Trainingsjobs wird ein serviceverwalteter Amazon-S3-Bucket automatisch erstellt. Er verfügt über Zugriffskontrollen mit bestimmten Pfaden, auf die nur über Manifestdateien zugegriffen werden kann.

Verwenden Sie den CLI-Befehl [create-bucket AWS-Region, um einen Bucket in einem bestimmten Bucket](https://docs.aws.amazon.com//cli/latest/reference/s3api/create-bucket.html) zu erstellen. 

Beispielbefehl zum Erstellen eines Amazon S3 S3-Buckets mit AWS KMS Verschlüsselung. `{kms_key_arn}`Ersetzen Sie es durch Ihren AWS KMS Schlüssel-ARN. Sie müssen zuerst einen AWS KMS Schlüssel erstellen, falls Sie dies noch nicht getan haben.

```
aws s3api create-bucket \
    "Rules": [
        {
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "aws:kms",
                "KMSMasterKeyID": "{kms_key_arn}"
            },
            "BucketKeyEnabled": true
        }
    ]
}'
```

## Einen SageMaker Ausbildungsjob beginnen
<a name="nova-distillation-training-job-start"></a>

Bevor Sie mit einem Trainingsjob beginnen, bereiten Sie Ihre Daten vor.

**Anforderung an das Datenformat** – Ihr Eingabedatensatz muss im JSONL-Format vorliegen, wobei jede Zeile eine Stichprobe im Converse-Format enthält. Weitere Informationen finden Sie unter [Vorbereiten von Daten für das Destillieren von Modellen mit Verständnisfunktion](https://docs.aws.amazon.com//nova/latest/userguide/custom-distill-prepare.html).

**Einschränkungen für Datensätze**
+ Mindestanzahl von Prompts: 100
+ Maximale Dateigröße: 2 GB
+ Maximale Zeilenlänge: 180 KB
+ Dateiformat: nur JSONL

Führen Sie den folgenden Befehl aus, um Eingabedaten hochzuladen.

```
aws s3 cp /path/to/input-data/ s3://customer-input-data-bucket/ —recursive
```

**Rezept für Datenerweiterung**

Sie können das Destillationsrezept aus dem [Rezepte-Repository](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes) abrufen. Das Destillationsrezept befindet sich im Verzeichnis: `recipes-collection/recipes/fine-tuning/nova`. Der Datenerweiterungsprozess wird durch eine YAML-Konfigurationsdatei gesteuert. Im Folgenden finden Sie eine detaillierte Erklärung der einzelnen Parameter. Alle Felder sind Pflichtfelder.


****  

| Parameter | Description | 
| --- | --- | 
| name | Ein aussagekräftiger Name für Ihren Trainingsjob. Dies hilft bei der Identifizierung Ihres Jobs in der AWS-Managementkonsole. | 
| distillation\_data | Aktiviert den Datendestillationsjob. Ändern Sie dieses Feld nicht. | 
| maxNumberOfFordert auf | Die maximale Anzahl von Prompts im Datensatz. | 
| maxResponseLength | Die maximale Antwortlänge pro Prompt (Token). | 
| maxInputFileSizeInGB | Die maximale Größe der Eingabedatei (in GB). | 
| maxLineLengthIn KB | Die maximale Größe einer einzelnen Zeile in der Eingabedatei (in KB). | 
| maxStudentModelFineTuningContextLengthInTokens | Die maximale Größe des Kontextfensters (Token) für das Schülermodell. Dieser Wert darf die Kapazität des Schülermodells nicht überschreiten. Sie können diesen Wert je nach Kapazität des Schülermodells auf 32 000 oder 64 000 festlegen. | 
| teacherModelId | Legen Sie als Lehrermodell-ID eine der folgenden Optionen fest: [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/nova/latest/userguide/nova-distillation.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/nova/latest/userguide/nova-distillation.html) | 
| temperature | Steuert die Zufälligkeit der Antworten (0,7 wird für ein ausgewogenes Verhältnis empfohlen). | 
| top\_p | Kumulativer Wahrscheinlichkeitsschwellenwert für Tokenstichproben (0,9 wird empfohlen). | 
| customer\_bucket | Amazon S3 S3-Bucket für input/output Daten. | 
| kms\_key | AWS KMS Schlüssel zum Verschlüsseln der Ausgabe in S3. Dies wird von Bedrock Batch Inference benötigt, um die vom Inferenzjob zurückgegebene Ausgabe zu speichern. | 

**Einschränkung**

Für das Lehrermodell als Nova Premier – Wird nur in der IAD-Region (`us-east-1`) unterstützt, da die Batch-Inferenz mit Amazon Bedrock in der ARN-Region (`eu-north-1`) nicht verfügbar ist.

**Bewährte Methoden**

Datenaufbereitung
+ Fügen Sie 100 hochwertige, gekennzeichnete Beispiele als Leitfaden für das Lehrermodell bei.
+ Entfernen Sie vor der Einreichung Kennzeichnungen von schlechter Qualität.
+ Befolgen Sie die bewährten Methoden zu Textverständnis-Prompts.
+ Testen Sie die Prompts mit dem Lehrermodell, bevor Sie mit der Destillation beginnen.

Auswahl des Modells
+ Verwenden Sie Nova Pro als Lehrermodell für allgemeine Anwendungsfälle.
+ Ziehen Sie Nova Premier für spezialisiertes Fachwissen in Betracht.
+ Wählen Sie das Schülermodell auf der Grundlage der Latenz- und Kostenanforderungen aus.

Leistungsoptimierung
+ Beginnen Sie mit der empfohlenen Temperatur (0,7) und dem empfohlenen Wert für top\_p (0,9).
+ Überprüfen Sie vor der Feinabstimmung die Qualität der erweiterten Daten.
+ Folgen Sie den Anweisungen unter [Auswählen von Hyperparametern](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html), um die Hyperparameter anzupassen.

**Starten eines Jobs mit PySDK**

Das folgende Beispiel-Notizbuch zeigt, wie ein SageMaker Trainingsjob für die Destillation ausgeführt wird. Weitere Informationen finden Sie unter [Verwenden eines SageMaker KI-Schätzers zur Ausführung eines Trainingsjobs](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

```
import os
import sagemaker,boto3
from sagemaker.pytorch import PyTorch
from sagemaker.inputs import TrainingInput

sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()

# SETUP
job_name = <Your_job_name> # Must be unique for every run

input_s3_uri = <S3 URI to your input dataset> # Must end in .jsonl file
output_s3_uri = <S3 URI to your output bucket> + job_name

image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-distillation-repo:SM-TJ-DISTILL-LATEST" # Do not change
instance_type = "ml.r5.4xlarge" # Recommedation is to use cpu instances 
instance_count = 1 # Must be 1, do not change 
role_arn = <IAM role to execute the job with>
recipe_path = <Local path to your recipe>

# Execution

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,
    max_run=432000,
    sagemaker_session=sagemaker_session,
    image_uri=image_uri,
    subnets= ['subnet-xxxxxxxxxxxxxxxxx','subnet-xxxxxxxxxxxxxxxxx'], # Add subnet groups created in previous steps
    security_group_ids= ['sg-xxxxxxxxxxxxxxxxx'], # Add security group created in previous steps
    disable_profiler=True,
    debugger_hook_config=False
)

trainingInput = TrainingInput(
    s3_data=input_s3_uri,
    distribution='FullyReplicated',
    s3_data_type='Converse'
)

# The keys must be "train".
estimator.fit(inputs={"train": trainingInput})
```

## CloudWatch Logs
<a name="nova-distillation-logs"></a>

Protokolle sind in Amazon CloudWatch unter der `/aws/sagemaker/TrainingJobs` Protokollgruppe in Ihrem verfügbar AWS-Konto. Es wird eine Protokolldatei pro Host angezeigt, der für Ihren Trainingsjob verwendet wird.

## Erfolgreiches Training
<a name="nova-distillation-successful-training"></a>

Bei einem erfolgreichen Trainingsjob wird am Ende des Protokolls die Protokollmeldung „Training ist abgeschlossen“ angezeigt.

Der Ausgabe-Bucket enthält die folgenden Dateien:
+ `distillation_data/manifest.json`: Enthält den Speicherort erweiterter Daten. Sie können diesen Datensatz verwenden, um einen Amazon-Nova-Feinabstimmungsjob zu starten. Mit diesem Datensatz wird nur das SFT-Training unterstützt.

  ```
  {
    "distillation_data": "s3://{{customer_escrow_bucket}}/{{job_id}}/distillation_data/"
  }
  ```
+ `distillation_data/sample_training_data.jsonl`: Diese JSONL-Datei enthält 50 Beispiele erweiterter Daten als Vorschau, um Ihnen bei der Bestimmung der Datenqualität zu helfen.
+ `distillation_data/training_config.json`: Diese Datei enthält empfohlene Hyperparameter für Amazon Nova-Feinabstimmungsjobs. Im Folgenden sehen Sie ein Beispiel für eine -Datei:

  ```
  {
      "epochCount": 5, 
      "learningRate": 1e-05, 
      "batchSize": 1, 
      "learningRateWarmupSteps": 1
  }
  ```

## Überprüfen der Qualität erweiterter Daten
<a name="nova-distillation-training-job-validate"></a>

Vor der Feinabstimmung ist es wichtig, die Qualität der erweiterten Daten zu überprüfen:

1. Überprüfen Sie die `sample_training_data.jsonl`-Datei in Ihrem Ausgabe-Bucket. Diese Datei enthält 50 zufällige Stichproben aus dem erweiterten Datensatz.

1. Untersuchen Sie diese Stichproben manuell auf Relevanz, Kohärenz und Übereinstimmung mit Ihrem Anwendungsfall.

1. Wenn die Qualität nicht Ihren Erwartungen entspricht, müssen Sie möglicherweise Ihre Eingabedaten oder die Destillationsparameter anpassen und den Datenerweiterungsprozess erneut ausführen.

Nach Abschluss der Datenerweiterung umfasst die zweite Phase die Feinabstimmung des Studentenmodells unter Verwendung von. Weitere Informationen finden Sie unter [Überwachte Optimierung (SFT)](nova-fine-tune.md).

Im SFT-Trainingsrezept können Sie den vom vorherigen Job zurückgegebenen Datensatzpfad übergeben.

```
data_s3_path: "s3://[escrow-bucket]/[job-name]/distillation_data/training_data.jsonl"
```

Überschreiben Sie auch die empfohlene Trainingskonfiguration, die im vorherigen Schritt generiert wurde.

**Einschränkungen**
+ Unterstützt nur die SFT-Nova-Feinabstimmungsmethode für diese erweiterten Daten.
+ Unterstützt nicht die multimodale Destillation.
+ Unterstützt nicht benutzerdefinierte Lehrermodelle.