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 dramaticamente. En 2022, hacer fine-tuning de un modelo significaba actualizar cada peso individual — requiriendo clusters masivos de GPUs y presupuestos empresariales. Hoy, los metodos eficientes en parametros te permiten hacer fine-tuning de un modelo de 70B en una sola GPU de consumo. Entender el espectro completo de tecnicas te ayuda a elegir el metodo correcto para tu presupuesto de computo, requisitos de calidad y restricciones de despliegue.

Fine-Tuning Completo

El fine-tuning completo actualiza cada parametro del modelo. Para un modelo de 7B parametros, eso significa modificar los 7 mil millones de pesos durante el entrenamiento. Este es el estandar de oro en terminos de calidad — el modelo tiene maxima libertad para adaptarse a tus datos.

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

Cuando usarlo: Cuando tienes computo abundante, un dataset grande (10,000+ ejemplos) y necesitas maxima adaptacion. Comun en entornos empresariales o cuando se crea un modelo base especializado.

Desventajas: Costoso, lento, riesgo de olvido catastrofico (el modelo pierde capacidades generales), y el resultado es un modelo completamente nuevo que debes almacenar y servir a tamano completo.

Fine-Tuning Eficiente en Parametros (PEFT)

Los metodos PEFT congelan la mayoria de los pesos del modelo y solo entrenan un pequeno numero de parametros adicionales o modificados. La idea clave es que los cambios necesarios para la adaptacion a tareas a menudo se encuentran en un subespacio de baja dimension — no necesitas mover los 7 mil millones de parametros para ensenarle al modelo un nuevo comportamiento.

LoRA (Low-Rank Adaptation)

LoRA es el metodo PEFT mas popular y el que mas usaras en la practica. En lugar de modificar una matriz de pesos W directamente, LoRA descompone la actualizacion en dos matrices mas pequenas: una proyeccion descendente A y una proyeccion 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 parametros en lugar de 16.7M — una reduccion del 99.2%. Los pesos LoRA entrenados tipicamente son de 10-50MB, comparado con los 14GB del modelo base.

Configuracion tipica: Rango 16-64, aplicado a capas de atencion (q_proj, v_proj, y a menudo k_proj, o_proj). Rangos mas altos dan mas capacidad pero aumentan la memoria y el tiempo de entrenamiento.

QLoRA (LoRA Cuantizado)

QLoRA combina LoRA con cuantizacion de 4 bits del modelo base. El modelo base se carga en precision 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.

Comparacion de memoria para un modelo de 7B:

| Metodo | 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 gestion cuidadosa del tamano de batch. Para modelos de 70B, QLoRA reduce el requisito a un solo A100 40GB.

DoRA (Weight-Decomposed Low-Rank Adaptation)

DoRA es una tecnica mas reciente (2024) que descompone la actualizacion de pesos en componentes de magnitud y direccion. Consistentemente supera a LoRA en el mismo rango con una sobrecarga adicional minima. La intuicion es que separar "cuanto" cambiar de "en que direccion" cambiar le da al optimizador mas 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,
)

Cuando usarlo: Cuando quieres mejor calidad que LoRA sin aumentar significativamente el computo. DoRA se esta convirtiendo en la recomendacion por defecto para nuevos proyectos de fine-tuning.

Otros Metodos PEFT

  • Adapters: Pequenas capas de cuello de botella insertadas entre bloques transformer. Enfoque mas antiguo, en gran parte reemplazado por LoRA.
  • Prefix tuning: Aprende tokens virtuales antepuestos a la entrada de cada capa. Util para escenarios multi-tarea pero generalmente menor calidad que LoRA.
  • Prompt tuning: Aprende embeddings de prompt suaves que se anteponen a la entrada. Metodo mas ligero pero capacidad de adaptacion limitada.
  • IA3: Aprende vectores de escalado para keys, values y capas feed-forward. Aun menos parametros que LoRA pero mas limitado.

Que Modelos Se Pueden Fine-Tunear

No todos los modelos son iguales en el ecosistema de fine-tuning. Aqui estan las familias de modelos mas comunmente usadas:

Modelos de Pesos Abiertos (Acceso Completo)

  • Llama 3 / 3.1 / 3.2 (Meta): La base mas popular para fine-tuning. Disponible en tamanos 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 (atencion de ventana deslizante) se traducen bien a variantes con fine-tuning.
  • Qwen 2 / 2.5 (Alibaba): Fuertes capacidades multilingues. Excelente opcion para tareas de fine-tuning no inglesas. Disponible hasta 72B.
  • Gemma 2 (Google): Arquitectura limpia, fuerte rendimiento para su tamano. Disponible en 2B, 9B y 27B. Buena licencia para uso comercial.
  • Phi-3 / Phi-4 (Microsoft): Pequenos pero capaces. Phi-3 Mini (3.8B) y Phi-4 (14B) rinden por encima de su peso. Buena opcion cuando necesitas un modelo desplegado pequeno.

Fine-Tuning Solo por API

  • GPT-4o / GPT-4o-mini (OpenAI): Fine-tuning a traves de la API. Control limitado — envias 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 eleccion 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 Evolucion de la Accesibilidad

Para apreciar donde estamos, considera la linea de tiempo:

  • 2020-2022: El fine-tuning requeria clusters multi-GPU. Solo grandes empresas y laboratorios de investigacion podian hacerlo significativamente.
  • 2023: LoRA y QLoRA democratizaron el fine-tuning. Un solo A100 podia manejar modelos de 70B. GPUs de consumo podian manejar modelos de 7B.
  • 2024-2025: Herramientas como Unsloth, Axolotl y LLaMA-Factory hicieron el fine-tuning accesible a traves de simples archivos de configuracion. DoRA mejoro la calidad. Flash Attention redujo aun mas 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 computo.

Matriz de Decision Practica

Usa esto para elegir tu metodo:

| Tu Situacion | 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 | | Multiples A100s, modelo 70B | Fine-tuning completo o LoRA fp16 |

Para la mayoria de los profesionales, QLoRA con rango 16-32 en un modelo de 8B es el punto de partida. Es rapido, asequible y produce excelentes resultados para la mayoria de los casos de uso.

En la proxima leccion, nos sumergimos en la parte mas critica de cualquier proyecto de fine-tuning: tus datos.