
AVISO: Este projeto não é atualmente mantido, devido à reorganização da empresa.
Bagua é uma estrutura de aceleração de treinamento de aprendizado profundo para Pytorch desenvolvido pela AI Platform@Kuaishou Technology e DS3 Lab@Eth Zürich. Bagua atualmente suporta:
.step() em várias camadas. Ele pode ser aplicado ao otimizador arbitrário de Pytorch, em contraste com a abordagem da NVIDIA APEX, onde apenas alguns otimizadores específicos são implementados.strategy=BaguaStrategy em seu treinador. Isso permite que você aproveite uma variedade de algoritmos de treinamento avançado, incluindo métodos descentralizados, métodos assíncronos, compactação de comunicação e suas combinações!Sua eficácia foi avaliada em vários cenários, incluindo VGG e Resnet no ImageNet, Bert Large e muitas aplicações industriais em Kuaishou.
O desempenho de diferentes sistemas e algoritmos no VGG16 com 128 GPUs sob diferentes largura de banda de rede.
Tempo de época do Bert-Large Finetune sob diferentes condições de rede para diferentes sistemas.
Para obter resultados mais abrangentes e atualizados, consulte a página de benchmark Banch.
Rodas (pacotes binários pré -compilados) estão disponíveis para Linux (x86_64). Os nomes dos pacotes são diferentes, dependendo da sua versão do CUDA Toolkit (a versão CUDA Toolkit é mostrada no nvcc --version ).
| Versão do kit de ferramentas CUDA | Comando de instalação |
|---|---|
| > = 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 |
Adicione --pre com os comandos pip install para instalar versões de pré-lançamento (desenvolvimento). Consulte os tutoriais da BAGUA para obter o guia de início rápido e mais opções de instalação.
Graças às imagens da Amazon Machine (AMI), podemos fornecer aos usuários uma maneira fácil de implantar e executar o Bagua nos clusters AWS EC2 com tamanho flexível de máquinas e uma ampla gama de tipos de GPU. Os usuários podem encontrar nossa imagem de Bagua pré-instalada no EC2 pelo AMI-ID exclusivo que publicamos aqui. Observe que o AMI é um recurso regional; portanto, verifique se você está usando as máquinas no mesmo reginon que o nosso AMI.
| Versão Bagua | Ami id | Região |
|---|---|---|
| 0.6.3 | AMI-0E719D0E3E42B397E | US-EAST-1 |
| 0.9.0 | AMI-0F01FD14E9A742624 | US-EAST-1 |
Para gerenciar o cluster EC2 com mais eficiência, usamos o StarCluster como um kit de ferramentas para manipular o cluster. No arquivo config do StarCluster, existem algumas configurações que precisam ser configuradas pelos usuários, incluindo credenciais da AWS, configurações de cluster, etc. Mais informações sobre a configuração do Starcluster podem ser encontradas neste tutorial.
Por exemplo, criamos um cluster EC2 com 4 máquinas, cada uma com 8 GPUs V100 ( p3.16xlarge ). O cluster é baseado no Bagua Ami, pré-instalamos na região us-east-1 . Então o arquivo config do Starcluster seria:
# 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.16xlargeCom a configuração acima, criamos dois clusters idênticos para comparar uma tarefa de classificação de imagem sintetizada sobre Bagua e Horovod, respectivamente. Aqui está o vídeo de gravação de tela deste 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 }
}