
ADVERTENCIA: Este proyecto no se mantiene actualmente, debido a la reorganización de la compañía.
Bagua es un marco de aceleración de capacitación de aprendizaje profundo para Pytorch desarrollado por AI Platform@Kuaishou Technology y DS3 Lab@Eth Zürich. Bagua actualmente es compatible:
.step() en múltiples capas. Se puede aplicar al optimizador de Pytorch arbitrario, en contraste con el enfoque de Nvidia Apex, donde solo se implementan algunos optimizadores específicos.strategy=BaguaStrategy en su entrenador. ¡Esto le permite aprovechar una gama de algoritmos de entrenamiento avanzados, incluidos métodos descentralizados, métodos asíncronos, compresión de comunicación y sus combinaciones!Su efectividad ha sido evaluada en varios escenarios, incluidos VGG y Resnet en Imagenet, Bert grandes y muchas aplicaciones industriales en Kuaishou.
El rendimiento de diferentes sistemas y algoritmos en VGG16 con 128 GPU bajo diferentes ancho de banda de red.
Tiempo de época de Bert-Large Finetune en diferentes condiciones de red para diferentes sistemas.
Para obtener resultados más completos y actualizados, consulte la página de referencia de Bagua.
Las ruedas (paquetes binarios precompilados) están disponibles para Linux (x86_64). Los nombres de los paquetes son diferentes dependiendo de su versión Cuda Toolkit (la versión Cuda Toolkit se muestra en nvcc --version ).
| Versión CUDA Toolkit | Comando de instalación |
|---|---|
| > = 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 |
Agregue --pre a pip install los comandos para instalar versiones previas al lanzamiento (desarrollo). Consulte los tutoriales de Bagua para una guía de arranque rápido y más opciones de instalación.
Gracias a Amazon Machine Images (AMI), podemos proporcionar a los usuarios una manera fácil de implementar y ejecutar Bagua en los grupos de AWS EC2 con un tamaño flexible de máquinas y una amplia gama de tipos de GPU. Los usuarios pueden encontrar nuestra imagen de Bagua preinstalada en EC2 por el único AMI-ID que publicamos aquí. Tenga en cuenta que AMI es un recurso regional, así que asegúrese de usar las máquinas en el mismo Reginon que nuestro AMI.
| Versión de Bagua | ID de AMI | Región |
|---|---|---|
| 0.6.3 | AMI-0E719D0E3E42B397E | US-East-1 |
| 0.9.0 | AMI-0F01FD14E9A742624 | US-East-1 |
Para administrar el clúster EC2 de manera más eficiente, utilizamos StarCluster como un kit de herramientas para manipular el clúster. En el archivo config de StarCluster, hay algunas configuraciones que deben ser configuradas por los usuarios, incluidas las credenciales de AWS, la configuración del clúster, etc., se puede encontrar más información sobre la configuración de StarCluster en este tutorial.
Por ejemplo, creamos un clúster EC2 con 4 máquinas, cada una de las cuales tiene 8 GPU V100 ( p3.16xlarge ). El grupo se basa en el Bagua AMI que preinstalamos en la región us-east-1 . Entonces el archivo config de StarCluster sería:
# 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.16xlargeCon la configuración anterior, creamos dos grupos idénticos para comparar una tarea de clasificación de imagen sintetizada sobre Bagua y Horovod, respectivamente. Aquí está el video de grabación de pantalla de este experimento.

% 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 }
}