Recursos/Entrenamiento de modelos/Qué ocurre durante el entrenamiento

Método

Ajuste fino completo

El ajuste fino completo actualiza todos los pesos del modelo. Ofrece el mayor margen para cambiar el comportamiento, pero necesita varias veces el tamaño del propio modelo en memoria de la GPU y es el más propenso a deteriorar las habilidades que tenía el modelo base.

Capítulo 65 min de lectura5 referencias

En qué consiste

El ajuste fino completo continúa el entrenamiento de todo el modelo con sus ejemplos: cada peso de cada capa puede cambiar. Es la forma más directa de ajuste fino y, mecánicamente, es igual a las últimas etapas de construcción del modelo. La alternativa es el ajuste fino eficiente en parámetros (PEFT), como LoRA, que congela los pesos originales y entrena un pequeño complemento en su lugar.

A qué se destina la memoria

La ejecución de un modelo solo necesita sus pesos. Entrenar cada peso requiere, para cada uno, el propio peso, su gradiente y el estado del optimizador. Con AdamW en la configuración habitual de precisión mixta, esto supone un peso de 16 bits y un gradiente de 16 bits para las pasadas hacia adelante y hacia atrás, además de una copia maestra de 32 bits del peso y las dos medias móviles de 32 bits de Adam, que se conservan para lograr actualizaciones estables. El cálculo del artículo de ZeRO sitúa esto en 16 bytes por peso; otras configuraciones que mantienen los gradientes en 32 bits alcanzan unos 18.

Memoria por peso entrenable
per trainable weight · AdamW · mixed precision
  16-bit weight              2 bytes
  16-bit gradient            2 bytes
  32-bit master weight       4 bytes
  32-bit Adam momentum       4 bytes
  32-bit Adam variance       4 bytes
  ───────────────────────────────────
                            16 bytes   + activations

7B model:  7 × 10⁹ × 16 bytes ≈ 112 GB
Ajuste fino completo16 bits + Adam≈ 112 GBLoRAbase de 16 bits, congelada≈ 15 GBQLoRAbase de 4 bits, congelada≈ 4–5 GBAdam + copia fp32pesos congeladospesos entrenablesgradientesestado del optimizador
Memoria de GPU aproximada para el ajuste fino de un modelo de 7 mil millones de parámetros, antes de las activaciones. El ajuste fino completo con Adam necesita unos 16 bytes por cada peso: los pesos, sus gradientes, una copia maestra de precisión completa y dos estadísticas del optimizador. LoRA mantiene la base congelada, por lo que los gradientes y el estado del optimizador solo existen para el adaptador pequeño (aquí unos 40 millones de pesos).
Un modelo de 7 mil millones de parámetros, de tres formas
  1. Solo ejecución en 16 bits: 7 mil millones × 2 bytes ≈ 14 GB.
  2. Ajuste fino completo con AdamW: 7 mil millones × 16 bytes ≈ 112 GB, antes de las activaciones. Esto supera la capacidad de una sola GPU de 80 GB, por lo que el trabajo se divide en varias GPU mediante técnicas como ZeRO o FSDP, que reparten el estado del optimizador, los gradientes y los pesos entre ellas.
  3. LoRA con rango 16 en todas las capas lineales de un modelo de 7B estilo Llama: unos 40 millones de pesos entrenables, el 0,6 % del modelo. Su estado de entrenamiento es de aproximadamente 40 millones × 16 bytes ≈ 0,6 GB, que se suman a los 14 GB de la base congelada: en total, unos 15 GB.
  4. QLoRA: la base congelada en 4 bits ocupa unos 3,5 GB, por lo que el total ronda los 4–5 GB más las activaciones, al alcance de una sola GPU de consumo.
  5. Las activaciones se suman en todos los casos y aumentan con el tamaño del lote y la longitud de la secuencia. El gradient checkpointing intercambia computación adicional por una menor memoria de activación.

Qué ventajas ofrece

El ajuste fino completo puede cambiar el modelo en cualquier dirección, no solo dentro del pequeño subespacio que puede alcanzar un adaptador. Un estudio que comparó ambos métodos descubrió que el ajuste fino completo aprende cambios con un rango entre 10 y 100 veces superior al de las configuraciones típicas de LoRA, y que aprendió más en grandes conjuntos de entrenamiento de código y matemáticas de unos 100 000 ejemplos. Para el caso empresarial común, desde unos cientos hasta unos miles de ejemplos de chat que enseñan el tono, el formato y la fraseología del dominio, aplicar LoRA a todas las capas suele igualar al ajuste fino completo.

Cuál es el coste: el olvido

El olvido catastrófico es la tendencia de una red entrenada en algo nuevo a perder lo que aprendió antes. Dado que el ajuste fino completo puede mover todos los pesos, tiene más margen para sobrescribir las habilidades generales: un modelo de soporte que responde perfectamente a las preguntas sobre su producto, pero que ha empeorado a la hora de seguir instrucciones no relacionadas. Un estudio empírico sobre el ajuste continuo de instrucciones observó este olvido en modelos de 1B a 7B parámetros, y se ha comprobado que los modelos ajustados con LoRA, que mantiene la base congelada, olvidan menos.

  • Menos épocas y una tasa de aprendizaje más baja, para que los pesos se desvíen menos de su valor inicial.
  • Incorpore datos generales, como una proporción de ejemplos amplios de seguimiento de instrucciones junto a los suyos.
  • Evalúe más allá de su tarea. Incluya algunas preguntas generales en la evaluación para detectar posibles regresiones.
  • Dé prioridad a un adaptador a menos que se haya medido una mejora real con el ajuste fino completo.

Comparativa entre el ajuste fino completo y LoRA

AspectoAjuste fino completoAdaptador LoRA
Pesos entrenablesTodosNormalmente 0,1–1 %
Memoria para entrenarUnos 16 bytes por peso, más activacionesLa base congelada (2 bytes por peso, o unos 0,5 en 4 bits) más un adaptador pequeño
Resultado guardadoUna copia completa del modelo, p. ej., unos 14 GB para 7B en 16 bitsUn archivo de adaptador, a menudo de decenas a cientos de MB
Tasa de aprendizaje típicaAlrededor de 1e-5Aproximadamente 10 veces mayor
Riesgo de olvidoMayorMenor
Ideal paraGrandes conjuntos de datos que enseñan nuevas habilidades sustancialesTono, formato y fraseología del dominio; varias variantes de una base

Errores comunes

  • Elegir el ajuste fino completo porque parece más exhaustivo. En conjuntos de datos pequeños, suele costar mucho más sin ofrecer mejoras cuantificables.
  • Calcular la memoria de la GPU en función del tamaño de descarga del modelo. Entrenar cada peso requiere aproximadamente ocho veces los pesos de 16 bits, más las activaciones.
  • Entrenar muchas épocas con una tasa de aprendizaje alta y probar solo la tarea objetivo, para luego descubrir que las habilidades generales se han degradado.
  • Olvidar que cada ajuste fino completo es un modelo de tamaño completo que debe almacenarse y servirse.

Referencias y lecturas adicionales

Las fuentes externas se abren en una pestaña nueva.

  1. 01ZeRO: Memory Optimizations Toward Training Trillion Parameter ModelsRajbhandari et al., 2019 · arXiv · arxiv.orgEl origen del cálculo de 16 bytes por parámetro y del sharding utilizado para distribuirlo entre las GPU.
  2. 02GPU memory usageHugging Face Transformers docs · huggingface.coUn desglose de los pesos, los estados del optimizador, los gradientes y las activaciones durante el entrenamiento.
  3. 03LoRA Learns Less and Forgets LessBiderman et al., 2024 · arXiv · arxiv.orgUna comparación minuciosa del ajuste fino completo y LoRA en código y matemáticas: qué aprende y qué olvida cada uno.
  4. 04An Empirical Study of Catastrophic Forgetting in Large Language Models During Continual Fine-tuningLuo et al., 2023 · arXiv · arxiv.org
  5. 05LoRA vs. full fine-tuningTogether AI docs · docs.together.aiConsejos prácticos de un proveedor sobre cuándo pasar de un adaptador al ajuste fino completo.

Convierta semanas de trabajo experto en minutos

Vea cómo Scalata se adapta a su equipo, a sus datos y a sus Controles.

Contactar con ventas