Kies de beste gegevensbron voor uw Amazon SageMaker-trainingstaak PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Kies de beste gegevensbron voor uw Amazon SageMaker-trainingstaak

Amazon Sage Maker is een beheerde service waarmee u eenvoudig machine learning-modellen (ML) kunt bouwen, trainen en implementeren. Gegevenswetenschappers gebruiken SageMaker-trainingstaken om eenvoudig ML-modellen te trainen; u hoeft zich geen zorgen te maken over het beheer van computerbronnen en u betaalt alleen voor de daadwerkelijke trainingstijd. Gegevensopname is een integraal onderdeel van elke trainingspijplijn en SageMaker-trainingstaken ondersteunen een verscheidenheid aan gegevensopslag- en invoermodi voor een breed scala aan trainingsworkloads.

Dit bericht helpt u bij het kiezen van de beste gegevensbron voor uw SageMaker ML-trainingstoepassing. We introduceren de opties voor gegevensbronnen die SageMaker-trainingstaken native ondersteunen. Voor elke gegevensbron en invoermodus schetsen we het gebruiksgemak, de prestatiekenmerken, de kosten en de beperkingen. Om u te helpen snel aan de slag te gaan, bieden we het diagram een โ€‹โ€‹voorbeeld van een beslissingsstroom die u kunt volgen op basis van uw belangrijkste werkbelastingkenmerken. Ten slotte voeren we verschillende benchmarks uit voor realistische trainingsscenario's om de praktische implicaties voor de totale trainingskosten en -prestaties aan te tonen.

Native SageMaker-gegevensbronnen en invoermodi

Het gemakkelijk en flexibel lezen van trainingsgegevens op een performante manier is een veelvoorkomend probleem bij ML-trainingen. SageMaker vereenvoudigt data-opname met een selectie van efficiรซnte, high-throughput data-opname mechanismen die databronnen worden genoemd en hun respectievelijke invoermodi. Hiermee kunt u trainingscode loskoppelen van de daadwerkelijke gegevensbron, automatisch bestandssystemen koppelen, lezen met hoge prestaties, eenvoudig gegevenssharding tussen GPU's en instanties inschakelen om gegevensparallellisme mogelijk te maken, en gegevens automatisch in willekeurige volgorde afspelen aan het begin van elk tijdperk.

Het opnamemechanisme voor SageMaker-training integreert native met drie door AWS beheerde opslagservices:

  • Amazon eenvoudige opslagservice (Amazon S3) is een objectopslagservice die toonaangevende schaalbaarheid, gegevensbeschikbaarheid, beveiliging en prestaties biedt.
  • Amazon FSx voor Luster is een volledig beheerde gedeelde opslag met de schaalbaarheid en prestaties van het populaire Lustre-bestandssysteem. Het is meestal gekoppeld aan een bestaande S3-bucket.
  • Amazon elastisch bestandssysteem (Amazon EFS) is een universeel, schaalbaar en zeer beschikbaar gedeeld bestandssysteem met meerdere prijsniveaus. Amazon EFS is serverloos en groeit en krimpt automatisch als je bestanden toevoegt en verwijdert.

Met SageMaker-training heeft uw trainingsscript toegang tot datasets die zijn opgeslagen op Amazon S3, FSx for Lustre of Amazon EFS, alsof het beschikbaar is op een lokaal bestandssysteem (via een POSIX-compatibele bestandssysteeminterface).

Met Amazon S3 als gegevensbron kunt u kiezen tussen de bestandsmodus, de FastFile-modus en de Pipe-modus:

  • Bestand modus โ€“ SageMaker kopieert een dataset van Amazon S3 naar de ML-instantieopslag, die een bijgevoegde is Amazon elastische blokwinkel (Amazon EBS)-volume of NVMe SSD-volume, voordat uw trainingsscript begint.
  • FastFile-modus โ€“ SageMaker onthult een dataset die zich in Amazon S3 bevindt als een POSIX-bestandssysteem op de trainingsinstantie. Gegevenssetbestanden worden op aanvraag gestreamd vanaf Amazon S3 terwijl uw trainingsscript ze leest.
  • Pijp modus โ€“ SageMaker streamt een dataset die zich in Amazon S3 bevindt naar de ML-trainingsinstantie als een Unix-pipe, die op verzoek van Amazon S3 wordt gestreamd terwijl uw trainingsscript de gegevens uit de pipe leest.

Met FSx voor Lustre of Amazon EFS als gegevensbron koppelt SageMaker het bestandssysteem voordat uw trainingsscript begint.

Invoerkanalen trainen

Wanneer u een SageMaker-trainingstaak start, kunt u maximaal 20 beheerde ingangskanalen trainen. U kunt kanalen zien als een abstractie-eenheid om de trainingstaak te vertellen hoe en waar de gegevens moeten worden opgehaald die beschikbaar worden gesteld aan de algoritmecode om te lezen uit een bestandssysteempad (bijvoorbeeld /opt/ml/input/data/input-channel-name) op de ML-instantie. De geselecteerde trainingskanalen worden vastgelegd als onderdeel van de metadata van de trainingstaak om een โ€‹โ€‹volledige modellijn-tracking mogelijk te maken voor use-cases zoals reproduceerbaarheid van trainingstaken of modelbeheerdoeleinden.

Om Amazon S3 als uw gegevensbron te gebruiken, definieert u een Trainingsinvoer om het volgende te specificeren:

  • Uw invoermodus (File-, FastFile- of Pipe-modus)
  • Distributie en schuifelen configuratie
  • An S3DataType als een van de drie methoden voor het specificeren van objecten in Amazon S3 die deel uitmaken van uw dataset:

Als alternatief definieert u voor FSx voor Lustre of Amazon EFS a Bestandssysteeminvoer.

Het volgende diagram toont vijf trainingstaken, elk geconfigureerd met een andere combinatie van gegevensbron en invoermodus:

Kies de beste gegevensbron voor uw Amazon SageMaker-trainingstaak PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Gegevensbronnen en invoermodi

De volgende secties bieden een diepe duik in de verschillen tussen Amazon S3 (File-modus, FastFile-modus en Pipe-modus), FSx voor Lustre en Amazon EFS als SageMaker-opnamemechanismen.

Amazon S3-bestandsmodus

Bestandsmodus is de standaard invoermodus (als u er niet expliciet een hebt opgegeven), en deze is eenvoudiger te gebruiken. Wanneer u deze invoeroptie gebruikt, downloadt SageMaker namens u de dataset van Amazon S3 naar de ML-trainingsinstance-opslag (Amazon EBS of lokale NVMe afhankelijk van het instancetype) voordat de modeltraining wordt gestart, zodat het trainingsscript de dataset kan lezen van het lokale bestandssysteem. In dit geval moet de instantie voldoende opslagruimte hebben om in de hele gegevensset te passen.

U configureert de gegevensset voor de bestandsmodus door een S3-prefix, manifestbestand of uitgebreid manifestbestand op te geven.

U moet een S3-prefix gebruiken wanneer al uw datasetbestanden zich binnen een gemeenschappelijk S3-prefix bevinden (submappen zijn in orde).

Het manifestbestand bevat de bestanden waaruit uw dataset bestaat. U gebruikt meestal een manifest wanneer een gegevensvoorverwerkingstaak een manifestbestand verzendt, of wanneer uw gegevenssetbestanden zijn verspreid over meerdere S3-prefixen. Een augmented manifest is een JSON-regelbestand, waarbij elke regel een lijst met attributen bevat, zoals een verwijzing naar een bestand in Amazon S3, naast aanvullende attributen, meestal labels. De use-cases zijn vergelijkbaar met die van een manifest.

Bestandsmodus is compatibel met: SageMaker lokale modus (interactief starten van een SageMaker-trainingscontainer in seconden). Voor gedistribueerde training kunt u de dataset over meerdere instanties sharden met de ShardedByS3Key optie.

De downloadsnelheid van de bestandsmodus is afhankelijk van de grootte van de dataset, de gemiddelde bestandsgrootte en het aantal bestanden. Hoe groter de dataset bijvoorbeeld is (of hoe meer bestanden deze heeft), hoe langer de downloadfase is, waarin de computerbron van de instantie effectief inactief blijft. Wanneer u traint met Spot Instances, wordt de dataset gedownload telkens wanneer de taak wordt hervat na een Spot-onderbreking. Doorgaans vindt het downloaden van gegevens plaats met ongeveer 200 MB/sec voor grote bestanden (bijvoorbeeld 5 minuten/50 GB). Of deze opstartoverhead acceptabel is, hangt voornamelijk af van de totale duur van uw trainingstaak, omdat een langere trainingsfase een proportioneel kleinere downloadfase betekent.

Amazon S3 FastFile-modus

FastFile-modus stelt S3-objecten bloot via een POSIX-compatibele bestandssysteeminterface, alsof de bestanden beschikbaar zijn op de lokale schijf van uw trainingsinstantie, en streamt hun inhoud op aanvraag wanneer gegevens worden verbruikt door het trainingsscript. Dit betekent dat uw gegevensset niet langer in de opslagruimte van de trainingsinstantie hoeft te passen en dat u niet hoeft te wachten tot de gegevensset is gedownload naar de trainingsinstantie voordat de training kan beginnen.

Om dit te vergemakkelijken, somt SageMaker alle metagegevens van het object op die zijn opgeslagen onder het opgegeven S3-voorvoegsel voordat uw trainingsscript wordt uitgevoerd. Deze metadata wordt gebruikt om een โ€‹โ€‹alleen-lezen FUSE (bestandssysteem in gebruikersruimte) die beschikbaar is voor uw trainingsscript via /opt/ml/data/training-channel-name. Het aanbieden van S3-objecten loopt zo snel als 5,500 objecten per seconde, ongeacht hun grootte. Dit is veel sneller dan het vooraf downloaden van bestanden, zoals het geval is in de bestandsmodus. Terwijl uw trainingsscript wordt uitgevoerd, kan het bestanden weergeven of lezen alsof ze lokaal beschikbaar zijn. Elke leesbewerking wordt gedelegeerd aan de FUSE-service, die GET-verzoeken proxeert naar Amazon S3 om de daadwerkelijke bestandsinhoud aan de beller te bezorgen. Net als een lokaal bestandssysteem behandelt FastFile bestanden als bytes, dus het is agnostisch voor bestandsindelingen. De FastFile-modus kan een doorvoer van meer dan รฉรฉn GB/s bereiken bij het achtereenvolgens lezen van grote bestanden met meerdere werknemers. U kunt FastFile gebruiken om kleine bestanden te lezen of willekeurige bytebereiken op te halen, maar u mag een lagere doorvoer verwachten voor dergelijke toegangspatronen. U kunt uw leestoegangspatroon optimaliseren door veel kleine bestanden te serialiseren in grotere bestandscontainers en ze opeenvolgend te lezen.

FastFile ondersteunt momenteel alleen S3-prefixen (geen ondersteuning voor manifest en augmented manifest) en de FastFile-modus is compatibel met de lokale modus van SageMaker.

Amazon S3 Pijpmodus

Pipe-modus is een andere streamingmodus die grotendeels is vervangen door de nieuwere en eenvoudiger te gebruiken FastFile-modus.

Met de Pipe-modus worden gegevens vooraf opgehaald van Amazon S3 met hoge gelijktijdigheid en doorvoer, en gestreamd naar Unix genaamd FIFO-pipes. Elke pijp mag slechts door een enkel proces worden gelezen. Een SageMaker-specifieke uitbreiding van TensorFlow handig integreert de Pipe-modus in de native TensorFlow-gegevenslader voor het streamen van tekst, TFRecords of RecordIO-bestandsindelingen. De Pipe-modus ondersteunt ook beheerde sharding en shuffling van gegevens.

FSx voor glans

FSx voor Lustre kan worden geschaald tot honderden GB/s aan doorvoer en miljoenen IOPS met het ophalen van bestanden met lage latentie.

Bij het starten van een trainingstaak koppelt SageMaker het FSx for Luster-bestandssysteem aan het trainingsinstantiebestandssysteem en start vervolgens uw trainingsscript. Het monteren zelf is een relatief snelle operatie die niet afhankelijk is van de grootte van de dataset die is opgeslagen in FSx voor Lustre.

In veel gevallen maakt u een FSx voor Lustre-bestandssysteem en koppel het aan een S3-bucket en voorvoegsel. Wanneer ze als bron aan een S3-bucket zijn gekoppeld, worden bestanden lui geladen in het bestandssysteem terwijl uw trainingsscript ze leest. Dit betekent dat direct na het eerste tijdperk van uw eerste trainingsrun, de volledige dataset wordt gekopieerd van Amazon S3 naar de FSx voor Lustre-opslag (ervan uitgaande dat een tijdperk wordt gedefinieerd als een enkele volledige sweep door de trainingsvoorbeelden, en dat de toegewezen FSx voor Lustre opslag is groot genoeg). Dit maakt bestandstoegang met lage latentie mogelijk voor alle volgende tijdperken en trainingstaken met dezelfde dataset.

Ook bestanden vooraf in het bestandssysteem laden voordat u met de trainingstaak begint, wat de koude start door lui laden verlicht. Het is ook mogelijk om meerdere trainingstaken parallel uit te voeren die worden bediend door hetzelfde FSx for Luster-bestandssysteem. Om toegang te krijgen tot FSx for Lustre, moet uw trainingstaak verbinding maken met een VPC (zie VPCConfig-instellingen), waarvoor DevOps-installatie en betrokkenheid vereist zijn. Om kosten voor gegevensoverdracht te vermijden, gebruikt het bestandssysteem รฉรฉn enkele beschikbaarheidszone en moet u deze beschikbaarheidszone-ID opgeven wanneer u de trainingstaak uitvoert. Omdat je Amazon S3 gebruikt als je gegevensopslag voor de lange termijn, raden we je aan om je FSx for Luster met Scratch 2-opslag in te zetten, als een kosteneffectieve opslagoptie voor de korte termijn voor een hoge doorvoer, met een basislijn van 200 MB/s en een burst van maximaal 1300 MB/s per TB ingerichte opslag.

Met uw FSx for Lustre-bestandssysteem constant actief, kunt u nieuwe trainingstaken starten zonder te wachten tot er een bestandssysteem is gemaakt, en hoeft u zich geen zorgen te maken over de koude start tijdens het allereerste tijdperk (omdat bestanden nog steeds in de cache kunnen worden opgeslagen in het FSx for Lustre-bestandssysteem). Het nadeel van dit scenario zijn de extra kosten die gepaard gaan met het draaiende houden van het bestandssysteem. Als alternatief kunt u het bestandssysteem voor en na elke trainingstaak maken en verwijderen (waarschijnlijk met automatisering via scripts om te helpen), maar het kost tijd om een โ€‹โ€‹FSx voor Lustre-bestandssysteem te initialiseren, wat evenredig is aan het aantal bestanden dat het bevat (voor het duurt bijvoorbeeld ongeveer een uur om ongeveer 2 miljoen objecten van Amazon S3) te indexeren.

Amazon EFS

We raden aan om Amazon EFS te gebruiken als je trainingsgegevens al in Amazon EFS staan โ€‹โ€‹vanwege gebruiksscenario's naast ML-training. Om Amazon EFS als gegevensbron te gebruiken, moeten de gegevens zich al vรณรณr de training in Amazon EFS bevinden. SageMaker koppelt het gespecificeerde Amazon EFS-bestandssysteem aan de trainingsinstantie en start vervolgens uw trainingsscript. Bij het configureren van het Amazon EFS-bestandssysteem moet u kiezen tussen de standaard prestatiemodus voor algemeen gebruik, die is geoptimaliseerd voor latentie (goed voor kleine bestanden), en de maximale I/O-prestatiemodus, die kan worden geschaald naar hogere niveaus van geaggregeerde doorvoer en bewerkingen per seconde (beter voor trainingstaken met veel I/O-werknemers). Raadpleeg voor meer informatie: De juiste prestatiemodus gebruiken.

Bovendien kunt u kiezen tussen twee opties voor doorvoer met gemeten doorvoer: bursting-doorvoer en ingerichte doorvoer. Bursting-doorvoer voor een bestandssysteem van 1 TB biedt een basislijn van 150 MB/s, terwijl het voor een periode van 300 uur per dag tot 12 MB/s kan oplopen. Als u een hogere baseline-doorvoer nodig heeft, of merkt dat u te vaak zonder burst-credits komt te zitten, kunt u ofwel de grootte van het bestandssysteem vergroten of overschakelen naar ingerichte doorvoer. Bij ingerichte doorvoer betaalt u voor de gewenste baseline doorvoer tot een maximum van 3072 MB/s leessnelheid.

Je trainingsjob moet verbonden zijn met een VPC (zie VPCConfig-instellingen) om toegang te krijgen tot Amazon EFS.

De beste gegevensbron kiezen

De beste gegevensbron voor uw trainingstaak hangt af van de kenmerken van de werkbelasting, zoals de grootte van de gegevensset, de bestandsindeling, de gemiddelde bestandsgrootte, de duur van de training, het sequentiรซle of willekeurige leespatroon van de gegevenslader en hoe snel uw model de trainingsgegevens kan verwerken.

Het volgende stroomdiagram biedt enkele richtlijnen om u op weg te helpen:
Kies de beste gegevensbron voor uw Amazon SageMaker-trainingstaak PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Wanneer Amazon EFS gebruiken?

Als uw dataset voornamelijk is opgeslagen op Amazon EFS, heeft u mogelijk een preprocessing- of annotatietoepassing die Amazon EFS gebruikt voor opslag. U kunt eenvoudig een trainingstaak uitvoeren die is geconfigureerd met een gegevenskanaal dat verwijst naar het Amazon EFS-bestandssysteem (raadpleeg voor meer informatie Versnel de training op Amazon SageMaker met Amazon FSx voor Luster- en Amazon EFS-bestandssystemen). Als de prestaties niet zo goed zijn als u had verwacht, controleer dan uw optimalisatie-opties met de Amazon EFS-prestatiegids, of overweeg andere invoermodi.

Gebruik de bestandsmodus voor kleine datasets

Als de dataset is opgeslagen op Amazon S3 en het totale volume relatief klein is (bijvoorbeeld minder dan 50-100 GB), probeer dan de bestandsmodus te gebruiken. De overhead van het downloaden van een dataset van 50 GB kan variรซren op basis van het totale aantal bestanden (bijvoorbeeld ongeveer 5 minuten indien opgedeeld in shards van 100 MB). Of deze opstartoverhead acceptabel is, hangt voornamelijk af van de totale duur van uw trainingstaak, omdat een langere trainingsfase een proportioneel kleinere downloadfase betekent.

Veel kleine bestanden samen serialiseren

Als uw dataset klein is (minder dan 50โ€“100 GB), maar bestaat uit veel kleine bestanden (minder dan 50 MB), neemt de downloadoverhead in de bestandsmodus toe, omdat elk bestand afzonderlijk moet worden gedownload van Amazon S3 naar de volume van de trainingsinstantie. Om deze overhead te verminderen en de gegevensoverdracht in het algemeen te versnellen, kunt u overwegen om groepen kleinere bestanden te serialiseren in minder grotere bestandscontainers (zoals 150 MB per bestand) door bestandsindelingen te gebruiken zoals TFRecord voor TensorFlow, Webgegevensset voor PyTorch, of RecordIO voor MXNet. Voor deze indelingen moet uw gegevenslader de voorbeelden achtereenvolgens doorlopen. U kunt uw gegevens nog steeds willekeurig herschikken door de lijst met TFRecord-bestanden na elk tijdperk willekeurig opnieuw te ordenen en door willekeurig gegevens uit een lokale shuffle-buffer te samplen (zie het volgende TensorFlow voorbeeld).

Wanneer FastFile-modus gebruiken?

Voor grotere datasets met grotere bestanden (meer dan 50 MB), is de eerste optie om de FastFile-modus te proberen, die eenvoudiger te gebruiken is dan FSx for Luster omdat er geen bestandssysteem voor hoeft te worden gemaakt of verbinding met een VPC hoeft te worden gemaakt. FastFile-modus is ideaal voor grote bestandscontainers (meer dan 150 MB) en kan ook goed werken met bestanden van meer dan 50 MB. Omdat de FastFile-modus een POSIX-interface biedt, ondersteunt deze willekeurige leesbewerkingen (lezen van niet-sequentiรซle bytebereiken). Dit is echter niet de ideale use-case en uw doorvoer zou waarschijnlijk lager zijn dan bij de sequentiรซle leesbewerkingen. Als u echter een relatief groot en rekenintensief ML-model hebt, kan de FastFile-modus mogelijk nog steeds de effectieve bandbreedte van de trainingspijplijn verzadigen en niet resulteren in een I/O-knelpunt. Je zult moeten experimenteren en zien. Gelukkig is het overschakelen van de bestandsmodus naar FastFile (en terug) net zo eenvoudig als het toevoegen (of verwijderen) van de input_mode='FastFile' parameter tijdens het definiรซren van uw invoerkanaal met behulp van de SageMaker Python SDK:

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

Er hoeft geen andere code of configuratie te worden gewijzigd.

Wanneer gebruik je FSx voor glans?

Als uw dataset te groot is voor de bestandsmodus, of veel kleine bestanden heeft (die u niet gemakkelijk kunt serialiseren), of als u een willekeurig leestoegangspatroon heeft, is FSx voor Luster een goede optie om te overwegen. Het bestandssysteem schaalt tot honderden GB/s aan doorvoer en miljoenen IOPS, wat ideaal is als je veel kleine bestanden hebt. Houd echter, zoals eerder besproken, rekening met de problemen met de koude start als gevolg van lui laden en de overhead van het instellen en initialiseren van het FSx for Luster-bestandssysteem.

Kostenoverwegingen

Voor de meeste ML-trainingstaken, met name taken die gebruik maken van GPU's of speciaal gebouwde ML-chips, zijn de meeste kosten om te trainen de factureerbare seconden van de ML-trainingsinstantie. Opslag GB per maand, API-verzoeken en ingerichte doorvoer zijn extra kosten die rechtstreeks verband houden met de gegevensbronnen die u gebruikt.

Opslag GB per maand

Opslag GB per maand kan aanzienlijk zijn voor grotere datasets, zoals video's, LiDAR-sensorgegevens en realtime biedingslogboeken van AdTech. Bijvoorbeeld door 1 TB op te slaan in de Amazon S3 Intelligent Tiering Frequent Access Tier kost $23 per maand. Het toevoegen van het FSx for Luster-bestandssysteem bovenop Amazon S3 resulteert in extra kosten. Het maken van bijvoorbeeld een 1.2 TB-bestandssysteem van het SSD-backed Scratch 2-type met datacompressie uitgeschakeld kost $ 168 extra per maand ($ 140/TB/maand).

Met Amazon S3 en Amazon EFS betaalt u alleen voor wat u gebruikt, wat inhoudt dat u wordt afgerekend op basis van de werkelijke grootte van de dataset. Met FSx voor Lustre betaalt u de grootte van het ingerichte bestandssysteem (minimaal 1.2 TB). Bij het uitvoeren van ML-instanties met EBS-volumes, wordt Amazon EBS onafhankelijk van de ML-instantie in rekening gebracht. Dit zijn meestal veel lagere kosten in vergelijking met de kosten van het uitvoeren van de instantie. Het uitvoeren van bijvoorbeeld een ml.p3.2xlarge-instantie met een EBS-volume van 100 GB gedurende 1 uur kost $ 3.825 voor de instantie en $ 0.02 voor het EBS-volume.

API-verzoeken en ingerichte doorvoerkosten

Terwijl uw trainingstaak de dataset doorloopt, worden bestanden weergegeven en opgehaald door Amazon S3 API-verzoeken te verzenden. Elk miljoen GET-verzoeken kost bijvoorbeeld $ 0.4 (met de Intelligent-Tiering-klasse). U mag geen kosten voor gegevensoverdracht verwachten voor bandbreedte in en uit Amazon S3, omdat de training plaatsvindt in รฉรฉn enkele Beschikbaarheidszone.

Wanneer u een FSx for Luster gebruikt die is gekoppeld aan een S3-bucket, maakt u Amazon S3 API-verzoekkosten voor het lezen van gegevens die nog niet in het bestandssysteem zijn opgeslagen, omdat FSx For Luster het verzoek naar Amazon S3 stuurt (en het resultaat in de cache opslaat). ). Er zijn geen directe aanvraagkosten voor FSx voor Lustre zelf. Wanneer u een FSx for Luster-bestandssysteem gebruikt, vermijd dan kosten voor gegevensoverdracht tussen verschillende beschikbaarheidszones door uw trainingstaak uit te voeren die is verbonden met dezelfde beschikbaarheidszone waarin u het bestandssysteem hebt ingericht. Amazon EFS met ingerichte doorvoer voegt extra kosten toe aan consdier beyond GB per maand.

Casestudy prestaties

Om de eerder genoemde overwegingen met betrekking tot trainingsprestaties te demonstreren, hebben we een reeks benchmarks uitgevoerd voor een realistische use-case in het computervisiedomein. De benchmark (en afhaalpunten) uit deze sectie zijn mogelijk niet van toepassing op alle scenario's en worden beรฏnvloed door verschillende vooraf bepaalde factoren die we hebben gebruikt, zoals DNN. We hebben tests uitgevoerd voor 12 combinaties van de volgende:

  • Invoermodi โ€“ FSx voor Lustre, Bestandsmodus, FastFile-modus
  • Grootte gegevensset โ€“ Kleinere dataset (1 GB), grotere dataset (54 GB)
  • Bestandsgrootte โ€“ Kleinere bestanden (JPG's, ongeveer 39 KB), grotere bestanden (TFRecord, ongeveer 110 MB)

Voor deze casestudy hebben we de meest gebruikte invoermodi gekozen en daarom Amazon EFS en Pipe-modus weggelaten.

De benchmarks van de casestudy's zijn ontworpen als end-to-end SageMaker TensorFlow-trainingstaken op een ml.p3.2xlarge single-GPU-instantie. We kozen de gerenommeerde ResNet-50 als ons ruggengraatmodel voor de classificatietaak en Caltech-256 als de kleinere trainingsdataset (die we 50 keer hebben gerepliceerd om de grotere datasetversie te maken). We voerden de training uit voor รฉรฉn tijdperk, gedefinieerd als een enkele volledige sweep volgens de trainingsvoorbeelden.

De volgende grafieken tonen de totale factureerbare tijd van de SageMaker-trainingstaken voor elk benchmarkscenario. De totale taaktijd zelf bestaat uit downloaden, training en andere fasen (zoals het opstarten van containers en het uploaden van getrainde modelartefacten naar Amazon S3). Kortere factureerbare tijden vertalen zich in snellere en goedkopere opleidingsopdrachten.

Kies de beste gegevensbron voor uw Amazon SageMaker-trainingstaak PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Laten we eerst bespreken Scenario A en Scenario C, die handig het prestatieverschil tussen invoermodi demonstreren wanneer de gegevensset uit veel kleine bestanden bestaat.

Scenario A (kleinere bestanden, kleinere dataset) laat zien dat de trainingstaak met het FSx for Luster-bestandssysteem de kleinste factureerbare tijd heeft. Het heeft de kortste downloadfase en de trainingsfase is net zo snel als de bestandsmodus, maar sneller dan FastFile. FSx for Luster is de winnaar in deze test voor รฉรฉn tijdperk. Dat gezegd hebbende, overweeg een vergelijkbare werklast maar met meerdere tijdperken - de relatieve overhead van de bestandsmodus als gevolg van de downloadfase neemt af naarmate er meer tijdperken worden toegevoegd. In dit geval geven we de voorkeur aan de bestandsmodus vanwege het gebruiksgemak. Bovendien zou je kunnen ontdekken dat het gebruik van de bestandsmodus en het betalen voor 100 extra factureerbare seconden een betere keuze is dan het betalen voor en het leveren van een FSx voor Lustre-bestandssysteem.

Scenario C (kleinere bestanden, grotere dataset) toont FSx for Luster als de snelste modus, met slechts 5,000 seconden totale factureerbare tijd. Het heeft ook de kortste downloadfase, omdat het aankoppelen van de FSx voor het Luster-bestandssysteem niet afhankelijk is van het aantal bestanden in het bestandssysteem (in dit geval 1.5 miljoen bestanden). De downloadoverhead van FastFile is ook klein; het haalt alleen metadata op van de bestanden die zich onder het gespecificeerde S3-bucketprefix bevinden, terwijl de inhoud van de bestanden wordt gelezen tijdens de trainingsfase. Bestandsmodus is de langzaamste modus en kost 10,000 seconden om de volledige dataset vooraf te downloaden voordat u begint met trainen. Als we naar de trainingsfase kijken, laten FSx voor Lustre en File-modus vergelijkbare uitstekende prestaties zien. Wat betreft FastFile-modus, wanneer kleinere bestanden rechtstreeks vanaf Amazon S3 worden gestreamd, wordt de overhead voor het verzenden van een nieuw GET-verzoek voor elk bestand aanzienlijk in verhouding tot de totale duur van de bestandsoverdracht (ondanks het gebruik van een zeer parallelle gegevenslader met prefetch-buffer). Dit resulteert in een algehele lagere doorvoer voor de FastFile-modus, wat een I/O-knelpunt vormt voor de trainingstaak. FSx for Luster is de duidelijke winnaar in dit scenario.

Scenario's B en D laat het prestatieverschil tussen invoermodi zien wanneer de gegevensset uit minder grotere bestanden bestaat. Opeenvolgend lezen met grotere bestanden resulteert doorgaans in betere I/O-prestaties omdat het effectieve buffering mogelijk maakt en het aantal I/O-bewerkingen vermindert.

Scenario B (grotere bestanden, kleinere dataset) toont vergelijkbare trainingsfasetijd voor alle modi (getuigt dat de training niet I/O-gebonden is). In dit scenario geven we de voorkeur aan de FastFile-modus boven de bestandsmodus vanwege de kortere downloadfase, en geven we de voorkeur aan de FastFile-modus boven FSx voor Lustre vanwege het gebruiksgemak van de eerste.

Scenario D (grotere bestanden, grotere dataset) toont relatief vergelijkbare totale factureerbare tijden voor alle drie de modi. De downloadfase van de bestandsmodus is langer dan die van FSx voor Lustre en FastFile. De bestandsmodus downloadt de volledige dataset (54 GB) van Amazon S3 naar de trainingsinstantie voordat de trainingsfase wordt gestart. Alle drie de modi brengen dezelfde tijd door in de trainingsfase, omdat alle modi gegevens snel genoeg kunnen ophalen en GPU-gebonden zijn. Als we ML-instanties gebruiken met extra CPU- of GPU-bronnen, zoals ml.p4d.24xlarge, neemt de vereiste gegevens-I/O-doorvoer om de rekenbronnen te verzadigen toe. In deze gevallen kunnen we verwachten dat FastFile en FSx for Luster hun doorvoer met succes zullen schalen (de doorvoer van FSx voor Luster is echter afhankelijk van de grootte van het ingerichte bestandssysteem). Het vermogen van de bestandsmodus om de doorvoer te schalen, hangt af van de doorvoer van het schijfvolume dat aan de instantie is gekoppeld. Bijvoorbeeld, door Amazon EBS ondersteunde instanties (zoals ml.p3.2xlarge, ml.p3.8xlarge en ml.p3.16xlarge) zijn beperkt tot een maximale doorvoer van 250 MB/s, terwijl lokale NVMe-ondersteunde instanties (zoals ml. g5.* of ml.p4d.24xlarge) is geschikt voor een veel grotere doorvoer.

Samenvattend geloven we dat FastFile de winnaar is voor dit scenario omdat het sneller is dan de bestandsmodus, en net zo snel als FSx voor Lustre, maar toch gebruiksvriendelijker, minder kost en de doorvoer gemakkelijk kan opschalen als dat nodig is.

Bovendien, als we een veel grotere dataset hadden (verschillende TB's groot), zou de bestandsmodus vele uren besteden aan het downloaden van de dataset voordat de training kon beginnen, terwijl FastFile aanzienlijk sneller zou kunnen beginnen met trainen.

Breng uw eigen gegevensopname mee

De native gegevensbron van SageMaker past in de meeste, maar niet alle mogelijke ML-trainingsscenario's. De situaties waarin u mogelijk naar andere opties voor gegevensopname moet zoeken, zijn onder meer het lezen van gegevens rechtstreeks van een opslagproduct van derden (ervan uitgaande dat een gemakkelijke en tijdige export naar Amazon S3 niet mogelijk is), of het hebben van een sterke vereiste voor dezelfde training script om onveranderd uit te voeren op zowel SageMaker als Amazon Elastic Compute-cloud (Amazon EC2) of Amazon Elastic Kubernetes-service (Amazon EKS). U kunt deze gevallen aanpakken door uw mechanisme voor gegevensopname in het trainingsscript te implementeren. Dit mechanisme is verantwoordelijk voor het inlezen van gegevenssets uit externe gegevensbronnen in het trainingsexemplaar. Bijvoorbeeld de TFRecordDataset van de TensorFlow's tf.data bibliotheek kan rechtstreeks uit Amazon S3-opslag lezen.

Als uw mechanisme voor gegevensopname AWS-services moet aanroepen, zoals: Amazon relationele databaseservice (Amazon RDS), zorg ervoor dat de AWS Identiteits- en toegangsbeheer (IAM) rol van uw trainingstaak omvat het relevante IAM-beleid. Als de gegevensbron zich in Amazon virtuele privรฉcloud (Amazon VPC), moet u uw trainingstaak uitvoeren die is verbonden met dezelfde VPC.

Wanneer u de opname van gegevenssets zelf beheert, kan SageMaker-afstammingsregistratie niet automatisch de gegevenssets registreren die tijdens de training worden gebruikt. Overweeg daarom alternatieve mechanismen, zoals het trainen van jobtags of hyperparameters, om uw relevante metadata vast te leggen.

Conclusie

Het kiezen van de juiste SageMaker-trainingsgegevensbron kan een diepgaand effect hebben op de snelheid, het gebruiksgemak en de kosten van het trainen van ML-modellen. Gebruik het meegeleverde stroomdiagram om snel aan de slag te gaan, de resultaten te observeren en indien nodig te experimenteren met aanvullende configuraties. Houd rekening met de voor-, nadelen en beperkingen van elke gegevensbron en hoe goed ze passen bij de individuele vereisten van uw trainingstaak. Neem contact op met een AWS-contactpersoon voor meer informatie en hulp.


Over de auteurs

Kies de beste gegevensbron voor uw Amazon SageMaker-trainingstaak PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Gili Nachum is een senior AI/ML Specialist Solutions Architect die werkt als onderdeel van het EMEA Amazon Machine Learning-team. Gili is gepassioneerd door de uitdagingen van het trainen van deep learning-modellen en hoe machine learning de wereld zoals wij die kennen verandert. In zijn vrije tijd speelt Gili graag tafeltennis.

Kies de beste gegevensbron voor uw Amazon SageMaker-trainingstaak PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr. Alexander Arzjanov is een AI/ML Specialist Solutions Architect gevestigd in Frankfurt, Duitsland. Hij helpt AWS-klanten bij het ontwerpen en implementeren van hun ML-oplossingen in de EMEA-regio. Voordat hij bij AWS kwam, deed Alexander onderzoek naar de oorsprong van zware elementen in ons universum en raakte hij gepassioneerd door ML nadat hij het in zijn grootschalige wetenschappelijke berekeningen had gebruikt.

Tijdstempel:

Meer van AWS-machine learning