Commencez par une formation distribuée sur 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.

Commencez par une formation distribuée sur Amazon SageMaker AI

La page suivante fournit des informations sur les étapes nécessaires pour démarrer avec la formation distribuée 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 de formation distribués.

Les bibliothèques de formation distribuées basées sur l' SageMaker IA sont optimisées pour l'environnement de SageMaker formation, aident à adapter vos tâches de formation distribuées à l' SageMaker IA et améliorent la vitesse et le débit de formation. Les offrent des stratégies d'entraînement parallèle de données et de modèles. Ils combinent des technologies logicielles et matérielles pour améliorer les communications entre nœuds GPU et entre nœuds, et étendent les capacités de formation de l' SageMaker IA grâce à des options intégrées qui nécessitent des modifications de code minimales dans vos scripts d'entraînement. 

Avant de commencer

SageMaker La formation prend en charge la formation distribuée sur une seule instance ainsi que sur plusieurs instances, afin que vous puissiez exécuter des formations de toutes tailles à grande échelle. Nous vous recommandons d'utiliser les classes d'estimateur du framework telles que PyTorchet TensorFlowdans SageMaker PythonSDK, qui sont des lanceurs de tâches de formation proposant diverses options de formation distribuées. Lorsque vous créez un objet estimateur, celui-ci met en place une infrastructure de formation distribuée, l'exécute CreateTrainingJob API dans le backend, trouve la région dans laquelle se déroule votre session en cours et extrait l'un des conteneurs d'apprentissage AWS profond prédéfinis, préemballés avec un certain nombre de bibliothèques, notamment des cadres d'apprentissage profond, des cadres de formation distribués et le pilote. EFA Si vous souhaitez monter un système de FSx fichiers sur les instances de formation, vous devez transmettre votre identifiant de VPC sous-réseau et de groupe de sécurité à l'estimateur. Avant d'exécuter votre tâche de formation distribuée dans le domaine de l' SageMaker IA, 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 utilisez plusieurs instances (également appelées nœuds), il est important de comprendre le réseau qui connecte les instances, comment elles lisent les données d'entraînement et comment elles partagent les informations entre elles. Par exemple, lorsque vous exécutez une tâche de formation parallèle aux données distribuée, un certain nombre de facteurs, tels que la communication entre les nœuds d'un cluster de calcul pour exécuter l'AllReduceopération et le transfert de données entre les nœuds et le stockage des données dans Amazon Simple Storage Service ou Amazon FSx for Lustre, jouent un rôle crucial pour optimiser l'utilisation des ressources informatiques et accélérer la vitesse d'entraînement. Pour réduire les frais de communication, assurez-vous de configurer les instances, le VPC sous-réseau et le stockage des données dans la même Région AWS zone de disponibilité.

GPUinstances dotées d'un réseau plus rapide et d'un 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ées sur plusieurs nœuds pour entraîner de grands modèles, tels que les grands modèles de langage (LLMs) et les modèles de diffusion, qui nécessitent une commutation inter-nœuds plus rapide, nous recommandons des GPUinstances EFA compatibles prises en charge par l'IA. SageMaker En particulier, pour réaliser la tâche de formation distribuée la plus performante en matière d' SageMaker IA, nous recommandons les instances P4d et P4de équipées de l'A100. NVIDIA GPUs 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 des données, nous recommandons Amazon FSx for Lustre, qui fournit un débit élevé pour le stockage des ensembles de données de formation et des points de contrôle des modèles.

Utiliser la bibliothèque SageMaker AI Distributed Data Parallelism () SMDDP

La SMDDP bibliothèque améliore la communication entre les nœuds grâce à des implémentations AllReduce et à des opérations de communication AllGather collective optimisées pour l'infrastructure AWS réseau et la topologie des instances Amazon SageMaker AI ML. Vous pouvez utiliser la SMDDPbibliothèque en tant que backend de modules de formation distribués PyTorch basés sur des modules : PyTorch distributed data parallel (DDP), PyTorch fully sharded data parallelism (FSDP) et Megatron- DeepSpeed. DeepSpeed L'exemple de code suivant montre comment définir un PyTorch estimateur pour lancer une tâche de formation distribuée sur deux ml.p4d.24xlarge instances.

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 savoir comment préparer votre script de formation et lancer une tâche de formation parallèle aux données distribuée sur l' SageMaker IA, consultezOrganisez une formation distribuée avec la bibliothèque de parallélisme de données distribué basée sur l' SageMaker IA.

Utiliser la bibliothèque de parallélisme du modèle SageMaker AI () SMP

SageMaker L'IA fournit la SMP bibliothèque et prend en charge diverses techniques de formation distribuées, telles que le parallélisme des données fragmentées, le pipeline, le parallélisme des tenseurs, le partitionnement de l'état de l'optimiseur, etc. Pour en savoir plus sur les offres de la SMP bibliothèque, consultezPrincipales fonctionnalités de la bibliothèque de parallélisme des SageMaker modèles.

Pour utiliser la bibliothèque de parallélisme des modèles d' SageMaker IA, configurez le distribution paramètre des estimateurs du framework d' SageMaker IA. Les estimateurs de cadre pris en charge sont PyTorchet. 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 savoir comment adapter votre script d'entraînement, configurer les paramètres de distribution dans la estimator classe et lancer une tâche de formation distribuée, consultez la bibliothèque de modèles de parallélisme de l'SageMaker IA (voir également Formation distribuée APIs dans la SDKdocumentation SageMaker Python).

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

SageMaker L'IA prend également en charge les options suivantes pour fonctionner mpirun et torchrun dans le backend.

  • Pour utiliser PyTorch DistributedDataParallel (DDP) dans l' SageMaker IA avec le mpirun backend, ajoutez-le distribution={"pytorchddp": {"enabled": True}} à votre PyTorch estimateur. Pour plus d'informations, consultez également l'distributionargument de PyTorch Distributed Training et SageMaker AI PyTorch Estimator dans la documentation SageMaker Python SDK.

    Note

    Cette option est disponible pour les versions PyTorch 1.12.0 et ultérieures.

    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 L'IA prend en charge le PyTorch torchrunlanceur pour la formation distribuée sur des EC2 instances Amazon GPU basées sur des instances Amazon, telles que P3 et P4, ainsi que sur Trn1 alimenté par l'appareil Trainium.AWS

    Pour utiliser PyTorch DistributedDataParallel (DDP) dans l' SageMaker IA avec le torchrun backend, ajoutez-le distribution={"torch_distributed": {"enabled": True}} à l' PyTorch estimateur.

    Note

    Cette option est disponible pour les versions PyTorch 1.13.0 et ultérieures.

    L'extrait de code suivant montre un exemple de création d'un PyTorch estimateur d' SageMaker IA pour exécuter un entraînement distribué sur deux ml.p4d.24xlarge instances 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 l'distributionargument de Distributed PyTorch Training and SageMaker AI PyTorch Estimator dans la documentation SageMaker Python SDK.

    Notes pour l'entrainement distribué sur Trn1

    Une instance Trn1 comprend jusqu'à 16 appareils Trainium, et chaque appareil Trainium en comprend deux. NeuronCores Pour les spécifications des appareils AWS Trainium, voir Architecture Trainium dans la documentation AWS Neuron.

    Pour vous entraîner sur les instances alimentées par Trainium, il vous suffit de spécifier le code d'instance Trn1ml.trn1.*, sous forme de chaîne à côté de l'instance_typeargument de la SageMaker classe d'estimateur 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

    SageMaker La formation sur les instances Amazon EC2 Trn1 est actuellement disponible uniquement pour le PyTorch framework AWS Deep Learning Containers for PyTorch Neuron à partir de la version 1.11.0. Pour obtenir la liste complète des versions prises en charge de PyTorch Neuron, consultez Neuron Containers dans le référentiel AWS Deep Learning Containers GitHub .

    Lorsque vous lancez une tâche de formation sur des instances Trn1 à l'aide de SageMaker PythonSDK, l' SageMaker IA sélectionne et exécute automatiquement le bon conteneur à partir des Neuron Containers fournis par AWS Deep Learning Containers. Les conteneurs Neuron sont préemballés avec les paramètres et les dépendances de l'environnement de formation pour faciliter l'adaptation de votre tâche de formation à la plateforme de SageMaker formation et aux instances Amazon EC2 Trn1.

    Note

    Pour exécuter votre tâche de PyTorch formation sur des instances Trn1 avec SageMaker AI, vous devez modifier votre script d'entraînement pour initialiser les groupes de processus avec le xla backend et utiliser/. PyTorch XLA Pour soutenir le processus XLA d'adoption, le AWS Neuron SDK fournit PyTorch Neuron qui permet de convertir XLA les PyTorch opérations en instructions Trainium. Pour savoir comment modifier votre script d'entraînement, consultez le guide du développeur pour l'entraînement avec PyTorch Neuron (torch-neuronx) dans la documentation de AWS Neuron.

    Pour plus d'informations, consultez la section Entraînement distribué avec PyTorch Neuron sur les instances Trn1 et l'SageMaker argument AI PyTorch Estimator distribution dans la documentation Python. SageMaker SDK

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

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

    Astuce

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