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.
Concepts de parallélisme des modèles
Le parallélisme des modèles est une méthode d'apprentissage distribuée dans laquelle le modèle d'apprentissage profond (DL) est partitionné sur plusieurs GPUs instances et. La SageMaker Model Parallel Library v2 (SMP v2) est compatible avec PyTorch APIs les fonctionnalités natives. Cela vous permet d'adapter facilement votre script d'entraînement FSDP ( PyTorch Fully Sharded Data Parallel) à la SageMaker plateforme d'entraînement et de tirer parti de l'amélioration des performances apportée par SMP v2. Cette page de présentation fournit un aperçu global du parallélisme des modèles et une description de la façon dont il peut aider à surmonter les problèmes liés à l’entraînement de modèles de deep learning (DL) qui sont généralement de très grande taille. Il fournit également des exemples de ce que propose la bibliothèque SageMaker model parallel pour aider à gérer les stratégies de modélisation parallèle et la consommation de mémoire.
Qu’est-ce que le parallélisme des modèles ?
L'augmentation de la taille des modèles de deep learning (couches et paramètres) permet une meilleure précision pour des tâches complexes telles que la reconnaissance d'image et le traitement du langage naturel. Toutefois, il y a une limite à la taille maximale de modèle que vous pouvez faire tenir dans la mémoire d'un GPU individuel. Lors de l'entraînement de modèles DL, les limites de mémoire du GPU peuvent constituer un goulet d'étranglement :
-
Elles limitent la taille du modèle que vous pouvez entraîner, car l’empreinte mémoire d’un modèle évolue proportionnellement au nombre de paramètres.
-
Elles limitent la taille de lot par GPU pendant l'entraînement, ce qui réduit l'utilisation du GPU et l'efficacité de l'entraînement.
Pour surmonter les limites associées à l'entraînement d'un modèle sur un seul GPU, l' SageMaker IA fournit la bibliothèque de modèles parallèles pour aider à distribuer et à entraîner efficacement les modèles DL sur plusieurs nœuds de calcul. En outre, cette bibliothèque vous permet de bénéficier d’un entraînement distribué optimisé à l’aide de dispositifs compatibles EFA, qui améliorent les performances de la communication entre les nœuds avec une faible latence, un débit élevé et le contournement du système d’exploitation.
Estimation des besoins en mémoire avant d’utiliser le parallélisme des modèles
Avant d'utiliser la bibliothèque SageMaker model parallel, considérez les points suivants pour vous faire une idée des besoins en mémoire liés à l'entraînement de grands modèles DL.
Pour une tâche d'entraînement utilisant une précision mixte automatique telle que les optimiseurs float16 bfloat16 (FP16BF16) ou () et Adam, la mémoire GPU requise par paramètre est d'environ 20 octets, que nous pouvons décomposer comme suit :
-
BF16 Paramètre FP16 ou ~ 2 octets
-
Un FP16 ou un BF16 gradient d'environ 2 octets
-
Un état d' FP32 optimisation d'environ 8 octets basé sur les optimiseurs Adam
-
Une FP32 copie du paramètre d'environ 4 octets (nécessaire pour l'opération
optimizer apply(OA)) -
Une FP32 copie du gradient d'environ 4 octets (nécessaire pour l'opération OA)
Même un modèle DL relativement petit, avec 10 milliards de paramètres, peut nécessiter au moins 200 Go de mémoire, ce qui dépasse nettement la mémoire GPU standard (par exemple, NVIDIA A100 avec 40/80 Go de mémoire) disponible sur un GPU individuel. En plus des besoins en mémoire pour les états de modèle et d’optimiseur, il existe d’autres consommateurs de mémoire, tels que les activations générées dans la transmission vers l’avant. La mémoire requise peut être largement supérieure à 200 Go.
Pour les formations distribuées, nous vous recommandons d'utiliser des instances Amazon EC2 P4 et P5 dotées respectivement de NVIDIA A100 et H100 Tensor Core. GPUs Pour plus de détails sur les spécifications telles que les cœurs de processeur, la RAM, le volume de stockage attaché et la bande passante du réseau, consultez la section Calcul accéléré de la page Types d'instances Amazon EC2
Même avec les instances de calcul accéléré, il est évident que les modèles avec environ 10 milliards de paramètres, tels que Megatron-LM et T5, et des modèles encore plus grands avec des centaines de milliards de paramètres, tels que GPT-3, ne peuvent pas faire tenir les réplicas de modèles dans chaque dispositif GPU.
Utilisation par la bibliothèque des techniques d’économie de mémoire et de parallélisme des modèles
La bibliothèque comprend différents types de fonctionnalités de parallélisme de modèle et de fonctionnalités d'économie de mémoire, telles que le partitionnement de l'état de l'optimiseur, les points de contrôle d'activation et le déchargement d'activation. Toutes ces techniques peuvent être combinées pour entraîner efficacement des modèles de grande taille composés de centaines de milliards de paramètres.
Rubriques
Parallélisme des données partitionnées
Le parallélisme des données partitionnées est une technique d'entraînement distribuée économisant de la mémoire qui divise l'état d'un modèle (paramètres du modèle, dégradés et états de l'optimiseur) au sein d'un groupe parallèle de données. GPUs
SMP v2 implémente le parallélisme partitionné des données via FSDP, et l’étend pour implémenter la stratégie de partitionnement hybride sensible à l’échelle décrite dans le billet de blog Near-linear scaling of gigantic-model training on AWS
Vous pouvez appliquer le parallélisme partitionné des données à votre modèle en tant que stratégie autonome. De plus, si vous utilisez les instances GPU les plus performantes équipées du NVIDIA A100 Tensor Core GPUsml.p4de.24xlarge, ml.p4d.24xlarge vous pouvez profiter d'une vitesse d'entraînement améliorée grâce au AllGather fonctionnement proposé par la bibliothèque de parallélisme des SageMaker données (SMDDP).
Pour explorer davantage le parallélisme partitionné des données et découvrir comment le configurer ou utiliser une combinaison du parallélisme partitionné des données et d’autres techniques telles que le parallélisme de tenseur et l’entraînement de précision mixte, consultez Parallélisme partitionné des données hybrides.
Parallélisme expert
SMP v2 s'intègre à NVIDIA Megatron
Un modèle MoE est un type de modèle de transformeur composé de plusieurs experts, chacun 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. Le parallélisme expert est une technique de parallélisme qui gère la division des experts d’un modèle MoE entre différents dispositifs GPU.
Pour découvrir comment entraîner des modèles MoE avec SMP v2, consultez Parallélisme expert.
Parallélisme de tenseur
Le parallélisme de tenseur divise les couches individuelles, ou nn.Modules, entre les dispositifs pour une exécution en parallèle. La figure suivante illustre l’exemple le plus simple de la façon dont la bibliothèque SMP divise un modèle à quatre couches pour obtenir un parallélisme de tenseur bidirectionnel ("tensor_parallel_degree": 2). Dans la figure suivante, les notations pour le groupe de parallélisme des modèles, le groupe de parallélisme de tenseur et le groupe de parallélisme des données sont respectivement MP_GROUP, TP_GROUP et DP_GROUP. Les couches de chaque réplique du modèle sont coupées en deux et réparties en deux GPUs. La bibliothèque gère la communication entre les réplicas de modèles distribués par tenseur.
Pour en savoir plus sur le parallélisme des tenseurs et les autres fonctionnalités permettant d'économiser de la mémoire PyTorch, et pour savoir comment définir une combinaison des fonctionnalités de base, voir. Parallélisme de tenseur
Points de contrôle d’activation et déchargement
Pour enregistrer la mémoire GPU, la bibliothèque prend en charge les points de contrôle d'activation afin d'éviter de stocker des activations internes dans la mémoire GPU pour les modules spécifiés par l'utilisateur pendant la transmission vers l'avant. La bibliothèque recalcule ces activations pendant la transmission vers l'arrière. En outre, avec le déchargement d’activation, elle décharge les activations stockées dans la mémoire du CPU et les récupère dans le GPU pendant la transmission vers l’arrière afin de réduire encore l’empreinte mémoire de l’activation. Pour plus d’informations sur l’utilisation de ces caractéristiques, consultez Points de contrôle d'activation et Déchargement d’activation.
Choix des techniques appropriées pour votre modèle
Pour plus d’informations sur le choix des bonnes techniques et configurations, consultez SageMaker meilleures pratiques en matière de parallélisme des modèles distribués.