
Avertissement: ce projet n'est actuellement pas maintenu, en raison de la réorganisation de l'entreprise.
Bagua est un cadre d'accélération de formation en profondeur pour Pytorch développé par la plateforme AI @ Kuaishou Technology et DS3 Lab @ eth Zürich. Bagua soutient actuellement:
.step() sur plusieurs couches. Il peut être appliqué à l'optimiseur arbitraire de Pytorch, contrairement à l'approche de Nvidia Apex, où seuls certains optimisateurs spécifiques sont implémentés.strategy=BaguaStrategy dans votre entraîneur. Cela vous permet de profiter d'une gamme d'algorithmes de formation avancés, y compris des méthodes décentralisées, des méthodes asynchrones, une compression de communication et leurs combinaisons!Son efficacité a été évaluée dans divers scénarios, notamment VGG et RESNET sur ImageNet, Bert Large et de nombreuses applications industrielles à Kuaishou.
Les performances de différents systèmes et algorithmes sur VGG16 avec 128 GPU sous différentes bande passantes réseau.
Temps d'époque de Bert-Garg Finetune dans différentes conditions de réseau pour différents systèmes.
Pour des résultats plus complets et à jour, reportez-vous à la page de référence de Bagua.
Des roues (packages binaires précompilés) sont disponibles pour Linux (x86_64). Les noms de packages sont différents en fonction de votre version CUDA Toolkit (la version CUDA Toolkit est affichée dans nvcc --version ).
| Version de la boîte à outils CUDA | Commande d'installation |
|---|---|
| > = v10.2 | pip install bagua-cuda102 |
| > = v11.1 | pip install bagua-cuda111 |
| > = v11.3 | pip install bagua-cuda113 |
| > = v11.5 | pip install bagua-cuda115 |
| > = v11.6 | pip install bagua-cuda116 |
Ajouter --pre pour pip install des commandes pour installer des versions pré-libération (développement). Voir les tutoriels Bagua pour le guide de démarrage rapide et plus d'options d'installation.
Grâce aux images Amazon Machine (AMI), nous pouvons fournir aux utilisateurs un moyen facile de déployer et d'exécuter Bagua sur des clusters AWS EC2 avec une taille flexible de machines et une large gamme de types de GPU. Les utilisateurs peuvent trouver notre image Bagua préinstallée sur EC2 par l'Ami-ID unique que nous publions ici. Notez qu'AMI est une ressource régionale, alors assurez-vous que vous utilisez les machines dans le même Reginon que notre AMI.
| Version de Bagua | Ami id | Région |
|---|---|---|
| 0.6.3 | AMI-0E719D0E3E42B397E | US-East-1 |
| 0.9.0 | AMI-0F01FD14E9A742624 | US-East-1 |
Pour gérer le cluster EC2 plus efficacement, nous utilisons StarCluster comme boîte à outils pour manipuler le cluster. Dans le fichier config de StarCluster, il existe quelques configurations qui doivent être configurées par les utilisateurs, y compris les informations d'identification AWS, les paramètres de cluster, etc. Plus d'informations concernant la configuration de StarCluster peuvent être trouvées dans ce didacticiel.
Par exemple, nous créons un cluster EC2 avec 4 machines, dont chacun possède 8 GPU V100 ( p3.16xlarge ). Le cluster est basé sur la bagua ami que nous avons préinstallé dans la région us-east-1 . Ensuite, le fichier config de StarCluster serait:
# region of EC2 instances, here we choose us_east_1
AWS_REGION_NAME = us-east-1
AWS_REGION_HOST = ec2.us-east-1.amazonaws.com
# AMI ID of Bagua
NODE_IMAGE_ID = ami-0e719d0e3e42b397e
# number of instances
CLUSTER_SIZE = 4
# instance type
NODE_INSTANCE_TYPE = p3.16xlargeAvec la configuration ci-dessus, nous avons créé deux grappes identiques pour comparer une tâche de classification d'image synthétisée sur Bagua et Horovod, respectivement. Voici la vidéo d'enregistrement d'écran de cette expérience.

% System Overview
@misc { gan2021bagua ,
title = { BAGUA: Scaling up Distributed Learning with System Relaxations } ,
author = { Shaoduo Gan and Xiangru Lian and Rui Wang and Jianbin Chang and Chengjun Liu and Hongmei Shi and Shengzhuo Zhang and Xianghong Li and Tengxu Sun and Jiawei Jiang and Binhang Yuan and Sen Yang and Ji Liu and Ce Zhang } ,
year = { 2021 } ,
eprint = { 2107.01499 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.LG }
}
% Theory on System Relaxation Techniques
@book { liu2020distributed ,
title = { Distributed Learning Systems with First-Order Methods: An Introduction } ,
author = { Liu, J. and Zhang, C. } ,
isbn = { 9781680837018 } ,
series = { Foundations and trends in databases } ,
url = { https://books.google.com/books?id=vzQmzgEACAAJ } ,
year = { 2020 } ,
publisher = { now publishers }
}