Zaženite PyTorch Lightning in izvorni PyTorch DDP na Amazon SageMaker Training, ki vključuje Amazon Search PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Zaženite PyTorch Lightning in izvorni PyTorch DDP na Amazon SageMaker Training, ki vključuje Amazon Search

Toliko podatkov, tako malo časa. Strokovnjaki za strojno učenje (ML), podatkovni znanstveniki, inženirji in navdušenci so se srečali s to težavo po vsem svetu. Od obdelave naravnega jezika do računalniškega vida, tabele do časovnih vrst in vsega vmes, starodavni problem optimizacije za hitrost pri izvajanju podatkov s čim več grafičnimi procesorji, kot jih lahko dobite, je navdihnil nešteto rešitev. Danes z veseljem oznanjamo funkcije za razvijalce PyTorch, ki uporabljajo izvorna odprtokodna ogrodja, kot je PyTorch Lightning in PyTorch DDP, ki bo poenostavil njihovo pot v oblak.

Amazon SageMaker je v celoti upravljana storitev za ML, usposabljanje modela SageMaker pa je optimizirano računalniško okolje za visoko zmogljivo usposabljanje v velikem obsegu. Usposabljanje modelov SageMaker ponuja izkušnjo usposabljanja na daljavo z brezšivno nadzorno ravnino za preprosto usposabljanje in reprodukcijo modelov ML z visoko zmogljivostjo in nizkimi stroški. Z veseljem objavljamo nove funkcije v izobraževalnem portfelju SageMaker, zaradi katerih je izvajanje PyTorcha v velikem obsegu še lažje in dostopnejše:

  1. PyTorch Lightning je zdaj mogoče integrirati v SageMakerjeva porazdeljena podatkovna vzporedna knjižnica s samo eno vrstico spremembe kode.
  2. Usposabljanje modela SageMaker zdaj ima podporo za izvorni PyTorch Distributed Data Parallel z zaledjem NCCL, kar razvijalcem omogoča lažjo migracijo na SageMaker kot kadar koli prej.

V tej objavi razpravljamo o teh novih funkcijah in tudi izvemo, kako je Amazon Search zagnal PyTorch Lightning z optimiziranim porazdeljenim zaledjem za usposabljanje v SageMakerju, da bi pospešil čas usposabljanja modela.

Preden se poglobimo v študijo primera iskanja Amazon, želimo za tiste, ki tega ne poznate, podati nekaj ozadja SageMakerjeva porazdeljena podatkovna vzporedna knjižnica. Leta 2020 smo razvili in uvedli konfiguracijo gruče po meri za porazdeljen gradientni spust v obsegu, ki poveča splošno učinkovitost gruče, predstavljeno na Amazon Science kot Sled. SageMaker Distributed Data Parallel (SMDDP) je optimiziran za Amazonski elastični računalniški oblak (Amazon EC2) topologijo omrežja, vključno z EFA. Za večje velikosti gruče lahko SMDDP zagotovi 20–40-odstotno izboljšanje prepustnosti glede na Horovod (TensorFlow) in PyTorch Distributed Data Parallel. Za manjše velikosti gruče in podprte modele priporočamo SageMaker Training Compiler, ki lahko skrajša celoten delovni čas do 50 %.

V središču pozornosti strank: PyTorch Lightning na SageMakerjevem optimiziranem ozadju z Amazon Search

Amazon Search je odgovoren za izkušnjo iskanja in odkrivanja na Amazon.com. Spodbuja izkušnjo iskanja za stranke, ki iščejo izdelke za nakup na Amazonu. Na visoki ravni Amazon Search gradi indeks za vse izdelke, ki se prodajajo na Amazon.com. Ko stranka vnese poizvedbo, Amazon Search nato uporabi različne tehnike ML, vključno z modeli globokega učenja, da ustrezne in zanimive izdelke poveže s poizvedbo stranke. Nato izdelke razvrsti, preden rezultate pokaže stranki.

Znanstveniki Amazon Search so uporabili PyTorch Lightning kot eno od glavnih ogrodij za usposabljanje modelov globokega učenja, ki spodbujajo razvrščanje v Iskanju zaradi dodanih funkcij uporabnosti poleg PyTorcha. SMDDP ni bil podprt za modele globokega učenja, napisane v PyTorch Lightning pred tem novim lansiranjem SageMakerja. To je znanstvenikom Amazon Searcha, ki raje uporabljajo PyTorch Lightning, preprečilo, da bi prilagodili svoje usposabljanje modela z uporabo podatkovnih vzporednih tehnik, kar je znatno upočasnilo njihov čas usposabljanja in jim preprečilo preizkušanje novih eksperimentov, ki zahtevajo bolj razširljivo usposabljanje.

Zgodnji rezultati primerjalne analize skupine kažejo 7.3-krat hitrejši čas usposabljanja za vzorčni model, ko se izvaja na osmih vozliščih v primerjavi z osnovno linijo usposabljanja z enim vozliščem. Osnovni model, uporabljen pri teh primerjalnih analizah, je večplastna perceptronska nevronska mreža s sedmimi gostimi popolnoma povezanimi plastmi in več kot 200 parametri. Naslednja tabela povzema rezultate primerjalne analize na primerkih usposabljanja ml.p3.16xlarge SageMaker.

Število primerkov Čas usposabljanja (minute) Izboljšava
1 99 Izhodišče
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

Nato se poglobimo v podrobnosti o novih lansiranjih. Če želite, se lahko pomaknete skozi naše dopisovanje primer zvezka.

Zaženite PyTorch Lightning s porazdeljeno knjižnico za usposabljanje SageMaker

Z veseljem sporočamo, da se SageMaker Data Parallel zdaj nemoteno integrira s PyTorch Lightning v okviru usposabljanja SageMaker.

PyTorch Lightning je odprtokodno ogrodje, ki omogoča poenostavitev pisanja modelov po meri v PyTorch. Na nek način, podoben temu, kar je Keras naredil za TensorFlow ali celo nedvomno Hugging Face, PyTorch Lightning zagotavlja visokonivojski API z abstrakcijami za večino funkcionalnosti nižje ravni samega PyTorcha. To vključuje definiranje modela, profiliranje, vrednotenje, obrezovanje, vzporednost modela, konfiguracije hiperparametrov, prenos učenja in drugo.

Pred tem razvijalci PyTorch Lightning niso bili prepričani, kako nemoteno preseliti svojo kodo za usposabljanje na visoko zmogljive gruče GPU SageMaker. Poleg tega ni bilo možnosti, da bi izkoristili povečanje učinkovitosti, ki ga je uvedel SageMaker Data Parallel.

Za PyTorch Lightning, na splošno, bi moralo biti malo ali nič sprememb kode za preprosto izvajanje teh API-jev na SageMaker Training. V primerih zvezkov, ki jih uporabljamo DDPStrategy in vtičnik DDPP metod.

Obstajajo trije koraki za uporabo PyTorch Lightning s SageMaker Data Parallel kot optimizirano zaledje:

  1. Uporabite podprto AWS Deep Learning Container (DLC) kot osnovno sliko ali po želji ustvarite svoj vsebnik in sami namestite zaledje SageMaker Data Parallel. Zagotovite, da imate PyTorch Lightning vključen v potrebne pakete, na primer z a requirements.txt Datoteka.
  2. Naredite nekaj manjših sprememb kode v skriptu za usposabljanje, ki omogoči optimizirano zaledje. Tej vključujejo:
    1. Uvozite knjižnico SM DDP:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. Nastavite okolje PyTorch Lightning za 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. Če uporabljate različico PyTorch Lightning, starejšo od 1.5.10, boste morali dodati še nekaj korakov.
      1. Najprej dodajte spremenljivko okolja:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. Drugič, zagotovite uporabo DDPPluginNamesto DDPStrategy. Če uporabljate novejšo različico, ki jo lahko preprosto nastavite tako, da postavite requirements.txt v source_dir za vaše delo, potem to ni potrebno. Oglejte si naslednjo kodo:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. Po želji definirajte zaledje svoje skupine procesov kot "smddp" v DDPSTrategy predmet. Če pa uporabljate PyTorch Lightning z zaledjem PyTorch DDP, ki je prav tako podprt, preprosto odstranite to `process_group_backend` parameter. Oglejte si naslednjo kodo:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Prepričajte se, da imate v ocenjevalcu zabeleženo distribucijsko metodo, kot je npr distribution={"smdistributed":{"dataparallel":{"enabled":True} če uporabljate zaledje Herring ali distribution={"pytorchddp":{"enabled":True}.
  • Za popoln seznam ustreznih parametrov v distribution glejte našo dokumentacijo tukaj.

Sedaj lahko začnete svoje usposabljanje SageMaker! Svoje usposabljanje lahko zaženete prek Python SDK, Boto3, konzole SageMaker, Vmesnik ukazne vrstice AWS (AWS CLI) in neštete druge metode. Z vidika AWS je to en ukaz API: create-training-job. Ne glede na to, ali zaženete ta ukaz z lokalnega terminala, an AWS Lambda funkcija, an Amazon SageMaker Studio prenosni računalnik, cevovod KubeFlow ali katero koli drugo računalniško okolje je popolnoma odvisno od vas.

Upoštevajte, da je integracija med PyTorch Lightning in SageMaker Data Parallel trenutno podprta samo za novejše različice PyTorch, od 1.11. Poleg tega je ta izdaja na voljo samo v DLC-jih AWS za SageMaker od PyTorch 1.12. Poskrbite, da boste to sliko usmerili kot osnovo. noter us-east-1, ta naslov je naslednji:

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

Nato lahko razširite svoj vsebnik Docker z uporabo tega kot osnovne slike ali pa to posredujete kot spremenljivko v image_uri trditev Ocenjevalnik usposabljanja SageMaker.

Posledično boste lahko zagnali svojo kodo PyTorch Lightning na optimiziranih grafičnih procesorjih SageMaker Training z najboljšo zmogljivostjo, ki je na voljo v AWS.

Zaženite PyTorch Distributed Data Parallel na SageMaker

Največji problem PyTorch Distributed Data Parallel (DDP) rešitev je varljivo preprosta: hitrost. Dobro porazdeljeno ogrodje usposabljanja bi moralo zagotavljati stabilnost, zanesljivost in, kar je najpomembneje, odlično zmogljivost v velikem obsegu. PyTorch DDP to zagotavlja tako, da razvijalcem gorilnikov nudi API-je za repliciranje njihovih modelov v več napravah GPE, tako v nastavitvah z enim vozliščem kot z več vozlišči. Ogrodje nato upravlja razdelitev različnih objektov iz nabora podatkov za usposabljanje v vsako kopijo modela, pri čemer povpreči gradiente za vsako od kopij modela, da jih sinhronizira v vsakem koraku. To proizvede en model ob popolnem zaključku celotnega treninga. Naslednji diagram prikazuje ta postopek.

PyTorch DDP je običajen v projektih, ki uporabljajo velike nabore podatkov. Natančna velikost vsakega nabora podatkov se bo zelo razlikovala, vendar je splošna smernica, da nabore podatkov, velikosti izračuna in velikosti modelov prilagodite v podobnih razmerjih. Imenuje se tudi skalirni zakoni, je optimalna kombinacija teh treh predmet razprave in se bo razlikovala glede na aplikacije. Pri AWS lahko na podlagi dela z več strankami jasno vidimo prednosti podatkovnih vzporednih strategij, ko je skupna velikost nabora podatkov vsaj nekaj deset GB. Ko se nabori podatkov še povečajo, je izvajanje neke vrste podatkovne vzporedne strategije kritična tehnika za pospešitev celotnega preizkusa in izboljšanje časa za pridobitev vrednosti.

Prej so stranke, ki so uporabljale PyTorch DDP za porazdeljeno usposabljanje v prostorih ali v drugih računalniških okoljih, imele pomanjkanje ogrodja za preprosto selitev svojih projektov na SageMaker Training, da bi izkoristile visoko zmogljive grafične procesorje z brezhibno nadzorno ravnino. Natančneje, morali so bodisi preseliti svoje podatkovno vzporedno ogrodje na SMDDP ali pa ročno razviti in preizkusiti zmogljivosti PyTorch DDP na SageMaker Training. Danes SageMaker Training z veseljem zagotavlja brezhibno izkušnjo za stranke, ki vkrcajo svojo kodo PyTorch DDP.

Če želite to učinkovito uporabljati, vam ni treba spreminjati skriptov za usposabljanje.

Ta novi parameter lahko vidite v naslednji kodi. V distribution parameter preprosto dodajte pytorchddp in nastavite omogočeno kot 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"}}
)

Ta nova konfiguracija se začne pri SageMaker Python SDK različici 2.102.0 in PyTorch DLC 1.11.

Za razvijalce PyTorch DDP, ki poznajo popularne torchrun ogrodja, je koristno vedeti, da to ni potrebno v okolju za usposabljanje SageMaker, ki že zagotavlja robustno toleranco napak. Da pa zmanjšate prepisovanje kode, lahko prinesete drug zaganjalni skript, ki zažene ta ukaz kot vašo vstopno točko.

Zdaj lahko razvijalci PyTorch preprosto premaknejo svoje skripte na SageMaker, s čimer zagotovijo, da lahko njihovi skripti in vsebniki nemoteno delujejo v več računalniških okoljih.

To jih pripravi, da bodo v prihodnosti izkoristili Porazdeljene knjižnice za usposabljanje SageMaker ki zagotavljajo topologije usposabljanja, optimizirane za AWS, za zagotavljanje do 40 % izboljšav pospešitve. Za razvijalce PyTorch je to ena vrstica kode! Za kodo PyTorch DDP lahko preprosto nastavite zaledje na smddp pri inicializaciji (glej Spremenite skript za usposabljanje PyTorch), kot je prikazano v naslednji kodi:

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

Kot smo videli zgoraj, lahko nastavite tudi zaledje DDPStrategy do smddp pri uporabi Lightning. To lahko vodi do do 40% skupnih pospeškov za velike grozde! Če želite izvedeti več o porazdeljenem usposabljanju na SageMaker, glejte naš spletni seminar na zahtevo, podporni zvezki, ustrezne Dokumentacijain članki.

zaključek

V tej objavi smo predstavili dve novi funkciji v družini SageMaker Training. To razvijalcem PyTorch veliko olajša uporabo njihove obstoječe kode na SageMakerju, tako PyTorch DDP kot PyTorch Lightning.

Pokazali smo tudi, kako Amazon Search uporablja SageMaker Training za usposabljanje svojih modelov globokega učenja in zlasti PyTorch Lightning z optimizirano kolektivno knjižnico SageMaker Data Parallel kot zaledjem. Prehod na porazdeljeno usposabljanje je na splošno pomagal storitvi Amazon Search doseči 7.3-krat hitrejši čas vlaka.


O avtorjih

Zaženite PyTorch Lightning in izvorni PyTorch DDP na Amazon SageMaker Training, ki vključuje Amazon Search PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Emily Webber se je pridružil AWS takoj po lansiranju SageMakerja in od takrat poskuša svetu povedati o njem! Poleg ustvarjanja novih izkušenj ML za stranke Emily uživa v meditaciji in preučevanju tibetanskega budizma.

Zaženite PyTorch Lightning in izvorni PyTorch DDP na Amazon SageMaker Training, ki vključuje Amazon Search PlatoBlockchain Data Intelligence. Navpično iskanje. Ai. Karan Dhiman je inženir za razvoj programske opreme pri AWS s sedežem v Torontu v Kanadi. Zelo je navdušen nad prostorom za strojno učenje in gradnjo rešitev za pospeševanje porazdeljenih računalniških delovnih obremenitev.

Zaženite PyTorch Lightning in izvorni PyTorch DDP na Amazon SageMaker Training, ki vključuje Amazon Search PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Vishwa Karia je inženir za razvoj programske opreme pri AWS Deep Engine. Njeni interesi so na presečišču strojnega učenja in porazdeljenih sistemov, navdušena pa je tudi nad opolnomočenjem žensk na področju tehnologije in umetne inteligence.

Zaženite PyTorch Lightning in izvorni PyTorch DDP na Amazon SageMaker Training, ki vključuje Amazon Search PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Eiman Elnahrawy je glavni programski inženir pri Amazon Search, ki vodi prizadevanja za pospeševanje, skaliranje in avtomatizacijo strojnega učenja. Njeno strokovno znanje zajema več področij, vključno s strojnim učenjem, porazdeljenimi sistemi in personalizacijo.

Časovni žig:

Več od Strojno učenje AWS