La IA de Deepmind está aprendiendo sobre el arte de la codificación


En el campo de la informática, quizás no haya tarea más fundamental que ordenar. Burbujee, amontone, fusione: elija. Los métodos para reordenar datos dentro de una computadora han sido teorizados hasta la saciedad, sirvieron como ejercicios de práctica para millones de novatos y han sido optimizados durante décadas por desarrolladores expertos. Escriba una función sort() en cualquier lenguaje de programación, y es un código en el que puede confiar. No lo toques. Ya funciona muy bien.

Pero el año pasado, un sistema de inteligencia artificial desarrollado por ingenieros de Deepmind de Google mejoró lo suficiente como para ser importante. El sistema, que Deepmind llama AlphaDev, se encargó de idear una nueva forma de clasificar secuencias cortas en números en C++, el popular lenguaje de codificación. Significaba ir bajo el capó y hacer que la IA construyera nuevos algoritmos en código ensamblador, las instrucciones que cierran la brecha entre los lenguajes de programación como C++ y el hardware de la computadora. Cuando un desarrollador de C++ le dice a la computadora que «clasifique», esos comandos se convierten en un código legible por máquina que le dice a la memoria y al procesador de una computadora exactamente qué hacer: dónde mover los datos y cómo cambiarlos. Es donde los bits se encuentran con el metal.

El experimento funcionó. Desde abril del año pasado, C++ se ha estado ejecutando un poco más rápido, gracias a un nuevo conjunto de algoritmos de clasificación inventados por IA. Pero según los ingenieros de AlphaDev, quienes describieron el trabajo hoy en Naturaleza, ese es solo el primer paso. “Queremos optimizar toda la pila informática”, dice Daniel Mankowitz, científico investigador del personal de Deepmind que dirigió el proyecto de clasificación. Mankowitz dice que AlphaDev ya ha mejorado los algoritmos no solo para la clasificación, sino también para otras tareas básicas como el hash.

“Creo que este trabajo es increíblemente emocionante”, dice Armando Solar-Lezama, experto en síntesis de programas del MIT, que no participó en la investigación. Es útil que AI presente un nuevo algoritmo de clasificación; es mucho más importante construir una IA que pueda aprender a escribir código de última generación en una variedad de tareas, dice. Eso significa que AlphaDev ha comenzado a aprender algo más fundamental sobre el arte de la codificación en sí.

Eso viene con limitaciones significativas, por supuesto. “Estos son programas muy, muy pequeños”, agrega, que suman no más de unas pocas docenas de instrucciones en código ensamblador. Pero esos pequeños programas a menudo representan grandes cuellos de botella para el rendimiento de la computadora, ya que han sido optimizados en la medida en que las personas pueden presionarlos. En general, los nuevos algoritmos de clasificación C++ de AlphaDev son un 1,7 por ciento más eficientes que los métodos anteriores al clasificar largas secuencias de números y hasta un 70 por ciento más rápidos para secuencias de cinco elementos. A escala, estas mejoras se suman, dice Mankowitz. Desde que el código escrito por IA se envió a Libc++, una importante biblioteca de código abierto para C++, estima que los algoritmos se han utilizado billones de veces al día.

Esas mejoras se deben a una técnica llamada aprendizaje por refuerzo, que es el mismo enfoque que se utiliza para ayudar a la IA de Deepmind a dominar juegos como el ajedrez y el Go. Este tipo de IA aprende haciendo. Funciona al tratar una tarea determinada, como escribir un programa de ensamblaje, como un juego, en el que la IA recibe recompensas por realizar movimientos inteligentes que aumentan la eficiencia del programa. Con el tiempo, el sistema funciona para maximizar esta recompensa, lo que da como resultado una estrategia Go ganadora o un programa de ensamblaje más rápido. Esto difiere del tipo de IA que se encuentra en modelos de lenguaje grandes como GPT-4, que se basan en grandes cantidades de datos para aprender a escribir palabras o codificar. Eso es excelente para producir escritura que refleje el tono de Internet o para producir segmentos comunes de código. Pero no es tan bueno para producir soluciones novedosas y de vanguardia para los desafíos de codificación que la IA nunca antes había visto.



Source link-46