Saltar al contenido principal

Capítulo 1: ¿Qué son los modelos de lenguaje grandes?

Introducción​

Los modelos de lenguaje grandes (LLM) representan uno de los avances más significativos en la inteligencia artificial. Estas enormes redes neuronales han demostrado habilidades notables para comprender y generar lenguaje humano, mostrando a menudo comportamientos que no fueron programados explícitamente.

Definición de modelos de lenguaje grandes​

El factor de escala​

Un modelo de lenguaje grande es una red neuronal entrenada con enormes cantidades de datos de texto, caracterizada por:

  1. Cantidad de parámetros: De miles de millones a billones de parámetros entrenables
  2. Datos de entrenamiento: Terabytes de texto de fuentes diversas
  3. Requerimientos de cómputo: Miles de horas-GPU para el entrenamiento
# Comparación de tamaños de modelos (conteos aproximados de parámetros)
model_sizes = {
"BERT-base": "110M",
"GPT-2": "1.5B",
"GPT-3": "175B",
"GPT-4": "~1.8T (estimated)",
"Llama-2-70B": "70B",
"Claude-3": "Unknown (estimated >100B)"
}

¿Qué los hace “grandes”?​

El término "grande" se refiere a múltiples dimensiones:

DimensiónModelos pequeñosModelos de lenguaje grandes
ParámetrosMillonesMiles de millones a billones
Datos de entrenamientoGBTB a PB
Ventana de contexto512 tokens4K-128K+ tokens
Cómputo de entrenamientoDías-GPUAños-GPU

Capacidades principales​

1. Generación de texto​

Los LLM sobresalen en generar texto coherente y apropiado al contexto:

# Ejemplo: Completado de texto
prompt = "The transformer architecture revolutionized NLP because"
# LLM completion: "it enabled parallel processing of sequences
# and captured long-range dependencies more effectively than
# recurrent approaches."

2. Aprendizaje en contexto​

Una de las capacidades más notables de los LLM es aprender a partir de ejemplos proporcionados en el prompt:

# Ejemplo de few-shot learning
prompt = """
Translate English to French:
"Hello" -> "Bonjour"
"Thank you" -> "Merci"
"Good morning" -> """
# LLM output: "Bon matin" or "Bonjour"

3. Razonamiento y resolución de problemas​

Los LLM modernos demuestran capacidades básicas de razonamiento:

# Razonamiento chain-of-thought
prompt = """
If a train travels at 60 mph for 2.5 hours,
how far does it travel?

Let me think step by step:
1. Distance = Speed × Time
2. Speed = 60 mph
3. Time = 2.5 hours
4. Distance = 60 × 2.5 = 150 miles

Answer: 150 miles
"""

Capacidades emergentes​

Las capacidades emergentes son habilidades que aparecen solo cuando los modelos alcanzan cierta escala, ausentes en modelos más pequeños.

Ejemplos de emergencia​

  1. Razonamiento de múltiples pasos: Descomponer problemas complejos en pasos
  2. Generación de código: Escribir programas funcionales a partir de descripciones
  3. Traducción: Traducir entre idiomas sin entrenamiento explícito
  4. Seguimiento de instrucciones: Comprender y ejecutar instrucciones complejas

La hipótesis de escalado​

La investigación ha mostrado relaciones predecibles entre:

L(N)=(NcN)αNL(N) = \left(\frac{N_c}{N}\right)^{\alpha_N}

Donde:

  • LL = Pérdida (menor es mejor)
  • NN = Número de parámetros
  • Nc,αNN_c, \alpha_N = Constantes determinadas empíricamente

Esto sugiere que simplemente escalar los modelos conduce a mejoras predecibles en la capacidad.

LLM vs. modelos de lenguaje tradicionales​

Modelos de lenguaje estadísticos​

Los modelos tradicionales estimaban probabilidades usando estadísticas n-gram:

P(wn∣w1,...,wn−1)≈P(wn∣wn−k,...,wn−1)P(w_n | w_1, ..., w_{n-1}) \approx P(w_n | w_{n-k}, ..., w_{n-1})

Limitaciones:

  • Ventana de contexto fija
  • Problemas de datos dispersos
  • Sin comprensión semántica

Modelos de lenguaje neuronales (pre-LLM)​

Los primeros enfoques neuronales usaban RNN y LSTM:

# Modelo de lenguaje basado en RNN (simplificado)
class RNNLanguageModel:
def __init__(self, vocab_size, hidden_size):
self.embedding = Embedding(vocab_size, hidden_size)
self.rnn = RNN(hidden_size, hidden_size)
self.output = Linear(hidden_size, vocab_size)

def forward(self, x, hidden):
embedded = self.embedding(x)
output, hidden = self.rnn(embedded, hidden)
return self.output(output), hidden

Limitaciones:

  • Procesamiento secuencial (entrenamiento lento)
  • Gradientes que desaparecen
  • Dependencias limitadas a largo plazo

Modelos de lenguaje grandes​

Los LLM superan estas limitaciones mediante:

  1. Procesamiento en paralelo: Los transformers procesan todos los tokens simultáneamente
  2. Mecanismo de atención: Conexiones directas entre cualquier posición
  3. Escala: Capacidad masiva del modelo permite aprender patrones complejos

Los componentes fundamentales de los LLM​

1. Tokenización​

Conversión de texto a representaciones numéricas:

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")
text = "Large Language Models are fascinating!"
tokens = tokenizer.encode(text)
# [16902, 15417, 32329, 389, 21120, 0]

2. Embeddings​

Representaciones vectoriales densas de los tokens:

# Cada token se asigna a un vector de alta dimensión
embedding_dim = 768 # Común en modelos base
# "The" -> [0.23, -0.45, 0.12, ..., 0.89] # 768 valores

3. Capas de transformer​

Las unidades centrales de procesamiento:

Input → Embedding → [Transformer Block × N] → Output
↓
Attention + FFN

4. Proyección de salida​

Conversión de representaciones internas a probabilidades sobre el vocabulario:

P(wi∣context)=softmax(Wo⋅hi+bo)P(w_i | context) = \text{softmax}(W_o \cdot h_i + b_o)

Ejemplo práctico: ¿Cómo generan texto los LLM?​

def generate_text(model, tokenizer, prompt, max_tokens=50):
"""
Simple autoregressive text generation
"""
input_ids = tokenizer.encode(prompt, return_tensors="pt")

for _ in range(max_tokens):
# Get model predictions
outputs = model(input_ids)
next_token_logits = outputs.logits[:, -1, :]

# Sample next token
next_token = torch.argmax(next_token_logits, dim=-1)

# Append to sequence
input_ids = torch.cat([input_ids, next_token.unsqueeze(0)], dim=-1)

# Stop if EOS token
if next_token == tokenizer.eos_token_id:
break

return tokenizer.decode(input_ids[0])

Puntos clave​

Key Points
  1. Los LLM se definen por la escala: miles de millones de parámetros, terabytes de datos de entrenamiento
  2. Las capacidades emergentes aparecen solo a escala suficiente
  3. La arquitectura Transformer permite entrenamiento eficiente y dependencias a largo plazo
  4. Generación autoregresiva: los LLM predicen un token a la vez
  5. Aprendizaje en contexto: los LLM pueden aprender de ejemplos en el prompt

Mirando hacia adelante​

En el próximo capítulo, rastrearemos la evolución histórica de los modelos de lenguaje, desde las primeras redes neuronales recurrentes hasta la arquitectura Transformer revolucionaria que hizo posibles los LLM modernos.