Mise en route avec l’entraînement distribué dans Amazon SageMaker AI - 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.

Mise en route avec l’entraînement distribué dans Amazon SageMaker AI

La page suivante fournit des informations sur les étapes nécessaires pour commencer à utiliser l’entraînement distribué dans Amazon SageMaker AI. Si vous connaissez déjà l'entraînement distribué, choisissez l'option, parmi les suivantes, qui correspond à votre stratégie ou votre framework préférés pour commencer. Si vous souhaitez en savoir plus sur l'entraînement distribué en général, consultez Concepts d’entraînement distribué.

Les bibliothèques d’entraînement distribué SageMaker AI sont optimisées pour l’environnement d’entraînement SageMaker. Elles vous aident à adapter vos tâches d’entraînement distribué à SageMaker AI et à améliorer la vitesse et le débit d’entraînement. Les offrent des stratégies d'entraînement parallèle de données et de modèles. Elles combinent des technologies logicielles et matérielles pour améliorer les communications entre les GPU et les nœuds, et étendent les capacités d’entraînement de SageMaker AI grâce à des options intégrées qui ne nécessitent que de légères modifications du code de vos scripts d’entraînement. 

Avant de commencer

L'entraînement SageMaker prend en charge l'entraînement distribué sur une seule instance ainsi que sur plusieurs instances, afin que vous puissiez exécuter des entraînements de toutes tailles à grande échelle. Nous vous recommandons d'utiliser les classes d'estimateur de framework telles que PyTorch et TensorFlow dans le kit SageMaker Python SDK, qui sont des lanceurs de tâches d'entraînement proposant diverses options d'entraînement distribué. Lorsque vous créez un objet estimateur, celui-ci configure une infrastructure d’entraînement distribué, exécute l’API CreateTrainingJob dans le système dorsal, trouve la région dans laquelle se déroule votre session en cours et extrait l’un des conteneurs de deep learning AWS prédéfinis, pré-empaquetés avec un certain nombre de bibliothèques, notamment des cadres de deep learning, des cadres d’entraînement distribué et le pilote EFA. Si vous souhaitez monter un système de fichiers FSx sur les instances d'entraînement, vous devez transmettre votre sous-réseau de VPC et votre ID de groupe de sécurité à l'estimateur. Avant d’exécuter votre tâche d’entraînement distribué dans SageMaker AI, lisez les instructions générales suivantes sur la configuration de base de l’infrastructure.

Zones de disponibilité et fond de panier réseau

Lorsque vous disposez de plusieurs instances (également appelées nœuds), il est important de comprendre le réseau qui les connecte et la façon dont elles lisent les données d’entraînement et partagent mutuellement les informations. Par exemple, lorsque vous exécutez une tâche d'entraînement de parallélisme de données distribué, un certain nombre de facteurs, tels que la communication entre les nœuds d'un cluster de calcul pour exécuter l'opération AllReduce et le transfert de données entre les nœuds et le stockage de données dans Amazon Simple Storage Service ou Amazon FSx pour Lustre, jouent un rôle crucial pour optimiser l'utilisation des ressources de calcul et accélérer la vitesse d'entraînement. Pour réduire les frais de communication, assurez-vous de configurer les instances, le sous-réseau du VPC et le stockage de données dans les mêmes Région AWS et zone de disponibilité.

Instances de GPU avec réseau plus rapide et stockage à haut débit

Techniquement, vous pouvez utiliser n'importe quelle instance pour un entraînement distribué. Dans les cas où vous devez exécuter des tâches d’entraînement distribué sur plusieurs nœuds pour entraîner de grands modèles, tels que les grands modèles de langage (LLM) et les modèles de diffusion, qui nécessitent une commutation inter-nœuds plus rapide, nous recommandons les instances de GPU compatibles avec EFA prises en charge par SageMaker AI. En particulier, pour réaliser la tâche d’entraînement distribué SageMaker AI la plus performante, nous recommandons les instances P4d et P4de équipées de GPU NVIDIA A100. Elles sont également équipées d'un stockage d'instance local à haut débit et à faible latence et d'un réseau intra-nœud plus rapide. Pour le stockage de données, nous recommandons Amazon FSx pour Lustre, qui fournit un débit élevé pour le stockage des jeux de données d'entraînement et des points de contrôle des modèles.

Utilisation de la bibliothèque SageMaker AI de parallélisme distribué des données (SMDDP)

La bibliothèque SMDDP améliore la communication entre les nœuds avec des implémentations d’opérations de communication collective AllReduce et AllGather optimisées pour l’infrastructure réseau AWS et la topologie d’instance de machine learning Amazon SageMaker AI. Vous pouvez utiliser la bibliothèque SMDDP comme système dorsal des packages d’entraînement distribué basés sur PyTorch : PyTorch Distributed Data Parallel (DDP), PyTorch Fully Sharded Data Parallelism (FSDP), DeepSpeed et Megatron-DeepSpeed. L’exemple de code suivant montre comment définir un estimateur PyTorch pour lancer une tâche d’entraînement distribué sur deux instances ml.p4d.24xlarge.

from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", # Activate distributed training with SMDDP distribution={ "pytorchddp": { "enabled": True } } # mpirun, activates SMDDP AllReduce OR AllGather # distribution={ "torch_distributed": { "enabled": True } } # torchrun, activates SMDDP AllGather # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } # mpirun, activates SMDDP AllReduce OR AllGather )

Pour découvrir comment préparer votre script d’entraînement et lancer une tâche d’entraînement distribué de parallélisme des données sur SageMaker AI, consultez Exécution d’entraînements distribués avec la bibliothèque SageMaker AI de parallélisme distribué des données.

Utilisation de la bibliothèque SageMaker AI de parallélisme des modèles (SMP)

SageMaker fournit la bibliothèque SMP et prend en charge diverses techniques d’entraînement distribué, telles que le parallélisme partitionné des données, le parallélisme de pipeline, le parallélisme de tenseur, le partitionnement de l’état de l’optimiseur, etc. Pour en savoir plus sur ce que la bibliothèque SMP propose, consultez Principales fonctions de la bibliothèque de parallélisme de modèles SageMaker.

Pour utiliser la bibliothèque SageMaker AI de parallélisme des modèles, configurez le paramètre distribution des estimateurs du cadre SageMaker AI. Les estimateurs de cadre pris en charge sont PyTorch et TensorFlow. L'exemple de code suivant montre comment construire un estimateur de cadre pour l'entraînement distribué à l'aide de la bibliothèque de parallélisme de modèles sur deux instances ml.p4d.24xlarge.

from sagemaker.framework import Framework distribution={ "smdistributed": { "modelparallel": { "enabled":True, "parameters": { ... # enter parameter key-value pairs here } }, }, "mpi": { "enabled" : True, ... # enter parameter key-value pairs here } } estimator = Framework( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution=distribution )

Pour découvrir comment adapter votre script d’entraînement, configurer les paramètres de distribution dans la classe estimator et lancer une tâche d’entraînement distribué, consultez la bibliothèque SageMaker AI de parallélisme des modèles (consultez également Distributed Training APIs dans la documentation du kit SageMaker Python SDK).

Utilisation des frameworks d'entraînement distribué open source

SageMaker AI prend également en charge les options suivantes pour faire fonctionner mpirun et torchrun dans le système dorsal.

  • Pour utiliser PyTorch DistributedDataParallel (DDP) dans SageMaker AI avec le système dorsal mpirun, ajoutez distribution={"pytorchddp": {"enabled": True}} à votre estimateur PyTorch. Pour plus d’informations, consultez également PyTorch Distributed Training et l’argument distribution de SageMaker AI PyTorch Estimator dans la documentation du kit SageMaker Python SDK.

    Note

    Cette option est disponible avec la version 1.12.0 et ultérieure de PyTorch.

    from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"pytorchddp": {"enabled": True}} # runs mpirun in the backend )
  • SageMaker AI prend en charge le lanceur torchrun PyTorch pour l’entraînement distribué sur des instances Amazon EC2 basées sur GPU, telles que P3 et P4, ainsi que sur Trn1 alimenté par le dispositif AWS Trainium.

    Pour utiliser PyTorch DistributedDataParallel (DDP) dans SageMaker AI avec le système dorsal torchrun, ajoutez distribution={"torch_distributed": {"enabled": True}} à l’estimateur PyTorch.

    Note

    Cette option est disponible avec la version 1.13.0 et ultérieure de PyTorch.

    L’extrait de code suivant montre un exemple de construction d’un estimateur SageMaker AI PyTorch pour exécuter un entraînement distribué sur deux instances ml.p4d.24xlarge avec l’option de distribution torch_distributed.

    from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"torch_distributed": {"enabled": True}} # runs torchrun in the backend )

    Pour plus d’informations, consultez Distributed PyTorch Training et l’argument distribution de SageMaker AI PyTorch Estimator dans la documentation du kit SageMaker Python SDK.

    Notes pour l'entrainement distribué sur Trn1

    Chaque instance Trn1 comprend jusqu'à 16 dispositifs Trainium et chaque dispositif Trainium se compose de deux NeuronCores. Pour les spécifications des appareils AWS Trainium, consultez Trainium Architecture (Architecture Trainium) dans la documentation AWS Neuron.

    Pour entraîner sur les instances alimentées par Trainium, il vous suffit de spécifier le nom de code des instances Trn1, ml.trn1.*, sous forme de chaîne correspondant à l’argument instance_type de la classe d’estimateur SageMaker AI PyTorch. Pour trouver les types d'instances Trn1 disponibles, consultez Architecture AWS Trn1 dans la Documentation AWS Neuron (langue française non garantie).

    Note

    L'entraînement SageMaker sur les instances Amazon EC2 Trn1 est actuellement disponible uniquement pour le framework PyTorch dans les conteneurs AWS Deep Learning pour PyTorch Neuron à partir de la version v1.11.0. Pour trouver la liste complète des versions prises en charge de PyTorch Neuron, consultez Conteneurs Neuron dans le référentiel GitHub de conteneurs AWS Deep Learning (langue française non garantie).

    Lorsque vous lancez une tâche d’entraînement sur des instances Trn1 à l’aide du kit SageMaker Python SDK, SageMaker AI sélectionne et exécute automatiquement le conteneur approprié parmi les conteneurs Neuron fournis par AWS Deep Learning Containers. Les conteneurs Neuron sont préemballés avec des paramètres d'environnement d'entraînement et des dépendances pour faciliter l'adaptation de votre tâche d'entraînement à la plateforme d'entraînement SageMaker et aux instances Amazon EC2 Trn1.

    Note

    Pour exécuter votre tâche d’entraînement PyTorch sur des instances Trn1 avec SageMaker AI, vous devez modifier votre script d’entraînement pour initialiser les groupes de processus avec le système dorsal xla, et utiliser PyTorch/XLA. Pour faciliter le processus d'adoption du XLA, le kit SDK AWS Neuron fournit PyTorch Neuron qui utilise XLA pour convertir les opérations PyTorch en instructions Trainium. Pour découvrir comment modifier votre script d'entraînement, consultez Guide du développeur pour l'entraînement avec PyTorch Neuron (torch-neuronx) dans la Documentation AWS Neuron (langue française non garantie).

    Pour plus d’informations, consultez Distributed Training with PyTorch Neuron on Trn1 instances et l’argument distribution de SageMaker AI PyTorch Estimator dans la documentation du kit SageMaker Python SDK.

  • Pour utiliser MPI dans SageMaker AI, ajoutez distribution={"mpi": {"enabled": True}} à votre estimateur. L'option de distribution MPI est disponible pour les cadres suivants : MXNet, PyTorch et TensorFlow.

  • Pour utiliser un serveur de paramètres dans SageMaker AI, ajoutez distribution={"parameter_server": {"enabled": True}} à votre estimateur. L'option du serveur de paramètres est disponible pour les cadres suivants : MXNet, PyTorch et TensorFlow.

    Astuce

    Pour plus d'informations sur l'utilisation des options MPI et du serveur de paramètres par cadre, utilisez les liens suivants vers la documentation du kit SDK Python SageMaker.