Um novo sistema de pesquisadores do MIT “aprende” automaticamente como alocar operações de processamento de dados em milhares de servidores.
Um novo sistema desenvolvido por pesquisadores do MIT "aprende" automaticamente como agendar operações de processamento de dados em milhares de servidores - uma tarefa tradicionalmente reservada para imprecisões, algoritmos projetados por humanos. Isso poderia ajudar os atuais data centers, que consomem muita energia, a funcionar com muito mais eficiência.
Os data centers podem conter dezenas de milhares de servidores, que executa constantemente tarefas de processamento de dados de desenvolvedores e usuários. Os algoritmos de agendamento de cluster alocam as tarefas de entrada nos servidores, em tempo real, para utilizar de forma eficiente todos os recursos de computação disponíveis e realizar os trabalhos rapidamente.
Tradicionalmente, Contudo, humanos ajustam esses algoritmos de programação, com base em algumas diretrizes básicas ("políticas") e várias compensações. Eles podem, por exemplo, codifique o algoritmo para que determinados trabalhos sejam realizados rapidamente ou divida os recursos igualmente entre os trabalhos. Mas as cargas de trabalho - ou seja, grupos de tarefas combinadas - vêm em todos os tamanhos. Portanto, é virtualmente impossível para humanos otimizar seus algoritmos de agendamento para cargas de trabalho específicas e, como resultado, muitas vezes ficam aquém de seu verdadeiro potencial de eficiência.
Os pesquisadores do MIT, em vez disso, transferiram toda a codificação manual para as máquinas. Em um artigo que está sendo apresentado no SIGCOMM, eles descrevem um sistema que aproveita a "aprendizagem por reforço" (RL), uma técnica de aprendizado de máquina de tentativa e erro, para adaptar as decisões de agendamento para cargas de trabalho específicas em clusters de servidores específicos.
Para fazer isso, eles criaram novas técnicas de RL que podiam treinar em cargas de trabalho complexas. Em treinamento, o sistema tenta muitas maneiras possíveis de alocar cargas de trabalho de entrada entre os servidores, eventualmente, encontrando uma compensação ideal na utilização de recursos de computação e velocidades de processamento rápidas. Nenhuma intervenção humana é necessária além de uma simples instrução, tal como, "minimizar os tempos de conclusão do trabalho."
Comparado com os melhores algoritmos de programação manuscrita, o sistema dos pesquisadores conclui trabalhos cerca de 20 a 30 por cento mais rápido, e duas vezes mais rápido em horários de alto tráfego. Majoritariamente, Contudo, o sistema aprende como compactar cargas de trabalho de forma eficiente para deixar pouco desperdício. Os resultados indicam que o sistema pode permitir que os data centers lidem com a mesma carga de trabalho em velocidades mais altas, usando menos recursos.
"Se você tem uma maneira de fazer tentativa e erro usando máquinas, eles podem tentar maneiras diferentes de agendar tarefas e descobrir automaticamente qual estratégia é melhor do que outras, "diz Hongzi Mao, um Ph.D. Aluno do Departamento de Engenharia Elétrica e Ciência da Computação (EECS). "Isso pode melhorar o desempenho do sistema automaticamente. E qualquer pequena melhora na utilização, mesmo 1 por cento, pode economizar milhões de dólares e muita energia em data centers. "
"Não existe um tamanho único para a tomada de decisões de agendamento, "acrescenta o co-autor Mohammad Alizadeh, professor do EECS e pesquisador do Laboratório de Ciência da Computação e Inteligência Artificial (CSAIL). "Em sistemas existentes, esses são parâmetros embutidos em código que você deve decidir antecipadamente. Em vez disso, nosso sistema aprende a ajustar suas características de política de cronograma, dependendo do data center e da carga de trabalho. "
Juntando-se a Mao e Alizadeh no papel estão:pós-docs Malte Schwarzkopf e Shaileshh Bojja Venkatakrishnan, e o assistente de pesquisa de pós-graduação Zili Meng, tudo de CSAIL.
RL para agendamento
Tipicamente, os trabalhos de processamento de dados chegam aos data centers representados como gráficos de "nós" e "bordas". Cada nó representa alguma tarefa de computação que precisa ser feita, onde quanto maior o nó, mais potência de computação necessária. As arestas que conectam os nós unem tarefas conectadas. Algoritmos de agendamento atribuem nós a servidores, com base em várias políticas.
Mas os sistemas RL tradicionais não estão acostumados a processar esses gráficos dinâmicos. Esses sistemas usam um "agente" de software que toma decisões e recebe um sinal de feedback como recompensa. Essencialmente, ele tenta maximizar suas recompensas por qualquer ação para aprender um comportamento ideal em um determinado contexto. Eles podem, por exemplo, ajudar os robôs a aprender a realizar uma tarefa como pegar um objeto interagindo com o ambiente, mas isso envolve o processamento de vídeo ou imagens por meio de uma grade de pixels mais fácil.
Para construir seu programador baseado em RL, chamado Decima, os pesquisadores tiveram que desenvolver um modelo que pudesse processar trabalhos estruturados em gráficos, e escalar para um grande número de trabalhos e servidores. O "agente" do seu sistema é um algoritmo de escalonamento que alavanca uma rede neural de grafo, comumente usado para processar dados estruturados em gráficos. Para criar uma rede neural de gráfico adequada para agendamento, eles implementaram um componente personalizado que agrega informações entre os caminhos do gráfico - como uma estimativa rápida de quanto cálculo é necessário para completar uma determinada parte do gráfico. Isso é importante para o agendamento de tarefas, porque os nós "filhos" (inferiores) não podem começar a executar até que seus nós "pais" (superiores) terminem, portanto, antecipar o trabalho futuro ao longo de diferentes caminhos no gráfico é fundamental para tomar boas decisões de agendamento.
Para treinar seu sistema RL, os pesquisadores simularam muitas sequências de gráficos diferentes que imitam as cargas de trabalho que chegam aos data centers. O agente então toma decisões sobre como alocar cada nó ao longo do gráfico para cada servidor. Para cada decisão, um componente calcula uma recompensa com base em seu desempenho em uma tarefa específica - como minimizar o tempo médio necessário para processar um único trabalho. O agente continua indo, melhorando suas decisões, até obter a maior recompensa possível.
Limitando cargas de trabalho
Uma preocupação, Contudo, é que algumas sequências de carga de trabalho são mais difíceis de processar do que outras, porque eles têm tarefas maiores ou estruturas mais complicadas. Isso sempre levará mais tempo para processar - e, Portanto, o sinal de recompensa sempre será menor - do que os mais simples. Mas isso não significa necessariamente que o sistema teve um desempenho insatisfatório:ele poderia fazer um bom tempo em uma carga de trabalho desafiadora, mas ainda assim ser mais lento do que uma carga de trabalho mais fácil. Essa variabilidade na dificuldade torna um desafio para o modelo decidir quais ações são boas ou não.
Para resolver isso, os pesquisadores adaptaram uma técnica chamada "linha de base" neste contexto. Essa técnica obtém médias de cenários com um grande número de variáveis e usa essas médias como linha de base para comparar resultados futuros. Durante o treinamento, eles calcularam uma linha de base para cada sequência de entrada. Então, eles permitem que o planejador treine em cada sequência de carga de trabalho várias vezes. Próximo, o sistema obteve o desempenho médio em todas as decisões tomadas para a mesma carga de trabalho de entrada. Essa média é a linha de base com a qual o modelo pode comparar suas decisões futuras para determinar se suas decisões são boas ou más. Eles se referem a essa nova técnica como "linha de base dependente de entrada".
Essa inovação, os pesquisadores dizem, é aplicável a muitos sistemas de computador diferentes. "Esta é uma maneira geral de fazer o aprendizado por reforço em ambientes onde há esse processo de entrada que afeta o ambiente, e você deseja que cada evento de treinamento considere uma amostra desse processo de entrada, ", diz ele." Quase todos os sistemas de computador lidam com ambientes onde as coisas estão em constante mudança. "
Aditya Akella, professor de ciência da computação na Universidade de Wisconsin em Madison, cujo grupo projetou vários programadores de alto desempenho, descobriram que o sistema do MIT poderia ajudar a melhorar ainda mais suas próprias políticas. "Decima pode dar um passo adiante e encontrar oportunidades de otimização [programação] que são simplesmente onerosas demais para realizar por meio de processos manuais de design / ajuste, "Akella diz." Os planejadores que projetamos obtiveram melhorias significativas em relação às técnicas usadas na produção em termos de desempenho do aplicativo e eficiência do cluster, mas ainda havia uma lacuna entre as melhorias ideais que poderíamos alcançar. Decima mostra que uma abordagem baseada em RL pode descobrir [políticas] que ajudam a preencher a lacuna ainda mais. Decima melhorou nossas técnicas em [aproximadamente] 30 por cento, o que foi uma grande surpresa. "
Agora mesmo, seu modelo é treinado em simulações que tentam recriar o tráfego online de entrada em tempo real. Próximo, os pesquisadores esperam treinar o modelo no tráfego em tempo real, o que poderia travar os servidores. Então, atualmente estão desenvolvendo uma "rede de segurança" que interromperá seu sistema quando estiver prestes a causar um acidente. "Nós pensamos nisso como rodinhas de treinamento, "Alizadeh diz." Queremos que este sistema treine continuamente, mas tem certas rodinhas de apoio que, se for longe demais, podemos garantir que não caia. "
Esta história foi republicada por cortesia do MIT News (web.mit.edu/newsoffice/), um site popular que cobre notícias sobre pesquisas do MIT, inovação e ensino.