Dette er et gæsteindlæg skrevet sammen med Antony Vance fra Intel.
Kunder er altid på udkig efter måder at forbedre ydeevnen og svartider for deres maskinlærings-arbejdsbelastninger (ML) uden at øge omkostningerne pr. transaktion og uden at ofre nøjagtigheden af resultaterne. Kører ML-arbejdsbelastninger på Amazon SageMaker kører Amazon Elastic Compute Cloud (Amazon EC2) C6i instanser med Intels Implementering af INT8-inferens kan hjælpe med at booste den overordnede ydeevne med op til fire gange per brugt dollar, mens tabet i slutningsnøjagtighed holdes på mindre end 1 % sammenlignet med FP32, når det anvendes på visse ML-arbejdsbelastninger. Når det kommer til at køre modellerne i indlejrede enheder, hvor formfaktor og størrelse på modellen er vigtig, kan kvantisering hjælpe.
Kvantisering er en teknik til at reducere beregnings- og hukommelsesomkostningerne ved at køre inferens ved at repræsentere vægte og aktiveringer med lavpræcisionsdatatyper som 8-bit heltal (INT8) i stedet for det sædvanlige 32-bit flydende komma (FP32). I den følgende eksempelfigur viser vi INT8-inferensydelse i C6i for en BERT-baseret model.
BERT-basen blev finjusteret med SQuAD v1.1, hvor PyTorch (v1.11) er ML-rammeværket, der blev brugt med Intel® Extension for PyTorch. En batchstørrelse på 1 blev brugt til sammenligningen. Højere batchstørrelser vil give forskellige omkostninger pr. 1 million slutninger.
I dette indlæg viser vi dig, hvordan du opbygger og implementerer INT8-inferens med din egen forarbejdningsbeholder til PyTorch. Vi bruger Intel-udvidelser til PyTorch til en effektiv INT8-implementeringsworkflow.
Oversigt over teknologien
EC2 C6i tilfælde drives af tredjegenerations Intel Xeon Scalable-processorer (også kaldet Ice Lake) med en turbofrekvens på hele 3.5 GHz.
I forbindelse med deep learning har det fremherskende numeriske format brugt til forskning og implementering indtil videre været 32-bit floating point eller FP32. Behovet for reduceret båndbredde og beregningskrav i deep learning-modeller har imidlertid drevet forskning i brug af numeriske formater med lavere præcision. Det er blevet påvist, at vægte og aktiveringer kan repræsenteres ved hjælp af 8-bit heltal (eller INT8) uden at pådrage sig væsentligt tab i nøjagtighed.
EC2 C6i-instanser tilbyder mange nye funktioner, der resulterer i præstationsforbedringer for AI- og ML-arbejdsbelastninger. C6i-instanser giver ydeevnefordele i FP32- og INT8-modelimplementeringer. FP32-inferens er aktiveret med AVX-512-forbedringer, og INT8-inferens er aktiveret af AVX-512 VNNI-instruktioner.
C6i er nu tilgængelig på SageMaker-endepunkter, og udviklere bør forvente, at den giver mere end to gange pris-ydelsesforbedringer for INT8-inferens i forhold til FP32-inferens og op til fire gange ydeevneforbedring sammenlignet med C5-instans FP32-inferens. Se appendiks for for eksempel detaljer og benchmarkdata.
Deep learning-implementering på kanten til realtidsslutning er nøglen til mange applikationsområder. Det reducerer betydeligt omkostningerne ved at kommunikere med skyen med hensyn til netværksbåndbredde, netværksforsinkelse og strømforbrug. Edge-enheder har dog begrænset hukommelse, computerressourcer og strøm. Det betyder, at et deep learning-netværk skal optimeres til indlejret implementering. INT8-kvantisering er blevet en populær tilgang til sådanne optimeringer til ML-frameworks som TensorFlow og PyTorch. SageMaker giver dig en medbring din egen container-tilgang (BYOC) og integrerede værktøjer, så du kan køre kvantisering.
For mere information henvises til Lavere numerisk præcision Deep Learning Inferens og træning.
Løsningsoversigt
Trinene til implementering af løsningen er som følger:
- Lever en EC2 C6i-instans til at kvantisere og skabe ML-modellen.
- Brug de medfølgende Python-scripts til kvantisering.
- Opret et Docker-image for at implementere modellen i SageMaker ved hjælp af BYOC-tilgangen.
- Brug en Amazon Simple Storage Service (Amazon S3) spand til at kopiere modellen og koden for SageMaker-adgang.
- Brug Amazon Elastic Container Registry (Amazon ECR) til at være vært for Docker-billedet.
- Brug AWS kommandolinjegrænseflade (AWS CLI) for at oprette et slutningsendepunkt i SageMaker.
- Kør de medfølgende Python-testscripts for at starte SageMaker-slutpunktet for både INT8- og FP32-versioner.
Denne inferensimplementeringsopsætning bruger en BERT-baseret model fra Hugging Face transformers repository (csarron/bert-base-uncased-squad-v1).
Forudsætninger
Følgende er forudsætninger for at oprette installationsopsætningen:
- En Linux-shell-terminal med AWS CLI installeret
- En AWS-konto med adgang til oprettelse af EC2-instanser (C6i-instanstype)
- SageMaker-adgang til at implementere en SageMaker-model, endepunktskonfiguration, endepunkt
- AWS identitets- og adgangsstyring (IAM) adgang til at konfigurere en IAM-rolle og -politik
- Adgang til Amazon ECR
- SageMaker adgang til at oprette en notesbog med instruktioner til at starte et slutpunkt
Generer og implementer en kvantiseret INT8-model på SageMaker
Åbn en EC2-instans for at oprette din kvantificerede model, og skub modelartefakterne til Amazon S3. Til slutpunktsimplementering skal du oprette en tilpasset container med PyTorch og Intel® Extension for PyTorch for at implementere den optimerede INT8-model. Containeren bliver skubbet ind i Amazon ECR, og et C6i-baseret slutpunkt er skabt til at betjene FP32- og INT8-modeller.
Følgende diagram illustrerer flowet på højt niveau.
For at få adgang til koden og dokumentationen, se GitHub repo.
Eksempel på use case
Stanford Question Answering Dataset (SQuAD) er et læseforståelsesdatasæt bestående af spørgsmål stillet af crowd-workers på et sæt Wikipedia-artikler, hvor svaret på hvert spørgsmål er et tekstsegment, eller span, fra den tilsvarende læsepassage, eller spørgsmålet kan være ubesvaret.
Det følgende eksempel er en algoritme til besvarelse af spørgsmål, der bruger en BERT-basemodel. Givet et dokument som input, vil modellen besvare simple spørgsmål baseret på læringen og sammenhænge fra inputdokumentet.
Følgende er et eksempel på et inputdokument:
Amazonas regnskoven (portugisisk: Floresta Amazônica eller Amazônia; spansk: Selva Amazónica, Amazonía eller sædvanligvis Amazonia; fransk: Forêt amazonienne; hollandsk: Amazoneregenwoud), også kendt på engelsk som Amazonia eller Amazonasjunglen, er en fugtig løvskov, der dækker det meste af Amazonasbassinet i Sydamerika. Dette bassin omfatter 7,000,000 kvadratkilometer (2,700,000 sq mi), hvoraf 5,500,000 kvadratkilometer (2,100,000 sq mi) er dækket af regnskoven.
For spørgsmålet "Hvilket navn bruges også til at beskrive Amazonas regnskoven på engelsk?" får vi svaret:
For spørgsmålet "Hvor mange kvadratkilometer regnskov er dækket i bassinet?" får vi svaret:
Kvantisering af modellen i PyTorch
Dette afsnit giver et hurtigt overblik over modelkvantiseringstrin med PyTorch og Intel-udvidelser.
Kodestykkerne er afledt af et SageMaker-eksempel.
Lad os gennemgå ændringerne i detaljer for funktionen IPEX_quantize i filen quantize.py.
- Importer intel-udvidelser til PyTorch for at hjælpe med kvantisering og optimering og importer lommelygte til array-manipulationer:
- Anvend modelkalibrering i 100 iterationer. I dette tilfælde kalibrerer du modellen med SQuAD-datasættet:
- Forbered prøveinput:
- Konverter modellen til en INT8-model ved hjælp af følgende konfiguration:
- Kør to iterationer af fremadgående pass for at aktivere fusioner:
- Som et sidste trin skal du gemme TorchScript-modellen:
Ryd op
Se i Github repos for trin til at rydde op i de oprettede AWS-ressourcer.
Konklusion
Nye EC2 C6i-instanser i et SageMaker-slutpunkt kan accelerere inferensimplementeringen op til 2.5 gange større med INT8-kvantisering. Kvantificering af modellen i PyTorch er muligt med nogle få API'er fra Intel PyTorch-udvidelser. Det anbefales at kvantisere modellen i C6i-forekomster, så modelnøjagtigheden bevares i slutpunktsimplementering. SageMaker-eksemplerne GitHub repo giver nu en ende-til-ende-implementeringspipeline til kvantisering og hosting af INT8-modeller.
Vi opfordrer dig til at oprette en ny model eller migrere en eksisterende model ved hjælp af INT8-kvantisering ved hjælp af EC2 C6i-instanstypen og se ydeevnegevinsten for dig selv.
Meddelelse og ansvarsfraskrivelser
Ingen licens (udtrykt eller underforstået, ved estoppel eller på anden måde) til nogen intellektuelle ejendomsrettigheder er givet af dette dokument, med den eneste undtagelse, at koden inkluderet i dette dokument er licenseret i henhold til Zero-Clause BSD open source-licens (0BSD)
Tillæg
Nye AWS-instanser i SageMaker med INT8-implementeringsunderstøttelse
Følgende tabel viser SageMaker-forekomster med og uden DL Boost Support.
Forekomstnavn | Xeon Gen kodenavn | INT8 aktiveret? | DL Boost aktiveret? |
ml.c5. xlarge – ml.c5.9xlarge | Skylake/1st | Ja | Ingen |
ml.c5.18xlarge | Skylake/1st | Ja | Ingen |
ml.c6i.1x – 32xlarge | Issø/3rd | Ja | Ja |
For at opsummere, understøtter INT8 aktiveret INT8-datatypen og -beregningen; DL Boost aktiveret understøtter Deep Learning Boost.
Benchmark data
Følgende tabel sammenligner omkostningerne og den relative ydeevne mellem c5- og c6-forekomster.
Latency og gennemløb målt med 10000 Inference-forespørgsler til Sage maker-slutpunkter.
E2E Latency of Inference Endpoint og omkostningsanalyse | |||||
P50(ms) | P90(ms) | Forespørgsler/Sek | $/1 mio. forespørgsler | Relativ $/Ydeevne | |
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 at give 2-4 gange praktiske præstationsforbedringer med mindre end 1 % nøjagtighedstab for de fleste af modellerne. Ovenstående tabel dækker overhead latency (NW og demoapplikation)
Nøjagtighed for BERT-base model
Følgende tabel opsummerer nøjagtigheden for INT8-modellen med SQUaD v1.1-datasættet.
metric | FP32 | INT8 |
Præcis match | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
GitHub repo leveres med scripts til at kontrollere nøjagtigheden af SQuAD-datasættet. Henvise til invoke-INT8.py , invoke-FP32.py scripts til test.
Intel-udvidelse til PyTorch
Intel® Extension for PyTorch* (et open source-projekt hos GitHub) udvider PyTorch med optimeringer for ekstra ydeevneforøgelse på Intel-hardware. De fleste af optimeringerne vil blive inkluderet i lager PyTorch-udgivelser med tiden, og intentionen med udvidelsen er at levere opdaterede funktioner og optimeringer til PyTorch på Intel-hardware. 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 mere detaljeret brugervejledning (funktioner, ydelsesjustering og mere) til Intel® Extension til PyTorch, se Intel® Extension for PyTorch* brugervejledning.
Om forfatterne
Rohit Chowdhary er Sr. Solutions Architect i Strategic Accounts-teamet hos AWS.
Aniruddha Kappagantu er softwareudviklingsingeniør i AI Platforms-teamet hos AWS.
Antony Vance er en AI-arkitekt hos Intel med 19 års erfaring i computervision, machine learning, deep learning, indlejret software, GPU og FPGA.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/accelerate-amazon-sagemaker-inference-with-c6i-intel-based-amazon-ec2-instances/
- :er
- $OP
- 000
- 1
- 100
- 11
- 7
- 8
- 9
- a
- over
- fremskynde
- adgang
- Konto
- Konti
- nøjagtighed
- aktiveringer
- fremskreden
- fordele
- AI
- algoritme
- altid
- Amazon
- Amazon EC2
- Amazon SageMaker
- amerika
- ,
- besvare
- API'er
- Anvendelse
- anvendt
- tilgang
- arkitektur
- ER
- områder
- Array
- artikler
- AS
- At
- til rådighed
- AWS
- båndbredde
- baseret
- BE
- bliver
- være
- benchmark
- mellem
- boost
- bringe
- bygge
- by
- kaldet
- CAN
- kapaciteter
- tilfælde
- vis
- Ændringer
- kontrollere
- Cloud
- kode
- kommunikere
- sammenlignet
- sammenligning
- beregning
- Compute
- computer
- Computer Vision
- computing
- Konfiguration
- Bestående
- forbrug
- Container
- sammenhæng
- sammenhænge
- Tilsvarende
- Koste
- Omkostninger
- dækket
- Dækker
- skabe
- oprettet
- Oprettelse af
- skabelse
- skik
- data
- dyb
- dyb læring
- levere
- demonstreret
- indsætte
- implementering
- implementeringer
- Afledt
- beskrive
- detail
- detaljeret
- detaljer
- udviklere
- Udvikling
- Enheder
- forskellige
- Docker
- dokumentet
- dokumentation
- gør
- Dollar
- drevet
- Hollandsk
- Edge
- Effektiv
- indlejret
- muliggøre
- aktiveret
- vedrører generelt
- tilskynde
- ende til ende
- Endpoint
- ingeniør
- Engelsk
- til sidst
- Hver
- eksempel
- eksempler
- undtagelse
- eksisterende
- forvente
- forventet
- erfaring
- Express
- udvidelse
- udvidelser
- ekstra
- Ansigtet
- Funktionalitet
- få
- Figur
- File (Felt)
- flydende
- flow
- efter
- følger
- Til
- skov
- formular
- format
- Videresend
- FPGA
- Framework
- rammer
- Fransk
- Frekvens
- fra
- funktion
- gevinster
- Gen
- få
- GitHub
- given
- giver
- Go
- GPU
- bevilget
- større
- Gæst
- gæst Indlæg
- vejledning
- Hardware
- Have
- hjælpe
- højt niveau
- højere
- host
- Hosting
- Hvordan
- How To
- Men
- HTML
- http
- HTTPS
- ICE
- Identity
- billede
- gennemføre
- underforstået
- importere
- vigtigt
- Forbedre
- forbedringer
- in
- omfatter
- medtaget
- stigende
- oplysninger
- indgang
- instans
- i stedet
- anvisninger
- integreret
- Intel
- intellektuel
- intellektuel ejendomsret
- Intention
- IT
- iterationer
- jpg
- holde
- Nøgle
- kendt
- sø
- Efternavn
- Latency
- lancere
- læring
- Licens
- Licenseret
- ligesom
- Limited
- Line (linje)
- linux
- Lister
- leder
- off
- maskine
- machine learning
- maker
- mange
- Matrix
- midler
- Hukommelse
- måske
- migrere
- million
- ML
- model
- modeller
- mere
- mest
- MS
- navn
- Behov
- netværk
- neurale netværk
- Ny
- notesbog
- of
- tilbyde
- on
- åbent
- open source
- optimering
- optimeret
- OS
- Ellers
- samlet
- oversigt
- egen
- sti
- ydeevne
- pipeline
- Platforme
- plato
- Platon Data Intelligence
- PlatoData
- Punkt
- Populær
- Portugisisk
- mulig
- Indlæg
- magt
- strøm
- Praktisk
- Precision
- forudsætninger
- forarbejdning
- processorer
- projekt
- ejendom
- Ejendomsrettigheder
- give
- forudsat
- giver
- Skub ud
- skubbet
- Python
- pytorch
- spørgsmål
- Spørgsmål
- Hurtig
- Læsning
- realtid
- anbefales
- reducere
- Reduceret
- reducerer
- Udgivelser
- Repository
- repræsenteret
- repræsenterer
- Krav
- forskning
- Ressourcer
- svar
- resultere
- Resultater
- rettigheder
- roller
- Kør
- kører
- at ofre
- sagemaker
- SageMaker Inference
- Gem
- skalerbar
- scripts
- Sektion
- segment
- tjener
- sæt
- setup
- Shell
- bør
- Vis
- signifikant
- betydeligt
- Simpelt
- Størrelse
- størrelser
- So
- indtil nu
- Software
- softwareudvikling
- løsninger
- Løsninger
- Kilde
- Syd
- Sydamerika
- Spansk
- brugt
- SQ
- firkant
- Trin
- Steps
- bestand
- opbevaring
- Strategisk
- emne
- sådan
- opsummere
- tilført
- support
- Understøtter
- bord
- hold
- tensorflow
- terminal
- vilkår
- prøve
- Test
- at
- deres
- kapacitet
- gange
- til
- værktøjer
- fakkel
- transaktion
- transformers
- typer
- up-to-date
- brug
- Bruger
- sædvanligvis
- vision
- måder
- som
- mens
- Wikipedia
- vilje
- med
- uden
- år
- Du
- Din
- dig selv
- zephyrnet