LECCIÓN 4 · BLOQUE 1

El problema central

El modelo preentrenado es increíblemente capaz — pero no necesariamente hace lo que necesitas. Esta lección explica por qué y presenta las tres estrategias para resolverlo.

Recuerda de las lecciones anteriores: aprendiste qué es HuggingFace, cómo usar pipeline() para inferencia rápida y cómo funciona el tokenizer (BPE, padding, attention mask). Hasta aquí solo usaste modelos tal como vienen. Hoy entendemos por qué eso no siempre es suficiente — y cuáles son las tres soluciones.

1. El gap: conocimiento general vs. tarea específica

Un modelo de lenguaje preentrenado — como BERT, GPT-2 o LLaMA — aprendió de enormes cantidades de texto general: Wikipedia, libros, artículos, código, foros. Eso lo hace increíblemente bueno en tareas generales: responder preguntas, resumir, traducir, completar frases.

Pero imagina que eres una empresa farmacéutica y quieres un modelo que:

Un modelo preentrenado genérico puede fallar en todas estas. No porque sea malo — sino porque fue entrenado para objetivos distintos. Esto es el gap.

EL GAP ENTRE LO QUE SABE EL MODELO Y LO QUE NECESITAS
Gap entre conocimiento general del modelo y tarea específica Un círculo grande representa el conocimiento general del modelo. Un círculo pequeño desplazado representa tu tarea específica. La intersección es pequeña. Conocimiento del modelo Wikipedia · libros código · noticias conversaciones Tu tarea informes médicos jerga interna formato específico intersección pequeña

El modelo sabe mucho, pero la mayor parte de ese conocimiento no es exactamente lo que tu tarea necesita.

2. Pre-entrenamiento — cómo se formó el modelo

Para entender las soluciones al gap, primero hay que entender cómo se entrenó el modelo. El pre-entrenamiento es el entrenamiento masivo original — el que requirió meses y millones de dólares.

Hay dos tipos principales, y producen modelos con capacidades muy distintas:

Masked Language Model (MLM)

Ejemplos: BERT, RoBERTa, DistilBERT

El modelo aprende rellenando huecos en el texto: "El [MASK] come pescado" → predice "gato".

Entrena con texto en ambas direcciones (puede leer el texto de antes y después del hueco). Excelente para entender y clasificar texto.

# Entrenamiento: predice la palabra tapada
Input:  "El [MASK] come pescado"
Target: "gato" (o cualquier palabra que encaje)

# Resultado: modelo que entiende contexto

Causal Language Model (CLM)

Ejemplos: GPT-2, GPT-3, LLaMA, Mistral

El modelo aprende predecir la siguiente palabra: "El gato" → predice "come".

Solo lee de izquierda a derecha. Excelente para generar texto nuevo. Es la arquitectura de todos los grandes modelos de chat (ChatGPT, Claude, etc.).

# Entrenamiento: predice la siguiente palabra
Input:  "El gato"
Target: "come"  (la siguiente en el texto)

# Resultado: modelo que genera texto
Para clasificar texto (spam, sentimiento, categorías): usa MLM (BERT y familia).
Para generar texto (chatbots, resumen, traducción, código): usa CLM (GPT y familia).
Esta distinción determina qué modelos eliges para fine-tuning.

3. Las tres soluciones al gap

Una vez que tienes el modelo preentrenado, hay tres formas de cerrar la brecha entre lo que sabe y lo que necesitas. Son complementarias — no exclusivas:

TRES FORMAS DE ADAPTAR UN MODELO
Fine-tuning, prompt engineering e instruction tuning como tres estrategias Tres cajas que representan las tres estrategias de adaptación: fine-tuning completo, prompt engineering e instruction tuning. Modelo base (preentrenado) 1. FINE-TUNING Reentrenar los pesos con tus datos etiquetados ✅ Más preciso ⚠️ Necesita datos y GPU ⚠️ Los pesos cambian 2. PROMPTING Dar instrucciones claras en el texto de entrada ✅ Sin entrenamiento ✅ Los pesos NO cambian ⚠️ Menos preciso 3. INSTRUCT TUNING Fine-tuning con pares "instrucción → respuesta" ✅ Modelo asistente ✅ Sigue instrucciones ⚠️ Necesita + datos

Tres estrategias distintas, distintos costes y distintos niveles de control.

Vamos a ver cada una con un ejemplo concreto del mismo problema:

Problema: tengo 5.000 reseñas de mi producto etiquetadas como positivas o negativas. Quiero que el modelo las clasifique con alta precisión.

4. Opción 1: Fine-tuning — reentrenar con tus datos

El fine-tuning toma el modelo preentrenado y lo vuelve a entrenar, pero con tus datos y para tu tarea específica. Los pesos que ya aprendieron el lenguaje se ajustan ligeramente para especializarse en clasificar reseñas.

✍️ Qué pasa dentro del fine-tuning, paso a paso
PUNTO DE PARTIDA:
  BERT-base con 110 millones de parámetros ajustados para lenguaje general.

QUÉ SE CAMBIA:
  Se añade una "cabeza" de clasificación — una capa lineal nueva
  que toma el vector [CLS] y produce 2 números (puntuaciones por clase).

  BERT existente → capas congeladas o ajustables
       ↓
  [CLS] vector (768 dimensiones)
       ↓
  Capa lineal NUEVA (768 → 2)
       ↓
  Softmax → P(positivo), P(negativo)

CÓMO SE ENTRENA:
  Para cada reseña en tu dataset:
  1. Forward pass: el texto pasa por BERT → obtiene logits
  2. Calcular el loss (cross-entropy con la etiqueta real)
  3. Backward pass: calcular gradientes
  4. Actualizar los pesos (todos o solo la cabeza nueva)

RESULTADO:
  Un modelo que clasifica tus reseñas con altísima precisión porque
  aprendió exactamente las diferencias entre "positivo" y "negativo"
  en el dominio específico de tus productos.
El detalle clave: no tienes que entrenar el modelo desde cero. Los 110 millones de parámetros de BERT ya saben el idioma — tú solo los ajustas ligeramente para que se especialicen. Típicamente el fine-tuning necesita entre 3 y 5 épocas (pasadas completas por el dataset), no las decenas de miles que requirió el pre-entrenamiento original.

5. Opción 2: Prompting — sin cambiar ningún peso

El prompting es la estrategia más simple: guías al modelo con instrucciones bien escritas en el propio texto de entrada. El modelo responde basándose en su conocimiento general y en las instrucciones que le das.

# Zero-shot: sin ejemplos — solo instrucciones
prompt = """Clasifica la siguiente reseña de producto como POSITIVO o NEGATIVO.
Responde solo con una palabra.

Reseña: "Me llegó tarde y el producto estaba roto."
Clasificación:"""

generador = pipeline("text-generation", model="gpt2")
print(generador(prompt, max_new_tokens=3))
salida real (aproximada)Clasificación: NEGATIVO
# Few-shot: con 2 ejemplos para guiar al modelo
prompt_few_shot = """Clasifica la reseña como POSITIVO o NEGATIVO.

Reseña: "Excelente calidad, lo recomiendo." → POSITIVO
Reseña: "El peor producto que he comprado." → NEGATIVO
Reseña: "Llegó antes de lo esperado y funciona perfectamente." → """
salida real (aproximada)POSITIVO
Cuándo usar prompting en lugar de fine-tuning:
  • Tienes poco o ningún dato etiquetado
  • La tarea cambia frecuentemente y no quieres reentrenar cada vez
  • Usas un modelo de API (GPT-4, Claude) donde no puedes acceder a los pesos
  • Solo necesitas una precisión "suficientemente buena", no óptima

6. Opción 3: Instruction tuning — el modelo aprende a seguir instrucciones

El instruction tuning (también llamado "supervised fine-tuning" o SFT) es una forma especial de fine-tuning donde no le muestras ejemplos de una sola tarea, sino ejemplos de muchas tareas en formato "instrucción → respuesta esperada".

Es exactamente lo que convirtió GPT-3 (un modelo que solo completaba texto) en ChatGPT (un modelo que responde preguntas, sigue instrucciones y mantiene conversaciones).

✍️ Cómo se ven los datos de instruction tuning
Formato de los datos de entrenamiento:

Ejemplo 1:
  {"instrucción": "Traduce al inglés",
   "entrada": "El cielo es azul",
   "respuesta": "The sky is blue"}

Ejemplo 2:
  {"instrucción": "Escribe un poema corto sobre el otoño",
   "entrada": "",
   "respuesta": "Hojas que caen suaves al suelo,\nde rojo y oro el bosque..."}

Ejemplo 3:
  {"instrucción": "Clasifica como POSITIVO o NEGATIVO",
   "entrada": "Me encantó el producto, llegó rápido",
   "respuesta": "POSITIVO"}

El modelo ve miles de estos ejemplos y aprende el patrón:
"cuando veo una instrucción + entrada, debo generar una respuesta apropiada"
Por qué es poderoso: después del instruction tuning, el modelo puede seguir instrucciones nuevas que nunca vio durante el entrenamiento, porque aprendió el concepto general de "seguir una instrucción" en lugar de una tarea específica. Además, el fine-tuning subsecuente que hagan los usuarios se vuelve más efectivo porque el modelo ya "sabe" cómo responder instrucciones.

7. Cómo elegir entre las tres opciones

SituaciónEstrategia recomendada
Tengo datos etiquetados y quiero máxima precisiónFine-tuning completo (lección 5)
Tengo datos pero poca GPU (laptop, Colab gratis)LoRA / QLoRA (lecciones 10–11)
No tengo datos etiquetados, solo ejemplosFew-shot prompting (esta lección)
Quiero un asistente que siga instrucciones variadasInstruction tuning (lección 5 + datasets especiales)
El modelo es demasiado grande para mi hardwareCuantización + compresión (lecciones 12–13)
Quiero un modelo pequeño igual de bueno que uno grandeDestilación (lección 14)
🤔 El orden importa. En la práctica, las empresas suelen combinar: (1) empezar con un modelo preentrenado → (2) hacer instruction tuning → (3) fine-tuning específico de la tarea → (4) comprimir con cuantización para producción. No es necesario hacer todos los pasos, pero entender cada uno te permite elegir cuántos necesitas.

🎮 Pruébalo: elige la estrategia correcta

Describe tu situación y la demo te recomendará qué estrategia usar y por qué:

9. Lo que aprendiste

Lo que aprendiste hoy: el modelo preentrenado tiene conocimiento general que no siempre coincide con lo que tú necesitas — eso es el "gap". Hay tres formas de cerrarlo: fine-tuning (reentrenar con tus datos — máxima precisión, requiere GPU), prompting (guiar con instrucciones — no cambia pesos, menos preciso) e instruction tuning (fine-tuning con pares instrucción→respuesta — produce asistentes). Los modelos CLM (GPT-style) generan texto; los MLM (BERT-style) entienden y clasifican.

En la próxima lección — la primera del Bloque 2 — hacemos fine-tuning completo desde cero: qué cambia en el modelo, cuánta memoria necesita, y el código real paso a paso.