Parallélisme expert - Amazon SageMaker AI

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

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

SMP v2 prend actuellement en charge le parallélisme expert pour les modèles de transformeur Hugging Face suivants.

Configuration du parallélisme expert

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 Utilisation de la bibliothèque SageMaker de parallélisme des modèles v2. Il n'est pas nécessaire de modifier votre PyTorch modèle ou votre configuration PyTorch FSDP. Pour plus d’informations sur le paramètre expert_parallel_degree, consultez Paramètres de configuration des caractéristiques principales de SMP v2.

Note

Vous pouvez utiliser le parallélisme expert avec Parallélisme partitionné des données hybrides. 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

Dans le cadre de l’étape 1, initialisez votre script avec torch.sagemaker.init() pour activer SMP v2 et encapsulez votre modèle avec l’API torch.sagemaker.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.

# 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

Dans le cadre de l'étape 2, ajoutez le paramètre suivant au dictionnaire de configuration SMP pour l' SageMaker PyTorch estimateur.

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