Saltar al contenido principal

Capítulo 1: ¿Qué es el Fine-Tuning?

Personalización de modelos preentrenados para sus necesidades​

El fine-tuning es el proceso de tomar un modelo de lenguaje preentrenado y continuar su entrenamiento con un conjunto de datos específico para adaptarlo a tareas o dominios particulares.


La base del aprendizaje por transferencia​

¿Qué sucede durante el preentrenamiento?​

Antes de que un modelo pueda ser ajustado mediante fine-tuning, pasa por el preentrenamiento:

  1. Recolección de datos: Billones de tokens de libros, sitios web, código, etc.
  2. Predicción del siguiente token: El modelo aprende a predecir lo que sigue
  3. Adquisición de conocimiento: El modelo desarrolla comprensión del lenguaje, hechos, razonamiento
  4. Capacidades generales: Lectura, escritura, resumen, programación y más
Example

Modelos como Llama-3.1 se preentrenan con más de 15 billones de tokens, lo que les otorga un conocimiento y capacidades amplias antes de cualquier personalización.


Qué cambia el Fine-Tuning​

Cuando realiza fine-tuning a un modelo, está modificando sus pesos internos para:

1. Adaptarse a tareas específicas​

  • Seguir formatos de instrucciones particulares
  • Generar estructuras de salida específicas (JSON, markdown, etc.)
  • Enfocarse en ciertos tipos de problemas

2. Aprender conocimiento de dominio​

  • Terminología y protocolos médicos
  • Razonamiento jurídico y citas legales
  • Procesos y lenguaje específicos de la empresa

3. Ajustar comportamiento y estilo​

  • Tono de voz (formal, casual, técnico)
  • Preferencias de longitud de respuesta
  • Rasgos de personalidad y carácter

Preentrenamiento vs Fine-Tuning​

AspectoPreentrenamientoFine-Tuning
Tamaño de los datosBillones de tokensMiles a millones
CómputoMiles de GPUs, meses1-8 GPUs, horas a días
ObjetivoComprensión general del lenguajeAdaptación a tareas específicas
Quién lo realizaGrandes laboratorios de IACualquier persona con acceso a GPU
CostoMillones de dólaresCientos a miles

El proceso de Fine-Tuning​

Paso 1: Elegir un modelo base​

Seleccione un modelo preentrenado apropiado para su caso de uso:

from transformers import AutoModelForCausalLM

# Load a pre-trained base model
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B")

Paso 2: Preparar su conjunto de datos​

Formatee sus datos para la tarea de entrenamiento:

# Example instruction-following format
training_example = {
"instruction": "Summarize the following article",
"input": "The European Central Bank announced...",
"output": "The ECB raised interest rates by 0.25%..."
}

Paso 3: Configurar el entrenamiento​

Configure los parámetros de entrenamiento:

from transformers import TrainingArguments

training_args = TrainingArguments(
output_dir="./fine-tuned-model",
learning_rate=2e-5,
num_train_epochs=3,
per_device_train_batch_size=4,
)

Paso 4: Entrenar​

Ejecute el proceso de fine-tuning:

from trl import SFTTrainer

trainer = SFTTrainer(
model=model,
train_dataset=dataset,
args=training_args,
)
trainer.train()

Paso 5: Evaluar y desplegar​

Pruebe su modelo y despliegue:

# Save the fine-tuned model
model.save_pretrained("./my-custom-model")

# Use it for inference
output = model.generate(input_ids, max_new_tokens=100)

Qué puede lograr el Fine-Tuning​

✅ Resultados excelentes​

  • Transferencia de estilo: Hacer que un modelo escriba con la voz de su empresa
  • Seguimiento de formato: Generar estructuras JSON específicas de forma confiable
  • Especialización de dominio: Experiencia médica, legal, financiera
  • Seguimiento de instrucciones: Seguir instrucciones complejas de varios pasos
  • Personaje/persona: Personalidad y comportamiento consistentes

⚠️ Resultados moderados​

  • Nuevos idiomas: Funciona pero puede requerir una cantidad significativa de datos
  • Razonamiento complejo: Mejoras posibles pero limitadas
  • Conocimiento factual: Es mejor usar RAG para hechos dinámicos

❌ Resultados pobres​

  • Información en tiempo real: El modelo no puede aprender lo que no fue entrenado
  • Precisión matemática: El fine-tuning por sí solo no corrige errores de cálculo
  • Cambios fundamentales de arquitectura: No puede añadir nuevas capacidades

Tipos de Fine-Tuning​

1. Fine-Tuning completo​

Actualización de todos los parámetros del modelo:

  • Mayor potencial de personalización
  • Requiere más memoria y cómputo
  • Riesgo de olvido catastrófico

2. Fine-Tuning eficiente en parámetros (PEFT)​

Actualización solo de un pequeño subconjunto de parámetros:

  • Requisitos de memoria mucho menores
  • Entrenamiento más rápido
  • Calidad a menudo comparable al fine-tuning completo
  • Ejemplos: LoRA, QLoRA, Prefix Tuning, IA3

3. Instruction Tuning​

Entrenamiento con pares instrucción-respuesta:

  • Enseña a los modelos a seguir instrucciones
  • Utiliza formatos como Alpaca o ShareGPT
  • Base para modelos tipo chat

4. Alignment/RLHF​

Entrenamiento de modelos para alinearse con preferencias humanas:

  • Utiliza retroalimentación humana o datos de preferencias
  • Métodos: RLHF, DPO, ORPO
  • Crea modelos útiles, seguros y honestos

Ejemplo del mundo real​

Suponga que está construyendo un bot de soporte al cliente para una empresa de software:

Sin Fine-Tuning​

El modelo base podría:

  • Dar respuestas genéricas y extensas
  • No conocer las características de su producto
  • Usar un tono inconsistente
  • No emplear la terminología específica de su empresa

Con Fine-Tuning​

El modelo personalizado puede:

  • Responder de forma concisa con la voz de su empresa
  • Referenciar correctamente características específicas del producto
  • Seguir las plantillas de respuesta de su equipo de soporte
  • Escalar adecuadamente cuando sea necesario
# Example training data for support bot
examples = [
{
"instruction": "Customer asks about pricing",
"input": "How much does the Pro plan cost?",
"output": "Great question! Our Pro plan is $29/month when billed annually, or $35/month for monthly billing. It includes unlimited projects, priority support, and advanced analytics. Would you like me to explain any specific features?"
},
# ... hundreds more examples
]

Puntos clave​

✅ El fine-tuning adapta modelos preentrenados a tareas o dominios específicos

✅ Se basa en el aprendizaje por transferencia—aprovechando el conocimiento del preentrenamiento

✅ Existen diferentes métodos (completo, PEFT, instruction tuning, alignment)

✅ El fine-tuning es potente pero no siempre es la solución adecuada

✅ El proceso implica: modelo base → sus datos → entrenamiento → modelo personalizado


Próximos pasos​

Ahora que entiende qué es el fine-tuning, exploremos cuándo es la opción adecuada en Capítulo 2: Cuándo hacer Fine-Tuning vs usar RAG.


Comprobación rápida​

Antes de continuar, asegúrese de poder responder:

  1. ¿Cuál es la relación entre preentrenamiento y fine-tuning?
  2. ¿Cuáles son tres cosas que el fine-tuning puede ayudar a un modelo a aprender?
  3. ¿Cuál es la diferencia entre fine-tuning completo y PEFT?