Les développements récents de l'apprentissage en profondeur ont conduit à des modèles de plus en plus volumineux tels que GPT-3, BLOOM et OPT, dont certains dépassent déjà les 100 milliards de paramètres. Bien que les modèles plus grands aient tendance à être plus puissants, la formation de tels modèles nécessite des ressources de calcul importantes. Même avec l'utilisation de bibliothèques de formation distribuées avancées telles que FSDP et DeepSpeed, il est courant que les tâches de formation nécessitent des centaines d'accélérateurs pendant plusieurs semaines ou plusieurs mois à la fois.
Fin 2022, AWS a annoncé la disponibilité générale de Instances Amazon EC2 Trn1 grâce à Formation AWS— un accélérateur d'apprentissage automatique (ML) spécialement conçu pour fournir une plate-forme hautes performances, rentable et massivement évolutive pour la formation de modèles d'apprentissage en profondeur dans le cloud. Les instances Trn1 sont disponibles en plusieurs tailles (voir le tableau suivant), avec jusqu'à 16 accélérateurs Trainium par instance.
Taille d'instance | Accélérateurs Trainium | Mémoire de l'accélérateur (Go) | vCPU | Mémoire d'instance (Gio) | Bande passante réseau (Gbps) |
trn1.2xlarge | 1 | 32 | 8 | 32 | Jusqu'à 12.5 |
trn1.32xlarge | 16 | 512 | 128 | 512 | 800 |
trn1n.32xlarge (à venir) | 16 | 512 | 128 | 512 | 1600 |
Les instances Trn1 peuvent soit être déployées en tant qu'instances autonomes pour des tâches de formation plus petites, soit dans des ultraclusters hautement évolutifs qui prennent en charge la formation distribuée sur des dizaines de milliers d'accélérateurs Trainium. Toutes les instances Trn1 prennent en charge la configuration autonome, tandis que les ultraclusters Trn1 nécessitent des instances trn1.32xlarge ou trn1n.32xlarge. Dans un ultracluster, plusieurs instances Trn1 sont colocalisées dans une zone de disponibilité AWS donnée et sont connectées à un réseau EFA (Elastic Fabric Adapter) à haut débit et à faible latence qui fournit 800 Gbit/s de bande passante réseau non bloquante par instance pour les opérations de calcul collectives. . Le type d'instance trn1n.32xlarge, lancé début 2023, augmentera cette bande passante à 1600 XNUMX Gbit/s par instance.
De nombreuses entreprises clientes choisissent de déployer leurs charges de travail d'apprentissage en profondeur à l'aide de Kubernetes, la norme de facto pour l'orchestration de conteneurs dans le cloud. Les clients AWS déploient souvent ces charges de travail en utilisant Service Amazon Elastic Kubernetes (Amazon EKS). Amazon EKS est un service Kubernetes géré qui simplifie la création, la configuration, le cycle de vie et la surveillance des clusters Kubernetes tout en offrant la flexibilité totale de Kubernetes en amont.
Aujourd'hui, nous sommes ravis d'annoncer la prise en charge officielle des tâches de formation distribuées utilisant Amazon EKS et les instances EC2 Trn1. Avec cette annonce, vous pouvez désormais exécuter facilement des tâches de formation conteneurisées à grande échelle dans Amazon EKS tout en tirant pleinement parti du rapport qualité-prix, de l'évolutivité et de la facilité d'utilisation offertes par les instances Trn1.
Parallèlement à cette annonce, nous publions également un didacticiel détaillé qui vous guide à travers les étapes requises pour exécuter une tâche de formation distribuée multi-instance (pré-formation BERT phase 1) à l'aide d'instances Amazon EKS et Trn1. Dans cet article, vous découvrirez l'architecture de la solution et passerez en revue plusieurs étapes clés du didacticiel. Se référer au référentiel de tutoriels officiel pour le workflow complet de bout en bout.
Pour suivre, une large familiarité avec les services AWS de base tels que Cloud de calcul élastique Amazon (Amazon EC2) et Amazon EKS est implicite, et une connaissance de base de l'apprentissage en profondeur et de PyTorch serait utile.
Architecture de la solution
Le diagramme suivant illustre l'architecture de la solution.
La solution se compose des composants principaux suivants :
- Un cluster EKS
- Un groupe de nœuds EKS composé d'instances trn1.32xlarge
- Le Neurone AWS SDK
- Plugins EKS pour Neuron et EFA
- An Registre des conteneurs élastiques Amazon (Amazon ECR) Référentiel
- Une image de conteneur d'entraînement
- An Amazon FSx pour Lustre système de fichiers
- Un planificateur de lots Volcano et un serveur etcd
- Le lanceur de tâches universel TorchX
- Le module TorchX DDP pour Trainium
Au cœur de la solution se trouve un cluster EKS qui vous fournit les principales fonctionnalités de gestion de Kubernetes via un point de terminaison de service EKS. L'un des avantages d'Amazon EKS est que le service surveille et met à l'échelle activement le plan de contrôle en fonction de la charge, ce qui garantit des performances élevées pour les charges de travail importantes telles que la formation distribuée. À l'intérieur du cluster EKS se trouve un groupe de nœuds composé d'au moins deux instances basées sur Trn1.32xlarge Trainium résidant dans la même zone de disponibilité.
Le SDK Neuron est la pile logicielle qui fournit le pilote, le compilateur, l'environnement d'exécution, l'intégration du framework (par exemple, PyTorch Neuron) et les outils utilisateur qui vous permettent d'accéder aux avantages des accélérateurs Trainium. Le pilote de périphérique Neuron s'exécute directement sur les nœuds EKS (instances Trn1) et permet d'accéder aux puces Trainium depuis les conteneurs de formation qui sont lancés sur les nœuds. Les plug-ins Neuron et EFA sont installés dans le cluster EKS pour fournir un accès aux puces Trainium et aux périphériques réseau EFA nécessaires à la formation distribuée.
Un référentiel ECR est utilisé pour stocker les images du conteneur de formation. Ces images contiennent le SDK Neuron (à l'exception du pilote Neuron, qui s'exécute directement sur les instances Trn1), le script de formation PyTorch et les dépendances requises. Lorsqu'une tâche de formation est lancée sur le cluster EKS, les images de conteneur sont d'abord extraites d'Amazon ECR vers les nœuds EKS, et les conteneurs de travail PyTorch sont ensuite instanciés à partir des images.
Le stockage partagé est fourni à l'aide d'un système de fichiers FSx for Lustre hautes performances qui existe dans la même zone de disponibilité que les instances trn1.32xlarge. La création et l'attachement du système de fichiers FSx for Lustre au cluster EKS sont médiés par le Pilote Amazon FSx pour Lustre CSI. Dans cette solution, le stockage partagé est utilisé pour stocker l'ensemble de données de formation et tous les journaux ou artefacts créés au cours du processus de formation.
La solution utilise le Lanceur de travaux universel TorchX pour lancer des tâches de formation distribuées dans Amazon EKS. TorchX a deux dépendances importantes : le planificateur de lots Volcano et le serveur etcd. Volcano gère la planification et la mise en file d'attente des tâches de formation, tandis que le serveur etcd est un magasin clé-valeur utilisé par TorchElastic pour la synchronisation et la découverte des pairs lors du démarrage de la tâche.
Lorsqu'une tâche de formation est lancée à l'aide de TorchX, la commande de lancement utilise le module DDP distribué TorchX fourni pour Trainium pour configurer la tâche de formation globale, puis exécute les commandes torchrun appropriées sur chacun des pods de travail PyTorch. Lorsqu'une tâche est en cours d'exécution, elle peut être surveillée à l'aide d'outils Kubernetes standard (tels que kubectl) ou via des ensembles d'outils ML standard tels que TensorBoard.
Vue d'ensemble de la solution
Regardons les étapes importantes de cette solution. Tout au long de cet aperçu, nous nous référons aux Lancer une tâche de formation de neurones PyTorch multi-nœuds sur Trainium à l'aide de TorchX et d'EKS tutoriel sur GitHub.
Créer un cluster EKS
Pour démarrer avec les tâches de formation distribuées dans Amazon EKS avec des instances Trn1, vous devez d'abord créer un cluster EKS comme indiqué dans le tutoriel sur GitHub. La création de clusters peut être réalisée à l'aide d'outils standard tels que eksctl
et les AWS CloudFormation.
Créer un groupe de nœuds EKS
Ensuite, nous devons créer un groupe de nœuds EKS contenant au moins deux instances trn1.32xlarge dans une région prise en charge. Dans le tutoriel, AWS CloudFormation est utilisé pour créer un modèle de lancement EC2 spécifique à Trainium, qui garantit que les instances Trn1 sont lancées avec une Amazon Machine Image (AMI) appropriée et la configuration réseau EFA correcte nécessaire pour prendre en charge la formation distribuée. L'AMI comprend également le pilote de périphérique Neuron qui prend en charge les puces d'accélération Trainium. Avec le eksctl
Outil de gestion Amazon EKS, vous pouvez facilement créer un groupe de nœuds Trainium à l'aide d'un manifeste YAML de base qui fait référence au modèle de lancement nouvellement créé. Par example:
Dans le manifeste précédent, plusieurs attributs sont configurés pour permettre l'utilisation d'instances Trn1 dans le cluster EKS. Première, metadata.region
est défini sur l'une des régions qui prend en charge les instances Trn1 (actuellement us-east-1
et les us-west-2
). Ensuite, pour les zones de disponibilité, Amazon EKS exige que deux zones de disponibilité soient spécifiées. L'une de ces zones de disponibilité doit prendre en charge l'utilisation d'instances Trn1, tandis que l'autre peut être choisie au hasard. Le tutoriel montre comment déterminer quelles zones de disponibilité autoriseront les instances Trn1 dans votre compte AWS. La même zone de disponibilité prenant en charge Trn1 doit également être spécifiée à l'aide du availabiltyZones
attribut associé au groupe de nœuds EKS. efaEnabled
est fixé à true
pour configurer les nœuds avec la configuration réseau EFA appropriée requise pour la formation distribuée. Enfin, le launchTemplate.id
L'attribut associé au groupe de nœuds pointe vers le modèle de lancement EC2 créé via AWS CloudFormation lors d'une étape précédente.
En supposant que vous avez déjà appliqué le modèle CloudFormation et installé le eksctl
outil de gestion, vous pouvez créer un groupe de nœuds EKS compatible Trainium en exécutant le code suivant :
Installer les plugins Kubernetes pour les appareils Trainium et EFA
Une fois le groupe de nœuds en place, l'étape suivante consiste à installer les plugins Kubernetes qui prennent en charge les accélérateurs Trainium (via le plugin Neuron) et les appareils EFA (via le plugin EFA). Ces plugins peuvent facilement être installés sur le cluster en utilisant le standard kubectl
outil de gestion comme indiqué dans le didacticiel.
Pour utiliser le lanceur universel PyTorch de TorchX pour lancer des tâches de formation distribuées, deux conditions préalables sont requises : le planificateur de lots Volcano et le serveur etcd. Tout comme les plugins Neuron et EFA, nous pouvons utiliser le kubectl
outil pour installer Volcano et le serveur etcd sur le cluster EKS.
Attacher le stockage partagé au cluster EKS
Dans le didacticiel, FSx for Lustre est utilisé pour fournir un système de fichiers partagé hautes performances accessible par les différents pods de travail EKS. Ce stockage partagé est utilisé pour héberger l'ensemble de données de formation, ainsi que tous les artefacts et journaux créés au cours du processus de formation. Le didacticiel décrit comment créer et attacher le stockage partagé au cluster à l'aide du Pilote Amazon FSx pour Lustre CSI.
Créer une image de conteneur de formation
Ensuite, nous devons créer une image de conteneur de formation qui inclut le script de formation PyTorch ainsi que toutes les dépendances. Un exemple de Dockerfile est inclus dans le didacticiel, qui intègre le script de pré-formation BERT ainsi que ses dépendances logicielles. Le Dockerfile est utilisé pour créer l'image du conteneur de formation, et l'image est ensuite transmise à un référentiel ECR à partir duquel les agents PyTorch peuvent extraire l'image lorsqu'une tâche de formation est lancée sur le cluster.
Configurer les données d'entraînement
Avant de lancer une tâche d'entraînement, les données d'entraînement sont d'abord copiées sur le volume de stockage partagé sur FSx pour Lustre. Le didacticiel explique comment créer un pod Kubernetes temporaire qui a accès au volume de stockage partagé et montre comment se connecter au pod afin de télécharger et d'extraire l'ensemble de données de formation à l'aide des commandes shell Linux standard.
Avec les différents prérequis infrastructurels et logiciels en place, nous pouvons maintenant nous concentrer sur les aspects Trainium de la solution.
Précompilez votre modèle
Le SDK Neuron prend en charge PyTorch via une couche d'intégration appelée Neurone PyTorch. Par défaut, PyTorch Neuron fonctionne avec une compilation juste-à-temps, où les différents graphiques de calcul de réseau neuronal dans une tâche de formation sont compilés au fur et à mesure qu'ils sont rencontrés pendant le processus de formation. Pour les modèles plus grands, il peut être plus pratique d'utiliser le neuron_parallel_compile
outil pour précompiler et mettre en cache les différents graphes de calcul à l'avance afin d'éviter la compilation des graphes au moment de l'apprentissage. Avant de lancer la tâche de formation sur le cluster EKS, le didacticiel montre comment lancer d'abord une tâche de précompilation via TorchX en utilisant le neuron_parallel_compile
outil. À la fin de la tâche de précompilation, le compilateur Neuron aura identifié et compilé tous les graphiques de calcul du réseau neuronal et les aura mis en cache dans le volume de stockage partagé pour une utilisation ultérieure pendant la tâche de pré-formation BERT réelle.
Lancer la tâche de formation distribuée
Une fois la précompilation terminée, TorchX est ensuite utilisé pour lancer une tâche de formation distribuée de 64 travailleurs sur deux instances trn1.32xlarge, avec 32 travailleurs par instance. Nous utilisons 32 travailleurs par instance car chaque instance trn1.32xlarge contient 16 accélérateurs Trainium, chaque accélérateur fournissant 2 Noyaux de neurones. Chaque NeuronCore est accessible en tant que Appareil PyTorch XLA dans le script de formation. Un exemple de commande de lancement TorchX du didacticiel ressemble au code suivant :
Les différents arguments de ligne de commande de la commande TorchX précédente sont décrits en détail dans le didacticiel. Cependant, les arguments suivants sont les plus importants lors de la configuration de la tâche d'entraînement :
- -cfg file d'attente=test – Spécifie la file d'attente Volcano à utiliser pour la tâche de formation
- -cfg dépôt_image – Spécifie le référentiel ECR à utiliser pour les images de conteneur TorchX
- –script_args - Spécifie tous les arguments qui doivent être transmis au script de formation PyTorch
- –nnodes et –nproc_per_node – Le nombre d'instances et de nœuds de calcul par instance à utiliser pour la tâche de formation
- -scénario – Le nom du script de formation PyTorch à lancer dans le conteneur de formation
- -Image – Le chemin d'accès à l'image du conteneur de formation dans Amazon ECR
- –bf16 – Activer ou non le type de données BF16
Surveiller le travail de formation
Une fois la tâche d'entraînement lancée, il existe différentes manières de surveiller la tâche. Le didacticiel montre comment surveiller les métriques de script de formation de base sur la ligne de commande à l'aide de kubectl
, comment surveiller visuellement la progression du script de formation dans TensorBoard (voir la capture d'écran suivante) et comment surveiller l'utilisation de l'accélérateur Trainium à l'aide du neuron-top
outil du Neuron SDK.
Nettoyer ou réutiliser l'environnement
Lorsque la tâche de formation est terminée, le cluster peut alors être réutilisé ou reconfiguré pour des tâches de formation supplémentaires. Par exemple, le groupe de nœuds EKS peut être rapidement mis à l'échelle à l'aide de la eksctl
afin de prendre en charge les tâches de formation qui nécessitent des instances Trn1 supplémentaires. De même, les commandes de lancement Dockerfile et TorchX fournies peuvent être facilement modifiées pour prendre en charge des modèles d'apprentissage en profondeur supplémentaires et distribuer des topologies de formation.
Si le cluster n'est plus requis, le didacticiel inclut également toutes les étapes requises pour supprimer l'infrastructure EKS et les ressources associées.
Conclusion
Dans cet article, nous avons exploré comment les instances Trn1 et Amazon EKS fournissent une plate-forme gérée pour une formation distribuée hautes performances, rentable et massivement évolutive de modèles d'apprentissage en profondeur. Nous avons également partagé un didacticiel complet montrant comment exécuter une tâche de formation distribuée multi-instance réelle dans Amazon EKS à l'aide d'instances Trn1, et mis en évidence plusieurs des étapes et composants clés de la solution. Ce contenu de didacticiel peut facilement être adapté à d'autres modèles et charges de travail, et vous fournit une solution de base pour la formation distribuée des modèles d'apprentissage en profondeur dans AWS.
Pour en savoir plus sur la façon de démarrer avec les instances Trn1 alimentées par Trainium, reportez-vous au Documentation sur les neurones.
À propos des auteurs
Scott Perry est architecte de solutions au sein de l'équipe de l'accélérateur Annapurna ML chez AWS. Basé au Canada, il aide les clients à déployer et à optimiser les charges de travail de formation et d'inférence d'apprentissage en profondeur à l'aide d'AWS Inferentia et d'AWS Trainium. Ses intérêts incluent les grands modèles de langage, l'apprentissage par renforcement profond, l'IdO et la génomique.
Lorea Arrizabalaga est une architecte de solutions alignée sur le secteur public britannique, où elle aide les clients à concevoir des solutions ML avec Amazon SageMaker. Elle fait également partie de la communauté technique de terrain dédiée à l'accélération matérielle et aide à tester et à comparer les charges de travail AWS Inferentia et AWS Trainium.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- Platoblockchain. Intelligence métaverse Web3. Connaissance Amplifiée. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/scaling-distributed-training-with-aws-trainium-and-amazon-eks/
- 1
- 100
- 11
- 2022
- 2023
- 7
- a
- Capable
- A Propos
- accélérateur
- accélérateurs
- accès
- accédé
- atteint
- à travers
- activement
- Supplémentaire
- avancer
- Avancée
- Avantage
- aligné
- Tous
- déjà
- Bien que
- Amazon
- Amazon EC2
- Amazon Sage Maker
- et les
- Annoncer
- annoncé
- NOUVEAUTÉ!
- appliqué
- approprié
- architecture
- arguments
- aspects
- associé
- joindre
- attributs
- disponibilité
- disponibles
- AWS
- AWS CloudFormation
- Inférence AWS
- Bande passante
- basé
- Essentiel
- car
- before
- analyse comparative
- avantages.
- Milliards
- Bloom
- vaste
- construire
- Cache
- appelé
- Canada
- chips
- Selectionnez
- choisi
- le cloud
- Grappe
- code
- Collective
- Venir
- À venir
- Commun
- Communautés
- complet
- achèvement
- composants électriques
- complet
- calcul
- configuration
- connecté
- Qui consiste
- Contenant
- Conteneurs
- contient
- contenu
- des bactéries
- Pratique
- Core
- rentable
- engendrent
- créée
- La création
- création
- CSI
- Lecture
- Clients
- données
- DDP
- dévoué
- profond
- l'apprentissage en profondeur
- Réglage par défaut
- déployer
- déployé
- décrit
- Conception
- détail
- détaillé
- développements
- dispositif
- Compatibles
- directement
- découverte
- distribué
- formation distribuée
- distribuer
- download
- driver
- pendant
- chacun
- Plus tôt
- "Early Bird"
- facilité d'utilisation
- même
- non plus
- permettre
- end-to-end
- Endpoint
- Assure
- Entreprise
- Pourtant, la
- exemple
- excité
- à l'exclusion
- existe
- Exploré
- extrait
- .
- Familiarité
- champ
- Déposez votre dernière attestation
- Prénom
- Flexibilité
- Focus
- suivre
- Abonnement
- Framework
- De
- plein
- Général
- génomique
- obtenez
- GitHub
- donné
- graphique
- graphiques
- Réservation de groupe
- Guides
- Poignées
- Matériel
- Cœur
- utile
- aide
- Haute
- haute performance
- Surbrillance
- très
- hôte
- Comment
- How To
- Cependant
- HTML
- HTTPS
- Des centaines
- ID
- identifié
- image
- satellite
- implicite
- important
- in
- comprendre
- inclus
- inclut
- Améliore
- de plus en plus
- Infrastructure
- installer
- Installé
- instance
- l'intégration
- intérêts
- IOT
- IT
- Emploi
- Emplois
- ACTIVITES
- Genre
- langue
- gros
- grande échelle
- plus importantes
- En retard
- lancer
- lancé
- lancement
- couche
- APPRENTISSAGE
- apprentissage
- LED
- bibliothèques
- Gamme
- linux
- charge
- plus long
- Style
- LOOKS
- click
- machine learning
- Entrée
- gérés
- gestion
- massivement
- Mémoire
- Métadonnées
- Métrique
- ML
- numériques jumeaux (digital twin models)
- modifié
- Module
- Surveiller
- surveillé
- Stack monitoring
- moniteurs
- mois
- PLUS
- (en fait, presque toutes)
- plusieurs
- prénom
- Besoin
- réseau et
- de mise en réseau
- Réseau neuronal
- next
- nœud
- nœuds
- nombre
- présenté
- offrant
- officiel
- ONE
- exploite
- Opérations
- Optimiser
- optimisé
- orchestration
- de commander
- Autre
- décrit
- grandes lignes
- global
- vue d'ensemble
- paramètres
- partie
- passé
- chemin
- par les pairs
- performant
- phase
- Place
- plateforme
- Platon
- Intelligence des données Platon
- PlatonDonnées
- plug-in
- plugins
- des notes bonus
- Post
- alimenté
- solide
- conditions préalables
- processus
- Progrès
- fournir
- à condition de
- fournit
- aportando
- public
- Édition
- Poussé
- pytorch
- vite.
- aléatoire
- monde réel
- région
- régions
- en relation
- supprimez
- dépôt
- exigent
- conditions
- a besoin
- Resources
- Avis
- Courir
- pour le running
- sagemaker
- même
- Évolutivité
- évolutive
- Balance
- mise à l'échelle
- Sdk
- secteur
- service
- Services
- set
- plusieurs
- commun
- coquillage
- devrait
- montré
- Spectacles
- significative
- De même
- tailles
- faibles
- So
- Logiciels
- sur mesure
- Solutions
- quelques
- spécifié
- empiler
- autonome
- Standard
- j'ai commencé
- Commencez
- étapes
- Étapes
- Encore
- storage
- Boutique
- tel
- Support
- Appareils
- Les soutiens
- synchronisation
- combustion propre
- table
- prise
- équipe
- Technique
- modèle
- temporaire
- Essais
- Le
- au Royaume-Uni
- leur
- milliers
- Avec
- tout au long de
- fiable
- à
- outil
- les outils
- Formation
- oui
- tutoriel
- Uk
- expérience unique et authentique
- Universel
- utilisé
- Utilisateur
- divers
- version
- via
- le volume
- façons
- Semaines
- que
- qui
- tout en
- sera
- dans les
- travailleur
- ouvriers
- pourra
- yaml
- Vous n'avez
- Votre
- zéphyrnet
- zones