ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia

Dette er et gjesteblogginnlegg skrevet sammen med Minghui Yu og Jianzhe Xiao fra Bytedance.

ByteDance er et teknologiselskap som driver en rekke innholdsplattformer for å informere, utdanne, underholde og inspirere mennesker på tvers av språk, kulturer og geografier. Brukere stoler på og nyter innholdsplattformene våre på grunn av de rike, intuitive og trygge opplevelsene de gir. Disse opplevelsene er muliggjort av backend-motoren vår for maskinlæring (ML), med ML-modeller bygget for innholdsmoderering, søk, anbefaling, annonsering og nye visuelle effekter.

ByteDance AML (Applied Machine Learning)-teamet leverer høyytende, pålitelige og skalerbare ML-systemer og ende-til-ende ML-tjenester for selskapets virksomhet. Vi undersøkte måter å optimalisere ML-slutningssystemene våre for å redusere kostnadene, uten å øke responstidene. Da AWS ble lansert AWS slutning, en høyytelses ML-inferensbrikke spesialbygd av AWS, har vi engasjert oss med AWS-kontoteamet vårt for å teste om AWS Inferentia kan løse optimaliseringsmålene våre. Vi kjørte flere proof of concept, noe som resulterte i opptil 60 % lavere slutningskostnad sammenlignet med T4 GPU-baserte EC2 G4dn-forekomster og opptil 25 % lavere slutningsforsinkelse. For å realisere disse kostnadsbesparelsene og ytelsesforbedringene, bestemte vi oss for å distribuere modeller på AWS Inferentia-basert Amazon Elastic Compute Cloud (Amazon EC2) Inf1-forekomster i produksjon.

Følgende diagram viser latenstidsforbedringen for en av våre ansiktsdeteksjonsmodeller som tidligere ble distribuert på GPUer med Tensor RT. Den gjennomsnittlige ventetiden gikk ned med 20 % (fra 50 millisekunder til 40 millisekunder), og p99-latensen reduserte med 25 % (fra 200 millisekunder til 150 millisekunder).

I dette innlegget deler vi hvordan vi sparte på slutningskostnader samtidig som vi reduserte ventetider og økte gjennomstrømmingen ved å bruke AWS Inferentia.

På jakt etter høy ytelse, kostnadseffektiv databehandling

ByteDance AML-teamet fokuserer på forskning og implementering av banebrytende ML-systemer og de heterogene dataressursene de krever. Vi lager opplærings- og slutningssystemer i stor skala for et bredt utvalg av modeller for anbefaling, naturlig språkbehandling (NLP) og datasyn (CV). Disse modellene er svært komplekse og behandler en enorm mengde data fra de mange innholdsplattformene ByteDance driver. Utrulling av disse modellene krever betydelige GPU-ressurser, enten det er i skyen eller på stedet. Derfor er beregningskostnadene for disse slutningssystemene ganske høye.

Vi var ute etter å redusere disse kostnadene uten å påvirke gjennomstrømming eller ventetid. Vi ønsket skyens fleksibilitet og raskere leveringssyklus, som er mye kortere enn den som trengs for et lokalt oppsett. Og selv om vi var åpne for å utforske nye alternativer for akselerert ML, ønsket vi også en sømløs utvikleropplevelse.

Vi lærte av vårt AWS-team at AWS Inferentia-baserte EC2 Inf1-forekomster leverer høyytelses ML-slutning til den laveste kostnaden per slutning i skyen. Vi var nysgjerrige på å utforske dem og fant ut at de passet godt til vårt bruksområde, fordi vi kjører betydelig maskinlæring på store mengder bilde-, objekt-, tale- og tekstdata. De passet definitivt godt for våre mål, fordi vi kunne realisere enorme kostnadsbesparelser gitt kompleksiteten til modellene våre og volumet av daglige spådommer. Videre har AWS Inferentia en stor mengde minne på brikken, som du kan bruke til å bufre store modeller i stedet for å lagre dem utenfor brikken. Vi erkjente at dette kan ha en betydelig innvirkning på å redusere inferensforsinkelse fordi prosesseringskjernene til AWS Inferentia, kalt NeuronCores, har høyhastighetstilgang til modeller som er lagret i minne på brikken og ikke er begrenset av minnet utenfor brikken. båndbredde.

Til slutt, etter å ha evaluert flere alternativer, valgte vi EC2 Inf1-forekomster for deres bedre ytelse/pris-forhold sammenlignet med G4dn-forekomster og NVIDIA T4 på stedet. Vi engasjerte oss i en syklus med kontinuerlig iterasjon med AWS-teamet for å låse opp pris- og ytelsesfordelene til Inf1.

Utplassering av inferensarbeidsbelastninger på AWS Inferentia

Å komme i gang med AWS Inferentia ved å bruke AWS Neuron SDK innebar to faser: kompilering av modellkode og distribusjon på Inf1-instanser. Som vanlig når vi flytter ML-modeller til ny infrastruktur, var det noen utfordringer vi sto overfor. Vi var i stand til å overvinne disse utfordringene med flid og støtte fra AWS-teamet vårt. I de følgende delene deler vi flere nyttige tips og observasjoner basert på vår erfaring med å distribuere inferensarbeidsbelastninger på AWS Inferentia.

Conformer modell for OCR

Vår optiske tegngjenkjenningsmodell (OCR) oppdager og leser tekst i bilder. Vi jobbet med flere optimaliseringer for å få høy ytelse (QPS) for en rekke batchstørrelser, samtidig som ventetiden holdt lav. Noen viktige optimaliseringer er notert nedenfor:

  • Kompilatoroptimaliseringer – Som standard presterer Inferentia best på innganger med en fast sekvenslengde, noe som ga en utfordring siden lengden på tekstdata ikke er fast. For å overvinne dette deler vi modellen vår i to deler: en koder og en dekoder. Vi kompilerte disse to undermodellene separat og slo dem deretter sammen til en enkelt modell via TorchScript. Ved å kjøre for loop-kontrollflyten på CPUer, muliggjorde denne tilnærmingen støtte for variable sekvenslengder på Inferentia.
  • Dybdevis konvolusjonsytelse – Vi møtte en DMA-flaskehals i den dybdegående konvolusjonsoperasjonen, som er mye brukt av vår conformer-modell. Vi jobbet tett med AWS Neuron-teamet for å identifisere og løse flaskehalsen for DMA-tilgangsytelse, noe som forbedret ytelsen til denne operasjonen og forbedret den generelle ytelsen til OCR-modellen vår.

ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Vi har laget to nye modellvarianter for å optimalisere distribusjonen vår på Inferentia:

  • Kombinert og utrullet koder/dekoder – I stedet for å bruke en uavhengig kompilert koder og dekoder, kombinerte vi koderen og en fullstendig utrullet dekoder til en enkelt modell og kompilerte denne modellen som en enkelt NEFF. Utrulling av dekoderen gjør det mulig å kjøre hele dekoderkontrollflyten på Inferentia uten å bruke noen CPU-operasjoner. Med denne tilnærmingen bruker hver iterasjon av dekoderen nøyaktig mengden av beregning som er nødvendig for det tokenet. Denne tilnærmingen forbedrer ytelsen fordi vi reduserer den overskytende beregningen som tidligere ble introdusert av utfyllingsinnganger betydelig. Videre er ingen dataoverføring fra Inferentia til CPU nødvendig mellom dekoderiterasjoner, noe som drastisk reduserer I/O-tiden. Denne versjonen av modellen støtter ikke tidlig stopp.
  • Partisjonert utrullet dekoder – I likhet med den kombinerte fullstendig utrullede modellen, ruller denne varianten av modellen ut flere iterasjoner av dekoderen og kompilerer dem som en enkelt utførelse (men inkluderer ikke koderen). For eksempel, for en maksimal sekvenslengde på 75, kan vi rulle ut dekoderen i 3 partisjoner som beregner tokens 1-25, 26-50 og 51-75. Når det gjelder I/O, er dette også betydelig raskere fordi vi ikke trenger å overføre koderutgangen en gang per iterasjon. I stedet overføres utgangene kun én gang per hver dekoderpartisjon. Denne versjonen av modellen støtter tidlig stopp, men bare ved partisjonsgrensene. Partisjonsgrensene kan justeres for hver spesifikk applikasjon for å sikre at flertallet av forespørslene utfører kun én partisjon.

For å forbedre ytelsen ytterligere har vi gjort følgende optimaliseringer for å redusere minnebruken eller forbedre tilgangseffektiviteten:

  • Tensor deduplisering og reduserte kopier – Dette er en kompilatoroptimalisering som betydelig reduserer størrelsen på utrullede modeller og antall instruksjoner/minnetilgang ved å gjenbruke tensorer for å forbedre plasseffektiviteten.
  • Reduserte instruksjoner – Dette er en kompilatoroptimalisering som brukes med den ikke-polstrede versjonen av dekoderen for å redusere det totale antallet instruksjoner betydelig.
  • Flerkjernededuplisering – Dette er en kjøretidsoptimalisering som er et alternativ til tensor-deduplisering. Med dette alternativet vil alle multicore-modeller være betydelig mer plasseffektive.

ResNet50 modell for bildeklassifisering

ResNet-50 er en forhåndsopplært dyplæringsmodell for bildeklassifisering. Det er et Convolutional Neural Network (CNN eller ConvNet) som oftest brukes til å analysere visuelle bilder. Vi brukte følgende teknikker for å forbedre denne modellens ytelse på Inferentia:

  • Modelltransformasjon – Mange av ByteDances modeller eksporteres i ONNX-format, som Inferentia foreløpig ikke støtter. For å håndtere disse ONNX-modellene, ga AWS Neuron-teamet skript for å transformere modellene våre fra ONNX-format til PyTorch-modeller, som kan kompileres direkte for Inferentia ved hjelp av fakkelneuron.
  • Prestasjonsoptimalisering – Vi jobbet tett med AWS nevron team for å justere planleggingsheuristikken i kompilatoren for å optimalisere ytelsen til våre ResNet-50-modeller.

Multimodal modell for innholdsmoderering

Vår multimodale dyplæringsmodell er en kombinasjon av flere separate modeller. Størrelsen på denne modellen er relativt stor, noe som forårsaket modellbelastningsfeil på Inferentia. AWS Neuron-teamet løste dette problemet ved å bruke vektdeling for å redusere minnebruken på enheten. Neuron-teamet ga ut denne vektdedupliseringsfunksjonen i Neuron libnrt-biblioteket og forbedret også Neuron Tools for mer presise beregninger. Funksjonen for deduplisering av kjøretidsvekt kan aktiveres ved å angi følgende miljøvariabel før du kjører konklusjon:

NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1

Den oppdaterte Neuron SDK reduserte det totale minneforbruket til de dupliserte modellene våre, noe som gjorde oss i stand til å distribuere vår multimodale modell for multi-core inferens.

Migrerer flere modeller til AWS Inferentia

Hos ByteDance fortsetter vi å distribuere innovative dyplæringsmodeller for å levere herlige brukeropplevelser til nesten 2 milliarder månedlige aktive brukere. Gitt den enorme skalaen vi opererer i, leter vi hele tiden etter måter å spare kostnader og optimalisere ytelsen på. Vi vil fortsette å migrere modeller til AWS Inferentia for å dra nytte av dens høye ytelse og kostnadseffektivitet. Vi ønsker også at AWS skal lansere flere AWS Inferentia-baserte instanstyper, for eksempel de med flere vCPUer for forhåndsbehandlingsoppgaver. Fremover håper ByteDance å se mer silisiuminnovasjon fra AWS for å levere den beste prisytelsen for ML-applikasjoner.

Hvis du er interessert i å lære mer om hvordan AWS Inferentia kan hjelpe deg med å spare kostnader samtidig som du optimerer ytelsen for slutningsapplikasjonene dine, kan du gå til Amazon EC2 Inf1-forekomster produktside.


Om forfatterne

ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Minghui Yu er en senior maskinlæringsteamleder for inferens ved ByteDance. Fokusområdet hans er AI Computing Acceleration and Machine Learning System. Han er veldig interessert i heterogen databehandling og dataarkitektur i post Moore-tiden. På fritiden liker han basketball og bueskyting.

ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Jianzhe Xiao er en Senior Software Engineer Team Lead i AML Team hos ByteDance. Hans nåværende arbeid fokuserer på å hjelpe forretningsteamet med å fremskynde modellimplementeringsprosessen og forbedre modellens konklusjonsytelse. Utenom jobben liker han å spille piano.

ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Tian Shi er Senior Solutions Architect hos AWS. Fokusområdet hans er dataanalyse, maskinlæring og serverløs. Han brenner for å hjelpe kunder med å designe og bygge pålitelige og skalerbare løsninger på skyen. På fritiden liker han å svømme og lese.

ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Jia Dong er Customer Solutions Manager hos AWS. Hun liker å lære om AWS AI/ML-tjenester og hjelpe kunder med å møte sine forretningsresultater ved å bygge løsninger for dem. Utenom jobben liker Jia å reise, yoga og filmer.

ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Jonathan Lunt er programvareingeniør hos Amazon med fokus på utvikling av ML-rammeverk. I løpet av sin karriere har han jobbet gjennom hele bredden av datavitenskapelige roller, inkludert modellutvikling, infrastrukturdistribusjon og maskinvarespesifikk optimalisering.

ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Joshua Hannan er maskinlæringsingeniør hos Amazon. Han jobber med å optimalisere dyplæringsmodeller for storskala datasyn og naturlig språkbehandling.

ByteDance sparer opptil 60 % på slutningskostnader samtidig som den reduserer ventetiden og øker gjennomstrømningen ved å bruke AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Shruti Koparkar er Senior Product Marketing Manager hos AWS. Hun hjelper kundene med å utforske, evaluere og ta i bruk EC2-akselerert datainfrastruktur for deres maskinlæringsbehov.

Tidstempel:

Mer fra AWS maskinlæring