Zugang zu Trainingsdaten - 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.

Zugang zu Trainingsdaten

Wenn Sie einen Trainingsauftrag erstellen, geben Sie den Speicherort eines Trainingsdatensatzes und einen Eingabemodus für den Zugriff auf den Datensatz an. Amazon SageMaker unterstützt für den Datenspeicherort Amazon Simple Storage Service (Amazon S3), Amazon Elastic File System (Amazon EFS) und Amazon FSx for Lustre. Die Eingabemodi bestimmen, ob Datendateien des Datensatzes in Echtzeit gestreamt werden sollen oder ob der gesamte Datensatz zu Beginn des Trainingsauftrags heruntergeladen werden soll.

Anmerkung

Ihr Eingabedatensatz muss derselbe sein AWS-Region wie Ihr Trainingsauftrag.

SageMaker Eingabemodi und AWS Cloud-Speicher

In diesem Abschnitt werden SageMaker die Eingabemodi für Amazon S3 und Dateisysteme in Amazon EFS und Amazon FSx for Lustre zusammengefasst.

  • Im Dateimodus wird dem Trainingscontainer eine Dateisystemansicht des Datensatzes präsentiert. Dies ist der Standard-Eingabemodus, wenn Sie nicht explizit eine der beiden anderen Optionen angeben. Wenn Sie den Dateimodus verwenden, lädt die Trainingsdaten vom Speicherort in ein lokales Verzeichnis im Docker-Container SageMaker herunter. Das Training beginnt, nachdem der gesamte Datensatz heruntergeladen wurde. Im Dateimodus muss die Trainingsinstanz über genügend Speicherplatz für den gesamten Datensatz verfügen. Die Downloadgeschwindigkeit im Dateimodus hängt von der Größe des Datensatzes, der durchschnittlichen Größe der Dateien und der Anzahl der Dateien ab. Sie können den Datensatz für den Dateimodus konfigurieren, indem Sie entweder ein Amazon S3-Präfix, eine Manifestdatei oder eine erweiterte Manifestdatei bereitstellen. Sie sollten ein S3-Präfix verwenden, wenn sich alle Ihre Datensatzdateien in einem gemeinsamen S3-Präfix befinden. Der Dateimodus ist mit dem SageMaker lokalen Modus kompatibel (in Sekunden interaktiv einen SageMaker Trainingscontainer starten). Für verteiltes Training können Sie den Datensatz mit der ShardedByS3Key Option auf mehrere Instances verteilen.

  • Der schnelle Dateimodus bietet Dateisystemzugriff auf eine Amazon S3 S3-Datenquelle und nutzt gleichzeitig den Leistungsvorteil des Pipe-Modus. Zu Beginn des Trainings identifiziert der schnelle Dateimodus die Datendateien, lädt sie jedoch nicht herunter. Das Training kann beginnen, ohne auf das Herunterladen des gesamten Datensatzes zu warten. Das bedeutet, dass der Trainingsstart weniger Zeit in Anspruch nimmt, wenn weniger Dateien im bereitgestellten Amazon S3-Präfix vorhanden sind.

    Im Gegensatz zum Pipe-Modus arbeitet der schnelle Dateimodus mit zufälligem Zugriff auf die Daten. Er funktioniert jedoch am besten, wenn Daten sequentiell gelesen werden. Der schnelle Dateimodus unterstützt keine erweiterten Manifestdateien.

    Der schnelle Dateimodus stellt S3-Objekte über eine POSIX-konforme Dateisystemschnittstelle bereit, als ob die Dateien auf der lokalen Festplatte Ihrer Trainingsinstanz verfügbar wären. Er streamt S3-Inhalte bei Bedarf, während Ihr Trainingsskript Daten verbraucht. Das bedeutet, dass Ihr Datensatz nicht mehr als Ganzes in den Speicherplatz der Traininginstanz passen muss, und Sie müssen nicht warten, bis der Datensatz in die Traininginstanz heruntergeladen wurde, bevor das Training beginnt. Der schnelle Dateimodus unterstützt derzeit nur S3-Präfixe (Manifest und erweitertes Manifest werden nicht unterstützt). Der schnelle Dateimodus ist mit dem SageMaker lokalen Modus kompatibel.

  • Der Pipe-Modus streamt Daten direkt von einer Amazon S3-Datenquelle. Das Streamen kann schnellere Startzeiten und einen besseren Durchsatz als der Dateimodus bieten.

    Wenn Sie die Daten direkt streamen, können Sie die Größe der von der Traininginstanz verwendeten Amazon EBS-Volumes reduzieren. Der Pipe-Modus benötigt nur so viel Speicherplatz, dass die endgültigen Modellartefakte gespeichert werden können.

    Es handelt sich um einen weiteren Streaming-Modus, der weitgehend durch den neueren und simpler-to-use schnellen Dateimodus ersetzt wird. Im Pipe-Modus werden Daten mit hoher Parallelität und hohem Durchsatz aus Amazon S3 abgerufen und in eine benannte Pipe gestreamt, die aufgrund ihres Verhaltens auch als First-In-First-Out (FIFO) -Pipe bezeichnet wird. Jede Pipe darf nur von einem einzigen Prozess gelesen werden. Eine SageMaker bestimmte Erweiterung von integriert den Pipe-Modus TensorFlow bequem in den nativen Datenlader für Streaming-Text-, TFRecords- oder RecordIO-Dateiformate. TensorFlow Der Pipe-Modus unterstützt auch verwaltetes Sharding und Shuffling von Daten.

  • Amazon S3 Express One Zone ist eine leistungsstarke, einzelne Availability Zone-Speicherklasse, die einen konsistenten Datenzugriff im einstelligen Millisekundenbereich für die latenzempfindlichsten Anwendungen, einschließlich SageMaker Modelltraining, bieten kann. Amazon S3 Express One Zone ermöglicht es Kunden, ihre Objektspeicher- und Rechenressourcen in einer einzigen AWS Availability Zone zusammenzufassen, wodurch sowohl die Rechenleistung als auch die Kosten bei erhöhter Datenverarbeitungsgeschwindigkeit optimiert werden. Um die Zugriffsgeschwindigkeit weiter zu erhöhen und Hunderttausende von Anfragen pro Sekunde zu unterstützen, werden Daten in einem neuen Bucket-Typ gespeichert, einem Amazon S3-Verzeichnis-Bucket.

    SageMaker -Modelltraining unterstützt leistungsstarke Verzeichnis-Buckets von Amazon S3 Express One Zone als Dateneingabespeicherort für den Dateimodus, den schnellen Dateimodus und den Pipe-Modus. Um Amazon S3 Express One Zone zu verwenden, geben Sie den Speicherort des Amazon S3 Express One Zone-Verzeichnis-Buckets anstelle eines Amazon S3-Buckets ein. Geben Sie dem ARN für die IAM-Rolle die erforderliche Zugriffssteuerungs- und Berechtigungsrichtlinie an. Weitere Einzelheiten finden Sie unter AmazonSageMakerFullAccesspolicy. Weitere Informationen finden Sie unter S3 Express One Zone.

  • Amazon FSx für Lustre - FSx für Lustre kann auf Hunderte von Gigabyte Durchsatz und Millionen von IOPS skaliert werden und bietet Dateiabruf mit niedriger Latenz. Wenn Sie einen Trainingsauftrag starten, SageMaker mountet das FSx-for-Lustre-Dateisystem im Dateisystem der Trainingsinstanz und startet dann Ihr Trainingsskript. Das Mounten selbst ist ein relativ schneller Vorgang, der nicht von der Größe des in FSx for Lustre gespeicherten Datensatzes abhängt.

    Um auf FSx for Lustre zuzugreifen, muss Ihr Schulungsauftrag eine Verbindung zu einer Amazon Virtual Private Cloud (VPC) herstellen, die DevOps Einrichtung und Beteiligung erfordert. Um Datenübertragungskosten zu vermeiden, verwendet das Dateisystem eine einzige Availability Zone, und Sie müssen ein VPC-Subnetz angeben, das dieser Availability Zone ID zugeordnet ist, wenn Sie einen Trainingsauftrag ausführen.

  • Amazon EFS – Um Amazon EFS als Datenquelle zu verwenden, müssen sich die Daten bereits vor dem Training in Amazon EFS befinden. SageMaker mountet das angegebene Amazon-EFS-Dateisystem an die Trainings-Instance und startet dann Ihr Trainingsskript. Ihr Trainingsauftrag muss sich mit einer VPC verbinden, um auf Amazon EFS zugreifen zu können.

    Tipp

    Weitere Informationen zur Angabe Ihrer VPC-Konfiguration für SageMaker Schätzer finden Sie unter Verwenden von Dateisystemen als Trainingseingaben in der SageMaker Python-SDK-Dokumentation.

Auswählen des Dateneingabemodus mit dem SageMaker Python-SDK

SageMaker Python SDK bietet die generische Schätzerklasse und ihre Varianten für ML-Frameworks zum Starten von Schulungsaufträgen. Sie können einen der Dateneingabemodi angeben, während Sie die SageMaker Estimator Klasse oder die Estimator.fit Methode konfigurieren. Die folgenden Codevorlagen zeigen die beiden Möglichkeiten zur Angabe von Eingabemodi.

So legen Sie den Eingabemodus mithilfe der Klasse Estimator fest

from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput estimator = Estimator( checkpoint_s3_uri='s3://my-bucket/checkpoint-destination/', output_path='s3://my-bucket/output-path/', base_job_name='job-name', input_mode='File' # Available options: File | Pipe | FastFile ... ) # Run the training job estimator.fit( inputs=TrainingInput(s3_data="s3://my-bucket/my-data/train") )

Weitere Informationen finden Sie in der sagemaker.estimator.Estimator-Klasse in der SageMaker Python-SDK-Dokumentation.

So legen Sie den Eingabemodus über die Anpassungsmethode Estimator fest

from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput estimator = Estimator( checkpoint_s3_uri='s3://my-bucket/checkpoint-destination/', output_path='s3://my-bucket/output-path/', base_job_name='job-name', ... ) # Run the training job estimator.fit( inputs=TrainingInput( s3_data="s3://my-bucket/my-data/train", input_mode='File' # Available options: File | Pipe | FastFile ) )

Weitere Informationen finden Sie in der Python-SDK-Dokumentation unter der Klassenmethode sagemaker.estimator.Estimator.fit und der Klasse sagemaker.inputs.TrainingInput . SageMaker

Tipp

Weitere Informationen zur Konfiguration von Amazon FSx for Lustre oder Amazon EFS mit Ihrer VPC-Konfiguration mithilfe der SageMaker Python-SDK-Schätzer finden Sie unter Verwenden von Dateisystemen als Trainingseingaben in der SageMaker Python-SDK-Dokumentation.

Tipp

Die Dateneingabemodus-Integrationen mit Amazon S3, Amazon EFS und FSx for Lustre sind empfohlene Methoden, um die Datenquelle optimal für die Best Practices zu konfigurieren. Sie können die Leistung beim Laden von Daten mithilfe der SageMaker verwalteten Speicheroptionen und Eingabemodi dynamisch verbessern, sind jedoch nicht streng eingeschränkt. Sie können Ihre eigene Datenleselogik direkt in Ihren Trainingscontainer schreiben. Sie können z. B. festlegen, dass aus einer anderen Datenquelle gelesen wird, eine eigene S3-Datenladeklasse schreiben oder die Datenladefunktionen von Drittanbieter-Frameworks in Ihrem Trainingsskript verwenden. Sie müssen jedoch sicherstellen, dass Sie die richtigen Pfade angeben, die SageMaker erkennen kann.

Tipp

Wenn Sie einen benutzerdefinierten Trainingscontainer verwenden, stellen Sie sicher, dass Sie das SageMaker Trainings-Toolkit installieren, mit dem die Umgebung für SageMaker Trainingsaufträge eingerichtet werden kann. Andernfalls müssen Sie die Umgebungsvariablen explizit in Ihrem Dockerfile angeben. Weitere Informationen finden Sie unter Erstellen eines Containers mit Ihren eigenen Algorithmen und Modellen.

Weitere Informationen zum Festlegen der Dateneingabemodi mithilfe der Low-Level- SageMaker APIs finden Sie unter Wie Amazon Trainingsinformationen SageMaker bereitstellt, die CreateTrainingJob API und die TrainingInputMode in AlgorithmSpecification.

Konfigurieren des Dateneingangskanals zur Verwendung von Amazon FSx für Lustre

Erfahren Sie, wie Sie Amazon FSx for Lustre als Datenquelle für einen höheren Durchsatz und eine schnellere Schulung nutzen können, indem Sie die Zeit für das Laden der Daten reduzieren.

Synchronisierung von Amazon S3 und Amazon FSx für Lustre

Um Ihr Amazon S3 mit Amazon FSx for Lustre zu verknüpfen und Ihre Trainingsdatensätze hochzuladen, gehen Sie wie folgt vor.

  1. Bereiten Sie Ihren Datensatz vor und laden Sie ihn in eine Amazon S3-Bucket hoch. Nehmen wir beispielsweise an, dass die Amazon S3-Pfade für einen Trainingsdatensatz und einen Testdatensatz das folgende Format haben.

    s3://my-bucket/data/train s3://my-bucket/data/test
  2. Um ein FSx for Lustre-Dateisystem zu erstellen, das mit dem Amazon S3-Bucket mit den Trainingsdaten verknüpft ist, folgen Sie den Schritten unter Verknüpfen Ihres Dateisystems mit einem Amazon S3-Bucket im Amazon FSx for Lustre-Benutzerhandbuch. Stellen Sie sicher, dass Sie einen Endpunkt zu Ihrer VPC hinzufügen, der den Zugriff auf Amazon S3 erlaubt. Weitere Informationen finden Sie unter Erstellen eines Amazon S3 VPC-Endpunkts. Wenn Sie den Daten-Repository-Pfad angeben, geben Sie die Amazon S3-Bucket-URI des Ordners an, der Ihre Datensätze enthält. Ausgehend von den S3-Beispielpfaden in Schritt 1 sollte der Pfad zum Datenspeicher beispielsweise wie folgt lauten.

    s3://my-bucket/data
  3. Nachdem das FSx for Lustre-Dateisystem erstellt wurde, überprüfen Sie die Konfigurationsinformationen, indem Sie die folgenden Befehle ausführen.

    aws fsx describe-file-systems && \ aws fsx describe-data-repository-association

    Diese Befehle gebenFileSystemId, MountNameFileSystemPath, und DataRepositoryPath zurück. Die Ausgaben sollten zum Beispiel wie folgt aussehen.

    # Output of aws fsx describe-file-systems "FileSystemId": "fs-0123456789abcdef0" "MountName": "1234abcd" # Output of aws fsx describe-data-repository-association "FileSystemPath": "/ns1", "DataRepositoryPath": "s3://my-bucket/data/"

    Nachdem die Synchronisierung zwischen Amazon S3 und Amazon FSx abgeschlossen ist, werden Ihre Datensätze in Amazon FSx in den folgenden Verzeichnissen gespeichert.

    /ns1/train # synced with s3://my-bucket/data/train /ns1/test # synced with s3://my-bucket/data/test

Festlegen des Amazon-FSx-Dateisystempfads als Dateneingabekanal für das SageMaker Training

Die folgenden Verfahren führen Sie durch den Prozess der Festlegung des Amazon-FSx-Dateisystems als Datenquelle für SageMaker Trainingsaufträge.

Using the SageMaker Python SDK

Um das Amazon-FSx-Dateisystem ordnungsgemäß als Datenquelle festzulegen, konfigurieren Sie die SageMaker Schätzerklassen und FileSystemInput mithilfe der folgenden Anweisung.

  1. Konfigurieren Sie ein FileSystemInput Klassenobjekt.

    from sagemaker.inputs import FileSystemInput train_fs = FileSystemInput( file_system_id="fs-0123456789abcdef0", file_system_type="FSxLustre", directory_path="/1234abcd/ns1/", file_system_access_mode="ro", )
    Tipp

    Wenn Sie directory_path angeben, stellen Sie sicher, dass Sie den Amazon FSx-Dateisystempfad angeben, der mit MountName beginnt.

  2. Konfigurieren Sie einen SageMaker Schätzer mit der VPC-Konfiguration, die für das Amazon FSx-Dateisystem verwendet wird.

    from sagemaker.estimator import Estimator estimator = Estimator( ... role="your-iam-role-with-access-to-your-fsx", subnets=["subnet-id"], # Should be the same as the subnet used for Amazon FSx security_group_ids="security-group-id" )
  3. Starten Sie den Trainingsauftrag, indem Sie die Methode estimator.fit mit dem Amazon FSx-Dateisystem ausführen.

    estimator.fit(train_fs)

Weitere Codebeispiele finden Sie unter Verwenden von Dateisystemen als Trainingseingaben in der SageMaker Python-SDK-Dokumentation.

Using the SageMaker CreateTrainingJob API

Konfigurieren Sie als Teil des CreateTrainingJob Anforderungs-JSON InputDataConfig wie folgt.

"InputDataConfig": [ { "ChannelName": "string", "DataSource": { "FileSystemDataSource": { "DirectoryPath": "/1234abcd/ns1/", "FileSystemAccessMode": "ro", "FileSystemId": "fs-0123456789abcdef0", "FileSystemType": "FSxLustre" } } } ],
Tipp

Wenn Sie DirectoryPath angeben, stellen Sie sicher, dass Sie den Amazon FSx-Dateisystempfad angeben, der mit MountName beginnt.

Tipps und Überlegungen zur Konfiguration von FSx for Lustre

  1. Wenn Sie EFA-fähige Instances wie P4d und P3dn verwenden, stellen Sie sicher, dass Sie geeignete Eingangs- und Ausgangsregeln in der Sicherheitsgruppe festlegen. Insbesondere ist das Öffnen dieser Ports erforderlich, SageMaker damit im Trainingsauftrag auf das Amazon-FSx-Dateisystem zugreifen kann. Weitere Informationen finden Sie unter Zugriffskontrolle für Dateisysteme mit Amazon VPC.

  2. Stellen Sie sicher, dass die IAM-Rolle, die zum Starten des SageMaker Schulungsauftrags verwendet wird, Zugriff auf Amazon FSx hat.

Best practices für die Wahl der Datenquelle und des Eingabemodus

Die beste Datenquelle für Ihren Trainingsauftrag hängt von Arbeitslastmerkmalen wie der Größe des Datensatzes, dem Dateiformat, der durchschnittlichen Dateigröße, der Trainingsdauer, einem sequentiellen oder zufälligen Lesemuster des Datenladers und der Geschwindigkeit ab, mit der Ihr Modell die Trainingsdaten verarbeiten kann. Die folgenden Best Practices bieten einen Leitfaden für den Einstieg in den für Ihren Anwendungsfall am besten geeigneten Eingabemodus und die Datenspeicherung.

This flowchart summarizes and visualizes best practices of choosing the best storage as the data source and input file mode. All of the cases in the flowchart are described in the following sections.

Wann Sie Amazon EFS verwenden sollten

Wenn Ihr Datensatz im Amazon Elastic File System gespeichert ist, haben Sie möglicherweise eine Vorverarbeitungs- oder Anmerkungsanwendung, die Amazon EFS zur Speicherung verwendet. Sie können einen Trainingsauftrag ausführen, der mit einem Datenkanal konfiguriert ist, der auf das Amazon EFS-Dateisystem verweist. Weitere Informationen finden Sie unter Beschleunigen des Trainings auf Amazon SageMaker mithilfe der Dateisysteme Amazon FSx for Lustre und Amazon EFS. Wenn Sie keine bessere Leistung erzielen können, überprüfen Sie Ihre Optimierungsoptionen anhand des Leitfadens zur Leistung des Amazon Elastic File System oder ziehen Sie die Verwendung anderer Eingabemodi oder Datenspeicher in Betracht.

Verwenden Sie den Dateimodus für kleine Datensätze

Wenn der Datensatz in Amazon Simple Storage Service gespeichert ist und sein Gesamtvolumen relativ klein ist (z. B. weniger als 50-100 GB), sollten Sie den Dateimodus verwenden. Der Aufwand für das Herunterladen eines 50-GB-Datensatzes kann je nach Gesamtzahl der Dateien variieren. Beispielsweise dauert es etwa 5 Minuten, wenn ein Datensatz in 100-MB-Shards aufgeteilt wird. Ob dieser Startaufwand akzeptabel ist, hängt in erster Linie von der Gesamtdauer Ihres Trainingsauftrags ab, denn eine längere Schulungsphase bedeutet eine verhältnismäßig kleinere Downloadphase.

Serialisierung vieler kleiner Dateien

Wenn Ihr Datensatz klein ist (weniger als 50-100 GB), aber aus vielen kleinen Dateien besteht (weniger als 50 MB pro Datei), steigt der Download-Overhead im Dateimodus, da jede Datei einzeln vom Amazon Simple Storage Service auf das Volume der Schulungsinstanz heruntergeladen werden muss. Um diesen Overhead und die Datentraversierungszeit im Allgemeinen zu reduzieren, sollten Sie erwägen, Gruppen solcher kleiner Dateien in weniger größere Dateicontainer (z. B. 150 MB pro Datei) zu serialisieren, indem Sie Dateiformate wie TFRecord für TensorFlow, WebDataset für PyTorchund RecordIO für MXNet verwenden.

Wann sollte der schnelle Dateimodus verwendet werden

Für größere Datenmengen mit größeren Dateien (mehr als 50 MB pro Datei) besteht die erste Möglichkeit darin, den schnellen Dateimodus auszuprobieren, der einfacher zu verwenden ist als FSx for Lustre, da er keine Erstellung eines Dateisystems oder eine Verbindung zu einem VPC erfordert. Der schnelle Dateimodus ist ideal für große Dateicontainer (mehr als 150 MB) und eignet sich möglicherweise auch für Dateien mit mehr als 50 MB. Da der schnelle Dateimodus eine POSIX-Schnittstelle bietet, unterstützt er zufällige Lesevorgänge (Lesen nicht-sequentieller Byte-Bereiche). Dies ist jedoch nicht der ideale Anwendungsfall, und der Durchsatz ist möglicherweise geringer als bei sequenziellen Lesevorgängen. Wenn Sie jedoch ein relativ großes und rechenintensives ML-Modell haben, kann der schnelle Dateimodus die effektive Bandbreite der Trainingspipeline sättigen und nicht zu einem IO-Engpass führen. Sie müssen experimentieren und sehen. Um vom Dateimodus zum schnellen Dateimodus (und zurück) zu wechseln, fügen Sie einfach den input_mode='FastFile' Parameter hinzu (oder entfernen Sie ihn), während Sie Ihren Eingabekanal mit dem SageMaker Python-SDK definieren:

sagemaker.inputs.TrainingInput(S3_INPUT_FOLDER, input_mode = 'FastFile')

Wann sollten Sie Amazon FSx for Lustre verwenden

Wenn Ihr Datensatz zu groß für den Dateimodus ist, viele kleine Dateien enthält, die Sie nicht einfach serialisieren können, oder ein zufälliges Lesezugriffsmuster verwendet, ist FSx for Lustre eine gute Option, die Sie in Betracht ziehen sollten. Sein Dateisystem skaliert auf einen Durchsatz von Hunderten von Gigabyte pro Sekunde (GB/s) und Millionen von IOPS, was ideal ist, wenn Sie viele kleine Dateien haben. Beachten Sie jedoch, dass es aufgrund des trägen Ladens und des Overheads beim Einrichten und Initialisieren des FSx for Lustre-Dateisystems zu Problemen beim Kaltstart kommen kann.

Tipp

Weitere Informationen finden Sie unter Auswahl der besten Datenquelle für Ihren Amazon- SageMaker Trainingsauftrag. In diesem Blog zur AWS Machine Learning werden außerdem Fallstudien und Leistungsvergleiche von Datenquellen und Eingabemodi erörtert.