

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Parallélisme expert
<a name="model-parallel-core-features-v2-expert-parallelism"></a>

Un modèle *Mixture of Experts* (MoE) est un type de modèle de transformeur qui utilise une approche *fragmentée*, ce qui allège l’entraînement par rapport à l’entraînement des modèles denses traditionnels. Dans cette architecture de réseau neuronal MoE, seul un sous-ensemble des composants du modèle appelé *experts* est utilisé pour chaque entrée. Cette approche présente plusieurs avantages, notamment un entraînement plus efficace et une inférence plus rapide, même avec un modèle de plus grande taille. En d’autres termes, avec le même budget de calcul que pour l’entraînement d’un modèle dense complet, vous pouvez faire tenir un modèle ou un jeu de données plus grand lorsque vous utilisez un modèle MoE.

Un modèle MoE se compose de plusieurs *experts*, chacun étant constitué d’un réseau neuronal, généralement un réseau à propagation avant (FFN). Un réseau de portes appelé *routeur* détermine quels jetons sont envoyés à quel expert. Ces experts sont spécialisés dans le traitement d’aspects spécifiques des données d’entrée, ce qui permet au modèle de s’entraîner plus rapidement, de réduire les coûts de calcul, tout en obtenant la même qualité de performance que le modèle dense équivalent. Pour en savoir plus sur les modèles MoE en général, consultez le blog [Applying Mixture of Experts in LLM Architectures](https://developer.nvidia.com/blog/applying-mixture-of-experts-in-llm-architectures/) sur le *site web des développeurs NVIDIA*.

Le *parallélisme expert* est un type de parallélisme qui permet de diviser les experts d’un modèle MoE entre différents dispositifs GPU.

Le SMP v2 s'intègre à [NVIDIA Megatron](https://github.com/NVIDIA/Megatron-LM) pour implémenter le parallélisme expert afin de prendre en charge les modèles MoE de formation, et fonctionne sur FSDP. PyTorch APIs Vous continuez à utiliser votre code d'entraînement PyTorch FSDP tel quel et activez le parallélisme expert SMP pour entraîner les modèles MoE.

## Modèles de transformeurs Hugging Face compatibles avec le parallélisme expert SMP
<a name="model-parallel-core-features-v2-expert-parallelism-supported-models"></a>

SMP v2 prend actuellement en charge le parallélisme expert pour les modèles de transformeur Hugging Face suivants.
+ [Mixtral](https://huggingface.co/docs/transformers/en/model_doc/mixtral)

## Configuration du parallélisme expert
<a name="model-parallel-core-features-v2-expert-parallelism-configure"></a>

Pour `expert_parallel_degree`, vous sélectionnez une valeur pour le degré de parallélisme expert. La valeur doit diviser de manière égale le nombre de GPUs dans votre cluster. Par exemple, pour partager votre modèle lorsque vous utilisez une instance avec 8 GPUs, choisissez 2, 4 ou 8. Nous vous recommandons de commencer par un petit nombre, puis de l’augmenter progressivement jusqu’à ce que le modèle tienne dans la mémoire du GPU.

Les extraits de code suivants illustrent comment ajouter le module d’initialisation SMP `torch.sagemaker.init()` à votre script d’entraînement et configurer le dictionnaire de configuration SMP au format JSON pour le lanceur de tâche d’entraînement, tout en suivant le processus en deux étapes introduit dans [Utiliser la bibliothèque de parallélisme des SageMaker modèles v2](model-parallel-use-api-v2.md). Il n'est pas nécessaire de modifier votre PyTorch modèle ou votre configuration [PyTorch FSDP.](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp) Pour plus d’informations sur le paramètre `expert_parallel_degree`, consultez [Paramètres de configuration des caractéristiques principales de SMP v2](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config).

**Note**  
Vous pouvez utiliser le parallélisme expert avec [Parallélisme partitionné des données hybrides](model-parallel-core-features-v2-sharded-data-parallelism.md). Notez que le parallélisme expert n’est actuellement pas compatible avec le parallélisme de tenseur.

**Note**  
Cette fonctionnalité de formation spécialisée sur le parallélisme est disponible dans la combinaison suivante de bibliothèques de SageMaker et de PyTorch bibliothèque :  
SMP v2.3.0 et versions ultérieures
Le SDK SageMaker Python v2.214.4 et versions ultérieures
PyTorch v2.2.0 et versions ultérieures

### Dans le script d’entraînement
<a name="model-parallel-core-features-v2-expert-parallelism-configure-in-script"></a>

Dans le cadre de l’[étape 1](model-parallel-use-api-v2.md#model-parallel-adapt-pytorch-script-v2), initialisez votre script avec `torch.sagemaker.init()` pour activer SMP v2 et encapsulez votre modèle avec l’API [`torch.sagemaker.transform`](distributed-model-parallel-v2-reference.md#model-parallel-v2-torch-sagemaker-reference-transform), en ajoutant le paramètre `config` à l’API pour activer MoE. L’extrait de code suivant montre comment activer SMP MoE pour la classe de modèle générique `AutoModelForCausalLM` en extrayant la configuration d’un modèle de transformeur MoE à l’aide de la méthode d’entraînement à partir de zéro `from_config` ou de la méthode de peaufinage `from_pretrained`. Pour en savoir plus sur la classe `MoEConfig` SMP, consultez [`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
    )
)
```

### Configuration SMP
<a name="model-parallel-core-features-v2-expert-parallelism-configure-in-estimator-config"></a>

Dans le cadre de l'[étape 2](model-parallel-use-api-v2.md#model-parallel-launch-a-training-job-v2), ajoutez le paramètre suivant au dictionnaire de configuration SMP pour l' SageMaker PyTorch estimateur.

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