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
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
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 FSDPexpert_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}