CALM. Transformar tokens en vectores

Actualmente hay un interés enorme en revolucionar el corazón de los modelos de lenguaje: el famoso transformer. Hemos hablado de cambios en la atención e incluso en el tokenizador. Vamos a profundizar en una idea para reducir el número de iteraciones para procesar un texto en un trasformer:  CALM, una propuesta para agrupar múltiples tokens en un solo vector.

El Corazón de CALM: El Autoencoder

Lo primero que el equipo detrás de esta idea tuvo que demostrar es si esto era siquiera posible: ¿Podríamos tomar varios tokens de texto, convertirlos en un único vector, y luego ser capaces de revertir ese proceso?

La respuesta es sí, y lo lograron utilizando un autoencoder. El encoder toma un puñado de tokens y los condensa en un vector abstracto que los representa a todos. El decoder toma ese vector y es capaz de sacar el texto original.

El Desafío: Que el Transformer procese vectores en lugar de tokens

A primera vista, el nuevo flujo parecía simple: 

Pero la realidad es un poco más compleja.

El problema es que los Transformers estándar no responden directamente con el siguiente token. Responden con un conjunto de valores que, al aplicar la función Softmax, se convierten en probabilidades para elegir el siguiente token. Ahora, con CALM, no tenemos tokens individuales al final, sino un vector abstracto que agrupa varios de ellos. Simplemente no podemos aplicar Softmax y elegir el siguiente elemento de texto.

Además, perdimos algo vital en el proceso: la temperatura.

La temperatura es ese parámetro que nos permite controlar cuán diversa o «imaginativa» será la respuesta del modelo. Aunque parezca un detalle menor, sin la temperatura adecuada, ciertos procesos cruciales, como el razonamiento en los modelos, fallan y el sistema puede entrar en un bucle sin salida.

Necesitábamos una solución que pudiera interpretar la salida abstracta del transformer y, a la vez, devolvernos el control sobre la temperatura.

La Solución Ganadora: El Energy Transformer

El equipo exploró tres posibles soluciones: un modelo de difusión, flow matching y un Energy Transformer.

Finalmente, se eligió el Energy Transformer. ¿Por qué? Principalmente por su rendimiento. Es poco costoso de entrenar y, lo más importante, es capaz de generar la respuesta completa en una sola iteración.

Y en cuanto a la temperatura perdida, estas soluciones permiten simular ese comportamiento añadiendo ruido a la entrada. Así recuperamos el control sobre la diversidad del modelo.

Una vez que el Energy Transformer produce su respuesta, se la pasamos al decoder y ¡voilà! Hemos generado múltiples tokens con una sola pasada.

¿Cuánta Velocidad Ganamos?

Ahora, el sistema es verdaderamente multitoken. En el paper, los modelos de ejemplo lograron producir cuatro tokens por vector. Pero el equipo cree que, con modelos mucho más grandes, se podría alcanzar hasta ocho tokens por vector.

Ojo, esto no significa que sea ocho veces más rápido, ya que añadimos pasos adicionales (el encoder y el decoder) que no existen en el transformer normal. Sin embargo, la mejora es más que interesante, y parece que cuanto mayor es el modelo, mayor es la mejora. Esto tiene sentido, ya que en un modelo pequeño el encoder y el decoder representan una parte importante de los cálculos, mientras que en un modelo gigante estos pasos se vuelven insignificantes.

Es cierto que estos modelos CALM son más grandes en términos de pesos, pero esto se debe a que ahora contienen, además del transformer, todos los pesos de los componentes que lo rodean.

Conclusiones

¿Es CALM la solución definitiva a todos nuestros problemas de rendimiento? No lo sé. Pero sin duda, es una idea muy interesante. Me parece una aproximación mucho más robusta que otras que hemos visto, como la de convertir el documento en una imagen para procesar tokens visuales.

Lo que está claro es que el concepto de token tal como lo conocemos necesita una revisión profunda. Hay maneras más eficientes de representar la información que requieren menos iteraciones del modelo.

La Ironía de la Automatización: ¿Nos Hace la IA Más Dependientes de los Trabajadores Humanos?

Muchas empresas de IA nos venden la promesa de trabajos realizados de forma automática, sin ninguna intervención humana. Pero, ¿y si el uso masivo de la IA estuviera produciendo justo el efecto contrario? ¿Y si nos estuviera haciendo cada vez más dependientes de los trabajadores humanos?

Para explorar esta idea, abandonamos por un momento los papers de tecnología recientes y nos remontamos a un paper de sociología de 1983 que habla sobre la automatización de procesos industriales. Lo fascinante es cómo podemos adaptar su lógica al caso moderno de la Inteligencia Artificial, especialmente en el mundo de la creación de software, que es donde yo me muevo.

Puede ver el vídeo sobre este tema en mi canal

La Conversión de Expertos en «Vigilantes»

La idea central es que las máquinas —en nuestro caso, la IA— no pueden reemplazar completamente al ser humano. Necesitan que un humano las supervise y las corrija cuando se equivoquen. Esto significa que estamos convirtiendo a profesionales de gran experiencia y valor en vigilantes de la IA.

Pero no cualquiera sirve de «vigilante», para poder desempeñar esta labor de corrector, debes ser una persona con mucha experiencia en ese trabajo. El resultado es que coges a profesionales altamente cualificados y los pones a trabajar revisando la salida de una inteligencia artificial.

Este cambio de rol tiene consecuencias nefastas:

1. Descalificación y Estrés: El trabajador se aburre, lo cual puede provocar pérdida de motivación y estrés. Siente que su trabajo ha sido descalificado, que le han bajado de nivel, lo cual afecta su autoestima y carrera profesional.

2. Responsabilidad Disparada: Lo peor es que, aunque el trabajo parece menos cualificado, la responsabilidad se dispara. Antes, un desarrollo lo hacía un equipo de personas que actuaban intentando reducir errores. Ahora, la responsabilidad de que ese software funcione correctamente recae en una sola persona o un pequeño grupo de ellas.

El Ser Humano como Cuello de Botella

Aquí es donde encontramos la ironía más grande. La IA es capaz de generar toneladas de líneas de código por día, pero los seres humanos simplemente no somos capaces de revisar tantas líneas al día.

Los humanos nos convertimos en el cuello de botella del proceso creativo de la IA. Intentando prescindir de nosotros, lo que realmente estamos haciendo es eliminarnos de los procesos creativos y divertidos para colocarnos en un puesto que requiere mucho conocimiento, que es estresante, muy aburrido (revisar miles de líneas de código) y, además, con una responsabilidad mucho mayor que antes.

De hecho, posiblemente el salario termine siendo la parte más cara del proceso de desarrollo.

El paper lo resume de forma brillante con una frase: «Cuanto más avanzado es un sistema de control más crítica puede ser la contribución del operador humano.»

La Solución: Integración Creativa

Sé que existe la posibilidad de que en unos años la IA será capaz de realizar todo este trabajo sin necesidad de ningún humano, pero ahora mismo no parece que esto vaya a ocurrir pronto. Soy bastante crítico con la idea de que la IA generativa actual vaya a conseguir ser completamente independiente de los seres humanos.

La autora del paper, Lin Beainbridge, propone una solución viable: diseñar los procesos productivos para que el ser humano esté integrado en ellos y tenga una función creativa. No debe estar simplemente al final de la línea productiva viendo si el código que sale es correcto.

Mi opinión personal es clara y la comparto plenamente: la IA tiene que ser una herramienta para los humanos, no un sustituto de humanos. Aunque estoy seguro de que muchas empresas no comparten mi visión.