Creación de lenguajes de programación a medida para sistemas de IA visual eficientes

foto-resumen

Por Lauren Hinkel Una sola fotografía ofrece una visión del mundo del creador: sus intereses y sentimientos sobre un tema o espacio. Pero, ¿qué pasa con los creadores detrás de las tecnologías que ayudan a hacer posibles esas imágenes? El profesor asociado del Departamento de Ingeniería Eléctrica y Ciencias de la Computación del MIT, Jonathan Ragan-Kelley, es una de esas personas, que ha diseñado todo, desde herramientas para efectos visuales en películas hasta el lenguaje de programación Halide, que se usa ampliamente en la industria para la edición y el procesamiento de fotos. Como investigadora del Laboratorio de Inteligencia Artificial Watson del MIT-IBM y del Laboratorio de Ciencias de la Computación e Inteligencia Artificial, Ragan-Kelley se especializa en lenguajes de programación de alto rendimiento y dominio específico y aprendizaje automático que permiten gráficos 2D y 3D, efectos visuales y fotografía computacional. "El mayor impulso a través de gran parte de nuestra investigación es el desarrollo de nuevos lenguajes de programación que faciliten la escritura de programas que se ejecuten de manera realmente eficiente en el hardware cada vez más complejo que se encuentra en su computadora hoy en día", dice Ragan-Kelley. "Si queremos seguir aumentando el poder computacional que realmente podemos explotar para aplicaciones reales, desde gráficos y computación visual hasta inteligencia artificial, necesitamos cambiar la forma en que programamos". Encontrar un término medio En las últimas dos décadas, los diseñadores de chips y los ingenieros de programación han sido testigos de una ralentización de la ley de Moore y de un marcado cambio de la computación de propósito general en las CPU a unidades de computación y procesamiento más variadas y especializadas, como las GPU y los aceleradores. Con esta transición viene una compensación: la capacidad de ejecutar código de propósito general con cierta lentitud en las CPU, por un hardware más rápido y eficiente que requiere que el código se adapte en gran medida a él y se asigne a él con programas y compiladores personalizados. El hardware más nuevo con programación mejorada puede admitir mejor aplicaciones como interfaces de radio celular de gran ancho de banda, decodificación de videos altamente comprimidos para transmisión y procesamiento de gráficos y video en cámaras de teléfonos celulares con restricciones de energía, por nombrar algunas aplicaciones. "Nuestro trabajo consiste en gran medida en desbloquear el poder del mejor hardware que podamos construir para ofrecer el mayor rendimiento y eficiencia computacional posible para este tipo de aplicaciones de una manera que los lenguajes de programación tradicionales no lo hacen". Para lograr esto, Ragan-Kelley divide su trabajo en dos direcciones. En primer lugar, sacrifica la generalidad para capturar la estructura de problemas computacionales particulares e importantes y la explota para mejorar la eficiencia de la computación. Esto se puede ver en el lenguaje de procesamiento de imágenes Halide, que co-desarrolló y ha ayudado a transformar la industria de la edición de imágenes en programas como Photoshop. Además, debido a que está especialmente diseñado para manejar rápidamente matrices densas y regulares de números (tensores), también funciona bien para cálculos de redes neuronales. El segundo enfoque se centra en la automatización, específicamente en la forma en que los compiladores asignan los programas al hardware. Uno de estos proyectos con el Watson AI Lab del MIT-IBM aprovecha Exo, un lenguaje desarrollado en el grupo de Ragan-Kelley. A lo largo de los años, los investigadores han trabajado tenazmente para automatizar la codificación con compiladores, que pueden ser una caja negra; Sin embargo, todavía hay una gran necesidad de control y ajuste explícitos por parte de los ingenieros de rendimiento. Ragan-Kelley y su grupo están desarrollando métodos que abarcan cada técnica, equilibrando las compensaciones para lograr una programación eficaz y eficiente en el uso de los recursos. En el núcleo de muchos programas de alto rendimiento, como los motores de videojuegos o el procesamiento de cámaras de teléfonos móviles, se encuentran sistemas de última generación que están optimizados en gran medida a mano por expertos humanos en lenguajes detallados y de bajo nivel como C, C++ y ensamblador. Aquí, los ingenieros toman decisiones específicas sobre cómo se ejecutará el programa en el hardware. Ragan-Kelley señala que los programadores pueden optar por "código de bajo nivel muy minucioso, muy improductivo y muy inseguro", que podría introducir errores, o "interfaces de programación más seguras, más productivas y de alto nivel", que carecen de la capacidad de hacer ajustes finos en un compilador sobre cómo se ejecuta el programa y, por lo general, ofrecen un rendimiento más bajo. Por lo tanto, su equipo está tratando de encontrar un punto medio. "Estamos tratando de averiguar cómo proporcionar control para los problemas clave que los ingenieros de rendimiento humano quieren poder controlar", dice Ragan-Kelley, "por lo tanto, estamos tratando de construir una nueva clase de lenguajes que llamamos lenguajes programables por el usuario que brindan identificadores más seguros y de mayor nivel para controlar lo que hace el compilador o controlar cómo se optimiza el programa". Desbloqueo de hardware: formas de alto nivel y desatendidas Ragan-Kelley y su grupo de investigación están abordando esto a través de dos líneas de trabajo: aplicar el aprendizaje automático y las técnicas modernas de IA para generar automáticamente programaciones optimizadas, una interfaz con el compilador, para lograr un mejor rendimiento del compilador. Otro usa la "exocompilación" en la que está trabajando con el laboratorio. Describe este método como una forma de "darle la vuelta al compilador", con un esqueleto de compilador con controles para la guía humana y la personalización. Además, su equipo puede agregar sus planificadores a medida en la parte superior, lo que puede ayudar a apuntar a hardware especializado como aceleradores de aprendizaje automático de IBM Research. Las aplicaciones de este trabajo abarcan toda la gama: visión artificial, reconocimiento de objetos, síntesis de voz, síntesis de imágenes, reconocimiento de voz, generación de texto (grandes modelos de lenguaje), etc. Un proyecto suyo con el laboratorio lleva esto un paso más allá, abordando el trabajo a través de una lente de sistemas. En un trabajo dirigido por su asesor y pasante de laboratorio William Brandon, en colaboración con el científico investigador de laboratorio Rameswar Panda, el equipo de Ragan-Kelley está repensando los modelos de lenguaje grandes (LLM), encontrando formas de cambiar ligeramente la computación y la arquitectura de programación del modelo para que los modelos basados en transformadores puedan ejecutarse de manera más eficiente en hardware de IA sin sacrificar la precisión. Su trabajo, dice Ragan-Kelley, se desvía de las formas estándar de pensar de manera significativa con recompensas potencialmente grandes por reducir costos, mejorar capacidades y / o reducir el LLM para requerir menos memoria y ejecutarse en computadoras más pequeñas. Es este pensamiento más vanguardista, en lo que respecta a la eficiencia computacional y el hardware, en el que Ragan-Kelley sobresale y ve valor, especialmente a largo plazo. "Creo que hay áreas [de investigación] que deben seguirse, pero que están bien establecidas, o son obvias, o son lo suficientemente convencionales como para que muchas personas ya las sigan o las seguirán", dice. "Tratamos de encontrar las ideas que tienen una gran influencia para impactar prácticamente en el mundo y, al mismo tiempo, son cosas que no necesariamente sucederían, o creo que están siendo desatendidas en relación con su potencial por el resto de la comunidad". El curso que ahora enseña, 6.106 (Software Performance Engineering), ejemplifica esto. Hace unos 15 años, hubo un cambio de uno a varios procesadores en un dispositivo que hizo que muchos programas académicos comenzaran a enseñar paralelismo. Pero, como explica Ragan-Kelley, el MIT se dio cuenta de la importancia de que los estudiantes entendieran no solo el paralelismo, sino también la optimización de la memoria y el uso de hardware especializado para lograr el mejor rendimiento posible. "Al cambiar la forma en que programamos, podemos desbloquear el potencial computacional de nuevas máquinas y hacer posible que las personas continúen desarrollando rápidamente nuevas aplicaciones y nuevas ideas que puedan explotar ese hardware cada vez más complicado y desafiante".