Desde hace años tengo la sana costumbre de disfrutar con mis amigos en un viaje de una semana donde solemos irnos de aventura por mares, países y lugares fuera de las tierras de España. Es un viaje donde las rias y la diversión son la tónica general, pero, como somos como somos, nuestras comidas, cenas y conversaciones suelen ser de programación de algoritmos con
Q# para entornos de simulación de
Quantum Computing y la
Supremacía Cuántica, de cómo hacer transacciones de
BitCoin sin usar un
Exchanger y los problemas de los tamaños de bloques - que
se explica bien en este libro - y el coste de la compra por eso, de las arquitecturas
Serverless en plataformas de
Cloud Computing, de mil y una aventura de
Hacking y, cómo no, de
Inteligencia Artificial.
Una de las mañanas, en uno de esos viajes, el más madrugador de todos nosotros, es decir: yo, me desayunaba con el
paper de AlphaDev, donde los investigadores habían sido capaces de generar un algoritmo de ordenación con menos instrucciones. Estábamos en mitad del mar, y desde el pequeño velero donde estaba desayunando con mi ordenador estaba emocionado esperando a que se levantaran mis amigos para comentarlo, y al mismo tiempo, preparar el artículo que a la postre os publiqué: "
AlphaDev: La IA que optimiza la implementación de los algoritmos mejor que los humanos"
La idea es básicamente la misma que tenía
AlphaDev, pero aprovechándose
AlphaEvolve de los avances en los
LLMs, lo que permite utilizar modelos de
Deep Reasoning como
Gemini 2.0 Pro, combinado con
Gemini 2.0 Flash, y luego tener una arquitectura del
Agente AI que permita evaluar las soluciones, tal y como podéis ver en el siguiente esquema.
Como podéis ver en la imagen, además de dar almacenar el código con todos sus componentes a evolucionar, y el
Prompt de configuración del agente para generar la optimización, se ensamblan varios motores de
LLMs para luego pasar por un conjunto de evaluadores que comprueban la validez y el resultado de las soluciones propuestas por los diferentes
LLMs para responder con la mejor de ellas y
evitar el problema del indeterminismo y las alucinaciones. Las características de
AlphaEvolve son:
Como ejemplo de funcionamiento tenéis este ejemplo, donde se le pide optimizar el código de un algoritmo. En la siguiente imagen está la definición del código que se quiere optimizar, que se marca con EVOLVE-BLOCK.
Después, el Prompt de acción para generar el resultado del código optimizado en las métricas que se solicitan, que no siempre la optimización es el número de instrucciones, el tamaño en memoria o la velocidad de resolución.
Y el resultado mostrado por el Agente AI de AlphaEvolve es el que tenéis en pantalla, donde se índica qué partes del código son las que se recomiendan cambiar, y cuál es la optimización que se consigue a través de realizar esos cambios.
La optimización de los algoritmos y el código, es algo que en los
LLMs se lleva haciendo tiempo. Yo os publiqué el artículo de "
ChatGPT: Cómo hacer (y mejorar) mi Trabajo de Fin de Carrera de la Universidad en un par de minutos" donde usaba el truco de hacer "
challenge" constante al código generado por
ChatGPT para ir mejorando el código en rendimiento, en calidad, en seguridad. Con
AlphaEvolve se busca hacer un trabajo mucho más específico en optimizaciones de código a bajo nivel, y los resultados que presentan son muy interesantes.
En la imagen anterior tenéis los resultados de la optimización de un algoritmo para, dados tres números
(m,n,p), multiplicar matrices
m x n y
n x p. En todos los supuestos la solución propuesta por
AlphaEvolve es igual o mejor que el algoritmo original que se entrego. Y en la imagen siguiente tienes el código de entrada, el
Prompt y la propuesta para el algoritmo de multiplicación de matrices.
En el artículo recogen algún otro ejemplo completo para que puedas analizar cómo AlphaEvolve analiza y propone las mejoras de optimización según el objetivo que se le ha pedido, y los resultados que han obtenido en diferentes tipos de soluciones.
Al final, la
Inteligencia Artificial está transformando todos los sectores, la ciberseguridad como vemos artículo tras artículo, el trabajo diario de casi cualquier profesión, y por supuesto el desarrollo de software y la algorítmica. Y esto es algo que, al igual que os decía que
GitHub y los repositorios de proyectos OpenSource deberían hacer para ciberseguridad, podrían hacer también para optimización. Mucha evolución en el desarrollo de software para que sea más rápido, más eficiente, más optimizado y más seguro..
¡Saludos Malignos!