AMD + 🤗 Accelerazione immediata dei grandi modelli di linguaggio con la GPU AMD

AMD + 🤗 Accelerazione istantanea dei grandi modelli di linguaggio con la GPU AMD

All’inizio di quest’anno, AMD e Hugging Face hanno annunciato una partnership per accelerare i modelli di intelligenza artificiale durante l’evento AI Day di AMD. Abbiamo lavorato duramente per rendere questa visione realtà e rendere facile alla comunità di Hugging Face eseguire i modelli AI più recenti su hardware AMD con le migliori prestazioni possibili.

AMD alimenta alcuni dei supercomputer più potenti del mondo, tra cui il più veloce europeo, LUMI, che opera con oltre 10.000 GPU AMD MI250X. In questo evento, AMD ha svelato la sua ultima generazione di GPU per server, gli acceleratori della serie AMD Instinct™ MI300, che diventeranno presto disponibili in generale.

In questo articolo del blog, forniamo un aggiornamento sui nostri progressi nel fornire un ottimo supporto out-of-the-box per le GPU AMD e nel migliorare l’interoperabilità per le ultime GPU AMD Instinct di grado server.

Accelerazione out-of-the-box

Riesci a individuare i cambiamenti di codice specifici di AMD di seguito? Non sforzare gli occhi, non ce ne sono rispetto all’esecuzione su GPU NVIDIA 🤗.

from transformers import AutoTokenizer, AutoModelForCausalLMimport torchmodel_id = "01-ai/Yi-6B"tokenizer = AutoTokenizer.from_pretrained(model_id)with torch.device("cuda"):    model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16)inp = tokenizer(["Oggi sono a Parigi e"], padding=True, return_tensors="pt").to("cuda")res = model.generate(**inp, max_new_tokens=30)print(tokenizer.batch_decode(res))

Uno degli aspetti principali su cui abbiamo lavorato è la capacità di eseguire modelli Hugging Face Transformers senza alcuna modifica del codice. Supportiamo ora tutti i modelli e i task di Transformers su GPU AMD Instinct. E la nostra collaborazione non si ferma qui, poiché esploriamo il supporto out-of-the-box per modelli diffusori, altre librerie e altre GPU AMD.

Raggiungere questo traguardo è stato un notevole sforzo e una collaborazione tra i nostri team e le nostre aziende. Per mantenere il supporto e le prestazioni per la comunità di Hugging Face, abbiamo implementato dei test integrati delle librerie open source di Hugging Face su GPU AMD Instinct nei nostri data center, riuscendo a ridurre al minimo l’impatto ambientale di queste nuove workload grazie alla collaborazione con Verne Global per implementare i server AMD Instinct in Islanda.

Oltre al supporto nativo, un altro aspetto fondamentale della nostra collaborazione è fornire l’integrazione delle ultime innovazioni e funzionalità disponibili sulle GPU AMD. Attraverso la collaborazione tra il team di Hugging Face, gli ingegneri di AMD e i membri della comunità open source, siamo lieti di annunciare il supporto per:

Siamo molto entusiasti di mettere a disposizione degli utenti di Hugging Face queste sofisticate tecnologie di accelerazione, rendendole facili da usare e offrendo supporto e performance costanti grazie all’integrazione diretta nel nostro nuovo sistema continuo di integrazione e sviluppo per le GPU AMD Instinct.

Una GPU AMD Instinct MI250 con 128 GB di memoria ad alta larghezza di banda dispone di due distinti dispositivi ROCm (GPU 0 e 1), ognuno con 64 GB di memoria ad alta larghezza di banda.

MI250 due dispositivi visualizzati da `rocm-smi`

Ciò significa che con una sola scheda GPU MI250, abbiamo due dispositivi PyTorch che possono essere utilizzati molto facilmente con parallelismo tensore e dati per ottenere una maggiore velocità e minori ritardi.

Nel resto dell’articolo del blog, riportiamo i risultati delle prestazioni per i due passaggi coinvolti nella generazione di testo tramite modelli di lingua di grandi dimensioni:

  • Latency di prefill: Il tempo necessario per il modello per calcolare la rappresentazione per l’input fornito dall’utente o il prompt (chiamato anche “Time To First Token”).
  • Latency di decoding per token: Il tempo necessario per generare ogni nuovo token in modo autoregressivo dopo il passaggio di prefill.
  • Throughput di decoding: Il numero di token generati al secondo durante la fase di decoding.

Utilizzando optimum-benchmark e eseguendo benchmark di inferenza su un MI250 e una GPU A100 con e senza ottimizzazioni, otteniamo i seguenti risultati:

Benchmark di inferenza utilizzando le librerie Transformers e PEFT. FA2 sta per "Flash Attention 2", TP per "Tensor Parallelism", DDP per "Distributed Data Parallel".

Nei grafici sopra, possiamo vedere la grande efficienza del MI250, specialmente per impostazioni di produzione in cui le richieste vengono elaborate in grandi batch, offrendo più di 2,33 volte più token (throughput di decoding) e impiegando la metà del tempo per il primo token (latenza di prefill), rispetto a una scheda A100.

Eseguendo benchmark di formazione come mostrato di seguito, una scheda MI250 può gestire batch di addestramento più grandi e raggiunge un throughput di addestramento più elevato.

Benchmark di addestramento utilizzando la libreria Transformers alla dimensione massima del batch (potenza di due) che può essere gestita da una determinata scheda

Soluzioni di Produzione

Un altro punto focale importante della nostra collaborazione è lo sviluppo del supporto per le soluzioni di produzione di Hugging Face, a partire dall’Inference per la Generazione di Testo (TGI). TGI offre una soluzione completa per implementare modelli di lingua di grandi dimensioni per l’inferenza su larga scala.

Inizialmente, TGI era principalmente focalizzato sulle GPU Nvidia, utilizzando la maggior parte delle recenti ottimizzazioni effettuate per l’architettura Ampere, come Flash Attention v1 e v2, la quantizzazione dei pesi GPTQ e l’attenzione a pagine.

Oggi, siamo lieti di annunciare il supporto iniziale per le GPU AMD Instinct MI210 e MI250 in TGI, sfruttando tutto il lavoro open-source descritto in precedenza, integrato in una soluzione completa e pronta per essere implementata.

Per quanto riguarda le prestazioni, abbiamo dedicato molto tempo a testare il benchmark di Inferenza per la Generazione di Testo sulle GPU AMD Instinct per convalidare e scoprire in quali aree dovremmo concentrarci sulle ottimizzazioni. Pertanto, grazie al supporto degli ingegneri delle GPU AMD, siamo riusciti a ottenere prestazioni paragonabili a quelle offerte da TGI.

In questo contesto, inoltre, nella relazione a lungo termine che stiamo costruendo tra AMD e Hugging Face, abbiamo integrato e testato lo strumento AMD GeMM Tuner, che ci permette di ottimizzare i kernel GeMM (moltiplicazione di matrici) utilizzati in TGI per ottenere il miglior setup per prestazioni migliorate. Si prevede che AMD GeMM Tuner venga rilasciato come parte di PyTorch in una prossima versione affinché tutti possano beneficiarne.

Detto tutto ciò, siamo entusiasti di mostrare i primi numeri di performance che dimostrano le più recenti tecnologie AMD, mettendo la generazione di testo con inferenza su GPU AMD al primo posto delle soluzioni efficienti di inferenza con la famiglia di modelli Llama.

Risultati di latenza TGI per Llama 34B, confrontando una AMD Instinct MI250 con un A100-SXM4-80GB. Come spiegato in precedenza, una MI250 corrisponde a due dispositivi PyTorch.
Risultati di latenza TGI per Llama 70B, confrontando due AMD Instinct MI250 con due A100-SXM4-80GB (utilizzando la parallelizzazione del tensore)

Le barre mancanti per A100 corrispondono a errori di memoria esaurita, poiché Llama 70B pesa 138 GB in float16, e una quantità sufficiente di memoria libera è necessaria per le attivazioni intermediate, il buffer di cache KV (>5GB per una lunghezza di sequenza di 2048, batch size 8), il contesto CUDA, ecc. La GPU Instinct MI250 ha 128 GB di memoria globale, mentre una A100 ne ha 80GB, il che spiega la capacità di eseguire carichi di lavoro più grandi (sequenze più lunghe, batch più grandi) su MI250.

La generazione di testo con inferenza è pronta per essere implementata in produzione su GPU AMD Instinct attraverso l’immagine Docker ghcr.io/huggingface/text-generation-inference:1.2-rocm. Assicurati di consultare la documentazione riguardante il supporto e i suoi limiti.

Cosa succederà dopo?

Speriamo che questo articolo ti abbia emozionato tanto quanto ci ha emozionato noi di Hugging Face riguardo a questa collaborazione con AMD. Naturalmente, questo è solo l’inizio del nostro viaggio e non vediamo l’ora di supportare più casi d’uso su hardware AMD.

Nei prossimi mesi lavoreremo per offrire ulteriore supporto e convalida per le GPU AMD Radeon, le stesse GPU che puoi utilizzare nel tuo computer desktop per un utilizzo locale, abbassando la barriera di accessibilità e aprendo la strada a una maggiore versatilità per i nostri utenti.

Certo, ci impegneremo presto nell’ottimizzazione delle prestazioni per la serie MI300, garantendo che sia l’Open Source che le Soluzioni offrano le ultime innovazioni al massimo livello di stabilità che stiamo cercando sempre in Hugging Face.

Un’altra area di interesse per noi sarà la tecnologia AMD Ryzen AI, che alimenta la nuova generazione di CPU per laptop AMD, consentendo di eseguire l’AI sul dispositivo. Nel momento in cui gli assistenti di codifica, gli strumenti di generazione di immagini e gli assistenti personali stanno diventando sempre più ampiamente disponibili, è importante offrire soluzioni in grado di soddisfare le esigenze di privacy per sfruttare questi strumenti potenti. In questo contesto, i modelli compatibili con Ryzen AI sono già disponibili nell’Hugging Face Hub e stiamo lavorando a stretto contatto con AMD per portarne sempre di più nei prossimi mesi.