ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia

To je gostujoča objava v blogu, ki sta jo napisala skupaj z Minghui Yu in Jianzhe Xiao iz Bytedance.

ByteDance je tehnološko podjetje, ki upravlja vrsto vsebinskih platform za informiranje, izobraževanje, zabavo in navdih ljudi v različnih jezikih, kulturah in geografskih območjih. Uporabniki zaupajo in uživajo v naših vsebinskih platformah zaradi bogatih, intuitivnih in varnih izkušenj, ki jih ponujajo. Te izkušnje omogoča naš zaledni mehanizem strojnega učenja (ML) z modeli ML, izdelanimi za moderiranje vsebine, iskanje, priporočila, oglaševanje in nove vizualne učinke.

Ekipa ByteDance AML (Applied Machine Learning) zagotavlja visoko zmogljive, zanesljive in razširljive sisteme ML ter storitve ML od konca do konca za poslovanje podjetja. Raziskovali smo načine za optimizacijo naših sistemov sklepanja ML, da bi zmanjšali stroške, ne da bi povečali odzivni čas. Ko se je AWS zagnal Sklepanje AWS, visoko zmogljivega sklepnega čipa ML, ki ga je namensko izdelal AWS, smo sodelovali z našo skupino za račune AWS, da bi preizkusili, ali lahko AWS Inferentia doseže naše cilje optimizacije. Izvedli smo več dokazov koncepta, kar je povzročilo do 60 % nižje stroške sklepanja v primerjavi z instancami EC4 G2dn, ki temeljijo na T4 GPU, in do 25 % nižjo zakasnitev sklepanja. Da bi uresničili te prihranke pri stroških in izboljšave zmogljivosti, smo se odločili uvesti modele na osnovi AWS Inferentia Amazonski elastični računalniški oblak (Amazon EC2) Primerki Inf1 v proizvodnji.

Naslednja tabela prikazuje izboljšanje zakasnitve za enega od naših modelov zaznavanja obrazov, ki je bil predhodno nameščen na grafičnih procesorjih s Tensor RT. Povprečna latenca se je zmanjšala za 20 % (s 50 milisekund na 40 milisekund), latenca p99 pa za 25 % (z 200 milisekund na 150 milisekund).

V tej objavi delimo, kako smo prihranili pri stroških sklepanja, hkrati pa zmanjšali zakasnitve in povečali prepustnost z uporabo AWS Inferentia.

V iskanju visoko zmogljivega, stroškovno učinkovitega računalništva

Ekipa ByteDance AML se osredotoča na raziskave in implementacijo najsodobnejših sistemov ML in heterogenih računalniških virov, ki jih potrebujejo. Ustvarjamo obsežne sisteme za usposabljanje in sklepanje za najrazličnejše modele priporočil, obdelavo naravnega jezika (NLP) in računalniški vid (CV). Ti modeli so zelo zapleteni in obdelujejo ogromno količino podatkov s številnih vsebinskih platform, ki jih upravlja ByteDance. Uvajanje teh modelov zahteva znatne vire GPE, bodisi v oblaku ali na mestu uporabe. Zato so računski stroški za te sisteme sklepanja precej visoki.

Te stroške smo želeli znižati, ne da bi to vplivalo na prepustnost ali zakasnitev. Želeli smo prilagodljivost oblaka in hitrejši cikel dostave, ki je veliko krajši od tistega, ki je potreben za nastavitev na mestu uporabe. In čeprav smo bili odprti za raziskovanje novih možnosti za pospešeno ML, smo želeli tudi brezhibno izkušnjo za razvijalce.

Od naše ekipe AWS smo izvedeli, da primerki EC2 Inf1, ki temeljijo na AWS Inferentia, zagotavljajo visoko zmogljivo sklepanje ML po najnižji ceni na sklepanje v oblaku. Z zanimanjem smo jih raziskali in ugotovili smo, da so zelo primerni za naš primer uporabe, saj izvajamo znatno strojno učenje na velikih količinah slikovnih, predmetnih, govornih in besedilnih podatkov. Vsekakor so bili primerni za naše cilje, saj smo glede na kompleksnost naših modelov in obseg dnevnih napovedi lahko realizirali ogromne prihranke. Poleg tega ima AWS Inferentia veliko količino pomnilnika na čipu, ki ga lahko uporabite za predpomnjenje velikih modelov, namesto da bi jih shranili zunaj čipa. Spoznali smo, da lahko to pomembno vpliva na zmanjšanje zakasnitve sklepanja, ker imajo procesorska jedra AWS Inferentia, imenovana NeuronCores, hiter dostop do modelov, ki so shranjeni v pomnilniku na čipu in niso omejeni s pomnilnikom zunaj čipa. pasovna širina.

Na koncu smo po oceni več možnosti izbrali instance EC2 Inf1 zaradi njihovega boljšega razmerja med zmogljivostjo in ceno v primerjavi z instancami G4dn in NVIDIA T4 na mestu uporabe. Z ekipo AWS smo se vključili v cikel neprekinjenega ponavljanja, da bi odklenili cenovne in zmogljivostne prednosti Inf1.

Uvajanje delovnih obremenitev sklepanja na AWS Inferentia

Začetek uporabe AWS Inferentia z uporabo AWS Neuron SDK je vključeval dve fazi: zbiranje kode modela in uvajanje na primerke Inf1. Kot je običajno pri premikanju modelov ML na katero koli novo infrastrukturo, smo se soočili z nekaterimi izzivi. Te izzive smo lahko premagali s prizadevnostjo in podporo naše ekipe AWS. V naslednjih razdelkih delimo več uporabnih nasvetov in opažanj, ki temeljijo na naših izkušnjah z uvajanjem sklepnih delovnih obremenitev v AWS Inferentia.

Conformer model za OCR

Naš konformni model optičnega prepoznavanja znakov (OCR) zazna in prebere besedilo v slikah. Delali smo na več optimizacijah, da bi dosegli visoko zmogljivost (QPS) za različne velikosti paketov, hkrati pa ohranjali nizko zakasnitev. Nekaj ​​ključnih optimizacij je navedenih spodaj:

  • Optimizacije prevajalnika – Privzeto se Inferentia najbolje obnese pri vnosih s fiksno dolžino zaporedja, kar je predstavljalo izziv, saj dolžina besedilnih podatkov ni fiksna. Da bi to odpravili, smo naš model razdelili na dva dela: kodirnik in dekoder. Ta dva podmodela smo sestavili ločeno in ju nato prek TorchScripta združili v en sam model. Z izvajanjem toka nadzora zanke for na procesorjih je ta pristop omogočil podporo za spremenljive dolžine zaporedja na Inferentia.
  • Zmogljivost globinske konvolucije – Naleteli smo na ozko grlo DMA pri operaciji globinske konvolucije, ki jo naš model konformerja pogosto uporablja. Tesno smo sodelovali z ekipo AWS Neuron, da smo identificirali in odpravili ozko grlo v zmogljivosti dostopa DMA, kar je izboljšalo učinkovitost te operacije in izboljšalo splošno učinkovitost našega modela OCR.

ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ustvarili smo dve novi različici modela za optimizacijo naše uvedbe na Inferentia:

  • Kombinirani in razviti kodirnik/dekoder – Namesto uporabe neodvisno prevedenega kodirnika in dekoderja smo združili kodirnik in popolnoma razvit dekoder v en sam model in ta model prevedli kot en NEFF. Odvijanje dekoderja omogoča zagon celotnega toka nadzora dekoderja na Inferentia brez uporabe operacij CPE. S tem pristopom vsaka ponovitev dekoderja uporabi točno toliko računanja, ki je potrebno za ta žeton. Ta pristop izboljša zmogljivost, ker znatno zmanjšamo odvečno računanje, ki je bilo prej uvedeno z oblazinjenjem vnosov. Poleg tega med iteracijami dekoderja ni potreben prenos podatkov iz Inferentia v CPE, kar drastično skrajša V/I čas. Ta različica modela ne podpira zgodnje zaustavitve.
  • Particioniran odvit dekoder – Podobno kot pri kombiniranem popolnoma razvitem modelu ta različica modela odvije več iteracij dekoderja in jih prevede kot eno samo izvedbo (vendar ne vključuje kodirnika). Na primer, za največjo dolžino zaporedja 75 lahko dekoder razdelimo na 3 particije, ki izračunajo žetone 1-25, 26-50 in 51-75. Kar zadeva V/I, je to tudi bistveno hitreje, ker nam ni treba prenesti izhoda kodirnika enkrat na vsako ponovitev. Namesto tega se izhodi prenesejo le enkrat na vsako particijo dekodirnika. Ta različica modela podpira zgodnjo zaustavitev, vendar samo na mejah particije. Meje particij je mogoče nastaviti za vsako posebno aplikacijo, da zagotovite, da večina zahtev izvede samo eno particijo.

Za nadaljnje izboljšanje zmogljivosti smo naredili naslednje optimizacije za zmanjšanje uporabe pomnilnika ali izboljšanje učinkovitosti dostopa:

  • Deduplikacija tenzorja in zmanjšane kopije – To je optimizacija prevajalnika, ki znatno zmanjša velikost razvitih modelov in število navodil/dostopov do pomnilnika s ponovno uporabo tenzorjev za izboljšanje prostorske učinkovitosti.
  • Zmanjšana navodila – To je optimizacija prevajalnika, ki se uporablja z neobloženo različico dekoderja za znatno zmanjšanje skupnega števila navodil.
  • Večjedrna deduplikacija – To je optimizacija izvajalnega časa, ki je alternativa deduplikaciji tenzorjev. S to možnostjo bodo vsi večjedrni modeli bistveno bolj prostorsko učinkoviti.

Model ResNet50 za klasifikacijo slik

ResNet-50 je predhodno usposobljen model globokega učenja za klasifikacijo slik. To je konvolucijska nevronska mreža (CNN ali ConvNet), ki se najpogosteje uporablja za analizo vizualnih podob. Uporabili smo naslednje tehnike za izboljšanje delovanja tega modela na Inferentia:

  • Transformacija modela – Številni modeli ByteDance so izvoženi v formatu ONNX, ki ga Inferentia trenutno izvorno ne podpira. Za obdelavo teh modelov ONNX je ekipa AWS Neuron zagotovila skripte za pretvorbo naših modelov iz formata ONNX v modele PyTorch, ki jih je mogoče neposredno prevesti za Inferentia z uporabo torch-neuron.
  • Optimizacija učinkovitosti – Tesno smo sodelovali z AWS nevron ekipa za prilagoditev hevristike razporejanja v prevajalniku za optimizacijo delovanja naših modelov ResNet-50.

Večmodalni model za moderiranje vsebine

Naš večmodalni model globokega učenja je kombinacija več ločenih modelov. Velikost tega modela je relativno velika, kar je povzročilo napake pri nalaganju modela na Inferentia. Ekipa AWS Neuron je uspešno rešila to težavo z uporabo delitve teže za zmanjšanje porabe pomnilnika naprave. Skupina Neuron je izdala to funkcijo za odstranjevanje podvajanja teže v knjižnici Neuron libnrt in prav tako izboljšala orodja Neuron Tools za natančnejše meritve. Funkcijo odstranjevanja uteži med izvajanjem lahko omogočite tako, da pred izvajanjem sklepanja nastavite naslednjo spremenljivko okolja:

NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1

Posodobljeni Neuron SDK je zmanjšal skupno porabo pomnilnika naših podvojenih modelov, kar nam je omogočilo uvedbo večmodalnega modela za večjedrno sklepanje.

Selitev več modelov v AWS Inferentia

Pri ByteDance nadaljujemo z uvajanjem inovativnih modelov globokega učenja, da zagotovimo čudovite uporabniške izkušnje skoraj 2 milijardam aktivnih uporabnikov mesečno. Glede na ogromen obseg, v katerem delujemo, nenehno iščemo načine za prihranek stroškov in optimizacijo delovanja. Še naprej bomo selili modele v AWS Inferentia, da bomo izkoristili njegovo visoko zmogljivost in stroškovno učinkovitost. Prav tako želimo, da AWS lansira več vrst instanc, ki temeljijo na AWS Inferentia, na primer tiste z več vCPU-ji za opravila predprocesiranja. V prihodnje ByteDance upa, da bo od AWS prejel več silikonskih inovacij, da bi zagotovil najboljšo cenovno zmogljivost za aplikacije ML.

Če vas zanima več o tem, kako vam lahko AWS Inferentia pomaga prihraniti stroške in hkrati optimizirati delovanje vaših aplikacij za sklepanje, obiščite Primerov Amazon EC2 Inf1 stran izdelka.


O avtorjih

ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Minghui Yu je višji vodja skupine za strojno učenje za sklepanje pri ByteDance. Njegovo osredotočeno področje je računalniško pospeševanje z umetno inteligenco in sistem strojnega učenja. Zelo ga zanima heterogeno računalništvo in računalniška arhitektura v obdobju po Mooru. V prostem času rad igra košarko in lokostrelstvo.

ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Jianzhe Xiao je višji vodja ekipe programskega inženirja v skupini AML pri ByteDance. Njegovo trenutno delo se osredotoča na pomoč poslovni skupini pri pospešitvi postopka uvajanja modela in izboljšanju zmogljivosti sklepanja modela. Izven službe uživa v igranju klavirja.

ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Tian Shi je višji arhitekt rešitev pri AWS. Njegovo osredotočeno področje je podatkovna analitika, strojno učenje in brez strežnikov. Strastno želi pomagati strankam pri oblikovanju in izgradnji zanesljivih in razširljivih rešitev v oblaku. V prostem času rada plava in bere.

ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Jia Dong je vodja rešitev za stranke pri AWS. Uživa v spoznavanju storitev AWS AI/ML in pomaga strankam doseči njihove poslovne rezultate z ustvarjanjem rešitev zanje. Zunaj službe Jia uživa v potovanjih, jogi in gledanju filmov.

ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Jonathan Lunt je programski inženir pri Amazonu s poudarkom na razvoju ogrodja ML. V svoji karieri je opravil celotno paleto vlog v znanosti o podatkih, vključno z razvojem modelov, uvajanjem infrastrukture in optimizacijo specifične strojne opreme.

ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Joshua Hannan je inženir strojnega učenja pri Amazonu. Dela na optimizaciji modelov globokega učenja za obsežne aplikacije za računalniški vid in obdelavo naravnega jezika.

ByteDance prihrani do 60 % pri stroških sklepanja, hkrati pa zmanjša zakasnitev in poveča prepustnost z uporabo AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Šruti Koparkar je višji vodja trženja izdelkov pri AWS. Strankam pomaga raziskati, oceniti in sprejeti pospešeno računalniško infrastrukturo EC2 za njihove potrebe strojnega učenja.

Časovni žig:

Več od Strojno učenje AWS