Comment Latent Space a utilisé la bibliothèque de parallélisme de modèles Amazon SageMaker pour repousser les frontières des transformateurs à grande échelle

Nœud source: 1204406

Ce blog est co-écrit par Sarah Jane Hong CSO, Darryl Barnhart CTO et Ian Thompson PDG de Latent Space et Prem Ranga d'AWS.

L'espace latent est une représentation cachée d'idées abstraites apprises par les modèles d'apprentissage automatique (ML). Par exemple, «chien», «fleur» ou «porte» sont des concepts ou des emplacements dans l'espace latent. À Espace latent, nous travaillons sur un moteur qui vous permet de manipuler et d'explorer cet espace avec à la fois des invites linguistiques et visuelles. L'équipe Latent Space est issue de deux domaines qui se recoupent depuis longtemps: le graphisme et le traitement du langage naturel (PNL). Traditionnellement, les modalités des images et du texte ont été traitées séparément, chacune avec sa propre histoire d'ingénierie des fonctionnalités complexes, coûteuses et fragiles. Les tâches de PNL telles que la compréhension de documents ou la réponse à des questions ont généralement peu en commun avec les tâches de vision telles que la compréhension de scènes ou le rendu, et nous utilisons généralement des approches et des modèles très différents pour chaque tâche. Mais cela change rapidement.

Cette fusion des modalités dans un seul espace latent partagé ouvre une nouvelle génération d'applications créatives et commerciales, du jeu à la compréhension de documents. Mais le déverrouillage de ces nouvelles applications dans un seul modèle ouvre de nouveaux défis de mise à l'échelle, comme souligné dans «The Bitter Lesson» de Richard Sutton, et le travail passionnant de ces dernières années sur les lois de mise à l'échelle. Pour rendre cela possible, Latent Space travaille sur des recherches de pointe pour fusionner ces modalités dans un seul modèle, mais aussi à l'échelle et le faire efficacement. C'est là qu'intervient le parallélisme des modèles.

Amazon Sage MakerLe partitionnement automatisé unique des modèles et l'approche efficace de pipelining ont rendu notre adoption du parallélisme de modèle possible avec peu d'efforts d'ingénierie, et nous avons étendu notre formation des modèles au-delà d'un milliard de paramètres (nous utilisons le Instances p4d.24xlarge A100), ce qui est une exigence importante pour nous. En outre, nous avons observé que lors de l'entraînement avec une configuration d'entraînement à 16 nœuds et huit GPU avec la bibliothèque de parallélisme de modèle SageMaker, nous avons enregistré une amélioration de 38% de l'efficacité par rapport à nos précédentes sessions d'entraînement.

Défis liés à la formation de transformateurs à grande échelle

Chez Latent Space, nous fusionnons langage et vision dans des modèles de transformateurs avec des milliards de paramètres pour prendre en charge des cas d'utilisation «hors distribution» issus de l'imagination d'un utilisateur ou qui se produiraient dans le monde réel mais pas dans nos données d'entraînement. Nous relevons les défis inhérents à la mise à l'échelle vers des milliards de paramètres et au-delà de deux manières différentes:

Les techniques de recherche d'informations sont depuis longtemps un élément clé des moteurs de recherche et des tâches d'assurance qualité. Récemment, des progrès passionnants ont été réalisés en combinant des techniques IR classiques avec des transformateurs modernes, en particulier pour les tâches de réponse aux questions où un modèle est formé conjointement avec un récupérateur neuronal qui apprend à récupérer des documents pertinents pour aider à répondre aux questions. Pour un aperçu, voir les travaux récents de FAIR dans Récupération de la génération augmentée: rationalisation de la création de modèles intelligents de traitement du langage naturel ainsi que Fusion-dans-décodeur, Google Brain DOMAINEet Nvidia Récupérateur de neurones pour répondre aux questions.

Bien que les techniques de récupération augmentées contribuent à réduire les coûts et l'efficacité, nous ne sommes toujours pas en mesure d'ajuster le modèle sur un seul GPU pour notre plus grand modèle. Cela signifie que nous devons utiliser le parallélisme de modèle pour l'entraîner. Cependant, en raison de la nature de notre architecture de récupération, la conception de notre fractionnement de modèle était difficile en raison des interdépendances entre les contextes récupérés à travers les entrées de formation. De plus, même si nous déterminons comment nous divisons notre modèle, l'introduction du parallélisme de modèle était une tâche d'ingénierie importante pour nous à faire manuellement tout au long de notre cycle de vie de recherche et développement.

La bibliothèque de parallélisme de modèles SageMaker

Le parallélisme de modèle est le processus de division d'un modèle entre plusieurs appareils ou nœuds (tels que des instances équipées de GPU) et de création d'un pipeline efficace pour entraîner le modèle sur ces appareils afin de maximiser l'utilisation du GPU. Le bibliothèque de parallélisme de modèles dans SageMaker rend le parallélisme de modèle plus accessible en fournissant un fractionnement de modèle automatisé, également appelé partitionnement automatisé des modèles et planification sophistiquée de l'exécution du pipeline. Les algorithmes de fractionnement de modèle peuvent optimiser la vitesse ou la consommation de mémoire. La bibliothèque utilise un algorithme de partitionnement qui équilibre la mémoire, minimise la communication entre les périphériques et optimise les performances.

Partitionnement automatisé des modèles

Pour notre cas d'utilisation PyTorch, la bibliothèque parallèle de modèles exécute en interne une étape de traçage (dans la première étape d'apprentissage) qui construit le graphe de modèle et détermine les formes du tenseur et des paramètres. Il construit ensuite un arbre, qui se compose des éléments imbriqués nn.Module objets dans le modèle, ainsi que des données supplémentaires collectées à partir du traçage, telles que la quantité de nn.Parameters, et runtime pour chaque nn.Module.

La bibliothèque parcourt ensuite cet arbre à partir de la racine et exécute un algorithme de partitionnement qui équilibre la charge de calcul et l'utilisation de la mémoire, et minimise la communication entre les instances. Si plusieurs nn.Modules partagent le même nn.Parameter, ces modules sont placés sur le même appareil pour éviter de conserver plusieurs versions du même paramètre. Une fois la décision de partitionnement prise, les modules et poids affectés sont chargés sur leurs périphériques.

Planification de l'exécution du pipeline

Une autre caractéristique principale de la bibliothèque parallèle de modèles distribués SageMaker est exécutions en pipeline, qui déterminent l'ordre dans lequel les calculs sont effectués et les données sont traitées sur les appareils pendant l'apprentissage du modèle. Le pipelining est basé sur la division d'un mini-lot en microbatchs, qui sont introduits dans le pipeline de formation un par un et suivent un calendrier d'exécution défini par le runtime de la bibliothèque.

Le pipeline microbatch garantit que tous les GPU sont pleinement utilisés, ce que nous aurions à construire nous-mêmes, mais avec la bibliothèque de parallélisme de modèles, cela se passe parfaitement dans les coulisses. Enfin, nous pouvons utiliser Amazon FSx, ce qui est important pour nous assurer que nos vitesses de lecture sont rapides compte tenu du nombre de fichiers lus lors de l'apprentissage d'un modèle multimodal avec récupération.

Architecture de formation

Le diagramme suivant représente la manière dont nous configurons notre architecture de formation. Nos principaux objectifs étaient d'améliorer la vitesse de formation et de réduire les coûts. Les transformateurs d'image et de langage que nous formons sont très complexes, avec un nombre significativement élevé de couches et de poids à l'intérieur, fonctionnant à des milliards de paramètres, ce qui les rend incapables de tenir dans la mémoire d'un seul nœud. Chaque nœud porte un sous-ensemble du modèle, à travers lequel les données circulent et les transformations sont partagées et compilées. Nous installons 16 p4d.24xlarge instances chacune avec huit GPU utilisant la représentation d'architecture suivante:

Au fur et à mesure que nous développons nos modèles, une tendance courante consiste à stocker tout dans les poids du réseau. Cependant, à des fins pratiques, nous voulons augmenter nos modèles pour apprendre à rechercher des contextes pertinents pour vous aider dans la tâche de rendu. Cela nous permet de réduire nos coûts de service sans compromettre la qualité de l'image. Nous utilisons un grand modèle PNL basé sur un transformateur et, comme mentionné précédemment, nous avons observé une augmentation de 38% de l'efficacité de la formation avec la bibliothèque de parallélisme de modèle SageMaker, comme le montre ce qui suit:

  • Nous avons besoin d'un allreduce pour chaque calcul dans le cas du parallélisme au niveau du tenseur. Cela prend O (log_2 n) étapes parallèles. Soit n machines effectuant O (n) pas, pour O (n log_2 n) opérations totales.
  • Pour le parallélisme de pipeline, nous avons besoin d'étapes parallèles O (1) pour transmettre les données dans le pipeline
  • Étant donné 16 machines avec huit GPU, nous avons un coût O (1) pour un pipeline parallèle et un coût O (log_2 (8)) = O (3) pour un modèle parallèle en profondeur.
  • Dans ce cas, nous voyons que le coût du réseau est réduit à 1/3 en passant au pipeline parallèle que ce que nous utilisons avec le parallélisme du modèle SageMaker, et le coût global de formation réduit à 1/2 + 1/2 * 1 / log_2 (16 ) = 0.625 du coût initial conduisant à une amélioration de l'efficacité correspondante.

En général, lorsque le besoin justifie une formation distribuée (problèmes de mise à l'échelle de la taille du modèle ou des données d'entraînement), nous pouvons suivre un ensemble de bonnes pratiques pour déterminer quelle approche fonctionne le mieux.

Bonnes pratiques pour la formation distribuée

Sur la base de notre expérience, nous suggérons de commencer par une approche parallèle de données distribuées. Parallélisme de données distribué tel que le Bibliothèque parallèle de données distribuées SageMaker résout la plupart des problèmes de mise en réseau avec les répliques de modèles, vous devez donc ajuster les modèles dans le plus petit nombre de nœuds, puis les répliquer pour mettre à l'échelle la taille du lot si nécessaire.

Si vous manquez de mémoire pendant l'entraînement, comme nous l'avons fait dans ce scénario, vous souhaiterez peut-être passer à une approche parallèle de modèle. Cependant, considérez ces alternatives avant d'essayer la formation parallèle de modèle:

  • Sur le matériel équipé de NVIDIA Tensor Core, utilisez entraînement de précision mixte pour créer une accélération et réduire la consommation de mémoire.
  • Réduisez la taille du lot (ou réduisez la résolution d'image ou la longueur de la séquence NLP, si possible).

De plus, nous préférons les conceptions de modèle qui n'ont pas de normalisation par lots comme décrit dans Reconnaissance d'image à grande échelle haute performance sans normalisation. Si cela ne peut être évité, assurez-vous que la normalisation des lots est synchronisée entre les appareils. Lorsque vous utilisez la formation distribuée, votre lot est divisé entre les GPU, de sorte que des statistiques de lot précises nécessitent une synchronisation sur tous les appareils. Sans cela, la normalisation aura une erreur accrue et par conséquent entravera la convergence.

Commencez par l'entraînement parallèle du modèle lorsque vous avez les contraintes suivantes:

  • Votre modèle ne tient pas sur un seul appareil
  • En raison de la taille de votre modèle, vous êtes confronté à des limitations dans le choix de tailles de lots plus grandes, par exemple si les poids de vos modèles occupent la majeure partie de la mémoire de votre GPU et que vous êtes obligé de choisir une taille de lot plus petite et sous-optimale.

Lors de l'optimisation des performances, procédez comme suit:

Lors de l'optimisation des coûts, utilisez les instances Spot gérées par SageMaker pour la formation. Cela peut optimiser le coût des modèles de formation jusqu'à 90% par rapport aux instances à la demande. SageMaker gère les interruptions Spot en votre nom.

Autres facteurs à considérer:

  • Dans un nœud lorsqu'il y a une interconnexion rapide, c'est plus nuancé. Si la capacité du réseau intra-nœud est suffisante, le remaniement des données pour un calcul plus optimal peut présenter un avantage.
  • Si les activations sont beaucoup plus importantes que les tenseurs de poids, un optimiseur fragmenté peut également aider. Prière de se référer à Zéro pour plus de détails.

Le tableau suivant fournit des scénarios de mise à l'échelle de la formation courants et explique comment les configurer sur AWS.

Scénario Quand s'applique-t-il? Solution
Évolutivité d'un seul GPU à plusieurs GPU Lorsque la quantité de données d'entraînement ou la taille du modèle est trop importante Passez à une instance multi-GPU telle que p3.16xlarge, qui dispose de huit GPU, avec les données et le traitement répartis sur les huit GPU, et produisant une accélération quasi linéaire du temps nécessaire à l'entraînement de votre modèle.
Mise à l'échelle d'une seule instance à plusieurs instances Lorsque les besoins de mise à l'échelle vont au-delà de la modification de la taille de l'instance Mettez à l'échelle le nombre d'instances avec la fonction d'estimation du SDK SageMaker Python en définissant votre instance_type sur p3.16xlarge et instance_count sur 2. Au lieu des huit GPU sur un seul p3.16xlarge, vous disposez de 16 GPU répartis sur deux instances identiques. Pensez à utiliser le Bibliothèque parallèle de données distribuées SageMaker.
Sélection d'un modèle d'approche parallèle pour la formation En cas d'erreurs de mémoire insuffisante pendant l'entraînement Passer à une approche parallèle de modèle à l'aide de Bibliothèque parallèle de modèles distribués SageMaker.
Performances du réseau pour les communications inter-nœuds Pour la formation distribuée avec plusieurs instances (par exemple, communication entre les nœuds du cluster lors d'une opération AllReduce) Vos instances doivent se trouver dans la même région et la même zone de disponibilité. Lorsque vous utilisez le SDK SageMaker Python, cela est géré pour vous. Vos données d'entraînement doivent également se trouver dans la même zone de disponibilité. Pensez à utiliser le Bibliothèque parallèle de données distribuées SageMaker.
GPU, réseau et stockage optimisés Pour les besoins de formation distribués à grande échelle Le type d'instance p4d.24xlarge a été conçu pour un stockage local rapide et un fond de panier réseau rapide avec jusqu'à 400 gigabits, et nous le recommandons vivement comme l'option la plus performante pour la formation distribuée.

Conclusion

Avec la bibliothèque parallèle de modèles de SageMaker, nous bénéficions de nombreux avantages prêts à l'emploi, tels que le partitionnement automatisé des modèles et le pipelining efficace. Dans cet article, nous avons partagé nos défis avec notre cas d'utilisation du ML, nos considérations sur les différentes approches de formation et la façon dont nous avons utilisé la bibliothèque de parallélisme de modèles Amazon SageMaker pour accélérer notre formation. Mieux encore, il ne faut désormais que quelques heures pour adopter les meilleures pratiques pour le parallélisme des modèles et les améliorations de performances décrites ici. Si cet article vous aide ou vous inspire à résoudre un problème, nous aimerions en entendre parler! Veuillez partager vos commentaires et vos commentaires.

Bibliographie

Pour plus d'informations, veuillez consulter les informations suivantes:


À propos des auteurs

Prém Ranga est un architecte de solutions d'entreprise basé à Atlanta, en Géorgie. Il fait partie de la communauté technique du Machine Learning et adore travailler avec les clients sur leur parcours ML et IA. Prem est passionné de robotique, est un chercheur de véhicules autonomes et a également construit les Beer Pours contrôlés par Alexa à Houston et dans d'autres endroits.

Sarah Jane Hong est le co-fondateur et directeur scientifique de Latent Space. Son parcours se situe à l'intersection de l'interaction homme-machine et de l'apprentissage automatique. Elle a précédemment dirigé la recherche PNL chez Sonar (acquis par Marchex), qui sert les entreprises du domaine de l'IA conversationnelle. Elle est également un développeur AR / VR estimé, ayant reçu des prix et des bourses d'Oculus, Mozilla Mixed Reality et Microsoft Hololens.

Darryl Barnhart est le co-fondateur et directeur de la technologie chez Latent Space. Il est un développeur chevronné avec une expérience de l'accélération GPU, de l'infographie, des données à grande échelle et de l'apprentissage automatique. D'autres passions incluent les mathématiques, le développement de jeux et l'étude de l'information.

Ian Thompson est le fondateur et PDG de Latent Space. Ian est un ingénieur et chercheur inspiré par le «possible adjacent» - des technologies sur le point d'avoir un grand impact sur nos vies. Actuellement axé sur la simplification et la mise à l'échelle de l'apprentissage de la représentation multimodale pour aider à créer une IA sûre et créative. Auparavant, il a aidé à bâtir des entreprises en graphisme / réalité virtuelle (AltspaceVR, racheté par Microsoft) et en éducation / PNL (HSE).

Source: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- transformateurs d'échelle /

Horodatage:

Plus de Blog sur l'apprentissage automatique AWS