ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet, kasutades AWS Inferentia PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.

ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet AWS Inferentia abil

See on külaliste ajaveebi postitus, mis on kirjutatud koos Minghui Yu ja Jianzhe Xiaoga Bytedance'ist.

ByteDance on tehnoloogiaettevõte, mis haldab erinevaid sisuplatvorme, et teavitada, harida, lõbustada ja inspireerida inimesi erinevates keeltes, kultuurides ja geograafilistes piirkondades. Kasutajad usaldavad ja naudivad meie sisuplatvorme nende rikkalike, intuitiivsete ja turvaliste kasutuskogemuste tõttu. Need kogemused on võimalikud tänu meie masinõppe (ML) taustamootorile, mille ML-mudelid on loodud sisu modereerimiseks, otsimiseks, soovitamiseks, reklaamimiseks ja uudsete visuaalsete efektide jaoks.

ByteDance AML (Applied Machine Learning) meeskond pakub ettevõtte äritegevuse jaoks suure jõudlusega, usaldusväärseid ja skaleeritavaid ML-süsteeme ning täielikke ML-teenuseid. Uurisime viise, kuidas optimeerida oma ML-i järeldamissüsteeme, et vähendada kulusid ilma reageerimisaega pikendamata. Kui AWS käivitati AWS Inferentia, AWS-i poolt loodud suure jõudlusega ML-i järelduskiip, tegime koostööd oma AWS-i kontomeeskonnaga, et testida, kas AWS Inferentia suudab meie optimeerimiseesmärke täita. Tegime mitu kontseptsiooni tõestust, mille tulemuseks oli T60 GPU-põhiste EC4 G2dn eksemplaridega võrreldes kuni 4% väiksem järelduskulu ja kuni 25% väiksem järelduste latentsus. Kulude kokkuhoiu ja jõudluse parandamiseks otsustasime juurutada AWS Inferentia-põhised mudelid Amazon Elastic Compute Cloud (Amazon EC2) Inf1 eksemplarid tootmises.

Järgmine diagramm näitab latentsusaja paranemist ühe meie näotuvastusmudeli puhul, mis oli varem Tensor RT-ga GPU-dele juurutatud. Keskmine latentsusaeg vähenes 20% (50 millisekundilt 40 millisekundile) ja p99 latentsus vähenes 25% (200 millisekundilt 150 millisekundile).

Selles postituses jagame, kuidas säästsime järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet AWS Inferentia abil.

Suure jõudlusega ja kulutõhusa arvutuse otsimisel

ByteDance AML-i meeskond keskendub tipptasemel ML-süsteemide ja nende jaoks vajalike heterogeensete arvutusressursside uurimisele ja juurutamisele. Loome laiaulatuslikke koolitus- ja järeldussüsteeme mitmesuguste soovituslike, loomuliku keele töötlemise (NLP) ja arvutinägemise (CV) mudelite jaoks. Need mudelid on väga keerulised ja töötlevad tohutul hulgal andmeid paljudest ByteDance'i sisuplatvormidest. Nende mudelite juurutamine nõuab märkimisväärseid GPU ressursse, olgu siis pilves või ruumides. Seetõttu on nende järeldussüsteemide arvutuskulud üsna kõrged.

Otsisime neid kulusid vähendada ilma läbilaskevõimet või latentsust mõjutamata. Tahtsime pilve paindlikkust ja kiiremat tarnetsüklit, mis on palju lühem kui kohapealse seadistamise jaoks vajalik. Ja kuigi olime avatud uute võimaluste uurimisele kiirendatud ML-i jaoks, soovisime ka sujuvat arendajakogemust.

Saime oma AWS-i meeskonnalt teada, et AWS Inferentia-põhised EC2 Inf1 eksemplarid tagavad suure jõudlusega ML-i järelduse pilves madalaima järelduse hinnaga. Olime uudishimulikud neid uurima ja leidsime, et need sobivad meie kasutusjuhtumiga hästi, kuna kasutame suurel hulgal pildi-, objekti-, kõne- ja tekstiandmetel olulist masinõpet. Need sobisid meie eesmärkidega kindlasti hästi, sest meie mudelite keerukust ja igapäevaste prognooside mahtu arvestades võisime saavutada tohutu kulude kokkuhoiu. Lisaks on AWS Inferential suur hulk kiibisisene mälu, mida saate kasutada suurte mudelite vahemällu salvestamiseks, selle asemel, et neid kiibile salvestada. Mõistsime, et sellel võib olla märkimisväärne mõju järelduste latentsuse vähendamisele, kuna AWS Inferentia töötlemistuumadel, mida nimetatakse NeuronCores'ideks, on kiire juurdepääs mudelitele, mis on salvestatud kiibimällu ja mida ei piira kiibiväline mälu. ribalaius.

Lõppkokkuvõttes valisime pärast mitme võimaluse hindamist EC2 Inf1 eksemplarid nende parema jõudluse ja hinna suhte tõttu võrreldes G4dn eksemplaride ja kohapealse NVIDIA T4-ga. Tegime koos AWS-i meeskonnaga pideva iteratsiooni tsükli, et avada Inf1 hinna ja jõudluse eelised.

Järelduste töökoormuste juurutamine AWS Inferentias

AWS Inferentiaga alustamine AWS Neuron SDK abil hõlmas kahte etappi: mudeli koodi koostamine ja juurutamine Inf1 eksemplaridel. Nagu ML-mudelite uude infrastruktuuri teisaldamisel tavaline, seisime silmitsi mõne väljakutsega. Suutsime nendest väljakutsetest üle saada usinuse ja meie AWS-i meeskonna toetusega. Järgmistes jaotistes jagame mitmeid kasulikke näpunäiteid ja tähelepanekuid, mis põhinevad meie kogemustel järelduste töökoormuse juurutamisel AWS Inferentias.

OCR-i konformermudel

Meie optilise märgituvastuse (OCR) konformermudel tuvastab ja loeb piltidelt teksti. Töötasime mitme optimeerimise kallal, et saavutada suure jõudlusega (QPS) erinevate partiide suuruste jaoks, hoides samas latentsusaega madalana. Mõned peamised optimeerimised on toodud allpool:

  • Kompilaatori optimeerimine – Vaikimisi toimib Inferentia kõige paremini fikseeritud jadapikkusega sisendite puhul, mis oli väljakutse, kuna tekstiandmete pikkus ei ole fikseeritud. Sellest ülesaamiseks jagasime oma mudeli kaheks osaks: kodeerijaks ja dekoodriks. Koostasime need kaks alammudelit eraldi ja ühendasime need TorchScripti kaudu üheks mudeliks. Käitades protsessoritel silmuse juhtimisvoo, võimaldas see lähenemine Inferentias muutuva pikkusega jada toe.
  • Sügavkonvolutsiooni jõudlus – Me kohtasime DMA kitsaskohta sügavuskonvolutsiooni operatsioonis, mida meie konformermudel palju kasutab. Tegime tihedat koostööd AWS Neuroni meeskonnaga, et tuvastada ja lahendada DMA juurdepääsu jõudluse kitsaskoht, mis parandas selle toimingu jõudlust ja parandas meie OCR-mudeli üldist jõudlust.

ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet, kasutades AWS Inferentia PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.

Lõime kaks uut mudelivarianti, et optimeerida Inferentias juurutamist:

  • Kombineeritud ja lahtirullitud kodeerija/dekooder – Selle asemel, et kasutada iseseisvalt kompileeritud kodeerijat ja dekoodrit, ühendasime kodeerija ja täielikult lahtirullitud dekoodri üheks mudeliks ning kompileerisime selle mudeli üheks NEFF-iks. Dekoodri lahtirullimine võimaldab käivitada kogu dekoodri juhtimisvoo Inferentias ilma protsessori toiminguid kasutamata. Selle lähenemisviisi korral kasutab iga dekoodri iteratsioon täpselt selle märgi jaoks vajalikku arvutusmahtu. See lähenemine parandab jõudlust, kuna vähendame märkimisväärselt liigset arvutust, mida varem sisestati polsterdussisendite abil. Lisaks ei ole dekoodri iteratsioonide vahel vaja andmeid Inferentiast CPU-sse edastada, mis vähendab drastiliselt I/O aega. See mudeli versioon ei toeta varajast seiskamist.
  • Partitsioneeritud lahtirullitud dekooder – Sarnaselt kombineeritud täielikult lahtirullitud mudeliga rullib see mudeli variant lahti mitu dekoodri iteratsiooni ja kompileerib need ühe toiminguna (kuid ei sisalda kodeerijat). Näiteks järjestuse maksimaalse pikkusega 75 korral saame dekoodri lahti rullida kolmeks partitsiooniks, mis arvutavad märgid 3–1, 25–26 ja 50–51. I/O osas on see ka oluliselt kiirem, kuna me ei pea kodeerija väljundit kord iga iteratsiooni kohta üle kandma. Selle asemel edastatakse väljundid iga dekoodri partitsiooni kohta ainult üks kord. See mudeli versioon toetab varajast seiskamist, kuid ainult partitsioonipiiridel. Partitsioonipiire saab häälestada iga konkreetse rakenduse jaoks tagamaks, et enamik taotlusi täidab ainult ühte partitsiooni.

Toimivuse edasiseks parandamiseks tegime mälukasutuse vähendamiseks või juurdepääsu tõhususe parandamiseks järgmised optimeeringud.

  • Tensoride dubleerimine ja vähendatud koopiad – See on kompilaatori optimeerimine, mis vähendab oluliselt lahtirullitavate mudelite suurust ja juhiste/mälujuurdepääsu hulka, kasutades ruumitõhususe parandamiseks tensoreid.
  • Vähendatud juhised – See on kompilaatori optimeerimine, mida kasutatakse koos dekoodri polsterdamata versiooniga, et käskude koguarvu oluliselt vähendada.
  • Mitmetuumaline deduplikatsioon – See on käitusaegne optimeerimine, mis on alternatiiviks tensori deduplikatsioonile. Selle valiku korral on kõik mitmetuumalised mudelid oluliselt ruumisäästlikumad.

ResNet50 mudel piltide klassifitseerimiseks

ResNet-50 on piltide klassifitseerimise eelkoolitatud süvaõppemudel. See on konvolutsiooniline närvivõrk (CNN või ConvNet), mida kasutatakse kõige sagedamini visuaalsete kujutiste analüüsimiseks. Selle mudeli jõudluse parandamiseks Inferentias kasutasime järgmisi tehnikaid.

  • Mudeli teisendus - Paljud ByteDance'i mudelid eksporditakse ONNX-vormingus, mida Inferentia praegu algselt ei toeta. Nende ONNX-i mudelite haldamiseks pakkus AWS Neuroni meeskond skripte, et muuta meie mudelid ONNX-vormingust PyTorchi mudeliteks, mida saab otse Inferentia jaoks kompileerida, kasutades tõrvik-neuronit.
  • Performance optimeerimine – Tegime tihedat koostööd AWS Neuron meeskond häälestab kompilaatori ajastamisheuristikat, et optimeerida meie ResNet-50 mudelite jõudlust.

Multimodaalne mudel sisu modereerimiseks

Meie multimodaalne süvaõppemudel on kombinatsioon mitmest eraldi mudelist. Selle mudeli suurus on suhteliselt suur, mis põhjustas Inferentias mudeli laadimise tõrkeid. AWS Neuroni meeskond lahendas selle probleemi edukalt, kasutades seadme mälukasutuse vähendamiseks kaalu jagamist. Neuroni meeskond avaldas selle kaalude dubleerimise funktsiooni Neuron libnrt teegis ja täiustas ka Neuroni tööriistu täpsemate mõõdikute jaoks. Käitusaja kaalu dubleerimise funktsiooni saab lubada, määrates enne järelduse käivitamist järgmise keskkonnamuutuja:

NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1

Värskendatud Neuron SDK vähendas meie dubleeritud mudelite üldist mälutarbimist, mis võimaldas meil juurutada oma multimodaalset mudelit mitmetuumaliste järelduste tegemiseks.

Rohkemate mudelite üleviimine AWS Inferentiale

ByteDance'is jätkame uuenduslike süvaõppemudelite juurutamist, et pakkuda veetlevaid kasutuskogemusi peaaegu 2 miljardile igakuisele aktiivsele kasutajale. Arvestades meie tegevuse tohutut ulatust, otsime pidevalt võimalusi kulude kokkuhoiuks ja jõudluse optimeerimiseks. Jätkame mudelite üleviimist AWS Inferentiale, et saada kasu selle suurest jõudlusest ja kuluefektiivsusest. Samuti soovime, et AWS käivitaks rohkem AWS Inferentia-põhiseid eksemplaritüüpe, näiteks selliseid, millel on eeltöötlustoimingute jaoks rohkem vCPU-sid. Edaspidi loodab ByteDance näha AWS-ilt rohkem räni uuendusi, et pakkuda ML-rakenduste jaoks parimat hinda.

Kui soovite lisateavet selle kohta, kuidas AWS Inferentia aitab teil kulusid kokku hoida, optimeerides samal ajal oma järeldusrakenduste jõudlust, külastage Amazon EC2 Inf1 eksemplarid toote leht.


Autoritest

ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet, kasutades AWS Inferentia PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Minghui Yu on vanem masinõppe meeskonna juht järelduste tegemiseks ettevõttes ByteDance. Tema fookusvaldkond on AI andmetöötluskiirendus ja masinõppesüsteem. Ta on väga huvitatud heterogeensest andmetöötlusest ja arvutiarhitektuurist Moore'i järgsel ajastul. Vabal ajal meeldib talle korvpall ja vibulaskmine.

ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet, kasutades AWS Inferentia PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Jianzhe Xiao on ByteDance'i AML-i meeskonna vanemtarkvarainseneride meeskonna juht. Tema praegune töö keskendub sellele, et aidata ärimeeskonnal kiirendada mudeli juurutamise protsessi ja parandada mudeli järelduste toimivust. Töövälisel ajal meeldib talle klaverit mängida.

ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet, kasutades AWS Inferentia PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Tian Shi on AWSi vanemlahenduste arhitekt. Tema fookusvaldkond on andmeanalüütika, masinõpe ja serverita. Ta on kirglik aidata klientidel kavandada ja luua pilves usaldusväärseid ja skaleeritavaid lahendusi. Vabal ajal naudib ta ujumist ja lugemist.

ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet, kasutades AWS Inferentia PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Jia Dong on AWS-i kliendilahenduste juht. Ta naudib AWS-i AI/ML-teenuste tundmaõppimist ja klientide abistamist nende äritulemuste saavutamisel, luues neile lahendusi. Väljaspool tööd naudib Jia reisimist, joogat ja filme.

ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet, kasutades AWS Inferentia PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Jonathan Lunt on Amazoni tarkvarainsener, kes keskendub ML-raamistiku arendamisele. Oma karjääri jooksul on ta töötanud läbi kogu andmeteaduse rollide, sealhulgas mudelite arendamise, infrastruktuuri juurutamise ja riistvarapõhise optimeerimise.

ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet, kasutades AWS Inferentia PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Joshua Hannan on Amazoni masinõppeinsener. Ta tegeleb süvaõppe mudelite optimeerimisega suuremahuliste arvutinägemise ja loomuliku keele töötlemise rakenduste jaoks.

ByteDance säästab kuni 60% järelduskuludelt, vähendades samal ajal latentsust ja suurendades läbilaskevõimet, kasutades AWS Inferentia PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Shruti Koparkar on AWS-i vanemtoodete turundusjuht. Ta aitab klientidel uurida, hinnata ja oma masinõppe vajaduste jaoks EC2 kiirendatud andmetöötluse infrastruktuuri kasutusele võtta.

Ajatempel:

Veel alates AWS-i masinõpe