Bereitstellen von Datensatz-Metadaten für Trainingsaufträge mit einer erweiterten Manifestdatei - 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.

Bereitstellen von Datensatz-Metadaten für Trainingsaufträge mit einer erweiterten Manifestdatei

Um Metadaten zu Ihrem Datensatz in einem Trainingsauftrag hinzuzufügen, verwenden Sie eine erweiterte Manifestdatei. Wenn Sie eine erweiterte Manifestdatei verwenden, muss Ihr Datensatz im Amazon Simple Storage Service (Amazon S3) gespeichert sein, und Sie müssen Ihren Trainingsauftrag so konfigurieren, dass er den dort gespeicherten Datensatz verwendet. Sie geben den Speicherort und das Format dieses Datensatzes für einen oder mehrere Channel an. Erweiterte Manifeste können nur den Pipe-Eingabemodus unterstützen. Weitere Informationen Channelzum Pipe-Eingabemodus finden Sie InputModeim Abschnitt unter.

Bei der Angabe der Parameter eines Kanals geben Sie einen Pfad zu der Datei an, die als S3Uri bezeichnet wird. Amazon SageMaker interpretiert diese URI auf der Grundlage der S3DataType in S3DataSourceangegebenen. Die Option AugmentedManifestFile definiert ein Manifestformat, das Metadaten mit den Eingabedaten enthält. Die Verwendung einer erweiterten Manifestdatei ist eine Alternative zur Vorverarbeitung bei bezeichneten Daten. Bei Trainingsaufträgen, die bezeichnete Daten verwenden, müssen Sie den Datensatz vorbereiten, um Eingabedaten vor dem Training mit Metadaten zu kombinieren. Wenn Ihr Trainingsdatensatz sehr groß ist, kann eine Vorverarbeitung zeitaufwendig und kostspielig sein.

Format der erweiterten Manifestdatei

Eine erweiterte Manifestdatei muss im JSON Lines-Format vorliegen. Im JSON Lines-Format stellt jede Zeile in der Datei ein vollständiges JSON-Objekt dar, gefolgt von einem Zeilenumbruch.

SageMaker Analysiert während des Trainings jede JSON-Zeile und sendet einige oder alle ihrer Attribute an den Trainingsalgorhythmus. Mithilfe des Parameters AttributeNames der CreateTrainingJob-API legen Sie fest, welche Attributinhalte übergeben werden sollen und in welcher Reihenfolge. Der AttributeNames Parameter ist eine geordnete Liste von Attributnamen, nach denen SageMaker im JSON-Objekt gesucht wird, um sie als Trainingseingabe zu verwenden.

Wenn Sie zum Beispiel ["line", "book"] als AttributeNames aufführen, müssen die Eingabedaten die Attributnamen line und book in der angegebenen Reihenfolge enthalten. In diesem Beispiel gilt der folgende Inhalt der erweiterten Manifestdatei:

{"author": "Herman Melville", "line": "Call me Ishmael", "book": "Moby Dick"} {"line": "It was love at first sight.", "author": "Joseph Heller", "book": "Catch-22"}

SageMaker ignoriert nicht aufgelistete Attributnamen, auch wenn sie den aufgelisteten Attributen vorangehen, ihnen folgen oder dazwischen liegen.

Bei der Verwendung von erweiterten Manifestdateien gelten die folgenden Richtlinien:

  • Die Reihenfolge der aufgeführten Attribute im Parameter AttributeNames bestimmt die Reihenfolge der Attribute, die an den Algorithmus im Trainingsauftrag übergeben werden.

  • Bei den aufgelisteten Attributen AttributeNames kann es sich um eine Teilmenge aller Attribute in der JSON-Zeile handeln. SageMaker ignoriert nicht aufgelistete Attribute in der Datei.

  • Sie können jeden beliebigen Datentyp, der vom JSON-Format unterstützt wird, in AttributeNames angeben, darunter Text, numerische Daten, Daten-Arrays oder Objekte.

  • Um eine S3-URI als Attributnamen hinzuzufügen, hängen Sie das Suffix -ref an.

Wenn ein Attributname das Suffix -ref enthält, muss der Wert des Attributs eine S3-URI für die Datendatei sein, die dem Trainingsauftrag zur Verfügung steht. Wenn beispielsweise AttributeNames enthält["image-ref", "is-a-cat"], zeigt das folgende Beispiel eine gültige erweiterte Manifestdatei:

{"image-ref": "s3://mybucket/sample01/image1.jpg", "is-a-cat": 1} {"image-ref": "s3://mybucket/sample02/image2.jpg", "is-a-cat": 0}

SageMaker Ruft im Fall der ersten JSON-Zeile dieser Manifestdatei die image1.jpg Datei von s3://mybucket/sample01/ und die Zeichenkettendarstellung des is-a-cat Attributs "1" für die Bildklassifizierung ab.

Tipp

Verwenden Sie Amazon SageMaker Ground Truth und erstellen Sie einen Labeling-Job, um eine erweiterte Manifestdatei zu erstellen. Weitere Informationen über die Ausgabe eines Beschriftungsauftrags finden Sie unter Ausgabedaten.

Streamen der Daten einer erweiterten Manifestdatei

Das erweiterte Manifestformat ermöglicht es Ihnen, Trainings im Pipe-Modus mit Dateien durchzuführen, ohne RecordIO-Dateien erstellen zu müssen. Sie müssen sowohl den train- als auch den und validation-Kanal als Werte für den InputDataConfig-Parameter der CreateTrainingJob-Anforderung angeben. Erweiterte Manifestdateien werden nur für Kanäle unterstützt, die den Pipe-Eingabemodus nutzen. Für jeden Kanal werden die Daten aus der erweiterten Manifestdatei extrahiert und (in derselben Reihenfolge) über die Named Pipe des Kanals an den Algorithmus gestreamt. Im Pipe-Modus wird die FIFO-Methode (first in first out) angewandt. Datensätze werden also in der Reihenfolge verarbeitet, in der sie die Warteschlange erreichen. Informationen zum Pipe-Eingabemodus finden Sie unter Input Mode.

Attributnamen mit dem Suffix "-ref" verweisen auf vorformatierte binäre Daten. In einigen Fällen weiß der Algorithmus, wie die Daten geparst werden müssen. In anderen Fällen müssen Sie die Daten möglicherweise umschließen, sodass Datensätze für den Algorithmus voneinander getrennt werden. Wenn der Algorithmus mit RecordIO-formatierten Daten kompatibel ist, löst die Angabe von RecordIO für RecordWrapperType dieses Problem. Wenn der Algorithmus nicht mit dem RecordIO-Format kompatibel ist, geben Sie None für RecordWrapperType an und stellen Sie sicher, dass Ihre Daten für Ihren Algorithmus korrekt geparst werden.

Wenn Sie im Beispiel ["image-ref", "is-a-cat"] einen RecordIO-Wrapper verwenden, wird der folgende Datenstream an die Warteschlange gesendet:

recordio_formatted(s3://mybucket/foo/image1.jpg)recordio_formatted("1")recordio_formatted(s3://mybucket/bar/image2.jpg)recordio_formatted("0")

Bilder, die nicht im RecordIO-Format verpackt sind, werden mit dem entsprechenden is-a-cat-Attributwert als ein Datensatz gestreamt. Dies kann Probleme verursachen, da der Algorithmus die Bilder und Attribute möglicherweise nicht korrekt voneinander trennt. Weitere Informationen zur Verwendung von Augmented Manifest-Dateien für die Bildklassifizierung finden Sie unter Train with Augmented Manifest Image Format.

Die Größenbeschränkungen von EBS-Volumes gelten generell nicht für erweiterte Manifestdateien und den Pipe-Modus. Dazu gehören auch Einstellungen, die ansonsten innerhalb der EBS-Volumengröße liegen müssen, wie z. B. S3DataDistributionType . Weitere Informationen zum Pipe-Modus und dessen Verwendung finden Sie unter Verwenden Ihres eigenen Trainingsalgorithmus – Eingabedatenkonfiguration.

Verwenden einer erweiterten Manifestdatei (Konsole)

Für diesen Vorgang ist Folgendes erforderlich:

  • Die URL des S3-Buckets, in dem die erweiterte Manifestdatei gespeichert ist.

  • Speichern der Daten, die in der erweiterten Manifestdatei aufgeführt sind, in einem S3-Bucket.

  • Die URL des S3-Buckets, in dem die Ausgabe des Trainingsauftrags gespeichert werden soll.

So verwenden Sie eine erweiterte Manifestdatei in einem Trainingsauftrag (Konsole)
  1. Öffnen Sie die SageMaker Amazon-Konsole unter https://console.aws.amazon.com/sagemaker/.

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

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

  4. Legen Sie einen Namen für den Trainingsauftrag fest. Der Name muss innerhalb einer AWS Region in einem AWS Konto eindeutig sein. Er kann 1 bis 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. Weitere Informationen zu unterstützten integrierten Algorithmen finden Sie unter Verwenden Sie die von Amazon SageMaker integrierten Algorithmen oder vortrainierten Modelle. Wenn Sie einen benutzerdefinierten Algorithmus verwenden möchten, stellen Sie sicher, dass er mit dem Pipe-Modus kompatibel ist.

  6. (Optional) Für Resource configuration (Ressourcenkonfiguration) können Sie entweder die Standardwerte übernehmen oder, um die Rechenzeit zu reduzieren, den Ressourcenverbrauch erhöhen.

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

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

    1. Für Channel name (Kanalname) können Sie entweder den Standardwert (train) übernehmen oder einen aussagekräftigeren Namen wählen, z. B. training-augmented-manifest-file.

    2. Wählen Sie für InputModePipe.

    3. Wählen Sie für den Datenverteilungstyp S3 FullyReplicated. Bei inkrementellen Trainings führt eine vollständige Replikation dazu, dass jede ML-Compute-Instance eine vollständige Kopie des erweiterten Datensatzes nutzt. Wählen Sie für neuronale Algorithmen wie Algorithmus für neuronale Themenmodellierung (NTM) die Option ShardedByS3Key.

    4. Wenn die Daten in der erweiterten Manifestdatei unkomprimiert sind, legen Sie den Compression type (Komprimierungstyp) auf None (Kein) fest. Wenn die Daten mithilfe von gzip komprimiert wurden, legen Sie die Option auf Gzip fest.

    5. (Optional) Geben Sie unter Content type (Inhaltstyp) den entsprechenden MIME-Typ an. Der Inhaltstyp ist der MIME-Typ (Multipurpose Internet Mail Extension) der Daten.

    6. Wählen Sie für Record wrapper (Datensatz-Wrapper) das Format RecordIO aus, wenn der in der erweiterten Manifestdatei angegebene Datensatz im RecordIO-Format gespeichert wurde. Wenn Ihr Datensatz nicht im RecordIO-Format gespeichert ist, wählen Sie None (Kein).

    7. Wählen Sie für den S3-Datentyp AugmentedManifestFile.

    8. Geben Sie als S3 location (S3-Speicherort) den Pfad zu dem Bucket ein, in dem die erweiterte Manifestdatei gespeichert ist.

    9. Geben Sie für AugmentedManifestFile Attributnamen den Namen eines Attributs an, das Sie verwenden möchten. Der Attributname muss innerhalb der erweiterten Manifestdatei vorhanden sein. Dabei wird zwischen Groß- und Kleinschreibung unterschieden.

    10. (Optional) Wenn Sie weitere Attributnamen hinzufügen möchten, wählen Sie Add row (Zeile hinzufügen) und geben Sie einen weiteren Attributnamen für jedes Attribut an.

    11. (Optional) Wenn Sie die Reihenfolge der Attributnamen ändern möchten, verwenden Sie die Schaltflächen nach oben oder unten neben den Namen. Bei Verwendung einer erweiterten Manifestdatei spielt die Reihenfolge der angegebenen Attributnamen eine Rolle.

    12. Wählen Sie Erledigt aus.

  8. 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) Sie können Ihren Verschlüsselungsschlüssel AWS Key Management Service (AWS KMS) verwenden, um die Ausgabedaten im Ruhezustand zu verschlüsseln. Geben Sie unter Encryption key (Verschlüsselungsschlüssel) die Schlüssel-ID oder die entsprechende Amazon-Ressourcennummer (ARN) an. Weitere Informationen finden Sie unter KMS-verwaltete Verschlüsselungsschlüssel.

  9. (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. Beispielsweise könnten Sie ein Tag mit Project als Schlüssel und einem Wert erstellen, der sich auf ein Projekt bezieht, das mit dem Trainingsauftrag zusammenhängt, z. B. Home value forecasts.

  10. Wählen Sie Schulungsjob erstellen. SageMaker erstellt den Trainingsjob und führt ihn aus.

SageMaker Speichert nach Abschluss des Trainingsjobs die Modellartefakte in dem Bucket, dessen Pfad Sie für den S3-Ausgabepfad im Feld Konfiguration der Ausgabedaten angegeben haben. Informationen zum Bereitstellen des Modells für Prognosen finden Sie unter Schritt 5: Stellen Sie das Modell auf Amazon bereit EC2.

Verwenden einer erweiterten Manifestdatei (API)

Im Folgenden wird gezeigt, wie ein Modell mit einer erweiterten Manifestdatei mithilfe der Python-Bibliothek SageMaker auf hoher Ebene trainiert wird:

import sagemaker # Create a model object set to using "Pipe" mode. model = sagemaker.estimator.Estimator( training_image, role, instance_count=1, instance_type='ml.p3.2xlarge', volume_size = 50, max_run = 360000, input_mode = 'Pipe', output_path=s3_output_location, sagemaker_session=session ) # Create a train data channel with S3_data_type as 'AugmentedManifestFile' and attribute names. train_data = sagemaker.inputs.TrainingInput( your_augmented_manifest_file, distribution='FullyReplicated', content_type='application/x-recordio', s3_data_type='AugmentedManifestFile', attribute_names=['source-ref', 'annotations'], input_mode='Pipe', record_wrapping='RecordIO' ) data_channels = {'train': train_data} # Train a model. model.fit(inputs=data_channels, logs=True)

SageMaker Speichert nach Abschluss des Trainingsjobs die Modellartefakte in dem Bucket, dessen Pfad Sie für den S3-Ausgabepfad im Feld Ausgabedatenkonfiguration angegeben haben. Informationen zum Bereitstellen des Modells für Prognosen finden Sie unter Schritt 5: Stellen Sie das Modell auf Amazon bereit EC2.