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ätzerklasseEstimator
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
importEstimator
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
So legen Sie den Eingabemodus über die Anpassungsmethode Estimator fest
from sagemaker.
estimator
importEstimator
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
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
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
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.
-
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
-
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
-
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 geben
FileSystemId
,MountName
FileSystemPath
, undDataRepositoryPath
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.
Tipps und Überlegungen zur Konfiguration von FSx for Lustre
-
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.
-
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.
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.
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
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