Dette er et gjesteinnlegg skrevet sammen med Antony Vance fra Intel.
Kunder er alltid på utkikk etter måter å forbedre ytelsen og responstidene til arbeidsbelastninger for maskinlæring (ML) uten å øke kostnadene per transaksjon og uten å ofre nøyaktigheten til resultatene. Kjører ML-arbeidsbelastninger på Amazon SageMaker rennende Amazon Elastic Compute Cloud (Amazon EC2) C6I tilfeller med Intels Implementering av INT8-slutninger kan bidra til å øke den generelle ytelsen med opptil fire ganger per dollar brukt, samtidig som tapet i slutningsnøyaktighet holdes på mindre enn 1 % sammenlignet med FP32 når det brukes på visse ML-arbeidsbelastninger. Når det gjelder å kjøre modellene i innebygde enheter hvor formfaktor og størrelse på modellen er viktig, kan kvantisering hjelpe.
Kvantisering er en teknikk for å redusere beregnings- og minnekostnadene ved å kjøre inferens ved å representere vektene og aktiveringene med datatyper med lav presisjon som 8-bits heltall (INT8) i stedet for det vanlige 32-bits flytepunktet (FP32). I følgende eksempelfigur viser vi INT8 slutningsytelse i C6i for en BERT-basert modell.
BERT-basen ble finjustert med SQuAD v1.1, med PyTorch (v1.11) som ML-rammeverket brukt med Intel® Extension for PyTorch. En batchstørrelse på 1 ble brukt for sammenligningen. Høyere batchstørrelser vil gi forskjellige kostnader per 1 million slutninger.
I dette innlegget viser vi deg hvordan du bygger og distribuerer INT8-inferens med din egen behandlingsbeholder for PyTorch. Vi bruker Intel-utvidelser for PyTorch for en effektiv INT8-distribusjonsarbeidsflyt.
Oversikt over teknologien
EC2 C6i-forekomster drives av tredjegenerasjons Intel Xeon Scalable-prosessorer (også kalt Ice Lake) med en all-core turbofrekvens på 3.5 GHz.
I sammenheng med dyp læring har det dominerende numeriske formatet som brukes for forskning og distribusjon så langt vært 32-bits flytende punkt, eller FP32. Behovet for redusert båndbredde og beregningskrav til dyplæringsmodeller har imidlertid drevet forskning på bruk av numeriske formater med lavere presisjon. Det har blitt demonstrert at vekter og aktiveringer kan representeres ved å bruke 8-bits heltall (eller INT8) uten å pådra seg betydelig tap i nøyaktighet.
EC2 C6i-forekomster tilbyr mange nye funksjoner som resulterer i ytelsesforbedringer for AI- og ML-arbeidsbelastninger. C6i-forekomster gir ytelsesfordeler i FP32- og INT8-modellimplementeringer. FP32-inferens er aktivert med AVX-512-forbedringer, og INT8-inferens er aktivert av AVX-512 VNNI-instruksjoner.
C6i er nå tilgjengelig på SageMaker-endepunkter, og utviklere bør forvente at den gir over to ganger pris-ytelsesforbedringer for INT8-slutninger over FP32-slutninger og opptil fire ganger ytelsesforbedring sammenlignet med C5-forekomst FP32-slutning. Se vedlegget for for eksempel detaljer og benchmarkdata.
Deep learning distribusjon på kanten for sanntidsslutning er nøkkelen til mange applikasjonsområder. Det reduserer kostnadene ved å kommunisere med skyen betydelig når det gjelder nettverksbåndbredde, nettverksforsinkelse og strømforbruk. Edge-enheter har imidlertid begrenset minne, dataressurser og kraft. Dette betyr at et dyplæringsnettverk må optimaliseres for innebygd distribusjon. INT8-kvantisering har blitt en populær tilnærming for slike optimaliseringer for ML-rammeverk som TensorFlow og PyTorch. SageMaker gir deg en ta med din egen container (BYOC) tilnærming og integrerte verktøy slik at du kan kjøre kvantisering.
For mer informasjon, se Lavere numerisk presisjon Deep Learning Inferens og trening.
Løsningsoversikt
Trinnene for å implementere løsningen er som følger:
- Tilveiebringe en EC2 C6i-instans for å kvantisere og lage ML-modellen.
- Bruk de medfølgende Python-skriptene for kvantisering.
- Lag et Docker-bilde for å distribuere modellen i SageMaker ved å bruke BYOC-tilnærmingen.
- Bruk en Amazon enkel lagringstjeneste (Amazon S3) bøtte for å kopiere modellen og koden for SageMaker-tilgang.
- Bruk Amazon Elastic Container Registry (Amazon ECR) for å være vert for Docker-bildet.
- Bruke AWS kommandolinjegrensesnitt (AWS CLI) for å lage et slutningsendepunkt i SageMaker.
- Kjør de medfølgende Python-testskriptene for å starte SageMaker-endepunktet for både INT8- og FP32-versjoner.
Dette slutningsdistribusjonsoppsettet bruker en BERT-basert modell fra Hugging Face-transformatorlageret (csarron/bert-base-uncased-squad-v1).
Forutsetninger
Følgende er forutsetninger for å opprette distribusjonsoppsettet:
- En Linux-skallterminal med AWS CLI installert
- En AWS-konto med tilgang til EC2-forekomstoppretting (C6i-forekomsttype)
- SageMaker tilgang til å distribuere en SageMaker-modell, endepunktkonfigurasjon, endepunkt
- AWS identitets- og tilgangsadministrasjon (IAM) tilgang til å konfigurere en IAM-rolle og policy
- Tilgang til Amazon ECR
- SageMaker tilgang til å lage en notatbok med instruksjoner for å starte et endepunkt
Generer og distribuer en kvantisert INT8-modell på SageMaker
Åpne en EC2-instans for å lage din kvantiserte modell og skyv modellartefaktene til Amazon S3. For endepunktsimplementering oppretter du en tilpasset beholder med PyTorch og Intel® Extension for PyTorch for å distribuere den optimaliserte INT8-modellen. Beholderen blir skjøvet inn i Amazon ECR og et C6i-basert endepunkt opprettes for å betjene FP32- og INT8-modeller.
Følgende diagram illustrerer flyten på høyt nivå.
For å få tilgang til koden og dokumentasjonen, se GitHub repo.
Eksempel på bruk
Stanford Question Answering Dataset (SQuAD) er et leseforståelsesdatasett som består av spørsmål stilt av publikumsarbeidere på et sett med Wikipedia-artikler, der svaret på hvert spørsmål er et tekstsegment, eller span, fra det tilsvarende lesepassasjen, eller spørsmålet kan være ubesvart.
Følgende eksempel er en spørsmålssvarsalgoritme som bruker en BERT-basert modell. Gitt et dokument som innspill vil modellen svare på enkle spørsmål basert på læringen og kontekstene fra innspillsdokumentet.
Følgende er et eksempel på et dokument:
Amazonas-regnskogen (portugisisk: Floresta Amazônica eller Amazônia; spansk: Selva Amazónica, Amazonía eller vanligvis Amazonia; fransk: Forêt amazonienne; nederlandsk: Amazoneregenwoud), også kjent på engelsk som Amazonia eller Amazonasjungelen, er en fuktig løvskog som dekker det meste av Amazonasbassenget i Sør-Amerika. Dette bassenget omfatter 7,000,000 kvadratkilometer (2,700,000 sq mi), hvorav 5,500,000 kvadratkilometer (2,100,000 sq mi) er dekket av regnskogen.
For spørsmålet "Hvilket navn brukes også for å beskrive Amazonas regnskog på engelsk?" vi får svaret:
For spørsmålet "Hvor mange kvadratkilometer med regnskog er dekket i bassenget?" vi får svaret:
Kvantisering av modellen i PyTorch
Denne delen gir en rask oversikt over modellkvantiseringstrinn med PyTorch- og Intel-utvidelser.
Kodebitene er avledet fra et SageMaker-eksempel.
La oss gå gjennom endringene i detalj for funksjonen IPEX_quantize i filen quantize.py.
- Importer intel-utvidelser for PyTorch for å hjelpe med kvantisering og optimalisering og importer lommelykt for array-manipulasjoner:
- Bruk modellkalibrering for 100 iterasjoner. I dette tilfellet kalibrerer du modellen med SQuAD-datasettet:
- Forbered eksempelinndata:
- Konverter modellen til en INT8-modell ved å bruke følgende konfigurasjon:
- Kjør to iterasjoner av foroverpassering for å aktivere fusjoner:
- Som et siste trinn, lagre TorchScript-modellen:
Rydd opp
Referere til Github-repos for trinn for å rydde opp i AWS-ressursene som er opprettet.
konklusjonen
Nye EC2 C6i-forekomster i et SageMaker-endepunkt kan akselerere slutningsdistribusjonen opptil 2.5 ganger større med INT8-kvantisering. Kvantisering av modellen i PyTorch er mulig med noen få APIer fra Intel PyTorch-utvidelser. Det anbefales å kvantisere modellen i C6i-forekomster slik at modellnøyaktigheten opprettholdes i endepunktsdistribusjon. SageMaker-eksemplene GitHub repo gir nå en ende-til-ende-implementerings-eksempelpipeline for kvantisering og vertskap for INT8-modeller.
Vi oppfordrer deg til å lage en ny modell eller migrere en eksisterende modell ved å bruke INT8-kvantisering ved å bruke EC2 C6i-forekomsttypen og se ytelsesgevinstene selv.
Varsel og ansvarsfraskrivelser
Ingen lisens (uttrykkelig eller underforstått, ved estoppel eller på annen måte) til noen immaterielle rettigheter er gitt av dette dokumentet, med det eneste unntaket at koden inkludert i dette dokumentet er lisensiert i henhold til Zero-Clause BSD åpen kildekode-lisens (0BSD)
Vedlegg
Nye AWS-forekomster i SageMaker med INT8-distribusjonsstøtte
Følgende tabell viser SageMaker-forekomster med og uten DL Boost Støtte.
Forekomstnavn | Xeon Gen-kodenavn | INT8 aktivert? | DL Boost aktivert? |
ml.c5. xlarge – ml.c5.9xlarge | Skylake/1st | Ja | Nei |
ml.c5.18xlarge | Skylake/1st | Ja | Nei |
ml.c6i.1x – 32xlarge | Issjøen/3rd | Ja | Ja |
For å oppsummere, INT8 aktivert støtter INT8 datatype og beregning; DL Boost-aktivert støtter Deep Learning Boost.
Referansedata
Tabellen nedenfor sammenligner kostnadene og den relative ytelsen mellom c5- og c6-forekomster.
Latens og gjennomstrømning målt med 10000 XNUMX inferensspørringer til Sage maker-endepunkter.
E2E Latency of Inference Endpoint og kostnadsanalyse | |||||
P50(ms) | P90(ms) | Spørsmål/Sek | $/1M søk | Relativ $/ytelse | |
C5.2xLarge-FP32 | 76.6 | 125.3 | 11.5 | $10.2 | 1.0x |
c6i.2xLarge-FP32 | 70 | 110.8 | 13 | $9.0 | 1.1x |
c6i.2xLarge-INT8 | 35.7 | 48.9 | 25.56 | $4.5 | 2.3x |
INT8-modeller forventes å gi 2–4 ganger praktiske ytelsesforbedringer med mindre enn 1 % nøyaktighetstap for de fleste av modellene. Tabellen ovenfor dekker overhead latency (NW og demoapplikasjon)
Nøyaktighet for BERT-basert modell
Følgende tabell oppsummerer nøyaktigheten for INT8-modellen med SQUaD v1.1-datasettet.
Metric | FP32 | INT8 |
Nøyaktig treff | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
De GitHub repo kommer med skriptene for å sjekke nøyaktigheten til SQuAD-datasettet. Referere til invoke-INT8.py og invoke-FP32.py skript for testing.
Intel Extension for PyTorch
Intel® Extension for PyTorch* (et åpen kildekode-prosjekt på GitHub) utvider PyTorch med optimaliseringer for ekstra ytelsesøkninger på Intel-maskinvare. De fleste av optimaliseringene vil bli inkludert i lager PyTorch-utgivelser etter hvert, og intensjonen med utvidelsen er å levere oppdaterte funksjoner og optimaliseringer for PyTorch på Intel-maskinvare. Eksempler inkluderer AVX-512 Vector Neural Network Instructions (AVX512 VNNI) og Intel® Advanced Matrix Extensions (Intel® AMX).
Følgende figur illustrerer Intel Extension for PyTorch-arkitekturen.
For mer detaljert brukerveiledning (funksjoner, ytelsesjustering og mer) for Intel® Extension for PyTorch, se Intel® Extension for PyTorch* brukerveiledning.
Om forfatterne
Rohit Chowdhary er senior løsningsarkitekt i Strategic Accounts-teamet hos AWS.
Aniruddha Kappagantu er programvareutviklingsingeniør i AI Platforms-teamet hos AWS.
Antony Vance er en AI-arkitekt hos Intel med 19 års erfaring innen datasyn, maskinlæring, dyp læring, innebygd programvare, GPU og FPGA.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/accelerate-amazon-sagemaker-inference-with-c6i-intel-based-amazon-ec2-instances/
- :er
- $OPP
- 000
- 1
- 100
- 11
- 7
- 8
- 9
- a
- ovenfor
- akselerere
- adgang
- Logg inn
- kontoer
- nøyaktighet
- aktiveringer
- avansert
- fordeler
- AI
- algoritme
- alltid
- Amazon
- Amazon EC2
- Amazon SageMaker
- america
- og
- besvare
- APIer
- Søknad
- anvendt
- tilnærming
- arkitektur
- ER
- områder
- Array
- artikler
- AS
- At
- tilgjengelig
- AWS
- Båndbredde
- basert
- BE
- bli
- være
- benchmark
- mellom
- øke
- bringe
- bygge
- by
- som heter
- CAN
- evner
- saken
- viss
- Endringer
- sjekk
- Cloud
- kode
- kommunisere
- sammenlignet
- sammenligning
- beregningen
- Beregn
- datamaskin
- Datamaskin syn
- databehandling
- Konfigurasjon
- Består
- forbruk
- Container
- kontekst
- sammenhenger
- Tilsvarende
- Kostnad
- Kostnader
- dekket
- Dekker
- skape
- opprettet
- Opprette
- skaperverket
- skikk
- dato
- dyp
- dyp læring
- leverer
- demonstrert
- utplassere
- distribusjon
- distribusjoner
- Avledet
- beskrive
- detalj
- detaljert
- detaljer
- utviklere
- Utvikling
- Enheter
- forskjellig
- Docker
- dokument
- dokumentasjon
- gjør
- Dollar
- drevet
- Dutch
- Edge
- Effektiv
- innebygd
- muliggjøre
- aktivert
- Omfatter
- oppmuntre
- ende til ende
- Endpoint
- ingeniør
- Engelsk
- etter hvert
- Hver
- eksempel
- eksempler
- unntak
- eksisterende
- forvente
- forventet
- erfaring
- ekspress
- forlengelse
- utvidelser
- ekstra
- Face
- Egenskaper
- Noen få
- Figur
- filet
- flytende
- flyten
- etter
- følger
- Til
- skog
- skjema
- format
- Forward
- FPGA
- Rammeverk
- rammer
- Fransk
- Frekvens
- fra
- funksjon
- inntjening
- Gen
- få
- GitHub
- gitt
- gir
- Go
- GPU
- innvilget
- større
- Gjest
- gjest innlegg
- veiledning
- maskinvare
- Ha
- hjelpe
- høyt nivå
- høyere
- vert
- Hosting
- Hvordan
- Hvordan
- Men
- HTML
- http
- HTTPS
- ICE
- Identitet
- bilde
- iverksette
- implisitt
- importere
- viktig
- forbedre
- forbedring
- forbedringer
- in
- inkludere
- inkludert
- økende
- informasjon
- inngang
- f.eks
- i stedet
- instruksjoner
- integrert
- Intel
- intellektuell
- intellektuell eiendom
- Intensjon
- IT
- gjentakelser
- jpg
- holde
- nøkkel
- kjent
- innsjø
- Siste
- Ventetid
- lansere
- læring
- Tillatelse
- Licensed
- i likhet med
- Begrenset
- linje
- linux
- lister
- ser
- tap
- maskin
- maskinlæring
- maker
- mange
- Matrix
- midler
- Minne
- kunne
- migrere
- millioner
- ML
- modell
- modeller
- mer
- mest
- MS
- navn
- Trenger
- nettverk
- nevrale nettverket
- Ny
- bærbare
- of
- tilby
- on
- åpen
- åpen kildekode
- optimalisering
- optimalisert
- OS
- ellers
- samlet
- oversikt
- egen
- banen
- ytelse
- rørledning
- Plattformer
- plato
- Platon Data Intelligence
- PlatonData
- Point
- Populær
- Portugisisk
- mulig
- Post
- makt
- powered
- Praktisk
- Precision
- forutsetninger
- prosessering
- prosessorer
- prosjekt
- eiendom
- Eiendoms rettigheter
- gi
- forutsatt
- gir
- Skyv
- presset
- Python
- pytorch
- spørsmål
- spørsmål
- Rask
- Lesning
- sanntids
- anbefales
- redusere
- Redusert
- reduserer
- Utgivelser
- Repository
- representert
- representerer
- Krav
- forskning
- Ressurser
- svar
- resultere
- Resultater
- rettigheter
- Rolle
- Kjør
- rennende
- ofre
- sagemaker
- SageMaker Inference
- Spar
- skalerbar
- skript
- Seksjon
- segmentet
- betjene
- sett
- oppsett
- Shell
- bør
- Vis
- signifikant
- betydelig
- Enkelt
- Størrelse
- størrelser
- So
- så langt
- Software
- programvareutvikling
- løsning
- Solutions
- kilde
- Sør
- Sør Amerika
- Spansk
- brukt
- SQ
- kvadrat
- Trinn
- Steps
- lager
- lagring
- Strategisk
- emne
- slik
- oppsummere
- medfølgende
- støtte
- Støtter
- bord
- lag
- tensorflow
- terminal
- vilkår
- test
- Testing
- Det
- De
- deres
- gjennomstrømning
- ganger
- til
- verktøy
- lommelykt
- Transaksjonen
- transformers
- typer
- up-to-date
- bruke
- Bruker
- vanligvis
- syn
- måter
- hvilken
- mens
- Wikipedia
- vil
- med
- uten
- år
- Du
- Din
- deg selv
- zephyrnet