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

Um Metadaten zu Ihrem Dataset in einem Schulungsauftrag 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 Datasets für einen oder mehrere Channel an. Erweiterte Manifeste können nur den Pipe-Eingabemodus unterstützen. Weitere Informationen zum Pipe-Eingabemodus finden Sie im Abschnitt InputMode in Channel.

Bei der Angabe der Parameter eines Kanals geben Sie einen Pfad zu der Datei an, die als S3Uri bezeichnet wird. Amazon SageMaker interpretiert diesen URI basierend auf den angegebenen S3DataType in S3DataSource. 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 Schulungsaufträgen, die bezeichnete Daten verwenden, müssen Sie das Dataset vorbereiten, um Eingabedaten vor der Schulung mit Metadaten zu kombinieren. Wenn Ihr Schulungsdataset 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.

Während des Trainings parst SageMaker jede JSON-Zeile und sendet einige oder alle Attribute an den Trainingsalgorithmus weiter. 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 sucht, um sie als Trainingsinput 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 vor, nach oder zwischen aufgelisteten Attributen stehen.

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 Schulungsauftrag übergeben werden.

  • Die aufgeführten AttributeNames können eine Teilmenge aller Attribute in der JSON-Zeile sein. SageMaker ignoriert nicht aufgeführte 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 Schulungsauftrag 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}

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

Tipp

Um eine erweiterte Manifestdatei zu erstellen, verwenden Sie Amazon SageMaker Ground Truth und erstellen einen Beschriftungsauftrag. Weitere Informationen über die Ausgabe eines Beschriftungsauftrags finden Sie unter Ausgabedaten.

Streamen der Daten einer erweiterten Manifestdatei

Das erweiterte Manifestformat ermöglicht es Ihnen, Schulungen 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 Schulungsauftrags gespeichert werden soll.

So verwenden Sie eine erweiterte Manifestdatei in einem Schulungsauftrag (Konsole)
  1. Öffnen Sie die Amazon SageMaker-Konsole unter https://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 AWS-Region und 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 SageMaker von integrierten Amazon-Algorithmen oder vortrainierten Modellen. 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 Datasets sollten Sie das Volume vergrößern.

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

    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. Als InputMode (Eingabemodus) wählen Sie Pipe.

    3. Für S3 data distribution type (S3-Datenverteilungstyp) wählen Sie FullyReplicated (Vollständig repliziert). Bei inkrementellen Schulungen führt eine vollständige Replikation dazu, dass jede ML-Compute-Instance eine vollständige Kopie des erweiterten Datasets 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 das in der erweiterten Manifestdatei angegebene Dataset im RecordIO-Format gespeichert wurde. Wenn Ihr Dataset nicht im RecordIO-Format gespeichert ist, wählen Sie None (Kein).

    7. Wählen Sie für S3 data type (S3-Datentyp) die Option AugmentedManifestFile (Erweiterte Manifestdatei) aus.

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

    9. Geben Sie unter AugmentedManifestFile attribute names (Attributnamen für die erweiterte Manifestdatei) 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 Done (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 AWS Key Management Service (AWS KMS)-Verschlüsselungsschlüssel zum Verschlüsseln der Ausgabedaten im Ruhezustand verwenden. 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 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. Beispielsweise könnten Sie ein Tag mit Project als Schlüssel und einem Wert erstellen, der sich auf ein Projekt bezieht, das mit dem Schulungsauftrag zusammenhängt, z. B. Home value forecasts.

  10. Wählen Sie Create training job (Schulungsauftrag erstellen) aus. SageMaker erstellt den Trainingsjob und führt ihn aus.

Nach Beendigung des Trainingsauftrags speichert SageMaker die Modellartefakte in dem Bucket, dessen Pfad Sie im Konfigurationsfeld Ausgabedaten für S3-Ausgabepfad angegeben haben. Informationen zum Bereitstellen des Modells für Prognosen finden Sie unter Schritt 5: Bereitstellen des Amazon-EC2-Modells.

Verwenden einer erweiterten Manifestdatei (API)

Im Folgenden wird gezeigt, wie Sie ein Modell mit einer erweiterten Manifestdatei unter Verwendung der SageMaker-High-Level-Python-Bibliothek trainieren:

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)

Nach Beendigung des Trainingsauftrags speichert SageMaker die Modellartefakte in dem Bucket, dessen Pfad Sie im Konfigurationsfeld Ausgabedaten für S3-Ausgabepfad angegeben haben. Informationen zum Bereitstellen des Modells für Prognosen finden Sie unter Schritt 5: Bereitstellen des Amazon-EC2-Modells.