Saltar al contenido principal

Capítulo 3: Panorama del Fine-Tuning

Métodos, herramientas y requisitos: visión general​

El panorama del fine-tuning ha evolucionado rápidamente, ofreciendo múltiples enfoques adaptados a diferentes necesidades y recursos. Este capítulo proporciona una visión general integral para ayudarle a navegar sus opciones.


Visión general de los métodos de fine-tuning​


Comparación de métodos​

MétodoParámetros entrenadosUso de memoriaCalidadMejor para
Full Fine-Tuning100%Muy altoMáximaMáxima personalización
LoRA~0.1-1%MediaAltaFine-tuning general
QLoRA~0.1-1%BajaAltaGPUs de consumo
Prefix Tuning~0.1%BajaBuenaTareas específicas
IA3~0.01%Muy bajaBuenaCambios mínimos

Full Fine-Tuning​

Qué es​

Actualizar todos los parámetros del modelo durante el entrenamiento.

Ventajas​

  • Máxima flexibilidad y personalización
  • Puede lograr los mejores resultados en tareas complejas
  • Control total sobre el comportamiento del modelo

Desventajas​

  • Requiere mucha memoria GPU (un modelo de 7B necesita ~28GB+ para entrenar)
  • Mayor riesgo de olvido catastrófico
  • Costoso en términos de cómputo

Cuándo usarlo​

  • Cuando dispone de amplios recursos de cómputo
  • Para aplicaciones críticas que requieren máxima calidad
  • Cuando los métodos PEFT no logran los resultados deseados
# Full fine-tuning example
from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
fp16=True, # Mixed precision to save memory
)

trainer = Trainer(
model=model, # All parameters trainable
args=training_args,
train_dataset=dataset,
)

LoRA (Low-Rank Adaptation)​

Qué es​

Agregar pequeñas matrices entrenables a los pesos congelados del modelo.

Cómo funciona​

Original: W (frozen)
LoRA: W + BA (where B and A are small trainable matrices)

Parámetros clave​

  • Rank (r): Dimensionalidad de las matrices de bajo rango (por ejemplo, 8, 16, 32)
  • Alpha: Factor de escala para las contribuciones de LoRA
  • Target Modules: Capas a las que se aplica LoRA (q_proj, v_proj, etc.)

Ventajas​

  • Reducción de memoria superior al 90%
  • Entrenamiento rápido
  • El adaptador puede intercambiarse o fusionarse
  • Sin pérdida de calidad para la mayoría de tareas

Desventajas​

  • Límite ligeramente inferior al full fine-tuning
  • Requiere ajuste de hiperparámetros (rank, alpha)
from peft import LoraConfig, get_peft_model

lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
task_type="CAUSAL_LM",
)

model = get_peft_model(base_model, lora_config)

QLoRA (Quantized LoRA)​

Qué es​

Combina cuantización de 4 bits con LoRA para una eficiencia extrema de memoria.

Cómo funciona​

  1. Cargar el modelo base en precisión de 4 bits
  2. Añadir adaptadores LoRA en mayor precisión
  3. Entrenar solo los parámetros de LoRA

Comparación de memoria​

Tamaño del modeloFull FTLoRAQLoRA
7B~28GB~14GB~6GB
13B~52GB~26GB~10GB
70B~280GB~140GB~48GB

Ventajas​

  • Entrene modelos de 70B en GPUs de consumo
  • Pérdida de calidad mínima comparado con LoRA
  • Muy rentable

Desventajas​

  • Entrenamiento ligeramente más lento
  • Requiere la librería bitsandbytes
  • Posibles artefactos de cuantización
from transformers import BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)

model = AutoModelForCausalLM.from_pretrained(
"model_name",
quantization_config=bnb_config,
)

Métodos de alineación​

RLHF (Reinforcement Learning from Human Feedback)​

  • Entrena un modelo de recompensa a partir de preferencias humanas
  • Utiliza RL (PPO) para optimizar el modelo de lenguaje
  • Complejo pero potente

DPO (Direct Preference Optimization)​

  • Simplifica RLHF eliminando el modelo de recompensa
  • Optimiza directamente sobre pares de preferencias
  • Mucho más sencillo de implementar

ORPO (Odds Ratio Preference Optimization)​

  • Combina SFT y alineación en un solo paso
  • Aún más simple que DPO
  • Nuevo pero con resultados prometedores
# DPO example with TRL
from trl import DPOTrainer

trainer = DPOTrainer(
model=model,
ref_model=reference_model,
train_dataset=preference_dataset,
beta=0.1, # KL penalty weight
)

Ecosistema de herramientas​

Stack de Hugging Face​

HerramientaPropósito
transformersCarga de modelos, tokenización, entrenamiento
peftFine-tuning eficiente en parámetros
trlEntrenadores SFT, DPO, RLHF
datasetsCarga y procesamiento de datasets
accelerateEntrenamiento distribuido
bitsandbytesCuantización

Frameworks alternativos​

HerramientaFortalezaCaso de uso
AxolotlConfiguración sencillaExperimentos rápidos
LLaMA-FactoryInterfaz unificadaMúltiples métodos
Unsloth2x velocidad, menos memoriaIteración rápida

Requisitos de cómputo​

Guía de memoria GPU​

Memoria necesaria ≈ (Parámetros del modelo × bytes de precisión × multiplicador)

Donde el multiplicador:
- Inferencia: 1x
- Entrenamiento LoRA: 2-3x
- Full Fine-Tuning: 4-6x

GPUs recomendadas​

PresupuestoGPUVRAMAdecuado para
GratisColab T415GBQLoRA en 7B
$RTX 3090/409024GBQLoRA en 13B
$$A100-40GB40GBLoRA en 70B
$$$A100-80GB80GBFull FT en 13B
$$$$H10080GBFull FT en 70B

Estimaciones de tiempo de entrenamiento​

ModeloMétodoGPUTiempo para 1K ejemplos
7BQLoRAA100-40GB~30 min
7BLoRAA100-40GB~20 min
7BFull FTA100-80GB~45 min
70BQLoRAA100-80GB~3 horas

Elija su camino​

Matriz de decisión​

Recomendaciones por escenario​

EscenarioMétodo recomendado
Aprendizaje/ExperimentaciónQLoRA en Colab
Producción (sensible a costos)QLoRA en GPU en la nube
Producción (crítico en calidad)LoRA o Full FT
InvestigaciónFull FT con checkpoints
Iteración rápidaUnsloth + QLoRA

El curso por delante​

En los siguientes módulos, profundizaremos en cada método:

MóduloEnfoque
Módulo 2Detalles de Full Fine-Tuning
Módulo 3Conceptos de PEFT
Módulo 4Profundización en LoRA
Módulo 5QLoRA y cuantización
Módulo 6Preparación de datos
Módulo 7Entrenamiento con Hugging Face
Módulo 8Técnicas avanzadas (DPO, ORPO)
Módulo 9Evaluación y fusión
Módulo 10Despliegue en producción

Puntos clave​

✅ Existen múltiples métodos de fine-tuning para diferentes niveles de recursos

✅ Los métodos PEFT (LoRA, QLoRA) hacen el fine-tuning accesible en hardware de consumo

✅ El ecosistema de Hugging Face proporciona todas las herramientas necesarias

✅ La elección del método depende del presupuesto de cómputo y los requisitos de calidad

✅ Comience con QLoRA para aprender y escale según sea necesario


Próximos pasos​

Ponga a prueba sus conocimientos con el Quiz del Módulo 1, luego continúe a Módulo 2: Full Fine-Tuning.


Comprobación rápida​

Antes de continuar, asegúrese de poder responder:

  1. ¿Cuál es la principal diferencia entre LoRA y QLoRA?
  2. ¿Cuánta memoria necesitaría para aplicar QLoRA a un modelo de 7B?
  3. ¿Cuál es la diferencia entre DPO y RLHF?