Rulați PyTorch Lightning și PyTorch DDP nativ pe Amazon SageMaker Training, cu Amazon Search PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Rulați PyTorch Lightning și PyTorch DDP nativ pe Amazon SageMaker Training, cu Amazon Search

Atât de multe date, atât de puțin timp. Experții în învățarea automată (ML), oamenii de știință de date, inginerii și entuziaștii s-au confruntat cu această problemă în întreaga lume. De la procesarea limbajului natural la viziunea computerizată, tabelare până la serii cronologice și tot ce există între ele, vechea problemă a optimizării pentru viteza atunci când rulați date pe cât mai multe GPU-uri puteți obține a inspirat nenumărate soluții. Astăzi, suntem bucuroși să anunțăm funcții pentru dezvoltatorii PyTorch care folosesc cadre native open-source, cum ar fi PyTorch Lightning și PyTorch DDP, care le va simplifica calea către nor.

Amazon SageMaker este un serviciu complet gestionat pentru ML, iar instruirea modelului SageMaker este un mediu de calcul optimizat pentru instruire de înaltă performanță la scară. Training model SageMaker oferă o experiență de instruire la distanță cu un plan de control fără întreruperi pentru a antrena și reproduce cu ușurință modelele ML la performanță ridicată și la costuri reduse. Suntem încântați să anunțăm noi funcții din portofoliul de instruire SageMaker care fac rularea PyTorch la scară și mai ușoară și mai accesibilă:

  1. PyTorch Lightning poate fi acum integrat în Biblioteca paralelă de date distribuită a SageMaker cu o singură linie de schimbare a codului.
  2. Training model SageMaker acum are suport pentru PyTorch Distributed Data Parallel cu backend-ul NCCL, permițând dezvoltatorilor să migreze pe SageMaker mai ușor decât oricând.

În această postare, discutăm despre aceste noi funcții și, de asemenea, aflăm cum Amazon Search a rulat PyTorch Lightning cu backend-ul optimizat de formare distribuită în SageMaker pentru a accelera timpul de antrenament al modelului.

Înainte de a ne aprofunda în studiul de caz Amazon Search, pentru cei care nu sunt familiarizați, am dori să oferim câteva informații despre Biblioteca paralelă de date distribuită a SageMaker. În 2020, am dezvoltat și lansat o configurație de cluster personalizată pentru coborârea gradientului distribuit la scară care crește eficiența globală a clusterului, introdusă pe Amazon Science ca Hering. Folosind cele mai bune dintre serverele de parametri și topologiile bazate pe inel, SageMaker Distributed Data Parallel (SMDDP) este optimizat pentru Cloud Elastic de calcul Amazon (Amazon EC2) topologie de rețea, inclusiv EFA. Pentru clustere de dimensiuni mai mari, SMDDP este capabil să ofere îmbunătățiri cu 20-40% a debitului comparativ cu Horovod (TensorFlow) și PyTorch Distributed Data Parallel. Pentru dimensiuni mai mici de cluster și modele acceptate, vă recomandăm SageMaker Training Compiler, care poate reduce timpul total de muncă cu până la 50%.

În atenția clienților: PyTorch Lightning pe backend-ul optimizat al SageMaker cu Amazon Search

Amazon Search este responsabil pentru experiența de căutare și descoperire Amazon.com. Acesta stimulează experiența de căutare pentru clienții care caută produse de cumpărat de pe Amazon. La un nivel înalt, Amazon Search creează un index pentru toate produsele vândute pe Amazon.com. Când un client introduce o interogare, Amazon Search utilizează apoi o varietate de tehnici ML, inclusiv modele de deep learning, pentru a potrivi produse relevante și interesante cu interogarea clientului. Apoi ierarhizează produsele înainte de a arăta rezultatele clientului.

Oamenii de știință Amazon Search au folosit PyTorch Lightning ca unul dintre principalele cadre pentru a antrena modelele de învățare profundă care alimentează clasarea Căutării datorită caracteristicilor sale de utilizare adăugate pe lângă PyTorch. SMDDP nu a fost acceptat pentru modelele de învățare profundă scrise în PyTorch Lightning înainte de această nouă lansare SageMaker. Acest lucru i-a împiedicat pe oamenii de știință de la Amazon Search care preferă să folosească PyTorch Lightning să-și scaleze antrenamentul cu modelul folosind tehnici paralele de date, încetinind semnificativ timpul de antrenament și împiedicându-i să testeze noi experimente care necesită o pregătire mai scalabilă.

Rezultatele timpurii de evaluare comparativă ale echipei arată un timp de antrenament de 7.3 ori mai rapid pentru un model de probă atunci când este antrenat pe opt noduri, comparativ cu o linie de bază de antrenament cu un singur nod. Modelul de bază utilizat în aceste analize comparative este o rețea neuronală perceptron cu mai multe straturi, cu șapte straturi dense complet conectate și peste 200 de parametri. Următorul tabel rezumă rezultatul benchmarking-ului pentru instanțe de antrenament SageMaker ml.p3.16xlarge.

Numărul de instanțe Timp de antrenament (minute) Îmbunătăţire
1 99 De bază
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

În continuare, ne aruncăm în detalii despre noile lansări. Dacă doriți, puteți trece prin corespondentul nostru caiet de exemplu.

Rulați PyTorch Lightning cu biblioteca de instruire distribuită SageMaker

Suntem bucuroși să anunțăm că SageMaker Data Parallel se integrează acum perfect cu PyTorch Lightning în cadrul instruirii SageMaker.

PyTorch Lightning este un cadru open-source care oferă o simplificare pentru scrierea modelelor personalizate în PyTorch. În unele moduri, similar cu ceea ce a făcut Keras pentru TensorFlow, sau chiar și fără îndoială Hugging Face, PyTorch Lightning oferă un API de nivel înalt cu abstracții pentru o mare parte a funcționalității de nivel inferior a PyTorch în sine. Aceasta include definirea modelului, profilarea, evaluarea, tăierea, paralelismul modelului, configurațiile hiperparametrilor, transferul de învățare și multe altele.

Anterior, dezvoltatorii PyTorch Lightning nu erau siguri cum să-și migreze codul de antrenament pe clustere de GPU SageMaker de înaltă performanță. În plus, ei nu au avut nicio modalitate de a profita de câștigurile de eficiență introduse de SageMaker Data Parallel.

Pentru PyTorch Lightning, în general, ar trebui să existe puține modificări ale codului pentru a rula pur și simplu aceste API-uri pe SageMaker Training. În caietele de exemplu folosim DDPStrategy și DDPPlugin metode.

Există trei pași pentru a utiliza PyTorch Lightning cu SageMaker Data Parallel ca backend optimizat:

  1. Utilizați un suport Container AWS Deep Learning (DLC) ca imagine de bază sau, opțional, creați-vă propriul container și instalați singur backend-ul SageMaker Data Parallel. Asigurați-vă că aveți PyTorch Lightning inclus în pachetele necesare, cum ar fi cu a requirements.txt fișier.
  2. Efectuați câteva modificări minore ale codului scriptului de antrenament care să permită backend-ul optimizat. Acestea includ:
    1. Importați biblioteca SM DDP:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. Configurați mediul PyTorch Lightning pentru SageMaker:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. Dacă utilizați o versiune de PyTorch Lightning mai veche decât 1.5.10, va trebui să adăugați câțiva pași.
      1. Mai întâi, adăugați variabila de mediu:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. În al doilea rând, asigurați-vă că utilizați DDPPlugin, Mai degrabă decât DDPStrategy. Dacă utilizați o versiune mai recentă, pe care o puteți seta cu ușurință prin plasarea requirements.txt în source_dir pentru munca ta, atunci acest lucru nu este necesar. Vezi următorul cod:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. Opțional, definiți backend-ul grupului de procese ca "smddp" în DDPSTrategy obiect. Cu toate acestea, dacă utilizați PyTorch Lightning cu backend-ul PyTorch DDP, care este, de asemenea, acceptat, eliminați pur și simplu acest `process_group_backend` parametru. Vezi următorul cod:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Asigurați-vă că aveți o metodă de distribuție notă în estimator, cum ar fi distribution={"smdistributed":{"dataparallel":{"enabled":True} dacă utilizați backend-ul Herring sau distribution={"pytorchddp":{"enabled":True}.
  • Pentru o listă completă a parametrilor potriviți în distribution parametrul, consultați documentația noastră aici.

Acum vă puteți lansa jobul de formare SageMaker! Vă puteți lansa jobul de antrenament prin intermediul SDK-ului Python, Boto3, consola SageMaker, etc Interfața liniei de comandă AWS (AWS CLI) și nenumărate alte metode. Din perspectiva AWS, aceasta este o singură comandă API: create-training-job. Indiferent dacă lansați această comandă de pe terminalul local, an AWS Lambdas funcție, an Amazon SageMaker Studio notebook, o conductă KubeFlow sau orice alt mediu de calcul depinde în totalitate de dvs.

Vă rugăm să rețineți că integrarea dintre PyTorch Lightning și SageMaker Data Parallel este acceptată în prezent doar pentru versiunile mai noi de PyTorch, începând cu 1.11. În plus, această versiune este disponibilă numai în DLC-urile AWS pentru SageMaker începând cu PyTorch 1.12. Asigurați-vă că indicați această imagine ca bază. În us-east-1, această adresă este următoarea:

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

Apoi vă puteți extinde containerul Docker folosind aceasta ca imagine de bază sau puteți trece aceasta ca variabilă în image_uri argument al Estimator de instruire SageMaker.

Ca rezultat, veți putea rula codul dvs. PyTorch Lightning pe GPU-urile optimizate ale SageMaker Training, cu cele mai bune performanțe disponibile pe AWS.

Rulați PyTorch Distributed Data Parallel pe SageMaker

Cea mai mare problema PyTorch Distributed Data Parallel (DDP) rezolvă este înșelător de simplu: viteza. Un cadru de instruire bine distribuit ar trebui să ofere stabilitate, fiabilitate și, cel mai important, performanță excelentă la scară. PyTorch DDP asigură acest lucru prin furnizarea dezvoltatorilor de lanternă cu API-uri pentru a-și replica modelele pe mai multe dispozitive GPU, atât în ​​setări cu un singur nod, cât și cu mai multe noduri. Cadrul gestionează apoi împărțirea diferitelor obiecte din setul de date de antrenament la fiecare copie a modelului, făcând o medie a gradienților pentru fiecare dintre copiile modelului pentru a le sincroniza la fiecare pas. Acest lucru produce un model la finalizarea totală a cursei complete de antrenament. Următoarea diagramă ilustrează acest proces.

PyTorch DDP este comun în proiectele care utilizează seturi de date mari. Dimensiunea exactă a fiecărui set de date va varia foarte mult, dar un ghid general este de a scala seturile de date, dimensiunile de calcul și dimensiunile modelului în rapoarte similare. Numit si legi de scalare, combinația optimă a acestor trei este foarte dezbătută și va varia în funcție de aplicații. La AWS, pe baza lucrului cu mai mulți clienți, putem vedea clar beneficiile strategiilor paralele de date atunci când dimensiunea totală a unui set de date este de cel puțin câteva zeci de GB. Când seturile de date devin și mai mari, implementarea unui tip de strategie paralelă a datelor este o tehnică critică pentru a accelera experimentul general și pentru a vă îmbunătăți timpul de valorificare.

Anterior, clienților care foloseau PyTorch DDP pentru instruire distribuită la sediul sau în alte medii de calcul nu aveau un cadru pentru a-și migra cu ușurință proiectele pe SageMaker Training pentru a profita de GPU-uri de înaltă performanță cu un plan de control fără întreruperi. Mai exact, trebuiau fie să-și migreze cadrul de date paralel la SMDDP, fie să dezvolte și să testeze manual capacitățile PyTorch DDP pe SageMaker Training. Astăzi, SageMaker Training este bucuros să ofere o experiență perfectă pentru clienții care își integrează codul DDP PyTorch.

Pentru a utiliza acest lucru eficient, nu trebuie să faceți nicio modificare scripturilor de antrenament.

Puteți vedea acest nou parametru în următorul cod. În distribution parametrul, pur și simplu adăugați pytorchddp și setați activat ca true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

Această nouă configurație începe la SageMaker Python SDK versiunile 2.102.0 și PyTorch DLC 1.11.

Pentru dezvoltatorii PyTorch DDP care sunt familiarizați cu popularul torchrun cadru, este util să știți că acest lucru nu este necesar în mediul de instruire SageMaker, care oferă deja o toleranță robustă la erori. Cu toate acestea, pentru a minimiza rescrierile de cod, puteți aduce un alt script de lansare care rulează această comandă ca punct de intrare.

Acum, dezvoltatorii PyTorch își pot muta cu ușurință scripturile pe SageMaker, asigurându-se că scripturile și containerele lor pot rula fără probleme în mai multe medii de calcul.

Acest lucru îi pregătește să profite, în viitor Bibliotecile de instruire distribuite de SageMaker care oferă topologii de instruire optimizate pentru AWS pentru a oferi îmbunătățiri de accelerare cu până la 40%. Pentru dezvoltatorii PyTorch, aceasta este o singură linie de cod! Pentru codul PyTorch DDP, puteți pur și simplu să setați backend-ul la smddp la inițializare (vezi Modificați un script de antrenament PyTorch), după cum se arată în următorul cod:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

După cum am văzut mai sus, puteți seta și backend-ul DDPStrategy la smddp când utilizați Lightning. Acest lucru poate duce la până la Accelerări generale de 40%. pentru grupuri mari! Pentru a afla mai multe despre instruirea distribuită pe SageMaker, consultați webinarul nostru la cerere, sprijinind notebook-uri, relevant documentaţie, și lucrări.

Concluzie

În această postare, am introdus două funcții noi în familia SageMaker Training. Acestea fac mult mai ușor pentru dezvoltatorii PyTorch să-și folosească codul existent pe SageMaker, atât PyTorch DDP, cât și PyTorch Lightning.

De asemenea, am arătat cum Amazon Search folosește SageMaker Training pentru a-și antrena modelele de deep learning, și în special PyTorch Lightning cu biblioteca colectivă optimizată SageMaker Data Parallel ca backend. Trecerea la formarea distribuită a ajutat Amazon Search să obțină timpi de tren de 7.3 ori mai rapid.


Despre autori

Rulați PyTorch Lightning și PyTorch DDP nativ pe Amazon SageMaker Training, cu Amazon Search PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Emily Webber sa alăturat AWS imediat după lansarea SageMaker și de atunci a încercat să spună lumii despre asta! În afară de a construi noi experiențe ML pentru clienți, lui Emily îi place să mediteze și să studieze budismul tibetan.

Rulați PyTorch Lightning și PyTorch DDP nativ pe Amazon SageMaker Training, cu Amazon Search PlatoBlockchain Data Intelligence. Căutare verticală. Ai. Karan Dhiman este inginer de dezvoltare software la AWS, cu sediul în Toronto, Canada. Este foarte pasionat de spațiul de învățare automată și de crearea de soluții pentru accelerarea sarcinilor de lucru de calcul distribuite.

Rulați PyTorch Lightning și PyTorch DDP nativ pe Amazon SageMaker Training, cu Amazon Search PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Vishwa Karia este inginer de dezvoltare software la AWS Deep Engine. Interesele ei se află la intersecția dintre învățarea automată și sistemele distribuite și este, de asemenea, pasionată de împuternicirea femeilor în tehnologie și AI.

Rulați PyTorch Lightning și PyTorch DDP nativ pe Amazon SageMaker Training, cu Amazon Search PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Eiman Elnahrawy este inginer software principal la Amazon Search, care conduce eforturile de accelerare, scalare și automatizare a învățării automate. Expertiza ei se întinde pe mai multe domenii, inclusiv învățarea automată, sistemele distribuite și personalizarea.

Timestamp-ul:

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