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.
Schrittweise Schulung 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 der SageMaker Konsole oder dem Amazon SageMaker Python SDK
Derzeit unterstützen nur drei integrierte Algorithmen inkrementelle Schulungen: Objekterkennung - MXNet, Bildklassifizierung - MXNet und Semantischer Segmentierungsalgorithm.
Themen
Durchführen des inkrementellen Trainings (Konsole)
Für diesen Vorgang ist Folgendes erforderlich:
-
Die Amazon Simple Storage Service (Amazon S3) -Bucket-URI, in der Sie die Trainingsdaten gespeichert haben.
-
Die S3-Bucket-URI, in der Sie die Ausgabe des Jobs speichern möchten.
-
Der Amazon Elastic Container Registry-Pfad, 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 aufzurufen, wählen Sie in der SageMaker Konsole Inferenz, dann 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:
Öffnen Sie die SageMaker Amazon-Konsole unter https://console.aws.amazon.com/sagemaker/
. -
Wählen Sie im Navigationsbereich Training (Schulung) und dann Training jobs (Schulungsaufträge) aus.
-
Wählen Sie Create training job (Schulungsauftrag erstellen) aus.
-
Legen Sie einen Namen für den Schulungsauftrag fest. Der Name muss in der AWS-Region und dem AWS-Konto einmalig sein. Der Name des Trainingsauftrags muss zwischen 1 und 63 Zeichen umfassen. Gültige Zeichen: a – z, A – Z, 0 – 9 und . : + = @ _ % - (Bindestrich).
-
Wählen Sie den Algorithmus, den Sie verwenden möchten. Informationen zu Algorithmen finden Sie unter Verwenden Sie SageMaker integrierte Amazon-Algorithmen oder vortrainierte Modelle.
-
(Optional) Bei Resource configuration (Ressourcenkonfiguration) können Sie entweder die Standardwerte übernehmen oder die Ressourcennutzung erhöhen, um die Berechnungszeit zu verkürzen.
-
(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.
-
Übernehmen Sie bei Instance count (Instance-Anzahl) den Standardwert 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 Datasets sollten Sie das Volume vergrößern.
-
-
Machen Sie Angaben zu den Eingabedaten für das Trainings-Dataset.
-
Bei Channel name (Kanalname) können Sie entweder die Standardeinstellung (
train
) übernehmen oder einen aussagekräftigeren Namen für das Trainings-Dataset angeben, beispielsweiseexpanded-training-dataset
. -
Wählen InputModeSie für Datei. Für das inkrementelle Training müssen Sie den Datei-Eingabemodus verwenden.
-
Wählen Sie für den S3-Datenverteilungstyp FullyReplicated. Dies bewirkt, dass jede ML-Datenverarbeitungs-Instance ein vollständiges Replikat des erweiterten Datasets beim inkrementellen Training verwendet.
-
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.
-
(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.
-
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.
-
Wenn der Datensatz als einzelne Datei gespeichert ist, wählen Sie für den S3-Datentyp S3Prefix. Wenn das Dataset in Form mehrerer Dateien in einem Ordner gespeichert ist, wählen Sie Manifest aus.
-
Bei S3 location (S3-Speicherort) geben Sie die URL zu dem Pfad an, unter dem Sie das erweiterte Dataset gespeichert haben.
-
Wählen Sie Done (Erledigt) aus.
-
-
Zum Verwenden von Modellartefakten in einem Trainingsauftrag müssen Sie einen neuen Kanal hinzufügen und die nötigen Angaben zu den Modellartefakten machen.
-
Wählen Sie bei Input data configuration (Eingabedatenkonfiguration) die Option Add channel (Kanal hinzufügen) aus.
-
Bei Channel name (Kanalname) geben Sie
model
ein, um diesen Kanal als Quelle für die Modellartefakte zu identifizieren. -
Wählen InputModeSie für Datei. Modelartefakte werden als Dateien gespeichert.
-
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.
-
Bei Compression type (Komprimierungsart) wählen Sie None (Keine) aus, da wir ein Modell für den Kanal verwenden.
-
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.
-
Bei Record wrapper (Datensatz-Wrapper) wählen Sie None (Keine) aus, da Modellartefakte nicht im RecordIO-Format gespeichert werden.
-
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.
-
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. -
Wählen Sie Done (Erledigt) aus.
-
-
Geben Sie unter Output data configuration (Ausgabedatenkonfiguration) die folgenden Informationen ein:
-
Geben Sie als S3 location (S3-Speicherort) den Pfad zu dem S3-Bucket ein, in dem Sie die Ausgabedaten speichern möchten.
-
(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.
-
-
(Optional) Fügen Sie unter Tags ein oder mehrere Tags zum Schulungsauftrag 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 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
. -
Wähle Ausbildungsjob erstellen. SageMaker 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 Schritt 5: Bereitstellen des Modells auf Amazon EC2.
Durchführen des inkrementellen Trainings (API)
Dieses Beispiel zeigt, wie SageMaker APIs verwendet werden, um ein Modell mithilfe des SageMaker Bildklassifizierungsalgorithmus und des Caltech 256-Bilddatensatzes
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 eineAWS Identity and Access Management (IAM) -Rolle, die die erforderlichen Berechtigungen gewährt 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 Trainings- und -Validierungsdatatzinhalten herunter und laden Sie sie 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 auf Amazon EC2.