Aceasta este o postare pentru invitați scrisă împreună cu Antony Vance de la Intel.
Clienții caută mereu modalități de a îmbunătăți performanța și timpii de răspuns ai sarcinilor de lucru de inferență de învățare automată (ML), fără a crește costul pe tranzacție și fără a sacrifica acuratețea rezultatelor. Rularea sarcinilor de lucru ML Amazon SageMaker funcţionare Cloud Elastic de calcul Amazon (Amazon EC2) C6i instanțe cu Intel Implementarea inferenței INT8 poate ajuta la creșterea performanței generale de până la patru ori per dolar cheltuit, menținând în același timp pierderea de precizie a inferenței mai mică de 1% în comparație cu FP32 atunci când este aplicată anumitor sarcini de lucru ML. Când vine vorba de rularea modelelor în dispozitive încorporate în care factorul de formă și dimensiunea modelului sunt importante, cuantizarea poate ajuta.
Cuantizarea este o tehnică de reducere a costurilor de calcul și de memorie ale rulării inferenței prin reprezentarea greutăților și activărilor cu tipuri de date cu precizie redusă, cum ar fi întregul pe 8 biți (INT8) în loc de virgulă mobilă obișnuită de 32 de biți (FP32). În următoarea figură exemplu, arătăm performanța inferenței INT8 în C6i pentru un model bazat pe BERT.
Baza BERT a fost ajustată cu SQuAD v1.1, PyTorch (v1.11) fiind cadrul ML utilizat cu Intel® Extension pentru PyTorch. Pentru comparație a fost utilizată o dimensiune a lotului de 1. Dimensiunile mai mari ale loturilor vor oferi costuri diferite pentru 1 milion de inferențe.
În această postare, vă arătăm cum să construiți și să implementați inferența INT8 cu dvs recipient de prelucrare propriu pentru PyTorch. Folosim extensii Intel pentru PyTorch pentru un flux de lucru eficient de implementare INT8.
Privire de ansamblu asupra tehnologiei
Instanțele EC2 C6i sunt alimentate de procesoare scalabile Intel Xeon de a treia generație (numite și Ice Lake) cu o frecvență turbo all-core de 3.5 GHz.
În contextul învățării profunde, formatul numeric predominant folosit pentru cercetare și implementare a fost până acum 32 de biți în virgulă mobilă sau FP32. Cu toate acestea, nevoia de lățime de bandă redusă și cerințe de calcul ale modelelor de învățare profundă a determinat cercetarea să utilizeze formate numerice cu precizie mai mică. S-a demonstrat că ponderile și activările pot fi reprezentate folosind numere întregi de 8 biți (sau INT8) fără a suporta pierderi semnificative de precizie.
Instanțele EC2 C6i oferă multe capacități noi care au ca rezultat îmbunătățiri ale performanței pentru sarcinile de lucru AI și ML. Instanțele C6i oferă avantaje de performanță în implementările modelelor FP32 și INT8. Inferența FP32 este activată cu îmbunătățirile AVX-512, iar inferența INT8 este activată de instrucțiunile AVX-512 VNNI.
C6i este acum disponibil pe punctele finale SageMaker, iar dezvoltatorii ar trebui să se aștepte să ofere îmbunătățiri de peste două ori preț-performanță pentru inferența INT8 față de inferența FP32 și o îmbunătățire de până la patru ori a performanței în comparație cu inferența FP5 a instanței C32. Consultați anexă pentru detalii și date de referință.
Implementarea învățării profunde la margine pentru inferențe în timp real este cheia pentru multe domenii de aplicație. Reduce semnificativ costul comunicării cu cloud-ul în ceea ce privește lățimea de bandă a rețelei, latența rețelei și consumul de energie. Cu toate acestea, dispozitivele edge au memorie, resurse de calcul și putere limitate. Aceasta înseamnă că o rețea de învățare profundă trebuie optimizată pentru implementarea încorporată. Cuantizarea INT8 a devenit o abordare populară pentru astfel de optimizări pentru cadrele ML precum TensorFlow și PyTorch. SageMaker vă oferă o abordare de tip „Aducere propriul container” (BYOC) și instrumente integrate, astfel încât să puteți rula cuantizarea.
Pentru mai multe informații, consultați Precizie numerică mai mică Deep Learning Inferență și antrenament.
Prezentare generală a soluțiilor
Pașii pentru implementarea soluției sunt după cum urmează:
- Furnizați o instanță EC2 C6i pentru a cuantifica și a crea modelul ML.
- Utilizați scripturile Python furnizate pentru cuantizare.
- Creați o imagine Docker pentru a implementa modelul în SageMaker folosind abordarea BYOC.
- Utilizați un Serviciul Amazon de stocare simplă (Amazon S3) pentru a copia modelul și codul pentru acces la SageMaker.
- Utilizare Registrul Amazon de containere elastice (Amazon ECR) pentru a găzdui imaginea Docker.
- Folosește Interfața liniei de comandă AWS (AWS CLI) pentru a crea un punct final de inferență în SageMaker.
- Rulați scripturile de testare Python furnizate pentru a invoca punctul final SageMaker pentru ambele versiuni INT8 și FP32.
Această configurație de implementare a inferenței folosește un model de bază BERT din depozitul de transformatoare Hugging Face (csarron/bert-base-uncased-squad-v1).
Cerințe preliminare
Următoarele sunt condiții preliminare pentru crearea configurației de implementare:
- Un terminal shell Linux cu AWS CLI instalat
- Un cont AWS cu acces la crearea instanței EC2 (tipul instanței C6i)
- Acces SageMaker pentru a implementa un model SageMaker, configurație punct final, punct final
- Gestionarea identității și accesului AWS (IAM) pentru a configura un rol și o politică IAM
- Acces la Amazon ECR
- Acces SageMaker pentru a crea un blocnotes cu instrucțiuni pentru a lansa un punct final
Generați și implementați un model INT8 cuantificat pe SageMaker
Deschideți o instanță EC2 pentru a vă crea modelul cuantificat și împingeți artefactele modelului în Amazon S3. Pentru implementarea punctului final, creați un container personalizat cu PyTorch și Intel® Extension pentru PyTorch pentru a implementa modelul optimizat INT8. Containerul este introdus în Amazon ECR și este creat un punct final bazat pe C6i pentru a servi modelele FP32 și INT8.
Următoarea diagramă ilustrează fluxul de nivel înalt.
Pentru a accesa codul și documentația, consultați GitHub repo.
Exemplu de caz de utilizare
Setul de date Stanford Question Answering Dataset (SQuAD) este un set de date de înțelegere a lecturii format din întrebări puse de lucrătorii în mulțime pe un set de articole Wikipedia, unde răspunsul la fiecare întrebare este un segment de text sau deschidere, din fragmentul de lectură corespunzător sau întrebarea ar putea fi fără răspuns.
Următorul exemplu este un algoritm de răspuns la întrebări folosind un model bazat pe BERT. Având în vedere un document ca intrare, modelul va răspunde la întrebări simple bazate pe învățarea și contextele din documentul de intrare.
Următorul este un exemplu de document de intrare:
Pădurea tropicală amazoniană (portugheză: Floresta Amazônica sau Amazônia; spaniolă: Selva Amazónica, Amazonía sau, de obicei, Amazonia; franceză: Forêt amazonienne; olandeză: Amazoneregenwoud), cunoscută și în engleză sub numele de Amazonia sau jungla amazoniană, este o pădure umedă cu frunze late care acoperă majoritatea din bazinul Amazonului din America de Sud. Acest bazin cuprinde 7,000,000 de kilometri pătrați (2,700,000 sq mi), din care 5,500,000 kilometri pătrați (2,100,000 sq mi) sunt acoperiți de pădurea tropicală.
Pentru întrebarea „Care nume este folosit și pentru a descrie pădurea tropicală amazoniană în engleză?” primim raspunsul:
Pentru întrebarea „Câți kilometri pătrați de pădure tropicală sunt acoperiți în bazin?” primim raspunsul:
Cuantificarea modelului în PyTorch
Această secțiune oferă o imagine de ansamblu rapidă a pașilor de cuantificare a modelului cu extensiile PyTorch și Intel.
Fragmentele de cod sunt derivate dintr-un exemplu SageMaker.
Să trecem peste modificările în detaliu pentru funcția IPEX_quantize din fișierul quantize.py.
- Importați extensii Intel pentru PyTorch pentru a ajuta la cuantificare și optimizare și importați torță pentru manipulări de matrice:
- Aplicați calibrarea modelului pentru 100 de iterații. În acest caz, calibrați modelul cu setul de date SQuAD:
- Pregătiți probe de intrare:
- Convertiți modelul într-un model INT8 utilizând următoarea configurație:
- Rulați două iterații de trecere înainte pentru a activa fuziunile:
- Ca ultim pas, salvați modelul TorchScript:
A curăța
Consultați Repo Github pentru pașii de curățare a resurselor AWS create.
Concluzie
Noile instanțe EC2 C6i într-un punct final SageMaker pot accelera implementarea inferenței de până la 2.5 ori mai mare cu cuantizarea INT8. Cuantificarea modelului în PyTorch este posibilă cu câteva API-uri din extensiile Intel PyTorch. Se recomandă cuantificarea modelului în instanțe C6i, astfel încât precizia modelului să fie menținută în implementarea punctului final. Exemplele SageMaker GitHub repo oferă acum un exemplu de implementare de la capăt la capăt pentru cuantificarea și găzduirea modelelor INT8.
Vă încurajăm să creați un nou model sau să migrați un model existent utilizând cuantizarea INT8 folosind tipul de instanță EC2 C6i și să vedeți singur câștigurile de performanță.
Notificare și declinări de răspundere
Nicio licență (expressă sau implicită, prin excludere sau în alt mod) pentru niciun drept de proprietate intelectuală nu este acordată de acest document, cu singura excepție că codul inclus în acest document este licențiat sub rezerva Licență open source BSD cu clauze zero (0BSD)
Apendice
Noi instanțe AWS în SageMaker cu suport pentru implementare INT8
Următorul tabel listează instanțe SageMaker cu și fără DL Boost sprijini.
Nume instanță | Nume de cod Xeon Gen | INT8 activat? | DL Boost activat? |
ml.c5. xlarge – ml.c5.9xlarge | Skylake/1st | Da | Nu |
ml.c5.18xmari | Skylake/1st | Da | Nu |
ml.c6i.1x – 32xmare | Lacul de gheață/3rd | Da | Da |
Pentru a rezuma, INT8 activat acceptă tipul de date și calculul INT8; DL Boost activat acceptă Deep Learning Boost.
Date de referință
Următorul tabel compară costul și performanța relativă între instanțele c5 și c6.
Latența și debitul măsurate cu 10000 de interogări de inferență către punctele finale Sage maker.
E2E Latența finală a inferenței și analiza costurilor | |||||
P50(ms) | P90(ms) | Interogări/Sec | Interogări de 1 milion USD | Relativ $/Performanță | |
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 |
Se așteaptă ca modelele INT8 să ofere îmbunătățiri practice de performanță de 2-4 ori cu o pierdere de precizie mai mică de 1% pentru majoritatea modelelor. Tabelul de mai sus acoperă latența generală (NW și aplicația demo)
Precizie pentru modelul de bază BERT
Următorul tabel rezumă acuratețea modelului INT8 cu setul de date SQUaD v1.1.
metric | FP32 | INT8 |
Potrivire perfecta | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
GitHub repo vine cu scripturile pentru a verifica acuratețea setului de date SQuAD. A se referi la invoke-INT8.py și invoke-FP32.py scripturi pentru testare.
Extensie Intel pentru PyTorch
Intel® Extension for PyTorch* (un proiect open-source la GitHub) extinde PyTorch cu optimizări pentru creșterea suplimentară a performanței hardware-ului Intel. Cele mai multe dintre optimizări vor fi incluse în cele din urmă în versiunile stoc PyTorch, iar intenția extensiei este de a oferi funcții și optimizări actualizate pentru PyTorch pe hardware Intel. Exemplele includ AVX-512 Vector Neural Network Instructions (AVX512 VNNI) și Intel® Advanced Matrix Extensions (Intel® AMX).
Următoarea figură ilustrează arhitectura Intel Extension for PyTorch.
Pentru îndrumări mai detaliate ale utilizatorului (funcții, reglarea performanței și multe altele) pentru Intel® Extension for PyTorch, consultați Ghidul utilizatorului Intel® Extension for PyTorch*.
Despre Autori
Rohit Chowdhary este arhitect senior de soluții în echipa de conturi strategice de la AWS.
Aniruddha Kappagantu este inginer de dezvoltare software în echipa Platformelor AI de la AWS.
Antony Vance este arhitect AI la Intel cu 19 ani de experiență în viziune computerizată, învățare automată, învățare profundă, software încorporat, GPU și FPGA.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/accelerate-amazon-sagemaker-inference-with-c6i-intel-based-amazon-ec2-instances/
- :este
- $UP
- 000
- 1
- 100
- 11
- 7
- 8
- 9
- a
- mai sus
- accelera
- acces
- Cont
- Conturi
- precizie
- activări
- avansat
- Avantajele
- AI
- Algoritmul
- mereu
- Amazon
- Amazon EC2
- Amazon SageMaker
- America
- și
- răspunde
- API-uri
- aplicație
- aplicat
- abordare
- arhitectură
- SUNT
- domenii
- Mulțime
- bunuri
- AS
- At
- disponibil
- AWS
- Lățime de bandă
- bazat
- BE
- deveni
- fiind
- Benchmark
- între
- a stimula
- aduce
- construi
- by
- denumit
- CAN
- capacități
- caz
- sigur
- Modificări
- verifica
- Cloud
- cod
- comunicarea
- comparație
- comparație
- calcul
- Calcula
- calculator
- Computer Vision
- tehnica de calcul
- Configuraţie
- Constând
- consum
- Recipient
- context
- contexte
- Corespunzător
- A costat
- Cheltuieli
- acoperit
- Covers
- crea
- a creat
- Crearea
- creaţie
- personalizat
- de date
- adânc
- învățare profundă
- livra
- demonstrat
- implementa
- desfășurarea
- implementări
- Derivat
- descrie
- detaliu
- detaliat
- detalii
- Dezvoltatorii
- Dezvoltare
- Dispozitive
- diferit
- Docher
- document
- documentaţie
- face
- Dolar
- condus
- Olandeză
- Margine
- Eficace
- încorporat
- permite
- activat
- , acoperă
- încuraja
- un capăt la altul
- Punct final
- inginer
- Engleză
- în cele din urmă
- Fiecare
- exemplu
- exemple
- excepție
- existent
- aștepta
- de aşteptat
- experienţă
- expres
- extensie
- extensii
- suplimentar
- Față
- DESCRIERE
- puțini
- Figura
- Fișier
- plutitor
- debit
- următor
- urmează
- Pentru
- pădure
- formă
- format
- Înainte
- fpga
- Cadru
- cadre
- Franceză
- Frecvență
- din
- funcţie
- câștig
- Gen
- obține
- GitHub
- dat
- oferă
- Go
- GPU
- acordate
- mai mare
- Oaspete
- Vizitator Mesaj
- îndrumare
- Piese metalice
- Avea
- ajutor
- la nivel înalt
- superior
- gazdă
- găzduire
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- ICE
- Identitate
- imagine
- punerea în aplicare a
- implicite
- import
- important
- îmbunătăţi
- îmbunătățire
- îmbunătățiri
- in
- include
- inclus
- crescând
- informații
- intrare
- instanță
- in schimb
- instrucțiuni
- integrate
- Intel
- intelectual
- de proprietate intelectuală
- intenţie
- IT
- iterații
- jpg
- păstrare
- Cheie
- cunoscut
- lac
- Nume
- Latență
- lansa
- învăţare
- Licență
- Autorizat
- ca
- Limitat
- Linie
- linux
- liste
- cautati
- de pe
- maşină
- masina de învățare
- producător
- multe
- Matrice
- mijloace
- Memorie
- ar putea
- migra
- milion
- ML
- model
- Modele
- mai mult
- cele mai multe
- MS
- nume
- Nevoie
- reţea
- rețele neuronale
- Nou
- caiet
- of
- oferi
- on
- deschide
- open-source
- optimizare
- optimizate
- OS
- in caz contrar
- global
- Prezentare generală
- propriu
- cale
- performanță
- conducte
- Platforme
- Plato
- Informații despre date Platon
- PlatoData
- Punct
- Popular
- Portugheză
- posibil
- Post
- putere
- alimentat
- Practic
- Precizie
- premise
- prelucrare
- procesoare
- proiect
- proprietate
- Drepturi de proprietate
- furniza
- prevăzut
- furnizează
- Împinge
- împins
- Piton
- pirtorh
- întrebare
- Întrebări
- Rapid
- Citind
- în timp real
- recomandat
- reduce
- Redus
- reduce
- Lansări
- depozit
- reprezentate
- reprezentând
- Cerinţe
- cercetare
- Resurse
- răspuns
- rezultat
- REZULTATE
- Drepturile
- Rol
- Alerga
- funcţionare
- sacrificare
- sagemaker
- SageMaker Inference
- Economisiți
- scalabil
- script-uri
- Secțiune
- segment
- servi
- set
- configurarea
- Coajă
- să
- Arăta
- semnificativ
- semnificativ
- simplu
- Mărimea
- dimensiuni
- So
- până acum
- Software
- de dezvoltare de software
- soluţie
- soluţii
- Sursă
- Sud
- America de Sud
- Spaniolă
- uzat
- SQ
- pătrat
- Pas
- paşi
- stoc
- depozitare
- Strategic
- subiect
- astfel de
- rezuma
- furnizat
- a sustine
- Sprijină
- tabel
- echipă
- tensorflow
- Terminal
- termeni
- test
- Testarea
- acea
- lor
- debit
- ori
- la
- Unelte
- lanternă
- tranzacție
- transformatoare
- Tipuri
- up-to-data
- utilizare
- Utilizator
- obișnuit
- viziune
- modalități de
- care
- în timp ce
- Wikipedia
- voi
- cu
- fără
- ani
- Tu
- Ta
- te
- zephyrnet