Povečajte učinkovitost in zmanjšajte stroške usposabljanja poglobljenega učenja z AWS Trainium in Amazon SageMaker

Povečajte učinkovitost in zmanjšajte stroške usposabljanja poglobljenega učenja z AWS Trainium in Amazon SageMaker

Izvorno vozlišče: 2010875

Danes več deset tisoč strank gradi, usposablja in uvaja modele strojnega učenja (ML) z uporabo Amazon SageMaker za poganjanje aplikacij, ki lahko na novo odkrijejo svoja podjetja in uporabniške izkušnje. Ti modeli ML so se v zadnjih nekaj letih povečevali po velikosti in kompleksnosti, kar je privedlo do najsodobnejših natančnosti pri različnih nalogah in tudi podaljšalo čas za usposabljanje iz dni v tedne. Posledično morajo stranke prilagoditi svoje modele na stotine do tisoče pospeševalnikov, zaradi česar je njihovo usposabljanje dražje.

SageMaker je popolnoma upravljana storitev ML, ki razvijalcem in podatkovnim znanstvenikom pomaga pri preprosti gradnji, usposabljanju in uvajanju modelov ML. SageMaker že ponuja najširšo in najglobljo izbiro računalniških ponudb, ki vključujejo pospeševalnike strojne opreme za usposabljanje ML, vključno z G5 (Nvidia A10G) primerov in P4d (Nvidia A100) primerov.

Naraščajoče računalniške zahteve zahtevajo hitrejšo in stroškovno učinkovitejšo procesorsko moč. Da bi dodatno skrajšali čas usposabljanja modela in omogočili izvajalcem ML, da hitreje ponavljajo, AWS uvaja inovacije na področju čipov, strežnikov in povezljivosti podatkovnih centrov. Novi primerki Trn1, ki jih poganja AWS Trainium čipi ponujajo najboljšo ceno in zmogljivost ter najhitrejše usposabljanje modela ML na AWS, kar zagotavlja do 50 % nižje stroške za usposabljanje modelov globokega učenja v primerjavi s primerljivimi instancami, ki temeljijo na GPU, brez kakršnega koli zmanjšanja natančnosti.

V tej objavi prikazujemo, kako lahko povečate svojo zmogljivost in zmanjšate stroške z uporabo primerkov Trn1 s SageMakerjem.

Pregled rešitev

Izobraževalna opravila SageMaker podpirajo primerke ml.trn1, ki jih poganjajo čipi Trainium, ki so namensko izdelani za visoko zmogljive aplikacije za usposabljanje ML v oblaku. Primerke ml.trn1 lahko uporabite na SageMakerju za urjenje obdelave naravnega jezika (NLP), računalniškega vida in modelov priporočil v celotnem širok nabor aplikacij, kot so prepoznavanje govora, priporočila, odkrivanje goljufij, razvrščanje slik in videa ter napovedovanje. Primerki ml.trn1 imajo do 16 čipov Trainium, ki je čip druge generacije ML, ki ga je izdelal AWS po Sklepanje AWS. ml.trn1 primerki so prvi Amazonski elastični računalniški oblak (Amazon EC2) primerki z do 800 Gbps omrežne pasovne širine EFA (Elastic Fabric Adapter). Za učinkovito vzporednost podatkov in modelov ima vsak primerek ml.trn1.32xl 512 GB pomnilnika z visoko pasovno širino, zagotavlja do 3.4 petaflopa računalniške moči FP16/BF16 in vključuje NeuronLink, visokopasovno in neblokirno medsebojno povezavo znotraj instance. .

Trainium je na voljo v dveh konfiguracijah in se lahko uporablja v vzhodni (N. Virginia) in zahodni (Oregon) regiji ZDA.

Naslednja tabela povzema funkcije primerkov Trn1.

Velikost primerka Trainij
Pospeševalniki
Pospeševalnik
Spomin
(GB)
vCPU Primerek
Spomin
(GiB)
mreža
pasovna širina
(Gbps)
EFA in
RDMA
Podpora
trn1.2xvelik 1 32 8 32 Do 12.5 Ne
trn1.32xvelik 16 512 128 512 800 Da
trn1n.32xlarge (kmalu na voljo) 16 512 128 512 1600 Da

Razumejmo, kako uporabljati Trainium s SageMakerjem s preprostim primerom. Usposobili bomo model klasifikacije besedila z usposabljanjem SageMaker in PyTorch z uporabo knjižnice Hugging Face Transformers Library.

Uporabljamo nabor podatkov Amazon Reviews, ki je sestavljen iz mnenj z amazon.com. Podatki zajemajo obdobje 18 let in obsegajo približno 35 milijonov pregledov do marca 2013. Ocene vključujejo informacije o izdelku in uporabniku, ocene in pregled v navadnem besedilu. Naslednja koda je primer iz AmazonPolarity testni niz:

{
title':'Great CD', 'content':"My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing ""Who was that singing ?""", 'label':1
}

Za to objavo uporabljamo le polja za vsebino in oznako. Polje z vsebino je ocena poljubnega besedila, polje z oznako pa je binarna vrednost, ki vsebuje 1 ali 0 za pozitivne oziroma negativne ocene.

Za naš algoritem uporabljamo BERT, transformatorski model, vnaprej usposobljen na velikem korpusu angleških podatkov na samonadzorovan način. Ta model je namenjen predvsem natančnemu prilagajanju nalog, ki za sprejemanje odločitev uporabljajo celoten stavek (potencialno zamaskiran), kot je razvrščanje zaporedja, razvrščanje žetonov ali odgovarjanje na vprašanja.

Podrobnosti o izvajanju

Začnimo tako, da si podrobneje ogledamo različne komponente, vključene v usposabljanje modela:

  • AWS Trainium – V svojem bistvu vsak Primer Trainium ima vgrajene naprave Trainium. Trn1.2xlarge ima 1 napravo Trainium, Trn1.32xlarge pa 16 naprav Trainium. Vsaka naprava Trainium je sestavljena iz računalništva (2 NeuronCore-v2), 32 GB pomnilnika naprave HBM in NeuronLink za hitro komunikacijo med napravami. Vsak NeuronCore-v2 je sestavljen iz popolnoma neodvisne heterogene računalniške enote z ločenimi motorji (Tensor/Vector/Scalar/GPSIMD). GPSIMD so v celoti programabilni procesorji za splošne namene, ki jih lahko uporabite za izvajanje operaterjev po meri in jih izvajate neposredno na motorjih NeuronCore.
  • Usposabljanje za Amazon SageMaker – SageMaker ponuja popolnoma upravljano izkušnjo usposabljanja za preprosto usposabljanje modelov, ne da bi vam bilo treba skrbeti za infrastrukturo. Ko uporabljate SageMaker Training, izvaja vse, kar je potrebno za usposabljanje, kot so koda, vsebnik in podatki, v računalniški infrastrukturi, ki je ločena od klicalnega okolja. To nam omogoča vzporedno izvajanje poskusov in hitro ponavljanje. SageMaker ponuja a SDK za Python za uvedbo delovnih mest za usposabljanje. Primer v tej objavi uporablja SDK SageMaker Python za sprožitev opravila usposabljanja z uporabo Trainiuma.
  • AWS nevron – Ker ima Trainium NeuronCore lasten računalniški mehanizem, potrebujemo mehanizem za sestavljanje naše kode za usposabljanje. The AWS nevron prevajalnik vzame kodo, napisano v Pytorch/XLA, in jo optimizira za delovanje na napravah Neuron. Prevajalnik Neuron je integriran kot del vsebnika za globoko učenje, ki ga bomo uporabili za usposabljanje našega modela.
  • PyTorch/XLA - To Paket Python uporablja prevajalnik globokega učenja XLA za povezovanje ogrodja globokega učenja PyTorch in pospeševalnikov v oblaku, kot je Trainium. Izgradnja novega omrežja PyTorch ali pretvorba obstoječega za delovanje na napravah XLA zahteva le nekaj vrstic kode, specifične za XLA. Za naš primer uporabe bomo videli, katere spremembe moramo narediti.
  • Porazdeljeno usposabljanje – Za učinkovito izvajanje usposabljanja na več NeuronCore potrebujemo mehanizem za distribucijo usposabljanja v razpoložljive NeuronCore. SageMaker podpira torchrun s primerki Trainium, ki jih je mogoče uporabiti za izvajanje več procesov, ki ustrezajo številu NeuronCores v gruči. To se naredi tako, da se porazdelitveni parameter posreduje ocenjevalcu SageMaker, kot sledi, ki začne vzporedno porazdeljeno usposabljanje podatkov, kjer se isti model naloži v različne NeuronCore, ki obdelujejo ločene pakete podatkov:
distribution={"torch_distributed": {"enabled": True}}

Spremembe skripta so potrebne za delovanje v Trainiumu

Oglejmo si spremembe kode, ki so potrebne za sprejem običajnega skripta PyTorch, ki temelji na grafičnem procesorju, za izvajanje v Trainiumu. Na visoki ravni moramo narediti naslednje spremembe:

  1. Zamenjajte naprave GPE z napravami Pytorch/XLA. Ker uporabljamo distribucijo gorilnika, moramo inicializirati usposabljanje z XLA kot napravo, kot sledi:
    device = "xla"
    torch.distributed.init_process_group(device)

  2. Za premostitev distribuiranih API-jev PyTorch in komunikacijske semantike XLA uporabljamo porazdeljeno zaledje PyTorch/XLA.
  3. Za cevovode za vnos podatkov uporabljamo PyTorch/XLA MpDeviceLoader. MpDeviceLoader pomaga izboljšati zmogljivost s prekrivanjem treh korakov: sledenje, kompilacija in paketno nalaganje podatkov v napravo. Nalagalnik podatkov PyTorch moramo zaviti z MpDeviceDataLoader na naslednji način:
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. Zaženite korak optimizacije z API-jem, ki ga ponuja XLA, kot je prikazano v naslednji kodi. To konsolidira gradiente med jedri in izda izračun korakov naprave XLA.
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. Preslikajte API-je CUDA (če obstajajo) v generične API-je PyTorch.
  6. Zamenjajte združene optimizatorje CUDA (če obstajajo) z generičnimi alternativami PyTorch.

Celoten primer, ki usposablja model klasifikacije besedila z uporabo SageMaker in Trainium, je na voljo v naslednjem GitHub repo. Datoteka zvezka Natančno nastavite transformatorje za gradnjo klasifikacijskih modelov z uporabo SageMaker in Trainium.ipynb je vstopna točka in vsebuje navodila po korakih za izvedbo usposabljanja.

Primerjalni testi

V preizkusu smo izvedli dve učni opravili: eno na ml.trn1.32xlarge in eno na ml.p4d.24xlarge z enako velikostjo serije, podatki o usposabljanju in drugimi hiperparametri. Med izobraževalnimi opravili smo izmerili zaračunani čas izobraževalnih opravil SageMaker in izračunali ceno-učinkovitost tako, da smo čas, potreben za izvajanje izobraževalnih opravil v urah, pomnožili s ceno na uro za vrsto instance. Izbrali smo najboljši rezultat za vsako vrsto instance izmed več izvajanj opravil.

Naslednja tabela povzema naše primerjalne ugotovitve.

Model Vrsta primerka Cena (na vozlišče * uro) Prepustnost (iteracije/s) ValidationAccuracy Obračunski čas (s) Stroški usposabljanja v $
Osnovna klasifikacija BERT ml.trn1.32xvelik 24.725 6.64 0.984 6033 41.47
Osnovna klasifikacija BERT ml.p4d.24xvelika 37.69 5.44 0.984 6553 68.6

Rezultati so pokazali, da instanca Trainium stane manj kot instanca P4d, saj zagotavlja podobno prepustnost in natančnost pri usposabljanju istega modela z enakimi vhodnimi podatki in parametri usposabljanja. To pomeni, da instanca Trainium zagotavlja boljše razmerje med ceno in zmogljivostjo kot instance P4D, ki temeljijo na GPU. S preprostim primerom, kot je ta, lahko vidimo, da Trainium ponuja približno 22 % hitrejši čas za usposabljanje in do 50 % nižje stroške v primerjavi z instancami P4d.

Razmestite usposobljeni model

Ko usposobimo model, ga lahko uvedemo v različne vrste instanc, kot so CPE, GPE ali AWS Inferentia. Ključna točka, ki jo je treba upoštevati, je, da usposobljeni model ni odvisen od specializirane strojne opreme za uvajanje in sklepanje. SageMaker zagotavlja mehanizme za uvajanje usposobljenega modela z uporabo mehanizmov v realnem času ali paketnih mehanizmov. Primer prenosnega računalnika v repo GitHub vsebuje kodo za uvajanje usposobljenega modela kot končne točke v realnem času z uporabo primerka ml.c5.xlarge (na osnovi CPE).

zaključek

V tej objavi smo pogledali, kako uporabiti Trainium in SageMaker za hitro nastavitev in usposabljanje klasifikacijskega modela, ki omogoča do 50 % prihranek stroškov brez kompromisov glede natančnosti. Trainium lahko uporabite za širok nabor primerov uporabe, ki vključujejo predhodno usposabljanje ali natančno nastavitev modelov, ki temeljijo na transformatorju. Za več informacij o podpori različnih arhitektur modelov glejte Smernice za prilagajanje arhitekture modela.


O avtorjih

Arun Kumar Lokanatha je višji arhitekt rešitev ML pri ekipi storitve Amazon SageMaker. Osredotoča se na pomoč strankam pri izgradnji, usposabljanju in selitvi proizvodnih delovnih obremenitev ML na SageMaker v velikem obsegu. Specializiran je za globoko učenje, zlasti na področju NLP in CV. Zunaj dela uživa v teku in pohodništvu.

Mark Yu je programski inženir v AWS SageMaker. Osredotoča se na izgradnjo obsežnih porazdeljenih sistemov za usposabljanje, optimizacijo učinkovitosti usposabljanja in razvoj visoko zmogljive strojne opreme za ml usposabljanje, vključno s SageMaker trainium. Mark ima tudi poglobljeno znanje o optimizaciji infrastrukture strojnega učenja. V prostem času se ukvarja s pohodništvom in tekom.

Omri Fuchs je vodja razvoja programske opreme pri AWS SageMaker. Je tehnični vodja, odgovoren za delovno platformo za usposabljanje SageMaker, ki se osredotoča na optimizacijo učinkovitosti usposabljanja SageMaker in izboljšanje izkušenj z usposabljanjem. Ima strast do najsodobnejše tehnologije ML in AI. V prostem času rad kolesari in pohodi.

Gal Oshri je višji produktni vodja v ekipi Amazon SageMaker. Ima 7 let izkušenj z delom na orodjih, ogrodjih in storitvah strojnega učenja.

Časovni žig:

Več od Strojno učenje AWS