Cómo funciona un LLM paso a paso: desde el embedding hasta la inferencia

Inteligencia Artificial (IA)

Los modelos de lenguaje de gran escala (Large Language Models, LLMs) como GPT-4 (OpenAI, 2023), LLaMA 2 (Meta AI, 2023) o Claude (Anthropic, 2023) se han convertido en bases fundamentales de la inteligencia artificial contemporánea. Sin embargo, el funcionamiento interno de estos modelos sigue siendo un misterio para muchos. En este blog explicaremos paso a paso el funcionamiento de un LLM moderno, desde el procesamiento inicial de las entradas hasta la generación final del texto, incluyendo el uso de embeddings, atención, capas de transformador, inferencia y optimizaciones. Además, compararemos diferentes arquitecturas, presentaremos tablas de referencia y analizaremos modelos representativos.

Los modelos de lenguaje de gran escala (LLMs) son sistemas avanzados de procesamiento del lenguaje natural (NLP) que han transformado aplicaciones como la generación de texto, traducción automática y asistentes conversacionales.

1. Preprocesamiento y tokenización

El primer paso en el procesamiento de un LLM es convertir el texto de entrada en un formato comprensible para el modelo mediante tokenización. Este proceso descompone el texto en unidades más pequeñas llamadas tokens, que pueden ser palabras, subpalabras o caracteres, dependiendo del algoritmo utilizado.

Existen diversos tipos de tokenizadores:

  • Byte Pair Encoding (BPE): utilizado en GPT y GPT-2; divide palabras en subpalabras basadas en frecuencia de aparición.
  • WordPiece: adoptado en BERT; genera tokens más eficientes para múltiples idiomas.
  • SentencePiece: usado en T5 y ALBERT; trabaja directamente con bytes sin requerir separación previa.

Detalles del proceso de tokenización

  • Algoritmos de tokenización: Los LLMs modernos, como BERT o GPT, emplean métodos como Byte-Pair Encoding (BPE), WordPiece o SentencePiece. BPE comienza con un vocabulario de caracteres y fusiona iterativamente los pares más frecuentes para crear subpalabras, manejando términos técnicos o raros (por ejemplo, “algoritmo” podría dividirse en [“algo”, “ritmo”]). Esto es crucial para procesar términos específicos de IA como “backpropagation” o “neural”.
  • Vocabulario predefinido: Durante el entrenamiento, se construye un vocabulario fijo (por ejemplo, 30,000–50,000 tokens). Cada token se asigna a un identificador numérico único. Por ejemplo, la frase “El robot ensambla” podría convertirse en los IDs [23, 412, 789].
  • Preprocesamiento adicional: El texto puede limpiarse (eliminando caracteres especiales o normalizando mayúsculas/minúsculas) y segmentarse en oraciones. Tokens especiales como [CLS] (para clasificación en BERT) o [EOS] (fin de secuencia) se usan para estructurar la entrada.
  • Desafíos: La tokenización debe equilibrar la granularidad y el tamaño del vocabulario. Un vocabulario pequeño limita la capacidad de manejar términos técnicos de IA, mientras que uno grande aumenta los requisitos computacionales. Según Devlin et al. (2018), WordPiece mejora la generalización al dividir términos raros en subunidades significativas.
  • Ejemplo práctico: Para la frase “La IA optimiza procesos industriales”, BPE podría generar [“La”, “IA”, “opti”, “miza”, “pro”, “cesos”, “indus”, “triales”]. Los IDs numéricos se derivan del vocabulario entrenado.
  • Texto original: “Transformers revolucionan el lenguaje”
    BPE: [“Transform”, “ers”, “revol”, “ucionan”, “el”, “lenguaje”]
    WordPiece: [“Transform”, “##ers”, “revolution”, “##ize”, “the”, “language”]
    Luego, estos tokens se convierten en índices usando un vocabulario fijo aprendido durante el entrenamiento. Esta representación numérica permite su posterior procesamiento por el modelo.
    Los vocabularios varían en tamaño: GPT-2 usa ~50K tokens, BERT ~30K, LLaMA ~32K.

Importancia

La tokenización transforma texto crudo en representaciones numéricas, permitiendo al modelo procesar términos técnicos de IA o industria de manera uniforme.

Referencia: Devlin, J., Chang, M.-W., Lee, K., & Toutanova, K. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv preprint arXiv:1810.04805.

2. Embedding de entrada

Tras la tokenización, los identificadores de tokens se convierten en embeddings, representaciones vectoriales que capturan el significado semántico y contextual de los tokens, especialmente relevante para términos de IA como “algoritmo” o “automatización”.

Una vez tokenizado, cada índice es convertido en un vector denso de alta dimensionalidad mediante una matriz de embeddings. Este vector captura propiedades semánticas y sintácticas del token. Por ejemplo, las palabras “rey” y “reina” tendrán vectores similares con diferencias representativas de género.

El embedding se construye así:

  • matriz de embeddings
  • indice del token
  • embedding posicional

Detalles del proceso de embedding

  • Embedding de tokens: Cada token se mapea a un vector de alta dimensionalidad (por ejemplo, 768 dimensiones en BERT-base, 4096 en GPT-3). Estos vectores, aprendidos durante el entrenamiento, capturan relaciones semánticas. Por ejemplo, los embeddings de “robot” y “automatización” estarán más cerca que los de “robot” y “fábrica”.
  • Embeddings posicionales: Los Transformers no tienen una noción inherente del orden, por lo que se añaden embeddings posicionales. Vaswani et al. (2017) propusieron embeddings sinusoidales: [ PE(pos, 2i) = \sin\left(\frac{pos}{10000^{2i/d}}\right), \quad PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{2i/d}}\right) ] donde (pos) es la posición del token, (i) es el índice de la dimensión y (d) es la dimensionalidad. Modelos como RoBERTa usan embeddings posicionales aprendidos.
  • Embeddings de segmento: En tareas como clasificación de documentos técnicos, se usan embeddings de segmento para distinguir secciones (por ejemplo, descripción de un algoritmo vs. resultados experimentales).
  • Suma de embeddings: El embedding final de un token combina el embedding de token, posicional y, si aplica, de segmento, formando una matriz de dimensiones [número de tokens, dimensión del embedding].
  • Ejemplo práctico: Para “El robot ensambla”, cada token ([“El”, “robot”, “ensambla”]) se convierte en un vector de 768 dimensiones. El embedding posicional distingue la posición de “robot” (2) frente a “ensambla” (3). La matriz resultante es [3, 768].

Importancia

Los embeddings permiten que términos técnicos como “neural” o “optimización” se representen en un espacio continuo, capturando relaciones semánticas y estructurales cruciales para el procesamiento posterior.

Tipos de embeddings posicionales:

  • Sinusoidales (Vaswani et al., 2017): funciones trigonométricas para codificar posición.
  • Aprendidos (GPT): embeddings independientes para cada posición.
  • Rotary Position Embedding (RoPE): permite combinar información angular con atención.
  • ALiBi (Attention with Linear Biases): permite modelos con contexto dinámico, útil en inferencia escalable.

Dimensiones típicas:

ModeloDimensión del embedding
GPT-2768
GPT-312288
LLaMA 24096 (modelo 13B)
T51024

Visualización:

Las proyecciones de embeddings en espacios reducidos (via PCA o t-SNE) muestran cómo las palabras con significados similares forman agrupaciones en el espacio vectorial.

Referencia: Vaswani, A., Shazeer, N., Parmar, N., Uszoreit, J., Jones, L., Gomez, A. N., Kaiser, Ł., & Polosukhin, I. (2017). Attention is All You Need. Advances in Neural Information Processing Systems, 30.

3. Procesamiento en capas Transformer

El núcleo de un LLM es la arquitectura Transformer, que procesa los embeddings a través de múltiples capas para capturar relaciones contextuales entre tokens, como las dependencias entre “algoritmo” y “optimización” en un texto técnico.

Detalles de la arquitectura Transformer

  • Autoatención (Self-Attention): Cada token presta atención a todos los demás en la secuencia, capturando dependencias contextuales. Por ejemplo, en “La IA optimiza procesos industriales”, “optimiza” puede prestar más atención a “IA” y “procesos” para entender su rol.
    • La autoatención calcula vectores Query (Q), Key (K) y Value (V) para cada token mediante transformaciones lineales.
    • La atención se calcula como: [ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V ] donde (d_k) es la dimensionalidad de los vectores Key. La normalización por (\sqrt{d_k}) estabiliza los gradientes.
  • Multi-Head Attention: Ejecuta múltiples mecanismos de atención en paralelo (por ejemplo, 12 cabezas en BERT-base). Cada cabeza captura diferentes relaciones, como la conexión sintáctica entre “robot” y “ensambla” o la semántica entre “IA” y “algoritmo”.
  • Capas Feed-Forward: Cada token pasa por una red neuronal feed-forward (FFN) con dos capas lineales y una activación ReLU: [ \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 ] Esto introduce no linealidad para modelar interacciones complejas.
  • Normalización y conexiones residuales: Cada subcapa (atención y FFN) incluye una conexión residual ((x + \text{Subcapa}(x))) y normalización de capa: [ \text{LayerNorm}(x) = \frac{x – \mu}{\sigma} \cdot \gamma + \beta ] donde (\mu) y (\sigma) son la media y la desviación estándar, y (\gamma), (\beta) son parámetros aprendidos.
  • Estructura de capas: Un LLM tiene múltiples capas Transformer (12 en BERT-base, 96 en GPT-3). Cada capa refina los embeddings, produciendo representaciones contextuales.

Flujo del procesamiento

  • La matriz de embeddings pasa por la primera capa Transformer, aplicando autoatención, FFN, conexiones residuales y normalización.
  • La salida se pasa a la siguiente capa, refinando las representaciones.
  • La salida final es una matriz de embeddings contextuales que refleja las relaciones entre todos los tokens.

Ejemplo práctico

Para “El robot ensambla”, la autoatención podría asignar un peso alto a la relación entre “robot” y “ensambla”. Tras varias capas, el embedding de “ensambla” incorpora el contexto de “robot”, mejorando la comprensión de la acción.

Referencia: Vaswani et al. (2017). Attention is All You Need

4. Generación de logits

Tras el procesamiento en las capas Transformer, el modelo genera logits, puntuaciones no normalizadas para cada token en el vocabulario.

Detalles del proceso

  • La salida de la última capa Transformer es una matriz de embeddings contextuales de dimensiones [número de tokens, dimensión del embedding].
  • Una capa lineal proyecta estos embeddings al espacio del vocabulario (por ejemplo, 50,257 tokens en GPT-2): [ \text{Logits} = \text{Embedding} \cdot W_{\text{vocab}} + b_{\text{vocab}} ] donde (W_{\text{vocab}}) es una matriz de pesos y (b_{\text{vocab}}) es un sesgo.
  • En modelos generativos, los logits representan la probabilidad del siguiente token. En modelos de clasificación, corresponden a clases (por ejemplo, “eficiente” vs. “ineficiente” en análisis de procesos industriales).
  • Algunos modelos comparten pesos entre la matriz de embedding de entrada y la de salida para reducir parámetros, como se describe en Radford et al. (2018).

Ejemplo práctico

Para “La IA optimiza”, si el modelo predice el siguiente token, el embedding de “optimiza” se proyecta para producir un vector de logits. Un logit alto para “procesos” indicaría que el modelo predice la continuación de la frase.

Nota: Parte de esta explicación se basa en mi investigación personal sobre la generación de logits en Transformers, derivada de la comprensión de modelos como GPT.

Referencia: Holtzman, A., Buys, J., Du, L., Forbes, M., & Choi, Y. (2019). The Curious Case of Neural Text Degeneration. arXiv preprint arXiv:1904.09751.

5. Decodificación e inferencia

El paso final es convertir los logits en texto mediante decodificación, seleccionando tokens según las probabilidades derivadas de los logits.

Detalles de la decodificación

  • Conversión a probabilidades: Los logits se transforman en probabilidades mediante softmax: [ P(x_i) = \frac{e^{z_i}}{\sum_j e^{z_j}} ] donde (z_i) es el logit del token (i).
  • Métodos de decodificación:
    • Greedy Decoding: Selecciona el token con la probabilidad más alta. Es eficiente pero puede generar texto repetitivo, como “La IA optimiza optimiza…”.
    • Beam Search: Mantiene (k) secuencias candidatas (por ejemplo, (k=5)) y selecciona la más probable, mejorando la coherencia en textos técnicos.
    • Sampling: Selecciona tokens aleatoriamente según las probabilidades. Métodos como top-k (limita a los (k) tokens más probables) y top-p (nucleus sampling, selecciona tokens cuya probabilidad acumulada supera (p)) equilibran creatividad y precisión, como se detalla en Holtzman et al. (2019).
  • Temperatura: Un parámetro ((\tau)) ajusta la distribución: [ P(x_i) = \frac{e^{z_i / \tau}}{\sum_j e^{z_j / \tau}} ] Una (\tau < 1) favorece tokens probables, mientras que (\tau > 1) aumenta la creatividad.
  • Flujo autoregresivo: En modelos generativos, se genera un token a la vez, agregándolo a la secuencia hasta alcanzar [EOS] o un límite de longitud.

Ejemplo práctico

Para “La IA optimiza”, el modelo podría generar “procesos” (logit alto), luego “industriales”, completando “La IA optimiza procesos industriales”. Con beam search, podría explorar alternativas como “La IA optimiza algoritmos”.

Referencias:

Holtzman, A., Buys, J., Du, L., Forbes, M., & Choi, Y. (2019). The Curious Case of Neural Text Degeneration. arXiv preprint arXiv:1904.09751.

Shen, S., Dong, Z., Ye, J., Ma, L., Li, Z., & Yang, Q. (2020). Q-BERT: Hessian-Based Ultra Low Precision Quantization of BERT. Proceedings of the AAAI Conference on Artificial Intelligence, 34(05)

6. Consideraciones adicionales

  • Entrenamiento: Los LLMs se entrenan en grandes corpus (por ejemplo, Common Crawl, ArXiv para textos técnicos) con objetivos como la predicción del siguiente token (GPT) o el enmascaramiento de tokens (BERT). Esto optimiza los pesos para capturar patrones de IA e industria.
  • Optimización para inferencia: Técnicas como la cuantización (reducir precisión de pesos) y la poda (eliminar conexiones redundantes) aceleran la inferencia, crucial para aplicaciones industriales, como se detalla en Shen et al. (2020).
  • Limitaciones: Los LLMs pueden generar texto sesgado o impreciso si los datos de entrenamiento incluyen sesgos o si la decodificación no está calibrada. En contextos industriales, esto puede afectar la fiabilidad de descripciones técnicas.
  • Avances recientes: Modelos como LLaMA (Touvron et al., 2023) optimizan la eficiencia, logrando un rendimiento comparable con menos parámetros, ideal para aplicaciones de IA en industria.

Conclusión

El funcionamiento de un LLM abarca tokenización, embedding, procesamiento en capas Transformer, generación de logits y decodificación. Cada etapa transforma texto crudo en representaciones que capturan significado y contexto, permitiendo aplicaciones en IA e industria, como la generación de documentación técnica o asistentes conversacionales. Respaldado por investigaciones como Vaswani et al. (2017) y Devlin et al. (2018), este proceso refleja la complejidad de los LLMs modernos, ofreciendo una base sólida para el estudio del NLP.

Referencias:

  1. Devlin, J., et al. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  2. Vaswani, A., et al. (2017). Attention is All You Need. Advances in Neural Information Processing Systems, 30.
  3. Holtzman, A., et al. (2019). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  4. Radford, A., et al. (2018). Improving Language Understanding by Generative Pre-Training. OpenAI Technical Report.
  5. Shen, S., et al. (2020). Q-BERT: Hessian Based Ultra Low Precision Quantization of BERT. AAAI Conference on Artificial Intelligence, 34(05).
  6. Touvron, H., et al. (2023). LLaMA: Open and Efficient Foundation Language Models. arXiv:2302.13971.

コメント

タイトルとURLをコピーしました