Modelele de limbaj sunt metode statistice care prezic succesiunea jetoanelor în secvențe, folosind text natural. Modelele de limbaj mari (LLM) sunt modele de limbaj bazate pe rețele neuronale cu sute de milioane (OARET) la peste un trilion de parametri (MiCS), și a căror dimensiune face imposibilă antrenamentul cu un singur GPU. Abilitățile generative ale LLM-urilor le fac populare pentru sinteza textului, rezumatul, traducerea automată și multe altele.
Dimensiunea unui LLM și a datelor sale de formare este o sabie cu două tăișuri: aduce calitatea modelării, dar implică provocări de infrastructură. Modelul în sine este adesea prea mare pentru a se potrivi în memoria unui singur dispozitiv GPU sau pe mai multe dispozitive ale unei instanțe multi-GPU. Acești factori necesită pregătirea unui LLM pe grupuri mari de instanțe de învățare automată accelerată (ML). În ultimii câțiva ani, mulți clienți au folosit AWS Cloud pentru formarea LLM.
În această postare, vom arunca o privire în sfaturi și bune practici pentru formarea de succes LLM Instruire Amazon SageMaker. SageMaker Training este un serviciu de calcul ML administrat în loturi care reduce timpul și costurile de instruire și reglare a modelelor la scară, fără a fi nevoie de a gestiona infrastructura. Într-o singură comandă de lansare, Amazon SageMaker lansează un cluster de calcul complet funcțional, efemer, care rulează sarcina pe care o alegeți și cu funcții ML îmbunătățite, cum ar fi metastore, I/O gestionat și distribuție. Postul acoperă toate fazele unui volum de lucru de formare LLM și descrie caracteristicile de infrastructură asociate și cele mai bune practici. Unele dintre cele mai bune practici din această postare se referă în mod specific la instanțe ml.p4d.24xlarge, dar cele mai multe sunt aplicabile oricărui tip de instanță. Aceste bune practici vă permit să instruiți LLM-uri pe SageMaker la o scară de la zeci până la sute de milioane de parametri.
În ceea ce privește domeniul de aplicare al acestui post, rețineți următoarele:
- Nu acoperim designul științific al rețelei neuronale și optimizările asociate. Amazon.Stiinta prezintă numeroase publicații științifice, inclusiv și fără a se limita la LLM-uri.
- Deși această postare se concentrează pe LLM, majoritatea celor mai bune practici ale sale sunt relevante pentru orice tip de formare pe modele mari, inclusiv viziunea computerizată și modelele multimodale, cum ar fi Stable Diffusion.
Cele mai bune practici
Discutăm următoarele bune practici în această postare:
- Calcula – SageMaker Training este un API excelent pentru a lansa joburi de pregătire a setului de date CPU și joburi GPU la scară de o mie.
- Depozitare – Vedem încărcarea și verificarea datelor făcute în două moduri, în funcție de abilități și preferințe: cu un Amazon FSx Luster sistem de fișiere sau Serviciul Amazon de stocare simplă Doar (Amazon S3).
- Paralelism – Alegerea dvs. de bibliotecă de instruire distribuită este crucială pentru utilizarea adecvată a GPU-urilor. Vă recomandăm să utilizați o bibliotecă optimizată pentru cloud, cum ar fi paralelismul de date sharded SageMaker, dar bibliotecile autogestionate și open-source pot funcționa și ele.
- Rețele – Asigurați-vă că EFA și NVIDIA GPUDirectRDMA sunt activate, pentru o comunicare rapidă între mașini.
- Elasticitate – La scară, pot apărea defecțiuni hardware. Vă recomandăm să faceți control regulat. La fiecare câteva ore este obișnuit.
Selectarea regiunii
Tipul de instanță și capacitatea dorită sunt un factor determinant pentru selectarea regiunii. Pentru regiunile susținute de SageMaker și Cloud Elastic de calcul Amazon (Amazon EC2) tipuri de instanțe care sunt disponibile în fiecare regiune, consultați Prețuri Amazon SageMaker. În această postare, presupunem că tipul de instanță de antrenament este un ml.p4d.24xlarge gestionat de SageMaker.
Vă recomandăm să lucrați cu echipa de cont AWS sau să contactați Vânzări AWS pentru a determina Regiunea potrivită pentru volumul dvs. de lucru LLM.
Pregătirea datelor
Dezvoltatorii LLM își antrenează modelele pe seturi mari de date de text natural. Exemple populare de astfel de surse de date includ Crawl comun și Mormanul. Textul care apare în mod natural poate conține părtiniri, inexactități, erori gramaticale și variații de sintaxă. Calitatea eventuală a unui LLM depinde în mod semnificativ de selecția și curatarea datelor de formare. Pregătirea datelor de formare LLM este o zonă activă de cercetare și inovare în industria LLM. Pregătirea unui set de date de procesare a limbajului natural (NLP) abundă cu oportunități de paralelism fără a împărtăși nimic. Cu alte cuvinte, există pași care pot fi aplicați unităților de lucrări — fișiere sursă, paragrafe, propoziții, cuvinte — fără a necesita sincronizarea între lucrători.
API-urile SageMaker jobs, și anume SageMaker Training și SageMaker Processing, excelează pentru acest tip de sarcini. Acestea permit dezvoltatorilor să ruleze un container Docker arbitrar pe o flotă de mai multe mașini. În cazul API-ului SageMaker Training, flota de calcul poate fi eterogen. Numeroase cadre de calcul distribuite au fost utilizate pe SageMaker, inclusiv Bord, Rază, Si deasemenea PySpark, care au un dedicat Container gestionat de AWS și SDK în SageMaker Processing.
Când lansați o lucrare cu mai multe mașini, SageMaker Training and Processing rulează codul dvs. o dată pe mașină. Nu este nevoie să utilizați un anumit cadru de calcul distribuit pentru a scrie o aplicație distribuită: puteți scrie codul la alegere, care va rula o dată pe mașină, pentru a realiza paralelismul de împărțire-nimic. De asemenea, puteți scrie sau instala logica de comunicare între noduri la alegere.
Încărcarea datelor
Există mai multe moduri de a stoca datele de antrenament și de a le muta din stocarea lor în nodurile de calcul accelerate. În această secțiune, discutăm despre opțiunile și cele mai bune practici pentru încărcarea datelor.
Opțiuni de stocare și încărcare SageMaker
Dimensiunea obișnuită a unui set de date LLM este de sute de milioane de jetoane text, reprezentând câteva sute de gigaocteți. Clusterele de instanțe ml.p4d.24xlarge gestionate de SageMaker propun mai multe opțiuni pentru stocarea și încărcarea setului de date:
- SSD NVMe pe nod – Instanțele ml.P4d.24xlarge sunt echipate cu 8TB NVMe, disponibil sub
/opt/ml/input/data/<channel>
dacă folosești Modul Fișier SageMaker, și la/tmp
. Dacă căutați simplitatea și performanța unei citiri locale, vă puteți copia datele pe SSD-ul NVMe. Copierea poate fi realizată fie prin modul Fișier SageMaker, fie prin propriul cod, de exemplu folosind procesarea multiplă. Boto3 or S5cmd. - FSx pentru Luster – SSD-urile NVMe pe nod au dimensiuni limitate și necesită ingerare de la Amazon S3 la fiecare job sau crearea unui cluster cald. Dacă doriți să scalați la seturi de date mai mari, menținând în același timp acces aleatoriu cu latență scăzută, puteți utiliza FSx pentru Lustre. Amazon FSx este un sistem de fișiere paralel open-source, popular în calculul de înaltă performanță (HPC). FSx pentru utilizări Luster stocarea de fișiere distribuită (decapare) și separă fizic metadatele fișierului de conținutul fișierului pentru a obține citire/scriere de înaltă performanță.
- SageMaker FastFile Mode – Modul FastFile (FFM) este o caracteristică numai pentru SageMaker care prezintă obiecte S3 la distanță în instanțe de calcul gestionate de SageMaker sub o interfață compatibilă cu POSIX și le transmite în flux numai la citire, folosind FUSE. FFM citește rezultatele în apeluri S3 care transmit fișiere de la distanță bloc cu bloc. Ca cea mai bună practică pentru a evita erorile legate de traficul Amazon S3, dezvoltatorii FFM ar trebui să urmărească să mențină un număr rezonabil de apeluri S3, de exemplu, citind fișierele secvențial și cu o cantitate controlată de paralelism.
- Încărcare de date autogestionată – Desigur, puteți decide, de asemenea, să implementați propria logică de încărcare a datelor, complet personalizată, folosind cod proprietar sau open-source. Unele motive pentru a utiliza încărcarea de date autogestionată sunt pentru a facilita o migrare prin reutilizarea codului deja dezvoltat, pentru a implementa logica personalizată de gestionare a erorilor sau pentru a avea mai mult control asupra performanței și fragmentării subiacente. Exemple de biblioteci pe care le puteți utiliza pentru încărcarea de date autogestionată includ torchdata.datapipes (anterior Pluginul AWS PyTorch S3) Şi Set de date web. SDK-ul AWS Python Boto3 poate fi, de asemenea, combinat cu Set de date Torch clase pentru a crea cod personalizat de încărcare a datelor. Clasele personalizate de încărcare a datelor permit, de asemenea, utilizarea creativă a clusterelor eterogene SageMaker Training, pentru a adapta fin echilibrul CPU și GPU la o anumită sarcină de lucru.
Pentru mai multe informații despre aceste opțiuni și despre cum să le alegeți, consultați Alegeți cea mai bună sursă de date pentru jobul dvs. de formare Amazon SageMaker.
Cele mai bune practici pentru interacțiunea pe scară largă cu Amazon S3
Amazon S3 este capabil să gestioneze sarcini de lucru LLM, atât pentru citirea datelor, cât și pentru puncte de control. Acesta suportă a rata de solicitare de 3,500 de solicitări PUT/COPY/POST/DELETE sau 5,500 GET/HEAD pe secundă per prefix dintr-un grup. Cu toate acestea, acest tarif nu este neapărat disponibil în mod implicit. În schimb, pe măsură ce rata de solicitare pentru un prefix crește, Amazon S3 se scalează automat pentru a gestiona rata crescută. Pentru mai multe informații, consultați De ce primesc 503 erori de încetinire de la Amazon S3 când solicitările se încadrează în rata de solicitare acceptată per prefix.
Dacă vă așteptați la interacțiunea Amazon S3 de înaltă frecvență, vă recomandăm următoarele bune practici:
- Încercați să citiți și să scrieți din mai multe compartimente S3 și prefixe. De exemplu, puteți partiționa datele de antrenament și punctele de control pe diferite prefixe.
- Verificați valorile Amazon S3 în Amazon CloudWatch pentru a urmări ratele de solicitare.
- Încercați să minimizați cantitatea de PUT/GET simultan:
- Aveți mai puține procese folosind Amazon S3 în același timp. De exemplu, dacă opt procese pentru fiecare nod trebuie să fie punct de control către Amazon S3, puteți reduce traficul PUT cu un factor de 8 prin punct de control ierarhic: mai întâi în interiorul nodului, apoi de la nod către Amazon S3.
- Citiți mai multe înregistrări de antrenament dintr-un singur fișier sau S3 GET, în loc să utilizați un S3 GET pentru fiecare înregistrare de antrenament.
- Dacă utilizați Amazon S3 prin SageMaker FFM, SageMaker FFM efectuează apeluri S3 pentru a prelua fișierele bucată cu bucată. Pentru a limita traficul Amazon S3 generat de FFM, vă încurajăm să citiți fișierele succesiv și să limitați numărul de fișiere deschise în paralel.
Dacă aveți o Plan de asistență pentru dezvoltatori, afaceri sau întreprinderi, puteți deschide un caz de asistență tehnică despre erorile S3 503 Slow Down. Dar mai întâi asigurați-vă că ați urmat cele mai bune practici și obțineți ID-urile cererii pentru cererile eșuate.
Paralelismul antrenamentului
LLM-urile au de obicei zeci până la sute de miliarde de parametri, ceea ce le face prea mari pentru a se potrivi într-o singură placă GPU NVIDIA. Practicienii LLM au dezvoltat mai multe biblioteci open-source care facilitează calcularea distribuită a instruirii LLM, inclusiv FSDP, DeepSpeed și megatron. Puteți rula acele biblioteci în SageMaker Training, dar puteți utiliza și biblioteci de instruire distribuite SageMaker, care au fost optimizate pentru AWS Cloud și oferă o experiență de dezvoltator mai simplă. Dezvoltatorii au două opțiuni pentru instruirea distribuită a LLM pe SageMaker: biblioteci distribuite sau autogestionate.
SageMaker a distribuit biblioteci
Pentru a vă oferi performanțe îmbunătățite de instruire distribuită și utilizare, SageMaker Training propune mai multe extensii proprietare pentru a scala codul de antrenament TensorFlow și PyTorch. Formarea LLM se desfășoară adesea într-un mod paralelism 3D:
- Paralelismul datelor împarte și alimentează mini-loturile de antrenament în mai multe replici identice ale modelului, pentru a crește viteza de procesare
- Paralelismul conductelor atribuie diferite straturi ale modelului diferitelor GPU sau chiar instanțe, pentru a mări dimensiunea modelului dincolo de un singur GPU și un singur server
- Paralelismul tensorului împarte un singur strat în mai multe GPU-uri, de obicei pe același server, pentru a scala straturi individuale la dimensiuni care depășesc un singur GPU
În exemplul următor, un model cu 6 straturi este antrenat pe un cluster de servere k*3 cu 8*k*3 GPU-uri (8 GPU-uri per server). Gradul de paralelism al datelor este k, paralelismul conductei 6 și paralelismul tensorului 4. Fiecare GPU din cluster conține un sfert dintr-un strat de model, iar un model complet este partiționat pe trei servere (24 GPU-uri în total).
Următoarele sunt relevante în mod special pentru LLM:
- SageMaker a distribuit modelul paralel – Această bibliotecă folosește partiționarea grafică pentru a produce o partiționare inteligentă a modelului optimizată pentru viteză sau memorie. Paralelul modelului distribuit SageMaker expune cea mai recentă și cea mai mare optimizare a antrenamentului pentru modele mari, inclusiv paralelismul datelor, paralelismul conductelor, paralelismul tensorului, fragmentarea stării optimizatorului, punctele de control de activare și descărcarea. Cu biblioteca de modele paralele distribuite SageMaker, am documentat un antrenament de model de 175 de miliarde de parametri peste 920 de GPU-uri NVIDIA A100. Pentru mai multe informații, consultați Antrenați peste 175 de miliarde de modele NLP cu parametri cu adăugiri paralele de model și Hugging Face pe Amazon SageMaker.
- SageMaker a împărțit date în paralel - În MiCS: Scalare aproape liniară pentru antrenarea modelului gigantic pe Public Cloud, Zhang şi colab. introduceți o strategie paralelă a modelului de comunicație scăzută care partiționează modelele doar pe un grup paralel de date, în loc de întregul cluster. Cu MiCS, oamenii de știință AWS au reușit să atingă 176 de teraflopi per GPU (56.4% din vârful teoretic) pentru antrenarea unui model de 210 straturi cu 1.06 trilioane de parametri pe instanțe EC2 P4de. MiCS este acum disponibil pentru clienții SageMaker Training ca SageMaker a împărțit date în paralel.
Bibliotecile de instruire distribuite SageMaker oferă performanță ridicată și o experiență de dezvoltator mai simplă. În special, dezvoltatorii nu trebuie să scrie și să mențină un lansator personalizat de procese paralele sau să utilizeze un instrument de lansare specific cadrului, deoarece lansatorul paralel este încorporat în SDK-ul de lansare a jobului.
Autogestionat
Cu SageMaker Training, aveți libertatea de a utiliza cadrul și paradigma științifică la alegere. În special, dacă doriți să gestionați singur instruirea distribuită, aveți două opțiuni pentru a vă scrie codul personalizat:
- Utilizați un container AWS Deep Learning (DLC) – AWS dezvoltă și întreține DLCs, oferind medii bazate pe Docker optimizate pentru AWS pentru cadrele ML open-source de top. SageMaker Training are o integrare unică care vă permite să extrageți și să rulați DLC-uri AWS cu un punct de intrare extern, definit de utilizator. În special pentru formarea LLM, DLC-urile AWS pentru TensorFlow, PyTorch, Hugging Face și MXNet sunt deosebit de relevante. Utilizarea unui DLC cadru vă permite să utilizați paralelismul nativ cadru, cum ar fi PyTorch Distributed, fără a fi nevoie să dezvoltați și să vă gestionați propriile imagini Docker. În plus, DLC-urile noastre includ un Integrare MPI, care vă permite să lansați cu ușurință codul paralel.
- Scrieți o imagine Docker personalizată compatibilă cu SageMaker – Vă puteți aduce propria imagine (BYO) (vezi Utilizați propriile algoritmi de antrenament și Containere de instruire personalizate Amazon SageMaker), fie pornind de la zero, fie extinzând o imagine DLC existentă. Când utilizați o imagine personalizată pentru formarea LLM pe SageMaker, este deosebit de important să verificați următoarele:
- Imaginea ta conține EFA cu setări adecvate (discutate mai multe mai târziu în această postare)
- Imaginea dvs. conține o bibliotecă de comunicații NVIDIA NCCL, activată cu GPUDirectRDMA
Clienții au putut folosi o serie de biblioteci de instruire distribuite autogestionate, inclusiv DeepSpeed.
Comunicații
Având în vedere natura distribuită a unui job de formare LLM, comunicarea între mașini este esențială pentru fezabilitatea, performanța și costurile volumului de muncă. În această secțiune, prezentăm caracteristicile cheie pentru comunicarea între mașini și încheiem cu sfaturi pentru instalare și reglare.
Adaptor pentru țesături elastice
Pentru a accelera aplicațiile ML și pentru a îmbunătăți performanța prin obținerea flexibilității, scalabilității și elasticității oferite de cloud, puteți profita de Adaptor pentru țesături elastice (EFA) cu SageMaker. Din experiența noastră, utilizarea EFA este o cerință pentru a obține performanțe satisfăcătoare de formare LLM cu mai multe noduri.
Un dispozitiv EFA este o interfață de rețea atașată la instanțe EC2 gestionate de SageMaker în timpul rulării joburilor de instruire. EFA este disponibil pe anumite familii de instanțe, inclusiv P4d. Rețelele EFA sunt capabile să atingă câteva sute de Gbps de debit.
Asociat cu EFA, AWS a introdus Datagramă de încredere scalabilă (SRD), un transport bazat pe ethernet inspirat de Datagramă de încredere InfiniBand, a evoluat cu o constrângere relaxată de ordonare a pachetelor. Pentru mai multe informații despre EFA și SRD, consultați În căutarea performanței, există mai multe modalități de a construi o rețea, videoclipul Cum funcționează EFA și de ce nu folosim infiniband în cloud, și lucrarea de cercetare Un protocol de transport optimizat pentru cloud pentru HPC elastic și scalabil de la Shalev et al.
Puteți adăuga integrarea EFA pe instanțe compatibile la containerele Docker existente SageMaker sau containerele personalizate care pot fi utilizate pentru antrenarea modelelor ML folosind joburi SageMaker. Pentru mai multe informații, consultați Rulați antrenamentul cu EFA. EFA este expus prin intermediul open-source Libfabric pachet de comunicare. Cu toate acestea, dezvoltatorii LLM rareori îl programează direct cu Libfabric și, de obicei, se bazează pe Biblioteca Colectivă de Comunicații NVIDIA (NCCL).
Plugin AWS-OFI-NCCL
În ML distribuit, EFA este cel mai des folosit cu Biblioteca de comunicații colective NVIDIA (NCCL). NCCL este o bibliotecă open-source dezvoltată de NVIDIA care implementează algoritmi de comunicare inter-GPU. Comunicarea inter-GPU este o piatră de temelie a formării LLM care catalizează scalabilitatea și performanța. Este atât de esențial pentru instruirea DL, încât NCCL este adesea integrat direct ca backend de comunicare în bibliotecile de instruire de deep learning, astfel încât dezvoltatorii LLM îl folosesc – uneori fără să observe – din cadrul lor de dezvoltare Python DL preferat. Pentru a utiliza NCCL pe EFA, dezvoltatorii LLM folosesc programul AWS dezvoltat Plugin AWS OFI NCCL, care mapează apelurile NCCL la interfața Libfabric utilizată de EFA. Vă recomandăm să utilizați cea mai recentă versiune de AWS OFI NCCL pentru a beneficia de îmbunătățirile recente.
Pentru a verifica dacă NCCL utilizează EFA, ar trebui să setați variabila de mediu NCCL_DEBUG
la INFO
și verificați în jurnale că EFA este încărcat de NCCL:
Pentru mai multe informații despre configurația NCCL și EFA, consultați Testați configurația EFA și NCCL. Puteți personaliza în continuare NCCL cu mai multe variabile de mediu. Rețineți că efectiv în NCCL 2.12 și mai sus, AWS a contribuit cu o logică de selecție a algoritmului de comunicare automatizat pentru rețelele EFA (NCCL_ALGO
poate fi lăsat nesetat).
NVIDIA GPUDirect RDMA peste EFA
Cu tipul de instanță P4d, noi introdus GPUDirect RDMA (GDR) peste tesatura EFA. Permite cardurilor de interfață de rețea (NIC) să acceseze direct memoria GPU, făcând mai rapidă comunicarea de la distanță între GPU și GPU prin instanțe EC2 bazate pe GPU NVIDIA, reducând supraîncărcarea de orchestrare a procesoarelor și aplicațiilor utilizatorului. GDR este utilizat sub capotă de către NCCL, atunci când este fezabil.
Utilizarea GDR apare în comunicarea inter-GPU când nivelul jurnalului este setat la INFO, ca în următorul cod:
Utilizarea EFA în containerele AWS Deep Learning
AWS menține containere de învățare profundă (DLC), multe dintre ele care vin cu fișiere Dockerfile gestionate de AWS și construite care conțin EFA, AWS OFI NCCL și NCCL. Următoarele repoziții GitHub oferă exemple cu PyTorch și TensorFlow. Nu trebuie să instalați singur acele biblioteci.
Utilizarea EFA în propriul container de instruire SageMaker
Dacă vă creați propriul container SageMaker Training și doriți să utilizați NCCL peste EFA pentru comunicarea accelerată între noduri, trebuie să instalați EFA, NCCL și AWS OFI NCCL. Pentru mai multe informații, consultați Rulați antrenamentul cu EFA. În plus, ar trebui să setați următoarele variabile de mediu în container sau în codul punctului de intrare:
FI_PROVIDER="efa"
specifică furnizorul de interfață fabricăNCCL_PROTO=simple
instruiește NCCL să utilizeze un protocol simplu pentru comunicare (în prezent, furnizorul EFA nu acceptă protocoale LL; activarea acestora ar putea duce la coruperea datelor)FI_EFA_USE_DEVICE_RDMA=1
folosește funcționalitatea RDMA a dispozitivului pentru transferul pe o față și pe două fețeNCCL_LAUNCH_MODE="PARALLEL"
NCCL_NET_SHARED_COMMS="0"
Orchestrarea
Gestionarea ciclului de viață și a volumului de lucru de la zeci până la sute de instanțe de calcul necesită software de orchestrare. În această secțiune, oferim cele mai bune practici pentru orchestrarea LLM
Orchestrație la locul de muncă
Dezvoltatorii trebuie să scrie atât codul de instruire pe partea de server, cât și codul de lansare pe partea clientului în majoritatea cadrelor distribuite. Codul de antrenament rulează pe mașinile de antrenament, în timp ce codul de lansare pe partea clientului lansează volumul de lucru distribuit de pe o mașină client. Există puțină standardizare astăzi, de exemplu:
- În PyTorch, dezvoltatorii pot lansa sarcini multi-mașină folosind
torchrun
,torchx
,torch.distributed.launch
(calea deprecierii) sautorch.multiprocessing.spawn
- DeepSpeed propune propriul lansator CLI de viteză profundă și, de asemenea, acceptă lansarea MPI
- MPI este un cadru de calcul paralel popular, care are avantajul de a fi agnostic ML și cu o proprietate rezonabilă și, prin urmare, stabil și documentat și este din ce în ce mai văzut în sarcinile de lucru ML distribuite.
Într-un cluster SageMaker Training, containerul de antrenament este lansat o dată pe fiecare mașină. În consecință, aveți trei opțiuni:
- Lansator nativ – Puteți utiliza ca punct de intrare lansatorul nativ al unui anumit cadru DL, de exemplu a
torchrun
apel, care va genera mai multe procese locale și va stabili comunicații între instanțe. - Integrare SageMaker MPI – Puteți utiliza integrarea SageMaker MPI, disponibilă în DLC-ul nostru AWS sau autoinstalabilă prin setul de instrumente pentru instruire sagemaker, pentru a rula direct codul punctului de intrare de N ori pe mașină. Acest lucru are avantajul de a evita utilizarea unor scripturi de lansare intermediare, specifice cadrului, în propriul cod.
- SageMaker a distribuit biblioteci – Dacă utilizați bibliotecile distribuite SageMaker, vă puteți concentra pe codul de antrenament și nu trebuie să scrieți deloc codul de lansare! Codul de lansare distribuit SageMaker este încorporat în SDK-ul SageMaker.
Orchestrare inter-job
Proiectele LLM constau adesea în mai multe joburi: căutarea parametrilor, experimentele de scalare, recuperarea din erori și multe altele. Pentru a începe, opri și paraleliza sarcinile de formare, este important să folosiți un orchestrator de locuri de muncă. SageMaker Training este un orchestrator de joburi ML fără server care furnizează instanțe de calcul tranzitorii imediat la cerere. Plătești doar pentru ceea ce folosești, iar clusterele sunt dezafectate imediat ce codul tău se termină. Cu SageMaker Training piscine calde, aveți opțiunea de a defini o durată de viață a clusterelor de formare, pentru a reutiliza aceeași infrastructură în toate locurile de muncă. Acest lucru reduce timpul de iterație și variabilitatea de plasare între locuri de muncă. Joburile SageMaker pot fi lansate dintr-o varietate de limbaje de programare, inclusiv Piton și CLI.
Există un SDK Python specific SageMaker numit SageMaker Python SDK și implementat prin intermediul sagemaker Biblioteca Python, dar utilizarea sa este opțională.
Creșterea cotelor pentru locuri de muncă de formare cu un cluster de formare mare și lung
SageMaker are cote implicite pentru resurse, concepute pentru a preveni utilizarea și costurile neintenționate. Pentru a antrena un LLM folosind un grup mare de instanțe high-end care rulează pentru o perioadă lungă de timp, probabil că va trebui să creșteți cotele din tabelul următor.
Numele cotei | Valoare implicită |
Cel mai lung timp de funcționare pentru un job de formare | 432,000 secunde |
Numărul de cazuri în toate joburile de formare | 4 |
Număr maxim de instanțe pe post de formare | 20 |
ml.p4d.24xlarge pentru utilizarea posturilor de instruire | 0 |
ml.p4d.24xlarge pentru antrenament utilizarea piscinei calde | 0 |
Vedea Cote de servicii AWS cum să vizualizați valorile cotei și să solicitați o creștere a cotei. Cotele de bazine calde la cerere, de instanță la fața locului și de antrenament sunt urmărite și modificate separat.
Dacă decideți să mențineți SageMaker Profiler activat, rețineți că fiecare job de instruire lansează un job de procesare SageMaker, fiecare consumând câte o instanță ml.m5.2xlarge. Confirmați că cotele dvs. de procesare SageMaker sunt suficient de mari pentru a permite concurența așteptată a jobului de formare. De exemplu, dacă doriți să lansați 50 de joburi de instruire activate pentru Profiler care rulează simultan, va trebui să creșteți limita de utilizare ml.m5.2xlarge pentru procesarea jobului la 50.
În plus, pentru a lansa o lucrare de lungă durată, va trebui să setați în mod explicit Estimator max_run
parametrul la durata maximă dorită pentru jobul de antrenament în secunde, până la valoarea cotei a celui mai lung timp de rulare pentru un job de antrenament.
Monitorizare și reziliență
Defecțiunea hardware este extrem de rară la scara unei singure instanțe și devine din ce în ce mai frecventă pe măsură ce crește numărul de instanțe utilizate simultan. La scara tipică LLM – sute până la mii de GPU-uri utilizate 24/7 timp de săptămâni sau luni – este aproape sigur că se vor produce defecțiunile hardware. Prin urmare, un volum de lucru LLM trebuie să implementeze mecanisme adecvate de monitorizare și reziliență. În primul rând, este important să monitorizați îndeaproape infrastructura LLM, pentru a limita impactul eșecurilor și pentru a optimiza utilizarea resurselor de calcul. SageMaker Training propune mai multe caracteristici în acest scop:
- Jurnalele sunt trimise automat către CloudWatch Logs. Jurnalele includ scriptul de antrenament
stdout
șistderr
. În instruirea distribuită bazată pe MPI, toți lucrătorii MPI își trimit jurnalele procesului lider. - Valorile de utilizare a resurselor sistemului, cum ar fi memoria, utilizarea CPU și utilizarea GPU, sunt trimise automat către CloudWatch.
- Poti definiți valori personalizate de antrenament care va fi trimis la CloudWatch. Valorile sunt capturate din jurnalele pe baza expresiilor regulate pe care le setați. Pachete de experimente de la terțe părți, cum ar fi Partener AWS oferind Weights & Biases poate fi folosit cu SageMaker Training (de exemplu, vezi Optimizarea hiperparametrilor CIFAR-10 cu W&B și SageMaker).
- SageMaker Profiler vă permite să inspectați utilizarea infrastructurii și să obțineți recomandări de optimizare.
- Amazon EventBridge și AWS Lambdas vă permit să creați o logică automată a clientului care reacționează la evenimente precum eșecurile, succesele, încărcările de fișiere S3 și multe altele.
- SageMaker SSH Helper este o bibliotecă open-source întreținută de comunitate, care vă permite să vă conectați la gazde de locuri de muncă de formare prin SSH. Poate fi util să inspectați și să depanați rulările de cod pe anumite noduri.
Pe lângă monitorizare, SageMaker aduce și echipamente pentru rezistența la locul de muncă:
- Verificări de sănătate în cluster – Înainte de a începe munca, SageMaker execută verificări de stare GPU și verifică comunicarea NCCL pe instanțele GPU, înlocuind orice instanțe defecte, dacă este necesar, pentru a se asigura că scriptul de antrenament începe să ruleze pe un cluster sănătos de instanțe. Verificările de sănătate sunt activate în prezent pentru tipurile de instanțe bazate pe GPU P și G.
- Reîncercări încorporate și actualizare cluster – Puteți configura SageMaker în mod automat reîncercați joburi de instruire care nu reușesc cu o eroare de server intern (ISE) SageMaker. Ca parte a reîncercării unei sarcini, SageMaker va înlocui orice instanță care a întâmpinat erori GPU irecuperabile cu instanțe noi, va reporni toate instanțele sănătoase și va începe lucrarea din nou. Acest lucru are ca rezultat reporniri mai rapide și finalizare a sarcinii de lucru. Actualizarea clusterului este în prezent activată pentru tipurile de instanțe bazate pe GPU P și G. Puteți adăuga în propria dvs mecanism aplicativ de reîncercare în jurul codului de client care trimite jobul, pentru a gestiona alte tipuri de erori de lansare, cum ar fi depășirea cotei contului.
- Automata punct de control către Amazon S3 – Acest lucru vă ajută punctul de control progresul dvs. și reîncărcați un stat trecut pe noi locuri de muncă.
Pentru a beneficia de înlocuirea la nivel de nod, codul dvs. trebuie să fie greșit. Colectivele se pot bloca, în loc să greșească, atunci când un nod eșuează. Prin urmare, pentru a avea o remediere promptă, setați corect un timeout pentru colectivele dvs. și cereți codului să arunce o eroare când este atins.
Unii clienți au configurat un client de monitorizare pentru a monitoriza și a acționa în caz de blocare sau oprire a convergenței aplicative, prin monitorizarea jurnalelor și valorilor CloudWatch pentru modele anormale, cum ar fi niciun jurnal scris sau 0% utilizare GPU pentru a sugera o blocare, oprire a convergenței și auto opriți/reîncercați lucrarea.
Aprofundare la punctele de control
Punct de control SageMaker caracteristica copiază tot ce scrieți /opt/ml/checkpoints
înapoi la Amazon S3 ca URI specificat în checkpoint_s3_uri
Parametru SDK. Când un job începe sau repornește, tot ce este scris la acel URI este trimis înapoi la toate mașinile, la /opt/ml/checkpoints
. Acest lucru este convenabil dacă doriți ca toate nodurile să aibă acces la toate punctele de control, dar la scară — atunci când aveți multe mașini sau multe puncte de control istorice, poate duce la timpi lungi de descărcare și trafic prea mare pe Amazon S3. În plus, în paralelismul tensorului și al conductei, lucrătorii au nevoie doar de o fracțiune din modelul cu puncte de control, nu din tot. Dacă vă confruntați cu aceste limitări, vă recomandăm următoarele opțiuni:
- Punct de verificare către FSx pentru Luster – Datorită I/O aleatoare de înaltă performanță, puteți defini schema de fragmentare și atribuire a fișierelor la alegere
- Punct de control Amazon S3 autogestionat – Pentru exemple de funcții Python care pot fi folosite pentru a salva și citi punctele de control într-un mod neblocant, consultați Salvarea punctelor de control
Vă sugerăm insistent să vă verificați modelul la fiecare câteva ore, de exemplu, 1-3 ore, în funcție de cheltuielile generale și costurile asociate.
Front end și managementul utilizatorilor
Gestionarea utilizatorilor este un punct forte de utilizare a SageMaker în comparație cu infrastructura HPC partajată. Permisiunile SageMaker Training sunt guvernate de mai multe Gestionarea identității și accesului AWS (IAM) abstracții:
- Principalii – utilizatorii și sistemele – au permisiunea de a lansa resurse
- Joburile de formare au roluri în sine, care le permit să aibă permisiuni proprii, de exemplu în ceea ce privește accesul la date și invocarea serviciului
În plus, în 2022 am adăugat Manager de rol SageMaker pentru a facilita crearea de permisiuni bazate pe persoană.
Concluzie
Cu SageMaker Training, puteți reduce costurile și puteți crește viteza de iterație pentru volumul de lucru de antrenament pentru modele mari. Am documentat povești de succes în numeroase postări și studii de caz, inclusiv:
Dacă doriți să îmbunătățiți timpul de introducere pe piață a LLM, reducând în același timp costurile, aruncați o privire la SageMaker Training API și spuneți-ne ce construiți!
Mulțumiri speciale lui Amr Ragab, Rashika Kheria, Zmnako Awrahman, Arun Nagarajan, Gal Oshri pentru recenziile și învățăturile lor utile.
Despre Autori
Anastasia Tzeveleka este arhitect specializat în soluții de învățare automată și AI la AWS. Lucrează cu clienții din EMEA și îi ajută să proiecteze soluții de învățare automată la scară, folosind serviciile AWS. Ea a lucrat la proiecte în diferite domenii, inclusiv procesarea limbajului natural (NLP), MLOps și instrumentele Low Code No Code.
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ă.
Olivier Cruchant este arhitect principal de soluții de specialitate în învățare automată la AWS, cu sediul în Franța. Olivier îi ajută pe clienții AWS – de la startup-uri mici până la întreprinderi mari – să dezvolte și să implementeze aplicații de învățare automată la nivel de producție. În timpul liber, îi place să citească lucrări de cercetare și să exploreze sălbăticia cu prietenii și familia.
Bruno Pistone este un arhitect specializat în soluții AI/ML pentru AWS cu sediul în Milano. Lucrează cu clienții de orice dimensiune pentru a-i ajuta să-și înțeleagă în profunzime nevoile tehnice și să proiecteze soluții de AI și de învățare automată care să folosească cel mai bine AWS Cloud și stiva Amazon Machine Learning. Domeniul său de expertiză sunt Machine Learning end to end, Machine Learning Industrialization și MLOps. Îi place să petreacă timpul cu prietenii săi și să exploreze locuri noi, precum și să călătorească către noi destinații.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/training-large-language-models-on-amazon-sagemaker-best-practices/
- :este
- ][p
- $UP
- 000
- 1
- 100
- 2022
- 7
- 8
- a
- abilități
- Capabil
- Despre Noi
- mai sus
- accelera
- accelerat
- acces
- găzdui
- Cont
- Obține
- realizarea
- peste
- act
- Activarea
- activ
- adapta
- adăugat
- plus
- În plus,
- adăugări
- Avantaj
- AI
- AI / ML
- AL
- Algoritmul
- algoritmi
- TOATE
- Permiterea
- permite
- Amazon
- Amazon EC2
- Amazon FSx
- Învățare automată Amazon
- Amazon SageMaker
- sumă
- și
- api
- API-uri
- aplicabil
- aplicație
- aplicatii
- aplicat
- adecvat
- SUNT
- ZONĂ
- în jurul
- AS
- asociate
- At
- atribute
- Auto
- Automata
- în mod automat
- disponibil
- evitarea
- AWS
- înapoi
- Backend
- Sold
- bazat
- BE
- deoarece
- devine
- înainte
- fiind
- beneficia
- CEL MAI BUN
- Cele mai bune practici
- Dincolo de
- Mare
- Miliard
- miliarde
- Bloca
- aduce
- Aduce
- construi
- construit
- afaceri
- by
- apel
- denumit
- apeluri
- CAN
- capabil
- Capacitate
- card
- Carduri
- transporta
- caz
- Studii De Caz
- catalizează
- provocări
- schimbarea
- Canal
- verifica
- Verificări
- alegere
- alegeri
- Alege
- clase
- client
- îndeaproape
- Cloud
- Grup
- cod
- Colectiv
- combinate
- cum
- Comun
- în mod obișnuit
- Comunicare
- Comunicații
- comparație
- compatibil
- completare
- calcul
- Calcula
- calculator
- Computer Vision
- tehnica de calcul
- încheia
- efectuat
- Configuraţie
- Confirma
- Conectați
- prin urmare
- conţine
- Recipient
- Containere
- conține
- conţinut
- Contribuit
- Control
- controlată
- Convenabil
- Convergenţă
- Corupţie
- A costat
- Cheltuieli
- ar putea
- Curs
- acoperi
- Covers
- crea
- creaţie
- Creator
- critic
- crucial
- custozi
- În prezent
- personalizat
- clienţii care
- personaliza
- de date
- accesul la date
- Pregătirea datelor
- seturi de date
- decide
- dedicat
- adânc
- învățare profundă
- Mod implicit
- Grad
- În funcție
- depinde de
- implementa
- Amenajări
- proiectat
- dorit
- destinații
- Determina
- determinarea
- dezvolta
- dezvoltat
- Dezvoltator
- Dezvoltatorii
- Dezvoltare
- dezvoltă
- dispozitiv
- Dispozitive
- diferit
- difuziune
- direct
- discuta
- discutat
- distribuite
- calcul distribuit
- instruire distribuită
- distribuire
- Docher
- Nu
- domenii
- Dont
- jos
- Descarca
- zeci
- în timpul
- fiecare
- cu ușurință
- Eficace
- oricare
- EMEA
- permite
- activat
- permite
- permițând
- încuraja
- se încheie
- sporită
- se bucura
- suficient de
- asigura
- Afacere
- Companii
- intrare
- Mediu inconjurator
- medii
- echipament
- echipat
- eroare
- Erori
- stabili
- Chiar
- evenimente
- eventual
- Fiecare
- tot
- evoluat
- exemplu
- exemple
- Excel
- existent
- aștepta
- de aşteptat
- experienţă
- experiment
- Explorarea
- expus
- expresii
- extindere
- extensii
- extern
- extrem
- țesătură
- Față
- facilita
- facilitând
- factori
- A eșuat
- eșuează
- Eșec
- familii
- familie
- Modă
- FAST
- mai repede
- defect
- realizabil
- Caracteristică
- DESCRIERE
- puțini
- camp
- Fișier
- Fişiere
- First
- potrivi
- FLOTA
- Flexibilitate
- Concentra
- se concentrează
- a urmat
- următor
- Pentru
- fracțiune
- Cadru
- cadre
- Franţa
- Libertate
- frecvent
- proaspăt
- Prietenii lui
- din
- Complet
- complet
- funcțional
- funcționalitate
- funcții
- mai mult
- FATĂ
- generată
- generativ
- obține
- obtinerea
- GitHub
- dat
- GPU
- unități de procesare grafică
- grafic
- mare
- cea mai mare
- grup
- creste
- manipula
- Manipularea
- Atârna
- întâmpla
- Piese metalice
- Avea
- având în
- Sănătate
- sănătos
- util
- ajutor
- ajută
- Înalt
- Frecventa inalta
- performanta ridicata
- istoric
- capotă
- Gazdele
- ORE
- Cum
- Cum Pentru a
- Totuși
- hpc
- HTML
- http
- HTTPS
- sute
- sute de milioane
- i
- identic
- Identitate
- imagine
- imagini
- imediat
- Impactul
- punerea în aplicare a
- implementat
- Punere în aplicare a
- important
- îmbunătăţi
- îmbunătățit
- îmbunătățiri
- in
- În altele
- include
- Inclusiv
- Crește
- a crescut
- Creșteri
- tot mai mult
- individ
- industrie
- info
- informații
- Infrastructură
- Inovaţie
- inspirat
- instala
- instanță
- in schimb
- integrate
- integrare
- Inteligent
- interacţiune
- interfaţă
- intermediar
- intern
- introduce
- introdus
- IT
- repetare
- ESTE
- în sine
- Loc de munca
- Locuri de munca
- jpg
- A pastra
- Cheie
- Copil
- Cunoaște
- limbă
- Limbă
- mare
- pe scară largă
- mai mare
- Ultimele
- lansa
- a lansat
- lansează
- strat
- straturi
- conduce
- lider
- învăţare
- Moştenire
- Nivel
- biblioteci
- Bibliotecă
- ciclu de viață
- ca
- Probabil
- LIMITĂ
- limitări
- Limitat
- mic
- LLM
- încărcare
- local
- Lung
- perioadă lungă de timp
- Uite
- cautati
- Jos
- maşină
- masina de învățare
- Masini
- menține
- Mentine
- susține
- face
- FACE
- Efectuarea
- administra
- gestionate
- administrare
- multe
- Harta
- maxim
- Memorie
- Metadata
- Metode
- Metrici
- migrațiune
- MILAN
- milioane
- ML
- MLOps
- mod
- model
- Modele
- modificată
- monitor
- Monitorizarea
- mai mult
- cele mai multe
- muta
- multiplu
- și anume
- nativ
- Natural
- Procesarea limbajului natural
- Natură
- în mod necesar
- necesar
- Nevoie
- nevoilor
- reţea
- bazat pe rețea
- rețele
- rețele neuronale
- Nou
- nlp
- nod
- noduri
- număr
- numeroși
- Nvidia
- obiecte
- of
- oferi
- oferind
- Măslin
- on
- La cerere
- ONE
- deschide
- open-source
- cod open-source
- deschis
- Oportunităţi
- optimizare
- Optimizați
- optimizate
- Opțiune
- Opţiuni
- orchestrație
- comandă
- Altele
- propriu
- pachet
- ofertele
- Hârtie
- lucrări
- paradigmă
- Paralel
- parametru
- parametrii
- parte
- special
- în special
- pasionat
- trecut
- cale
- modele
- Plătește
- Vârf
- performanță
- spectacole
- permisiune
- permisiuni
- Fizic
- conducte
- Locuri
- Plato
- Informații despre date Platon
- PlatoData
- joc
- Punct
- piscină
- piscine
- Popular
- Post
- postări
- practică
- practicile
- estimarea
- preferinţele
- preferat
- prezenta
- cadouri
- împiedica
- în prealabil
- Principal
- proces
- procese
- prelucrare
- produce
- Program
- Programare
- limbaje de programare
- Progres
- Proiecte
- cum se cuvine
- propune
- propune
- proprietate
- protocol
- protocoale
- furniza
- prevăzut
- furnizorul
- furnizarea
- public
- Publicații
- scop
- pune
- Piton
- pirtorh
- calitate
- ridica
- aleator
- RAR
- rată
- tarife
- atins
- Citeste
- Citind
- realiza
- rezonabil
- motive
- a primi
- recent
- recomanda
- Recomandări
- record
- înregistrări
- recuperare
- reduce
- reduce
- reducerea
- cu privire la
- regiune
- regiuni
- regulat
- regulat
- legate de
- de încredere
- la distanta
- înlocui
- reprezentând
- solicita
- cereri de
- necesita
- cerință
- Necesită
- cercetare
- cercetare și inovare
- resursă
- Resurse
- REZULTATE
- Recenzii
- Rol
- rolurile
- Alerga
- funcţionare
- sagemaker
- acelaşi
- Economisiți
- scalabilitate
- scalabil
- Scară
- cântare
- scalare
- schemă
- ştiinţific
- oamenii de stiinta
- domeniu
- script-uri
- sdk
- Caută
- Al doilea
- secunde
- Secțiune
- caută
- selectate
- selecţie
- senior
- serverless
- Servere
- serviciu
- Servicii
- set
- setări
- câteva
- ascuțit
- sharding
- comun
- să
- semnificativ
- simplu
- simplitate
- simultan
- singur
- Mărimea
- dimensiuni
- aptitudini
- încetini
- mic
- So
- Software
- soluţii
- unele
- Sursă
- Surse
- specialist
- specific
- specific
- specificată
- viteză
- Cheltuire
- șpalturi
- Loc
- stabil
- stivui
- Începe
- Pornire
- începe
- Startup-urile
- Stat
- statistic
- paşi
- Stop
- oprire
- depozitare
- stoca
- Istorii
- Strategie
- curent
- fluxuri
- rezistenţă
- stripping
- tare
- studiu
- succes
- Povești de succes
- de succes
- astfel de
- a sustine
- Suportat
- Sprijină
- sincronizare
- sintaxă
- sistem
- tabel
- Lua
- Sarcină
- sarcini
- echipă
- Tehnic
- tensorflow
- mulțumesc
- acea
- lumea
- lor
- Lor
- se
- teoretic
- prin urmare
- Acestea
- terț
- mii
- trei
- Prin
- debit
- timp
- ori
- Sfaturi
- la
- astăzi
- indicativele
- de asemenea
- instrument
- Unelte
- top
- Total
- urmări
- trafic
- Tren
- dresat
- Pregătire
- Traducere
- de transport
- Trilion
- Tipuri
- tipic
- în
- care stau la baza
- înţelege
- unic
- de unităţi
- Actualizează
- us
- uzabilitate
- Folosire
- utilizare
- Utilizator
- obișnuit
- valoare
- Valori
- varietate
- diverse
- verifica
- versiune
- de
- Video
- Vizualizare
- viziune
- cald
- Cale..
- modalități de
- săptămâni
- BINE
- Ce
- care
- în timp ce
- OMS
- întreg
- voi
- cu
- în
- fără
- cuvinte
- Apartamente
- a lucrat
- muncitorii
- de lucru
- fabrică
- lume
- scrie
- scris
- ani
- Tu
- Ta
- te
- youtube
- zephyrnet