Addestramento e inferenza più veloci Habana Gaudi®2 vs Nvidia A100 80GB

'Addestramento e inferenza più veloci Habana Gaudi®2 vs Nvidia A100 80GB'

In questo articolo, imparerai come utilizzare Habana® Gaudi®2 per accelerare l’addestramento e l’inferring dei modelli, e addestrare modelli più grandi con 🤗 Optimum Habana. Successivamente, presentiamo diversi benchmark, inclusi il pre-training di BERT, l’inferring di Stable Diffusion e il fine-tuning di T5-3B, per valutare le differenze di prestazioni tra Gaudi di prima generazione, Gaudi2 e Nvidia A100 80GB. Spoiler – Gaudi2 è circa due volte più veloce di Nvidia A100 80GB sia per l’addestramento che per l’inferring!

Gaudi2 è il secondo acceleratore hardware per l’AI di seconda generazione progettato da Habana Labs. Un singolo server contiene 8 dispositivi acceleratori con 96GB di memoria ciascuno (rispetto a 32GB su Gaudi di prima generazione e 80GB su A100 80GB). L’SDK di Habana, SynapseAI, è comune sia a Gaudi di prima generazione che a Gaudi2. Ciò significa che 🤗 Optimum Habana, che offre un’interfaccia molto user-friendly tra le librerie 🤗 Transformers e 🤗 Diffusers e SynapseAI, funziona allo stesso modo su Gaudi2 come su Gaudi di prima generazione! Quindi, se hai già dei workflow di addestramento o inferring pronti all’uso per Gaudi di prima generazione, ti incoraggiamo a provarli su Gaudi2, poiché funzioneranno senza alcuna modifica.

Come Ottenere Accesso a Gaudi2?

Uno dei modi facili ed economici in cui Intel e Habana hanno reso disponibile Gaudi2 è tramite l’Intel Developer Cloud. Per iniziare a utilizzare Gaudi2 lì, dovresti seguire i seguenti passaggi:

  1. Vai alla pagina principale di Intel Developer Cloud e accedi al tuo account o registrati se non ne hai uno.

  2. Vai alla console di gestione dell’Intel Developer Cloud.

  3. Seleziona Habana Gaudi2 Deep Learning Server con otto schede mezzanine Gaudi2 HL-225H e gli ultimi processori Intel® Xeon® e fai clic su Launch Instance nell’angolo in basso a destra come mostrato di seguito.

  4. Puoi quindi richiedere un’istanza:

  5. Una volta che la tua richiesta viene convalidata, ripeti il passaggio 3 e fai clic su Add OpenSSH Publickey per aggiungere un metodo di pagamento (carta di credito o codice promozionale) e una chiave pubblica SSH che puoi generare con ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa. Potresti essere reindirizzato al passaggio 3 ogni volta che aggiungi un metodo di pagamento o una chiave pubblica SSH.

  6. Ripeti il passaggio 3 e poi fai clic su Launch Instance. Dovrai accettare le condizioni generali proposte per effettivamente lanciare l’istanza.

  7. Vai alla console di gestione dell’Intel Developer Cloud e fai clic sulla scheda chiamata View Instances.

  8. Puoi copiare il comando SSH per accedere alla tua istanza Gaudi2 in remoto!

Se termini l’istanza e vuoi utilizzare nuovamente Gaudi2, dovrai ripetere l’intero processo.

Puoi trovare ulteriori informazioni su questo processo qui.

Benchmarks

Sono stati effettuati diversi benchmark per valutare le capacità di Gaudi di prima generazione, Gaudi2 e A100 80GB sia per l’addestramento che per l’inferring, e per modelli di varie dimensioni.

Pre-Training di BERT

Alcuni mesi fa, Philipp Schmid, responsabile tecnico di Hugging Face, ha presentato come fare il pre-training di BERT su Gaudi con 🤗 Optimum Habana. Sono stati eseguiti 65k passaggi di addestramento con una dimensione del batch di 32 campioni per dispositivo (quindi 8*32=256 in totale) per un tempo totale di addestramento di 8 ore e 53 minuti (puoi vedere i log di TensorBoard di questa esecuzione qui).

Abbiamo rieseguito lo stesso script con gli stessi iperparametri su Gaudi2 e abbiamo ottenuto un tempo totale di addestramento di 2 ore e 55 minuti (vedi i log qui). Ciò comporta un miglioramento delle prestazioni di x3,04 su Gaudi2 senza cambiare nulla.

Dato che Gaudi2 ha circa 3 volte più memoria per dispositivo rispetto a Gaudi di prima generazione, è possibile sfruttare questa maggiore capacità per avere batch più grandi. Ciò darà agli HPUs più lavoro da fare e consentirà anche agli sviluppatori di provare una gamma di valori di iperparametri che non erano raggiungibili con Gaudi di prima generazione. Con una dimensione del batch di 64 campioni per dispositivo (512 in totale), abbiamo ottenuto con 20k passaggi una convergenza di perdita simile ai 65k passaggi delle esecuzioni precedenti. Ciò comporta un tempo totale di addestramento di 1 ora e 33 minuti (vedi i log qui). Il throughput è x1,16 superiore con questa configurazione, mentre questa nuova dimensione del batch accelera notevolmente la convergenza. In generale, con Gaudi2, il tempo totale di addestramento è ridotto di un fattore di 5,75 e il throughput è x3,53 superiore rispetto a Gaudi di prima generazione.

Gaudi2 offre anche un aumento di velocità rispetto ad A100: 1580,2 campioni/s rispetto a 981,6 per una dimensione del batch di 32 e 1835,8 campioni/s rispetto a 1082,6 per una dimensione del batch di 64, il che è coerente con il miglioramento di velocità x1,8 annunciato da Habana nella fase 1 del pre-addestramento di BERT con una dimensione del batch di 64.

La tabella seguente mostra le velocità di throughput che abbiamo ottenuto per le GPU Gaudi di prima generazione, Gaudi2 e Nvidia A100 80GB:

BS è la dimensione del batch per dispositivo. Le esecuzioni su Gaudi sono state effettuate in precisione mista (bf16/fp32) e le esecuzioni su A100 in fp16. Tutte le esecuzioni sono state eseguite su 8 dispositivi.

Generazione di immagini da testo con Stable Diffusion

Una delle principali nuove funzionalità del rilascio 1.3 di 🤗 Optimum Habana è il supporto per Stable Diffusion. Ora è molto facile generare immagini da testo su Gaudi. A differenza di 🤗 Diffusers su GPU, le immagini vengono generate per batch. A causa dei tempi di compilazione del modello, i primi due batch saranno più lenti rispetto alle iterazioni successive. In questo benchmark, queste prime due iterazioni sono state scartate per calcolare il throughput sia per Gaudi di prima generazione che per Gaudi2.

Questo script è stato eseguito per una dimensione del batch di 8 campioni. Utilizza la configurazione Gaudi Habana/stable-diffusion.

I risultati che abbiamo ottenuto, coerenti con i numeri pubblicati da Habana qui, sono mostrati nella tabella sottostante. Gaudi2 mostra latenze che sono x3,51 più veloci rispetto a Gaudi di prima generazione (3,25s rispetto a 0,925s) e x2,84 più veloci rispetto a Nvidia A100 (2,63s rispetto a 0,925s). Può anche supportare dimensioni di batch più grandi.

Aggiornamento: i dati sopra sono stati aggiornati poiché SynapseAI 1.10 e Optimum Habana 1.6 apportano un ulteriore miglioramento di velocità su Gaudi di prima generazione e Gaudi2.

BS è la dimensione del batch. Le esecuzioni su Gaudi sono state effettuate in precisione bfloat16 e le esecuzioni su A100 in precisione fp16 (ulteriori informazioni qui). Tutte le esecuzioni sono state eseguite su un singolo dispositivo.

Fine-tuning di T5-3B

Con 96 GB di memoria per dispositivo, Gaudi2 consente di eseguire modelli molto più grandi. Ad esempio, siamo riusciti a eseguire il fine-tuning di T5-3B (che contiene 3 miliardi di parametri) con il checkpointing del gradiente come unica ottimizzazione della memoria applicata. Questo non è possibile su Gaudi di prima generazione. Qui sono riportati i log di questa esecuzione in cui il modello è stato sottoposto a fine-tuning sul dataset CNN DailyMail per la sintesi del testo utilizzando questo script.

I risultati che abbiamo ottenuto sono presentati nella tabella sottostante. Gaudi2 è x2,44 più veloce di A100 80GB. Osserviamo che non possiamo utilizzare una dimensione del batch superiore a 1 qui su Gaudi2. Ciò è dovuto allo spazio di memoria occupato dal grafico in cui le operazioni vengono accumulate durante la prima iterazione dell’esecuzione. Habana sta lavorando per ottimizzare l’occupazione di memoria nelle future versioni di SynapseAI. Non vediamo l’ora di ampliare questo benchmark utilizzando le versioni più recenti dell’SDK di Habana e utilizzando anche DeepSpeed per vedere se la stessa tendenza si conferma.

BS è la dimensione del batch per dispositivo. Le esecuzioni su Gaudi2 e A100 sono state effettuate in fp32 con il checkpointing del gradiente abilitato. Tutte le esecuzioni sono state eseguite su 8 dispositivi.

Conclusioni

In questo articolo, discutiamo della nostra prima esperienza con Gaudi2. La transizione dalla Gaudi di prima generazione a Gaudi2 è completamente senza soluzione di continuità poiché SynapseAI, l’SDK di Habana, è completamente compatibile con entrambi. Ciò significa che le nuove ottimizzazioni proposte dalle future versioni beneficeranno entrambe.

Hai visto che Habana Gaudi2 migliora significativamente le prestazioni rispetto alla Gaudi di prima generazione e offre circa il doppio della velocità di throughput rispetto a Nvidia A100 80GB sia per l’addestramento che per l’inferenza.

Ora sai anche come configurare un’istanza di Gaudi2 tramite la Intel Developer Zone. Dai un’occhiata agli esempi che puoi eseguire facilmente su di essa con 🤗 Optimum Habana.

Se sei interessato ad accelerare i tuoi flussi di lavoro di addestramento e inferenza di Machine Learning utilizzando gli ultimi acceleratori hardware e librerie software per l’IA, dai un’occhiata al nostro Expert Acceleration Program. Per saperne di più sulle soluzioni Habana, leggi la nostra partnership qui e contattali. Per saperne di più sugli sforzi di Hugging Face per rendere gli acceleratori hardware per l’IA facili da usare, dai un’occhiata al nostro Hardware Partner Program.

  • Iniziare con i Transformers con Habana Gaudi
  • Accelerare l’addestramento del modello Transformer con Hugging Face e Habana Labs

Grazie per aver letto! Se hai domande, non esitare a contattarmi, sia tramite Github che sul forum. Puoi anche connetterti con me su LinkedIn.