La taille croissante des modèles de langage a été l'une des plus grandes tendances du traitement du langage naturel (TAL) ces dernières années. Depuis 2018, nous avons assisté à un développement et à un déploiement sans précédent de modèles de langage toujours plus grands, notamment BERT et ses variantes, GPT-2, T-NLG et GPT-3 (175 milliards de paramètres).
Ces modèles ont repoussé les limites des innovations architecturales possibles. Nous sommes confrontés à plusieurs défis lors de la formation de modèles d'apprentissage en profondeur à grande échelle, en particulier la nouvelle vague de transformateurs pré-formés génératifs. Ces défis incluent les limitations matérielles et les compromis avec le calcul et l'efficacité. Pour surmonter ces défis de parallélisme des modèles et des données, AWS propose un large éventail de fonctionnalités.
Dans cet article, nous introduisons deux approches principales : la parallélisation des données et la parallélisation des modèles à l'aide de Amazon Sage Maker, et discutez de leurs avantages et inconvénients.
Le modèle
Pour le modèle de langage, nous utilisons les transformateurs, introduits dans l'article L'attention est tout ce dont vous avez besoin. Les transformateurs sont des modèles d'apprentissage en profondeur conçus pour éviter délibérément les pièges des RNN en s'appuyant sur un mécanisme d'auto-attention pour établir des dépendances globales entre l'entrée et la sortie. L'architecture du modèle Transformer permet une parallélisation nettement meilleure et peut atteindre des performances élevées en un temps de formation relativement court. S'appuyant sur le succès de Transformers, BERT, présenté dans l'article BERT: Pré-formation de transformateurs bidirectionnels profonds pour la compréhension du langage, ajout d'une pré-formation bidirectionnelle pour la représentation du langage. Inspiré de la tâche Cloze, BERT est pré-formé avec la modélisation de langage masqué (MLM), dans laquelle le modèle apprend à récupérer les mots originaux pour des jetons masqués de manière aléatoire. Le modèle BERT est également pré-entraîné sur la tâche de prédiction de phrase suivante (NSP) pour prédire si deux phrases sont dans le bon ordre de lecture. Depuis son avènement en 2018, le BERT et ses variantes ont été largement utilisés dans les modèles de langage.
Nous commençons par créer deux couches d'intégration pour l'intégration de jeton et de position. Les plongements d'entrée sont la somme des plongements de jeton et des placement de position.
Ensuite, nous définissons un bloc de décodeur de transformateur avec deux sous-couches : une couche d'auto-attention multi-têtes et un simple réseau d'anticipation entièrement connecté suivi d'une normalisation et d'un abandon de couche :
Enfin, nous créons notre modèle de langage avec la couche d'intégration et les blocs transformateurs précédents :
En fonction de vos hyperparamètres, vous pouvez faire évoluer ce modèle de milliers de paramètres à des milliards de paramètres. Le principal défi avec les modèles à un milliard de paramètres est que vous ne pouvez pas héberger le modèle dans une instance et que vous devez distribuer le modèle sur plusieurs nœuds pour la formation et l'inférence.
Le jeu de données
Dans nos expériences, nous avons utilisé le Jeu de données de pieux. The Pile est un ensemble de données textuelles en anglais de 800 Gio conçu pour la formation de modèles linguistiques à grande échelle. Il est créé à partir de 22 ensembles de données divers et de haute qualité, comprenant à la fois des ensembles de données NLP établis et des ensembles nouvellement introduits.
L'ensemble de données est créé à partir de diverses sources de données, y compris des livres ; Référentiels GitHub ; les pages Web; journaux de discussion ; et des articles de médecine, de physique, de mathématiques, d'informatique et de philosophie. Plus précisément, il utilise les sources suivantes : Pile-CC, PubMed Central, ArXiv, GitHub, the FreeLaw Project, Stack Exchange, the US Patent and Trademark Office, PubMed, Ubuntu, IRC, HackerNews, YouTube, PhilPapers, Books3, Project Gutenberg ( PG-19), OpenSubtitles, Wikipedia anglais, DM Mathematics, EuroParl, le corpus Enron Emails et NIH ExPorter. Il inclut également OpenWebText2 et BookCorpus2, qui sont respectivement des extensions des jeux de données originaux OpenWebText et BookCorpus. La diversité des sources de données peut améliorer les connaissances générales inter-domaines et par conséquent améliorer les capacités de généralisation en aval.
Le principal défi avec cet ensemble de données est la taille même ; l'ensemble de données contient 825 Gio de texte, ce qui se traduit par 4.2 Tio de points de données prétraités et compressés. Semblable aux défis auxquels nous sommes confrontés avec la formation et l'hébergement des modèles, la formation d'un modèle avec cet ensemble de données sur une seule instance prendra beaucoup de temps et n'est pas pratique.
Notre solution consiste à décomposer l'ensemble de données en blocs de données d'environ 1 Gio, à charger et à prétraiter les fonctionnalités dans Ensemble de données TensorFlow objets et stockez-les dans Service de fichiers élastique Amazon (AmazonEFS). Les ensembles de données TensorFlow fournissent un pipeline de données facile à utiliser et hautes performances qui s'intègre bien à nos modèles. Amazon EFS est un service facile à utiliser qui nous permet de créer un système de fichiers partagé qui évolue automatiquement au fur et à mesure que des fichiers sont ajoutés et supprimés. De plus, Amazon EFS est capable d'atteindre des niveaux de débit plus élevés en cas de besoin, ce qui est essentiel dans notre pipeline de formation de modèles et de données.
Ensuite, nous examinons les stratégies de formation distribuée pour relever ces défis.
Formation distribuée
Dans ce projet, nous avons été confrontés à deux défis : la mise à l'échelle de la taille du modèle et du volume de données. L'augmentation de la taille du modèle et du nombre de paramètres pouvant être entraînés peut entraîner une meilleure précision, mais il y a une limite au modèle que vous pouvez intégrer dans une seule mémoire GPU ou même plusieurs GPU dans une seule instance. De plus, les tailles de modèles plus grandes prennent plus de temps à s'entraîner.
Vous pouvez relever ces défis de deux manières différentes : le parallélisme des données et le parallélisme des modèles. Avec le parallélisme des données, nous effectuons une descente de gradient stochastique (SGD) en répartissant les enregistrements d'un mini-lot sur différents appareils pour accélérer la formation. Cependant, la formation de données parallèles s'accompagne d'une complexité supplémentaire de calcul de la moyenne de gradient de mini-lot avec des gradients de tous les appareils, une étape appelée AllReduce
, qui devient plus difficile au fur et à mesure que le cluster de formation s'agrandit. Lors de l'utilisation du parallélisme des données, nous devons être en mesure d'adapter le modèle et un seul point de données dans un appareil (CPU ou GPU), ce qui est un facteur limitant dans nos expériences car la taille d'un si grand modèle est beaucoup plus grande que la mémoire du GPU unique. Taille.
Une autre solution consiste à utiliser le parallélisme des modèles, qui divise le modèle sur plusieurs appareils. Le parallélisme de modèle est le processus consistant à diviser un modèle entre plusieurs appareils ou nœuds (tels que des instances équipées de GPU) et à créer un pipeline efficace pour former le modèle sur ces appareils afin de maximiser l'utilisation du GPU.
Parallélisation des données
La parallélisation des données est l'approche la plus courante pour plusieurs GPU ou la formation distribuée. Vous pouvez regrouper vos données, les envoyer à plusieurs appareils (chacun hébergeant un modèle répliqué), puis agréger les résultats. Nous avons expérimenté deux packages pour la parallélisation des données : Horovod et le Bibliothèque parallèle de données distribuées SageMaker.
Horovod est un cadre de formation d'apprentissage en profondeur distribué pour TensorFlow, Keras, PyTorch et Apache MXNet. Pour utiliser Horovod, nous sommes passés par le processus suivant :
- Initialiser en exécutant
hvd.init()
. - Associez chaque appareil à un seul processus. Le premier processus ou travailleur est associé au premier appareil, le deuxième processus est associé au deuxième appareil, et ainsi de suite.
- Ajustez le taux d'apprentissage en fonction du nombre d'appareils.
- Enveloppez l'optimiseur dans
hvd.DistributedOptimizer
. - Diffusez les états initiaux des variables du premier worker de rang 0 à tous les autres processus. Cela est nécessaire pour assurer une initialisation cohérente de tous les travailleurs lorsque la formation est démarrée avec des poids aléatoires ou restaurée à partir d'un point de contrôle.
- Assurez-vous que seul le périphérique 0 peut enregistrer des points de contrôle pour empêcher d'autres travailleurs de les corrompre.
Voici le script de formation :
La bibliothèque parallèle de données SageMaker nous permet d'adapter notre formation avec une efficacité quasi linéaire, en accélérant notre formation avec des modifications de code minimales. La bibliothèque effectue une AllReduce
fonctionnement et optimise la communication d'appareil à appareil en utilisant pleinement l'infrastructure réseau d'AWS et Cloud de calcul élastique Amazon (Amazon EC2) topologie d'instance. Pour utiliser la bibliothèque parallèle de données SageMaker, nous avons suivi le processus suivant :
- Importer et initialiser
sdp.init()
. - Associez chaque appareil à un seul
smdistributed.dataparallel
processus aveclocal_rank
.sdp.tensorflow.local_rank()
nous donne le rang local des appareils. Le chef est de rang 0 et les ouvriers sont de rang 1, 2, 3, etc. - Ajustez le taux d'apprentissage en fonction du nombre d'appareils.
- enveloppe
tf.GradientTape
comprenantDistributedGradientTape
à effectuerAllReduce
. - Diffusez les variables de modèle initiales du nœud leader à tous les nœuds de travail.
- Assurez-vous que seul le périphérique 0 peut enregistrer des points de contrôle.
Parallélisation du modèle
Nous pouvons ajuster les hyperparamètres pour que le modèle reste suffisamment petit pour s'entraîner à l'aide d'un seul GPU, ou nous pouvons utiliser le parallélisme de modèle pour diviser le modèle entre plusieurs GPU sur plusieurs instances. L'augmentation du nombre de paramètres pouvant être entraînés d'un modèle peut entraîner une meilleure précision, mais il existe une limite à la taille maximale du modèle que vous pouvez intégrer dans une seule mémoire GPU. Nous avons utilisé la bibliothèque parallèle de modèles distribués SageMaker pour former nos plus grands modèles. Les étapes sont les suivantes:
- Importer et initialiser la bibliothèque avec
smp.init()
. - Le modèle Keras doit hériter de smp.DistributedModel au lieu de la classe Keras Model.
- Ensemble
drop_remainder=True
dans l'tf.Dataset.batch()
méthode pour s'assurer que la taille du lot est toujours divisible par le nombre de microlots. - Les opérations aléatoires dans le pipeline de données doivent toutes utiliser la même graine :
smp.dp_rank()
, Par exemple,shuffle(ds, seed=smp.dp_rank())
. Cela garantit la cohérence des échantillons de données sur les appareils qui contiennent différentes partitions de modèle. - La logique avant et arrière doit être dans une fonction pas à pas avec
smp.step
décoration. - Effectuez un post-traitement sur les sorties des microlots à l'aide de méthodes StepOutput telles que
reduce_mean
L’smp.step
fonction doit avoir une valeur de retour qui dépend de la sortie desmp.DistributedModel
.
Le script de formation est le suivant :
Pour obtenir un guide détaillé sur l'activation du script de formation TensorFlow pour la bibliothèque parallèle de modèles distribués SageMaker, reportez-vous à Modifier un script d'entraînement TensorFlow. Pour PyTorch, reportez-vous à Modifier un script de formation PyTorch.
Débogueur SageMaker
Dans les sections précédentes, nous avons expliqué comment optimiser la formation à l'aide de techniques de parallélisation de modèles et de données. Avec Débogueur Amazon SageMaker, nous pouvons désormais capturer des informations de profilage des performances à partir de nos cycles de formation pour déterminer dans quelle mesure la formation s'est améliorée. Par défaut, Debugger capture les métriques système pour chaque tâche de formation SageMaker telles que le GPU, l'utilisation du processeur, la mémoire, le réseau et les E/S à un intervalle d'échantillonnage de 500 millisecondes. Nous pouvons accéder aux données comme suit :
Le débogueur fournit des utilitaires pour visualiser les données de profilage de différentes manières. Dans l'exemple suivant, nous voyons l'utilisation totale du GPU et du CPU ainsi que le temps d'attente d'E/S pour le travail d'entraînement multi-GPU utilisant Horovod. Pour générer ces graphiques, nous exécutons le code suivant :
L'utilisation du GPU fluctue fréquemment entre 0 et 100 %, et des temps d'attente d'E/S élevés avec une faible utilisation du GPU sont un indicateur d'un goulot d'étranglement d'E/S. De plus, l'utilisation totale du processeur ne dépasse jamais 70 %, ce qui signifie que nous pouvons améliorer le prétraitement des données en augmentant le nombre de processus de travail.
Nous pouvons améliorer les performances en passant d'Horovod à la bibliothèque parallèle de données distribuées SageMaker. Dans les graphiques suivants, nous pouvons voir que les GPU sont utilisés plus efficacement et ne chutent à une faible utilisation que pendant de courtes périodes.
Infrastructures de formation
Pour entraîner les modèles, nous avons utilisé 10 instances ml.p3.16xlarge à l'aide d'une tâche d'entraînement SageMaker. SageMaker réduit le temps et les coûts de formation et d'optimisation des modèles d'apprentissage automatique (ML) sans qu'il soit nécessaire de gérer l'infrastructure. Avec SageMaker, vous pouvez facilement former et ajuster les modèles ML à l'aide d'outils intégrés pour gérer et suivre les expériences de formation, choisir automatiquement les hyperparamètres optimaux, déboguer les tâches de formation et surveiller l'utilisation des ressources système telles que les GPU, les CPU et la bande passante du réseau. Les données étaient hébergées dans Amazon EFS, ce qui nous a permis de grandir et de diminuer au fur et à mesure que nous ajoutons et supprimons des fichiers sans avoir besoin de gestion ou de provisionnement. Nos principaux objectifs étaient d'améliorer la vitesse de formation et de réduire les coûts.
Évolutivité du modèle
Bien que cette infrastructure soit principalement utilisée pour la génération de langage, avec l'architecture GPT et l'ensemble de données Pile, vous pouvez utiliser ces techniques pour former des modèles de transformateur à grande échelle, ce qui est utile dans de nombreux domaines au-delà du NLP. Dans l'apprentissage automatique lui-même, de nombreuses tâches de vision par ordinateur sont désormais résolues avec des architectures à grands paramètres (transformateurs) où il a été démontré qu'elles surpassent les CNN traditionnels (réseau de neurones convolutifs) sur des tâches telles que l'apprentissage de la représentation (voir Faire progresser l'état de l'art en matière de vision par ordinateur avec des transformateurs auto-supervisés et une formation 10 fois plus efficace) et le mappage à grande échelle d'images sur du texte (comme CLIP). Les modèles à grands paramètres ouvrent également de nouvelles perspectives en sciences de la vie dans des domaines tels que analyse de la structure des protéines ainsi que le analyse de données d'images médicales.
Les solutions que nous détaillons dans cet article pour la formation distribuée et la gestion de grands modèles devraient également s'appliquer aux modèles de l'un de ces domaines.
Compromis
Il y a eu une discussion en cours dans la communauté de recherche concernant les risques de la formation de modèles linguistiques à grande échelle, et si suffisamment de réflexion a été consacrée aux risques potentiels associés à leur développement et aux stratégies pour atténuer ces risques, dont certaines comprennent les risques financiers et coûts environnementaux. Selon un papier publié dans ACM, il a été estimé que la formation d'un seul modèle de base BERT (sans réglage d'hyperparamètre) sur des GPU nécessitait autant d'énergie qu'un vol transaméricain. L'échelle des impacts environnementaux avec la taille du modèle et la capacité d'affiner efficacement ces modèles peuvent potentiellement réduire considérablement les émissions. AWS a récemment lancé une nouvelle Outil d'empreinte carbone client, disponible gratuitement pour tous les clients AWS, dans le cadre des efforts d'Amazon pour accroître la durabilité et réduire les émissions de carbone. L'exécution d'applications sur le cloud AWS peut potentiellement réduire l'empreinte carbone (par rapport aux centres de données d'entreprise qui ont été étudiés dans un rapport 2019).
Conclusion
Cet article a présenté une solution qui facilite le réglage fin des modèles de langage avec un milliard de paramètres sur le cloud AWS à l'aide de SageMaker.
Pour plus d'informations sur le parallélisme des modèles avec SageMaker, reportez-vous à Entraînez plus de 175 milliards de modèles de paramètres PNL avec des ajouts parallèles de modèles et Hugging Face sur Amazon SageMaker ainsi que le 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.
Si vous souhaitez de l'aide pour accélérer votre utilisation du ML dans vos produits et processus, veuillez contacter le Laboratoire de solutions Amazon ML.
À propos des auteurs
Sia Gholami est Senior Data Scientist au Amazon ML Solutions Lab, où il conçoit des solutions d'IA/ML pour des clients de divers secteurs. Il est passionné par le traitement du langage naturel (TAL) et l'apprentissage en profondeur. En dehors du travail, Sia aime passer du temps dans la nature et jouer au tennis.
Mehdi Nouriest un responsable et un scientifique appliqué senior au Amazon ML Solutions Lab, où il travaille avec des clients de divers secteurs et les aide à accélérer leur parcours de migration vers le cloud et à résoudre leurs problèmes de ML à l'aide de solutions de pointe et les technologies.
Mu Hyun Kim est un data scientist chez Amazon Machine Learning Solutions Lab. Il résout les divers problèmes commerciaux des clients en appliquant l'apprentissage automatique et l'apprentissage en profondeur, et les aide également à devenir qualifiés.
Danny Byrd est scientifique appliquée au Amazon ML Solutions Lab. Au laboratoire, il a aidé des clients à développer des solutions ML avancées, dans des spécialités ML allant de la vision par ordinateur à l'apprentissage par renforcement. Il est passionné par le fait de faire avancer la technologie et de libérer le nouveau potentiel des produits AWS en cours de route.
Francisco Calderón Rodríguez est Data Scientist au Amazon ML Solutions Lab. En tant que membre du ML Solutions Lab, il aide à résoudre les problèmes commerciaux critiques des clients AWS à l'aide de l'apprentissage en profondeur. Dans ses temps libres, Francisco aime jouer de la musique et de la guitare, jouer au football avec ses filles et passer du temps avec sa famille.
Yohei Nakayama est un architecte d'apprentissage en profondeur au Amazon ML Solutions Lab. Il travaille avec des clients de différents secteurs verticaux pour accélérer leur utilisation de l'intelligence artificielle et des services AWS Cloud afin de résoudre leurs défis commerciaux. Il s'intéresse à l'application des technologies ML/AI à l'industrie spatiale.
Nathalie Rauschmayr est Senior Applied Scientist chez AWS, où elle aide les clients à développer des applications d'apprentissage en profondeur.
- 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/create-train-and-deploy-a-billion-parameter-language-model-on-terabytes-of-data-with-tensorflow-and- amazon-sagemaker/
- "
- 10
- 100
- 2019
- a
- Qui sommes-nous
- accélérer
- accélérer
- accès
- Selon
- atteindre
- à travers
- ajoutée
- ajout
- Avancée
- Tous
- permet
- toujours
- Amazon
- selon une analyse de l’Université de Princeton
- api
- applications
- appliqué
- Appliquer
- Application
- une approche
- approches
- d'environ
- architectural
- architecture
- L'art
- artificiel
- intelligence artificielle
- associé
- précaution
- automatiquement
- disponibles
- moyen
- AWS
- car
- va
- jusqu'à XNUMX fois
- Au-delà
- plus gros
- Le plus grand
- Milliards
- milliards
- Block
- Livres
- construire
- construit
- intégré
- la performance des entreprises
- capacités
- capable
- capturer
- captures
- carbone
- émissions de carbone
- central
- challenge
- globaux
- Selectionnez
- classe
- le cloud
- services de cloud computing
- code
- Commun
- Communication
- Communautés
- par rapport
- calcul
- calcul
- ordinateur
- Informatique
- informatique
- connecté
- Inconvénients
- cohérent
- contact
- Costs
- engendrent
- créée
- crée des
- La création
- critique
- Customiser
- Clients
- données
- les centres de données
- Data Scientist
- profond
- démontré
- dépend
- déployer
- déploiement
- un
- détail
- détaillé
- Déterminer
- développer
- développement
- Développement
- dispositif
- Compatibles
- différent
- discuter
- distribué
- distribuer
- Diversité
- DM
- domaines
- down
- même
- facile à utiliser
- efficace
- efficace
- efficacement
- efforts
- Emissions
- permettre
- permet
- énergie
- Anglais
- Entreprise
- environnementales
- notamment
- établies
- estimé
- exemple
- dépasse
- échange
- extensions
- Visage
- face
- famille
- Fonctionnalités:
- Des champs
- la traduction de documents financiers
- Prénom
- s'adapter
- vol
- Abonnement
- suit
- numérique
- Avant
- Framework
- Francisco
- de
- fonction
- En outre
- Général
- générer
- génération
- génératif
- obtention
- GitHub
- Global
- GPU
- GPU
- Croître
- guide
- Matériel
- vous aider
- aide
- Haute
- de haute qualité
- augmentation
- appuyez en continu
- organisé
- hébergement
- Comment
- How To
- Cependant
- HTTPS
- image
- satellite
- améliorer
- amélioré
- comprendre
- inclut
- Y compris
- Améliore
- croissant
- indice
- secteurs
- industrie
- d'information
- Infrastructure
- innovations
- contribution
- inspiré
- instance
- Intelligence
- intéressé
- IT
- lui-même
- Emploi
- Emplois
- chemin
- XNUMX éléments à
- spécialisées
- laboratoire
- Libellé
- Etiquettes
- langue
- gros
- plus importantes
- lancé
- couche
- leader
- apprentissage
- niveaux
- Bibliothèque
- Life Sciences
- charge
- locales
- Style
- click
- machine learning
- gérer
- gestion
- manager
- les gérer
- cartographie
- masque
- math
- mathématiques
- veux dire
- médical
- membre
- Mémoire
- méthodes
- Métrique
- ML
- modèle
- numériques jumeaux (digital twin models)
- Surveiller
- PLUS
- (en fait, presque toutes)
- plusieurs
- Musique
- Nature
- Nature
- nécessaire
- Besoins
- réseau et
- NIH
- nœuds
- nombre
- objectifs
- Offres Speciales
- Bureaux
- en cours
- opération
- Opérations
- Optimiser
- de commander
- Autre
- Papier
- partie
- passionné
- brevet
- performant
- périodes
- philosophie
- Physique
- Jouez
- jouer
- position
- possible
- défaillances
- prévoir
- prédiction
- Prédictions
- précédent
- primaire
- d'ouvrabilité
- processus
- les process
- traitement
- Produits
- profilage
- Projet
- AVANTAGES
- fournir
- fournit
- Poussé
- gamme
- en cours
- récent
- récemment
- Articles
- Récupérer
- réduire
- en ce qui concerne
- représentation
- représenté
- exigent
- un article
- Ressources
- Résultats
- retourner
- risques
- Courir
- pour le running
- même
- Escaliers intérieurs
- mise à l'échelle
- Sciences
- STARFLEET SCIENCES
- Scientifique
- seed
- service
- Services
- plusieurs
- SGD
- Forme
- commun
- Shorts
- montré
- similaires
- étapes
- depuis
- unique
- Taille
- petit
- So
- Football
- sur mesure
- Solutions
- RÉSOUDRE
- Résout
- quelques
- Space
- spécifiquement
- vitesse
- Dépenses
- scission
- splits
- empiler
- j'ai commencé
- Région
- state-of-the-art
- États
- Boutique
- les stratégies
- succès
- Durabilité
- combustion propre
- tâches
- techniques
- Les technologies
- Technologie
- Les
- milliers
- Avec
- débit
- fiable
- fois
- jeton
- Tokens
- les outils
- suivre
- marque déposée
- traditionnel
- Formation
- Trends
- Ubuntu
- sans précédent
- us
- utilisé
- les services publics
- Utilisant
- Plus-value
- variété
- divers
- verticales
- vision
- le volume
- attendez
- Vague
- façons
- que
- tout en
- Wikipédia
- sans
- des mots
- Activités principales
- travailleur
- ouvriers
- vos contrats
- X
- années
- Votre
- Youtube