Ces dernières années ont vu un développement rapide dans le domaine du traitement automatique du langage naturel (TAL). Alors que le matériel s'est amélioré, comme avec la dernière génération d'accélérateurs de NVIDIA et d'Amazon, les praticiens avancés de l'apprentissage automatique (ML) rencontrent encore régulièrement des problèmes lors de la mise à l'échelle de leurs grands modèles de langage sur plusieurs GPU.
Dans cet article de blog, nous résumons brièvement l'essor des modèles NLP à grande et petite échelle, principalement grâce à l'abstraction fournie par Hugging Face et avec le backend modulaire d'Amazon SageMaker. En particulier, nous soulignons le lancement de quatre fonctionnalités supplémentaires dans la bibliothèque parallèle de modèles SageMaker qui débloquent 175 milliards de paramètres de préformation et d'ajustement du modèle NLP pour les clients.
Nous avons utilisé cette bibliothèque sur la plateforme de formation SageMaker et atteint un débit de 32 échantillons par seconde sur 120 instances ml.p4d.24xlarge et 175 milliards de paramètres. Nous prévoyons que si nous augmentons ce nombre jusqu'à 240 instances, l'entraînement du modèle complet prendrait 25 jours.
Pour plus d'informations sur le parallélisme des modèles, consultez l'article Parallélisme des modèles Amazon SageMaker : un cadre général et flexible pour la formation de grands modèles.
Vous pouvez également voir le bloc-notes GPT2 que nous avons utilisé pour générer ces chiffres de performance sur notre GitHub référentiel.
Pour en savoir plus sur l'utilisation des nouvelles fonctionnalités dans le modèle parallèle SageMaker, reportez-vous à Fonctionnalités étendues de la bibliothèque parallèle de modèles SageMaker pour PyTorchet Utiliser avec le SDK SageMaker Python.
NLP sur Amazon SageMaker – Hugging Face et parallélisme des modèles
Si vous débutez avec Hugging Face et NLP, le point le plus important que vous devez savoir est que les applications utilisant le traitement du langage naturel (NLP) commencent à atteindre des performances de niveau humain. Ceci est largement piloté par un mécanisme d'apprentissage, appelé précaution, qui a donné naissance à un modèle d'apprentissage en profondeur, appelé transformateur, qui est beaucoup plus évolutif que les méthodes séquentielles d'apprentissage en profondeur précédentes. Le désormais célèbre Modèle BERT a été développé pour capitaliser sur le transformateur et a développé plusieurs tactiques PNL utiles en cours de route. Transformers et la suite de modèles, à la fois à l'intérieur et à l'extérieur de la PNL, qui ont tous été inspirés par BERT, sont le moteur principal de vos résultats de recherche Google, dans votre Résultats de traduction Googleet une foule de nouvelles startups.
SageMaker et Hugging Face se sont associés pour rendre cela plus facile que jamais pour les clients. Nous avons lancé des conteneurs d'apprentissage en profondeur (DLC) Hugging Face pour vous permettre de former et d'héberger des modèles pré-formés directement à partir de Hugging Face. référentiel de plus de 26,000 XNUMX modèles. Nous avons lancé le compilateur de formation SageMaker pour vous permettre d'accélérer la durée d'exécution de vos boucles d'entraînement Hugging Face jusqu'à 50 %. Nous avons également intégré le SDK Transformers phare de Hugging Face comprenant nos bibliothèques de formation distribuées pour rendre la mise à l'échelle de vos modèles NLP plus facile que jamais.
Pour plus d'informations sur les modèles Hugging Face Transformer sur Amazon SageMaker, consultez Prise en charge des modèles de transformateur de visage étreignant.
Nouvelles fonctionnalités pour la formation de modèles NLP à grande échelle avec la bibliothèque parallèle de modèles SageMaker
Lors d'AWS re:Invent 2020, SageMaker a lancé des bibliothèques distribuées qui offrent les meilleures performances sur le cloud pour la formation de modèles de vision par ordinateur tels que Masque-RCNN et des modèles PNL comme T5-3B. Cela est possible grâce à des primitives de communication améliorées qui sont 20 à 40 % plus rapides que NCCL sur AWS et à des techniques de distribution de modèles qui permettent à des modèles de langage extrêmement volumineux de s'adapter à des dizaines, des centaines ou des milliers de GPU.
La bibliothèque parallèle de modèles SageMaker (SMP) vous a toujours donné la possibilité de prendre votre modèle NLP prédéfini dans PyTorch, que ce soit via Hugging Face ou ailleurs, et de partitionner ce modèle sur plusieurs GPU dans votre cluster. Autrement dit, SMP décompose votre modèle en plus petits morceaux afin que vous ne rencontriez pas d'erreurs de mémoire insuffisante (OOM). Nous sommes heureux d'ajouter des techniques d'économie de mémoire supplémentaires qui sont essentielles pour les modèles à grande échelle, à savoir :
- Parallélisme tenseur
- Partage de l'état de l'optimiseur
- Point de contrôle d'activation
- Déchargement d'activation
Vous pouvez combiner ces quatre fonctionnalités pour utiliser la mémoire plus efficacement et former la prochaine génération de modèles NLP à grande échelle.
Entraînement distribué et parallélisme des tenseurs
Pour comprendre le parallélisme tenseur, il est utile de savoir qu'il existe de nombreux types de formation distribuée, ou parallélisme. Vous connaissez probablement déjà le type le plus courant, parallélisme des données. Le cœur du parallélisme des données fonctionne comme ceci : vous ajoutez un nœud supplémentaire à votre cluster, par exemple en passant d'une à deux instances ml.EC2 dans votre estimateur SageMaker. Ensuite, vous utilisez un framework parallèle de données comme Horovod, PyTorch Distributed Data Parallel ou SageMaker Distributed. Cela crée des répliques de votre modèle, une par accélérateur, et gère le partage des données vers chaque nœud, tout en rassemblant tous les résultats lors de l'étape de rétropropagation de votre réseau de neurones. Pensez à la descente de gradient distribuée. Le parallélisme des données est également populaire au sein des serveurs ; vous partagez des données dans tous les GPU, et parfois les CPU, sur tous vos nœuds. Le schéma suivant illustre le parallélisme des données.
Parallélisme du modèle est légèrement différent. Au lieu de faire des copies du même modèle, nous divisons votre modèle en morceaux. Ensuite, nous gérons son exécution, de sorte que vos données circulent toujours dans votre réseau de neurones exactement de la même manière mathématiquement, mais différentes parties de votre modèle reposent sur différents GPU. Si vous utilisez un ml.p3.8xlarge, vous avez quatre NVIDIA V100, vous voudrez donc probablement diviser votre modèle en 4 morceaux, un morceau par GPU. Si vous sautez jusqu'à deux ml.p4d.24xlarge, cela fait 16 A100 au total dans votre cluster, vous pouvez donc diviser votre modèle en 16 morceaux. Ceci est aussi parfois appelé parallélisme des pipelines. En effet, l'ensemble des couches du réseau est partitionné entre les GPU et exécuté de manière pipeline pour optimiser l'utilisation du GPU. Le diagramme suivant illustre le parallélisme des modèles.
Pour que le parallélisme des modèles se produise à grande échelle, nous avons besoin d'un troisième type de distribution : parallélisme tenseur. Le parallélisme tenseur applique les mêmes concepts à une étape supplémentaire : nous décomposons les plus grandes couches de votre réseau de neurones et plaçons des parties des couches elles-mêmes sur différents appareils. Ceci est pertinent lorsque vous travaillez avec 175 milliards de paramètres ou plus et que vous essayez d'insérer même quelques enregistrements dans la RAM, ainsi que des parties de votre modèle, pour former ce transformateur. Le schéma suivant illustre le parallélisme des tenseurs.
Autoriser parallélisme tenseur, définissez-le dans les options smp vous passez à votre estimateur.
Dans le code précédent, pipeline_parallel_degree
décrit en combien de segments votre modèle doit être divisé, en fonction du parallélisme de pipeline dont nous avons parlé ci-dessus. Un autre mot pour cela est partitions.
Pour activer le parallélisme du tenseur, définissez tensor_parallel_degree
au niveau souhaité. Assurez-vous de choisir un nombre égal ou inférieur au nombre de GPU par instance, donc pas supérieur à 8 pour les machines ml.p4d.24xlarge. Pour des modifications de script supplémentaires, reportez-vous à Exécuter une tâche de formation parallèle de modèle distribué SageMaker avec le parallélisme du tenseur.
Le paramètre ddp fait référence aux données distribuées en parallèle. Vous activez généralement cette option si vous utilisez le parallélisme des données ou le parallélisme des tenseurs, car la bibliothèque de parallélisme des modèles s'appuie sur DDP pour ces fonctionnalités.
Partage de l'état de l'optimiseur, déchargement de l'activation et points de contrôle
Si vous avez un modèle extrêmement volumineux, vous avez également besoin d'un état d'optimisation extrêmement volumineux. La préparation de votre optimiseur pour SMP est simple : récupérez-le simplement sur le disque dans votre script et chargez-le dans le smp.DistributedOptimizer()
objet.
Assurez-vous de l'activer sur l'estimateur en définissant shard_optimizer_state
à Vrai dans le smp_options
vous utilisez pour configurer SMP :
Semblable au parallélisme des tenseurs et des pipelines, SMP profile votre modèle et la taille de votre monde (le nombre total de GPU dans tous vos nœuds d'entraînement), pour trouver les meilleures stratégies de placement.
Dans l'apprentissage en profondeur, les sorties de la couche intermédiaire sont également appelées activations, et celles-ci doivent être stockées pendant le passage vers l'avant. En effet, ils doivent être utilisés pour le calcul du gradient lors de la passe arrière. Dans un grand modèle, le stockage simultané de toutes ces activations en mémoire peut créer des goulots d'étranglement importants en mémoire. Pour remédier à ce goulot d'étranglement, vous pouvez utiliser point de contrôle d'activation, la troisième nouvelle fonctionnalité de la bibliothèque de parallélisme de modèles SageMaker. Point de contrôle d'activation, ou points de contrôle de gradient, est une technique permettant de réduire l'utilisation de la mémoire en effaçant les activations de certaines couches et en les recalculant lors d'un passage en arrière. Cela échange efficacement un temps de calcul supplémentaire contre une utilisation réduite de la mémoire.
Enfin, le déchargement d'activation utilise directement le point de contrôle d'activation. C'est une stratégie pour ne garder que quelques activations de tenseurs sur la RAM du GPU pendant l'entraînement du modèle. Plus précisément, nous déplaçons les activations contrôlées vers la mémoire du processeur pendant la passe avant et les chargeons à nouveau sur le GPU pour la passe arrière d'un micro-lot spécifique.
Micro-lots et stratégies de placement
D'autres sujets qui prêtent parfois à confusion chez les clients sont les micro-lots et les stratégies de placement. Ces deux éléments sont des hyperparamètres que vous pouvez fournir à la bibliothèque parallèle de modèles SageMaker. Plus précisément, les micro-lots sont pertinents lors de la mise en œuvre de modèles qui reposent sur le parallélisme de pipeline, tels que ceux d'au moins 30 milliards de paramètres ou plus.
Les micro-lots sont des sous-ensembles de mini-lots. Lorsque votre modèle est dans sa boucle d'apprentissage, vous définissez un certain nombre d'enregistrements à récupérer et à passer en avant et en arrière à travers les couches - c'est ce qu'on appelle un mini-lot, ou parfois juste un lot. Un passage complet dans votre ensemble de données s'appelle un époque. Pour exécuter des passes avant et arrière avec le parallélisme de pipeline, la bibliothèque parallèle de modèles SageMaker divise les lots en sous-ensembles plus petits appelés micro-lots, qui sont exécutés un par un pour maximiser l'utilisation du GPU. L'ensemble d'exemples résultant, beaucoup plus petit par GPU, est appelé un micro-lot. Dans notre exemple GPT-2, nous avons ajouté un défaut de 1 microbatch directement au script de formation.
Au fur et à mesure que vous augmentez votre configuration de formation, il est fortement recommandé de modifier la taille de votre lot et la taille de votre micro-lot en conséquence. C'est le seul moyen d'assurer de bonnes performances : vous devez considérer la taille des lots et les tailles des micro-lots en fonction de la taille globale de votre monde lorsque vous vous appuyez sur le parallélisme des pipelines.
Les stratégies de placement permettent d'indiquer physiquement à SageMaker où placer vos partitions de modèle. Si vous utilisez à la fois le modèle parallèle et les données parallèles, la définition placement_strategy
à “cluster”
place les répliques de modèles dans des ID de périphérique (GPU) physiquement proches les uns des autres. Cependant, si vous voulez vraiment être plus prescriptif sur votre stratégie de parallélisme, vous pouvez la décomposer en une seule chaîne avec différentes combinaisons de trois lettres : D pour le parallélisme des données, P
indique le parallélisme du pipeline, et T
pour le parallélisme tenseur. Nous recommandons généralement de conserver le placement par défaut de "cluster"
, car cela est plus approprié pour la formation de modèles à grande échelle. Le placement "cluster" correspond à "DPT
" .
Pour plus d'informations sur les stratégies d'emplacement, consultez Stratégie de placement avec parallélisme tenseur.
Exemple de cas d'utilisation
Imaginons que vous ayez un ml.p3.16xlarge dans votre tâche d'entraînement. Cela vous donne 8 NVIDIA V100 par nœud. N'oubliez pas que chaque fois que vous ajoutez une instance supplémentaire, vous subissez une surcharge de bande passante supplémentaire, il est donc toujours préférable d'avoir plus de GP'U sur un seul nœud. Dans ce cas, il vaut mieux utiliser un ml.p3.16xlarge que, par exemple, deux ml.p3.8xlarges. Même si le nombre de GPU est le même, la surcharge de bande passante supplémentaire du nœud supplémentaire ralentit votre débit.
Le diagramme suivant illustre le parallélisme de modèle à quatre voies, combiné à un parallélisme de données à deux voies. Cela signifie que vous avez en fait deux répliques de votre modèle (pensez aux données parallèles), chacune étant partitionnée sur quatre GPU (modèle parallèle).
Si l'une de ces partitions de modèle est trop grande pour tenir sur un seul GPU, vous pouvez ajouter un type supplémentaire de distribution - le parallélisme tenseur - pour le cracher et utiliser les deux appareils.
Conclusion
Dans cet article de blog, nous avons discuté des bibliothèques de formation distribuées SageMaker, en nous concentrant en particulier sur le parallélisme des modèles. Nous avons partagé les références de performances de notre dernier test, atteignant 32 échantillons par seconde sur 120 instances ml.p4d.24xlarge et 175 milliards de paramètres sur Amazon SageMaker. Nous prévoyons que si nous augmentons ce nombre à 240 instances p4, nous pourrions former un modèle de paramètres 175B en 25 jours.
Nous avons également discuté des dernières fonctionnalités permettant la formation à grande échelle, à savoir le parallélisme tenseur, le partage d'état de l'optimiseur, le point de contrôle d'activation et le déchargement d'activation. Nous avons partagé quelques trucs et astuces pour activer cela grâce à une formation sur Amazon SageMaker.
Essayez-le vous-même en utilisant le même bloc-notes qui a généré nos chiffres, qui est disponible sur GitHub ici. Vous pouvez également demander plus de GPU pour votre compte AWS via demander une approbation de limite de service ici.
À propos des auteurs
Emilie Webber a rejoint AWS juste après le lancement de SageMaker et essaie d'en parler au monde depuis ! En dehors de la création de nouvelles expériences ML pour les clients, Emily aime méditer et étudier le bouddhisme tibétain.
Aditya Bindal est Senior Product Manager pour AWS Deep Learning. Il travaille sur des produits qui permettent aux clients de former plus facilement des modèles de deep learning sur AWS. Dans ses temps libres, il aime passer du temps avec sa fille, jouer au tennis, lire de la fiction historique et voyager.
Luis Quintela est le responsable du développement logiciel pour la bibliothèque parallèle de modèles AWS SageMaker. Pendant son temps libre, on peut le trouver sur sa Harley dans la région de la baie de SF.
- Coinsmart. Le meilleur échange Bitcoin et Crypto d'Europe.
- Platoblockchain. Intelligence métaverse Web3. Connaissance amplifiée. ACCÈS LIBRE.
- CryptoHawk. Radar Altcoins. Essai gratuit.
- Source : https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- Qui sommes-nous
- accélérateur
- Compte
- atteint
- à travers
- Supplémentaire
- propos
- Avancée
- Tous
- déjà
- Amazon
- Une autre
- applications
- Réservé
- disponibles
- AWS
- baie
- LES MEILLEURS
- Le plus grand
- Milliards
- BLOG
- Développement
- Causes
- Change
- le cloud
- code
- комбинации
- Commun
- Communication
- configuration
- confusion
- Conteneurs
- Core
- pourriez
- Clients
- données
- développé
- Développeur
- Développement
- dispositif
- Compatibles
- différent
- distribué
- distribution
- down
- entraîné
- permettant
- notamment
- exemple
- Découvrez
- Expériences
- extrême
- Visage
- plus rapide
- Fonctionnalité
- Fonctionnalités:
- Fiction
- s'adapter
- Abonnement
- Avant
- trouvé
- Framework
- plein
- fonction
- Général
- générer
- GitHub
- aller
- Bien
- Recherche Google
- GPU
- Matériel
- utile
- Souligner
- historique
- Comment
- How To
- HTTPS
- Des centaines
- increased
- d'information
- inspiré
- des services
- vous aider à faire face aux problèmes qui vous perturbent
- IT
- Emploi
- rejoint
- saut
- en gardant
- langue
- gros
- Nouveautés
- lancer
- APPRENTISSAGE
- apprentissage
- Niveau
- Bibliothèque
- charge
- click
- machine learning
- Les machines
- Fabrication
- manager
- Mémoire
- ML
- modèle
- numériques jumeaux (digital twin models)
- application
- (en fait, presque toutes)
- Bougez
- à savoir
- Nature
- réseau et
- Nouvelles fonctionnalités
- nœuds
- cahier
- numéros
- Autre
- Papier
- en partenariat
- performant
- pièce
- plateforme
- Populaire
- possible
- primaire
- Produit
- Produits
- Profils
- fournir
- RAM
- RE
- en cours
- recommander
- Articles
- réduire
- Résultats
- Courir
- pour le running
- Saïd
- évolutive
- Escaliers intérieurs
- mise à l'échelle
- Sdk
- Rechercher
- service
- set
- mise
- sharding
- commun
- significative
- Taille
- So
- Logiciels
- spécifiquement
- vitesse
- Dépenses
- scission
- Région
- les stratégies
- de Marketing
- la quantité
- tactique
- techniques
- tester
- le monde
- milliers
- Avec
- fiable
- conseils
- trucs et astuces
- ensemble
- Les sujets
- métiers
- Formation
- comprendre
- utilisé
- utiliser
- vision
- dans les
- de travail
- vos contrats
- world
- années