Parallelismo esperto - 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 esperto

Un modello Mixture of Experts (MoE) è un tipo di modello di trasformatore che utilizza un approccio semplificato, che lo rende più leggero per l'addestramento rispetto ai modelli ad alta densità tradizionali. In questa architettura di rete neurale MoE, per ogni input viene utilizzato solo un sottoinsieme dei componenti del modello denominati esperti. Questo approccio offre diversi vantaggi, tra cui un addestramento più efficiente e un'inferenza più rapida, anche con modelli di dimensioni maggiori. In altre parole, con lo stesso budget di calcolo per l'addestramento di un modello a piena densità, puoi adattare un modello o un set di dati più grande quando usi MoE.

Un modello MoE è composto da più esperti, ciascuno costituito da una rete neurale, in genere una rete feed-forward (FFN). Una rete di porte chiamata router determina quali token vengono inviati a quale esperto. Questi esperti sono specializzati nell'elaborazione di aspetti specifici dei dati di input, per consentire al modello di addestrarsi più rapidamente, ridurre i costi di elaborazione e ottenere al contempo la stessa qualità delle prestazioni del modello ad alta densità equivalente. Per saperne di più su Mixture of Experts in generale, consulta il blog Appliing Mixture of Experts in LLM Architectures nel sito web per sviluppatori NVIDIA.

Il parallelismo esperto è un tipo di parallelismo che consente di suddividere gli esperti di un modello MoE tra dispositivi GPU.

SMP v2 si integra con NVIDIA Megatron per implementare il parallelismo esperto per supportare la formazione dei modelli MoE e funziona con le API FSDP. PyTorch Continuate a utilizzare il codice di formazione PyTorch FSDP così com'è e attivate il parallelismo degli esperti SMP per addestrare i modelli MoE.

Modelli Hugging Face Transformer compatibili con il parallelismo SMP Expert

Il parallelismo esperto SMP v2 supporta il seguente modello Hugging Face Transformer.

Configura il parallelismo esperto

Infattiexpert_parallel_degree, si seleziona un valore per il grado di parallelismo esperto. 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 sul parametro expert_parallel_degree, vedi Parametri di configurazione delle funzionalità principali di SMP v2.

Nota

Puoi usare il parallelismo esperto con. Parallelismo ibrido dei dati frammentati Nota che il parallelismo esperto attualmente non è compatibile con il parallelismo tensoriale.

Nota

Questa funzionalità di formazione per esperti sul parallelismo è disponibile nella seguente combinazione di librerie di e libreria: SageMaker PyTorch

  • SMP v2.3.0 e versioni successive

  • SageMaker Python SDK v2.214.4 e versioni successive

  • PyTorch v2.2.0 e versioni successive

Nel tuo script di allenamento

Come parte della Fase 1, inizializza lo script con torch.sagemaker.init() per attivare SMP v2 e avvolgi il modello con l'torch.sagemaker.transformAPI, aggiungendo il config parametro all'API per attivare MoE. Il seguente frammento di codice mostra come attivare SMP MoE per la classe del modello generico AutoModelForCausalLM estraendo una configurazione del modello di trasformatore MoE utilizzando il metodo per l'addestramento da zero o il from_config metodo per la messa a punto. from_pretrained Per ulteriori informazioni sulla classe SMP, vedere. MoEConfig torch.sagemaker.moe.moe_config.MoEConfig

# Import the torch.sagemaker.transform API and initialize. import torch.sagemaker as tsm tsm.init() # Import transformers AutoModelForCausalLM class. from transformers import AutoModelForCausalLM # Import the SMP-implementation of MoE configuration class. from torch.sagemaker.moe.moe_config import MoEConfig # Define a transformer model with an MoE model configuration model = AutoModelForCausalLM.from_config(MoEModelConfig) # Wrap it by torch.sagemaker.transform with the SMP MoE configuration. model = tsm.transform( model, config=MoEConfig( smp_moe=True, random_seed=12345, moe_load_balancing="sinkhorn", global_token_shuffle=False, moe_all_to_all_dispatcher=True, moe_aux_loss_coeff=0.001, moe_z_loss_coeff=0.001 ) )

Configurazione SMP

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

{ ..., # other SMP config parameters "expert_parallel_degree": 8 }