Inkrementelle Schulungen bei Amazon SageMaker - Amazon SageMaker

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.

Inkrementelle Schulungen bei Amazon SageMaker

Im Laufe der Zeit könnten Sie feststellen, dass ein Modell Inferenzen generiert, die nicht mehr so gut sind wie früher. Mit der inkrementellen Schulung können Sie die Artefakte eines bestehenden Modells und ein erweitertes Dataset verwenden, um ein neues Modell zu schulen. 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 Dataset 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 Datasets.

Weitere Informationen über Trainingsaufträge finden Sie unter Trainiere ein Model mit Amazon SageMaker.

Sie können inkrementell mit dem SageMaker -Konsole oderAmazon SageMaker Python-SDK.

Wichtig

Derzeit unterstützen nur drei integrierte Algorithmen inkrementelle Schulungen: Objekterkennung, Bildklassifizierung - MXNet und Semantischer Segmentierungsalgorithm.

Durchführen des inkrementellen Trainings (Konsole)

Für diesen Vorgang ist Folgendes erforderlich:

  • Der Amazon Simple Storage Service (Amazon S3) -Bucket-URI, in dem Sie die Trainingsdaten gespeichert haben.

  • Der S3-Bucket-URI, in dem Sie die Ausgabe des Auftrags speichern möchten.

  • Der Amazon Elastic Container-Registrierungspfad, in dem der Trainingscode gespeichert ist. Weitere Informationen finden Sie unter Docker-Registrierungspfade und Beispielcode.

  • 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, finden Sie in der SageMaker Konsole, wählenInferenz, wählenModelle, und wählen Sie 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 Amazon SageMaker -Konsole unterhttps://console.aws.amazon.com/sagemaker/.

  2. Wählen Sie im Navigationsbereich Training (Schulung) und dann Training jobs (Schulungsaufträge) aus.

  3. Wählen Sie Create training job (Schulungsauftrag erstellen) aus.

  4. Legen Sie einen Namen für den Schulungsauftrag fest. Der Name muss innerhalb einer -Konsole eindeutig seinAWSRegion in einerAWS-Konto. Der Name des Trainingsauftrags muss zwischen 1 und 63 Zeichen umfassen. Gültige Zeichen: a – z, A – Z, 0 – 9 und . : + = @ _ % - (Bindestrich).

  5. Wählen Sie den Algorithmus, den Sie verwenden möchten. Informationen zu Algorithmen finden Sie unter Verwenden von Amazon SageMaker Integrierte Algorithmen oder vorab trainierte Modelle.

  6. (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.

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

    3. (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 Datasets sollten Sie das Volume vergrößern.

  7. Machen Sie Angaben zu den Eingabedaten für das Trainings-Dataset.

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

    2. FürInputMode, wählenDatei. Für das inkrementelle Training müssen Sie den Datei-Eingabemodus verwenden.

    3. FürTyp der S3-Datenverteilung, wählenFullyReplicated. Dies bewirkt, dass jede ML-Datenverarbeitungs-Instance ein vollständiges Replikat des erweiterten Datasets beim inkrementellen Training verwendet.

    4. Wenn das erweiterte Dataset nicht komprimiert ist, wählen Sie bei Compression type (Komprimierungsart) die Option None (Kein) aus. Wenn das erweiterte Dataset mit Gzip komprimiert wurde, wählen Sie Gzip aus.

    5. (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.

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

    7. FürS3-Datentyp, wenn der Datensatz als einzelne Datei gespeichert ist, wählen SieS3Prefix. Wenn das Dataset in Form mehrerer Dateien in einem Ordner gespeichert ist, wählen Sie Manifest aus.

    8. Bei S3 location (S3-Speicherort) geben Sie die URL zu dem Pfad an, unter dem Sie das erweiterte Dataset gespeichert haben.

    9. Wählen Sie Done (Erledigt) aus.

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

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

    3. FürInputMode, wählenDatei. Modelartefakte werden als Dateien gespeichert.

    4. FürTyp der S3-Datenverteilung, wählenFullyReplicated. Damit wird angegeben, dass jede ML-Datenverarbeitungs-Instance sämtliche Modellartefakte für das Training verwenden soll.

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

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

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

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

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

    10. Wählen Sie Done (Erledigt) aus.

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

    2. (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.

  10. (Optional) Fügen Sie unter Tags ein oder mehrere Tags zum Schulungsauftrag hinzu. EINTagsind Metadaten, die Sie definieren und zuweisen könnenAWS-Ressourcen. In diesem Fall können Sie Tags zur Verwaltung Ihrer Schulungsaufträ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.

  11. WählenSchulungsauftrag erstellen. SageMaker erstellt einen Schulungsauftrag 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 Schritt 5: Bereitstellen des Modells in Amazon EC2.

Durchführen des inkrementellen Trainings (API)

Dieses Beispiel veranschaulicht, wie Sie SageMaker APIs zum Trainieren eines Modells mit dem SageMaker Bildklassifizierungsalgorithmus und derCaltech 256 Bilddatensatzund trainiere dann ein neues Modell mit dem ersten. Es verwendet Amazon S3 für Eingabe- und Ausgabequellen. Weitere Informationen zur Verwendung des inkrementellen Trainings finden Sie im Beispielnotebook für inkrementelles Training.

Anmerkung

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

Holen Sie sich einAWS Identity and Access Management(IAM) -Rolle, die erforderliche Berechtigungen erteilt und Umgebungsvariablen initialisiert:

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 Trainingsabbild 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 Schulungs- 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 Validierungs-Datasets:

# 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 Schritt 5: Bereitstellen des Modells in Amazon EC2.