Saltar al contenido
Lección 2 de 12

El Panorama del Fine-Tuning

7 min read

Del Fine-Tuning Completo a PEFT

El panorama del fine-tuning ha evolucionado dramáticamente. En 2022, hacer fine-tuning de un modelo significaba actualizar cada peso individual — requiriendo clusters masivos de GPUs y presupuestos empresariales. Hoy, los métodos eficientes en parámetros te permiten hacer fine-tuning de un modelo de 70B en una sola GPU de consumo. Entender el espectro completo de técnicas te ayuda a elegir el método correcto para tu presupuesto de cómputo, requisitos de calidad y restricciones de despliegue.

Fine-Tuning Completo

El fine-tuning completo actualiza cada parámetro del modelo. Para un modelo de 7B parámetros, eso significa modificar los 7 mil millones de pesos durante el entrenamiento. Este es el estándar de oro en términos de calidad — el modelo tiene máxima libertad para adaptarse a tus datos.

Requisitos: Para un modelo de 7B en float16, necesitas aproximadamente 14GB solo para los pesos del modelo, más 2-3x eso para estados del optimizador y gradientes. De manera realista, necesitas 80GB+ de VRAM (un A100 80GB o múltiples GPUs). Para modelos de 70B, necesitas una configuración multi-GPU con 4-8 A100s.

Cuándo usarlo: Cuando tienes cómputo abundante, un dataset grande (10,000+ ejemplos) y necesitas máxima adaptación. Común en entornos empresariales o cuando se crea un modelo base especializado.

Desventajas: Costoso, lento, riesgo de olvido catastrófico (el modelo pierde capacidades generales), y el resultado es un modelo completamente nuevo que debes almacenar y servir a tamaño completo.

Fine-Tuning Eficiente en Parámetros (PEFT)

Los métodos PEFT congelan la mayoría de los pesos del modelo y solo entrenan un pequeño número de parámetros adicionales o modificados. La idea clave es que los cambios necesarios para la adaptación a tareas a menudo se encuentran en un subespacio de baja dimensión — no necesitas mover los 7 mil millones de parámetros para enseñarle al modelo un nuevo comportamiento.

LoRA (Low-Rank Adaptation)

LoRA es el método PEFT más popular y el que más usarás en la práctica. En lugar de modificar una matriz de pesos W directamente, LoRA descompone la actualización en dos matrices más pequeñas: una proyección descendente A y una proyección ascendente B, donde el rango r es mucho menor que las dimensiones originales.

# Conceptual: en lugar de actualizar W (d x d), LoRA aprende:
# W' = W + (B @ A) donde B es (d x r) y A es (r x d)
# Para r=16 y d=4096: 4096*4096 = 16.7M params vs 2*4096*16 = 131K params

Esto significa que para un rango de 16 en una capa de 4096 dimensiones, entrenas 131K parámetros en lugar de 16.7M — una reducción del 99.2%. Los pesos LoRA entrenados típicamente son de 10-50MB, comparado con los 14GB del modelo base.

Configuración típica: Rango 16-64, aplicado a capas de atención (q_proj, v_proj, y a menudo k_proj, o_proj). Rangos más altos dan más capacidad pero aumentan la memoria y el tiempo de entrenamiento.

QLoRA (LoRA Cuantizado)

QLoRA combina LoRA con cuantización de 4 bits del modelo base. El modelo base se carga en precisión de 4 bits (tipo de dato NF4), y los adaptadores LoRA se entrenan en float16/bfloat16 encima. Esto reduce la memoria necesaria para el modelo base en aproximadamente 4x.

Comparación de memoria para un modelo de 7B:

| Método | Memoria del Modelo Base | Params Entrenables | VRAM Total de Entrenamiento | |--------|------------------------|-------------------|-----------------------------| | Fine-tuning completo (fp16) | ~14 GB | 7B | ~80 GB | | LoRA (fp16) | ~14 GB | ~20M | ~18 GB | | QLoRA (4-bit) | ~3.5 GB | ~20M | ~6 GB |

QLoRA hace posible hacer fine-tuning de un modelo de 7B en una sola RTX 3090 (24GB) o incluso una T4 (16GB) con gestión cuidadosa del tamaño de batch. Para modelos de 70B, QLoRA reduce el requisito a un solo A100 40GB.

DoRA (Weight-Decomposed Low-Rank Adaptation)

DoRA es una técnica más reciente (2024) que descompone la actualización de pesos en componentes de magnitud y dirección. Consistentemente supera a LoRA en el mismo rango con una sobrecarga adicional mínima. La intuición es que separar "cuánto" cambiar de "en qué dirección" cambiar le da al optimizador más flexibilidad.

from peft import LoraConfig

# Configuracion DoRA — usa la misma interfaz que LoRA
config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
    use_dora=True,  # Habilitar DoRA
    lora_dropout=0.05,
)

Cuándo usarlo: Cuando quieres mejor calidad que LoRA sin aumentar significativamente el cómputo. DoRA se está convirtiendo en la recomendación por defecto para nuevos proyectos de fine-tuning.

Otros Métodos PEFT

  • Adapters: Pequeñas capas de cuello de botella insertadas entre bloques transformer. Enfoque más antiguo, en gran parte reemplazado por LoRA.
  • Prefix tuning: Aprende tokens virtuales antepuestos a la entrada de cada capa. Útil para escenarios multi-tarea pero generalmente menor calidad que LoRA.
  • Prompt tuning: Aprende embeddings de prompt suaves que se anteponen a la entrada. Método más ligero pero capacidad de adaptación limitada.
  • IA3: Aprende vectores de escalado para keys, values y capas feed-forward. Aún menos parámetros que LoRA pero más limitado.

Qué Modelos Se Pueden Fine-Tunear

No todos los modelos son iguales en el ecosistema de fine-tuning. Aquí están las familias de modelos más comúnmente usadas:

Modelos de Pesos Abiertos (Acceso Completo)

  • Llama 3 / 3.1 / 3.2 (Meta): La base más popular para fine-tuning. Disponible en tamaños de 1B, 3B, 8B y 70B. Excelente calidad base, fuerte soporte de la comunidad y licencia permisiva.
  • Mistral / Mixtral (Mistral AI): Mistral 7B y Mixtral 8x7B son eficientes y responden bien al fine-tuning. Las innovaciones de arquitectura de Mistral (atención de ventana deslizante) se traducen bien a variantes con fine-tuning.
  • Qwen 2 / 2.5 (Alibaba): Fuertes capacidades multilingües. Excelente opción para tareas de fine-tuning no inglesas. Disponible hasta 72B.
  • Gemma 2 (Google): Arquitectura limpia, fuerte rendimiento para su tamaño. Disponible en 2B, 9B y 27B. Buena licencia para uso comercial.
  • Phi-3 / Phi-4 (Microsoft): Pequeños pero capaces. Phi-3 Mini (3.8B) y Phi-4 (14B) rinden por encima de su peso. Buena opción cuando necesitas un modelo desplegado pequeño.

Fine-Tuning Solo por API

  • GPT-4o / GPT-4o-mini (OpenAI): Fine-tuning a través de la API. Control limitado — envías datos, OpenAI entrena y aloja el modelo. Sin acceso a pesos.
  • Claude (Anthropic): Fine-tuning disponible para clientes empresariales. Enfoque similar basado en API.

Eligiendo un Modelo Base

Tu elección de modelo base depende de varios factores:

Restriccion de despliegue  -> Recomendacion de modelo
-----------------------------------------------------------
Edge / movil               -> Phi-3 Mini (3.8B), Llama 3.2 (1B/3B)
GPU de consumo unica       -> Llama 3 8B, Mistral 7B, Gemma 2 9B
GPU de centro de datos     -> Llama 3 70B, Qwen 2.5 72B (con QLoRA)
Multilingue requerido      -> Qwen 2.5, Llama 3.1
Maxima calidad             -> Llama 3.1 70B, Qwen 2.5 72B

La Evolución de la Accesibilidad

Para apreciar dónde estamos, considera la línea de tiempo:

  • 2020-2022: El fine-tuning requería clusters multi-GPU. Solo grandes empresas y laboratorios de investigación podían hacerlo significativamente.
  • 2023: LoRA y QLoRA democratizaron el fine-tuning. Un solo A100 podía manejar modelos de 70B. GPUs de consumo podían manejar modelos de 7B.
  • 2024-2025: Herramientas como Unsloth, Axolotl y LLaMA-Factory hicieron el fine-tuning accesible a través de simples archivos de configuración. DoRA mejoró la calidad. Flash Attention redujo aún más la memoria.
  • 2026: Hacer fine-tuning de un modelo de 7B toma 30 minutos en un T4 gratuito de Colab. La barrera ahora es la calidad de los datos, no el cómputo.

Matriz de Decisión Práctica

Usa esto para elegir tu método:

| Tu Situación | Enfoque Recomendado | |--------------|-------------------| | 16GB VRAM, modelo 7B | QLoRA, rango 16-32 | | 24GB VRAM, modelo 7B | LoRA o QLoRA, rango 32-64 | | 40-80GB VRAM, modelo 7B | LoRA (fp16), rango 64+ | | 24GB VRAM, modelo 70B | No factible para entrenamiento | | 40GB VRAM, modelo 70B | QLoRA, rango 16 | | 80GB+ VRAM, modelo 70B | QLoRA rango 32+ o LoRA | | Múltiples A100s, modelo 70B | Fine-tuning completo o LoRA fp16 |

Para la mayoría de los profesionales, QLoRA con rango 16-32 en un modelo de 8B es el punto de partida. Es rápido, asequible y produce excelentes resultados para la mayoría de los casos de uso.

En la próxima lección, nos sumergimos en la parte más crítica de cualquier proyecto de fine-tuning: tus datos.