Descifrando los LLMs
Tags: ia, llm, desdecero
Published: 2024-01-29 23:05:30


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bs6wa8fin6qvo9nipkn4.png)

En esta entrada vamos a hablar de los LLMs, los grandes modelos de lenguaje, pero para poder comprenderlos mejor, vamos a empezar del macro universo homologando conocimientos para que la lectura fluya de mejor forma.

**¿Qué es la IA?**
Empezaremos hablando de la Inteligencia Artificial, este campo de la ciencia de la computación que ha tenido un gran auge en los últimos años, que hoy forma parte de nuestra cotidianidad, aunque no es algo nuevo.
La inteligencia artificial es la capacidad de las máquinas para imitar la inteligencia humana y realizar tareas que normalmente requieren la intervención de una persona.

**División de la IA**
Hay que ser claros con un par de definiciones y así podernos ubicar en qué área de la IA estamos trabajando:

-     AI: programas con la habilidad de aprender y razonar como humanos. Comprende técnicas y procedimientos para tratar de dotar a máquinas de inteligencia. Como lo mencionaba, es la disciplina dentro de la ciencia de la computación de donde parten el resto de las ramas que abordaremos en seguida.
-     ML: algoritmos capaces de aprender por sí mismos de las experiencias, es decir, datos. Es el subcampo de la IA que aborda algoritmos capaces de aprender por sí mismos. Genera predicciones a partir de datos de entrada.
-     DL: redes neuronales que se adaptan y aprenden a grandes cantidades de datos. Subconjunto de ML aplicado a grandes cantidades de datos usando principalmente redes neuronales.
-     GenAI: modelos capaces de generar contenido nuevo, crean contenido original en formato de imágenes, texto, música, videos y código. Subconjunto del DL.
-     LLM: son modelos de propósito general altamente efectivos para una variedad de tareas relacionadas con el lenguaje, desde la generación de texto hasta la comprensión y la propia traducción del lenguaje al estilo humano.

Aquí hay que tener claro que los LLM se pueden utilizar en la IA generativa para producir contenido basado en indicaciones de entrada en lenguaje humano, en esta intersección que vemos en el gráfico, pero eso no los limita.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nkk8htgjpnbaozkuaxzd.png)

**Lenguaje natural**

Antes de entrar de lleno a los modelos de lenguaje hay que tener un par más de definiciones claras:

-     Lenguaje natural: es el lenguaje escrito o hablado que usamos nosotros como seres humanos para comunicarnos.
-     Procesamiento del lenguaje natural (NLP): busca dotar a las computadoras de herramientas para poder comprender, interpretar y procesar el lenguaje humano, es decir, que nos podamos comunicar por medio de texto o voz con la computadora.
-     Generación de lenguaje natural (NLG): es el proceso en reversa, es decir, que la comunicación sea de la computadora a nosotros los humanos, aquí se brindan herramientas a las computadoras para poder crear texto coherente y comprensible de manera autónoma usando el lenguaje natural.

**Modelo de lenguaje**

Mencione modelo de lenguaje pero ¿qué es un modelo de lenguaje?

Es un modelo de aprendizaje automático que tiene como objetivo predecir y generar el lenguaje posible. Un ejemplo claro con el que hemos vivido de cerca en el día a día desde nuestro teléfono y en la computadora es: el autocompletado.

Estos modelos estiman la probabilidad de que se genere un token o una secuencia de tokens dentro de una secuencia más larga de tokens. Si suponemos que un token es una palabra, se puede estimar la probabilidad de diferentes oraciones completas o bloques de texto. Esto es útil para generar texto, traducir idiomas, responder preguntas, entre otras.

**Grandes modelos de lenguaje**

Ahora nos toca definir ¿qué es un gran modelo de lenguaje?

Es un modelo de lenguaje de propósito general que puede ser afinado para tareas específicas de procesamiento y generación de lenguaje natural basado en redes transformer que contienen cientos o miles de millones de parámetros y ha sido entrenado con una colección de textos como documentos, páginas web, libros, artículos y más que es extremadamente grande y diversa con altas capacidades de cómputo y semanas incluso meses de entrenamiento.

Los primeros modelos de lenguaje podían predecir la probabilidad de una sola palabra, hoy día, los grandes modelos de lenguaje pueden predecir oraciones, párrafos e incluso documentos completos.

Se pueden adaptar para resolver un problema específico con una cantidad pequeña de datos.

_¿De qué tamaño es grande?_

La definición no es definitiva, pero se denominan grandes por dos razones:

-     el gran tamaño en el conjunto de datos de entrenamiento
-     la cantidad de parámetros usados

Por ejemplo, se usa el termino large desde BERT que conto con 110 millones de parámetros (2018) y PalM2 con hasta 540, 000 millones de parámetros (2022). Por lo que suelen usarse para referirnos a la cantidad de parámetros del modelo o, a veces, a la cantidad de palabras en el conjunto de datos.

Otro término nuevo que está en la definición de LLM que acabamos de compartir son redes transformer, este término fue introducido en el 2017, son una arquitectura diseñada en torno a la idea de atención.

Los transformers son capaces de entrenarse sin supervisión, llevan su propio aprendizaje, un autoaprendizaje. Es con este proceso que aprenden a entender la gramática, los idiomas y los conocimientos básicos.

A diferencia de las redes neuronales recurrentes (RNN) que se procesaban las entradas de forma secuencial, los transformers procesan secuencias enteras en paralelo. Reduciendo de forma significativa el tiempo de entrenamiento. Funcionan con un codificador y un decodificador. El codificador como su nombre lo indica, codifica la secuencia de entrada y la pasa al decodificador que aprende a decodificar las representaciones.

Otra cuestión en estas redes es que tienen una mejor memoria a largo plazo, más grande que las redes recurrentes, lo que permite analizar secuencias de datos mucho más extensas, por lo que puede codificar las relaciones que pueden existir entre los elementos del texto a diferentes niveles, a nivel palabra, frase del texto o párrafos, lo que lo vuelve más similar a lo que nosotros realizamos como seres humanos, le damos significado a una palabra a través de su contexto, el resto de lo que esta escrito.

**La magia detrás de los LLMs**

Imaginemos a a un LLM como un bebé, un niño que esta aprendiendo a hablar. Al principio, no sabe nada, pero con mucha paciencia y entrenamiento, puede llegar a ser un maestro del lenguaje.

_1. Recopilación de datos_
El primer paso es recopilar una gran cantidad de datos de texto, como libros, artículos, código, conversaciones, etc. Estos datos son como la comida que necesita el bebé para crecer.

_2. Limpieza y preparación_

No todos los datos son útiles, por lo que se limpian para eliminar errores y contenido no deseado. Luego, se organizan de forma que el LLM pueda entenderlos, es decir, se normaliza y tokeniza el texto para que el modelo pueda procesarlo.

_3. Entrenamiento_

El LLM comienza a procesar los datos, aprendiendo a identificar patrones y relaciones entre las palabras. Se utiliza un algoritmo de aprendizaje profundo para entrenar el modelo en una arquitectura de red neuronal, como los transformer. Es como si el bebé estuviera todo el día escuchando a sus padres hablar y tratando de entender lo que dicen.

_4. Ajustando el aprendizaje_

El LLM recibe feedback sobre su progreso. Se evalúa el modelo en diferentes tareas y conjuntos de datos de prueba para medir su precisión y generalización. Si comete errores, se le corrige para que aprenda de ellos. Se ajustan los hiperparámetros del modelo y se optimiza la función para mejorar el rendimiento. Es como si el bebé aprendiera a hablar imitando a sus padres y se corrigieran sus errores.

_5. ¡Listo para usar!_

Una vez que el LLM ha aprendido lo suficiente y paso por diversos ajutes, está listo para ser utilizado. Se implementa el modelo en un entorno de producción para su uso en aplicaciones del mundo real. Puede realizar diferentes tareas, como traducir idiomas, escribir textos creativos o responder a tus preguntas.

**Personalidad de los LLMs**

Existen un par de parámetros que nos permiten controlar la creatividad y calidad de las salidas, del texto generado.

_Temperatura_

Uno de estos parámetros es la temperatura. Que no es más que un número entre 0 y 1. Mientras más cercano al 0, que el valor sea bajo, el modelo va responder de forma más común, generando respuestas seguras, conservadoras y determinísticas, es decir, se vuelve más predecible.

Por el otro lado, mientras que este número se acerque al 1, es decir sea más alto, la respuesta del modelo se vuelve más “creativa”, aumenta la diversidad, es más impredecible y esto puede llevarnos a respuestas menos coherentes.

El valor de este parámetro se ajusta por el caso de uso que estemos trabajando, la aplicación que estemos implementando nos dará base para poder definir este parámetro y el comportamiento nos puede dar indicaciones de si se debe ajustar.

_Muestreo top-k_

Para entender mejor este concepto de muestreo top-k me apoyaré de esta tabla que muestra palabras, que responden a la frase “el verbo más conjugado es:” tomando que la tabla tiene 6 palabras por lo que en la respuesta del modelo podría escoger entre cualquiera de estas palabras. Aquí es donde entra nuestro top-k pues podemos limitar ese listado de palabras. Podemos indicarle que considere solamente las k más probables. En este ejemplo podemos indicarle que tome las 4 más probables para la generación de la respuesta del modelo.

Hay que tener en cuenta que si escogemos el valor k=1 el modelo siempre va a escoger la palabra con la probabilidad más alta por lo tanto la generación de la respuesta del modelo será determinística. Y si como en este ejemplo dejamos k=6 nuestra respuesta será totalmente aleatoria.

_Muestreo top-p_

Por último veremos el tercer parámetro que podemos usar para tener, controlar aleatoriedad en nuestra respuesta generada por el modelo. que es el top-p, también conocido como muestreo de núcleos.

De igual forma tendremos un umbral entre cero y uno. Supongamos que tenemos el valor p=0.4, entonces:

1.     Tomamos la distribución original y ordenamos de forma descendente de la palabra más probable a la menos probable.
2.     Creamos un nuevo listado de palabras candidatas, que inicialmente estará vacío.
3.     Se añaden una a una las palabras sumando en cada iteración el valor de su probabilidad.
4.     Las iteraciones se detienen cuando se sobrepasa el valor de p definido.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9a6bvkmr6x6y1ohmx5o8.png)

**¿Cuáles son algunos casos de uso de los LLM?**

Los LLM pueden ser componentes de modelos que hacen más que solo generar texto. Se usan LLM para:

-     Compilar detectores de opiniones
-     Clasificadores de toxicidad
-     Subtítulos de imágenes
-     Redacción de textos publicitarios
-     Respuesta a la base de conocimientos
-     Clasificación de textos
-     Resúmenes
-     Chatbots
-     Traducción de contenido
-     Lluvia de ideas

**¿Cómo lo puedo implementar?**

Y bien, todo esto se puede hacer, pero la pregunta clave sería ¿cómo yo puedo participar de esta disciplina? ¿cómo lo puedo implementar?

Desde mi experiencia puedo brindar un par de consejos:

-  _Desarrolla tus habilidades técnicas en IA:_ hay muchos cursos online, tutoriales y recursos disponibles para aprender sobre IA y LLMs. Es necesario generar conocimiento de los principios de aprendizaje automático, los LLMs son modelos de aprendizaje, por lo que es fundamental tener una comprensión básica de los principios de este campo. Esto incluye conceptos como la clasificación, la regresión, la agrupación y etc.
- _Participa en la comunidad de IA:_ asiste a eventos, de forma presencial o virtual únete a grupos a fines y conecta con otros profesionales del campo, crece tu red.
- _Empieza con proyectos pequeños:_ es muy importante tener experiencia práctica en el desarrollo de modelos de aprendizaje. Esto se puede adquirir participando en proyectos o trabajando en empresas que desarrollan productos basados en IA. No intenten construir un gran modelo de IA desde el principio. Comiencen con proyectos pequeños y manejables.
- _Potencializa tus habilidades blandas:_ busca como amplificar tu creatividad, los LLMs se pueden utilizar para crear una amplia gama de productos y servicios. También es importante contar con un pensamiento crítico, debemos ser capaces de pensar críticamente sobre los resultados de los LLMs para evitar sesgos o errores que generen un impacto negativo a lo que estamos desarrollando.

**¡El futuro de la IA está en nuestras manos!**