Parallelismo tensoriale - Amazon SageMaker

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 tensoriale

Il parallelismo tensoriale è un tipo di parallelismo del modello in cui pesi, gradienti e stati dell'ottimizzatore specifici del modello vengono suddivisi tra i dispositivi. A differenza del parallelismo delle pipeline, che mantiene intatti i singoli pesi ma suddivide l'insieme di pesi, gradienti o ottimizzatori tra i dispositivi, il parallelismo tensoriale suddivide i pesi individuali. Ciò comporta in genere il calcolo distribuito di operazioni, moduli o livelli specifici del modello.

Il parallelismo tensoriale è necessario nei casi in cui un singolo parametro consuma la maggior parte della memoria della GPU (ad esempio tabelle di incorporamento di grandi dimensioni con un vocabolario di grandi dimensioni un livello softmax di grandi dimensioni con un numero elevato di classi). In questo caso, trattare questo tensore o operazione di grandi dimensioni come un'unità atomica è inefficiente e impedisce l'equilibrio del carico di memoria.

SMP v2 si integra con Transformer Engine per l'implementazione del parallelismo tensoriale e funziona su API FSDP. PyTorch È possibile abilitare contemporaneamente il parallelismo tensoriale PyTorch FSDP e SMP e determinare il miglior parallelismo del modello per le migliori prestazioni.

In pratica, il parallelismo tensoriale è particolarmente utile nei seguenti scenari.

  • Quando ci si allena con contesti di lunga durata, in quanto ciò porta a un'elevata memoria di attivazione con il solo FSDP.

  • Durante l'addestramento con cluster molto grandi in cui la dimensione globale del batch supera i limiti desiderati.

Modelli Hugging Face Transformer compatibili con il parallelismo tensoriale SMP

SMP v2 offre attualmente il supporto per il parallelismo tensoriale per i seguenti modelli di trasformatori Hugging Face.

  • GPT-Neox

  • Lama 2

Per la configurazione di riferimento per l'applicazione del parallelismo tensoriale su questi modelli, vedere. Consigli per la configurazione

Configurare il parallelismo tensoriale

Pertensor_parallel_degree, si seleziona un valore per il grado di parallelismo tensoriale. Il valore deve dividere equamente il numero di GPU nel cluster. Ad esempio, per suddividere il modello utilizzando un'istanza con 8 GPU, scegli 2, 4 o 8. Ti consigliamo di iniziare con un numero piccolo e di aumentarlo gradualmente fino a quando il modello non si adatta alla memoria della GPU.

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

Configurazione SMP

{ "tensor_parallel_degree": 8, "random_seed": 0 }

Nel tuo script di allenamento

Inizializza con torch.sagemaker.init() per attivare SMP v2 e avvolgi il tuo modello con l'API. torch.sagemaker.transform

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

Salvataggio e caricamento dei checkpoint Hugging Face Transformer

Dopo che la libreria SMP ha trasformato un modello, modifica il dizionario di stato () del modello. state_dict Ciò significa che il modello diventa incompatibile con le funzionalità di checkpoint originali di Hugging Face Transformer. Per gestire ciò, la libreria SMP fornisce API per salvare i checkpoint da un modello trasformato nella rappresentazione Hugging Face Transformer e l'API torch.sagemaker.transform per caricare un checkpoint del modello Hugging Face Transformer per la messa a punto.

Per ulteriori informazioni sul salvataggio dei checkpoint durante l'utilizzo della funzionalità di parallelismo tensoriale di SMP v2, vedere. Salva e carica i checkpoint durante l'utilizzo di SMP

Per ulteriori informazioni sulla messa a punto di un modello che applica la funzionalità di parallelismo tensoriale di SMP v2, vedere. Ottimizzazione