To je gostujoča objava, ki jo je napisal skupaj z Antonyjem Vanceom iz Intela.
Stranke vedno iščejo načine za izboljšanje zmogljivosti in odzivnih časov svojih delovnih obremenitev sklepanja strojnega učenja (ML) brez povečanja stroškov na transakcijo in brez žrtvovanja natančnosti rezultatov. Zagon delovnih obremenitev ML Amazon SageMaker tek Amazonski elastični računalniški oblak (Amazon EC2) c6i primeri z Intelove Uvedba sklepanja INT8 lahko pomaga povečati splošno zmogljivost do štirikrat na porabljen dolar, hkrati pa ohranja izgubo v natančnosti sklepanja manj kot 1 % v primerjavi s FP32, če se uporablja za določene delovne obremenitve ML. Ko gre za izvajanje modelov v vgrajenih napravah, kjer sta pomembna oblika in velikost modela, lahko kvantizacija pomaga.
Kvantizacija je tehnika za zmanjšanje računskih in pomnilniških stroškov izvajanja sklepanja s predstavljanjem uteži in aktivacij s tipi podatkov z nizko natančnostjo, kot je 8-bitno celo število (INT8) namesto običajne 32-bitne plavajoče vejice (FP32). Na naslednji sliki primera prikazujemo zmogljivost sklepanja INT8 v C6i za osnovni model BERT.
Osnova BERT je bila natančno nastavljena s SQuAD v1.1, pri čemer je PyTorch (v1.11) ogrodje ML, ki se uporablja z razširitvijo Intel® za PyTorch. Za primerjavo je bila uporabljena serija velikosti 1. Večje velikosti serije bodo zagotovile drugačne stroške na 1 milijon sklepanja.
V tej objavi vam pokažemo, kako zgraditi in uvesti sklepanje INT8 z vašim lastno predelovalno posodo za PyTorch. Uporabljamo razširitve Intel za PyTorch za učinkovit delovni tok uvajanja INT8.
Pregled tehnologije
Primerki EC2 C6i poganjajo procesorji Intel Xeon Scalable tretje generacije (imenovani tudi Ice Lake) s turbo frekvenco vseh jeder 3.5 GHz.
V kontekstu poglobljenega učenja je bila prevladujoča numerična oblika, uporabljena za raziskave in uvajanje, do zdaj 32-bitna plavajoča vejica ali FP32. Vendar pa je potreba po zmanjšani pasovni širini in računalniških zahtevah modelov globokega učenja spodbudila raziskave k uporabi numeričnih formatov nižje natančnosti. Dokazano je bilo, da je mogoče uteži in aktivacije predstaviti z uporabo 8-bitnih celih števil (ali INT8), ne da bi pri tem prišlo do znatne izgube v natančnosti.
Instance EC2 C6i ponujajo veliko novih zmogljivosti, ki imajo za posledico izboljšave zmogljivosti za delovne obremenitve AI in ML. Primerki C6i zagotavljajo prednosti zmogljivosti pri uvedbah modelov FP32 in INT8. Sklepanje FP32 je omogočeno z izboljšavami AVX-512, sklepanje INT8 pa je omogočeno z navodili AVX-512 VNNI.
C6i je zdaj na voljo na končnih točkah SageMaker in razvijalci bi morali pričakovati, da bo zagotovil več kot dvakratno izboljšanje cene in zmogljivosti za sklepanje INT8 v primerjavi s sklepanjem FP32 in do štirikratno izboljšanje zmogljivosti v primerjavi s sklepanjem primerka C5 FP32. Glejte dodatek za podrobnosti in primerjalne podatke.
Uvajanje globokega učenja na robu za sklepanje v realnem času je ključnega pomena za številna področja uporabe. Občutno zmanjša stroške komuniciranja z oblakom v smislu pasovne širine omrežja, zakasnitve omrežja in porabe energije. Vendar imajo robne naprave omejen pomnilnik, računalniške vire in moč. To pomeni, da mora biti omrežje globokega učenja optimizirano za vgrajeno uvajanje. Kvantizacija INT8 je postala priljubljen pristop za takšne optimizacije za ogrodja ML, kot sta TensorFlow in PyTorch. SageMaker vam ponuja pristop prinašanja lastnega vsebnika (BYOC) in integrirana orodja, tako da lahko izvajate kvantizacijo.
Za več informacij glejte Sklepanje in usposabljanje za globoko učenje z manjšo numerično natančnostjo.
Pregled rešitev
Koraki za izvedbo rešitve so naslednji:
- Zagotavljanje primerka EC2 C6i za kvantizacijo in ustvarjanje modela ML.
- Za kvantizacijo uporabite priložene skripte Python.
- Ustvarite sliko Docker za razmestitev modela v SageMaker z uporabo pristopa BYOC.
- Uporabite Preprosta storitev shranjevanja Amazon (Amazon S3) vedro za kopiranje modela in kode za dostop do SageMaker.
- Uporaba Registar elastičnih zabojnikov Amazon (Amazon ECR) za gostovanje slike Docker.
- Uporaba Vmesnik ukazne vrstice AWS (AWS CLI), da ustvarite končno točko sklepanja v SageMakerju.
- Zaženite priložene testne skripte Python, da prikličete končno točko SageMaker za različici INT8 in FP32.
Ta nastavitev uvajanja sklepanja uporablja osnovni model BERT iz repozitorija transformatorjev Hugging Face (csarron/bert-base-uncased-squad-v1).
Predpogoji
Sledi predpogoj za ustvarjanje nastavitev uvajanja:
- Terminal lupine Linux z nameščenim AWS CLI
- Račun AWS z dostopom do ustvarjanja instance EC2 (vrsta instance C6i)
- Dostop SageMaker za uvajanje modela SageMaker, konfiguracija končne točke, končna točka
- AWS upravljanje identitete in dostopa (IAM) dostop za konfiguriranje vloge in pravilnika IAM
- Dostop do Amazon ECR
- Dostop SageMaker za ustvarjanje zvezka z navodili za zagon končne točke
Ustvarite in razmestite kvantizirani model INT8 na SageMaker
Odprite instanco EC2 za ustvarjanje svojega kvantiziranega modela in potisnite artefakte modela v Amazon S3. Za uvedbo končne točke ustvarite vsebnik po meri s PyTorch in Intel® Extension za PyTorch za uvedbo optimiziranega modela INT8. Vsebnik se potisne v Amazon ECR in ustvarjena je končna točka, ki temelji na C6i, da služi modeloma FP32 in INT8.
Naslednji diagram prikazuje tok na visoki ravni.
Za dostop do kode in dokumentacije glejte GitHub repo.
Primer uporabe
Podatkovni niz Stanford Question Answering Dataset (SQuAD) je nabor podatkov o bralnem razumevanju, ki ga sestavljajo vprašanja, ki jih postavljajo množični delavci na nizu člankov v Wikipediji, kjer je odgovor na vsako vprašanje del besedila ali span, iz ustreznega odlomka za branje, sicer na vprašanje morda ni mogoče odgovoriti.
Naslednji primer je algoritem za odgovarjanje na vprašanja z uporabo osnovnega modela BERT. Če je dokument podan kot vhod, bo model odgovoril na preprosta vprašanja na podlagi učenja in kontekstov iz vhodnega dokumenta.
Sledi primer vhodnega dokumenta:
Amazonski deževni gozd (portugalsko: Floresta Amazônica ali Amazônia; špansko: Selva Amazónica, Amazonía ali običajno Amazonia; francosko: Forêt amazonienne; nizozemsko: Amazoneregenwoud), v angleščini znan tudi kot Amazonia ali Amazonska džungla, je vlažen širokolistni gozd, ki pokriva večino amazonskega bazena Južne Amerike. To porečje obsega 7,000,000 kvadratnih kilometrov (2,700,000 kvadratnih milj), od katerih 5,500,000 kvadratnih kilometrov (2,100,000 kvadratnih milj) pokriva deževni gozd.
Za vprašanje "Katero ime se uporablja tudi za opis amazonskega pragozda v angleščini?" dobimo odgovor:
Za vprašanje "Koliko kvadratnih kilometrov deževnega gozda pokriva porečje?" dobimo odgovor:
Kvantiziranje modela v PyTorchu
Ta razdelek ponuja hiter pregled korakov kvantizacije modela z razširitvami PyTorch in Intel.
Delčki kode so izpeljani iz primera SageMaker.
Oglejmo si podrobnosti sprememb za funkcijo IPEX_quantize v datoteki quantize.py.
- Uvozite razširitve Intel za PyTorch za pomoč pri kvantizaciji in optimizaciji ter uvozite torč za manipulacije nizov:
- Uporabite kalibracijo modela za 100 iteracij. V tem primeru umerjate model z naborom podatkov SQuAD:
- Pripravite vzorčne vnose:
- Pretvorite model v model INT8 z naslednjo konfiguracijo:
- Zaženite dve ponovitvi prehoda naprej, da omogočite fuzije:
- Kot zadnji korak shranite model TorchScript:
Čiščenje
Glejte Github repo za korake za čiščenje ustvarjenih virov AWS.
zaključek
Novi primerki EC2 C6i v končni točki SageMaker lahko s kvantizacijo INT2.5 pospešijo uvajanje sklepanja do 8-krat. Kvantiziranje modela v PyTorchu je možno z nekaj API-ji iz razširitev Intel PyTorch. Priporočljivo je kvantizirati model v primerkih C6i, tako da se ohrani natančnost modela pri uvajanju končne točke. Primeri SageMaker GitHub repo zdaj ponuja cevovod primerov uvajanja od konca do konca za kvantiziranje in gostovanje modelov INT8.
Priporočamo vam, da ustvarite nov model ali preselite obstoječi model z uporabo kvantizacije INT8 z uporabo vrste primerka EC2 C6i in si sami ogledate izboljšanje zmogljivosti.
Obvestilo in zavrnitev odgovornosti
Ta dokument ne podeljuje nobene licence (izrecne ali implicitne, z ustavitvijo ali kako drugače) za kakršne koli pravice intelektualne lastnine, z edino izjemo, da je koda, vključena v ta dokument, licencirana v skladu z Odprtokodna licenca BSD z ničelno klavzulo (0BSD)
Dodatek
Novi primerki AWS v SageMakerju s podporo za uvajanje INT8
Naslednja tabela navaja primerke SageMaker z in brez DL Boost Podpreti.
Ime primerka | Kodno ime Xeon Gen | INT8 omogočen? | DL Boost omogočen? |
ml.c5. xvelika – ml.c5.9xvelika | Skylake/1st | Da | Ne |
ml.c5.18 večje | Skylake/1st | Da | Ne |
ml.c6i.1x – 32xvelik | Ledeno jezero/3rd | Da | Da |
Če povzamemo, omogočen INT8 podpira podatkovni tip in izračun INT8; Omogočen DL Boost podpira Deep Learning Boost.
Primerjalni podatki
Naslednja tabela primerja stroške in relativno zmogljivost med primerki c5 in c6.
Zakasnitev in prepustnost, izmerjena s 10000 poizvedbami Inference do končnih točk izdelovalca Sage.
Zakasnitev E2E končne točke sklepanja in analiza stroškov | |||||
P50 (ms) | P90 (ms) | Poizvedbe/Sek | $/1 milijon poizvedb | Relativni $/zmogljivost | |
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.2xVelika-INT8 | 35.7 | 48.9 | 25.56 | $4.5 | 2.3x |
Pričakuje se, da bodo modeli INT8 zagotovili 2–4-kratne praktične izboljšave zmogljivosti z manj kot 1-odstotno izgubo natančnosti za večino modelov. Zgornja tabela pokriva zakasnitev nad glavo (NW in demo aplikacija)
Natančnost za osnovni model BERT
Naslednja tabela povzema natančnost za model INT8 z naborom podatkov SQUaD v1.1.
Metric | FP32 | INT8 |
Natančno tekmo | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
O GitHub repo prihaja s skripti za preverjanje točnosti nabora podatkov SQuAD. Nanašati se na invoke-INT8.py in invoke-FP32.py skripte za testiranje.
Razširitev Intel za PyTorch
Razširitev Intel® za PyTorch* (odprtokodni projekt na GitHubu) razširja PyTorch z optimizacijami za dodatno povečanje zmogljivosti strojne opreme Intel. Večina optimizacij bo sčasoma vključena v izdaje zalog PyTorch, namen razširitve pa je zagotoviti posodobljene funkcije in optimizacije za PyTorch na strojni opremi Intel. Primeri vključujejo navodila AVX-512 Vector Neural Network Instructions (AVX512 VNNI) in Intel® Advanced Matrix Extensions (Intel® AMX).
Naslednja slika prikazuje Intelovo razširitev za arhitekturo PyTorch.
Za podrobnejše uporabniške napotke (funkcije, nastavitev zmogljivosti in drugo) za razširitev Intel® za PyTorch glejte Navodila za uporabo razširitve Intel® za PyTorch*.
O avtorjih
Rohit Chowdhary je višji arhitekt rešitev v skupini za strateške račune pri AWS.
Aniruddha Kappagantu je inženir za razvoj programske opreme v ekipi za platforme AI pri AWS.
Antony Vance je arhitekt umetne inteligence pri Intelu z 19-letnimi izkušnjami na področju računalniškega vida, strojnega učenja, globokega učenja, vgrajene programske opreme, GPU in FPGA.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- Platoblockchain. Web3 Metaverse Intelligence. Razširjeno znanje. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/machine-learning/accelerate-amazon-sagemaker-inference-with-c6i-intel-based-amazon-ec2-instances/
- : je
- $GOR
- 000
- 1
- 100
- 11
- 7
- 8
- 9
- a
- nad
- pospeši
- dostop
- Račun
- računi
- natančnost
- aktivacije
- napredno
- Prednosti
- AI
- algoritem
- vedno
- Amazon
- Amazon EC2
- Amazon SageMaker
- Amerika
- in
- odgovor
- API-ji
- uporaba
- uporabna
- pristop
- Arhitektura
- SE
- območja
- Array
- članki
- AS
- At
- Na voljo
- AWS
- pasovna širina
- temeljijo
- BE
- postanejo
- počutje
- merilo
- med
- povečanje
- prinašajo
- izgradnjo
- by
- se imenuje
- CAN
- Zmogljivosti
- primeru
- nekatere
- Spremembe
- preveriti
- Cloud
- Koda
- komuniciranje
- v primerjavi z letom
- Primerjava
- računanje
- Izračunajte
- računalnik
- Računalniška vizija
- računalništvo
- konfiguracija
- Sestavljeno
- poraba
- Posoda
- ozadje
- kontekstih
- Ustrezno
- strošek
- stroški
- zajeti
- Ovitki
- ustvarjajo
- ustvaril
- Ustvarjanje
- Oblikovanje
- po meri
- datum
- globoko
- globoko učenje
- poda
- Dokazano
- razporedi
- uvajanje
- razmestitve
- Izpeljano
- opisati
- Podatki
- podrobno
- Podrobnosti
- Razvijalci
- Razvoj
- naprave
- drugačen
- Lučki delavec
- dokument
- Dokumentacija
- tem
- Dollar
- vozi
- Nizozemski
- Edge
- Učinkovito
- vgrajeni
- omogočajo
- omogočena
- zajema
- spodbujanje
- konec koncev
- Končna točka
- inženir
- Angleščina
- sčasoma
- Tudi vsak
- Primer
- Primeri
- izjema
- obstoječih
- pričakovati
- Pričakuje
- izkušnje
- express
- razširitev
- razširitve
- dodatna
- Obraz
- Lastnosti
- Nekaj
- Slika
- file
- plavajoči
- Pretok
- po
- sledi
- za
- gozd
- obrazec
- format
- Naprej
- FPGA
- Okvirni
- okviri
- francosko
- frekvenca
- iz
- funkcija
- zaslužek
- Gen
- dobili
- GitHub
- dana
- daje
- Go
- GPU
- odobreno
- več
- Gost
- Gost Prispevek
- Navodila
- strojna oprema
- Imajo
- pomoč
- na visoki ravni
- več
- gostitelj
- gostovanje
- Kako
- Kako
- Vendar
- HTML
- http
- HTTPS
- ICE
- identiteta
- slika
- izvajati
- implicirano
- uvoz
- Pomembno
- izboljšanje
- Izboljšanje
- Izboljšave
- in
- vključujejo
- vključeno
- narašča
- Podatki
- vhod
- primer
- Namesto
- Navodila
- integrirana
- Intel
- intelektualne
- intelektualne lastnine
- Namen
- IT
- ponovitve
- jpg
- vzdrževanje
- Ključne
- znano
- Jezero
- Zadnja
- Latenca
- kosilo
- učenje
- Licenca
- Licencirano
- kot
- Limited
- vrstica
- linux
- seznami
- si
- off
- stroj
- strojno učenje
- avtomat
- več
- Matrix
- pomeni
- Spomin
- morda
- selitev
- milijonov
- ML
- Model
- modeli
- več
- Najbolj
- MS
- Ime
- Nimate
- mreža
- nevronska mreža
- Novo
- prenosnik
- of
- ponudba
- on
- odprite
- open source
- optimizacija
- optimizirana
- OS
- drugače
- Splošni
- pregled
- lastne
- pot
- performance
- plinovod
- Platforme
- platon
- Platonova podatkovna inteligenca
- PlatoData
- Točka
- Popular
- portugalski
- mogoče
- Prispevek
- moč
- poganja
- Praktično
- Precision
- predpogoji
- obravnavati
- procesorji
- Projekt
- nepremičnine
- Premoženjske pravice
- zagotavljajo
- če
- zagotavlja
- Push
- potisnilo
- Python
- pitorha
- vprašanje
- vprašanja
- Hitri
- reading
- v realnem času
- priporočeno
- zmanjša
- Zmanjšana
- zmanjšuje
- Izpusti
- Skladišče
- zastopan
- predstavlja
- Zahteve
- Raziskave
- viri
- Odgovor
- povzroči
- Rezultati
- pravice
- vloga
- Run
- tek
- žrtvovanje
- sagemaker
- Sklep SageMaker
- Shrani
- razširljive
- skripte
- Oddelek
- Segment
- služijo
- nastavite
- nastavitev
- Shell
- shouldnt
- Prikaži
- pomemben
- bistveno
- Enostavno
- Velikosti
- velikosti
- So
- doslej
- Software
- Razvoj programske opreme
- Rešitev
- rešitve
- vir
- South
- Južna Amerika
- španski
- porabljen
- SQ
- kvadrat
- Korak
- Koraki
- zaloge
- shranjevanje
- Strateško
- predmet
- taka
- Povzamemo
- dobavljeno
- podpora
- Podpira
- miza
- skupina
- tensorflo
- terminal
- Pogoji
- Test
- Testiranje
- da
- O
- njihove
- pretočnost
- krat
- do
- orodja
- baklo
- transakcija
- transformatorji
- Vrste
- up-to-date
- uporaba
- uporabnik
- navadno
- Vizija
- načini
- ki
- medtem
- Wikipedia
- bo
- z
- brez
- let
- Vi
- Vaša rutina za
- sami
- zefirnet