

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.

# Verwenden Sie inkrementelles Training in Amazon AI SageMaker
<a name="incremental-training"></a>

Im Laufe der Zeit könnten Sie feststellen, dass ein Modell Inferenzen generiert, die nicht mehr so gut sind wie früher. Mit dem inkrementellen Training können Sie die Artefakte eines bestehenden Modells und einen erweiterten Datensatz verwenden, um ein neues Modell zu trainieren. Durch das inkrementelle Training sparen Sie sowohl Zeit als auch Ressourcen.

Mit dem inkrementellen Training haben Sie folgende Möglichkeiten:
+ Sie können ein neues Modell mit einem erweiterten Datensatz trainieren, das ein grundlegendes Muster enthält, welches im vorherigen Training nicht berücksichtigt wurde, was eine schlechte Leistung des Modells zur Folge hatte.
+ Sie können die Modellartefakte oder einen Teil der Modellartefakte eines beliebten, öffentlich zugänglichen Modells in einem Trainingsauftrag verwenden. Sie müssen beim Trainieren eines neuen Modells also nicht ganz von vorne beginnen.
+ Sie können ein angehaltenes Training wiederaufnehmen.
+ Sie können mehrere Varianten eines Modells trainieren, entweder mit unterschiedlichen Hyperparametern oder unter Verwendung verschiedener Datensätze.

Weitere Informationen über Trainingsaufträge finden Sie unter [Trainiere ein Modell mit Amazon SageMaker](how-it-works-training.md).

Sie können inkrementell mit der SageMaker KI-Konsole oder dem [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) trainieren.

**Wichtig**  
Derzeit unterstützen nur drei integrierte Algorithmen inkrementelle Trainings: [Objekterkennung - MXNet](object-detection.md), [Bildklassifizierung - MXNet](image-classification.md) und [Semantischer Segmentierungsalgorithm](semantic-segmentation.md).

**Topics**
+ [Durchführen des inkrementellen Trainings (Konsole)](#incremental-training-console)
+ [Durchführen des inkrementellen Trainings (API)](#incremental-training-api)

## Durchführen des inkrementellen Trainings (Konsole)
<a name="incremental-training-console"></a>

Für diesen Vorgang ist Folgendes erforderlich:
+ Löschen Sie den Amazon Simple Storage Service (Amazon S3)-Bucket, in dem die Daten gespeichert wurden.
+ Die URL des S3-Buckets, in dem die Ausgabe des Trainingsauftrags gespeichert werden soll. 
+ Der Amazon-Elastic-Container-Registry-Pfad, in dem der Trainingscode gespeichert ist. Weitere Informationen finden Sie unter [Docker-Registry-Pfade und Beispielcode](https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths).
+ Die URL des S3-Buckets, in dem Sie die Modellartefakte gespeichert haben, die Sie für das inkrementelle Training verwenden möchten. Die URL für die Modellartefakte finden Sie auf der Detailseite des Trainingsauftrags, der für die Erstellung des Modells verwendet wurde. Um die Detailseite zu finden, wählen Sie in der SageMaker AI-Konsole **Inferenz**, **Modelle** und dann das Modell aus.

Um einen angehaltenen Trainingsauftrag neu zu starten, verwenden Sie die URL für die Modellartefakte auf der Detailseite genau so, wie Sie es bei einem Modell oder einem abgeschlossenen Trainingsauftrag tun würden.

**Führen Sie das inkrementelle Training mit der Konsole wie folgt aus:**

1. Öffnen Sie die Amazon SageMaker AI-Konsole unter [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Wählen Sie im Navigationsbereich **Training (Training)** und dann **Training jobs (Trainingsaufträge)** aus. 

1. Wählen Sie **Create training job (Trainingsauftrag erstellen)** aus.

1. Legen Sie einen Namen für den Trainingsauftrag fest. Der Name muss innerhalb einer AWS Region in einem AWS Konto eindeutig sein. Der Name des Trainingsauftrags muss zwischen 1 und 63 Zeichen umfassen. Gültige Zeichen: a–z, A–Z, 0–9 und . : \$1 = @ \$1 % – (Bindestrich).

1. Wählen Sie den Algorithmus, den Sie verwenden möchten. Informationen zu Algorithmen finden Sie unter [Integrierte Algorithmen und vortrainierte Modelle in Amazon SageMaker](algos.md). 

1. (Optional) Bei **Resource configuration (Ressourcenkonfiguration)** können Sie entweder die Standardwerte übernehmen oder die Ressourcennutzung erhöhen, um die Berechnungszeit zu verkürzen.

   1. (Optional) Wählen Sie für **Instance type (Instance-Typ)** den ML-Compute-Instance-Typ, den Sie verwenden möchten. In den meisten Fällen ist **ml.m4.xlarge** ausreichend. 

   1. Übernehmen Sie bei **Instance count (Instance-Anzahl)** den Standardwert 1.

   1. (Optional) Wählen Sie unter **Additional volume per instance (GB) (Zusätzliches Volume pro Instance (GB))** die Größe des ML-Speicher-Volumes, das Sie bereitstellen möchten. In den meisten Fällen können Sie den Standardwert 1 verwenden. Bei Verwendung eines großen Datensatzes sollten Sie das Volume vergrößern.

1. Machen Sie Angaben zu den Eingabedaten für den Trainingsdatensatz.

   1. Bei **Channel name (Kanalname)** können Sie entweder die Standardeinstellung (**train**) übernehmen oder einen aussagekräftigeren Namen für den Trainingsdatensatz angeben, beispielsweise **expanded-training-dataset**.

   1. Wählen Sie für **InputMode**„**Datei**“. Für das inkrementelle Training müssen Sie den Datei-Eingabemodus verwenden.

   1. Wählen Sie für den **Datenverteilungstyp S3 **FullyReplicated****. Dies bewirkt, dass jede ML-Datenverarbeitungs-Instance ein vollständiges Replikat des erweiterten Datensatzes beim inkrementellen Training verwendet.

   1. Wenn der erweiterte Datensatz nicht komprimiert ist, wählen Sie bei **Compression type (Komprimierungsart)** die Option **None (Kein)** aus. Wenn der erweiterte Datensatz mit Gzip komprimiert wurde, wählen Sie **Gzip** aus.

   1. (Optional) Wenn Sie den Datei-Eingabemodus verwenden, machen Sie keine Angabe bei **Content type (Inhaltstyp)**. Bei Verwendung des Pipe-Eingabemodus geben Sie den entsprechenden MIME-Typ an. Der *Inhaltstyp* ist der MIME-Typ (Multipurpose Internet Mail Extension) der Daten.

   1. Bei **Record wrapper (Datensatz-Wrapper)** wählen Sie **RecordIO** aus, wenn der Datensatz im RecordIO-Format gespeichert ist. Wenn Ihr Datensatz nicht im RecordIO-Format gespeichert ist, wählen Sie **None (Keine)** aus.

   1. Bei **S3 data type** wählen Sie **S3Prefix** aus, wenn der Datensatz als einzelne Datei gespeichert ist. Wenn der Datensatz in Form mehrerer Dateien in einem Ordner gespeichert ist, wählen Sie **Manifest** aus.

   1. Bei **S3 location (S3-Speicherort)** geben Sie die URL zu dem Pfad an, unter dem Sie den erweiterten Datensatz gespeichert haben.

   1. Wählen Sie **Fertig** aus.

1. Zum Verwenden von Modellartefakten in einem Trainingsauftrag müssen Sie einen neuen Kanal hinzufügen und die nötigen Angaben zu den Modellartefakten machen.

   1. Wählen Sie bei **Input data configuration (Eingabedatenkonfiguration)** die Option **Add channel (Kanal hinzufügen)** aus.

   1. Bei **Channel name (Kanalname)** geben Sie **model** ein, um diesen Kanal als Quelle für die Modellartefakte zu identifizieren.

   1. Wählen Sie für **InputMode****Datei** aus. Modelartefakte werden als Dateien gespeichert.

   1. Wählen Sie für den **Datenverteilungstyp S3 **FullyReplicated****. Damit wird angegeben, dass jede ML-Datenverarbeitungs-Instance sämtliche Modellartefakte für das Training verwenden soll. 

   1. Bei **Compression type (Komprimierungsart)** wählen Sie **None (Keine)** aus, da wir ein Modell für den Kanal verwenden.

   1. Bei **Content type (Inhaltstyp)** machen Sie keine Angabe. Der Inhaltstyp ist der MIME-Typ (Multipurpose Internet Mail Extension) der Daten. Für Modellartefakte wird hier keine Angabe gemacht.

   1. Bei **Record wrapper (Datensatz-Wrapper)** wählen Sie **None (Keine)** aus, da Modellartefakte nicht im RecordIO-Format gespeichert werden.

   1. Bei **S3 data type (S3-Datentyp)** wählen Sie **S3Prefix** aus, wenn Sie einen integrierten Algorithmus oder einen Algorithmus verwenden, der das Modell als einzelne Datei speichert. Wenn Sie einen Algorithmus verwenden, der das Modell in Form mehrerer Dateien speichert, wählen Sie **Manifest** aus.

   1. Bei **S3 location (S3-Speicherort)** geben Sie die URL zu dem Pfad an, unter dem Sie die Modellartefakte gespeichert haben. In der Regel wird das Modell mit dem Namen `model.tar.gz` gespeichert. Um die URL für die Modellartefakte zu finden, wählen Sie im Navigationsbereich **Inference (Inferenz)** und dann **Models (Modelle)** aus. Wählen Sie in der Liste der Modelle ein Modell aus, um dessen Detailseite anzuzeigen. Die URL für die Modellartefakte ist unter **Primary container (Primärer Container)** angegeben.

   1. Wählen Sie **Fertig** aus.

1. Geben Sie unter **Output data configuration (Ausgabedatenkonfiguration)** die folgenden Informationen ein:

   1. Geben Sie als **S3 location (S3-Speicherort)** den Pfad zu dem S3-Bucket ein, in dem Sie die Ausgabedaten speichern möchten.

   1. (Optional) Als **Encryption key (Verschlüsselungsschlüssel)** können Sie Ihren AWS Key Management Service (AWS KMS)-Verschlüsselungsschlüssel hinzufügen, um die Ausgabedaten im Ruhezustand zu verschlüsseln. Geben Sie die Schlüssel-ID oder die entsprechende Amazon-Ressourcennummer (ARN) an. Weitere Informationen finden Sie unter [KMS-verwaltete Verschlüsselungsschlüssel](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).

1. (Optional) Fügen Sie unter **Tags** ein oder mehrere Tags zum Trainingsauftrag hinzu. Ein *Tag* enthält Metadaten, die Sie definieren und AWS -Ressourcen zuweisen können. In diesem Fall können Sie Tags zur Verwaltung Ihrer Trainingsaufträge verwenden. Ein Tag besteht aus einem Schlüssel und einem Wert, die Sie definieren. Sie können beispielsweise ein Tag mit **Project** als Schlüssel und einem Wert erstellen, der auf ein mit dem Trainingsauftrag verbundenes Projekt verweist, wie z. B. **Home value forecasts**.

1. Wählen Sie **Schulungsjob erstellen**. SageMaker KI erstellt einen Trainingsjob und führt ihn aus.

Nachdem der Trainingsauftrag abgeschlossen ist, werden die neu trainierten Modellartefakte unter dem **S3 output path (S3-Ausgabepfad)** gespeichert, den Sie im Feld **Output data configuration (Ausgabedatenkonfiguration)** angegeben haben. Informationen zum Bereitstellen des Modells für Prognosen finden Sie unter [Bereitstellen des Modells auf Amazon EC2](ex1-model-deployment.md).

## Durchführen des inkrementellen Trainings (API)
<a name="incremental-training-api"></a>

Dieses Beispiel zeigt, wie SageMaker KI verwendet wird APIs , um ein Modell mithilfe des SageMaker KI-Bildklassifizierungsalgorithmus und des [Caltech 256-Bilddatensatzes](https://data.caltech.edu/records/nyy15-4j048) zu trainieren und dann ein neues Modell mit dem ersten zu trainieren. Es verwendet Amazon S3 als Eingabe- und Ausgabequellen. Weitere Informationen zur Verwendung des inkrementellen Trainings finden Sie im [Beispiel-Notebook für inkrementelles Training](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/imageclassification_caltech/Image-classification-incremental-training-highlevel.html).

**Anmerkung**  
In diesem Beispiel haben wir die ursprünglichen Datensätze im inkrementellen Training verwendet. Sie können aber auch andere Datensätze verwenden, z. B. welche mit neu hinzugefügten Beispielen. Laden Sie die neuen Datensätze in S3 hoch und ändern Sie die `data_channels`-Variable, die für das Trainieren des neuen Modells verwendet wird.

Holen Sie sich eine AWS Identity and Access Management (IAM-) Rolle, die die erforderlichen Berechtigungen gewährt, und initialisieren Sie Umgebungsvariablen:

```
import sagemaker
from sagemaker import get_execution_role

role = get_execution_role()
print(role)

sess = sagemaker.Session()

bucket=sess.default_bucket()
print(bucket)
prefix = 'ic-incr-training'
```

Rufen Sie das Trainings-Image für den Bildklassifizierungsalgorithmus ab:

```
from sagemaker.amazon.amazon_estimator import get_image_uri

training_image = get_image_uri(sess.boto_region_name, 'image-classification', repo_version="latest")
#Display the training image
print (training_image)
```

Laden Sie die Trainings- und -Validierungsdatensätze herunter und laden Sie sie anschließend in Amazon Simple Storage Service (Amazon S3) hoch:

```
import os
import urllib.request
import boto3

# Define a download function
def download(url):
    filename = url.split("/")[-1]
    if not os.path.exists(filename):
        urllib.request.urlretrieve(url, filename)

# Download the caltech-256 training and validation datasets
download('http://data.mxnet.io/data/caltech-256/caltech-256-60-train.rec')
download('http://data.mxnet.io/data/caltech-256/caltech-256-60-val.rec')

# Create four channels: train, validation, train_lst, and validation_lst
s3train = 's3://{}/{}/train/'.format(bucket, prefix)
s3validation = 's3://{}/{}/validation/'.format(bucket, prefix)

# Upload the first files to the train and validation channels
!aws s3 cp caltech-256-60-train.rec $s3train --quiet
!aws s3 cp caltech-256-60-val.rec $s3validation --quiet
```

Definieren Sie die Hyperparameter für das Training:

```
# Define hyperparameters for the estimator
hyperparams = { "num_layers": "18",
                "resize": "32",
                "num_training_samples": "50000",
                "num_classes": "10",
                "image_shape": "3,28,28",
                "mini_batch_size": "128",
                "epochs": "3",
                "learning_rate": "0.1",
                "lr_scheduler_step": "2,3",
                "lr_scheduler_factor": "0.1",
                "augmentation_type": "crop_color",
                "optimizer": "sgd",
                "momentum": "0.9",
                "weight_decay": "0.0001",
                "beta_1": "0.9",
                "beta_2": "0.999",
                "gamma": "0.9",
                "eps": "1e-8",
                "top_k": "5",
                "checkpoint_frequency": "1",
                "use_pretrained_model": "0",
                "model_prefix": "" }
```

Erstellen Sie ein Schätzobjekt und trainieren Sie das erste Modell mithilfe der Trainings- und Validierungsdatensätze:

```
# Fit the base estimator
s3_output_location = 's3://{}/{}/output'.format(bucket, prefix)
ic = sagemaker.estimator.Estimator(training_image,
                                   role,
                                   instance_count=1,
                                   instance_type='ml.p2.xlarge',
                                   volume_size=50,
                                   max_run=360000,
                                   input_mode='File',
                                   output_path=s3_output_location,
                                   sagemaker_session=sess,
                                   hyperparameters=hyperparams)

train_data = sagemaker.inputs.TrainingInput(s3train, distribution='FullyReplicated',
                                        content_type='application/x-recordio', s3_data_type='S3Prefix')
validation_data = sagemaker.inputs.TrainingInput(s3validation, distribution='FullyReplicated',
                                             content_type='application/x-recordio', s3_data_type='S3Prefix')

data_channels = {'train': train_data, 'validation': validation_data}

ic.fit(inputs=data_channels, logs=True)
```

Um das Modell für das inkrementelle Training eines anderen Modells zu verwenden, erstellen Sie ein neues Schätzobjekt und verwenden Sie die Modellartefakte (in diesem Beispiel `ic.model_data`) als `model_uri`-Eingabeargument:

```
# Given the base estimator, create a new one for incremental training
incr_ic = sagemaker.estimator.Estimator(training_image,
                                        role,
                                        instance_count=1,
                                        instance_type='ml.p2.xlarge',
                                        volume_size=50,
                                        max_run=360000,
                                        input_mode='File',
                                        output_path=s3_output_location,
                                        sagemaker_session=sess,
                                        hyperparameters=hyperparams,
                                        model_uri=ic.model_data) # This parameter will ingest the previous job's model as a new channel
incr_ic.fit(inputs=data_channels, logs=True)
```

Nachdem der Trainingsauftrag abgeschlossen ist, werden die neu trainierten Modellartefakte unter dem `S3 output path` gespeichert, den Sie unter `Output_path` angegeben haben. Informationen zum Bereitstellen des Modells für Prognosen finden Sie unter [Bereitstellen des Modells auf Amazon EC2](ex1-model-deployment.md).