L'arme Fatale De PyTorch : Optimiser L'edl Dans Les Clusters GPU Avec AdaptDL

EDL signifie Elastic Deep Learning, incubé par la LF AI Foundation, et est un framework de formation de réseau neuronal profond qui peut ajuster dynamiquement le degré de parallélisme.Il prend en charge la gestion des clusters multi-locataires, peut équilibrer le temps d'attente et d'achèvement de la formation du modèle et peut améliorer l'utilisation des ressources.
La formation de modèles d’apprentissage profond prend généralement du temps et nécessite des coûts élevés en termes de ressources informatiques, d’espace de stockage, etc.
En prenant le modèle BERT comme exemple, le processus de formation sur le GPU dépasse souvent 2 000 heures, tandis que la formation des modèles ResNet et VGG prend au moins 100 heures.
Selon la comptabilité analytique actuelle du cloud computing, le coût de la formation du modèle peut atteindre des milliers, voire des dizaines de milliers de yuans.Afin de contrôler le coût de la formation des modèles,Des clusters de partage de ressources informatiques ont vu le jour. Ce que nous présentons aujourd'hui est AdaptDL développé par l'équipe Petuum CASL, qui optimise considérablement l'EDL dans les clusters GPU.
Les défis des clusters partagés
Avec des clusters partagés,Plusieurs utilisateurs peuvent soumettre des tâches de formation de modèle individuellement.
Cela réduit non seulement le gaspillage causé par le surprovisionnement des ressources informatiques, mais aussi, en utilisant les ressources inutilisées, les utilisateurs peuvent former un modèle complexe en quelques jours, voire quelques heures, sur un seul poste de travail.
Cependant, les clusters partagés présentent également leurs propres problèmes.
Les défis typiques auxquels sont confrontés les clusters partagés incluent :
1. Allocation des ressources :Lorsque plusieurs tâches partagent un cluster, l’allocation des ressources GPU doit être soigneusement planifiée. Par exemple, lors de la formation d’un modèle, l’utilisation du GPU sur la même machine peut entraîner beaucoup plus rapidement que l’utilisation des GPU sur plusieurs machines. Afin d'éviter la concurrence entre les tâches de formation pour la bande passante du réseau, différentes tâches de formation distribuées doivent être attribuées aux GPU sur différentes machines.
2. La vitesse et l'évolutivité de la formation varient :Le choix de la configuration GPU adaptée à votre tâche de formation nécessite une surveillance constante de la vitesse de formation et de l’évolutivité de votre modèle, qui évoluent au fil du temps. Surtout à l’approche de la convergence, utilisez des tailles de lots plus importantes. Il est donc préférable d’utiliser moins de ressources GPU au début de la formation.
3. Configuration de la formation :En règle générale, nous devons savoir à l’avance quels GPU sont disponibles afin de pouvoir les configurer pour une formation importante. Cela n’est parfois pas possible dans un cluster partagé. Par exemple, la taille du lot et le taux d'apprentissage sont souvent déterminés en fonction du nombre de GPU, ou si les GPU sont connus pour être sur des machines différentes, l'accumulation de gradient peut être utilisée pour surmonter les goulots d'étranglement du réseau, etc.
4. Équité et disponibilité :Lors des pics d'utilisation du GPU, certains utilisateurs peuvent avoir besoin de faire la queue et d'attendre que les GPU soient inactifs, mais certains utilisateurs qui exécutent déjà des tâches souhaitent augmenter le nombre de GPU pour accélérer. Comment équilibrer et résoudre la contradiction entre les deux.
AdaptDL simplifie et accélère la formation des modèles sur les machines locales et les clusters partagés
AdaptDL résout les problèmes des clusters partagés
Pour remédier aux lacunes liées au pool de calcul et aux clusters partagés des organisations, l’équipe Petuum CASL a créé AdaptDL.Pour simplifier et accélérer la formation distribuée sur des clusters partagés.
AdaptDL est un cadre de formation et de planification d'apprentissage profond (DL) adaptatif aux ressources. Il peut surveiller les performances des tâches de formation en temps réel et ajuster de manière flexible l'allocation des ressources (telles que les GPU, les instances de calcul, etc.) pendant l'exécution des tâches.
Il résout les problèmes mentionnés ci-dessus dans les clusters partagés et présente les avantages suivants :
1. Améliorer l’utilisation des clusters GPU partagés :AdaptDL peut analyser toutes les tâches de formation de modèle et apprendre comment différentes tâches fonctionnent sous différentes configurations de ressources GPU. Grâce aux connaissances acquises, le planificateur AdaptDL peut configurer les ressources GPU pour différentes tâches de formation de manière juste et efficace. À mesure que le nombre de tâches de formation augmente et que les caractéristiques de performance des différentes tâches sont mieux comprises, AdaptDL apprendra à reconfigurer le GPU de manière flexible.
2. Réduisez le coût de la formation des modèles cloud :AdaptDL peut fournir un nombre modéré d'instances GPU dans le cloud pour éviter des coûts inutiles. AdaptDL peut également étendre automatiquement le cluster lors de l'utilisation de tailles de lots plus importantes pendant la formation.
3. Mettre en œuvre facilement des formations à grande échelle :L’utilisation de lots de plus grande taille peut accélérer la formation sur de nombreux GPU, mais elle n’est pas facile à appliquer. Si certains modèles utilisent une taille de lot trop grande, le temps de formation peut augmenter en raison d'une efficacité statistique réduite, mais si la taille du lot est trop petite, le GPU ne peut pas être utilisé efficacement. AdaptDL peut sélectionner automatiquement la taille de lot appropriée sur les clusters partagés, les environnements cloud et les machines locales.
Les modèles utilisant AdaptDL prennent en moyenne moins de temps à s'entraîner qu'Optimus et Tiresias
Pour chaque tâche de formation de modèle, AdaptDL peut ajuster automatiquement la taille du lot, le taux d'apprentissage et l'accumulation de gradient. Dans la plateforme de services cloud, vous pouvez également contrôler le nombre d'instances ponctuelles.
La pratique à Petuum montre qu'avec l'aide des modèles de formation de cluster partagés AdaptDL,En moyenne, les délais d'exécution étaient 2 à 3 fois plus rapides et les coûts 3 fois inférieurs en utilisant les instances Spot dans AWS.
commencer
AdaptDL peut être utilisé dans deux modes.
1. Planification des clusters :Permet d'exécuter plusieurs tâches sur un cluster Kubernetes. À l'aide de la bibliothèque Python AdaptDL, le planificateur AdaptDL peut être intégré au code PyTorch pour sélectionner automatiquement le nombre optimal de GPU et la taille du lot de formation.
2. Formation indépendante :Entraînez des modèles avec une taille de lot adaptative et un taux d'apprentissage sur n'importe quel cluster ou machine multi-GPU locale. AdaptDL peut déterminer automatiquement quand utiliser une taille de lot plus grande pour accélérer la formation du modèle.
Formation avec la bibliothèque Python AdaptDL :
La bibliothèque Python Adaptdl simplifie le code de formation PyTorch.Rendre la taille du lot et le taux d'apprentissage adaptatifs,Aucun paramètre supplémentaire n'est requis.
python3 –m pip install adaptdl
En prenant PyTorch MNIST comme exemple, seules quelques lignes de code doivent être modifiées. Comme le montre la figure suivante :
AdaptDL fournit une interface de données parallèle distribuée similaire à celle native de PyTorch, ce qui facilite la modification du code de formation distribué existant.
premier pas:
utiliser adaptdl.torch.AdaptiveDataLoader Alternative torch.utils.data.DataLoader .
AdaptiveDataLoader peut sélectionner automatiquement la taille de lot optimale pendant la formation, en fonction du débit du programme et de l'efficacité statistique. Lors de l'exécution d'un point de contrôle, l'état peut également être enregistré, de sorte qu'après le redémarrage, la formation puisse reprendre là où elle s'est arrêtée.
train_loader.autoscale_batch_size(1024) Création d'AdaptDL peut sélectionner automatiquement la taille de lot la plus efficace pour la formation,La taille de lot globale maximale dans tous les processus de formation est de 1 024.
Suivant:
utiliser adaptdl.torch.AdaptiveDataParallel Modèle de package.
adaptdl.torch.AdaptiveDataParallel Au cours du processus de formation, l'échelle de bruit de gradient est calculée, ce qui peut être utilisé pour calculer l'efficacité statistique. Lorsque la taille du lot change,AdaptiveDataParallel Le taux d'apprentissage sera automatiquement ajusté en fonction de la règle.
Par défaut,AdaptiveDataParallel L'algorithme utilisé est AdaScale qui fonctionne bien dans une variété de tâches.
Pendant le point de contrôle,AdaptiveDataParallel Les paramètres du modèle, l'état de l'optimiseur et l'état du planificateur LR peuvent être automatiquement enregistrés et ces paramètres peuvent être restaurés en un clic après le redémarrage de la formation.
Avec les modifications ci-dessus, les utilisateurs peuvent exécuter le code de formation sur leur machine locale ou dans un cluster distribué. AdaptDL sélectionne la taille de lot et le taux d'apprentissage appropriés pour une formation distribuée plus rapide et effectue automatiquement une accumulation de gradient pour surmonter les problèmes de réseau.Comparaison de la formation YOLOv3 sur les machines de taille de lot adaptative et manuelle. Adaptive présente un avantage significatif en termes de formation et de comparaison de taille de lot.
Sans AdaptDL, si une taille de lot trop petite est choisie, le temps de formation sera prolongé car le GPU n'est pas entièrement utilisé. Au contraire, si vous choisissez une taille de lot trop grande, cela entraînera également un temps de formation plus long, car davantage d'époques sont nécessaires pour converger.En comparaison, AdaptDL peut automatiquement obtenir de meilleures performances de formation sans sélectionner une taille de lot fixe.
Gestion des clusters avec le planificateur AdaptDL :
Le planificateur AdaptDL peut déterminer automatiquement les ressources GPU à utiliser par la tâche de formation.Cela rend les tâches de formation dans les clusters partagés plus intelligentes.
Avec flexibilité, lorsque le taux d'inactivité du cluster est élevé, la tâche de formation sera étendue pour utiliser des GPU supplémentaires ; lorsque le taux d'utilisation du cluster est élevé, il sera réduit pour utiliser moins de ressources GPU au lieu de suspendre la tâche de formation.
Le planificateur AdaptDL fournit également d'autres fonctions,Par exemple, organiser des clusters pour éviter les conflits de réseau entre différentes tâches et maintenir l'équité entre les tâches de formation concurrentes.
Grâce à la coordination entre le planificateur et chaque tâche de formation, AdaptDL peut maintenir le cluster partagé utilisé efficacement.
Lorsqu'une tâche peut utiliser efficacement une taille de lot plus importante, AdaptDL transfère automatiquement davantage de GPU vers la tâche pour accélérer la formation. D’autre part, lorsque seules des tailles de lots plus petites peuvent être utilisées, les GPU inactifs peuvent être alloués plus efficacement à d’autres tâches.
Le planificateur AdaptDL peut être installé sur n'importe quelle instance Kubernetes à l'aide de Helm en un seul clic. La commande est la suivante :
helm install adaptdl adaptdl-sched \
-— repo https://github.com/petuum/adaptdl/raw/helm-repo \
-— namespace adaptdl — create-namespace \
-— set docker-registry.enabled=true
Après avoir installé le planificateur AdaptDL, vous pouvez utiliser l'interface de ligne de commande AdaptDL pour soumettre des tâches de formation.La tâche de formation utilisera initialement un seul GPU, puis sera redémarrée plusieurs fois avec différents nombres de GPU, au cours desquels AdaptDL calculera le nombre optimal de GPU à utiliser. Peu importe le nombre de GPU,AdaptDL choisit toujours la taille de lot la plus efficace et ajuste le taux d'apprentissage en conséquence.
Exemple de suivi de cluster AdaptDL
Le graphique à barres colorées indique le nombre d’instances de calcul affectées à différentes tâches. AdaptDL peut optimiser dynamiquement le nombre d'instances de calcul obtenues par chaque tâche.
Avec AdaptDL, les tâches de formation PyTorch s'exécutent 2 à 3 fois plus rapidement sur les clusters partagés. De plus, le planificateur AdaptDL prend également en charge les instances ponctuelles AWS, ce qui réduit les coûts de 3 fois.
Enfin, vous pouvez également utiliser AdaptDL et NNI pour accélérer les charges de travail de réglage des hyperparamètres (AdaptDL + NNI Post).
Adresse du projet :
https://github.com/petuum/adaptdl
Cet article est traduit du blog PyTorch Medium.