ByteDance bespaart tot 60% op inferentiekosten, vermindert de latentie en verhoogt de doorvoer met behulp van AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

ByteDance bespaart tot 60% op inferentiekosten terwijl de latentie wordt verminderd en de doorvoer wordt verhoogd met behulp van AWS Inferentia

Dit is een gastblogpost die is geschreven in samenwerking met Minghui Yu en Jianzhe Xiao van Bytedance.

ByteDance is een technologiebedrijf dat een reeks contentplatforms exploiteert om mensen in verschillende talen, culturen en regio's te informeren, op te leiden, te entertainen en te inspireren. Gebruikers vertrouwen en genieten van onze inhoudsplatforms vanwege de rijke, intuïtieve en veilige ervaringen die ze bieden. Deze ervaringen worden mogelijk gemaakt door onze machine learning (ML) backend-engine, met ML-modellen die zijn gebouwd voor contentmoderatie, zoeken, aanbevelingen, advertenties en nieuwe visuele effecten.

Het ByteDance AML-team (Applied Machine Learning) levert zeer performante, betrouwbare en schaalbare ML-systemen en end-to-end ML-services voor de activiteiten van het bedrijf. We waren op zoek naar manieren om onze ML-inferentiesystemen te optimaliseren om de kosten te verlagen, zonder de reactietijden te verlengen. Toen AWS werd gelanceerd AWS Inferentie, een krachtige ML-inferentiechip die speciaal is gebouwd door AWS, hebben we contact opgenomen met ons AWS-accountteam om te testen of AWS Inferentia onze optimalisatiedoelen kan bereiken. We hebben verschillende proofs of concept uitgevoerd, wat resulteerde in tot 60% lagere inferentiekosten in vergelijking met T4 GPU-gebaseerde EC2 G4dn-instanties en tot 25% lagere inferentielatentie. Om deze kostenbesparingen en prestatieverbeteringen te realiseren, hebben we besloten om modellen in te zetten op basis van AWS Inferentia Amazon Elastic Compute-cloud (Amazon EC2) Inf1-exemplaren in productie.

Het volgende diagram toont de latentieverbetering voor een van onze modellen voor gezichtsdetectie die eerder was geïmplementeerd op GPU's met Tensor RT. De gemiddelde latentie daalde met 20% (van 50 milliseconden naar 40 milliseconden) en de p99-latentie daalde met 25% (van 200 milliseconden naar 150 milliseconden).

In dit bericht delen we hoe we hebben bespaard op inferentiekosten, terwijl we latenties hebben verminderd en de doorvoer hebben verhoogd met behulp van AWS Inferentia.

Op zoek naar krachtige, kosteneffectieve rekenkracht

Het ByteDance AML-team richt zich op het onderzoek en de implementatie van geavanceerde ML-systemen en de heterogene computerbronnen die ze nodig hebben. We creëren grootschalige trainings- en inferentiesystemen voor een breed scala aan modellen voor aanbeveling, natuurlijke taalverwerking (NLP) en computervisie (CV). Deze modellen zijn zeer complex en verwerken een enorme hoeveelheid gegevens van de vele contentplatforms die ByteDance beheert. Het implementeren van deze modellen vereist aanzienlijke GPU-resources, zowel in de cloud als op locatie. Daarom zijn de rekenkosten voor deze inferentiesystemen vrij hoog.

We wilden deze kosten verlagen zonder de doorvoer of latentie te beïnvloeden. We wilden de flexibiliteit van de cloud en een snellere leveringscyclus, die veel korter is dan nodig is voor een installatie op locatie. En hoewel we open stonden voor het verkennen van nieuwe opties voor versnelde ML, wilden we ook een naadloze ontwikkelaarservaring.

We hebben van ons AWS-team vernomen dat op AWS Inferentia gebaseerde EC2 Inf1-instanties hoogwaardige ML-inferentie leveren tegen de laagste kosten per inferentie in de cloud. We waren nieuwsgierig om ze te verkennen en ontdekten dat ze goed geschikt waren voor onze use case, omdat we substantiële machine learning uitvoeren op grote hoeveelheden beeld-, object-, spraak- en tekstgegevens. Ze pasten absoluut goed bij onze doelstellingen, omdat we enorme kostenbesparingen konden realiseren gezien de complexiteit van onze modellen en het grote aantal dagelijkse voorspellingen. Bovendien beschikt AWS Inferentia over een grote hoeveelheid on-chip geheugen, dat u kunt gebruiken voor het cachen van grote modellen in plaats van ze off-chip op te slaan. We erkenden dat dit een aanzienlijke impact kan hebben op het verminderen van inferentielatentie omdat de verwerkingskernen van AWS Inferentia, NeuronCores genaamd, snelle toegang hebben tot modellen die zijn opgeslagen in het geheugen op de chip en niet worden beperkt door het geheugen buiten de chip. bandbreedte.

Uiteindelijk hebben we, na verschillende opties te hebben geëvalueerd, gekozen voor EC2 Inf1-instanties vanwege hun betere prestatie/prijsverhouding in vergelijking met G4dn-instanties en NVIDIA T4 on-premises. We zijn met het AWS-team bezig geweest met een cyclus van continue iteratie om de prijs- en prestatievoordelen van Inf1 te ontgrendelen.

Inferentie-workloads implementeren op AWS Inferentia

Aan de slag gaan met AWS Inferentia met behulp van de AWS Neuron SDK omvatte twee fasen: compilatie van modelcode en implementatie op Inf1-instanties. Zoals gebruikelijk bij het verplaatsen van ML-modellen naar een nieuwe infrastructuur, waren er enkele uitdagingen waarmee we te maken kregen. We waren in staat om deze uitdagingen te overwinnen met toewijding en ondersteuning van ons AWS-team. In de volgende secties delen we verschillende nuttige tips en observaties op basis van onze ervaring met het implementeren van inferentiewerklasten op AWS Inferentia.

Conformer-model voor OCR

Ons conformermodel voor optische tekenherkenning (OCR) detecteert en leest tekst in afbeeldingen. We hebben aan verschillende optimalisaties gewerkt om hoge prestaties (QPS) te krijgen voor verschillende batchgroottes, terwijl we de latentie laag hielden. Enkele belangrijke optimalisaties worden hieronder vermeld:

  • Compiler-optimalisaties – Standaard presteert Inferentia het beste op invoer met een vaste reekslengte, wat een uitdaging vormde omdat de lengte van tekstuele gegevens niet vaststaat. Om dit te verhelpen, hebben we ons model in twee delen gesplitst: een encoder en een decoder. We hebben deze twee submodellen afzonderlijk gecompileerd en vervolgens via TorchScript samengevoegd tot één model. Door de for loop-besturingsstroom op CPU's uit te voeren, maakte deze aanpak ondersteuning mogelijk voor variabele reekslengtes op Inferentia.
  • Diepgaande convolutieprestaties - We zijn een DMA-knelpunt tegengekomen in de dieptegewijze convolutiebewerking, die veel wordt gebruikt door ons conformer-model. We hebben nauw samengewerkt met het AWS Neuron-team om het knelpunt in de DMA-toegangsprestaties te identificeren en op te lossen, waardoor de prestaties van deze bewerking en de algehele prestaties van ons OCR-model verbeterden.

ByteDance bespaart tot 60% op inferentiekosten, vermindert de latentie en verhoogt de doorvoer met behulp van AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

We hebben twee nieuwe modelvarianten gemaakt om onze implementatie op Inferentia te optimaliseren:

  • Gecombineerde en ontrolde encoder/decoder – In plaats van een onafhankelijk samengestelde encoder en decoder te gebruiken, hebben we de encoder en een volledig uitgerolde decoder gecombineerd in één model en dit model samengesteld als één NEFF. Door de decoder uit te rollen, is het mogelijk om alle besturingsstromen van de decoder op Inferentia uit te voeren zonder enige CPU-bewerkingen te gebruiken. Met deze aanpak gebruikt elke iteratie van de decoder precies de hoeveelheid rekenkracht die nodig is voor dat token. Deze benadering verbetert de prestaties omdat we de overtollige berekening aanzienlijk verminderen die eerder werd geïntroduceerd door invoerinvoer op te vullen. Bovendien is er geen gegevensoverdracht van Inferentia naar CPU nodig tussen decoderiteraties, wat de I/O-tijd drastisch vermindert. Deze versie van het model biedt geen ondersteuning voor vroegtijdig stoppen.
  • Gepartitioneerde ontrolde decoder – Vergelijkbaar met het gecombineerde volledig uitgerold model, rolt deze variant van het model meerdere iteraties van de decoder uit en compileert ze als een enkele uitvoering (maar bevat niet de encoder). Voor een maximale reekslengte van 75 kunnen we de decoder bijvoorbeeld uitrollen in 3 partities die tokens 1-25, 26-50 en 51-75 berekenen. In termen van I/O is dit ook aanzienlijk sneller omdat we de encoder-output niet één keer per iteratie hoeven over te dragen. In plaats daarvan worden de uitgangen slechts eenmaal per decoderpartitie overgedragen. Deze versie van het model ondersteunt wel vroegtijdig stoppen, maar alleen bij de partitiegrenzen. De partitiegrenzen kunnen voor elke specifieke toepassing worden afgestemd om ervoor te zorgen dat de meeste verzoeken slechts één partitie uitvoeren.

Om de prestaties verder te verbeteren, hebben we de volgende optimalisaties doorgevoerd om het geheugengebruik te verminderen of de toegangsefficiëntie te verbeteren:

  • Tensor deduplicatie en verkleinde kopieën - Dit is een compileroptimalisatie die de grootte van uitgerolde modellen en het aantal instructies / geheugentoegang aanzienlijk verkleint door tensoren te hergebruiken om de ruimte-efficiëntie te verbeteren.
  • Gereduceerde instructies - Dit is een compileroptimalisatie die wordt gebruikt met de niet-opgevulde versie van de decoder om het totale aantal instructies aanzienlijk te verminderen.
  • Multi-core deduplicatie - Dit is een runtime-optimalisatie die een alternatief is voor de tensor-deduplicatie. Met deze optie zullen alle multicore-modellen aanzienlijk ruimtebesparend zijn.

ResNet50-model voor beeldclassificatie

ResNet-50 is een vooraf getraind deep learning-model voor beeldclassificatie. Het is een convolutioneel neuraal netwerk (CNN of ConvNet) dat meestal wordt toegepast bij het analyseren van visuele beelden. We hebben de volgende technieken gebruikt om de prestaties van dit model op Inferentia te verbeteren:

  • Model transformatie - Veel van de modellen van ByteDance worden geëxporteerd in ONNX-indeling, die Inferentia momenteel niet native ondersteunt. Om met deze ONNX-modellen om te gaan, leverde het AWS Neuron-team scripts om onze modellen te transformeren van ONNX-formaat naar PyTorch-modellen, die direct kunnen worden gecompileerd voor Inferentia met behulp van torch-neuron.
  • Prestatieoptimalisatie - We hebben nauw samengewerkt met de AWS-neuron team om de planningsheuristiek in de compiler af te stemmen om de prestaties van onze ResNet-50-modellen te optimaliseren.

Multimodaal model voor contentmoderatie

Ons multimodale deep learning-model is een combinatie van meerdere afzonderlijke modellen. De grootte van dit model is relatief groot, waardoor het laden van modellen mislukte op Inferentia. Het AWS Neuron-team heeft dit probleem met succes opgelost door gewichtsdeling te gebruiken om het geheugengebruik van het apparaat te verminderen. Het Neuron-team heeft deze functie voor gewichtsontdubbeling uitgebracht in de Neuron libnrt-bibliotheek en heeft ook Neuron Tools verbeterd voor nauwkeurigere statistieken. De functie voor deduplicatie van het gewicht tijdens runtime kan worden ingeschakeld door de volgende omgevingsvariabele in te stellen voordat de gevolgtrekking wordt uitgevoerd:

NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1

De bijgewerkte Neuron SDK verminderde het totale geheugenverbruik van onze gedupliceerde modellen, waardoor we ons multimodale model konden inzetten voor multi-core inferentie.

Meer modellen migreren naar AWS Inferentia

Bij ByteDance blijven we innovatieve deep learning-modellen inzetten om geweldige gebruikerservaringen te bieden aan bijna 2 miljard maandelijks actieve gebruikers. Gezien de enorme schaal waarop we opereren, zijn we voortdurend op zoek naar manieren om kosten te besparen en de prestaties te optimaliseren. We zullen doorgaan met het migreren van modellen naar AWS Inferentia om te profiteren van de hoge prestaties en kostenefficiëntie. We willen ook dat AWS meer op AWS Inferentia gebaseerde instantietypen lanceert, zoals exemplaren met meer vCPU's voor preprocessing-taken. In de toekomst hoopt ByteDance meer siliciuminnovatie van AWS te zien om de beste prijs-kwaliteitverhouding voor ML-toepassingen te leveren.

Als u meer wilt weten over hoe AWS Inferentia u kan helpen kosten te besparen en tegelijkertijd de prestaties van uw inferentietoepassingen te optimaliseren, bezoek dan de Amazon EC2 Inf1-instanties productpagina.


Over de auteurs

ByteDance bespaart tot 60% op inferentiekosten, vermindert de latentie en verhoogt de doorvoer met behulp van AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Minghui Yu is Senior Machine Learning Team Lead voor Inference bij ByteDance. Zijn focusgebied is AI Computing Acceleration en Machine Learning System. Hij is erg geïnteresseerd in heterogene computing en computerarchitectuur in het post-Moore-tijdperk. In zijn vrije tijd houdt hij van basketbal en boogschieten.

ByteDance bespaart tot 60% op inferentiekosten, vermindert de latentie en verhoogt de doorvoer met behulp van AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Jianzhe Xiao is een Senior Software Engineer Team Lead in AML Team bij ByteDance. Zijn huidige werk richt zich op het helpen van het businessteam om het modelimplementatieproces te versnellen en de inferentieprestaties van het model te verbeteren. Naast zijn werk speelt hij graag piano.

ByteDance bespaart tot 60% op inferentiekosten, vermindert de latentie en verhoogt de doorvoer met behulp van AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Tian Shi is Senior Solutions Architect bij AWS. Zijn focusgebied is data-analyse, machine learning en serverless. Hij is gepassioneerd om klanten te helpen bij het ontwerpen en bouwen van betrouwbare en schaalbare oplossingen in de cloud. In zijn vrije tijd houdt hij van zwemmen en lezen.

ByteDance bespaart tot 60% op inferentiekosten, vermindert de latentie en verhoogt de doorvoer met behulp van AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Jia Dong is Customer Solutions Manager bij AWS. Ze vindt het leuk om te leren over AWS AI/ML-services en klanten te helpen hun bedrijfsresultaten te behalen door oplossingen voor hen te bouwen. Buiten haar werk houdt Jia van reizen, yoga en films.

ByteDance bespaart tot 60% op inferentiekosten, vermindert de latentie en verhoogt de doorvoer met behulp van AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Jonathan Lunt is een software-engineer bij Amazon met een focus op ML-frameworkontwikkeling. Gedurende zijn carrière heeft hij de volledige breedte van data science-rollen vervuld, waaronder modelontwikkeling, infrastructuurimplementatie en hardwarespecifieke optimalisatie.

ByteDance bespaart tot 60% op inferentiekosten, vermindert de latentie en verhoogt de doorvoer met behulp van AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Jozua Hannan is een machine learning-ingenieur bij Amazon. Hij werkt aan het optimaliseren van deep learning-modellen voor grootschalige computervisie en natuurlijke taalverwerkingstoepassingen.

ByteDance bespaart tot 60% op inferentiekosten, vermindert de latentie en verhoogt de doorvoer met behulp van AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Shruti Koparkar is Senior Product Marketing Manager bij AWS. Ze helpt klanten bij het verkennen, evalueren en adopteren van EC2 versnelde computerinfrastructuur voor hun machine learning-behoeften.

Tijdstempel:

Meer van AWS-machine learning