Análisis de o3
Revisamos los resultados publicados para el modelo o3, que algunos aclaman como la llegada de la AGI
En artículos anteriores comentábamos sobre la historia de la IA y sus hypes y sobre cómo se van creando las innovaciones que dan apariencia de crecimiento exponencial. Hoy estamos sufriendo una nueva oleada de hype debido a los resultados presentados por OpenAI relativos a su nuevo modelo o3. Esta excitación viene principalmente motivada por una serie de hitos en benchmarks para LLMs:
Mejores resultados que modelos previos en tareas de programación (SWE-Bench Verified, Codeforces), preguntas complejas en biología, física y química (GPQA), así como en matemáticas (AIME).
ARC-AGI, el cual intenta medir la capacidad de un sistema de adaptarse a nuevas tareas con muy pocos ejemplos.
Sobre los benchmarks de capacidades de programación ya hablé extensamente en un artículo anterior, y mi opinión sigue siendo la misma: gran parte del rendimiento de los LLMs en estas situaciones se explica por el filtrado de la soluciones a los datos de entrenamiento. Y sospecho que algo similar ocurre con los otros benchmarks del primer grupo, aunque también creo que tanto o1 como o3 se han podido beneficiar de nuevas técnicas de entrenamiento para mejorar sus capacidades en este tipo de problemas. Pero lo cierto es que el foco del hype que estamos viviendo ahora mismo no viene tanto por estos resultados, sino por los del benchmark ARC-AGI.
ARC-AGI
ARC-AGI es un benchmark con una competición asociada, el cual fue propuesto por el investigador en redes neuronales artificiales François Chollet, y el ingeniero y emprendedor Mike Knoop. El benchmark se construyó con el objetivo de plantear tareas que fueran fáciles de resolver para los humanos, pero difíciles para los actuales sistemas de IA: esta dificultad radica en que cada tarea requiere de razonamientos diferentes a las demás, y apenas se aportan ejemplos que puedan usarse para aprender a realizarla. De esta forma se evita que los métodos basados en aprendizaje supervisado puedan resolver el benchmark a base de aprender sobre un subconjunto de las tareas, generalizando así a las demás.
Las tareas pueden representarse de manera gráfica en forma de un tablero con casillas coloreadas, como en el siguiente ejemplo:

Para evitar problemas por posibles ambigüedades en algunas tareas, el benchmark permite enviar 2 soluciones para cada tarea.
Cualquiera puede probar a revolver algunas de estas tareas a través de la propia web de ARC-AGI, donde se nos presenta un puzle diario. Como todo el mundo puede comprobar, son tareas muy similares a las que se emplean en tests de inteligencia general.
Un punto relevante para entender los resultados presentados por OpenAI es que ARG-AGI se divide en cuatro datasets:
Dataset público de entrenamiento con 400 tareas, donde son conocidas tanto las entradas como las salidas de todas las tareas.
Dataset público de test con otras 400 tareas, donde también son conocidas tanto las entradas como las salidas de todas las tareas. Estas tareas son notablemente más difíciles que las del dataset de entrenamiento.
Dataset semi-público de test, con 100 tareas desconocidas de dificultad similar al dataset público de test.
Dataset privado de test, con otras 100 tareas desconocidas también de dificultad similar al dataset público de test.
Los investigadores pueden usar el dataset público de test como validación de los algoritmos que están desarrollando. Este dataset está totalmente expuesto al público, por lo que no se emplea en los rankings oficiales de ARC-AGI.
El dataset semi-público se emplea en el leaderboard secundario ARC-AGI-Pub. Cuando algún participante propone una solución que mejora significativamente (>1%) el acierto en el dataset público de test, el equipo de ARC-AGI comprueba su rendimiento sobre el dataset de test semi-público, y si el nivel de acierto es similar al del dataset público la solución se acepta. El motivo de llamar a este dataset “semi-público” es que en esta modalidad de la competición se permite realizar llamadas a LLMs cerrados (ej. GPT), por lo que se asume que estos LLMs eventualmente habrán visto y probablemente aprendido de este dataset.
Por último, el dataset privado de test se usa en el leaderboard principal de ARC-AGI. En esta modalidad de la competición debe enviarse el código completo de la solución, la cual ejecuta contra el dataset privado de test en un entorno sin conexión a Internet. De esta forma se asegura que el dataset no se filtra, y que ningún LLM o humano puede aprender de él. Es la manera más fiable de medir la capacidad de generalización de la solución.
Poniendo en perspectiva los resultados de o3
El primer elemento clave a tener en cuenta es que los resultados que se han presentado de o3 son sobre el dataset de test semi-público, por lo que puede sospecharse de cierta posibilidad de filtrado. Ciertamente, esto afecta a todas las soluciones que se proponen a esta competición, pero ya nos debería poner en alerta: los resultados de este benchmark probablemente sobrestimen la capacidad de generalización de las soluciones.
Otro punto relevante es comparar los rendimientos de o3 con otras soluciones. Me voy a permitir rehacer la gráfica que presenta OpenAI de una forma diferente:
La mejor solución presentada en la competición hasta la fecha había obtenido 53.6%, y o3 consigue superar este cantidad sobradamente con un 75.7%; un nivel de acierto que se queda solo ligeramente por debajo del de un humano medio. Cuando se dedican más recursos de cómputo a o3, este es capaz llegar hasta 87.5%. Esto es un logro significativo, aunque no hay que perder de vista la barra final: un humano con estudios del campo STEM (Science, Technology, Engineering and Mathematics) consigue una puntuación de casi el 100% en el benchmark.
La etiqueta de “low” y “high” de o3 también es un detalle importante. o3 es un modelo de “computación en tiempo de test”, lo que significa que puede dedicar más tiempo a realizar cálculos antes de ofrecer una respuesta. Las reglas de ARG-AGI-Pub exigen que las soluciones supongan un coste inferior a los 10.000$ para resolver todas las tareas del dataset de test público y semi-público. Siendo 500 tareas en total, esto significa que en promedio cada tarea debe resolverse con un coste inferior a los 200$. Mientras que o3 “low” cumple esta restricción (<100$/tarea), o3 “high” supone un coste de más de 1000$/tarea. O sea, ¡OpenAI se habría gastado más de medio millón de dólares solo para ejecutar su modelo sobre los datasets de test! Como contraste, la mejor solución de Kaggle tiene un coste menor a 1$/tarea. Y hay humanos dispuestos a realizar estas tareas a un coste de 5$/tarea. Por tanto, a día de hoy o3 aún resulta extremadamente costoso como para su uso práctico.
Añadiendo a estas consideraciones, también hay que tener en cuenta que ya se sabía que el benchmark ARC-AGI estaba empezando a saturar: un ensemble de todas las soluciones propuestas en Kaggle hasta la fecha obtiene un 81% de acierto. Es por ello que los autores están ya trabajando en una versión 2 del benchmark, la cual seguirá siendo sencilla para los humanos, pero para la que se espera que incluso o3 “high” no supere el 30% de acierto. También resulta extraño observar que las actuales tareas en las que O3 falla no parecen extraordinariamente complejas:

Por último, cabe destacar que el propio autor de ARC-AGI ha insistido en numerosas ocasiones en que su benchmark no es un test que demuestre que una IA ha llegado a ser AGI. Es una herramienta para favorecer la investigación en nuevos paradigmas de IA, de forma similar a como lo fue el benchmark Imagenet en los inicios de la revolución del Deep Learning. Lograr nuevos hitos en este benchmark indica que estamos mejorando nuestra tecnología de IA. Pero no es el inicio de la singularidad.
¿Y qué es lo que hace o3?

No sabemos cómo funciona o3. No podemos olvidar que OpenAI hace mucho tiempo que dejó de ser “open”, para convertirse en una compañía tecnológica que nos vende un producto. Y, como es lógico, la compañía no va a revelar su fórmula secreta.
Lo que sí sabemos es que ya en el anuncio de o1 se habló mucho de computación en tiempo de test (test-time compute), y de cómo el modelo generaba “cadenas de pensamiento” (Chains of Thought): una serie de tokens que el modelo producía para ir planificando su respuesta. Mientras más tiempo se otorgara al modelo para generar una cadena de pensamiento más larga, mejores eran los resultados. También se intuía que a o1 se le había aplicado algún tipo de entrenamiento por refuerzo para acostumbrarse a generar estas cadenas de pensamiento.
Pues bien, la comunidad open-source ya se ha movido para tratar de descifrar el secreto de o1, y ahora también de o3. El proyecto o1 Replication Journey está tratando de obtener resultados similares a o1 mediante la continuación del entrenamiento de modelos open-source, de forma que puedan generar cadenas de pensamiento que simulen la generación de hipótesis y búsqueda de soluciones. Y Alibaba también ha publicado el modelo QwQ, del cual aún no tenemos detalles técnicos de su construcción, pero que sus autores presentan como con un nivel de rendimiento similar a o1.
Y si nos centramos en los resultados de ARG-AGI-Pub, podemos analizar cómo funciona la mejor solución antes de la llegada de o3. Su autor, Jeremy Berman, cuenta en detalle y de forma totalmente transparente cómo lo consiguió. Resumiendo mucho, se basa en utilizar el LLM Sonnet 3.5 junto con un algoritmo genético. Para cada tarea a resolver se realiza lo siguiente:

Pedir al LLM que genere una función Python que transforme la rejilla de entrada en una rejilla de salida, usando los ejemplos de entrada-salida disponibles como un prompt few-shot. Esto se hace 10 veces para obtener 10 posibles soluciones.
Se emplean los mismos ejemplos disponibles para ejecutar las funciones generadas por el LLM, y medir su nivel de acierto.
Seleccionar las 5 funciones con mayor acierto (selección genética).
Para cada una de esas funciones seleccionadas, preguntar de nuevo al LLM con un prompt que incluya la función y los errores cometidos en su ejecución, de forma que genere una versión corregida de la función original (mutación genética). Preguntando 5 veces al LLM por cada una de las funciones seleccionadas en el paso anterior se consiguen 25 nuevas funciones corregidas.
Seleccionar las 3 funciones con mayor acierto.
… y así se repite el algoritmo varias veces, en tandas de corrección y selección, hasta que en la última iteración se seleccionan las 2 mejores funciones, las cuales se usan para producir dos propuestas de rejilla resultado y enviarlas como solución.
Se podría pensar que este algoritmo es algo “crudo”, pero es efectivo. Y también es una demostración de cómo hacer uso del cómputo en test y los ejemplos few-shot para ir refinando las respuestas del LLM. Este nuevo paradigma es algo diferencial respecto a técnicas previas, y conecta con el mundo de los algoritmos de optimización y búsqueda de soluciones que ya se emplearon con mucho éxito en AlphaGo.
El desafío es cómo hacer un uso efectivo de estos algoritmos de búsqueda, no en problemas concretos y bien definidos donde podemos calcular fácilmente la calidad de la solución (ej. juego del Go), sino en problemas de cualquier tipo, y donde la forma de generar soluciones es a través de un sistema ambiguo y caótico como es el prompting a un LLM. Es una línea de investigación ardua, pero que probablemente nos llevará a la siguiente generación de LLMs.
Conclusiones
Lo diré sin ambages: o3 no es AGI. Ni está cerca de serlo.
Pero o3, o mejor dicho, las nuevas técnicas de uso del cómputo de test para optimizar las respuestas del LLM son una innovación sustancial, muy probablemente la siguiente mejora sigmoidal que estamos apilando a la ya larga cadena de innovaciones en LLMs. Con esto podemos esperar que próximamente aparezcan modelos open-source que hagan uso de estas funcionalidades, así como nuevos datasets de razonamiento usados para entrenar estos modelos. Todo ello contribuirá a mejorar los LLMs actuales y otorgarles nuevos casos de uso.
De modo que siento decepcionar una vez más a los aceleracionistas y entusiastas de la AGI, pero aún no es el momento. ¿Y cuándo será? Si algo nos ha enseñado la historia de la IA es que nuestros pronósticos suelen estar muy equivocados, que no tenemos ni la más remota idea de cómo replicar de forma efectiva la inteligencia humana, y que por tanto no podemos estimar cuánto nos llevará llegar hasta ahí. Ya ni hablamos de inteligencia sobrehumana.
Así las cosas, mientras continuamos apilando mejoras sigmoidales, ¿cómo sabremos si en algún momento hemos alcanzado una AGI? François Chollet, creador de ARC-AGI, propone una idea: cuando colectivamente como humanos seamos incapaces de crear tareas que sean fáciles para el humano medio pero difíciles para la IA. Aún no estamos ahí.
*Imágenes de apoyo creadas con el modelo FLUX.1 Schnell.