Skip to content

Fine-tuning de Modelos de Lenguaje ​

El fine-tuning es el proceso de re-entrenar un modelo de lenguaje pre-entrenado con datos específicos para adaptar su comportamiento, estilo o conocimiento a un dominio concreto. En lugar de entrenar un modelo desde cero (lo que requiere miles de millones de ejemplos y millones de dólares), el fine-tuning parte de un modelo existente y lo ajusta con un dataset mucho más pequeño y enfocado.

El espectro de personalización de LLMs ​

Existen varias formas de adaptar un LLM a tus necesidades, ordenadas de menor a mayor esfuerzo:

  1. Prompt engineering: Diseñar instrucciones precisas en el prompt. Sin coste de entrenamiento, pero limitado por la ventana de contexto.
  2. Few-shot learning: Incluir ejemplos en el prompt para guiar el comportamiento. Efectivo para muchos casos pero consume tokens.
  3. RAG (Retrieval-Augmented Generation): Dar al modelo acceso a documentos externos. Ideal para conocimiento específico y actualizado. (Ver RAG)
  4. Fine-tuning: Re-entrenar el modelo con datos propios. Cambia el comportamiento fundamental del modelo.
  5. Pre-entrenamiento continuo: Entrenar el modelo con grandes volúmenes de texto de dominio antes del fine-tuning. Para dominios muy especializados.

Cuándo hacer fine-tuning ​

El fine-tuning tiene sentido cuando:

  • Necesitas un estilo o tono específico: El modelo debe responder consistentemente como un asistente médico, un bot de soporte técnico o con la voz de tu marca.
  • Quieres mejorar en una tarea específica: Clasificación de texto, extracción de entidades, generación de código en un lenguaje concreto.
  • El formato de salida debe ser preciso: Generar JSON estructurado, SQL, o formatos propietarios de forma consistente.
  • Prompt engineering no es suficiente: Cuando ni los mejores prompts logran el comportamiento deseado.
  • Necesitas reducir latencia y coste: Un modelo fine-tuned más pequeño puede igualar a un modelo grande con prompts elaborados, usando menos tokens.

El fine-tuning NO es ideal para:

  • Incorporar conocimiento que cambia frecuentemente (mejor usar RAG)
  • Datos que el modelo no debe memorizar (riesgo de filtración)
  • Cuando tienes muy pocos ejemplos (menos de 50-100)

Tipos de fine-tuning ​

Supervised Fine-Tuning (SFT) ​

El tipo más común. Se entrena el modelo con pares de entrada-salida:

json
{"messages": [
  {"role": "system", "content": "Eres un asistente médico."},
  {"role": "user", "content": "¿Qué es la hipertensión?"},
  {"role": "assistant", "content": "La hipertensión arterial es una condición en la que la presión de la sangre contra las paredes de las arterias es consistentemente elevada..."}
]}

El modelo aprende a generar las respuestas del asistente dado el contexto. Cuanto más diversos y de calidad sean los ejemplos, mejor será el resultado.

RLHF (Reinforcement Learning from Human Feedback) ​

Después del SFT, evaluadores humanos califican múltiples respuestas del modelo. Se entrena un modelo de recompensa con estas preferencias, y luego se usa aprendizaje por refuerzo (PPO) para optimizar el modelo. Es la técnica que usan OpenAI, Anthropic y Google para alinear sus modelos con las preferencias humanas.

DPO (Direct Preference Optimization) ​

Alternativa simplificada a RLHF que no necesita un modelo de recompensa separado. Entrena directamente con pares de respuestas preferida/rechazada:

json
{
  "prompt": "Explica la fotosíntesis",
  "chosen": "La fotosíntesis es el proceso por el cual las plantas...",
  "rejected": "Fotosíntesis: proceso bioquímico autótrofo oxigénico..."
}

Más estable y fácil de implementar que RLHF, con resultados comparables.

Instruction Tuning ​

Variante de SFT enfocada en enseñar al modelo a seguir instrucciones. Se entrena con miles de ejemplos de instrucciones diversas y sus respuestas correctas. Es lo que convierte un modelo base (que solo predice la siguiente palabra) en un asistente útil.

Técnicas de fine-tuning eficiente (PEFT) ​

Entrenar todos los parámetros de un modelo grande (full fine-tuning) es extremadamente costoso. Las técnicas PEFT (Parameter-Efficient Fine-Tuning) entrenan solo una pequeña fracción de los parámetros:

LoRA (Low-Rank Adaptation) ​

La técnica más popular. En lugar de modificar los pesos originales del modelo, LoRA añade matrices de bajo rango a las capas del transformer. Solo se entrenan estas matrices nuevas (típicamente 0.1-1% del total de parámetros).

Ventajas:

  • Reduce la memoria necesaria en 10-100x
  • El entrenamiento es mucho más rápido
  • Se pueden guardar y intercambiar adaptadores LoRA sobre el mismo modelo base
  • Resultados muy cercanos al full fine-tuning

Ejemplo de configuración LoRA:

python
from peft import LoraConfig

config = LoraConfig(
    r=16,              # Rango de las matrices (mayor = más capacidad)
    lora_alpha=32,     # Factor de escalado
    target_modules=["q_proj", "v_proj"],  # Capas a adaptar
    lora_dropout=0.05,
    task_type="CAUSAL_LM"
)

QLoRA (Quantized LoRA) ​

Combina LoRA con cuantización: el modelo base se carga en 4-bit (reduciendo la memoria ~4x), y los adaptadores LoRA se entrenan en precisión completa. Permite fine-tunear modelos de 70B parámetros en una sola GPU de consumo.

Requisitos típicos:

  • Modelo 7B con QLoRA: ~6 GB VRAM
  • Modelo 13B con QLoRA: ~10 GB VRAM
  • Modelo 70B con QLoRA: ~40 GB VRAM

Otras técnicas PEFT ​

  • Prefix Tuning: Añade "tokens virtuales" entrenables al inicio del prompt interno del modelo.
  • Adapters: Inserta pequeños módulos entrenables entre las capas existentes del transformer.
  • IA3: Escala las activaciones internas con vectores entrenables. Aún menos parámetros que LoRA.

Dataset: la parte más importante ​

La calidad del dataset determina el éxito del fine-tuning más que cualquier hiperparámetro.

Principios clave ​

  • Calidad sobre cantidad: 500 ejemplos excelentes superan a 10.000 mediocres. Cada ejemplo debe representar el comportamiento exacto que quieres.
  • Diversidad: Cubrir todos los casos de uso, edge cases y tipos de consulta que el modelo encontrará en producción.
  • Consistencia: Todas las respuestas deben seguir el mismo formato, tono y nivel de detalle.
  • Formato de conversación: Usar el formato de mensajes (system/user/assistant) que espera el modelo.

Tamaño del dataset ​

ObjetivoEjemplos recomendados
Ajustar formato/estilo50-200
Tarea específica (clasificación, extracción)200-1.000
Dominio especializado1.000-10.000
Comportamiento general robusto10.000+

Técnicas de creación de datasets ​

  • Curación manual: El gold standard. Expertos del dominio crean y revisan cada ejemplo.
  • Destilación de modelos: Usar un modelo grande (GPT-4, Claude) para generar ejemplos de entrenamiento para un modelo más pequeño. Verificar que las licencias lo permitan.
  • Datos sintéticos aumentados: Generar variaciones de ejemplos existentes (paráfrasis, diferentes niveles de dificultad).
  • Evolución de instrucciones (Evol-Instruct): Técnica de WizardLM que aumenta progresivamente la complejidad de las instrucciones.

Plataformas y herramientas ​

APIs de fine-tuning ​

  • OpenAI Fine-tuning API: Fine-tuning de GPT-4o-mini y GPT-4o. Interfaz simple, se suben datos y se lanza el entrenamiento.
  • Anthropic Fine-tuning: Disponible para Claude, con enfoque en seguridad y evaluación.
  • Google Vertex AI: Fine-tuning de modelos Gemini con integración en Google Cloud.
  • Together AI: Plataforma para fine-tuning de modelos open source con API simple.
  • Fireworks AI: Fine-tuning y serving optimizado de modelos abiertos.

Herramientas open source ​

  • Hugging Face Transformers + PEFT: El ecosistema estándar para fine-tuning de modelos abiertos. Soporte completo para LoRA, QLoRA y todas las técnicas PEFT.
  • Unsloth: Librería que acelera el fine-tuning de Llama, Mistral y otros modelos 2-5x con menor consumo de memoria.
  • Axolotl: Herramienta de configuración YAML para fine-tuning, soporta múltiples técnicas y formatos de datos.
  • LLaMA-Factory: Interfaz web para fine-tuning de más de 100 modelos con soporte para LoRA, QLoRA, DPO y RLHF.
  • TRL (Hugging Face): Librería para RLHF, DPO y SFT con integración directa en el ecosistema Transformers.

Hardware necesario ​

MétodoModelo 7BModelo 13BModelo 70B
Full fine-tuning~60 GB VRAM~120 GB VRAM~600+ GB VRAM
LoRA~16 GB VRAM~32 GB VRAM~160 GB VRAM
QLoRA~6 GB VRAM~10 GB VRAM~40 GB VRAM

Alternativas cloud: RunPod, Lambda Labs, Vast.ai ofrecen GPUs A100/H100 por horas a precios accesibles para entrenamientos puntuales.

Proceso de fine-tuning paso a paso ​

  1. Definir el objetivo: Qué comportamiento exacto quieres del modelo.
  2. Preparar el dataset: Crear, limpiar y formatear los ejemplos de entrenamiento.
  3. Dividir los datos: Train (80-90%) y validación (10-20%) para detectar overfitting.
  4. Elegir modelo base: Seleccionar el modelo pre-entrenado más adecuado para tu caso.
  5. Configurar hiperparámetros: Learning rate (1e-5 a 5e-5 para full, 1e-4 a 3e-4 para LoRA), epochs (1-5), batch size.
  6. Entrenar y monitorizar: Seguir la loss de entrenamiento y validación. Si la loss de validación sube mientras la de train baja, hay overfitting.
  7. Evaluar: Probar con ejemplos no vistos durante el entrenamiento. Comparar con el modelo base.
  8. Iterar: Ajustar dataset, hiperparámetros o técnica según los resultados.

Fine-tuning vs. RAG: cuándo usar cada uno ​

EscenarioMejor opción
Datos que cambian frecuentementeRAG
Cambiar el estilo/tono del modeloFine-tuning
Acceso a documentos internosRAG
Tarea muy específica (clasificación)Fine-tuning
Necesidad de citar fuentesRAG
Reducir coste por inferenciaFine-tuning (modelo más pequeño)
Combinar ambosRAG + modelo fine-tuned

En la práctica, los sistemas más robustos combinan ambas técnicas: un modelo fine-tuned para el estilo y comportamiento base, con RAG para acceso a conocimiento actualizado y específico.

Desafíos ​

  • Catastrophic forgetting: El modelo puede "olvidar" capacidades generales al especializarse demasiado. Mitigación: usar una porción de datos generales en el dataset de fine-tuning.
  • Overfitting: Con datasets pequeños, el modelo puede memorizar los ejemplos en lugar de generalizar. Monitorizar la loss de validación es esencial.
  • Calidad del dataset: Basura entra, basura sale. Un dataset con errores, inconsistencias o sesgos producirá un modelo con esos mismos problemas.
  • Evaluación: Medir la mejora real es complejo. Requiere benchmarks específicos del dominio y evaluación humana.
  • Coste y tiempo: Aunque QLoRA ha democratizado el acceso, el ciclo completo (datos + entrenamiento + evaluación + iteración) sigue requiriendo inversión significativa.
  • Seguridad: Un modelo fine-tuned puede filtrar datos sensibles del dataset de entrenamiento si no se toman precauciones.

Modelos populares para fine-tuning ​

  • Llama 3 / 3.1 (Meta): La familia más popular para fine-tuning open source. Versiones de 8B, 70B y 405B.
  • Mistral / Mixtral: Modelos eficientes con excelente relación rendimiento/tamaño.
  • Qwen 2.5 (Alibaba): Fuerte en multilingüe y razonamiento.
  • Gemma 2 (Google): Modelos compactos (2B, 9B, 27B) optimizados para fine-tuning.
  • Phi-3/4 (Microsoft): Modelos pequeños pero capaces, ideales para despliegue en edge.
  • DeepSeek-V3/R1: Modelos open source de alto rendimiento con arquitectura MoE.

El fine-tuning sigue siendo una herramienta fundamental para adaptar modelos de lenguaje a casos de uso específicos. Con la llegada de técnicas como QLoRA y plataformas de fine-tuning como servicio, esta capacidad se ha democratizado enormemente, permitiendo a equipos pequeños crear modelos especializados de alto rendimiento.