¿Cómo funciona un LLM?
En este post voy a intentar explicar cómo es que funciona un LLM de la forma en la que yo logré entenderlo. No voy a recurrir a explicaciones técnicas ni complejas que ni yo mismo entiendo, sino que lo voy a explicar de la forma más clara posible para que cualquier desarrollador, con cualquier nivel de experiencia, pueda entenderlo.
¿Qué es un LLM?
Primero, vamos con lo básico: ¿qué es un LLM? Bueno, LLM viene de Large Language Model o Modelo Grande de Lenguaje (suena mejor en inglés), y es un tipo de inteligencia artificial que fue entrenada con cantidades absurdas de texto para poder generar texto utilizando lenguaje natural que las personas podamos entender.
Así de sencillo, sin complicaciones ni explicaciones técnicas complejas. A lo que sigue.
¿Cómo funciona un LLM?
Sin ofender a nadie que trabaje como ML Engineer ni a quien trabaje entrenando estos LLMs, un LLM es un autocompletado de texto con esteroides, sin más.
Modelos como los que utiliza ChatGPT funcionan, simplificando muchísimo, prediciendo qué token es el siguiente en el texto.
Explicar qué es un token lo voy a dejar para otro post, pero ahora mismo imaginemos que un token es una palabra (sé que no es así, pero sígueme la corriente), así que podemos pensar que el LLM funciona prediciendo qué palabra es la que sigue.
Veamos un ejemplo:
Imaginemos que le enviamos el siguiente texto a ChatGPT:
La capital de Francia es...
Entonces, el trabajo del LLM es predecir qué podría seguir después de nuestro texto. Mientras lo procesa, calcula qué tokens tienen mayor probabilidad de continuar la frase.
Imaginemos algo así:
París -> 98%
Lyon -> 0.2%
Marsella -> 0.19%
Madrid -> 0.05%
...
Estos porcentajes son completamente inventados para el ejemplo, pero la idea es esa.
A partir de esas probabilidades, el modelo selecciona el siguiente token. En este caso probablemente sería París, regresándonos algo como:
La capital de Francia es... París
Y esto sucede con cada token, una y otra vez.
El modelo genera uno, vuelve a mirar todo lo que tiene hasta ese momento, calcula cuál podría ser el siguiente, genera otro y repite el proceso hasta completar la respuesta.
Obviamente, esta es una explicación muy, muy sencilla que a mí personalmente me ayudó a entender cómo funciona, pero la realidad es mucho más compleja.
Primero, un LLM no trabaja con palabras como tal, sino con tokens (lo explicaré después), y tampoco puede trabajar directamente con el texto como nosotros lo vemos. Ese texto termina convirtiéndose en representaciones numéricas con las que el modelo puede hacer cálculos.
Y a partir de ahí se hacen cálculos absurdamente complejos solamente para determinar cuál debería ser el siguiente token.
¿Pero cómo aprende a hacer eso?
Durante el entrenamiento, al modelo se le muestran cantidades absurdas de texto y se le pide una y otra vez que prediga qué token viene después.
Por ejemplo, imaginemos que durante el entrenamiento aparece:
La capital de Francia es París
El modelo recibe:
La capital de Francia es...
y tiene que intentar predecir qué viene después.
Al principio podría predecir una opción completamente incorrecta como:
La capital de Francia es... Plátano
Entonces se compara su predicción con lo que realmente venía en el texto, en este caso París, y se calcula qué tan mala fue la predicción.
A partir de ese error se ajustan ligeramente los parámetros del modelo para intentar que la próxima predicción sea un poco mejor.
Y esto no pasa una vez. Pasa muchísimas veces. Texto tras texto, token tras token, predicción tras predicción.
Eventualmente, después de repetir este proceso a una escala gigantesca, el modelo comienza a aprender patrones como:
- gramática
- vocabulario
- estilos de escritura
- sintaxis de lenguajes de programación
- relaciones entre conceptos
- cómo funcionan las conversaciones
- estructuras que aparecen en el texto
- etc.
Y aquí es donde la cosa se empieza a poner interesante.
Porque si lo vemos desde afuera, el modelo "solamente" está intentando predecir cuál es el siguiente token.
Pero para volverse realmente bueno haciendo eso, termina aprendiendo una cantidad enorme de patrones sobre el lenguaje y sobre las cosas de las que hablamos utilizando ese lenguaje.
Y es precisamente de ahí de donde empiezan a aparecer muchas de las capacidades que hacen que un LLM parezca muchísimo más que un simple autocompletado.
Así es como funciona un LLM sin entrar en detalles técnicos complejos. Creo que esta explicación te puede ayudar (como me ayudó a mí) a entender un poco mejor por qué un LLM funciona como funciona y por qué puede dar respuestas diferentes incluso cuando le hacemos la misma pregunta.