Canário: Um Novo Método para Operações de Allreduce
O Canary melhora o desempenho do allreduce adaptando-se à congestionamento da rede de forma dinâmica.
― 7 min ler
Índice
A operação allreduce é super importante em várias aplicações distribuídas, tipo treinamento de modelos de deep learning e computação científica. Num allreduce, os dados de diferentes computadores são coletados, combinados e depois enviados de volta pra todos os computadores participantes. Ao combinar os dados direto na rede, essa operação pode ser muito mais rápida. Nos métodos tradicionais, cada dispositivo de rede precisa saber de onde os dados estão vindo, o que pode causar delays se alguns dispositivos ficarem muito ocupados.
Pra resolver esse problema, criamos um novo método, chamado Canary, que consegue lidar com congestionamento enquanto faz allreduce. Em vez de seguir um caminho fixo, nosso método usa um balanceamento de carga inteligente pra enviar dados pelas rotas menos ocupadas. Assim, quando os dispositivos de rede não sabem de onde os dados vão vir, ainda conseguem processá-los de forma eficaz. Testamos nosso método usando um tipo especial de switch e fizemos simulações que mostraram até 40% de performance melhor em comparação com os métodos existentes.
Importância do Allreduce
À medida que os computadores trabalham juntos, quão bem eles compartilham informações se torna crucial. Na operação allreduce, cada computador tem uma lista de dados e todas essas listas precisam ser mescladas baseadas em regras específicas. Depois que elas são combinadas, os dados precisam ser enviados de volta pra cada computador.
Pesquisas mostram que allreduce pode levar uma boa parte do tempo durante o treinamento de deep learning, às vezes estimado em cerca de 50% em redes mais lentas. Como a velocidade dos computadores tá melhorando mais rápido que a velocidade da rede, compartilhar dados de forma eficiente se torna ainda mais importante com o tempo.
Já sugeriram várias técnicas pra acelerar o allreduce. Algumas focam em reduzir a quantidade de dados transferidos ou usar padrões de comunicação mais eficientes. Nossa atenção, no entanto, tá em melhorar como os dados são processados na própria rede.
Métodos Tradicionais e Seus Limites
Os métodos existentes para allreduce geralmente configuram uma estrutura chamada árvore de redução, onde os dados vêm dos computadores nas extremidades e viajam por switches específicos pra serem combinados. Essa configuração exige que os switches saibam o caminho exato com antecedência, o que pode causar problemas quando o caminho fica congestionado. Por exemplo, se uma parte da rede estiver ocupada, pode atrasar todo o processo de transferência de dados porque os dados ainda precisam esperar pra passar.
A maneira simples de lidar com congestionamento seria enviar o tráfego allreduce separado de outros tipos. Mas isso não resolve o problema se várias operações allreduce começarem ao mesmo tempo. Como o número de operações simultâneas pode muitas vezes exceder os caminhos disponíveis, essa não é uma solução confiável também.
Canary: Uma Nova Abordagem
Pra melhorar a situação, projetamos o Canary, o primeiro método que fica de olho no congestionamento durante as operações allreduce. Em vez de seguir uma estrutura de árvore fixa, ele ajusta os caminhos com base nas condições atuais da rede usando um balanceamento de carga inteligente. Esse método é dinâmico, ou seja, pode mudar o caminho dos dados enquanto eles estão sendo enviados, dependendo de quão ocupadas estão as diferentes partes da rede.
Fizemos simulações pra ver como o Canary se sai. Numa grande rede, descobrimos que quando não havia congestionamento, tanto nosso método quanto os métodos mais antigos se saíam bem. Mas, quando adicionamos congestionamento na rede, nosso método conseguiu manter a performance, ao contrário dos métodos mais antigos que sofreram muito.
Princípios de Design do Canary
O design do Canary inclui três ideias principais: ficar de olho no congestionamento, gerenciar Recursos de forma inteligente e ter um plano pra lidar com possíveis falhas.
Conscientização de Congestionamento
O Canary utiliza técnicas existentes que muitas redes já usam pra distribuir dados e evitar áreas ocupadas. Em vez de simplesmente escolher caminhos baseados em regras fixas, agora ele procura as rotas menos ocupadas. Isso torna ele muito mais eficaz quando a rede tá sob estresse.
Dinâmica de Recursos
GestãoMétodos tradicionais costumam reservar uma certa quantidade de memória ao iniciar um allreduce, o que pode desperdiçar recursos quando nem toda essa memória é usada. O Canary, por outro lado, aloca memória só quando é necessário. Isso significa que mais aplicações podem rodar ao mesmo tempo sem esbarrar em problemas de recursos.
Tolerância a Falhas Dinâmica
Se um switch ou conexão falhar em sistemas existentes, o processo pode parar. O Canary oferece uma maneira de continuar, mesmo que um problema ocorra. Sendo flexível e capaz de detectar problemas mais rápido, o Canary permite que as operações continuem em vez de começarem tudo de novo.
Implementação e Testes
Criamos um protótipo do Canary usando um tipo de switch programável e fizemos uma série de testes. Isso ajudou a entender suas limitações enquanto também mostrava suas forças. Os resultados mostraram que o Canary podia lidar com mais operações simultaneamente que os métodos anteriores sem desacelerar.
Análise de Performance
Fizemos outra rodada de testes em um setup mais extenso, usando uma rede grande simulada com vários computadores e switches. Isso ajudou a medir como o Canary se compara com outros métodos.
Resultados de Goodput
O primeiro teste avaliou quanto dado podia ser processado de forma eficaz. Quando não havia interferência na rede, todos os métodos tiveram Desempenho parecido. Mas, quando adicionamos congestionamento intencionalmente, o Canary manteve um goodput muito mais alto, mostrando sua eficácia em lidar com condições do mundo real.
Tempo de Execução do Allreduce com Diferentes Tamanhos de Dados
Também analisamos quanto tempo levou pra completar a operação allreduce para vários tamanhos de dados. Notamos que mesmo pra conjuntos de dados menores, o Canary foi mais rápido, especialmente conforme o tamanho aumentou. Isso destaca que seu impacto se torna mais evidente ao lidar com volumes maiores de dados.
Allreduces Concorrentes
VáriosEm ambientes onde várias operações allreduce acontecem ao mesmo tempo, os métodos tradicionais têm dificuldades sob a carga, desacelerando bastante. O Canary se destaca nessa situação, permitindo mais operações simultâneas enquanto mantém a performance alta.
Desafios e Melhorias
Apesar das suas vantagens, o Canary não tá livre de desafios. Por exemplo, pode ocasionalmente criar tráfego de rede desnecessário quando encontra certas condições. Ajustes na forma como ele lida com dados e rotas poderiam melhorar ainda mais sua eficiência.
Conclusão
Em resumo, o Canary é uma maneira responsiva e eficiente de gerenciar operações allreduce em redes movimentadas. Ao ajustar dinamicamente os caminhos que os dados seguem, consegue evitar lentidões causadas por congestionamento enquanto usa os recursos de forma eficiente. Os resultados tanto do nosso protótipo quanto das simulações extensas mostram que o Canary é uma melhoria significativa em relação aos métodos existentes, tornando-o bem adequado para sistemas de computadores de futuras gerações.
Com esse trabalho, mostramos que ficar de olho nas condições atuais da rede e permitir que as rotas de dados mudem dinamicamente pode levar a um desempenho melhor, especialmente em ambientes que exigem alta eficiência. À medida que a tecnologia avança, métodos como o Canary provavelmente vão desempenhar um papel crucial em garantir que aplicações distribuídas possam rodar de forma suave e eficaz.
Título: Canary: Congestion-Aware In-Network Allreduce Using Dynamic Trees
Resumo: The allreduce operation is an essential building block for many distributed applications, ranging from the training of deep learning models to scientific computing. In an allreduce operation, data from multiple hosts is aggregated together and then broadcasted to each host participating in the operation. Allreduce performance can be improved by a factor of two by aggregating the data directly in the network. Switches aggregate data coming from multiple ports before forwarding the partially aggregated result to the next hop. In all existing solutions, each switch needs to know the ports from which it will receive the data to aggregate. However, this forces packets to traverse a predefined set of switches, making these solutions prone to congestion. For this reason, we design Canary, the first congestion-aware in-network allreduce algorithm. Canary uses load balancing algorithms to forward packets on the least congested paths. Because switches do not know from which ports they will receive the data to aggregate, they use timeouts to aggregate the data in a best-effort way. We develop a P4 Canary prototype and evaluate it on a Tofino switch. We then validate Canary through simulations on large networks, showing performance improvements up to 40% compared to the state-of-the-art.
Autores: Daniele De Sensi, Edgar Costa Molero, Salvatore Di Girolamo, Laurent Vanbever, Torsten Hoefler
Última atualização: 2023-09-28 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2309.16214
Fonte PDF: https://arxiv.org/pdf/2309.16214
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.