Wählen Sie die beste Datenquelle für Ihren Amazon SageMaker-Schulungsauftrag PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Wählen Sie die beste Datenquelle für Ihren Amazon SageMaker-Schulungsauftrag

Amazon Sage Maker ist ein verwalteter Dienst, der das Erstellen, Trainieren und Bereitstellen von Modellen für maschinelles Lernen (ML) vereinfacht. Data Scientists verwenden SageMaker-Trainingsjobs, um ML-Modelle einfach zu trainieren; Sie müssen sich keine Gedanken über die Verwaltung von Rechenressourcen machen und zahlen nur für die tatsächliche Trainingszeit. Die Datenaufnahme ist ein integraler Bestandteil jeder Trainingspipeline, und SageMaker-Trainingsjobs unterstützen eine Vielzahl von Datenspeicher- und Eingabemodi, um einer Vielzahl von Trainingsworkloads gerecht zu werden.

Dieser Beitrag hilft Ihnen bei der Auswahl der besten Datenquelle für Ihren SageMaker ML-Schulungsanwendungsfall. Wir stellen die Datenquellenoptionen vor, die SageMaker-Schulungsjobs nativ unterstützen. Für jede Datenquelle und jeden Eingabemodus skizzieren wir die Benutzerfreundlichkeit, Leistungsmerkmale, Kosten und Einschränkungen. Um Ihnen den schnellen Einstieg zu erleichtern, stellen wir das Diagramm mit einem Beispiel für einen Entscheidungsfluss bereit, dem Sie basierend auf Ihren wichtigsten Workload-Eigenschaften folgen können. Schließlich führen wir mehrere Benchmarks für realistische Trainingsszenarien durch, um die praktischen Auswirkungen auf die gesamten Trainingskosten und -leistung zu demonstrieren.

Native SageMaker-Datenquellen und -Eingabemodi

Das einfache und flexible Auslesen von Trainingsdaten auf performante Weise ist ein häufig wiederkehrendes Anliegen für das ML-Training. SageMaker vereinfacht die Datenaufnahme mit einer Auswahl an effizienten Datenaufnahmemechanismen mit hohem Durchsatz, die als Datenquellen bezeichnet werden, und ihren jeweiligen Eingabemodi. Auf diese Weise können Sie den Trainingscode von der eigentlichen Datenquelle entkoppeln, Dateisysteme automatisch mounten, mit hoher Leistung lesen, Daten-Sharding zwischen GPUs und Instanzen einfach aktivieren, um Datenparallelität zu ermöglichen, und Daten zu Beginn jeder Epoche automatisch mischen.

Der Aufnahmemechanismus für SageMaker-Schulungen lässt sich nativ in drei von AWS verwaltete Speicherservices integrieren:

  • Amazon Simple Storage-Service (Amazon S3) ist ein Objektspeicherdienst, der branchenführende Skalierbarkeit, Datenverfügbarkeit, Sicherheit und Leistung bietet.
  • Amazon FSx für Lustre ist ein vollständig verwalteter gemeinsam genutzter Speicher mit der Skalierbarkeit und Leistung des beliebten Lustre-Dateisystems. Es ist normalerweise mit einem vorhandenen S3-Bucket verknüpft.
  • Amazon Elastic File System (Amazon EFS) ist ein universelles, skalierbares und hochverfügbares freigegebenes Dateisystem mit mehreren Preisstufen. Amazon EFS ist serverlos und wächst und schrumpft automatisch, wenn Sie Dateien hinzufügen und entfernen.

Das SageMaker-Training ermöglicht Ihrem Trainingsskript den Zugriff auf Datensätze, die auf Amazon S3, FSx for Lustre oder Amazon EFS gespeichert sind, als ob sie auf einem lokalen Dateisystem verfügbar wären (über eine POSIX-kompatible Dateisystemschnittstelle).

Mit Amazon S3 als Datenquelle können Sie zwischen Dateimodus, FastFile-Modus und Pipe-Modus wählen:

  • Dateimodus – SageMaker kopiert einen Datensatz von Amazon S3 in den ML-Instance-Speicher, der angehängt ist Amazon Elastic Block-Shop (Amazon EBS)-Volume oder NVMe-SSD-Volume, bevor Ihr Trainingsskript beginnt.
  • FastFile-Modus – SageMaker macht einen Datensatz verfügbar, der sich in Amazon S3 als POSIX-Dateisystem auf der Trainingsinstanz befindet. Datensatzdateien werden bei Bedarf von Amazon S3 gestreamt, während Ihr Trainingsskript sie liest.
  • Rohrmodus – SageMaker streamt einen in Amazon S3 gespeicherten Datensatz als Unix-Pipe an die ML-Trainingsinstanz, die bei Bedarf von Amazon S3 gestreamt wird, während Ihr Trainingsskript die Daten aus der Pipe liest.

Mit FSx for Lustre oder Amazon EFS als Datenquelle stellt SageMaker das Dateisystem bereit, bevor Ihr Trainingsskript startet.

Eingangskanäle trainieren

Beim Starten eines SageMaker-Trainingsjobs können Sie bis zu 20 verwaltete angeben Eingangskanäle trainieren. Sie können sich Kanäle als eine Abstraktionseinheit vorstellen, die dem Trainingsjob mitteilt, wie und wo er die Daten abrufen kann, die dem Algorithmuscode zum Lesen aus einem Dateisystempfad zur Verfügung gestellt werden (z. B. /opt/ml/input/data/input-channel-name) auf der ML-Instanz. Die ausgewählten Trainingskanäle werden als Teil der Trainingsjob-Metadaten erfasst, um eine vollständige Nachverfolgung der Modellherkunft für Anwendungsfälle wie Reproduzierbarkeit von Trainingsjobs oder Modell-Governance-Zwecke zu ermöglichen.

Um Amazon S3 als Ihre Datenquelle zu verwenden, definieren Sie a TrainingsInput Folgendes angeben:

  • Ihr Eingabemodus (Datei-, FastFile- oder Pipe-Modus)
  • Vertrieb und schlurfen Konfiguration
  • An S3DataType als eine von drei Methoden zum Angeben von Objekten in Amazon S3, aus denen Ihr Datensatz besteht:

Alternativ definieren Sie für FSx for Lustre oder Amazon EFS a FileSystemInput.

Das folgende Diagramm zeigt fünf Trainingsjobs, die jeweils mit einer anderen Kombination aus Datenquelle und Eingabemodus konfiguriert sind:

Wählen Sie die beste Datenquelle für Ihren Amazon SageMaker-Schulungsauftrag PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Datenquellen und Eingabemodi

Die folgenden Abschnitte bieten einen tiefen Einblick in die Unterschiede zwischen Amazon S3 (Dateimodus, FastFile-Modus und Pipe-Modus), FSx für Lustre und Amazon EFS als Aufnahmemechanismen von SageMaker.

Amazon S3-Dateimodus

Der Dateimodus ist der Standardeingabemodus (wenn Sie keinen explizit angegeben haben) und er ist einfacher zu verwenden. Wenn Sie diese Eingabeoption verwenden, lädt SageMaker das Dataset in Ihrem Namen von Amazon S3 in den ML-Trainings-Instance-Speicher (Amazon EBS oder lokales NVMe, je nach Instance-Typ) herunter, bevor das Modelltraining gestartet wird, sodass das Trainingsskript das Dataset lesen kann das lokale Dateisystem. In diesem Fall muss die Instanz über genügend Speicherplatz für den gesamten Datensatz verfügen.

Sie konfigurieren das Dataset für den Dateimodus, indem Sie entweder ein 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 (Unterordner sind in Ordnung).

Die Manifestdatei listet die Dateien auf, aus denen Ihr Dataset besteht. Normalerweise verwenden Sie ein Manifest, wenn ein Datenvorverarbeitungsjob eine Manifestdatei ausgibt oder wenn Ihre Datensatzdateien über mehrere S3-Präfixe verteilt sind. Ein erweitertes Manifest ist eine JSON-Zeilendatei, in der jede Zeile eine Liste von Attributen enthält, z. B. einen Verweis auf eine Datei in Amazon S3, neben zusätzlichen Attributen, meist Labels. Seine Anwendungsfälle ähneln denen eines Manifests.

Der Dateimodus ist kompatibel mit Lokaler SageMaker-Modus (Interaktives Starten eines SageMaker-Schulungscontainers in Sekunden). Für verteiltes Training können Sie das Dataset mit dem Shard auf mehrere Instanzen verteilen ShardedByS3Key .

Die Downloadgeschwindigkeit im Dateimodus hängt von der Datensatzgröße, der durchschnittlichen Dateigröße und der Anzahl der Dateien ab. Je größer beispielsweise das Dataset ist (oder je mehr Dateien es enthält), desto länger dauert die Download-Phase, während der die Rechenressource der Instanz effektiv im Leerlauf bleibt. Beim Training mit Spot-Instances wird das Dataset jedes Mal heruntergeladen, wenn der Job nach einer Spot-Unterbrechung fortgesetzt wird. Typischerweise erfolgt das Herunterladen von Daten bei großen Dateien mit etwa 200 MB/s (z. B. 5 Minuten/50 GB). Ob dieser Startaufwand akzeptabel ist, hängt in erster Linie von der Gesamtdauer Ihres Trainingsjobs ab, denn eine längere Trainingsphase bedeutet eine proportional kürzere Downloadphase.

Amazon S3 FastFile-Modus

Der FastFile-Modus stellt S3-Objekte über eine POSIX-kompatible Dateisystemschnittstelle bereit, als ob die Dateien auf der lokalen Festplatte Ihrer Trainingsinstanz verfügbar wären, und streamt ihren Inhalt nach Bedarf, wenn Daten vom Trainingsskript verbraucht werden. Das bedeutet, dass Ihr Dataset nicht mehr in den Speicherplatz der Trainingsinstanz passen muss und Sie nicht warten müssen, bis das Dataset auf die Trainingsinstanz heruntergeladen wurde, bevor das Training beginnen kann.

Um dies zu erleichtern, listet SageMaker alle Objektmetadaten auf, die unter dem angegebenen S3-Präfix gespeichert sind, bevor Ihr Trainingsskript ausgeführt wird. Diese Metadaten werden verwendet, um eine schreibgeschützte Datei zu erstellen FUSE (Dateisystem im Userspace) die Ihrem Trainingsskript über zur Verfügung steht /opt/ml/data/training-channel-name. Das Auflisten von S3-Objekten läuft unabhängig von ihrer Größe mit bis zu 5,500 Objekten pro Sekunde. Dies ist viel schneller als das Herunterladen von Dateien im Voraus, wie es beim Dateimodus der Fall ist. Während Ihr Trainingsskript ausgeführt wird, kann es Dateien auflisten oder lesen, als ob sie lokal verfügbar wären. Jeder Lesevorgang wird an den FUSE-Service delegiert, der GET-Anforderungen an Amazon S3 weiterleitet, um den eigentlichen Dateiinhalt an den Aufrufer zu liefern. Wie ein lokales Dateisystem behandelt FastFile Dateien als Bytes und ist daher unabhängig von Dateiformaten. Der FastFile-Modus kann einen Durchsatz von mehr als einem GB/s erreichen, wenn große Dateien sequentiell mit mehreren Workern gelesen werden. Sie können FastFile verwenden, um kleine Dateien zu lesen oder zufällige Bytebereiche abzurufen, aber Sie sollten für solche Zugriffsmuster mit einem geringeren Durchsatz rechnen. Sie können Ihr Lesezugriffsmuster optimieren, indem Sie viele kleine Dateien in größere Dateicontainer serialisieren und diese nacheinander lesen.

FastFile unterstützt derzeit nur S3-Präfixe (keine Unterstützung für Manifest und erweitertes Manifest), und der FastFile-Modus ist mit dem lokalen Modus von SageMaker kompatibel.

Amazon S3 Pipe-Modus

Der Pipe-Modus ist ein weiterer Streaming-Modus, der größtenteils durch den neueren und einfacher zu verwendenden FastFile-Modus ersetzt wird.

Im Pipe-Modus werden Daten von Amazon S3 mit hoher Parallelität und hohem Durchsatz vorab abgerufen und in Unix-benannte FIFO-Pipes gestreamt. Jede Pipe darf nur von einem einzigen Prozess gelesen werden. Eine SageMaker-spezifische Erweiterung für TensorFlow integriert den Pipe-Modus in den nativen TensorFlow-Datenlader zum Streamen von Text-, TFRecords- oder RecordIO-Dateiformaten. Der Pipe-Modus unterstützt auch verwaltetes Sharding und Shuffling von Daten.

FSx für Glanz

FSx for Lustre kann auf Hunderte von GB/s Durchsatz und Millionen von IOPS mit Dateiabruf mit geringer Latenz skalieren.

Beim Starten eines Trainingsjobs stellt SageMaker das FSx for Lustre-Dateisystem im Dateisystem der Trainingsinstanz bereit und startet dann Ihr Trainingsskript. Das Mounten selbst ist ein relativ schneller Vorgang, der nicht von der Größe des in FSx für Lustre gespeicherten Datensatzes abhängt.

In vielen Fällen erstellen Sie ein FSx for Lustre-Dateisystem und Verknüpfen Sie es mit einem S3-Bucket und -Präfix. Wenn Sie mit einem S3-Bucket als Quelle verknüpft sind, werden Dateien träge in das Dateisystem geladen, während Ihr Trainingsskript sie liest. Das bedeutet, dass direkt nach der ersten Epoche Ihres ersten Trainingslaufs der gesamte Datensatz von Amazon S3 auf den FSx für die Lustre-Speicherung kopiert wird (vorausgesetzt, eine Epoche ist als ein einziger vollständiger Durchlauf definiert, wie in den Trainingsbeispielen beschrieben, und dass der zugewiesene FSx für Glanzspeicher ist groß genug). Dies ermöglicht einen Dateizugriff mit geringer Latenz für alle nachfolgenden Epochen und Trainingsjobs mit demselben Datensatz.

Sie können uns auch Dateien vorab in das Dateisystem laden vor Beginn des Trainingsjobs, was den Kaltstart durch träges Laden mildert. Es ist auch möglich, mehrere Trainingsjobs parallel auszuführen, die von demselben FSx for Lustre-Dateisystem bedient werden. Um auf FSx for Lustre zuzugreifen, muss Ihr Trainingsjob eine Verbindung zu einer VPC herstellen (siehe VPCConfig-Einstellungen), was die Einrichtung und Beteiligung von DevOps erfordert. Um Datenübertragungskosten zu vermeiden, verwendet das Dateisystem eine einzige Availability Zone, und Sie müssen diese Availability Zone-ID angeben, wenn Sie den Trainingsjob ausführen. Da Sie Amazon S3 als langfristigen Datenspeicher verwenden, empfehlen wir die Bereitstellung Ihres FSx for Lustre mit Scratch 2-Speicher als kostengünstige, kurzfristige Speicheroption für hohen Durchsatz mit einer Grundlinie von 200 MB/s und einen Burst von bis zu 1300 MB/s pro TB bereitgestelltem Speicher.

Da Ihr FSx for Lustre-Dateisystem ständig ausgeführt wird, können Sie neue Trainingsjobs starten, ohne auf die Erstellung eines Dateisystems warten zu müssen, und müssen sich keine Gedanken über den Kaltstart während der allerersten Epoche machen (weil Dateien noch zwischengespeichert sein könnten das Dateisystem FSx for Lustre). Der Nachteil in diesem Szenario sind die zusätzlichen Kosten, die damit verbunden sind, das Dateisystem am Laufen zu halten. Alternativ könnten Sie das Dateisystem vor und nach jedem Trainingsjob erstellen und löschen (wahrscheinlich mit Hilfe von Skriptautomatisierungen), aber das Initialisieren eines FSx für Lustre-Dateisystems braucht Zeit, die proportional zur Anzahl der darin enthaltenen Dateien ist (z Beispielsweise dauert es etwa eine Stunde, um etwa 2 Millionen Objekte aus Amazon S3 zu indizieren).

Amazon EFS

Wir empfehlen die Verwendung von Amazon EFS, wenn sich Ihre Trainingsdaten aufgrund von Anwendungsfällen neben dem ML-Training bereits in Amazon EFS befinden. Um Amazon EFS als Datenquelle zu verwenden, müssen sich die Daten bereits vor dem Training in Amazon EFS befinden. SageMaker stellt das angegebene Amazon EFS-Dateisystem in der Trainings-Instance bereit und startet dann Ihr Trainingsskript. Bei der Konfiguration des Amazon EFS-Dateisystems müssen Sie zwischen dem standardmäßigen Allzweck-Leistungsmodus, der für Latenz optimiert ist (gut für kleine Dateien), und dem Max-E/A-Leistungsmodus wählen, der auf höhere Ebenen des Gesamtdurchsatzes skaliert werden kann und Operationen pro Sekunde (besser für Trainingsjobs mit vielen I/O-Workern). Weitere Informationen finden Sie unter Verwenden des richtigen Leistungsmodus.

Darüber hinaus können Sie zwischen zwei gemessenen Durchsatzoptionen wählen: Bursting-Durchsatz und bereitgestellter Durchsatz. Der Bursting-Durchsatz für ein 1-TB-Dateisystem bietet eine Basislinie von 150 MB/s, während er für einen Zeitraum von 300 Stunden pro Tag auf 12 MB/s explodieren kann. Wenn Sie einen höheren Basisdurchsatz benötigen oder feststellen, dass Ihnen zu oft das Burst-Guthaben ausgeht, können Sie entweder die Größe des Dateisystems erhöhen oder auf bereitgestellten Durchsatz umschalten. Beim bereitgestellten Durchsatz zahlen Sie für den gewünschten Baseline-Durchsatz bis maximal 3072 MB/s Lesen.

Ihr Trainingsjob muss eine Verbindung zu einer VPC herstellen (siehe VPCConfig-Einstellungen), um auf Amazon EFS zuzugreifen.

Auswahl der besten Datenquelle

Die beste Datenquelle für Ihren Trainingsjob hängt von Arbeitslastmerkmalen wie Datensatzgröße, Dateiformat, durchschnittlicher Dateigröße, Trainingsdauer, sequenziellem oder zufälligem Dataloader-Lesemuster und davon ab, wie schnell Ihr Modell die Trainingsdaten verarbeiten kann.

Das folgende Flussdiagramm enthält einige Richtlinien, die Ihnen den Einstieg erleichtern sollen:
Wählen Sie die beste Datenquelle für Ihren Amazon SageMaker-Schulungsauftrag PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Wann Sie Amazon EFS verwenden sollten

Wenn Ihr Datensatz hauptsächlich auf Amazon EFS gespeichert wird, verfügen Sie möglicherweise über eine Vorverarbeitungs- oder Anmerkungsanwendung, die Amazon EFS zur Speicherung verwendet. Sie könnten problemlos einen Trainingsjob ausführen, der mit einem Datenkanal konfiguriert ist, der auf das Amazon EFS-Dateisystem verweist (weitere Informationen finden Sie unter Beschleunigen Sie das Training in Amazon SageMaker mit Amazon FSx für Lustre und Amazon EFS-Dateisystemen). Wenn die Leistung nicht ganz so gut ist, wie Sie es erwartet haben, überprüfen Sie Ihre Optimierungsoptionen mit der Amazon EFS-Leistungsleitfaden, oder ziehen Sie andere Eingabemodi in Betracht.

Verwenden Sie den Dateimodus für kleine Datasets

Wenn der Datensatz auf Amazon S3 gespeichert ist und sein Gesamtvolumen relativ klein ist (z. B. weniger als 50–100 GB), versuchen Sie es mit dem Dateimodus. Der Aufwand für das Herunterladen eines Datensatzes von 50 GB kann je nach Gesamtzahl der Dateien variieren (z. B. etwa 5 Minuten, wenn er in 100-MB-Shards aufgeteilt wird). Ob dieser Startaufwand akzeptabel ist, hängt in erster Linie von der Gesamtdauer Ihres Trainingsjobs ab, denn eine längere Trainingsphase bedeutet eine proportional kürzere Downloadphase.

Serialisieren vieler kleiner Dateien zusammen

Wenn Ihr Datensatz klein ist (weniger als 50–100 GB), aber aus vielen kleinen Dateien besteht (weniger als 50 MB), wächst der Download-Overhead im Dateimodus, da jede Datei einzeln von Amazon S3 auf die heruntergeladen werden muss Trainingsinstanzvolumen. Um diesen Overhead zu reduzieren und den Datendurchlauf im Allgemeinen zu beschleunigen, sollten Sie Gruppen kleinerer Dateien in weniger größere Dateicontainer (z. B. 150 MB pro Datei) serialisieren, indem Sie Dateiformate wie z TFRecord für TensorFlow, WebDataset für PyTorch, oder RecordIO für MXNet. Diese Formate erfordern, dass Ihr Data Loader die Beispiele nacheinander durchläuft. Sie könnten Ihre Daten immer noch mischen, indem Sie die Liste der TFRecord-Dateien nach jeder Epoche zufällig neu anordnen und Daten aus einem lokalen Shuffle-Puffer nach dem Zufallsprinzip abtasten (siehe Folgendes TensorFlow-Beispiel).

Wann sollte der FastFile-Modus verwendet werden?

Für größere Datasets mit größeren Dateien (mehr als 50 MB) besteht die erste Option darin, den FastFile-Modus auszuprobieren, der einfacher zu verwenden ist als FSx für Lustre, da er kein Dateisystem erstellen oder eine Verbindung zu einer VPC herstellen muss. Der FastFile-Modus 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 FastFile-Modus eine POSIX-Schnittstelle bereitstellt, unterstützt er zufällige Lesevorgänge (Lesen nicht sequentieller Bytebereiche). Dies ist jedoch nicht der ideale Anwendungsfall, und Ihr Durchsatz wäre wahrscheinlich niedriger als bei den sequentiellen Lesevorgängen. Wenn Sie jedoch über ein relativ großes und rechenintensives ML-Modell verfügen, kann der FastFile-Modus möglicherweise dennoch die effektive Bandbreite der Trainingspipeline sättigen und nicht zu einem E/A-Engpass führen. Sie müssen experimentieren und sehen. Glücklicherweise ist der Wechsel vom Dateimodus zu FastFile (und zurück) so einfach wie das Hinzufügen (oder Entfernen) der input_mode='FastFile' Parameter beim Definieren Ihres Eingabekanals mit dem SageMaker Python SDK:

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

Es muss kein anderer Code oder keine andere Konfiguration geändert werden.

Wann sollte FSx für Lustre verwendet werden?

Wenn Ihr Datensatz zu groß für den Dateimodus ist oder viele kleine Dateien enthält (die Sie nicht einfach serialisieren können) oder Sie ein zufälliges Lesezugriffsmuster haben, ist FSx für Lustre eine gute Option. Sein Dateisystem skaliert auf Hunderte von GB/s Durchsatz und Millionen von IOPS, was ideal ist, wenn Sie viele kleine Dateien haben. Beachten Sie jedoch, wie bereits erwähnt, die Kaltstartprobleme aufgrund von Lazy Loading und den Overhead für die Einrichtung und Initialisierung des FSx for Lustre-Dateisystems.

Kostenüberlegungen

Bei den meisten ML-Trainingsjobs, insbesondere Jobs, die GPUs oder speziell entwickelte ML-Chips verwenden, sind die meisten Kosten für das Training die abrechenbaren Sekunden der ML-Trainingsinstanz. Speicher-GB pro Monat, API-Anforderungen und bereitgestellter Durchsatz sind zusätzliche Kosten, die direkt mit den von Ihnen verwendeten Datenquellen zusammenhängen.

Speicher GB pro Monat

Speicherplatz in GB pro Monat kann für größere Datensätze wie Videos, LiDAR-Sensordaten und AdTech-Echtzeitgebotsprotokolle erheblich sein. Speichern Sie beispielsweise 1 TB in der Amazon S3 Intelligent-Tiering-Stufe für häufigen Zugriff kostet $23 pro Monat. Das Hinzufügen des FSx for Lustre-Dateisystems zusätzlich zu Amazon S3 führt zu zusätzlichen Kosten. Beispielsweise kostet das Erstellen eines 1.2-TB-Dateisystems vom SSD-gestützten Scratch-2-Typ mit deaktivierter Datenkomprimierung zusätzlich 168 USD pro Monat (140 USD/TB/Monat).

Bei Amazon S3 und Amazon EFS zahlen Sie nur für das, was Sie nutzen, d. h., Sie zahlen nach der tatsächlichen Größe des Datensatzes. Bei FSx for Lustre wird Ihnen die bereitgestellte Dateisystemgröße (mindestens 1.2 TB) in Rechnung gestellt. Beim Ausführen von ML-Instances mit EBS-Volumes wird Amazon EBS unabhängig von der ML-Instance berechnet. Dies sind in der Regel wesentlich geringere Kosten im Vergleich zu den Kosten für die Ausführung der Instanz. Beispielsweise kostet das Ausführen einer ml.p3.2xlarge-Instance mit einem 100-GB-EBS-Volumen für 1 Stunde 3.825 USD für die Instance und 0.02 USD für das EBS-Volumen.

API-Anforderungen und bereitgestellte Durchsatzkosten

Während Ihr Trainingsjob den Datensatz durchforstet, listet er Dateien auf und ruft sie ab, indem er Amazon S3-API-Anforderungen sendet. Beispielsweise kostet jede Million GET-Anforderungen 0.4 $ (mit der Intelligent-Tiering-Klasse). Sie sollten keine Datenübertragungskosten für Bandbreite in und aus Amazon S3 erwarten, da das Training in einer einzigen Availability Zone stattfindet.

Wenn Sie einen FSx for Lustre verwenden, der mit einem S3-Bucket verknüpft ist, entstehen Ihnen Amazon S3-API-Anforderungskosten für das Lesen von Daten, die noch nicht im Dateisystem zwischengespeichert sind, da FSx for Lustre die Anforderung an Amazon S3 weiterleitet (und das Ergebnis zwischenspeichert). ). Für Lustre selbst fallen keine direkten Anforderungskosten für FSx an. Wenn Sie ein FSx for Lustre-Dateisystem verwenden, vermeiden Sie Kosten für die Datenübertragung zwischen Verfügbarkeitszonen, indem Sie Ihren Trainingsjob mit derselben Availability Zone verbinden, in der Sie das Dateisystem bereitgestellt haben. Amazon EFS mit bereitgestelltem Durchsatz fügt Consdier Beyond zusätzliche Kosten hinzu GB pro Monat.

Performance-Fallstudie

Um die zuvor erwähnten Überlegungen zur Trainingsleistung zu demonstrieren, haben wir eine Reihe von Benchmarks für einen realistischen Anwendungsfall im Computer-Vision-Bereich durchgeführt. Die Benchmark (und Erkenntnisse) aus diesem Abschnitt sind möglicherweise nicht auf alle Szenarien anwendbar und werden von verschiedenen vordefinierten Faktoren beeinflusst, die wir verwendet haben, z. B. DNN. Wir haben Tests für 12 Kombinationen der folgenden durchgeführt:

  • Eingabemodi – FSx für Lustre, Dateimodus, FastFile-Modus
  • Datensatzgröße – Kleinerer Datensatz (1 GB), größerer Datensatz (54 GB)
  • Dateigröße – Kleinere Dateien (JPGs, ca. 39 KB), Größere Dateien (TFRecord, ca. 110 MB)

Für diese Fallstudie haben wir die am häufigsten verwendeten Eingabemodi ausgewählt und daher den Amazon EFS- und Pipe-Modus weggelassen.

Die Fallstudien-Benchmarks wurden als End-to-End-SageMaker-TensorFlow-Trainingsjobs auf einer ml.p3.2xlarge-Single-GPU-Instance konzipiert. Wir haben das renommierte ResNet-50 als unser Rückgratmodell für die Klassifizierungsaufgabe und Caltech-256 als kleineren Trainingsdatensatz gewählt (den wir 50 Mal repliziert haben, um seine größere Datensatzversion zu erstellen). Wir führten das Training für eine Epoche durch, die in den Trainingsbeispielen als ein einziger vollständiger Sweep definiert wurde.

Die folgenden Diagramme zeigen die abrechenbare Gesamtzeit der SageMaker-Schulungsjobs für jedes Benchmark-Szenario. Die gesamte Auftragszeit selbst besteht aus dem Herunterladen, dem Training und anderen Phasen (z. B. dem Starten des Containers und dem Hochladen von trainierten Modellartefakten auf Amazon S3). Kürzere abrechenbare Zeiten führen zu schnelleren und billigeren Schulungsaufträgen.

Wählen Sie die beste Datenquelle für Ihren Amazon SageMaker-Schulungsauftrag PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Lassen Sie uns zuerst diskutieren Szenario A und Szenario C, die bequem den Leistungsunterschied zwischen Eingabemodi demonstrieren, wenn das Dataset aus vielen kleinen Dateien besteht.

Szenario A (kleinere Dateien, kleinerer Datensatz) zeigt, dass der Trainingsjob mit dem Dateisystem FSx for Lustre die geringste abrechenbare Zeit hat. Es hat die kürzeste Downloadphase und seine Trainingsphase ist so schnell wie der Dateimodus, aber schneller als FastFile. FSx for Lustre ist der Gewinner in diesem einzelnen Epochentest. Stellen Sie sich jedoch eine ähnliche Arbeitslast vor, jedoch mit mehreren Epochen – der relative Overhead des Dateimodus aufgrund der Downloadphase nimmt ab, wenn weitere Epochen hinzugefügt werden. In diesem Fall bevorzugen wir den Dateimodus wegen seiner Benutzerfreundlichkeit. Darüber hinaus stellen Sie möglicherweise fest, dass die Verwendung des Dateimodus und das Bezahlen von 100 zusätzlichen abrechenbaren Sekunden eine bessere Wahl ist, als für ein FSx for Lustre-Dateisystem zu bezahlen und es bereitzustellen.

Szenario C. (kleinere Dateien, größerer Datensatz) zeigt FSx für Lustre als schnellsten Modus mit nur 5,000 Sekunden abrechnungsfähiger Gesamtzeit. Es hat auch die kürzeste Download-Phase, da das Mounten des FSx for Lustre-Dateisystems nicht von der Anzahl der Dateien im Dateisystem abhängt (in diesem Fall 1.5 Millionen Dateien). Der Download-Overhead von FastFile ist ebenfalls gering; Es ruft nur Metadaten der Dateien ab, die sich unter dem angegebenen S3-Bucket-Präfix befinden, während der Inhalt der Dateien während der Trainingsphase gelesen wird. Der Dateimodus ist der langsamste Modus und benötigt 10,000 Sekunden, um den gesamten Datensatz im Voraus herunterzuladen, bevor Sie mit dem Training beginnen. Wenn wir uns die Trainingsphase ansehen, zeigt FSx für den Lustre- und File-Modus eine ähnlich hervorragende Leistung. Was den FastFile-Modus anbelangt, so wird beim Streaming kleinerer Dateien direkt von Amazon S3 der Overhead für das Versenden einer neuen GET-Anfrage für jede Datei im Verhältnis zur Gesamtdauer der Dateiübertragung erheblich (trotz der Verwendung eines hochgradig parallelen Datenladeprogramms mit Prefetch-Puffer). Dies führt zu einem insgesamt niedrigeren Durchsatz für den FastFile-Modus, wodurch ein E/A-Engpass für den Trainingsjob entsteht. FSx for Lustre ist der klare Gewinner in diesem Szenario.

Szenarien B und D Zeigen Sie den Leistungsunterschied zwischen den Eingabemodi, wenn das Dataset aus weniger größeren Dateien besteht. Das sequentielle Lesen mit größeren Dateien führt normalerweise zu einer besseren E/A-Leistung, da es eine effektive Pufferung ermöglicht und die Anzahl der E/A-Operationen reduziert.

Szenario B (größere Dateien, kleinerer Datensatz) zeigt eine ähnliche Trainingsphasenzeit für alle Modi (was beweist, dass das Training nicht E/A-gebunden ist). In diesem Szenario bevorzugen wir den FastFile-Modus gegenüber dem Dateimodus aufgrund der kürzeren Download-Phase und bevorzugen den FastFile-Modus gegenüber FSx für Lustre aufgrund der Benutzerfreundlichkeit des ersteren.

Szenario D (größere Dateien, größerer Datensatz) zeigt relativ ähnliche abrechenbare Gesamtzeiten für alle drei Modi. Die Downloadphase des Dateimodus ist länger als die von FSx für Lustre und FastFile. Der Dateimodus lädt den gesamten Datensatz (54 GB) von Amazon S3 auf die Trainingsinstanz herunter, bevor die Trainingsphase beginnt. Alle drei Modi verbringen ähnlich viel Zeit in der Trainingsphase, da alle Modi schnell genug Daten abrufen können und GPU-gebunden sind. Wenn wir ML-Instanzen mit zusätzlichen CPU- oder GPU-Ressourcen wie ml.p4d.24xlarge verwenden, wächst der erforderliche Daten-E/A-Durchsatz, um die Rechenressourcen auszulasten. In diesen Fällen können wir davon ausgehen, dass FastFile und FSx for Lustre ihren Durchsatz erfolgreich skalieren (der Durchsatz von FSx for Lustre hängt jedoch von der Größe des bereitgestellten Dateisystems ab). Die Fähigkeit des Dateimodus, seinen Durchsatz zu skalieren, hängt vom Durchsatz des Datenträgers ab, der an die Instanz angeschlossen ist. Beispielsweise sind Amazon EBS-gestützte Instances (wie ml.p3.2xlarge, ml.p3.8xlarge und ml.p3.16xlarge) auf einen maximalen Durchsatz von 250 MB/s beschränkt, während lokale NVMe-gestützte Instances (wie ml. g5.* oder ml.p4d.24xlarge) kann einen viel größeren Durchsatz aufnehmen.

Zusammenfassend glauben wir, dass FastFile der Gewinner für dieses Szenario ist, weil es schneller als der Dateimodus und genauso schnell wie FSx für Lustre ist, aber einfacher zu verwenden, weniger kostet und seinen Durchsatz nach Bedarf problemlos skalieren kann.

Wenn wir außerdem einen viel größeren Datensatz hätten (mehrere TB groß), würde der Dateimodus viele Stunden damit verbringen, den Datensatz herunterzuladen, bevor das Training beginnen könnte, während FastFile das Training deutlich schneller starten könnte.

Bringen Sie Ihre eigene Datenaufnahme mit

Die native Datenquelle von SageMaker passt zu den meisten, aber nicht allen möglichen ML-Trainingsszenarien. Die Situationen, in denen Sie möglicherweise nach anderen Datenerfassungsoptionen suchen müssen, könnten das direkte Lesen von Daten aus einem Speicherprodukt eines Drittanbieters umfassen (vorausgesetzt, ein einfacher und zeitnaher Export nach Amazon S3 ist nicht möglich) oder eine starke Anforderung für das gleiche Training Skript, das sowohl auf SageMaker als auch unverändert ausgeführt wird Amazon Elastic Compute-Cloud (Amazon EC2) oder Amazon Elastic Kubernetes-Service (Amazon EKS). Sie können diese Fälle angehen, indem Sie Ihren Datenerfassungsmechanismus in das Trainingsskript implementieren. Dieser Mechanismus ist für das Einlesen von Datensätzen aus externen Datenquellen in die Trainingsinstanz verantwortlich. Zum Beispiel die TFRecordDataset der TensorFlows tf.data Die Bibliothek kann direkt aus dem Amazon S3-Speicher lesen.

Wenn Ihr Datenerfassungsmechanismus AWS-Dienste aufrufen muss, wie z Relationaler Amazon-Datenbankdienst (Amazon RDS), stellen Sie sicher, dass die AWS Identity and Access Management and (IAM)-Rolle Ihres Schulungsauftrags umfasst die relevanten IAM-Richtlinien. Wenn sich die Datenquelle in befindet Amazon Virtual Private Cloud (Amazon VPC) müssen Sie Ihren Trainingsjob ausführen, der mit derselben VPC verbunden ist.

Wenn Sie die Datensatzaufnahme selbst verwalten, kann die Herkunftsverfolgung von SageMaker die während des Trainings verwendeten Datensätze nicht automatisch protokollieren. Erwägen Sie daher alternative Mechanismen wie Trainingsjob-Tags oder Hyperparameter, um Ihre relevanten Metadaten zu erfassen.

Zusammenfassung

Die Auswahl der richtigen SageMaker-Trainingsdatenquelle kann sich erheblich auf die Geschwindigkeit, Benutzerfreundlichkeit und Kosten des Trainings von ML-Modellen auswirken. Verwenden Sie das bereitgestellte Flussdiagramm, um schnell loszulegen, die Ergebnisse zu beobachten und bei Bedarf mit zusätzlicher Konfiguration zu experimentieren. Berücksichtigen Sie die Vor-, Nachteile und Einschränkungen jeder Datenquelle und wie gut sie zu den individuellen Anforderungen Ihres Ausbildungsberufs passen. Wenden Sie sich für weitere Informationen und Unterstützung an einen AWS-Kontakt.


Über die Autoren

Wählen Sie die beste Datenquelle für Ihren Amazon SageMaker-Schulungsauftrag PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Gili Nachum ist ein Senior AI/ML Specialist Solutions Architect, der als Teil des EMEA Amazon Machine Learning-Teams arbeitet. Gili interessiert sich leidenschaftlich für die Herausforderungen beim Training von Deep-Learning-Modellen und dafür, wie maschinelles Lernen die Welt, wie wir sie kennen, verändert. In seiner Freizeit spielt Gili gerne Tischtennis.

Wählen Sie die beste Datenquelle für Ihren Amazon SageMaker-Schulungsauftrag PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Dr. Alexander Arschanow ist ein AI/ML Specialist Solutions Architect mit Sitz in Frankfurt, Deutschland. Er hilft AWS-Kunden beim Entwerfen und Bereitstellen ihrer ML-Lösungen in der gesamten EMEA-Region. Bevor er zu AWS kam, erforschte Alexander die Ursprünge schwerer Elemente in unserem Universum und entwickelte eine Leidenschaft für ML, nachdem er sie in seinen groß angelegten wissenschaftlichen Berechnungen verwendet hatte.

Zeitstempel:

Mehr von AWS Maschinelles Lernen