Accelerando i Transformers di Hugging Face con AWS Inferentia2

'Accelerating Hugging Face Transformers with AWS Inferentia2'

Negli ultimi cinque anni, i modelli di Transformer [1] sono diventati lo standard de facto per molte attività di apprendimento automatico (ML), come l’elaborazione del linguaggio naturale (NLP), la visione artificiale (CV), il riconoscimento vocale e altro ancora. Oggi molti data scientist e ingegneri di ML si affidano ad architetture di trasformatori popolari come BERT [2], RoBERTa [3], il Vision Transformer [4] o uno dei più di 130.000 modelli pre-addestrati disponibili nell’hub di Hugging Face per risolvere problemi complessi di business con un’accuratezza all’avanguardia.

Tuttavia, nonostante tutte le loro qualità, i Transformers possono essere difficili da implementare in produzione. Oltre alla tipica infrastruttura necessaria per il deployment dei modelli, che abbiamo in gran parte risolto con il nostro servizio di Inference Endpoints, i Transformers sono modelli di grandi dimensioni che spesso superano i multi-gigabyte. I modelli di linguaggio di grandi dimensioni (LLM) come GPT-J-6B, Flan-T5 o Opt-30B raggiungono decine di gigabyte, senza considerare mostri come BLOOM, il nostro stesso LLM, che raggiunge i 350 gigabyte.

Far rientrare questi modelli su un singolo acceleratore può essere piuttosto difficile, figuriamoci ottenere l’alto throughput e la bassa latenza di inferenza richiesti dalle applicazioni, come le applicazioni di conversazione e di ricerca. Fino ad oggi, gli esperti di ML hanno ideato tecniche manuali complesse per suddividere i modelli di grandi dimensioni, distribuirli su un cluster di acceleratori e ottimizzarne la latenza. Purtroppo, questo lavoro è estremamente difficile, richiede molto tempo e non è alla portata di molti professionisti di ML.

Da Hugging Face, stiamo democratizzando il ML e siamo sempre alla ricerca di partner che credano anche loro che ogni sviluppatore e organizzazione debbano beneficiare di modelli all’avanguardia. A tal scopo, siamo entusiasti di collaborare con Amazon Web Services per ottimizzare i Transformer di Hugging Face per AWS Inferentia 2! Si tratta di un nuovo acceleratore di inferenza appositamente progettato che offre livelli di throughput, latenza, performance per watt e scalabilità senza precedenti.

Introduzione ad AWS Inferentia2

AWS Inferentia2 è la nuova generazione di Inferentia1 lanciata nel 2019. Sfruttando Inferentia1, le istanze Amazon EC2 Inf1 hanno fornito un throughput superiore del 25% e un costo inferiore del 70% rispetto alle istanze G5 comparabili basate sulla GPU NVIDIA A10G e con Inferentia2, AWS sta spingendo ancora di più.

Il nuovo chip Inferentia2 offre un aumento del throughput del 4x e una riduzione della latenza del 10x rispetto a Inferentia. Allo stesso modo, le nuove istanze Amazon EC2 Inf2 hanno un throughput fino a 2,6 volte superiore, una latenza inferiore dell’8,1x e una performance per watt migliore del 50% rispetto alle istanze G5 comparabili. Inferentia 2 ti offre il meglio di entrambi i mondi: un’ottimizzazione del costo per inferenza grazie all’alto throughput e un tempo di risposta ridotto per la tua applicazione grazie alla bassa latenza di inferenza.

Le istanze Inf2 sono disponibili in diverse dimensioni, dotate da 1 a 12 chip Inferentia2. Quando sono presenti più chip, sono interconnessi da un’interconnessione diretta ad altissima velocità Inferentia2 to Inferentia2 per l’inferenza distribuita su modelli di grandi dimensioni. Ad esempio, la dimensione di istanza più grande, inf2.48xlarge, ha 12 chip e una memoria sufficiente per caricare un modello con 175 miliardi di parametri come GPT-3 o BLOOM.

Fortunatamente, tutto questo non comporta una complessità di sviluppo aggiuntiva. Con Optimum Neuron, non è necessario suddividere o modificare il tuo modello. Grazie all’integrazione nativa in AWS Neuron SDK, è sufficiente una singola riga di codice per compilare il tuo modello per Inferentia 2. Puoi fare esperimenti in pochi minuti! Testa le performance che il tuo modello potrebbe raggiungere su Inferentia 2 e vedi di persona.

Parlando di questo, mostriamo come diversi modelli di Hugging Face girano su Inferentia 2. Tempo di benchmark!

Benchmarking dei modelli di Hugging Face su AWS Inferentia 2

Abbiamo valutato alcuni dei modelli NLP più popolari dell’hub di Hugging Face, tra cui BERT, RoBERTa, DistilBERT e modelli di visione come Vision Transformers.

Il primo benchmark confronta le performance di Inferentia, Inferentia 2 e le GPU. Abbiamo eseguito tutti gli esperimenti su AWS con i seguenti tipi di istanza:

  • Inferentia1 – inf1.2xlarge alimentato da un singolo chip Inferentia.
  • Inferentia2 – inf2.xlarge alimentato da un singolo chip Inferentia2.
  • GPU – g5.2xlarge alimentato da una singola GPU NVIDIA A10G.

Nota: non abbiamo ottimizzato il modello per l’ambiente GPU, i modelli sono stati valutati in fp32.

Quando si tratta di benchmarking dei modelli Transformer, ci sono due metriche che vengono maggiormente adottate:

  • Latency : il tempo impiegato dal modello per eseguire una singola previsione (pre-processamento, previsione, post-processamento).
  • Throughput : il numero di esecuzioni effettuate in una quantità fissa di tempo per una configurazione di benchmark

Abbiamo analizzato la latenza in diverse configurazioni e modelli per capire i vantaggi e i compromessi della nuova istanza Inferentia2. Se desideri eseguire il benchmark da solo, abbiamo creato un repository Github con tutte le informazioni e gli script necessari.

Risultati

Il benchmark conferma che i miglioramenti delle prestazioni dichiarati da AWS possono essere riprodotti e convalidati da casi d’uso ed esempi reali. In media, AWS Inferentia2 offre una latenza 4,5 volte migliore rispetto alle GPU NVIDIA A10G e una latenza 4 volte migliore rispetto alle istanze Inferentia1.

Abbiamo eseguito 144 esperimenti su 6 diverse architetture di modelli:

  • Acceleratori: Inf1, Inf2, NVIDIA A10G
  • Modelli: BERT-base, BERT-Large, RoBERTa-base, DistilBERT, ALBERT-base, ViT-base
  • Lunghezza sequenza: 8, 16, 32, 64, 128, 256, 512
  • Dimensione batch: 1

In ogni esperimento, abbiamo raccolto i numeri per la latenza p95. Puoi trovare tutti i dettagli del benchmark in questo foglio di calcolo: HuggingFace: Benchmark Inferentia2 .

Evidenziamo ora alcune considerazioni importanti del benchmark.

BERT-base

Ecco il confronto di latenza per l’esecuzione di BERT-base su ciascuna delle configurazioni di infrastruttura, con una scala logaritmica per la latenza. È notevole vedere come Inferentia2 superi tutte le altre configurazioni di circa 6 volte per lunghezze di sequenza fino a 256.

Figura 1. Latenza p95 di BERT-base

Vision Transformer

Ecco il confronto di latenza per l’esecuzione di ViT-base su diverse configurazioni di infrastruttura. Inferentia2 offre una latenza 2 volte migliore rispetto a NVIDIA A10G, con il potenziale per aiutare notevolmente le aziende a passare da architetture tradizionali, come CNN, a Transformer per applicazioni in tempo reale.

Figura 2. Latenza p95 di ViT

Conclusioni

I modelli Transformer sono emersi come la soluzione ideale per molte attività di apprendimento automatico. Tuttavia, la distribuzione in produzione è stata una sfida a causa delle loro dimensioni e dei requisiti di latenza. Grazie ad AWS Inferentia2 e alla collaborazione tra Hugging Face e AWS, sviluppatori e organizzazioni possono ora sfruttare i vantaggi dei modelli all’avanguardia senza la necessità di una vasta esperienza nell’apprendimento automatico. Puoi iniziare i test a partire da soli 0,76$ all’ora.

I risultati iniziali del benchmark sono promettenti e mostrano che Inferentia2 offre prestazioni di latenza superiori rispetto sia a Inferentia che alle GPU NVIDIA A10G. Quest’ultima innovazione promette di rendere modelli di apprendimento automatico di alta qualità disponibili a un pubblico molto più ampio, offrendo accessibilità all’intelligenza artificiale a tutti.