AI Base Knowledge

LLM (Large Language Model)

Los LLMs son entrenados para generar predicciones de texto basadas en prompts. El truco está en que el modelo entienda la relación semántica entre palabras, y qué palabras de una secuencia son las que tienen más probabilidades de influir en la siguiente; el modelo usa esto para predecir cual es la siguiente palabra más probable en la secuencia.

Un LLM no tiene “memoria” como tal. Las conversaciones como tal no existen para ellos. Cada input de una conversación contiene todo lo que se ha hablado antes.

Al igual que tenemos LLMs, también existen SLMs (small language models). La diferencia se basa en el volumen de datos con el que han sido entrenados y en el número de variables.

Tokenization

El vocabulario de los LLMs se basa en cientos de miles de tokens, los cuales se basan en graaaandes volúmenes de datos de entrenamiento.

Los tokens se componen de palabras (perro, gato) pero también de partículas (“in” de “innecesario” o de “incomprensible”), puntuación (“casa” y “casa.” son tokens diferentes) y otras secuencias de caracteres.

Ejemplo de tokenization:

  • I (1)
  • heard (2)
  • a (3)
  • dog (4)
  • bark (5)
  • at (6)
  • a (3) (already assigned before)
  • tree (8)

Cuantos más datos de entreno, más tokens y más vocabulario tendrá.

Transforming tokens with a transformer

Ahora que tenemos una serie de tokens con un id único. Tenemos que relacionarlos entre ellos.

Para esto, le asignamos a cada token un vector. Un vector es una lista de números con múltiples dimensiones.
Un ejemplo de vector puede ser [0.25, 0.88, -0.47, 0.91]

Una vez tenemos inicializado este vector con valores aleatorios, utilizamos las dimensiones del vector para hacer un encoding lingüístico y asignarles el valor semántico del token (que significa y como se relaciona con otros tokens).

Because this new vectors have semantic values embedded in them, we call them embeddings

Transformer model

Los vectores se generan mediante ML usando modelos especiales que se llaman embedding models. Estos se encargan de traducir raw data en listas de números.

El transformer model es el que se encarga de hacer el embedding, que es asignar ese valor semántico al vector inicializado.

Se compone de:
Un encoder block - crea los embeddings aplicando una técnica llamada attention. La attention layer examina cada token y determina como es influenciado por los tokens alrededor suyo. Los resultados de la attention layer se introducen a una neural network conectada para conseguir la mejor representación vectorial.

Un decoder usa los embeddings calculados por el encoder para determinar cual es el siguiente token más probable de aparecer en la secuencia, iniciada por el prompt.

Attention layer

La attention layer establece cómo el modelo decide que tokens son más relevantes en una frase para entender el contexto.

The cat chased the mouse because it was hungry

De la frase anterior it se puede referir a ambos el gato o el ratón. Basándonos en el contexto podemos inferir que se refiere al gato. Esto mismo es lo que hace la self-attention layer en los llms.

Self-attention

La capa de self-attention es un tipo de attention layer (también existe la capa de cross-atention).
Esta capa va palabra por palabra y permite a un modelo evaluar todas las otras palabras de una frase, y decidir cuáles son importantes para cada una de ellas.
Esto es una mejora respecto a modelos más viejos que examinaban cada palabra aislada del resto.

Pasos de self-attention

Entramos en detalle de como funciona la capa de self-attention:

  1. Cada palabra se convierte a embeddings
  2. Con cada palabra se crean 3 vectores
    1. Query (Q): La palabra que examinamos
    2. Key (K): Cuanto contribuyen las otras palabras al contexto de esta
    3. Value (V): Cuanta información contiene cada palabra, la cual se usará para el resultado final
  3. Attention Scores: El modelo va palabra por palabra y calcula una puntuación usando el Query vector y los Key vectors del resto de palabras. Esta puntuación representa como de importante son las otras palabras para entender a la que estamos evaluando.
  4. Softmax & Weighting: Cuando tenemos las puntuaciones, el modelo las normaliza para que todas las puntuaciones juntas sumen 1. Estas puntuaciones ahora se usan para conocer el peso de los embeddings de todas las palabras.
  5. Output: El modelo multiplica el embedding de cada palabra por su attention score y los suma. Esto da una representación final de cada palabra, que está influenciada por cuánto la afectan el resto de palabras.

Ventana de contexto (Context Window)

La ventana de contexto es el limite de memoria que tiene un LLM. Determina cuánto de la conversación actual puede “mantener en memoria” el modelo.

Si la ventana es suficiente, el modelo podrá mantener la totalidad de la conversación en memoria, pero si nos pasamos del límite, el modelo comenzará a olvidarse de las primeras partes de la conversación, y comenzará a dar respuestas más vagas.

AI Agents

Un agente es un programa de SW el cual usa IA para razonar y actuar de forma (semi)autónoma usando las herramientas proporcionadas.

Se componen de tres elementos:

  • Un LLM: es el cerebro
  • Instrucciones: Un system prompt que define el rol y el comportamiento del agente
  • Herramientas: el agente las utilizará para interactuar con el mundo. Estas pueden incluir:
    • Knowledge tools que le den acceso a información (como BBDD o search engines)
    • Action tools que permitan al agente ejecutar tasks (como enviar emails)

ejemplo: un programa (agente) que ayude a migrar código de Java a C#

  1. el user sube un archivo .java
  2. el agente analiza el código y decide que tools usar
  3. decide que necesita consultar una BBDD de patrones
  4. llama a una tool que accede a esa BBDD
  5. genera el código equivalente en C#
  6. lo entrega al usuario final y guarda el caso para futuros usos

Reference(s)

https://medium.com/data-science-collective/genai-power-plays-rag-vs-fine-tuning-vs-grounding-58bee7e285fc https://medium.com/@tahirbalarabe2/understanding-llm-context-windows-tokens-attention-and-challenges-c98e140f174d
https://generativeai.pub/vector-databases-a-beginners-first-step-into-searching-by-meaning-bcb9693dc39b
Explaining self attention in LLMs | by smrati katiyar | Medium