Parallelismo del contesto - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Parallelismo del contesto

Il parallelismo di contesto è un tipo di parallelismo del modello che partiziona le attivazioni del modello lungo la dimensione della sequenza. A differenza di altre tecniche di parallelismo delle sequenze, che si limitano a partizionare la e, il parallelismo di contesto partiziona gli RMSNorm input di rete LayerNorm e tutte le attivazioni intermedie lungo la dimensione della sequenza.

SMPv2 si integra con Transformer Engine per il parallelismo di contesto e può essere utilizzata insieme a and. PyTorch FSDP SMP Parallelismo tensoriale È possibile abilitare tutti e tre i parallelismi contemporaneamente per l'addestramento dei modelli. Il parallelismo contestuale è utile per addestrare modelli con grandi dimensioni di attivazione e lunghe lunghezze di sequenza. Accelera il calcolo dei punteggi di attenzione e dei risultati di attenzione, consentendo a ciascun dispositivo di calcolare solo una parte dei punteggi e degli output lungo la dimensione della sequenza. Sebbene il parallelismo tensoriale acceleri anche il calcolo attraverso il partizionamento lungo la dimensione nascosta, il vantaggio del parallelismo di contesto è più sostanziale poiché i requisiti computazionali aumentano quadraticamente con la dimensione della sequenza.

Modelli Hugging Face Transformer compatibili con il parallelismo di contesto SMP

SMPLa v2 attualmente offre il supporto per il parallelismo di contesto per i seguenti modelli di trasformatori Hugging Face.

Configura il parallelismo del contesto

Imposta un valore intero per il context_parallel_degree parametro che divide equamente il numero di GPUs nel cluster. Ad esempio, se hai un'GPUistanza a 8, usa 2, 4 o 8 per. context_parallel_degree Si consiglia di iniziare con un context_parallel_degree valore piccolo e aumentarlo gradualmente fino a quando il modello non si adatta alla GPU memoria con la lunghezza della sequenza di input richiesta.

I seguenti frammenti di codice mostrano come aggiungere il modulo di SMP inizializzazione torch.sagemaker.init() allo script di training e impostare il dizionario di SMP configurazione in JSON formato Training Job Launcher seguendo il processo in due fasi introdotto in. Usa la libreria di parallelismo dei SageMaker modelli v2 Non è necessario apportare modifiche al modello o alla configurazione. PyTorch PyTorch FSDP Per ulteriori informazioni sul parametro context_parallel_degree, vedi SMPparametri di configurazione delle funzionalità principali di v2.

Nel copione del tuo allenamento

Come parte del passaggio 1, inizializza lo script con torch.sagemaker.init() to activate SMP v2 e avvolgi il tuo modello con. torch.sagemaker.transform API

A partire dalla SMP versione 2.6.0, è possibile utilizzare l'argomento cp_comm_type per determinare quale implementazione del parallelismo di contesto utilizzare. La SMP libreria attualmente supporta due implementazioni: e. p2p all_gather L'p2pimplementazione utilizza chiamate di peer-to-peer invio e ricezione per l'accumulo di valori-chiave durante l'implementazione dell'attenzione e viene eseguita in modo asincrono, consentendo sovrapposizioni con l'elaborazione. all_gatherl'implementazione, invece, utilizza l'operazione collettiva e viene eseguita in modo sincrono. AllGather

import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model, cp_comm_type="p2p")

Configurazione SMP

Come parte del passaggio 2, aggiungi il seguente parametro al dizionario di SMP configurazione per lo SageMaker PyTorch stimatore.

{ ..., # other SMP config parameters "context_parallel_degree": 2 }