ByteDance sparer op til 60 % på inferensomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

ByteDance sparer op til 60 % på slutningsomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia

Dette er et gæsteblogindlæg skrevet sammen med Minghui Yu og Jianzhe Xiao fra Bytedance.

ByteDance er en teknologivirksomhed, der driver en række indholdsplatforme til at informere, uddanne, underholde og inspirere folk på tværs af sprog, kulturer og geografier. Brugere stoler på og nyder vores indholdsplatforme på grund af de rige, intuitive og sikre oplevelser, de giver. Disse oplevelser er muliggjort af vores maskinlæring (ML) backend-motor med ML-modeller bygget til indholdsmoderering, søgning, anbefaling, annoncering og nye visuelle effekter.

ByteDance AML (Applied Machine Learning)-teamet leverer højtydende, pålidelige og skalerbare ML-systemer og end-to-end ML-tjenester til virksomhedens forretning. Vi undersøgte måder at optimere vores ML-inferenssystemer for at reducere omkostningerne uden at øge svartider. Da AWS blev lanceret AWS-inferens, en højtydende ML-inferenschip, der er specialbygget af AWS, har vi engageret os med vores AWS-kontoteam for at teste, om AWS Inferentia kan løse vores optimeringsmål. Vi kørte adskillige proofs of concept, hvilket resulterede i op til 60 % lavere slutningsomkostninger sammenlignet med T4 GPU-baserede EC2 G4dn-instanser og op til 25 % lavere slutningsforsinkelse. For at realisere disse omkostningsbesparelser og ydeevneforbedringer besluttede vi at implementere modeller på AWS Inferentia-baseret Amazon Elastic Compute Cloud (Amazon EC2) Inf1-forekomster i produktion.

Følgende diagram viser latenstidsforbedringen for en af ​​vores ansigtsgenkendelsesmodeller, der tidligere blev implementeret på GPU'er med Tensor RT. Den gennemsnitlige latenstid faldt med 20 % (fra 50 millisekunder til 40 millisekunder), og p99-latenstiden faldt med 25 % (fra 200 millisekunder til 150 millisekunder).

I dette indlæg deler vi, hvordan vi sparede på inferensomkostninger, mens vi reducerede latenser og øgede gennemløbet ved hjælp af AWS Inferentia.

På jagt efter højtydende, omkostningseffektiv computer

ByteDance AML-teamet fokuserer på forskning og implementering af banebrydende ML-systemer og de heterogene computerressourcer, de kræver. Vi skaber trænings- og inferenssystemer i stor skala til en bred vifte af modeller for anbefaling, naturlig sprogbehandling (NLP) og computersyn (CV). Disse modeller er meget komplekse og behandler en enorm mængde data fra de mange indholdsplatforme, som ByteDance driver. Implementering af disse modeller kræver betydelige GPU-ressourcer, uanset om det er i skyen eller på stedet. Derfor er beregningsomkostningerne for disse inferenssystemer ret høje.

Vi søgte at sænke disse omkostninger uden at påvirke gennemløbet eller latens. Vi ønskede skyens fleksibilitet og hurtigere leveringscyklus, som er meget kortere end den, der er nødvendig for en lokal opsætning. Og selvom vi var åbne over for at udforske nye muligheder for accelereret ML, ønskede vi også en problemfri udvikleroplevelse.

Vi lærte af vores AWS-team, at AWS Inferentia-baserede EC2 Inf1-instanser leverer højtydende ML-inferens til den laveste pris pr. slutning i skyen. Vi var nysgerrige efter at udforske dem og fandt ud af, at de var velegnede til vores use case, fordi vi kører betydelig maskinlæring på store mængder billed-, objekt-, tale- og tekstdata. De passede bestemt godt til vores mål, fordi vi kunne realisere enorme omkostningsbesparelser i betragtning af kompleksiteten af ​​vores modeller og mængden af ​​daglige forudsigelser. Desuden har AWS Inferentia en stor mængde on-chip-hukommelse, som du kan bruge til at cache store modeller i stedet for at gemme dem fra chip. Vi erkendte, at dette kan have en betydelig indvirkning på at reducere inferens latens, fordi behandlingskernerne i AWS Inferentia, kaldet NeuronCores, har højhastighedsadgang til modeller, der er lagret i on-chip-hukommelse og ikke er begrænset af off-chip-hukommelsen båndbredde.

I sidste ende, efter at have evalueret flere muligheder, valgte vi EC2 Inf1-instanser for deres bedre ydeevne/pris-forhold sammenlignet med G4dn-instanser og NVIDIA T4 på stedet. Vi engagerede os i en cyklus af kontinuerlig iteration med AWS-teamet for at låse op for pris- og ydeevnefordelene ved Inf1.

Implementering af inferensarbejdsbelastninger på AWS Inferentia

At komme i gang med AWS Inferentia ved hjælp af AWS Neuron SDK involverede to faser: kompilering af modelkode og implementering på Inf1-instanser. Som det er almindeligt, når ML-modeller flyttes til enhver ny infrastruktur, var der nogle udfordringer, vi stod over for. Vi var i stand til at overvinde disse udfordringer med flid og støtte fra vores AWS-team. I de følgende afsnit deler vi adskillige nyttige tips og observationer baseret på vores erfaring med implementering af inferensarbejdsbelastninger på AWS Inferentia.

Conformer model til OCR

Vores optiske tegngenkendelse (OCR) konformermodel registrerer og læser tekst i billeder. Vi arbejdede på adskillige optimeringer for at få høj ydeevne (QPS) til en række batchstørrelser, samtidig med at latensen holdt lav. Nogle vigtige optimeringer er noteret nedenfor:

  • Compiler optimeringer – Som standard klarer Inferentia sig bedst på input med en fast sekvenslængde, hvilket var en udfordring, da længden af ​​tekstdata ikke er fast. For at overvinde dette opdeler vi vores model i to dele: en koder og en dekoder. Vi kompilerede disse to undermodeller separat og slog dem derefter sammen til en enkelt model via TorchScript. Ved at køre for loop-kontrolflowet på CPU'er muliggjorde denne tilgang understøttelse af variable sekvenslængder på Inferentia.
  • Dybdevis foldningsydelse – Vi stødte på en DMA-flaskehals i den dybdegående foldningsoperation, som er meget brugt af vores konformer-model. Vi arbejdede tæt sammen med AWS Neuron-teamet for at identificere og løse DMA-adgangsydelsens flaskehals, som forbedrede ydeevnen af ​​denne operation og forbedrede den overordnede ydeevne af vores OCR-model.

ByteDance sparer op til 60 % på inferensomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Vi skabte to nye modelvarianter for at optimere vores implementering på Inferentia:

  • Kombineret og udrullet encoder/dekoder – I stedet for at bruge en uafhængigt kompileret koder og dekoder, kombinerede vi koderen og en fuldt udrullet dekoder til en enkelt model og kompilerede denne model som en enkelt NEFF. Udrulning af dekoderen gør det muligt at køre hele dekoderens kontrolflow på Inferentia uden brug af CPU-operationer. Med denne tilgang bruger hver iteration af dekoderen nøjagtig den mængde beregning, der er nødvendig for det pågældende token. Denne tilgang forbedrer ydeevnen, fordi vi væsentligt reducerer den overskydende beregning, der tidligere blev introduceret ved padding-input. Ydermere er ingen dataoverførsel fra Inferentia til CPU nødvendig mellem dekoderiterationer, hvilket drastisk reducerer I/O-tiden. Denne version af modellen understøtter ikke tidlig stop.
  • Opdelt udrullet dekoder – I lighed med den kombinerede fuldt udrullede model udruller denne variant af modellen flere iterationer af dekoderen og kompilerer dem som en enkelt udførelse (men inkluderer ikke indkoderen). For eksempel, for en maksimal sekvenslængde på 75, kan vi rulle dekoderen ud i 3 partitioner, som beregner tokens 1-25, 26-50 og 51-75. Med hensyn til I/O er dette også væsentligt hurtigere, fordi vi ikke behøver at overføre encoder-output én gang pr. iteration. I stedet overføres udgangene kun én gang pr. hver dekoderpartition. Denne version af modellen understøtter tidlig stop, men kun ved partitionsgrænserne. Partitionsgrænserne kan indstilles til hver specifik applikation for at sikre, at størstedelen af ​​anmodninger kun udfører én partition.

For yderligere at forbedre ydeevnen har vi foretaget følgende optimeringer for at reducere hukommelsesforbruget eller forbedre adgangseffektiviteten:

  • Tensor deduplikering og reducerede kopier – Dette er en compiler-optimering, der væsentligt reducerer størrelsen af ​​udrullede modeller og antallet af instruktioner/hukommelsesadgang ved at genbruge tensorer for at forbedre pladseffektiviteten.
  • Reducerede instruktioner – Dette er en compiler-optimering, der bruges sammen med den ikke-polstrede version af dekoderen for at reducere det samlede antal instruktioner markant.
  • Multi-core deduplikering – Dette er en runtime-optimering, der er et alternativ til tensor-deduplikering. Med denne mulighed vil alle multicore-modeller være væsentligt mere pladseffektive.

ResNet50 model til billedklassificering

ResNet-50 er en præ-trænet dyb læringsmodel til billedklassificering. Det er et Convolutional Neural Network (CNN eller ConvNet), der oftest anvendes til at analysere visuelle billeder. Vi brugte følgende teknikker til at forbedre denne models ydeevne på Inferentia:

  • Model transformation – Mange af ByteDances modeller eksporteres i ONNX-format, som Inferentia i øjeblikket ikke understøtter. For at håndtere disse ONNX-modeller leverede AWS Neuron-teamet scripts til at transformere vores modeller fra ONNX-format til PyTorch-modeller, som direkte kan kompileres til Inferentia ved hjælp af torch-neuron.
  • Performance optimering – Vi arbejdede tæt sammen med AWS Neuron team til at tune planlægningsheuristikken i compileren for at optimere ydeevnen af ​​vores ResNet-50-modeller.

Multimodal model til indholdsmoderering

Vores multimodale deep learning-model er en kombination af flere separate modeller. Størrelsen af ​​denne model er relativt stor, hvilket forårsagede modelbelastningsfejl på Inferentia. AWS Neuron-teamet løste med succes dette problem ved at bruge vægtdeling for at reducere enhedens hukommelsesforbrug. Neuron-teamet frigav denne vægtde-duplikeringsfunktion i Neuron libnrt-biblioteket og forbedrede også Neuron-værktøjer til mere præcise målinger. Funktionen for de-duplikering af runtime weight kan aktiveres ved at indstille følgende miljøvariabel, før du kører inferens:

NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1

Den opdaterede Neuron SDK reducerede det samlede hukommelsesforbrug for vores duplikerede modeller, hvilket gjorde det muligt for os at implementere vores multimodale model til multi-core inferens.

Migrering af flere modeller til AWS Inferentia

Hos ByteDance fortsætter vi med at implementere innovative deep learning-modeller for at levere dejlige brugeroplevelser til næsten 2 milliarder månedlige aktive brugere. I betragtning af den massive skala, vi opererer i, leder vi konstant efter måder at spare omkostninger og optimere ydeevnen. Vi vil fortsætte med at migrere modeller til AWS Inferentia for at drage fordel af dens høje ydeevne og omkostningseffektivitet. Vi ønsker også, at AWS lancerer flere AWS Inferentia-baserede instanstyper, såsom dem med flere vCPU'er til forbehandlingsopgaver. Fremadrettet håber ByteDance at se mere siliciuminnovation fra AWS for at levere den bedste prisydelse til ML-applikationer.

Hvis du er interesseret i at lære mere om, hvordan AWS Inferentia kan hjælpe dig med at spare omkostninger, mens du optimerer ydeevnen for dine inferensapplikationer, kan du besøge Amazon EC2 Inf1-forekomster produkt side.


Om forfatterne

ByteDance sparer op til 60 % på inferensomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Minghui Yu er en Senior Machine Learning Team Lead for Inference hos ByteDance. Hans fokusområde er AI Computing Acceleration og Machine Learning System. Han er meget interesseret i heterogen computer- og computerarkitektur i post Moore-æraen. I sin fritid kan han godt lide basketball og bueskydning.

ByteDance sparer op til 60 % på inferensomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Jianzhe Xiao er Senior Software Engineer Team Lead i AML Team hos ByteDance. Hans nuværende arbejde fokuserer på at hjælpe forretningsteamet med at fremskynde modelimplementeringsprocessen og forbedre modellens slutningsevne. Uden for arbejdet nyder han at spille klaver.

ByteDance sparer op til 60 % på inferensomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Tian Shi er Senior Solutions Architect hos AWS. Hans fokusområde er dataanalyse, maskinlæring og serverløs. Han brænder for at hjælpe kunder med at designe og bygge pålidelige og skalerbare løsninger i skyen. I sin fritid nyder han at svømme og læse.

ByteDance sparer op til 60 % på inferensomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Jia Dong er Customer Solutions Manager hos AWS. Hun nyder at lære om AWS AI/ML-tjenester og hjælpe kunder med at nå deres forretningsresultater ved at bygge løsninger til dem. Uden for arbejdet nyder Jia at rejse, yoga og film.

ByteDance sparer op til 60 % på inferensomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Jonathan Lunt er softwareingeniør hos Amazon med fokus på ML framework-udvikling. I løbet af sin karriere har han arbejdet gennem hele bredden af ​​datavidenskabelige roller, herunder modeludvikling, infrastrukturimplementering og hardwarespecifik optimering.

ByteDance sparer op til 60 % på inferensomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Joshua Hannan er maskinlæringsingeniør hos Amazon. Han arbejder på at optimere deep learning-modeller til storskala computervision og naturlige sprogbehandlingsapplikationer.

ByteDance sparer op til 60 % på inferensomkostninger, mens den reducerer latens og øger gennemløbet ved hjælp af AWS Inferentia PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Shruti Koparkar er Senior Product Marketing Manager hos AWS. Hun hjælper kunder med at udforske, evaluere og anvende EC2 accelereret computerinfrastruktur til deres maskinlæringsbehov.

Tidsstempel:

Mere fra AWS maskinindlæring