Jonathan Ragan Kelley.jpg

Una sola fotografía ofrece vislumbres 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 de todo, desde herramientas para efectos visuales en películas hasta el lenguaje de programación Halide, ampliamente utilizado en la industria para la edición y el procesamiento de fotografías. Como investigador del Laboratorio de IA 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 dominios específicos y aprendizaje automático que permiten gráficos 2D y 3D, efectos visuales y fotografía computacional. .

«El mayor impulso 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 la potencia computacional que realmente podemos explotar para aplicaciones reales, desde gráficos y computación visual hasta IA, necesitamos cambiar la forma en que programamos».

Encontrar un término medio

Durante las últimas dos décadas, los diseñadores de chips y los ingenieros de programación han sido testigos de una desaceleración de ley de moore y un marcado cambio de la computación de propósito general en CPU a unidades de procesamiento y computación más variadas y especializadas, como GPU y aceleradores. Esta transición conlleva 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 y se asigne a él con programas y compiladores personalizados. El hardware más nuevo con programación mejorada puede soportar mejor aplicaciones como interfaces de radio celular de gran ancho de banda, decodificación de vídeos altamente comprimidos para streaming y procesamiento de gráficos y vídeo en cámaras de teléfonos móviles con limitaciones de energía, por nombrar algunas aplicaciones.

«Nuestro trabajo consiste en gran medida en desbloquear el poder del mejor hardware que podemos construir para ofrecer el mayor rendimiento y eficiencia computacionales posible para este tipo de aplicaciones de una manera que los lenguajes de programación tradicionales no ofrecen».

Para lograrlo, Ragan-Kelley divide su trabajo en dos direcciones. Primero, sacrifica la generalidad para capturar la estructura de problemas computacionales particulares e importantes y la explota para una mejor eficiencia informática. Esto se puede ver en el lenguaje de procesamiento de imágenes Halide, que codesarrolló y que 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 cómo los compiladores asignan programas al hardware. Uno de esos proyectos con el MIT-IBM Watson AI Lab 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 existe 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 recursos. En el centro de muchos programas de alto rendimiento, como motores de videojuegos o procesamiento de cámaras de teléfonos móviles, se encuentran sistemas de última generación que en gran medida son optimizados manualmente por expertos humanos en lenguajes detallados 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 de nivel superior más seguras, más productivas” que carecen de la capacidad de realizan ajustes finos en un compilador sobre cómo se ejecuta el programa y, por lo general, ofrecen un rendimiento más bajo. Por eso, su equipo está intentando encontrar un término medio. «Estamos tratando de descubrir cómo proporcionar control para las cuestiones clave que los ingenieros de desempeño 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 controles 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 desatendidos

Ragan-Kelley y su grupo de investigación están abordando esto a través de dos líneas de trabajo: aplicar aprendizaje automático y técnicas modernas de inteligencia artificial para generar automáticamente programaciones optimizadas, una interfaz para el compilador, para lograr un mejor rendimiento del compilador. Otro utiliza la “exocompilación” en la que está trabajando con el laboratorio. Describe este método como una manera de “darle la vuelta al compilador”, con un esqueleto de compilador con controles para la orientación y personalización humana. Además, su equipo puede agregar sus programadores personalizados, lo que puede ayudar a apuntar a hardware especializado como aceleradores de aprendizaje automático de IBM Research. Las aplicaciones para este trabajo abarcan toda la gama: visión por computadora, reconocimiento de objetos, síntesis de voz, síntesis de imágenes, reconocimiento de voz, generación de texto (modelos de lenguaje grande), etc.

Un gran 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 grande (LLM), encontrando formas de cambiar ligeramente el cálculo y la arquitectura de programación del modelo para que el transformador Los modelos basados ​​en AI pueden 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 de pensar estándar de maneras significativas con beneficios potencialmente grandes para 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, cuando se trata de eficiencia informática y hardware, en lo que Ragan-Kelley sobresale y en lo que ve valor, especialmente a largo plazo. “Creo que hay áreas [of research] hay que perseguirlas, pero están bien establecidas, son obvias o tienen suficiente sabiduría convencional como para que mucha gente ya las esté siguiendo o las perseguirá”, afirma. “Tratamos de encontrar ideas que tengan una gran influencia para impactar prácticamente al mundo y, al mismo tiempo, que sean cosas que no necesariamente sucederían o que creo que el resto de la comunidad no las presta en relación con su potencial. «

El curso que ahora imparte, 6.106 (Ingeniería de rendimiento de software), es un ejemplo de ello. Hace unos 15 años, hubo un cambio de procesadores únicos a múltiples en un dispositivo que provocó que muchos programas académicos comenzaran a enseñar el paralelismo. Pero, como explica Ragan-Kelley, el MIT se dio cuenta de la importancia de que los estudiantes comprendieran no sólo 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 las 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».