

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 schrittweise mithilfe der SageMaker AI-Konsole oder des Amazon Python SDK trainieren. [ SageMaker ](https://sagemaker.readthedocs.io/en/stable)

**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.: \+ = @ \_% - (Bindestrich).

1. Wählen Sie den Algorithmus, den Sie verwenden möchten. Informationen zu Algorithmen finden Sie unter [Built-in 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 Datei ** InputMode ** aus. ** ** Für das inkrementelle Training müssen Sie den Datei-Eingabemodus verwenden.

   1. Wählen Sie für den ** S3-Datenverteilungstyp ** ** 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 ** S3-Datenverteilungstyp ** ** 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-Managed 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 Ausbildungsjob ** erstellen**. SageMaker AI 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-APIs verwendet werden, 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 erteilt, und initialisieren Sie Umgebungsvariablen:

```
import sagemaker
from sagemaker.core.helper.session_helper import Session, get_execution_role
from sagemaker.train import ModelTrainer
from sagemaker.train.configs import Compute

role = get_execution_role()
print(role)

sess = 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:

```
from sagemaker.train.configs import InputData, StoppingCondition
from sagemaker.core.shapes import OutputDataConfig, Channel, DataSource, S3DataSource

# Train the base ModelTrainer
s3_output_location = 's3://{}/{}/output'.format(bucket, prefix)
ic = ModelTrainer(training_image=training_image,
                                   role=role,
                                   compute=Compute(
                                       instance_count=1,
                                       instance_type='ml.p2.xlarge',
                                       volume_size_in_gb=50,
                                   ),
                                   stopping_condition=StoppingCondition(max_runtime_in_seconds=360000),
                                   training_input_mode='File',
                                   output_data_config=OutputDataConfig(s3_output_path=s3_output_location),
                                   hyperparameters=hyperparams)

train_data = Channel(
    channel_name="train",
    data_source=DataSource(
        s3_data_source=S3DataSource(
            s3_data_type='S3Prefix',
            s3_uri=s3train,
            s3_data_distribution_type='FullyReplicated',
        )
    ),
    content_type='application/x-recordio',
)
validation_data = Channel(
    channel_name="validation",
    data_source=DataSource(
        s3_data_source=S3DataSource(
            s3_data_type='S3Prefix',
            s3_uri=s3validation,
            s3_data_distribution_type='FullyReplicated',
        )
    ),
    content_type='application/x-recordio',
)

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

ic.train(input_data_config=[train_data, validation_data])
```

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 ModelTrainer, create a new one for incremental training
incr_ic = ModelTrainer(training_image=training_image,
                                        role=role,
                                        compute=Compute(
                                            instance_count=1,
                                            instance_type='ml.p2.xlarge',
                                            volume_size_in_gb=50,
                                        ),
                                        stopping_condition=StoppingCondition(max_runtime_in_seconds=360000),
                                        training_input_mode='File',
                                        output_data_config=OutputDataConfig(s3_output_path=s3_output_location),
                                        hyperparameters=hyperparams,
                                        # Pass the previous model artifacts as an input data channel
                                        input_data_config=[
                                            InputData(channel_name="model", data_source=ic.model_data),
                                        ])
incr_ic.train(input_data_config=[train_data, validation_data])
```

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).