Investigadores de Google DeepMind han creado AlphaDev, una inteligencia artificial especializada en optimizar código informático. Lograron mejorar los algoritmos de clasificación de la biblioteca libc++, que se utilizan varios miles de millones de veces al día.
también te interesará
[EN VIDÉO] Entrevista: ¿cómo nació la inteligencia artificial? La inteligencia artificial pretende imitar el funcionamiento del cerebro humano, o al menos su lógica…
Ordenar una lista de elementos es una de las funciones más fundamentales en el procesamiento de información, e incluso el más mínimo cambio en los algoritmos puede tener efectos significativos en el rendimiento del software. Investigadores de Google DeepMind han utilizado inteligencia artificial para optimizar los algoritmos de clasificación de la biblioteca libc++ integrada en el compilador LLVM, que no se han modificado en más de diez años, para hacerlos más eficientes. Utilizaron el mismo principio que para su IA especializada en juegos como AlphaGo para el juego de Go, AlphaZero para el ajedrez y AlphaStar para StarcraftStarcraft. Publicaron sus resultados en la revista Nature.
Aprendizaje por refuerzo profundo
Hay dos enfoques para enseñar una inteligencia artificial para generar código de programación. La primera es mostrarle muchos ejemplos escritos por humanos. Sin embargo, esto limita su creatividad porque la IA tiende a reproducir los enfoques ya conocidos. La otra es lanzar la IA sin ningún conocimiento, y dejar que juegue con todas las posibilidades. Es este segundo enfoque el que ha elegido GoogleGoogle DeepMind.
Los investigadores utilizaron el aprendizaje de refuerzo profundo para crear su IA, denominada AlphaDev. Existen diferentes funciones de ordenación en la biblioteca libc++, dependiendo del número de elementos a ordenar (sort2, sort3, sort4, etc.). Le presentaron el problema a la IA como un juego, y tuvo que usar ensamblador, el lenguaje de programación de nivel más bajo, para hacer la clasificación y se le otorgaron puntos según el éxito que tuvo y el tiempo que tardó en ejecutarse la función. así generado. La IA logró reducir la cantidad de instrucciones para las operaciones de clasificación de dos a ocho elementos, excepto cuatro elementos en los que el algoritmo libc++ ya era óptimo.
Algoritmos utilizados billones de veces al día
Los investigadores también intentaron el mismo método para algoritmos con un número variable de elementos. Por ejemplo, la función para cuatro elementos (VarSort4) puede ordenar dos, tres o cuatro elementos, llamando cada vez al algoritmo para obtener el número exacto. Fue aquí donde descubrieron un comportamiento sorprendente. Si la longitud es de dos o tres elementos, llama a las funciones sort2 o sort3 respectivamente. Para cuatro elementos, usa sort3 para ordenar los primeros tres elementos, luego una versión simplificada de sort4 para insertar el último dígito en el lugar correcto.
Luego, los investigadores convirtieron el código de las funciones sort3, sort4 y sort5, escrito en ensamblador, en C++. Los algoritmos de libc++ para una gran cantidad de elementos a menudo los usan, por lo que los investigadores los probaron en diferentes cantidades de elementos para clasificar. Cuando terminaron, vieron un aumento de rendimiento de alrededor del 70 % para cinco clips, así como una mejora del 1,7 % para secuencias de más de 250 000 clips. Los nuevos algoritmos impulsados por AlphaDev luego se integraron en la biblioteca libc++, donde los investigadores estiman que se les llama varios billones de veces al día.