Parallelizzazione degli esperti - 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à.

Parallelizzazione degli esperti

Un modello Mixture of Experts (MoE) è un tipo di modello di trasformatore basato su un approccio sparso, che lo rende più leggero per l’addestramento rispetto ai modelli densi 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 utilizzando 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. Gli esperti sono specializzati nell’elaborazione di aspetti specifici dei dati di input, per consentire un addestramento più rapido del modello e una riduzione dei costi di calcolo, ottenendo al contempo la stessa qualità delle prestazioni del modello ad alta densità equivalente. Per ulteriori informazioni su Mixture of Experts in generale, fai riferimento al blog Applying Mixture of Experts in LLM Architectures nel sito web per sviluppatori di NVIDIA.

La parallelizzazione degli esperti è un tipo di parallelizzazione 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 l'addestramento dei modelli MoE e funziona con FSDP. PyTorch APIs Continuate a utilizzare il codice di formazione PyTorch FSDP così com'è e attivate il parallelismo degli esperti SMP per addestrare i modelli MoE.

Modelli di Hugging Face Transformers compatibili con la parallelizzazione degli esperti SMP

SMP v2 offre attualmente il supporto per la parallelizzazione degli esperti per i seguenti modelli di Hugging Face Transformers.

Configurare la parallelizzazione degli esperti

Per expert_parallel_degree, seleziona un valore per il grado di parallelizzazione degli esperti. Il valore deve dividere equamente il numero di nel cluster. GPUs Ad esempio, per suddividere il modello utilizzando un'istanza con 8 GPUs, scegliete 2, 4 o 8. È consigliabile iniziare con un numero piccolo e aumentarlo gradualmente fino a quando il modello risulta adatto alla memoria della GPU.

I seguenti frammenti di codice mostrano come aggiungere il modulo di inizializzazione SMP torch.sagemaker.init() allo script di addestramento e impostare il dizionario di configurazione di SMP in formato JSON per il programma di avvio del job di addestramento seguendo il processo in due fasi introdotto in Utilizzo della libreria SageMaker Model Parallelism v2. Non è necessario apportare modifiche al PyTorch modello o alla configurazione PyTorch FSDP. Per ulteriori informazioni sul parametro expert_parallel_degree, vedi Parametri di configurazione delle funzionalità principali di SMP v2.

Nota

Puoi utilizzare la parallelizzazione degli esperti con Parallelizzazione dei dati sottoposti a sharding. Tieni presente che la parallelizzazione degli esperti non è attualmente compatibile con la parallelizzazione tensoriale.

Nota

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

  • SMP v2.3.0 e versioni successive

  • SageMaker Python SDK v2.214.4 e versioni successive

  • PyTorch v2.2.0 e versioni successive

Nello script di addestramento

Durante la Fase 1, inizializza lo script con torch.sagemaker.init() per attivare SMP v2 ed eseguire il wrapping del modello con l’API torch.sagemaker.transform, aggiungendo il parametro config all’API per attivare MoE. Il frammento di codice riportato di seguito mostra come attivare MoE di SMP per la classe del modello generico AutoModelForCausalLM estraendo una configurazione del modello di trasformatore MoE mediante il metodo from_config per l’addestramento da zero o il metodo from_pretrained per il fine-tuning. Per ulteriori informazioni sulla classe MoEConfig di SMP, vedi 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 di SMP

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

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