Melhore o desempenho do aprendizado de máquina eliminando os zeros

Crédito: Pixabay / CC0 Public Domain

Os pesquisadores do KAUST descobriram uma maneira de aumentar significativamente a velocidade do treinamento. Modelos grandes de aprendizado de máquina podem ser treinados com muito mais rapidez, observando a frequência com que resultados zero são produzidos no aprendizado de máquina distribuído que usa grandes conjuntos de dados de treinamento.

Os modelos de IA desenvolvem sua “inteligência” sendo treinados em conjuntos de dados que foram rotulados para dizer ao modelo como diferenciar entre diferentes entradas e, em seguida, responder de acordo. Quanto mais dados rotulados forem inseridos, melhor o modelo se tornará na execução de qualquer tarefa para a qual foi designado. Para aplicações complexas de aprendizagem profunda, como veículos autônomos, isso requer enormes conjuntos de dados de entrada e tempos de treinamento muito longos, mesmo ao usar plataformas de supercomputação altamente paralelas poderosas e caras.

Durante o treinamento, pequenas tarefas de aprendizagem são atribuídas a dezenas ou centenas de nós de computação, que então compartilham seus resultados em uma rede de comunicação antes de executar a próxima tarefa. Uma das maiores fontes de sobrecarga de computação em tais tarefas de computação paralela é, na verdade, essa comunicação entre os nós de computação em cada etapa do modelo.

“A comunicação é um grande gargalo de desempenho no aprendizado profundo distribuído”, explica Jiawei Fei da equipe KAUST. “Junto com o aumento acelerado no tamanho do modelo, também vemos um aumento na proporção de valores zero que são produzidos durante o processo de aprendizagem, o que chamamos de esparsidade. Nossa ideia era explorar essa dispersão para maximizar o uso eficaz da largura de banda, enviando apenas blocos de dados diferentes de zero. ”

Com base em um desenvolvimento KAUST anterior chamado SwitchML, que otimizou as comunicações entre nós ao executar um código de agregação eficiente nos switches de rede que processam a transferência de dados, Fei, Marco Canini e seus colegas deram um passo adiante, identificando resultados zero e desenvolvendo uma maneira de interromper a transmissão sem interromper a sincronização do processo de computação paralela.

“Exatamente como explorar a dispersão para acelerar o treinamento distribuído é um problema desafiador”, diz Fei. “Todos os nós precisam processar blocos de dados no mesmo local em um intervalo de tempo, então temos que coordenar os nós para garantir que apenas blocos de dados no mesmo local sejam agregados. Para superar isso, criamos um processo agregador para coordenar os trabalhadores , instruindo-os sobre qual bloco enviar em seguida. ”

A equipe demonstrou seu esquema OmniReduce em um ambiente de teste que consiste em uma série de unidades de processamento gráfico (GPU) e alcançou uma aceleração de oito vezes para tarefas típicas de aprendizado profundo.

“Agora estamos adaptando o OmniReduce para rodar em switches programáveis usando computação na rede para melhorar ainda mais o desempenho”, disse Fei.


Publicado em 24/08/2021 13h38

Artigo original:

Estudo original:


Achou importante? Compartilhe!