Los investigadores del MIT han inventado una herramienta de aprendizaje automático que predice cuál será la rapidez de un chip al ejecutar el código de varias aplicaciones. El sistema de aprendizaje automático debería permitir a los desarrolladores mejorar la eficiencia informática en una variedad de aplicaciones.
Para que el código se ejecute lo más rápido posible, los desarrolladores y compiladores —programas que traducen el lenguaje de programación en código legible para la máquina— generalmente usan modelos de rendimiento que ejecutan el código a través de una simulación de arquitecturas de chip dadas previamente.
Los compiladores usan esa información para optimizar automáticamente el código, y los desarrolladores la usan para abordar el embotellamiento del rendimiento en los microprocesadores que lo ejecutarán. Pero los modelos de rendimiento para el código de máquina están escritos a mano por un grupo relativamente pequeño de expertos y no están debidamente validados. Como consecuencia, las mediciones de rendimiento simuladas a menudo se desvían de los resultados de la vida real.
En una serie de estudios, los investigadores describen una nueva tubería de aprendizaje automático que automatiza este proceso, haciéndolo más fácil, rápido y preciso. En un documento presentado en la Conferencia Internacional sobre Aprendizaje Automático en junio de 2019, los investigadores presentaron Ithemal, un modelo de red neuronal que se entrena con datos etiquetados en forma de «bloques básicos» – fragmentos fundamentales de instrucciones de computación – para predecir automáticamente cuánto tiempo necesita un chip para ejecutar bloques básicos previamente no vistos. Los resultados sugieren que Ithemal se desempeña con mucha más precisión que los modelos tradicionales sintonizados a mano.
Luego, en el Simposio internacional IEEE de noviembre de 2019 sobre la caracterización de la carga de trabajo, los investigadores presentaron un conjunto de bloques básicos de referencia de una variedad de dominios, que incluyen aprendizaje automático, compiladores, criptografías y gráficos que pueden usarse para validar modelos de rendimiento. Agruparon más de 300.000 de los bloques perfilados en un conjunto de datos de código abierto llamado BHive. Durante sus evaluaciones, Ithemal predijo cómo de rápido los chips Intel ejecutarían el código incluso mejor que un modelo de rendimiento construido por el propio Intel.
En última instancia, los desarrolladores y compiladores pueden usar la herramienta para generar códigos que se ejecutan más rápido y de forma más eficiente en un número cada vez mayor de diseños de chips diversos y de «caja negra».
“Los procesadores de computadora modernos son opacos, terriblemente complicados y difíciles de entender. También es increíblemente desafiante escribir códigos de computadora que se ejecuten lo más rápido posible para estos procesadores«, afirmó el coautor de los tres estudios, Michael Carbin, profesor asistente en el Departamento de Ingeniería Eléctrica y Ciencias de la Computación (EECS) e investigador en Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL). «Esta herramienta es un gran paso adelante para modelar completamente el rendimiento de estos chips para mejorar la eficiencia«.
Recientemente, en un documento presentado en la conferencia NeurIPS en diciembre de 2019, el equipo propuso una nueva técnica para generar automáticamente optimizaciones del compilador. De forma específica, generan automáticamente un algoritmo, llamado Vemal, que convierte cierto código en vectores que pueden usarse para la computación paralela. Vemal supera a los algoritmos de vectorización hechos a mano utilizados en el compilador LLVM, un compilador popular utilizado en la industria.
Aprendiendo de los datos
Diseñar modelos de rendimiento a mano puede ser «un arte de magia«, dice Carbin. Intel proporciona una extensa documentación de más de 3.000 páginas que describen las arquitecturas de sus chips. Pero actualmente solo existe un pequeño grupo de expertos que crean modelos de rendimiento que simulan la ejecución de código en esas arquitecturas.
«Los documentos de Intel no están libres de errores ni están completos, e Intel omitirá ciertas cosas, porque es de propiedad exclusiva«, dice el coautor de los tres estudios Charith Mendis, un estudiante graduado en EECS y CSAIL. «Sin embargo, cuando utiliza datos, no necesita conocer la documentación. Si hay algo oculto, puede aprenderlo directamente de los datos «.
Para hacerlo, los investigadores registraron el número promedio de ciclos que toma un microprocesador dado para calcular las instrucciones básicas de bloqueo, básicamente, la secuencia de arranque, ejecución y apagado, sin intervención humana.
La automatización del proceso permite la creación rápida de perfiles de cientos de miles o millones de bloques.
Arquitecturas específicas de dominio
El modelo Ithemal analiza millones de bloques básicos perfilados automáticamente para aprender exactamente cómo las diferentes arquitecturas de chips ejecutarán la computación. Es importante destacar que Ithemal toma el texto sin formato como entrada y no requiere agregar características manualmente a los datos de entrada. En las pruebas, Ithemal puede ser alimentado con bloques básicos previamente no vistos y un chip dado, y generará un solo número que indica la rapidez con la que el chip ejecutará ese código.
Los investigadores encontraron que Ithemal redujo las tasas de error en la precisión, es decir, la diferencia entre la velocidad pronosticada y la velocidad del mundo real, en un 50% con respecto a los modelos tradicionales hechos a mano. Además, en su próximo artículo, mostrarán que la tasa de error de Ithemal era del 10%, mientras que la tasa de error del modelo de predicción del rendimiento de Intel era del 20% en una variedad de bloques básicos en múltiples dominios diferentes.
La herramienta hace que sea más fácil que aprenda velocidades de rendimiento para cualquier nueva arquitectura de chips, dice Mendis. Por ejemplo, las arquitecturas específicas de dominio, como la nueva ‘Unidad de Procesamiento de Tensor’ de Google utilizada específicamente para redes neuronales, ahora se están construyendo, pero no se conoce ampliamente.
«Si desea programa un modelo en una nueva arquitectura, simplemente recopile más datos de esa arquitectura, ejecútelos a través de nuestro generador de perfiles, use esa información para entrenar a Ithemal, y obtendrá un modelo que predice el rendimiento«, dice Mendis.
Después, los investigadores están estudiando métodos para hacer que los modelos sean interpretables. Gran parte del aprendizaje automático es una caja negra, por lo que no está realmente claro por qué un modelo en particular hizo sus predicciones. “Nuestro modelo dice que se necesita un procesador, digamos, 10 ciclos para ejecutar un bloque básico. Ahora, estamos tratando de descubrir por qué«, dice Carbin. «Ese es un buen nivel de granularidad que sería sorprendente para este tipo de herramientas«.
También esperan usar Ithemal para mejorar aún más el rendimiento de Vemal y lograr un mejor rendimiento automáticamente.
Más información:
Ithemal: Accurate, Portable and Fast Basic Block Throughput Estimation using Deep Neural Networks.
Paper: Compiler Auto-Vectorization with Imitation Learning.
Fuente: MIT