ByteDance economisește până la 60% la costurile de inferență, reducând în același timp latența și sporind debitul folosind AWS Inferentia PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

ByteDance economisește până la 60% din costurile de inferență, reducând în același timp latența și crescând debitul folosind AWS Inferentia

Aceasta este o postare pe blog pentru invitați, scrisă împreună cu Minghui Yu și Jianzhe Xiao de la Bytedance.

ByteDance este o companie de tehnologie care operează o gamă largă de platforme de conținut pentru a informa, educa, distra și inspira oamenii din diferite limbi, culturi și zone geografice. Utilizatorii au încredere și se bucură de platformele noastre de conținut datorită experiențelor bogate, intuitive și sigure pe care le oferă. Aceste experiențe sunt posibile de motorul nostru backend de învățare automată (ML), cu modele ML construite pentru moderarea conținutului, căutare, recomandare, publicitate și efecte vizuale noi.

Echipa ByteDance AML (Applied Machine Learning) oferă sisteme ML extrem de performante, fiabile și scalabile și servicii ML end-to-end pentru afacerea companiei. Căutăm modalități de optimizare a sistemelor noastre de inferență ML pentru a reduce costurile, fără a crește timpul de răspuns. Când s-a lansat AWS Inferentia AWS, un cip de inferență ML de înaltă performanță, creat special de AWS, ne-am angajat cu echipa noastră de conturi AWS pentru a testa dacă AWS Inferentia poate aborda obiectivele noastre de optimizare. Am rulat mai multe dovezi de concept, rezultând un cost de inferență cu până la 60% mai mic în comparație cu instanțele EC4 G2dn bazate pe GPU T4 și o latență de inferență cu până la 25% mai mică. Pentru a realiza aceste economii de costuri și îmbunătățiri ale performanței, am decis să implementăm modele pe baza AWS Inferentia Cloud Elastic de calcul Amazon (Amazon EC2) Instanțe Inf1 în producție.

Următorul grafic arată îmbunătățirea latenței pentru unul dintre modelele noastre de detectare a feței care a fost implementat anterior pe GPU-uri cu Tensor RT. Latența medie a scăzut cu 20% (de la 50 de milisecunde la 40 de milisecunde), iar latența p99 a scăzut cu 25% (de la 200 de milisecunde la 150 de milisecunde).

În această postare, vă împărtășim modul în care am economisit costurile de inferență, reducând în același timp latențe și sporind debitul folosind AWS Inferentia.

În căutarea unui calcul de înaltă performanță, rentabil

Echipa ByteDance AML se concentrează pe cercetarea și implementarea sistemelor ML de ultimă oră și a resurselor de calcul eterogene de care au nevoie. Creăm sisteme de instruire și inferență la scară largă pentru o mare varietate de modele de recomandare, procesare a limbajului natural (NLP) și viziune computerizată (CV). Aceste modele sunt extrem de complexe și procesează o cantitate imensă de date de pe numeroasele platforme de conținut pe care le operează ByteDance. Implementarea acestor modele necesită resurse GPU semnificative, fie în cloud, fie la nivel local. Prin urmare, costurile de calcul pentru aceste sisteme de inferență sunt destul de mari.

Căutăm să reducem aceste costuri fără a afecta debitul sau latența. Ne-am dorit flexibilitatea cloud-ului și ciclul de livrare mai rapid, care este mult mai scurt decât cel necesar pentru o configurare on-premise. Și, deși eram deschiși să explorăm noi opțiuni pentru ML accelerat, ne doream și o experiență perfectă pentru dezvoltatori.

Am aflat de la echipa noastră AWS că instanțe EC2 Inf1 bazate pe AWS Inferentia oferă inferențe ML de înaltă performanță la cel mai mic cost-pe-inferență din cloud. Am fost curioși să le explorăm și am găsit că sunt potrivite pentru cazul nostru de utilizare, deoarece rulăm învățarea automată substanțială pe cantități mari de date de imagine, obiect, vorbire și text. Cu siguranță s-au potrivit pentru obiectivele noastre, deoarece am putea realiza economii uriașe de costuri, având în vedere complexitatea modelelor noastre și volumul de predicții zilnice. În plus, AWS Inferentia oferă o cantitate mare de memorie pe cip, pe care o puteți folosi pentru a stoca în cache modele mari în loc să le stocați pe cip. Am recunoscut că acest lucru poate avea un impact semnificativ în reducerea latenței de inferență, deoarece nucleele de procesare ale AWS Inferentia, numite NeuronCores, au acces de mare viteză la modelele care sunt stocate în memoria pe cip și nu sunt limitate de memoria off-chip. lățime de bandă.

În cele din urmă, după evaluarea mai multor opțiuni, am ales instanțe EC2 Inf1 pentru raportul performanță/preț mai bun în comparație cu instanțele G4dn și NVIDIA T4 on-premise. Ne-am angajat într-un ciclu de iterare continuă cu echipa AWS pentru a debloca beneficiile de preț și performanță ale Inf1.

Implementarea sarcinilor de lucru de inferență pe AWS Inferentia

Începerea cu AWS Inferentia folosind SDK-ul AWS Neuron a implicat două faze: compilarea codului modelului și implementarea pe instanțe Inf1. Așa cum este obișnuit atunci când mutam modelele ML în orice infrastructură nouă, au existat câteva provocări cu care ne-am confruntat. Am reușit să depășim aceste provocări cu diligență și sprijin din partea echipei noastre AWS. În secțiunile următoare, împărtășim câteva sfaturi și observații utile bazate pe experiența noastră în implementarea sarcinilor de lucru de inferență pe AWS Inferentia.

Model conformator pentru OCR

Modelul nostru conformator de recunoaștere optică a caracterelor (OCR) detectează și citește textul din imagini. Am lucrat la mai multe optimizări pentru a obține performanță ridicată (QPS) pentru o varietate de dimensiuni de lot, menținând în același timp latența scăzută. Unele optimizări cheie sunt notate mai jos:

  • Optimizări ale compilatorului – În mod implicit, Inferentia funcționează cel mai bine pe intrări cu o lungime fixă ​​a secvenței, ceea ce a reprezentat o provocare, deoarece lungimea datelor textuale nu este fixă. Pentru a depăși acest lucru, ne-am împărțit modelul în două părți: un encoder și un decodor. Am compilat aceste două submodele separat și apoi le-am îmbinat într-un singur model prin TorchScript. Prin rularea fluxului de control al buclei for pe CPU, această abordare a permis suportul pentru lungimi variabile de secvență pe Inferentia.
  • Performanță de convoluție în profunzime – Am întâlnit un blocaj DMA în operația de convoluție în profunzime, care este foarte utilizat de modelul nostru conformator. Am lucrat îndeaproape cu echipa AWS Neuron pentru a identifica și rezolva blocajul de performanță a accesului DMA, care a îmbunătățit performanța acestei operațiuni și a îmbunătățit performanța generală a modelului nostru OCR.

ByteDance economisește până la 60% la costurile de inferență, reducând în același timp latența și sporind debitul folosind AWS Inferentia PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Am creat două noi variante de model pentru a optimiza implementarea noastră pe Inferentia:

  • Encoder/decodor combinat și derulat – În loc să folosim un encoder și un decodor compilate independent, am combinat codificatorul și un decodor complet derulat într-un singur model și am compilat acest model ca un singur NEFF. Derularea decodorului face posibilă rularea întregului flux de control al decodorului pe Inferentia fără a utiliza nicio operație CPU. Cu această abordare, fiecare iterație a decodorului folosește exact cantitatea de calcul necesară pentru acel token. Această abordare îmbunătățește performanța, deoarece reducem semnificativ excesul de calcul care a fost introdus anterior prin intrările de umplutură. În plus, nu este necesar nici un transfer de date de la Inferentia la CPU între iterațiile decodorului, ceea ce reduce drastic timpul I/O. Această versiune a modelului nu acceptă oprirea timpurie.
  • Decodor derulat partiționat – Similar modelului combinat complet derulat, această variantă a modelului derulează mai multe iterații ale decodorului și le compilează ca o singură execuție (dar nu include codificatorul). De exemplu, pentru o lungime maximă a secvenței de 75, putem derula decodorul în 3 partiții care calculează jetoanele 1-25, 26-50 și 51-75. În ceea ce privește I/O, acest lucru este, de asemenea, semnificativ mai rapid, deoarece nu trebuie să transferăm ieșirea codificatorului o dată la fiecare iterație. În schimb, ieșirile sunt transferate o singură dată pentru fiecare partiție de decodor. Această versiune a modelului acceptă oprirea timpurie, dar numai la granițele partițiilor. Limitele partițiilor pot fi reglate pentru fiecare aplicație specifică pentru a se asigura că majoritatea solicitărilor execută o singură partiție.

Pentru a îmbunătăți și mai mult performanța, am făcut următoarele optimizări pentru a reduce utilizarea memoriei sau pentru a îmbunătăți eficiența accesului:

  • Deduplicare tensor și copii reduse – Aceasta este o optimizare a compilatorului care reduce semnificativ dimensiunea modelelor derulate și numărul de instrucțiuni/acces la memorie prin reutilizarea tensoarelor pentru a îmbunătăți eficiența spațiului.
  • Instructiuni reduse – Aceasta este o optimizare a compilatorului care este utilizată cu versiunea necăptușită a decodorului pentru a reduce semnificativ numărul total de instrucțiuni.
  • Deduplicare multi-core – Aceasta este o optimizare a timpului de execuție care este o alternativă la deduplicarea tensorului. Cu această opțiune, toate modelele multicore vor fi semnificativ mai eficiente în spațiu.

Model ResNet50 pentru clasificarea imaginilor

ResNet-50 este un model de deep learning pre-antrenat pentru clasificarea imaginilor. Este o rețea neuronală convoluțională (CNN sau ConvNet) care se aplică cel mai frecvent la analiza imaginilor vizuale. Am folosit următoarele tehnici pentru a îmbunătăți performanța acestui model pe Inferentia:

  • Transformarea modelului – Multe dintre modelele ByteDance sunt exportate în format ONNX, pe care Inferentia nu îl acceptă în mod nativ. Pentru a gestiona aceste modele ONNX, echipa AWS Neuron a furnizat scripturi pentru a transforma modelele noastre din formatul ONNX în modele PyTorch, care pot fi compilate direct pentru Inferentia folosind torch-neuron.
  • Optimizarea performanței – Am lucrat îndeaproape cu AWS Neuron echipa să ajusteze euristica de programare în compilator pentru a optimiza performanța modelelor noastre ResNet-50.

Model multimodal pentru moderarea conținutului

Modelul nostru multimodal de învățare profundă este o combinație de mai multe modele separate. Dimensiunea acestui model este relativ mare, ceea ce a cauzat erori de încărcare a modelului pe Inferentia. Echipa AWS Neuron a rezolvat cu succes această problemă utilizând partajarea greutății pentru a reduce utilizarea memoriei dispozitivului. Echipa Neuron a lansat această funcție de deduplicare a greutății în biblioteca Neuron libnrt și, de asemenea, a îmbunătățit Neuron Tools pentru metrici mai precise. Caracteristica de deduplicare a greutății de rulare poate fi activată prin setarea următoarei variabile de mediu înainte de a rula inferența:

NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1

Neuron SDK actualizat a redus consumul total de memorie al modelelor noastre duplicate, ceea ce ne-a permis să implementăm modelul nostru multimodal pentru inferența multi-core.

Migrarea mai multor modele la AWS Inferentia

La ByteDance, continuăm să implementăm modele inovatoare de învățare profundă pentru a oferi experiențe de utilizator încântătoare pentru aproape 2 miliarde de utilizatori activi lunar. Având în vedere scara masivă la care operăm, căutăm constant modalități de a economisi costuri și de a optimiza performanța. Vom continua să migrăm modele către AWS Inferentia pentru a beneficia de performanța ridicată și eficiența costurilor. De asemenea, dorim ca AWS să lanseze mai multe tipuri de instanțe bazate pe AWS Inferentia, cum ar fi cele cu mai multe vCPU pentru sarcini de preprocesare. În viitor, ByteDance speră să vadă mai multe inovații de siliciu de la AWS pentru a oferi cele mai bune performanțe de preț pentru aplicațiile ML.

Dacă sunteți interesat să aflați mai multe despre modul în care AWS Inferentia vă poate ajuta să economisiți costuri în timp ce optimizați performanța aplicațiilor dvs. de inferență, vizitați Instanțe Amazon EC2 Inf1 pagina produsului.


Despre Autori

ByteDance economisește până la 60% la costurile de inferență, reducând în același timp latența și sporind debitul folosind AWS Inferentia PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Minghui Yu este un lider senior al echipei de învățare automată pentru inferență la ByteDance. Domeniul său de interes este Accelerația de calcul AI și Sistemul de învățare automată. El este foarte interesat de calculul eterogen și arhitectura computerelor în epoca post Moore. În timpul liber, îi place baschetul și tirul cu arcul.

ByteDance economisește până la 60% la costurile de inferență, reducând în același timp latența și sporind debitul folosind AWS Inferentia PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Jianzhe Xiao este lider de echipă Senior Software Engineer în echipa AML la ByteDance. Activitatea sa actuală se concentrează pe a ajuta echipa de afaceri să accelereze procesul de implementare a modelului și să îmbunătățească performanța de inferență a modelului. În afara serviciului, îi place să cânte la pian.

ByteDance economisește până la 60% la costurile de inferență, reducând în același timp latența și sporind debitul folosind AWS Inferentia PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Tian Shi este arhitect senior de soluții la AWS. Domeniul său de interes este analiza datelor, învățarea automată și serverless. Este pasionat de a ajuta clienții să proiecteze și să construiască soluții fiabile și scalabile pe cloud. În timpul liber, îi place să înoate și să citească.

ByteDance economisește până la 60% la costurile de inferență, reducând în același timp latența și sporind debitul folosind AWS Inferentia PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Jia Dong este Manager de soluții pentru clienți la AWS. Îi face plăcere să învețe despre serviciile AWS AI/ML și să ajute clienții să-și atingă rezultatele afacerii, creând soluții pentru ei. În afara serviciului, lui Jia îi plac călătoriile, yoga și filmele.

ByteDance economisește până la 60% la costurile de inferență, reducând în același timp latența și sporind debitul folosind AWS Inferentia PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Jonathan Lunt este inginer software la Amazon, cu accent pe dezvoltarea framework-ului ML. De-a lungul carierei sale, a lucrat prin întreaga gamă de roluri în știința datelor, inclusiv dezvoltarea de modele, implementarea infrastructurii și optimizarea specifică hardware-ului.

ByteDance economisește până la 60% la costurile de inferență, reducând în același timp latența și sporind debitul folosind AWS Inferentia PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Joshua Hannan este inginer de învățare automată la Amazon. Lucrează la optimizarea modelelor de învățare profundă pentru viziunea computerizată la scară largă și aplicațiile de procesare a limbajului natural.

ByteDance economisește până la 60% la costurile de inferență, reducând în același timp latența și sporind debitul folosind AWS Inferentia PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Shruti Koparkar este Senior Product Marketing Manager la AWS. Ea îi ajută pe clienți să exploreze, să evalueze și să adopte infrastructura de calcul accelerată EC2 pentru nevoile lor de învățare automată.

Timestamp-ul:

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