Choose the best data source for your Amazon SageMaker training job PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Alegeți cea mai bună sursă de date pentru jobul dvs. de formare Amazon SageMaker

Amazon SageMaker este un serviciu gestionat care facilitează construirea, instruirea și implementarea modelelor de învățare automată (ML). Oamenii de știință de date folosesc joburi de instruire SageMaker pentru a antrena cu ușurință modele ML; nu trebuie să vă faceți griji cu privire la gestionarea resurselor de calcul și plătiți doar pentru timpul efectiv de antrenament. Ingestia de date este o parte integrantă a oricărei conducte de instruire, iar joburile de instruire SageMaker acceptă o varietate de moduri de stocare și introducere a datelor pentru a se potrivi unei game largi de sarcini de antrenament.

Această postare vă ajută să alegeți cea mai bună sursă de date pentru cazul dvs. de utilizare a instruirii SageMaker ML. Introducem opțiunile surselor de date pe care joburile de formare SageMaker le acceptă nativ. Pentru fiecare sursă de date și mod de intrare, descriem ușurința în utilizare, caracteristicile de performanță, costul și limitările. Pentru a vă ajuta să începeți rapid, oferim diagramei un exemplu de flux de decizie pe care îl puteți urma pe baza caracteristicilor cheie ale volumului de lucru. În cele din urmă, efectuăm câteva benchmark-uri pentru scenarii de antrenament realiste pentru a demonstra implicațiile practice asupra costului și performanței generale a instruirii.

Surse de date native și moduri de intrare SageMaker

Citirea datelor de antrenament cu ușurință și flexibilitate într-un mod performant este o preocupare frecventă recurentă pentru antrenamentul ML. SageMaker simplifică ingerarea de date cu o selecție de mecanisme eficiente de absorbție a datelor, numite surse de date și modurile de intrare respective. Acest lucru vă permite să decuplați codul de antrenament de sursa reală de date, să montați automat sisteme de fișiere, să citiți cu performanță ridicată, să activați cu ușurință fragmentarea datelor între GPU-uri și instanțe pentru a activa paralelismul datelor și să amestecați automat datele la începutul fiecărei epoci.

Mecanismul de introducere a instruirii SageMaker se integrează nativ cu trei servicii de stocare gestionate de AWS:

  • Serviciul Amazon de stocare simplă (Amazon S3) este un serviciu de stocare a obiectelor care oferă scalabilitate, disponibilitate a datelor, securitate și performanță de vârf.
  • Amazon FSx pentru Luster este o stocare partajată complet gestionată, cu scalabilitatea și performanța popularului sistem de fișiere Luster. De obicei, este conectat la o găleată S3 existentă.
  • Sistem de fișiere elastice Amazon (Amazon EFS) este un sistem de fișiere partajat de uz general, scalabil și foarte disponibil, cu mai multe niveluri de preț. Amazon EFS nu are server și crește și se micșorează automat pe măsură ce adăugați și eliminați fișiere.

Instruirea SageMaker permite scriptului dvs. de antrenament să acceseze seturi de date stocate pe Amazon S3, FSx for Lustre sau Amazon EFS, ca și cum ar fi disponibil pe un sistem de fișiere local (prin intermediul unei interfețe de sistem de fișiere compatibile cu POSIX).

Cu Amazon S3 ca sursă de date, puteți alege între modul Fișier, modul FastFile și modul Pipe:

  • Modul fișier – SageMaker copiază un set de date din Amazon S3 în stocarea instanței ML, care este atașată Magazin Amazon Elastic Block (Amazon EBS) sau volumul SSD NVMe, înainte de a începe scriptul de antrenament.
  • Modul FastFile – SageMaker expune un set de date care se află în Amazon S3 ca sistem de fișiere POSIX pe instanța de antrenament. Fișierele setului de date sunt transmise în flux de pe Amazon S3 la cerere, pe măsură ce le citește scriptul de antrenament.
  • Modul țeavă – SageMaker transmite în flux un set de date care se află în Amazon S3 către instanța de antrenament ML ca un canal Unix, care este transmis din Amazon S3 la cerere, pe măsură ce scriptul de antrenament citește datele din conductă.

Cu FSx pentru Luster sau Amazon EFS ca sursă de date, SageMaker montează sistemul de fișiere înainte de a începe scriptul de antrenament.

Canale de intrare de antrenament

Când lansați o lucrare de formare SageMaker, puteți specifica până la 20 gestionate canale de intrare de antrenament. Vă puteți gândi la canale ca la o unitate de abstractizare pentru a spune jobului de formare cum și unde să obțineți datele care sunt puse la dispoziție codului algoritm pentru a le citi dintr-o cale a sistemului de fișiere (de exemplu, /opt/ml/input/data/input-channel-name) pe instanța ML. Canalele de instruire selectate sunt capturate ca parte a metadatelor jobului de formare pentru a permite o urmărire completă a descendenței modelului pentru cazuri de utilizare, cum ar fi reproductibilitatea joburilor de formare sau în scopuri de guvernare a modelului.

Pentru a utiliza Amazon S3 ca sursă de date, definiți a TrainingInput pentru a specifica următoarele:

  • Modul dvs. de introducere (mod Fișier, FastFile sau Pipe)
  • Distribuire și amestecând configuraţie
  • An S3DataType ca una dintre cele trei metode de specificare a obiectelor în Amazon S3 care alcătuiesc setul de date:

Alternativ, pentru FSx pentru Luster sau Amazon EFS, definiți a FileSystemInput.

Următoarea diagramă prezintă cinci joburi de instruire, fiecare configurată cu o sursă de date și o combinație diferită de mod de intrare:

Choose the best data source for your Amazon SageMaker training job PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Surse de date și moduri de intrare

Următoarele secțiuni oferă o analiză profundă a diferențelor dintre Amazon S3 (modul Fișier, modul FastFile și modul Pipe), FSx pentru Lustre și Amazon EFS ca mecanisme de asimilare SageMaker.

Modul fișier Amazon S3

Modul fișier este modul de introducere implicit (dacă nu ați specificat unul în mod explicit) și este mai simplu de utilizat. Când utilizați această opțiune de introducere, SageMaker descarcă setul de date din Amazon S3 în stocarea instanței de antrenament ML (Amazon EBS sau NVMe local, în funcție de tipul de instanță) în numele dvs. înainte de a lansa antrenamentul modelului, astfel încât scriptul de antrenament să poată citi setul de date din sistemul de fișiere local. În acest caz, instanța trebuie să aibă suficient spațiu de stocare pentru a se potrivi întregului set de date.

Configurați setul de date pentru modul Fișier furnizând fie un prefix S3, un fișier manifest, fie un fișier manifest augmentat.

Ar trebui să utilizați un prefix S3 atunci când toate fișierele setului de date se află într-un prefix comun S3 (subfolderele sunt în regulă).

Fișierul manifest listează fișierele care cuprind setul de date. De obicei, utilizați un manifest atunci când un job de preprocesare a datelor emite un fișier manifest sau când fișierele setului de date sunt răspândite în mai multe prefixe S3. Un manifest augmentat este un fișier de linie JSON, în care fiecare linie conține o listă de atribute, cum ar fi o referință la un fișier din Amazon S3, alături de atribute suplimentare, în principal etichete. Cazurile sale de utilizare sunt similare cu cele ale unui manifest.

Modul fișier este compatibil cu Modul local SageMaker (pornirea interactivă a unui container de antrenament SageMaker în câteva secunde). Pentru instruire distribuită, puteți împărți setul de date în mai multe instanțe cu ShardedByS3Key opțiune.

Viteza de descărcare în modul fișier depinde de dimensiunea setului de date, dimensiunea medie a fișierului și numărul de fișiere. De exemplu, cu cât setul de date este mai mare (sau cu cât are mai multe fișiere), cu atât etapa de descărcare este mai lungă, timp în care resursa de calcul a instanței rămâne efectiv inactivă. Când se antrenează cu Instanțele Spot, setul de date este descărcat de fiecare dată când lucrarea se reia după o întrerupere Spot. De obicei, descărcarea datelor are loc la aproximativ 200 MB/s pentru fișiere mari (de exemplu, 5 minute/50 GB). Dacă această suprasarcină de pornire este acceptabilă, depinde în primul rând de durata totală a jobului dvs. de formare, deoarece o fază de pregătire mai lungă înseamnă o fază de descărcare proporțional mai mică.

Modul Amazon S3 FastFile

Modul FastFile expune obiectele S3 printr-o interfață de sistem de fișiere compatibilă cu POSIX, ca și cum fișierele ar fi disponibile pe discul local al instanței de antrenament și transmite conținutul lor la cerere atunci când datele sunt consumate de scriptul de antrenament. Aceasta înseamnă că setul dvs. de date nu mai trebuie să se încadreze în spațiul de stocare al instanței de antrenament și nu trebuie să așteptați ca setul de date să fie descărcat în instanța de antrenament înainte de a începe antrenamentul.

Pentru a facilita acest lucru, SageMaker listează toate metadatele obiectului stocate sub prefixul S3 specificat înainte de rularea scriptului de antrenament. Aceste metadate sunt folosite pentru a crea o versiune numai pentru citire FUSE (sistem de fișiere în spațiul utilizator) care este disponibil pentru scriptul dvs. de antrenament prin /opt/ml/data/training-channel-name. Listarea obiectelor S3 rulează până la 5,500 de obiecte pe secundă, indiferent de dimensiunea acestora. Acest lucru este mult mai rapid decât descărcarea fișierelor în avans, așa cum este cazul în modul Fișier. În timp ce scriptul dvs. de antrenament rulează, acesta poate lista sau citi fișiere ca și cum ar fi disponibile local. Fiecare operație de citire este delegată serviciului FUSE, care trimite cererile GET către Amazon S3 pentru a livra conținutul real al fișierului apelantului. La fel ca un sistem de fișiere local, FastFile tratează fișierele ca octeți, deci este agnostic pentru formatele de fișiere. Modul FastFile poate atinge un debit de mai mult de un GB/s atunci când citesc fișiere mari secvențial folosind mai mulți lucrători. Puteți utiliza FastFile pentru a citi fișiere mici sau pentru a prelua intervale aleatorii de octeți, dar ar trebui să vă așteptați la un debit mai mic pentru astfel de modele de acces. Vă puteți optimiza modelul de acces la citire prin serializarea multor fișiere mici în containere de fișiere mai mari și citiți-le secvenţial.

FastFile acceptă în prezent numai prefixele S3 (fără suport pentru manifest și manifest augmentat), iar modul FastFile este compatibil cu modul local SageMaker.

Modul Amazon S3 Pipe

Modul Pipe este un alt mod de streaming care este în mare parte înlocuit de modul FastFile mai nou și mai simplu de utilizat.

Cu modul Pipe, datele sunt preluate în prealabil de la Amazon S3 la concurență și debit ridicat și sunt transmise în flux în conductele Unix numite FIFO. Fiecare conductă poate fi citită doar printr-un singur proces. O extensie specifică SageMaker pentru TensorFlow în mod convenabil integrează modul Pipe în încărcătorul de date nativ TensorFlow pentru streaming de text, TFRecords sau formate de fișiere RecordIO. Modul Pipe acceptă, de asemenea, fragmentarea gestionată și amestecarea datelor.

FSx pentru Luster

FSx for Luster se poate scala la sute de GB/s de debit și milioane de IOPS cu recuperarea fișierelor cu latență scăzută.

Când începe un job de antrenament, SageMaker montează sistemul de fișiere FSx for Luster pe sistemul de fișiere ale instanței de antrenament, apoi pornește scriptul de antrenament. Montarea în sine este o operațiune relativ rapidă care nu depinde de dimensiunea setului de date stocat în FSx pentru Lustre.

În multe cazuri, creați un sistem de fișiere FSx pentru Luster și conectați-l la o găleată și prefix S3. Când sunt conectate la o găleată S3 ca sursă, fișierele sunt încărcate leneș în sistemul de fișiere pe măsură ce le citește scriptul de antrenament. Aceasta înseamnă că, imediat după prima epocă a primei curse de antrenament, întregul set de date este copiat de pe Amazon S3 pe FSx pentru stocarea Luster (presupunând că o epocă este definită ca o singură trecere completă, având în vedere exemplele de antrenament și că FSx alocat pentru Spațiul de depozitare a luciului este suficient de mare). Acest lucru permite accesul la fișiere cu latență scăzută pentru orice epocă ulterioară și joburi de antrenament cu același set de date.

Puteţi, de asemenea, preîncărcați fișierele în sistemul de fișiere înainte de a începe munca de antrenament, ceea ce atenuează pornirea la rece din cauza încărcării leneșe. De asemenea, este posibil să rulați mai multe joburi de instruire în paralel, care sunt deservite de același sistem de fișiere FSx pentru Luster. Pentru a accesa FSx pentru Lustre, jobul dvs. de antrenament trebuie să se conecteze la un VPC (vezi setări VPCConfig), care necesită configurarea și implicarea DevOps. Pentru a evita costurile de transfer de date, sistemul de fișiere utilizează o singură zonă de disponibilitate și trebuie să specificați acest ID de zonă de disponibilitate atunci când rulați sarcina de antrenament. Deoarece utilizați Amazon S3 ca stocare de date pe termen lung, vă recomandăm să implementați FSx pentru Luster cu stocare Scratch 2, ca o opțiune de stocare rentabilă, pe termen scurt, pentru un debit mare, oferind o linie de bază de 200 MB/s și o explozie de până la 1300 MB/s per TB de stocare asigurată.

Cu sistemul dvs. de fișiere FSx for Luster care rulează în mod constant, puteți începe noi lucrări de antrenament fără a aștepta crearea unui sistem de fișiere și nu trebuie să vă faceți griji cu privire la pornirea la rece chiar în prima epocă (deoarece fișierele ar putea fi încă stocate în cache). sistemul de fișiere FSx pentru Luster). Dezavantajul acestui scenariu este costul suplimentar asociat cu menținerea în funcțiune a sistemului de fișiere. Alternativ, puteți crea și șterge sistemul de fișiere înainte și după fiecare job de instruire (probabil cu automatizare scriptată pentru a ajuta), dar este nevoie de timp pentru a inițializa un sistem de fișiere FSx pentru Luster, care este proporțional cu numărul de fișiere pe care le deține (pentru de exemplu, durează aproximativ o oră pentru a indexa aproximativ 2 milioane de obiecte din Amazon S3).

Amazon EFS

Vă recomandăm să utilizați Amazon EFS dacă datele dvs. de antrenament se află deja în Amazon EFS din cauza cazurilor de utilizare pe lângă antrenamentul ML. Pentru a utiliza Amazon EFS ca sursă de date, datele trebuie să se afle deja în Amazon EFS înainte de formare. SageMaker montează sistemul de fișiere Amazon EFS specificat pe instanța de antrenament, apoi pornește scriptul de antrenament. Atunci când configurați sistemul de fișiere Amazon EFS, trebuie să alegeți între modul implicit de performanță de uz general, care este optimizat pentru latență (bun pentru fișiere mici) și modul de performanță I/O maxim, care poate scala la niveluri mai ridicate de debit agregat și operațiuni pe secundă (mai bine pentru pregătirea locurilor de muncă cu mulți lucrători I/O). Pentru a afla mai multe, consultați Utilizarea modului de performanță potrivit.

În plus, puteți alege între două opțiuni de debit măsurat: debit de explozie și debit asigurat. Debitul de explozie pentru un sistem de fișiere de 1 TB oferă o linie de bază de 150 MB/s, putând, în același timp, să ajungă la 300 MB/s pentru o perioadă de timp de 12 ore pe zi. Dacă aveți nevoie de un randament de bază mai mare sau dacă rămâneți fără credite în explozie de prea multe ori, puteți fie să măriți dimensiunea sistemului de fișiere, fie să treceți la debitul prevăzut. În debitul prevăzut, plătiți pentru debitul de referință dorit până la un maxim de 3072 MB/s citit.

Jobul dvs. de formare trebuie să se conecteze la un VPC (vezi setări VPCConfig) pentru a accesa Amazon EFS.

Alegerea celei mai bune surse de date

Cea mai bună sursă de date pentru jobul dvs. de antrenament depinde de caracteristicile volumului de lucru, cum ar fi dimensiunea setului de date, formatul fișierului, dimensiunea medie a fișierului, durata antrenamentului, modelul de citire secvenţial sau aleatoriu al încărcării de date și cât de repede poate modelul dvs. să consume datele de antrenament.

Următoarea diagramă de flux oferă câteva îndrumări pentru a vă ajuta să începeți:
Choose the best data source for your Amazon SageMaker training job PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Când să utilizați Amazon EFS

Dacă setul dvs. de date este stocat în principal pe Amazon EFS, este posibil să aveți o aplicație de preprocesare sau de adnotări care utilizează Amazon EFS pentru stocare. Puteți rula cu ușurință un job de instruire configurat cu un canal de date care indică sistemul de fișiere Amazon EFS (pentru mai multe informații, consultați Accelerați antrenamentul pe Amazon SageMaker folosind Amazon FSx pentru sistemele de fișiere Luster și Amazon EFS). Dacă performanța nu este la fel de bună pe cât v-ați așteptat, verificați opțiunile de optimizare cu ajutorul Ghid de performanță Amazon EFSsau luați în considerare alte moduri de introducere.

Utilizați modul Fișier pentru seturi de date mici

Dacă setul de date este stocat pe Amazon S3 și volumul său total este relativ mic (de exemplu, mai puțin de 50-100 GB), încercați să utilizați modul Fișier. Suprafața de descărcare a unui set de date de 50 GB poate varia în funcție de numărul total de fișiere (de exemplu, aproximativ 5 minute dacă sunt fragmentate în fragmente de 100 MB). Dacă această suprasarcină de pornire este acceptabilă, depinde în primul rând de durata totală a jobului dvs. de formare, deoarece o fază de pregătire mai lungă înseamnă o fază de descărcare proporțional mai mică.

Serializarea multor fișiere mici împreună

Dacă dimensiunea setului dvs. de date este mică (mai puțin de 50–100 GB), dar este alcătuită din multe fișiere mici (mai puțin de 50 MB), supraîncărcarea în modul fișier crește, deoarece fiecare fișier trebuie descărcat individual de pe Amazon S3 pe volumul instanțelor de antrenament. Pentru a reduce această suprasarcină și pentru a accelera traversarea datelor în general, luați în considerare serializarea grupurilor de fișiere mai mici în mai puține containere de fișiere mai mari (cum ar fi 150 MB per fișier) utilizând formate de fișiere precum TFRecord pentru TensorFlow, WebDataset pentru PyTorch sau RecordIO pentru MXNet. Aceste formate necesită încărcătorul de date să itereze prin exemple secvențial. Puteți încă să amestecați datele prin reordonarea aleatorie a listei de fișiere TFRecord după fiecare epocă și prin eșantionarea aleatorie a datelor dintr-un buffer de amestecare local (vezi următoarele Exemplu TensorFlow).

Când să utilizați modul FastFile

Pentru seturi de date mai mari cu fișiere mai mari (mai mult de 50 MB), prima opțiune este să încercați modul FastFile, care este mai simplu de utilizat decât FSx pentru Luster, deoarece nu necesită crearea unui sistem de fișiere sau conectarea la un VPC. Modul FastFile este ideal pentru containerele mari de fișiere (mai mult de 150 MB) și s-ar putea descurca bine și cu fișierele de peste 50 MB. Deoarece modul FastFile oferă o interfață POSIX, acceptă citiri aleatorii (citirea intervalelor de octeți non-secvențiale). Cu toate acestea, acesta nu este cazul de utilizare ideal, iar debitul dvs. ar fi probabil mai mic decât în ​​cazul citirilor secvențiale. Cu toate acestea, dacă aveți un model ML relativ mare și intensiv din punct de vedere computațional, modul FastFile poate încă să sature lățimea de bandă efectivă a conductei de antrenament și să nu conducă la un blocaj I/O. Va trebui să experimentezi și să vezi. Din fericire, trecerea de la modul Fișier la FastFile (și înapoi) este la fel de ușoară ca adăugarea (sau eliminarea) input_mode='FastFile' parametrul în timp ce definiți canalul de intrare folosind SDK-ul SageMaker Python:

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

Nu trebuie schimbat niciun alt cod sau configurație.

Când să folosiți FSx pentru Luster

Dacă setul de date este prea mare pentru modul Fișier sau are multe fișiere mici (pe care nu le puteți serializa cu ușurință) sau aveți un model de acces la citire aleatoriu, FSx pentru Luster este o opțiune bună de luat în considerare. Sistemul său de fișiere se scalează la sute de GB/s de debit și milioane de IOPS, ceea ce este ideal atunci când aveți multe fișiere mici. Cu toate acestea, așa cum sa discutat deja mai devreme, fiți atenți la problemele de pornire la rece din cauza încărcării lenețe și la suprasarcina de configurare și inițializare a sistemului de fișiere FSx pentru Luster.

Considerații de cost

Pentru majoritatea joburilor de instruire ML, în special joburi care utilizează GPU-uri sau cipuri ML create special, cea mai mare parte a costurilor de instruire sunt secundele facturabile ale instanței de antrenament ML. Stocarea GB pe lună, solicitările API și debitul furnizat sunt costuri suplimentare care sunt direct asociate cu sursele de date pe care le utilizați.

Spațiu de stocare GB pe lună

Spațiul de stocare GB pe lună poate fi semnificativ pentru seturi de date mai mari, cum ar fi videoclipuri, datele senzorilor LiDAR și jurnalele de licitare în timp real AdTech. De exemplu, stocarea a 1 TB în Nivelul de acces frecvent Amazon S3 Intelligent-Tiering costă 23 USD pe lună. Adăugarea sistemului de fișiere FSx pentru Luster peste Amazon S3 are ca rezultat costuri suplimentare. De exemplu, crearea unui sistem de fișiere de 1.2 TB de tip Scratch 2 cu suport SSD cu compresia datelor dezactivată costă 168 USD pe lună (140 USD/TB/lună).

Cu Amazon S3 și Amazon EFS, plătiți numai pentru ceea ce utilizați, ceea ce înseamnă că sunteți taxat în funcție de dimensiunea reală a setului de date. Cu FSx pentru Lustre, sunteți taxat de dimensiunea sistemului de fișiere furnizată (minimum 1.2 TB). Când rulați instanțe ML cu volume EBS, Amazon EBS este taxat independent de instanța ML. Acesta este de obicei un cost mult mai mic în comparație cu costul rulării instanței. De exemplu, rularea unei instanțe ml.p3.2xlarge cu un volum EBS de 100 GB timp de 1 oră costă 3.825 USD pentru instanță și 0.02 USD pentru volumul EBS.

Solicitările API și costul de transfer furnizat

În timp ce jobul dvs. de antrenament se descurcă prin setul de date, acesta listează și preia fișiere trimițând solicitări API Amazon S3. De exemplu, fiecare milion de cereri GET are un preț de 0.4 USD (cu clasa Intelligent-Tiering). Nu ar trebui să vă așteptați la niciun cost de transfer de date pentru lățimea de bandă în și din Amazon S3, deoarece antrenamentul are loc într-o singură zonă de disponibilitate.

Când utilizați un FSx pentru Luster care este conectat la o găleată S3, suportați costuri de solicitare API Amazon S3 pentru citirea datelor care nu sunt încă stocate în cache în sistemul de fișiere, deoarece FSx For Luster trimite cererea prin proxy către Amazon S3 (și memorează rezultatul în cache). ). Nu există costuri directe de solicitare pentru FSx pentru Luster în sine. Când utilizați un sistem de fișiere FSx pentru Luster, evitați costurile pentru transferul de date între zonele de disponibilitate, rulând jobul de antrenament conectat la aceeași zonă de disponibilitate în care ați furnizat sistemul de fișiere. Amazon EFS cu debitul asigurat adaugă un cost suplimentar pentru a considera mai departe. GB pe lună.

Studiu de caz de performanță

Pentru a demonstra considerentele de performanță de antrenament menționate mai devreme, am efectuat o serie de benchmark-uri pentru un caz de utilizare realist în domeniul viziunii computerizate. Este posibil ca reperele (și concluziile) din această secțiune să nu fie aplicabile tuturor scenariilor și să fie afectate de diverși factori predeterminați pe care i-am folosit, cum ar fi DNN. Am efectuat teste pentru 12 combinații dintre următoarele:

  • Moduri de intrare – FSx pentru Lustre, modul Fișier, modul FastFile
  • Dimensiunea setului de date - Set de date mai mic (1 GB), set de date mai mare (54 GB)
  • dimensiunea fișierului – Fișiere mai mici (JPG, aproximativ 39 KB), fișiere mai mari (TFRecord, aproximativ 110 MB)

Pentru acest studiu de caz, am ales cele mai utilizate moduri de intrare și, prin urmare, am omis Amazon EFS și modul Pipe.

Benchmark-urile studiului de caz au fost concepute ca sarcini de antrenament SageMaker TensorFlow de la capăt la capăt pe o instanță ml.p3.2xlarge cu un singur GPU. Am ales renumitul ResNet-50 ca model de bază pentru sarcina de clasificare și Caltech-256 ca setul de date de antrenament mai mic (pe care l-am replicat de 50 de ori pentru a crea versiunea sa mai mare a setului de date). Am efectuat antrenamentul pentru o singură epocă, definită ca o singură matură completă gândită la exemplele de antrenament.

Următoarele grafice arată timpul total facturabil al joburilor de instruire SageMaker pentru fiecare scenariu de referință. Durata totală a lucrării în sine este compusă din descărcare, instruire și alte etape (cum ar fi pornirea containerului și încărcarea artefactelor model instruite în Amazon S3). Perioadele facturabile mai scurte se traduc în locuri de muncă de formare mai rapide și mai ieftine.

Choose the best data source for your Amazon SageMaker training job PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Să discutăm mai întâi Scenariul A și scenariul C, care demonstrează convenabil diferența de performanță dintre modurile de intrare atunci când setul de date este format din multe fișiere mici.

Scenariul A (fișiere mai mici, set de date mai mic) arată că munca de instruire cu sistemul de fișiere FSx for Luster are cel mai mic timp facturabil. Are cea mai scurtă fază de descărcare, iar etapa de antrenament este la fel de rapidă ca modul Fișier, dar mai rapid decât FastFile. FSx for Luster este câștigătorul în acest test de o singură epocă. Acestea fiind spuse, luați în considerare o sarcină de lucru similară, dar cu mai multe epoci — suprasarcina relativă a modului Fișier din cauza etapei de descărcare scade pe măsură ce se adaugă mai multe epoci. În acest caz, preferăm modul Fișier pentru ușurința sa de utilizare. În plus, este posibil să descoperiți că utilizarea modului Fișier și plata pentru 100 de secunde facturabile suplimentare este o alegere mai bună decât plata și furnizarea unui sistem de fișiere FSx pentru Luster.

Scenariul C (fișiere mai mici, set de date mai mare) arată FSx pentru Luster ca cel mai rapid mod, cu doar 5,000 de secunde de timp total facturabil. De asemenea, are cea mai scurtă etapă de descărcare, deoarece montarea sistemului de fișiere FSx pentru Luster nu depinde de numărul de fișiere din sistemul de fișiere (1.5 milioane de fișiere în acest caz). Suprafața de descărcare a FastFile este, de asemenea, mică; preia doar metadatele fișierelor care se află sub prefixul de bucket S3 specificat, în timp ce conținutul fișierelor este citit în timpul etapei de antrenament. Modul Fișier este cel mai lent, petrecând 10,000 de secunde pentru a descărca întregul set de date înainte de a începe antrenamentul. Când ne uităm la etapa de antrenament, FSx pentru Luster și modul File demonstrează o performanță excelentă similară. În ceea ce privește modul FastFile, la transmiterea în flux a fișierelor mai mici direct de pe Amazon S3, suprasolicitarea pentru trimiterea unei noi solicitări GET pentru fiecare fișier devine semnificativă în raport cu durata totală a transferului de fișiere (în ciuda utilizării unui încărcător de date extrem de paralel cu buffer de preluare preliminară). Acest lucru are ca rezultat un debit general mai scăzut pentru modul FastFile, care creează un blocaj I/O pentru munca de instruire. FSx pentru Luster este câștigătorul clar în acest scenariu.

Scenariile B și D arată diferența de performanță între modurile de intrare atunci când setul de date este format din mai puține fișiere mai mari. Citirea secvenţială utilizând fişiere mai mari are ca rezultat de obicei o performanţă I/O mai bună, deoarece permite o tamponare eficientă şi reduce numărul de operaţiuni I/O.

Scenariul B (fișiere mai mari, set de date mai mic) arată timp similar pentru etapa de antrenament pentru toate modurile (demonstrând că antrenamentul nu este legat de I/O). În acest scenariu, preferăm modul FastFile în locul modului Fișier datorită etapei mai scurte de descărcare și preferăm modul FastFile față de FSx pentru Luster datorită ușurinței de utilizare a celui dintâi.

Scenariul D (fișiere mai mari, set de date mai mare) arată timpi facturabili total relativ similari pentru toate cele trei moduri. Faza de descărcare a modului Fișier este mai lungă decât cea a FSx pentru Luster și FastFile. Modul fișier descarcă întregul set de date (54 GB) de pe Amazon S3 în instanța de antrenament înainte de a începe etapa de antrenament. Toate cele trei moduri petrec timp similar în faza de antrenament, deoarece toate modurile pot prelua date suficient de rapid și sunt legate de GPU. Dacă folosim instanțe ML cu resurse suplimentare CPU sau GPU, cum ar fi ml.p4d.24xlarge, debitul de date I/O necesar pentru a satura resursele de calcul crește. În aceste cazuri, ne putem aștepta ca FastFile și FSx pentru Luster să își scaleze cu succes debitul (cu toate acestea, debitul FSx pentru Luster depinde de dimensiunea sistemului de fișiere furnizat). Capacitatea modului Fișier de a-și scala debitul depinde de debitul volumului de disc atașat instanței. De exemplu, instanțele susținute de Amazon EBS (cum ar fi ml.p3.2xlarge, ml.p3.8xlarge și ml.p3.16xlarge) sunt limitate la un debit maxim de 250 MB/s, în timp ce instanțele locale susținute de NVMe (cum ar fi ml. g5.* sau ml.p4d.24xlarge) poate găzdui un debit mult mai mare.

Pentru a rezuma, credem că FastFile este câștigătorul pentru acest scenariu, deoarece este mai rapid decât modul Fișier și la fel de rapid ca FSx pentru Lustre, dar mai simplu de utilizat, costă mai puțin și își poate mări cu ușurință debitul după cum este necesar.

În plus, dacă am avea un set de date mult mai mare (mai mulți TB), modul Fișier ar petrece multe ore descarcând setul de date înainte ca antrenamentul să poată începe, în timp ce FastFile ar putea începe antrenamentul mult mai repede.

Aduceți-vă propria asimilare de date

Sursa nativă de date SageMaker se potrivește cu majoritatea, dar nu toate scenariile posibile de antrenament ML. Situațiile în care ar putea fi necesar să căutați alte opțiuni de asimilare a datelor ar putea include citirea datelor direct dintr-un produs de stocare terță parte (presupunând că nu este posibil un export ușor și în timp util către Amazon S3) sau a avea o cerință puternică pentru aceeași formare scriptul să ruleze neschimbat atât pe SageMaker, cât și pe Cloud Elastic de calcul Amazon (Amazon EC2) sau Serviciul Amazon Elastic Kubernetes (Amazon EKS). Puteți aborda aceste cazuri prin implementarea mecanismului de asimilare a datelor în scriptul de antrenament. Acest mecanism este responsabil pentru citirea seturilor de date din surse de date externe în instanța de antrenament. De exemplu, cel TFRecordDataset ale TensorFlow-urilor tf.data biblioteca poate citi direct din stocarea Amazon S3.

Dacă mecanismul dvs. de asimilare a datelor trebuie să apeleze orice servicii AWS, cum ar fi Serviciul de baze de date relaționale Amazon (Amazon RDS), asigurați-vă că Gestionarea identității și accesului AWS (IAM) al jobului dvs. de formare include politicile IAM relevante. Dacă sursa de date rezidă în Cloud virtual virtual Amazon (Amazon VPC), trebuie să rulați jobul de antrenament conectat la același VPC.

Când gestionați singur asimilarea setului de date, urmărirea descendenței SageMaker nu poate înregistra automat seturile de date utilizate în timpul antrenamentului. Prin urmare, luați în considerare mecanisme alternative, cum ar fi formarea etichetelor de job sau hiperparametrii, pentru a captura metadatele relevante.

Concluzie

Alegerea sursei potrivite de date de antrenament SageMaker ar putea avea un efect profund asupra vitezei, ușurinței de utilizare și costului antrenării modelelor ML. Utilizați diagrama de flux furnizată pentru a începe rapid, pentru a observa rezultatele și pentru a experimenta configurații suplimentare după cum este necesar. Țineți minte avantajele, dezavantajele și limitările fiecărei surse de date și cât de bine se potrivesc cerințelor individuale ale jobului dvs. de formare. Luați legătura cu un contact AWS pentru mai multe informații și asistență.


Despre Autori

Choose the best data source for your Amazon SageMaker training job PlatoBlockchain Data Intelligence. Vertical Search. Ai.Gili Nachum este un arhitect senior în soluții de specialitate AI/ML care lucrează ca parte a echipei EMEA Amazon Machine Learning. Gili este pasionat de provocările antrenării modelelor de învățare profundă și de modul în care învățarea automată schimbă lumea așa cum o cunoaștem. În timpul liber, lui Gili îi place să joace tenis de masă.

Choose the best data source for your Amazon SageMaker training job PlatoBlockchain Data Intelligence. Vertical Search. Ai.dr. Alexandru Arzhanov este un arhitect specializat în soluții AI/ML cu sediul în Frankfurt, Germania. El îi ajută pe clienții AWS să își proiecteze și să implementeze soluțiile ML în regiunea EMEA. Înainte de a se alătura AWS, Alexander a cercetat originile elementelor grele din universul nostru și a devenit pasionat de ML după ce l-a folosit în calculele sale științifice la scară largă.

Timestamp-ul:

Mai mult de la Învățare automată AWS