Un nuevo sistema de investigadores del MIT "aprende" automáticamente cómo asignar operaciones de procesamiento de datos entre miles de servidores.
Un sistema novedoso desarrollado por investigadores del MIT "aprende" automáticamente cómo programar operaciones de procesamiento de datos en miles de servidores, una tarea tradicionalmente reservada para imprecisos, algoritmos diseñados por humanos. Hacerlo podría ayudar a que los centros de datos de hoy en día, que requieren mucha energía, funcionen de manera mucho más eficiente.
Los centros de datos pueden contener decenas de miles de servidores, que ejecutan constantemente tareas de procesamiento de datos de desarrolladores y usuarios. Los algoritmos de programación de clústeres asignan las tareas entrantes entre los servidores, en tiempo real, para utilizar de manera eficiente todos los recursos informáticos disponibles y realizar el trabajo rápidamente.
Tradicionalmente, sin embargo, los humanos ajustan esos algoritmos de programación, basado en algunas pautas básicas ("políticas") y varias compensaciones. Que puede, por ejemplo, codifique el algoritmo para realizar ciertos trabajos rápidamente o divida los recursos en partes iguales entre los trabajos. Pero las cargas de trabajo, es decir, grupos de tareas combinadas, vienen en todos los tamaños. Por lo tanto, es prácticamente imposible para los humanos optimizar sus algoritmos de programación para cargas de trabajo específicas y, como resultado, a menudo no alcanzan su verdadero potencial de eficiencia.
En cambio, los investigadores del MIT descargaron toda la codificación manual a las máquinas. En un artículo presentado en SIGCOMM, describen un sistema que aprovecha el "aprendizaje por refuerzo" (RL), una técnica de aprendizaje automático de prueba y error, para adaptar las decisiones de programación a cargas de trabajo específicas en clústeres de servidores específicos.
Para hacerlo crearon técnicas novedosas de RL que podían capacitarse en cargas de trabajo complejas. Entrenando, el sistema intenta muchas formas posibles de asignar cargas de trabajo entrantes entre los servidores, eventualmente encontrando una compensación óptima en la utilización de recursos de computación y velocidades de procesamiento rápidas. No se requiere ninguna intervención humana más allá de una simple instrucción, tal como, "minimizar los tiempos de finalización del trabajo".
En comparación con los mejores algoritmos de programación escritos a mano, el sistema de los investigadores completa los trabajos entre un 20 y un 30 por ciento más rápido, y el doble de rápido durante las épocas de mucho tráfico. Principalmente, sin embargo, el sistema aprende a compactar cargas de trabajo de manera eficiente para dejar poco desperdicio. Los resultados indican que el sistema podría permitir que los centros de datos manejen la misma carga de trabajo a velocidades más altas, utilizando menos recursos.
"Si tiene una forma de hacer prueba y error con máquinas, pueden probar diferentes formas de programar trabajos y determinar automáticamente qué estrategia es mejor que otras, "dice Hongzi Mao, un doctorado estudiante del Departamento de Ingeniería Eléctrica e Informática (EECS). "Eso puede mejorar el rendimiento del sistema automáticamente. Y cualquier mejora leve en la utilización, incluso el 1 por ciento, puede ahorrar millones de dólares y mucha energía en los centros de datos ".
"No existe una solución única para tomar decisiones de programación, "agrega el coautor Mohammad Alizadeh, profesor e investigador de EECS en el Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL). "En los sistemas existentes, estos son parámetros codificados de forma rígida que debe decidir por adelantado. En cambio, nuestro sistema aprende a ajustar las características de su política de programación, dependiendo del centro de datos y la carga de trabajo ".
Junto a Mao y Alizadeh en el papel están:los postdoctorados Malte Schwarzkopf y Shaileshh Bojja Venkatakrishnan, y asistente de investigación graduada Zili Meng, todo CSAIL.
RL para programar
Típicamente, Los trabajos de procesamiento de datos llegan a los centros de datos representados como gráficos de "nodos" y "bordes". Cada nodo representa alguna tarea de cálculo que debe realizarse, donde cuanto más grande es el nodo, la potencia de cálculo más necesaria. Los bordes que conectan los nodos vinculan las tareas conectadas entre sí. Los algoritmos de programación asignan nodos a los servidores, basado en varias políticas.
Pero los sistemas tradicionales de RL no están acostumbrados a procesar gráficos tan dinámicos. Estos sistemas utilizan un "agente" de software que toma decisiones y recibe una señal de retroalimentación como recompensa. Esencialmente, trata de maximizar sus recompensas por cualquier acción dada para aprender un comportamiento ideal en un contexto determinado. Ellos pueden, por ejemplo, ayudar a los robots a aprender a realizar una tarea como recoger un objeto interactuando con el entorno, pero eso implica procesar videos o imágenes a través de una cuadrícula de píxeles más sencilla.
Para construir su programador basado en RL, llamado Decima, los investigadores tuvieron que desarrollar un modelo que pudiera procesar trabajos estructurados en gráficos, y escalar a una gran cantidad de trabajos y servidores. El "agente" de su sistema es un algoritmo de programación que aprovecha una red neuronal gráfica, comúnmente utilizado para procesar datos estructurados en gráficos. Para crear una red neuronal gráfica adecuada para la programación, implementaron un componente personalizado que agrega información a través de rutas en el gráfico, como estimar rápidamente cuántos cálculos se necesitan para completar una parte determinada del gráfico. Eso es importante para la programación de trabajos porque los nodos "secundarios" (inferiores) no pueden comenzar a ejecutarse hasta que finalicen sus nodos "principales" (superiores), por lo que anticipar el trabajo futuro a lo largo de diferentes rutas en el gráfico es fundamental para tomar buenas decisiones de programación.
Para entrenar su sistema RL, los investigadores simularon muchas secuencias de gráficos diferentes que imitan las cargas de trabajo que llegan a los centros de datos. Luego, el agente toma decisiones sobre cómo asignar cada nodo a lo largo del gráfico a cada servidor. Para cada decisión, un componente calcula una recompensa en función de su desempeño en una tarea específica, como minimizar el tiempo promedio que tomó procesar un solo trabajo. El agente sigue adelante mejorando sus decisiones, hasta que obtenga la mayor recompensa posible.
Cargas de trabajo de base
Una preocupación sin embargo, es que algunas secuencias de carga de trabajo son más difíciles de procesar que otras, porque tienen tareas más grandes o estructuras más complicadas. Esos siempre tardarán más en procesarse y, por lo tanto, la señal de recompensa siempre será más baja que las más simples. Pero eso no significa necesariamente que el sistema haya tenido un desempeño deficiente:podría ser un buen momento en una carga de trabajo desafiante, pero aún así ser más lento que una carga de trabajo más fácil. Esa variabilidad en la dificultad hace que sea un desafío para el modelo decidir qué acciones son buenas o no.
Para abordar eso, los investigadores adaptaron una técnica llamada "línea de base" en este contexto. Esta técnica toma promedios de escenarios con una gran cantidad de variables y usa esos promedios como línea de base para comparar resultados futuros. Durante el entrenamiento, calcularon una línea de base para cada secuencia de entrada. Luego, permiten que el programador se entrene en cada secuencia de carga de trabajo varias veces. Próximo, el sistema tomó el rendimiento promedio en todas las decisiones tomadas para la misma carga de trabajo de entrada. Ese promedio es la línea de base con la que el modelo podría comparar sus decisiones futuras para determinar si sus decisiones son buenas o malas. Se refieren a esta nueva técnica como "línea de base dependiente de insumos".
Esa innovación, los investigadores dicen, es aplicable a muchos sistemas informáticos diferentes. "Esta es una forma general de hacer aprendizaje por refuerzo en entornos donde existe este proceso de entrada que afecta el entorno, y desea que cada evento de capacitación considere una muestra de ese proceso de entrada, ", dice." Casi todos los sistemas informáticos se ocupan de entornos en los que las cosas cambian constantemente ".
Aditya Akella, profesor de informática en la Universidad de Wisconsin en Madison, cuyo grupo ha diseñado varios programadores de alto rendimiento, descubrió que el sistema MIT podría ayudar a mejorar aún más sus propias políticas. "Decima puede ir un paso más allá y encontrar oportunidades para la optimización [de la programación] que son simplemente demasiado onerosas de realizar mediante procesos manuales de diseño / ajuste, ", Dice Akella." Los programadores que diseñamos lograron mejoras significativas con respecto a las técnicas utilizadas en la producción en términos de rendimiento de la aplicación y eficiencia del clúster, pero todavía había una brecha con las mejoras ideales que posiblemente podríamos lograr. Decima muestra que un enfoque basado en RL puede descubrir [políticas] que ayuden a cerrar aún más la brecha. Decima mejoró nuestras técnicas en un [aproximadamente] 30 por ciento, lo que fue una gran sorpresa ".
Ahora, su modelo está entrenado en simulaciones que intentan recrear el tráfico entrante en línea en tiempo real. Próximo, los investigadores esperan entrenar el modelo en el tráfico en tiempo real, lo que potencialmente podría bloquear los servidores. Entonces, actualmente están desarrollando una "red de seguridad" que detendrá su sistema cuando esté a punto de causar un accidente. "Lo consideramos ruedas de entrenamiento, ", Dice Alizadeh." Queremos que este sistema entrene continuamente, pero tiene ciertas ruedas de entrenamiento que si va demasiado lejos podemos asegurarnos de que no se caiga ".
Esta historia se vuelve a publicar por cortesía de MIT News (web.mit.edu/newsoffice/), un sitio popular que cubre noticias sobre la investigación del MIT, innovación y docencia.