Questo è un guest post scritto in collaborazione con Antony Vance di Intel.
I clienti sono sempre alla ricerca di modi per migliorare le prestazioni e i tempi di risposta dei loro carichi di lavoro di inferenza di machine learning (ML) senza aumentare il costo per transazione e senza sacrificare l'accuratezza dei risultati. Esecuzione di carichi di lavoro ML su Amazon Sage Maker running Cloud di calcolo elastico di Amazon (Amazon EC2) C6i istanze con Intel L'implementazione dell'inferenza INT8 può aiutare a migliorare le prestazioni complessive fino a quattro volte per dollaro speso, mantenendo la perdita di precisione dell'inferenza inferiore all'1% rispetto a FP32 se applicata a determinati carichi di lavoro ML. Quando si tratta di eseguire i modelli in dispositivi integrati in cui il fattore di forma e le dimensioni del modello sono importanti, la quantizzazione può essere d'aiuto.
La quantizzazione è una tecnica per ridurre i costi computazionali e di memoria dell'inferenza in esecuzione rappresentando i pesi e le attivazioni con tipi di dati a bassa precisione come numeri interi a 8 bit (INT8) invece del solito virgola mobile a 32 bit (FP32). Nella figura di esempio seguente, mostriamo le prestazioni di inferenza INT8 in C6i per un modello basato su BERT.
La base BERT è stata messa a punto con SQuAD v1.1, con PyTorch (v1.11) come framework ML utilizzato con l'estensione Intel® per PyTorch. Per il confronto è stata utilizzata una dimensione batch pari a 1. Dimensioni batch più elevate forniranno un costo diverso per 1 milione di inferenze.
In questo post, ti mostriamo come creare e distribuire l'inferenza INT8 con il tuo proprio contenitore di lavorazione per PyTorch. Utilizziamo le estensioni Intel per PyTorch per un flusso di lavoro di distribuzione INT8 efficace.
Panoramica della tecnologia
Istanze EC2 C6i sono alimentati da processori scalabili Intel Xeon di terza generazione (chiamati anche Ice Lake) con una frequenza turbo all-core di 3.5 GHz.
Nel contesto del deep learning, il formato numerico predominante utilizzato per la ricerca e la distribuzione è stato finora il virgola mobile a 32 bit, o FP32. Tuttavia, la necessità di ridurre la larghezza di banda e i requisiti di calcolo dei modelli di deep learning ha spinto la ricerca a utilizzare formati numerici di precisione inferiore. È stato dimostrato che i pesi e le attivazioni possono essere rappresentati utilizzando numeri interi a 8 bit (o INT8) senza incorrere in una significativa perdita di accuratezza.
Le istanze EC2 C6i offrono molte nuove funzionalità che si traducono in miglioramenti delle prestazioni per i carichi di lavoro AI e ML. Le istanze C6i offrono vantaggi in termini di prestazioni nelle distribuzioni dei modelli FP32 e INT8. L'inferenza FP32 è abilitata con i miglioramenti AVX-512 e l'inferenza INT8 è abilitata dalle istruzioni VNNI AVX-512.
C6i è ora disponibile sugli endpoint SageMaker e gli sviluppatori dovrebbero aspettarsi che fornisca miglioramenti del rapporto prezzo-prestazioni di oltre due volte per l'inferenza INT8 rispetto all'inferenza FP32 e un miglioramento delle prestazioni fino a quattro volte rispetto all'inferenza FP5 dell'istanza C32. Fare riferimento all'appendice per i dettagli dell'istanza e i dati di riferimento.
L'implementazione del deep learning sull'edge per l'inferenza in tempo reale è fondamentale per molte aree applicative. Riduce significativamente il costo della comunicazione con il cloud in termini di larghezza di banda di rete, latenza di rete e consumo energetico. Tuttavia, i dispositivi perimetrali hanno memoria, risorse di calcolo e potenza limitate. Ciò significa che una rete di deep learning deve essere ottimizzata per la distribuzione integrata. La quantizzazione INT8 è diventata un approccio popolare per tali ottimizzazioni per framework ML come TensorFlow e PyTorch. SageMaker ti offre un approccio Bring Your Own Container (BYOC) e strumenti integrati in modo da poter eseguire la quantizzazione.
Per ulteriori informazioni, fare riferimento a Addestramento e inferenza di deep learning con precisione numerica inferiore.
Panoramica della soluzione
I passaggi per implementare la soluzione sono i seguenti:
- Fornisci un'istanza EC2 C6i per quantizzare e creare il modello ML.
- Utilizzare gli script Python forniti per la quantizzazione.
- Crea un'immagine Docker per distribuire il modello in SageMaker utilizzando l'approccio BYOC.
- Usa un Servizio di archiviazione semplice Amazon (Amazon S3) per copiare il modello e il codice per l'accesso a SageMaker.
- Usa il Registro dei contenitori Amazon Elastic (Amazon ECR) per ospitare l'immagine Docker.
- Usa il Interfaccia della riga di comando di AWS (AWS CLI) per creare un endpoint di inferenza in SageMaker.
- Esegui gli script di test Python forniti per richiamare l'endpoint SageMaker per entrambe le versioni INT8 e FP32.
Questa configurazione di distribuzione dell'inferenza utilizza un modello di base BERT dal repository dei trasformatori di Hugging Face (csarron/bert-base-uncased-squad-v1).
Prerequisiti
Di seguito sono riportati i prerequisiti per la creazione della configurazione della distribuzione:
- Un terminale shell Linux con AWS CLI installato
- Un account AWS con accesso alla creazione di istanze EC2 (tipo di istanza C6i)
- Accesso SageMaker per distribuire un modello SageMaker, configurazione endpoint, endpoint
- Gestione dell'identità e dell'accesso di AWS (IAM) per configurare un ruolo e una policy IAM
- Accesso ad Amazon ECR
- Accesso SageMaker per creare un notebook con le istruzioni per avviare un endpoint
Genera e distribuisci un modello INT8 quantizzato su SageMaker
Apri un'istanza EC2 per creare il tuo modello quantizzato ed esegui il push degli artefatti del modello in Amazon S3. Per la distribuzione degli endpoint, crea un contenitore personalizzato con PyTorch e Intel® Extension per PyTorch per distribuire il modello INT8 ottimizzato. Il container viene inserito in Amazon ECR e viene creato un endpoint basato su C6i per servire i modelli FP32 e INT8.
Il seguente diagramma illustra il flusso di alto livello.
Per accedere al codice e alla documentazione fare riferimento al Repository GitHub.
Caso d'uso di esempio
Lo Stanford Question Answering Dataset (SQuAD) è un set di dati di comprensione della lettura costituito da domande poste da crowd-worker su una serie di articoli di Wikipedia, in cui la risposta a ogni domanda è un segmento di testo, oppure campata, dal passaggio di lettura corrispondente, o la domanda potrebbe essere senza risposta.
L'esempio seguente è un algoritmo di risposta alle domande che utilizza un modello basato su BERT. Dato un documento come input, il modello risponderà a semplici domande basate sull'apprendimento e sui contesti del documento di input.
Di seguito è riportato un esempio di documento di input:
La foresta pluviale amazzonica (portoghese: Floresta Amazônica o Amazônia; spagnolo: Selva Amazónica, Amazonía o solitamente Amazonia; francese: Forêt amazonienne; olandese: Amazoneregenwoud), conosciuta anche in inglese come Amazzonia o giungla amazzonica, è una foresta umida di latifoglie che copre la maggior parte del bacino amazzonico del Sud America. Questo bacino comprende 7,000,000 di chilometri quadrati (2,700,000 miglia quadrate), di cui 5,500,000 chilometri quadrati (2,100,000 miglia quadrate) sono coperti dalla foresta pluviale.
Per la domanda "Quale nome è usato anche per descrivere la foresta pluviale amazzonica in inglese?" otteniamo la risposta:
Per la domanda "Quanti chilometri quadrati di foresta pluviale sono coperti nel bacino?" otteniamo la risposta:
Quantizzazione del modello in PyTorch
Questa sezione offre una rapida panoramica dei passaggi di quantizzazione del modello con le estensioni PyTorch e Intel.
I frammenti di codice derivano da un esempio di SageMaker.
Esaminiamo in dettaglio le modifiche per la funzione IPEX_quantize nel file quantize.py.
- Importa le estensioni Intel per PyTorch per aiutare con la quantizzazione e l'ottimizzazione e importa la torcia per le manipolazioni dell'array:
- Applicare la calibrazione del modello per 100 iterazioni. In questo caso, stai calibrando il modello con il set di dati SQuAD:
- Preparare input di esempio:
- Convertire il modello in un modello INT8 utilizzando la seguente configurazione:
- Esegui due iterazioni di forward pass per abilitare le fusioni:
- Come ultimo passaggio, salva il modello TorchScript:
ripulire
Fare riferimento a Repository Github per i passaggi per ripulire le risorse AWS create.
Conclusione
Le nuove istanze EC2 C6i in un endpoint SageMaker possono accelerare l'implementazione dell'inferenza fino a 2.5 volte di più con la quantizzazione INT8. La quantizzazione del modello in PyTorch è possibile con alcune API delle estensioni Intel PyTorch. Si consiglia di quantizzare il modello nelle istanze C6i in modo da mantenere l'accuratezza del modello nella distribuzione dell'endpoint. Gli esempi di SageMaker Repository GitHub ora fornisce una pipeline di esempio di distribuzione end-to-end per la quantizzazione e l'hosting di modelli INT8.
Ti invitiamo a creare un nuovo modello o a migrare un modello esistente utilizzando la quantizzazione INT8 utilizzando il tipo di istanza EC2 C6i e vedere di persona i miglioramenti delle prestazioni.
Avviso e disclaimer
Il presente documento non concede alcuna licenza (espressa o implicita, per preclusione o altro) a qualsiasi diritto di proprietà intellettuale, con la sola eccezione che il codice incluso in questo documento è soggetto a licenza Licenza open source BSD a clausola zero (0BSD)
Appendice
Nuove istanze AWS in SageMaker con supporto per la distribuzione INT8
La tabella seguente elenca le istanze di SageMaker con e senza Potenziamento DL supporto.
Nome istanza | Xeon Gen nome in codice | INT8 Abilitato? | Boost DL abilitato? |
ml.c5. xlarge – ml.c5.9xlarge | Sky Lake/1st | Sì | Non |
ml.c5.18xgrande | Sky Lake/1st | Sì | Non |
ml.c6i.1x – 32xgrande | Lago di ghiaccio/3rd | Sì | Sì |
Per riassumere, INT8 abilitato supporta il tipo di dati e il calcolo INT8; DL Boost abilitato supporta Deep Learning Boost.
Dati di riferimento
La tabella seguente confronta il costo e le prestazioni relative tra le istanze c5 e c6.
Latenza e throughput misurati con 10000 query di inferenza agli endpoint Sage Maker.
E2E Latency of Inference Endpoint e analisi dei costi | |||||
P50(ms) | P90(ms) | Interrogazioni/sec | $/1 milione di query | Relativo $/Performance | |
C5.2xGrande-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 |
Si prevede che i modelli INT8 forniscano miglioramenti delle prestazioni pratiche di 2-4 volte con una perdita di precisione inferiore all'1% per la maggior parte dei modelli. La tabella sopra copre la latenza dell'overhead (NW e applicazione demo)
Precisione per modello base BERT
La tabella seguente riassume l'accuratezza per il modello INT8 con il set di dati SQUAD v1.1.
Metrico | FP32 | INT8 |
Corrispondenza esatta | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
I Repository GitHub viene fornito con gli script per verificare l'accuratezza del set di dati SQuAD. Fare riferimento a richiamare-INT8.py ed invocare-FP32.py script per il test.
Estensione Intel per PyTorch
Intel® Extension for PyTorch* (un progetto open source su GitHub) estende PyTorch con ottimizzazioni per ulteriori aumenti delle prestazioni sull'hardware Intel. La maggior parte delle ottimizzazioni sarà eventualmente inclusa nelle versioni standard di PyTorch e l'intenzione dell'estensione è quella di fornire funzionalità e ottimizzazioni aggiornate per PyTorch su hardware Intel. Gli esempi includono AVX-512 Vector Neural Network Instructions (AVX512 VNNI) e Intel® Advanced Matrix Extensions (Intel® AMX).
La figura seguente illustra l'estensione Intel per l'architettura PyTorch.
Per una guida utente più dettagliata (funzionalità, ottimizzazione delle prestazioni e altro) per Intel® Extension for PyTorch, fare riferimento a Guida per l'utente dell'estensione Intel® per PyTorch*.
Informazioni sugli autori
Rohit Chowdhary è Sr. Solutions Architect nel team Strategic Accounts di AWS.
Aniruddha Kappagantu è un Software Development Engineer nel team AI Platforms di AWS.
Antonio Vance è un AI Architect presso Intel con 19 anni di esperienza in visione artificiale, machine learning, deep learning, software embedded, GPU e FPGA.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/accelerate-amazon-sagemaker-inference-with-c6i-intel-based-amazon-ec2-instances/
- :È
- $ SU
- 000
- 1
- 100
- 11
- 7
- 8
- 9
- a
- sopra
- accelerare
- accesso
- Il mio account
- conti
- precisione
- attivazioni
- Avanzate
- vantaggi
- AI
- algoritmo
- sempre
- Amazon
- Amazon EC2
- Amazon Sage Maker
- America
- ed
- rispondere
- API
- Applicazioni
- applicato
- approccio
- architettura
- SONO
- aree
- Italia
- news
- AS
- At
- disponibile
- AWS
- Larghezza di banda
- basato
- BE
- diventare
- essendo
- Segno di riferimento
- fra
- Incremento
- portare
- costruire
- by
- detto
- Materiale
- funzionalità
- Custodie
- certo
- Modifiche
- dai un'occhiata
- Cloud
- codice
- comunicare
- rispetto
- confronto
- calcolo
- Calcolare
- computer
- Visione computerizzata
- informatica
- Configurazione
- Consistente
- consumo
- Contenitore
- contesto
- contesti
- Corrispondente
- Costo
- Costi
- coperto
- Copertine
- creare
- creato
- Creazione
- creazione
- costume
- dati
- deep
- apprendimento profondo
- consegnare
- dimostrato
- schierare
- deployment
- implementazioni
- derivato
- descrivere
- dettaglio
- dettagliati
- dettagli
- sviluppatori
- Mercato
- dispositivi
- diverso
- docker
- documento
- documentazione
- fare
- Dollaro
- spinto
- Olandese
- bordo
- Efficace
- incorporato
- enable
- abilitato
- comprende
- incoraggiare
- da un capo all'altro
- endpoint
- ingegnere
- Inglese
- alla fine
- Ogni
- esempio
- Esempi
- eccezione
- esistente
- attenderti
- previsto
- esperienza
- esprimere
- estensione
- estensioni
- extra
- Faccia
- Caratteristiche
- pochi
- figura
- Compila il
- galleggiante
- flusso
- i seguenti
- segue
- Nel
- foresta
- modulo
- formato
- Avanti
- FPGA
- Contesto
- quadri
- Francese
- Frequenza
- da
- function
- Guadagni
- Gen
- ottenere
- GitHub
- dato
- dà
- Go
- GPU
- concesso
- maggiore
- GUEST
- Ospite Messaggio
- guida
- Hardware
- Avere
- Aiuto
- alto livello
- superiore
- host
- di hosting
- Come
- Tutorial
- Tuttavia
- HTML
- http
- HTTPS
- ICE
- Identità
- Immagine
- realizzare
- implicito
- importare
- importante
- competenze
- miglioramento
- miglioramenti
- in
- includere
- incluso
- crescente
- informazioni
- ingresso
- esempio
- invece
- istruzioni
- integrato
- Intel
- intellettuale
- proprietà intellettuale
- Intenzione
- IT
- iterazioni
- jpg
- conservazione
- Le
- conosciuto
- lago
- Cognome
- Latenza
- lanciare
- apprendimento
- Licenza
- Autorizzato
- piace
- Limitato
- linea
- linux
- elenchi
- cerca
- spento
- macchina
- machine learning
- creatore
- molti
- Matrice
- si intende
- Memorie
- forza
- migrare
- milione
- ML
- modello
- modelli
- Scopri di più
- maggior parte
- MS
- Nome
- Bisogno
- Rete
- rete neurale
- New
- taccuino
- of
- offrire
- on
- aprire
- open source
- ottimizzazione
- ottimizzati
- OS
- altrimenti
- complessivo
- panoramica
- proprio
- sentiero
- performance
- conduttura
- Piattaforme
- Platone
- Platone Data Intelligence
- PlatoneDati
- punto
- Popolare
- Portoghese
- possibile
- Post
- energia
- alimentato
- Pratico
- Precisione
- prerequisiti
- lavorazione
- processori
- progetto
- proprietà
- Diritti di proprietà
- fornire
- purché
- fornisce
- Spingi
- spinto
- Python
- pytorch
- domanda
- Domande
- Presto
- Lettura
- tempo reale
- raccomandato
- ridurre
- Ridotto
- riduce
- Uscite
- deposito
- rappresentato
- che rappresenta
- Requisiti
- riparazioni
- Risorse
- risposta
- colpevole
- Risultati
- diritti
- Ruolo
- Correre
- running
- sacrificando
- sagemaker
- Inferenza di SageMaker
- Risparmi
- scalabile
- script
- Sezione
- segmento
- servire
- set
- flessibile.
- Conchiglia
- dovrebbero
- mostrare attraverso le sue creazioni
- significativa
- significativamente
- Un'espansione
- Taglia
- Dimensioni
- So
- finora
- Software
- lo sviluppo del software
- soluzione
- Soluzioni
- Fonte
- Sud
- Sud America
- Spagnolo
- esaurito
- SQ
- quadrato
- step
- Passi
- azione
- conservazione
- Strategico
- soggetto
- tale
- riassumere
- in dotazione
- supporto
- supporti
- tavolo
- team
- tensorflow
- terminal
- condizioni
- test
- Testing
- che
- I
- loro
- portata
- volte
- a
- strumenti
- torcia
- delle transazioni
- trasformatori
- Tipi di
- up-to-date
- uso
- Utente
- generalmente
- visione
- modi
- quale
- while
- wikipedia
- volere
- con
- senza
- anni
- Tu
- Trasferimento da aeroporto a Sharm
- te stesso
- zefiro