Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze DL1 EC2 basate su Intel Habana Gaudi | Servizi Web Amazon

Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze DL1 EC2 basate su Intel Habana Gaudi | Servizi Web Amazon

L'addestramento di modelli linguistici di grandi dimensioni (LLM) con miliardi di parametri può essere impegnativo. Oltre a progettare l'architettura del modello, i ricercatori devono impostare tecniche di addestramento all'avanguardia per l'addestramento distribuito come supporto di precisione misto, accumulo di gradienti e checkpoint. Con i modelli di grandi dimensioni, la configurazione dell'addestramento è ancora più impegnativa perché la memoria disponibile in un singolo dispositivo acceleratore limita le dimensioni dei modelli addestrati utilizzando solo il parallelismo dei dati e l'utilizzo dell'addestramento parallelo del modello richiede un livello aggiuntivo di modifiche al codice di addestramento. Biblioteche come deepspeed (una libreria di ottimizzazione del deep learning open source per PyTorch) affronta alcune di queste sfide e può aiutare ad accelerare lo sviluppo e la formazione del modello.

In questo post, abbiamo organizzato un corso di formazione basato su Intel Habana Gaudi Cloud di calcolo elastico di Amazon (Amazon EC2) DL1 istanze e quantificare i vantaggi dell'utilizzo di un framework di scalabilità come DeepSpeed. Presentiamo i risultati di ridimensionamento per un modello di trasformatore di tipo encoder (BERT con parametri da 340 milioni a 1.5 miliardi). Per il modello da 1.5 miliardi di parametri, abbiamo raggiunto un'efficienza di scalabilità dell'82.7% su 128 acceleratori (16 istanze dl1.24xlarge) utilizzando DeepSpeed ​​Zero ottimizzazioni della fase 1. Gli stati dell'ottimizzatore sono stati partizionati da DeepSpeed ​​per addestrare modelli di grandi dimensioni utilizzando il paradigma dei dati paralleli. Questo approccio è stato esteso per addestrare un modello da 5 miliardi di parametri utilizzando il parallelismo dei dati. Abbiamo anche utilizzato il supporto nativo di Gaudi del tipo di dati BF16 per ridurre le dimensioni della memoria e aumentare le prestazioni di allenamento rispetto all'utilizzo del tipo di dati FP32. Di conseguenza, abbiamo raggiunto la convergenza del modello di pre-addestramento (fase 1) entro 16 ore (il nostro obiettivo era addestrare un modello di grandi dimensioni in un giorno) per il modello BERT da 1.5 miliardi di parametri utilizzando il set di dati wikicorpus-it.

Configurazione dell'allenamento

Abbiamo eseguito il provisioning di un cluster di calcolo gestito composto da 16 istanze dl1.24xlarge utilizzando Batch AWS. Abbiamo sviluppato un Workshop di AWS Batch che illustra i passaggi per configurare il cluster di addestramento distribuito con AWS Batch. Ogni istanza dl1.24xlarge ha otto acceleratori Habana Gaudi, ciascuno con 32 GB di memoria e una rete RoCE full mesh tra le schede con una larghezza di banda di interconnessione bidirezionale totale di 700 Gbps ciascuno (vedi Approfondimento delle istanze DL2 di Amazon EC1 per maggiori informazioni). Anche il cluster dl1.24xlarge ne utilizzava quattro Adattatori AWS Elastic Fabric (EFA), con un totale di 400 Gbps di interconnessione tra i nodi.

Il workshop di formazione distribuita illustra i passaggi per configurare il cluster di formazione distribuita. Il workshop mostra la configurazione della formazione distribuita utilizzando AWS Batch e, in particolare, la funzionalità di lavori paralleli multi-nodo per avviare lavori di formazione containerizzati su larga scala su cluster completamente gestiti. Più specificamente, viene creato un ambiente di calcolo AWS Batch completamente gestito con le istanze DL1. I contenitori vengono estratti Registro dei contenitori Amazon Elastic (Amazon ECR) e avviato automaticamente nelle istanze nel cluster in base alla definizione del lavoro parallelo a più nodi. Il workshop si conclude eseguendo un addestramento parallelo di dati multi-nodo e multi-HPU di un modello BERT (da 340 milioni a 1.5 miliardi di parametri) utilizzando PyTorch e DeepSpeed.

BERT 1.5B pre-allenamento con DeepSpeed

Habana SynapseAI v1.5 ed v1.6 supportano le ottimizzazioni DeepSpeed ​​ZeRO1. IL Forcella Habana del repository DeepSpeed ​​GitHub include le modifiche necessarie per supportare gli acceleratori Gaudi. È disponibile il pieno supporto di dati distribuiti paralleli (multischeda, multiistanza), ottimizzazioni ZeRO1 e tipi di dati BF16.

Tutte queste funzioni sono abilitate su Repository di riferimento del modello BERT 1.5B, che introduce un modello di codificatore bidirezionale a 48 strati, 1600 dimensioni nascoste e 25 testine, derivato da un'implementazione BERT. Il repository contiene anche l'implementazione del modello BERT Large di base: un'architettura di rete neurale a 24 livelli, 1024 nascosti, 16 teste e 340 milioni di parametri. Gli script di modellazione pre-training derivano dal file Repository di esempi di deep learning NVIDIA per scaricare i dati wikicorpus_en, preelaborare i dati grezzi in token e suddividere i dati in set di dati h5 più piccoli per l'addestramento parallelo dei dati distribuiti. Puoi adottare questo approccio generico per addestrare le tue architetture del modello PyTorch personalizzate utilizzando i tuoi set di dati utilizzando le istanze DL1.

Risultati del ridimensionamento pre-allenamento (fase 1).

Per il pre-addestramento di modelli di grandi dimensioni su larga scala, ci siamo concentrati principalmente su due aspetti della soluzione: le prestazioni di addestramento, misurate in base al tempo di addestramento, e l'efficacia in termini di costi per arrivare a una soluzione completamente convergente. Successivamente, approfondiamo queste due metriche con il pre-training BERT 1.5B come esempio.

Scalare le prestazioni e il tempo per allenarsi

Iniziamo misurando le prestazioni dell'implementazione BERT Large come riferimento per la scalabilità. La tabella seguente elenca il throughput misurato delle sequenze al secondo da 1 a 8 istanze dl1.24xlarge (con otto dispositivi acceleratori per istanza). Utilizzando il throughput a istanza singola come riferimento, abbiamo misurato l'efficienza del ridimensionamento su più istanze, che è una leva importante per comprendere la metrica di addestramento prezzo-prestazioni.

Numero di istanze Numero di acceleratori Sequenze al secondo Sequenze al secondo per acceleratore Efficienza di ridimensionamento
1 8 1,379.76 172.47 100.0%
2 16 2,705.57 169.10 98.04%
4 32 5,291.58 165.36 95.88%
8 64 9,977.54 155.90 90.39%

La figura seguente illustra l'efficienza di ridimensionamento.

Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze EC1 DL2 basate su Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Per BERT 1.5B, abbiamo modificato gli iperparametri per il modello nel repository di riferimento per garantire la convergenza. La dimensione effettiva del batch per acceleratore è stata impostata su 384 (per il massimo utilizzo della memoria), con micro-batch di 16 per passaggio e 24 passaggi di accumulo del gradiente. I tassi di apprendimento di 0.0015 e 0.003 sono stati utilizzati rispettivamente per 8 e 16 nodi. Con queste configurazioni, abbiamo raggiunto la convergenza del pre-addestramento di fase 1 di BERT 1.5B su 8 istanze dl1.24xlarge (64 acceleratori) in circa 25 ore e 15 ore su 16 istanze dl1.24xlarge (128 acceleratori). La figura seguente mostra la perdita media in funzione del numero di epoche di addestramento, aumentando il numero di acceleratori.

Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze EC1 DL2 basate su Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Con la configurazione descritta in precedenza, abbiamo ottenuto un'elevata efficienza di scalabilità dell'85% con 64 acceleratori e dell'83% con 128 acceleratori, da una linea di base di 8 acceleratori in una singola istanza. La tabella seguente riassume i parametri.

Numero di istanze Numero di acceleratori Sequenze al secondo Sequenze al secondo per acceleratore Efficienza di ridimensionamento
1 8 276.66 34.58 100.0%
8 64 1,883.63 29.43 85.1%
16 128 3,659.15 28.59 82.7%

La figura seguente illustra l'efficienza di ridimensionamento.

Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze EC1 DL2 basate su Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Conclusione

In questo post, abbiamo valutato il supporto per DeepSpeed ​​di Habana SynapseAI v1.5/v1.6 e come aiuta a ridimensionare l'addestramento LLM sugli acceleratori Habana Gaudi. Il pre-addestramento di un modello BERT da 1.5 miliardi di parametri ha impiegato 16 ore per convergere su un cluster di 128 acceleratori Gaudi, con una scalabilità elevata dell'85%. Ti invitiamo a dare un'occhiata all'architettura dimostrata nel Workshop dell'AWS e prendi in considerazione la possibilità di adottarlo per addestrare architetture di modelli PyTorch personalizzate utilizzando istanze DL1.


Circa gli autori

Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze EC1 DL2 basate su Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Mahadevan Balasubramaniam è un Principal Solutions Architect per l'Autonomous Computing con quasi 20 anni di esperienza nell'area dell'apprendimento profondo infuso di fisica, costruzione e implementazione di gemelli digitali per sistemi industriali su larga scala. Mahadevan ha conseguito il dottorato di ricerca in Ingegneria Meccanica presso il Massachusetts Institute of Technology e ha al suo attivo oltre 25 brevetti e pubblicazioni.

Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze EC1 DL2 basate su Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.RJ è un ingegnere nel team di Search M5 che guida gli sforzi per la creazione di sistemi di deep learning su larga scala per l'addestramento e l'inferenza. Al di fuori del lavoro esplora diverse cucine del cibo e pratica sport con la racchetta.

Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze EC1 DL2 basate su Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Sundar Ranganathan è Head of Business Development, ML Frameworks nel team Amazon EC2. Si concentra su carichi di lavoro ML su larga scala attraverso servizi AWS come Amazon EKS, Amazon ECS, Elastic Fabric Adapter, AWS Batch e Amazon SageMaker. La sua esperienza include ruoli di leadership nella gestione e nello sviluppo dei prodotti presso NetApp, Micron Technology, Qualcomm e Mentor Graphics.

Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze EC1 DL2 basate su Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Abhinandan Patni è un Senior Software Engineer presso Amazon Search. Si concentra sulla creazione di sistemi e strumenti per la formazione di deep learning distribuito scalabile e l'inferenza in tempo reale.

Accelera PyTorch con DeepSpeed ​​per addestrare modelli linguistici di grandi dimensioni con istanze EC1 DL2 basate su Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Pierre Yves Aquilanti è Head of Frameworks ML Solutions presso Amazon Web Services, dove aiuta a sviluppare le migliori soluzioni ML Frameworks basate su cloud del settore. Il suo background è nell'High Performance Computing e prima di entrare in AWS, Pierre-Yves lavorava nel settore Oil & Gas. Pierre-Yves è originario della Francia e ha conseguito un dottorato di ricerca. in Informatica presso l'Università di Lille.

Timestamp:

Di più da Apprendimento automatico di AWS