

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
<a name="model-parallel-core-features-v2-expert-parallelism"></a>

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](https://developer.nvidia.com/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](https://github.com/NVIDIA/Megatron-LM) 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
<a name="model-parallel-core-features-v2-expert-parallelism-supported-models"></a>

SMP v2 offre attualmente il supporto per la parallelizzazione degli esperti per i seguenti modelli di Hugging Face Transformers.
+ [Mixtral](https://huggingface.co/docs/transformers/en/model_doc/mixtral)

## Configurare la parallelizzazione degli esperti
<a name="model-parallel-core-features-v2-expert-parallelism-configure"></a>

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 [Usa la libreria di parallelismo dei SageMaker modelli v2](model-parallel-use-api-v2.md). Non è necessario apportare modifiche al PyTorch modello o alla configurazione [PyTorch FSDP](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp). Per ulteriori informazioni sul parametro `expert_parallel_degree`, vedi [Parametri di configurazione delle funzionalità principali di SMP v2](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config).

**Nota**  
Puoi utilizzare la parallelizzazione degli esperti con [Parallelizzazione dei dati sottoposti a sharding](model-parallel-core-features-v2-sharded-data-parallelism.md). 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
<a name="model-parallel-core-features-v2-expert-parallelism-configure-in-script"></a>

Durante la [Fase 1](model-parallel-use-api-v2.md#model-parallel-adapt-pytorch-script-v2), inizializza lo script con `torch.sagemaker.init()` per attivare SMP v2 ed eseguire il wrapping del modello con l’API [`torch.sagemaker.transform`](distributed-model-parallel-v2-reference.md#model-parallel-v2-torch-sagemaker-reference-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`](distributed-model-parallel-v2-reference.md#model-parallel-v2-torch-sagemaker-reference-moe).

```
# 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
<a name="model-parallel-core-features-v2-expert-parallelism-configure-in-estimator-config"></a>

Come parte della [Fase 2](model-parallel-use-api-v2.md#model-parallel-launch-a-training-job-v2), aggiungete il seguente parametro al dizionario di configurazione SMP per lo stimatore. SageMaker PyTorch 

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