La revolución de la IA parece estar ahí, pero por ahora estos sistemas no han servido, por ejemplo, para descubrir algún medicamento prodigioso o algún material con propiedades especiales. Las aplicaciones prácticas reales parecían acotadas al ámbito creativo, pero en DeepMind está demostrando una y otra vez que estos sistemas pueden ir más allá.
Heredero de AlphaZero. Los responsables de DeepMind ya habían creado AlphaZero para aprender a jugar al ajedrez desde cero, pero ahora han creado AlphaDev, una versión derivada de este sistema que tenía un objetivo distinto.
Ordenar listas. Precisamente el objetivo de AlphaDev era el de tratar de descubrir la mejor forma de ordenar listas de elementos. Como explican en el artículo técnico en Nature, este sistema de IA logró descubrir una implementación de la función sort que es un 70% más rápida que la existente en la liberría LLVM estándar en C++. Eso es algo crucial para muchos ámbitos pero que tuvo impacto inmediato en uno en especial.
Programadores beneficiados. Aunque la noticia de ese descubrimiento se publica ahora en la prestigiosa Nature la técnica para ordenar elementos en una lista llevan meses disponibles. En enero de 2022 DeepMind envió su solución a la organización que gestiona el lenguaje C++, uno de los más populares del mundo, y tras dos meses de análisis riguroso esa implementación de la función se incluyó en el lenguaje para reemplazar a la anterior: era el primer cambio que se hacía en ese apartado en C++ en más de una década.
También mejora el cifrado. DeepMind también añadió nuevos descubrimientos a Abseil, un conjunto de algoritmos de C++ que se usan en criptografía y que permiten trabajar con hashes, los IDs unívocos de cualquier tipo de datos. En DeepMind creen que sus algoritmos se usan "billones de veces al día" y aceleran su procesamiento en un 30%, algo que desde luego representa una mejora notable en este apartado.
El lenguaje ensamblador es la base. Para lograr su propósito en DeepMind trabajaron con el pilar del conocido lenguaje ensamblador, el lenguaje de programación de bajo nivel que permite que los algoritmos se desgranen en pequeños pasos que luego son útiles para buscar "atajos" y nuevas soluciones a problemas como las que ha encontrado DeepMind. Como sucedió con AlphaZero y el ajedrez, AlphaDev encontró la solución "jugando millones de partidas" o, en su caso, probando millones de combinaciones de instrucciones en ensamblador para crear incluso una nueva instrucción para su algoritmo.
Menos instrucciones, mejor. Daniel Mankowitz, de DeepMind, explicaba en MIT Technology Review cómo trabajaron con algoritmos para ordenar listas cortas de tres o cinco elementos, muy utilizadas en todo tipo de desarrollos. Su equipo explicaba que la mejor versión humana del algoritmo para listas de tres elementos era de 18 instrucciones en ensamblador. AlphaDev consiguió crear un algoritmo con 17 instrucciones. Para ordenar listas de cinco elementos se precisan 46 instrucciones en el mejor algoritmo humano, y AlphaDev las redujo a 42. No parece tanto, pero la ejecución del algoritmo en un chip Intel Skylake pasaba de ordenar una lista de cinco elementos de 6,91 nanosegundos a 2,01 nanosegundos, un 70% más rápido.
Limitaciones. Aún así, AlphaDev tiene sus límites. El algoritmo más largo que puede escribir es de 130 instrucciones porque cuando trata de combinar más, el número de combinaciones posible es aún mayor que el número de posibles jugadas en ajedrez (10^120) o de átomos en el universo (unos 10^80). Aún así, es posible que veamos nuevos avances en este sentido a medida que en DeepMind trabajen con otros algoritmos o, como apuntaban sus creadores, directamente con lenguajes como C++. Puede que los atajos no sean tan llamativos, pero al ser de más alto nivel podrán aplicarse esas mejoras a otros escenarios.
Imagen | Xataka con Midjourney
En Xataka | AlphaZero tiene la solución para que el ajedrez sea más divertido: prohibidos los enroques
Ver 11 comentarios