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

Método

LoRA y adaptadores (PEFT)

LoRA congela el modelo base y entrena dos pequeñas matrices junto a las capas seleccionadas, cuyo producto se suma a los pesos congelados. Reduce drásticamente los pesos entrenables y la memoria y, si se configura bien, iguala al ajuste fino completo en conjuntos de datos de ajuste fino típicos.

Capítulo 67 min de lectura5 referencias

Qué es

PEFT (ajuste fino eficiente en parámetros) es una familia de métodos que adaptan un modelo entrenando un pequeño número de pesos nuevos mientras los originales permanecen congelados. LoRA (adaptación de bajo rango), introducido por Hu et al. en 2021, es el más utilizado. Se basa en una observación: el cambio que el ajuste fino debe realizar en una matriz de pesos grande puede describirse con muchos menos números que la propia matriz. En términos matemáticos, el cambio tiene un rango bajo.

xentradaWd × d · congelada 🔒Ar × dBd × rentrenable · rango r (4–16)+hh = Wx + BAx
LoRA mantiene congelada la matriz de pesos original W y aprende dos matrices delgadas junto a ella. Su producto B·A tiene la misma forma que W pero solo rango r, de modo que una capa de 4096 × 4096 (16,8M de pesos) se adapta con 2 × 4096 × 8 ≈ 65k pesos entrenables con rango 8.

Cómo funciona

Tomemos una capa lineal con una matriz de pesos W de forma d × k. El ajuste fino completo aprendería un cambio ΔW de la misma forma: d × k números nuevos. En su lugar, LoRA aprende ese cambio como el producto de dos matrices delgadas. A (r × k) comprime la entrada de la capa a r números, y B (d × r) los vuelve a expandir. El rango r es pequeño, normalmente de 4 a 64, mientras que d y k se cuentan por miles.

La actualización de LoRA
h = W·x + (α / r) · B·A·x

W : d × k    frozen
A : r × k    trainable, random at the start
B : d × r    trainable, zero at the start   →   B·A = 0 at step 0

trainable weights per adapted layer = r × (d + k)
  • Inicialización. A comienza de forma aleatoria y B comienza en cero, por lo que B·A = 0 y el modelo adaptado es exactamente el modelo base en el paso 0. El entrenamiento lo aleja gradualmente.
  • Escalado. La salida del adaptador se multiplica por alfa ÷ r. Esto mantiene el tamaño de su efecto más o menos estable cuando r cambia, por lo que la tasa de aprendizaje no necesita reajustarse para cada rango. Una variante, LoRA de rango estabilizado (rsLoRA), divide por la raíz cuadrada de r en su lugar, lo que se comporta mejor en rangos altos.
  • Fusión. Después del entrenamiento, B·A se puede multiplicar y sumar a W. El modelo fusionado tiene la forma original y se ejecuta a la velocidad original, sin latencia añadida. O bien, el adaptador se mantiene como un pequeño archivo separado y se carga sobre la base, lo que permite que un modelo base sirva a varios adaptadores.
Recuento de los pesos: una capa y luego un modelo completo
  1. Una proyección de atención de 4096 × 4096: 16,8 millones de pesos en W.
  2. LoRA con rango 8: A es 8 × 4096 y B es 4096 × 8, por lo que 2 × 4096 × 8 = 65.536 pesos entrenables, el 0,4 % de la capa.
  3. Un modelo 7B estilo Llama con rango 16 en todas las capas lineales (cuatro proyecciones de atención y tres MLP en cada una de las 32 capas): unos 40 millones de pesos entrenables, aproximadamente el 0,6 % del modelo.
  4. Memoria de entrenamiento: esos 40 millones de pesos necesitan alrededor de 0,6 GB para los gradientes y el estado de AdamW, frente a los aproximadamente 112 GB para el ajuste fino completo de los 7000 millones.
  5. El adaptador guardado en 16 bits ocupa unos 80 MB, frente a los 14 GB de una copia completa del modelo.
  6. En el artículo original, sobre GPT-3 175B, LoRA redujo los parámetros entrenables hasta 10.000 veces y la memoria de la GPU unas 3 veces en comparación con el ajuste fino completo con Adam.
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).

La configuración

Rango (r)Típico 4–16; hasta 64 para conjuntos de datos grandes#

La dimensión interna de A y B, y por tanto la capacidad del adaptador: cuántas direcciones de cambio independientes puede aprender en cada capa. Los pesos entrenables crecen en proporción a r. Los rangos bajos son suficientes para el tono, el estilo y el formato; los conjuntos de datos más grandes y con gran cantidad de conocimientos se benefician de rangos mayores. Una vez que el adaptador tiene suficiente capacidad para los datos, un rango mayor añade costes sin mejorar los resultados. Algunos proveedores lo denominan el tamaño del adaptador.

Alfa (α)Típico de r a 2 × r, o un valor fijo de 16–32#

Un factor de escala: la salida del adaptador se multiplica por alfa ÷ r. Un alfa mayor hace que cada actualización cuente más, de forma muy parecida a una tasa de aprendizaje más alta, razón por la cual muchas configuraciones fijan alfa y ajustan la tasa de aprendizaje en su lugar. Las convenciones comunes son alfa igual a r, alfa igual al doble de r, o un valor fijo como 16 o 32. Elija una convención y manténgala: cambiar r mientras alfa se mantiene fijo también cambia la escala.

  • Módulos de destino deciden qué capas reciben un adaptador. El artículo original adaptaba solo las proyecciones de consulta y valor de atención. Trabajos posteriores, incluidos QLoRA y un estudio de 2025 de Thinking Machines, descubrieron que es necesario adaptar todas las capas lineales, especialmente las capas MLP (feed-forward), para igualar el ajuste fino completo. Las bibliotecas suelen ofrecer una opción de «todas las capas lineales».
  • El dropout de LoRA pone a cero aleatoriamente parte de la entrada del adaptador durante el entrenamiento, una leve protección contra el sobreajuste en conjuntos de datos pequeños. Los valores comunes van de 0 a 0,1.
  • Tasa de aprendizaje. LoRA suele necesitar una tasa de aprendizaje mayor que el ajuste fino completo: unas diez veces mayor en el estudio de Thinking Machines, que también descubrió que la mejor tasa cambia poco entre los distintos rangos.
  • Tamaño del lote. El mismo estudio descubrió que LoRA tolera los lotes muy grandes peor que el ajuste fino completo, por lo que los tamaños de lote moderados son la opción más segura.

QLoRA: adaptadores sobre una base de 4 bits

QLoRA (Dettmers et al., 2023) entrena adaptadores LoRA ordinarios de 16 bits, pero almacena el modelo base congelado en un formato de 4 bits diseñado para pesos con distribución normal (NF4). Añade cuantización doble, que comprime las propias constantes de cuantización, y optimizadores paginados que absorben los picos de memoria. El artículo realizó el ajuste fino de un modelo de 65B de parámetros en una sola GPU de 48 GB, conservando el rendimiento en la tarea del ajuste fino de 16 bits. La contrapartida es la velocidad: los pesos de 4 bits se desempaquetan sobre la marcha, por lo que cada paso es algo más lento.

Cuándo LoRA es la elección correcta

SituaciónPreferencia habitual
Tono, formato o fraseología del dominio, de cientos a miles de ejemplosLoRA
Memoria de GPU o presupuesto limitadosLoRA o QLoRA
Varias variantes específicas de tareas de un mismo modelo baseLoRA: un pequeño adaptador para cada una
Mantener las capacidades generales del modelo base es importanteLoRA, que olvida menos
Conjuntos de datos muy grandes que enseñan habilidades nuevas y sustanciales, como programación o matemáticasEl ajuste fino completo puede lograr un mayor aprendizaje

Errores comunes

  • Adaptar solo las capas de atención. En la mayoría de los datos de ajuste fino, esto ofrece un rendimiento inferior al de los adaptadores en todas las capas lineales, incluido el MLP.
  • Reutilizar una tasa de aprendizaje de ajuste fino completo. LoRA suele necesitar una tasa unas diez veces mayor, o apenas aprende.
  • Cambiar el rango mientras alfa se mantiene fijo, sin notar que alfa ÷ r, y por tanto el tamaño de paso efectivo, también ha cambiado.
  • Esperar que un rango mayor rescate un conjunto de datos pequeño o inconsistente. La capacidad no ayuda cuando los ejemplos no muestran un patrón claro.
  • Cargar un adaptador en un modelo base diferente, o en una versión distinta de este, al que se utilizó para su entrenamiento.

Referencias y lecturas adicionales

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

  1. 01LoRA: Low-Rank Adaptation of Large Language ModelsHu et al., 2021 · arXiv · arxiv.orgEl artículo original: la idea de bajo rango, el escalado alfa ÷ r y los resultados de GPT-3.
  2. 02QLoRA: Efficient Finetuning of Quantized LLMsDettmers et al., 2023 · arXiv · arxiv.orgPesos base NF4 de 4 bits, cuantización doble y optimizadores paginados.
  3. 03LoRA Without RegretThinking Machines Lab, 2025 · thinkingmachines.aiCuándo LoRA iguala al ajuste fino completo, por qué importan todas las capas y la regla de la tasa de aprendizaje 10×.
  4. 04LoRAHugging Face PEFT docs · huggingface.coTodos los ajustes de LoRA tal como se implementan: rango, alfa, dropout, módulos de destino y rsLoRA.
  5. 05A Rank Stabilization Scaling Factor for Fine-Tuning with LoRAKalajdzievski, 2023 · arXiv · arxiv.org

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