ENTRENAMIENTO

LoRA

Técnica de fine-tuning eficiente que adapta modelos grandes entrenando solo pequeñas matrices de baja dimensionalidad, en lugar de modificar los pesos originales del modelo.

Nivel · intermedio6 min de lecturaActualizado 24 may 2026
También conocido como: Low-Rank Adaptation, QLoRA, Adapter de bajo rango

Definición

LoRA (Low-Rank Adaptation) es una técnica de fine-tuning eficiente que adapta modelos preentrenados grandes —LLMs, ViTs, diffusion models— entrenando solo unas pequeñas matrices adicionales en lugar de modificar los miles de millones de pesos del modelo original. Introducida por Microsoft en 2021, es la técnica que democratizó el fine-tuning y que está detrás de la inmensa mayoría de los adaptadores que se usan en producción hoy.

El número clave: con LoRA puedes fine-tunear un modelo de 70B parámetros entrenando solo ~100M de parámetros adaptadores — el 0.14% del total. Esto reduce los requisitos de memoria GPU 10-100×, hace fine-tuning accesible en hardware consumer y permite mantener muchos adaptadores ligeros sobre el mismo modelo base.

LoRA es la base de QLoRA (cuantización + LoRA), PEFT (parameter-efficient fine-tuning), y de prácticamente toda la creación de modelos personalizados a partir de Llama, Mistral, Qwen y otros modelos open weights.

Cómo funciona

La intuición matemática: cuando se hace fine-tuning, las actualizaciones de los pesos son de bajo rango. Es decir, el cambio que necesitamos no requiere modificar libremente toda la matriz de pesos — basta con descomponerlo en producto de dos matrices delgadas.

Para cada capa que queremos adaptar (típicamente las matrices de Q, K, V en la atención y a veces el FFN):

  1. Congelamos la matriz original W de la capa (no se modifica).
  2. Añadimos en paralelo dos matrices nuevas: A (d × r) y B (r × d), donde r es el rango LoRA (típicamente 4-64, muy pequeño comparado con d que puede ser 4096+).
  3. Durante el forward pass, calculamos: salida = W·x + B·A·x · (α/r). El término B·A·x es la "adaptación" aprendida.
  4. Solo A y B se entrenan. W permanece intacta.
  5. Al final, opcionalmente, podemos "fusionar" A·B con W para obtener una matriz adaptada del mismo tamaño que la original — sin overhead en inferencia.

El número de parámetros nuevos por capa es d × r + r × d = 2·d·r, muchísimo menor que (los parámetros de la matriz completa). Con r=8 y d=4096, son 65k parámetros nuevos en lugar de 16M — un 0.4%.

Por qué funciona

Empíricamente se observa que las matrices de "delta" entre el modelo base y el modelo fine-tuneado tienen rango efectivo muy bajo. Es decir, el modelo no necesita modificar libremente todos los parámetros para aprender una tarea nueva — basta con un subespacio pequeño.

Esto tiene una interpretación interesante: el conocimiento del modelo base ya cubre la mayoría del problema, y el fine-tuning solo necesita "girar" sutilmente algunas direcciones del espacio de representación para adaptarse al nuevo dominio o tarea.

QLoRA: la combinación que cambió las reglas

QLoRA (Dettmers et al., 2023) combina LoRA con cuantización en 4-bit:

  1. El modelo base se carga en 4-bit (NF4 cuantización), reduciendo VRAM ~4×.
  2. Se hace forward pass con dequantización on-the-fly.
  3. LoRA se entrena en precisión normal (FP16/BF16).

Resultado revolucionario: Llama 3.1 70B fine-tuneable en una sola GPU consumer de 24 GB (RTX 4090). Antes de QLoRA, hacía falta un cluster de 8 A100. Coste pasó de ~1.000 € por experimento a ~10 €.

Esto democratizó completamente el fine-tuning. Hoy cualquiera con una buena GPU puede crear adaptadores personalizados de modelos grandes.

Ejemplo práctico

En AE Works, un cliente del sector legal quiere un asistente que escriba contratos en su estilo y vocabulario específicos. Opciones consideradas:

  • Prompting: requiere repetir ejemplos y guías en cada llamada → caro a escala, prompt frágil.
  • RAG: bueno para hechos, no para estilo.
  • Fine-tuning completo de Llama 70B: necesita cluster H100 (~1.500 €/experimento, muy lento).
  • QLoRA sobre Llama 70B: una RTX 4090, ~3 horas, ~12 €.

Vamos con QLoRA:

  1. Dataset: 600 ejemplos curados (instrucción + redacción ideal).
  2. Configuración: r=16, alpha=32, dropout=0.05, target_modules=q_proj, k_proj, v_proj, o_proj.
  3. Entrenamiento: 3 epochs, AdamW, learning rate 2e-4, cosine schedule.
  4. Output: ~150 MB de adaptador, deployable junto al modelo base.
  5. Inferencia: el adaptador se "fusiona" o se aplica dinámicamente. Latencia idéntica al base.

Resultado: el modelo escribe contratos con el vocabulario, estructura y tono de la firma. Cero coste por inferencia (modelo autohospedado), privacidad total.

Otra ventaja brutal: podemos tener un adaptador por cliente sobre el mismo modelo base. Cada cliente tiene "su modelo" sin necesidad de 70B de pesos por cada uno.

Hiperparámetros clave de LoRA

  • rank (r): típicamente 4-64. Más rank = más capacidad de adaptación pero más parámetros. r=8 o r=16 funciona bien para la mayoría de casos.
  • alpha: factor de escala, típicamente 2×r. Controla cuánto influye el adaptador sobre la salida.
  • target_modules: qué capas adaptar. Las atenciones (Q, K, V, O) son lo más común; añadir FFN mejora calidad pero aumenta parámetros.
  • dropout: regularización del adaptador. 0.0-0.1 típico.

Variantes y evoluciones

  • QLoRA: 4-bit cuantización del base + LoRA en BF16.
  • DoRA (Weight-Decomposed LoRA): descompone los pesos en magnitud y dirección, mejor calidad que LoRA puro a igual coste.
  • VeRA, AdaLoRA: variantes que reducen aún más los parámetros entrenables.
  • MoLoRA: combinación LoRA + Mixture of Experts.
  • LongLoRA: LoRA adaptado para extender ventanas de contexto.

Errores comunes al hablar de LoRA

  • Confundir LoRA con fine-tuning completo: LoRA es UN tipo de fine-tuning, no todos. Tiene ventajas y limitaciones.
  • Pensar que es para "ahorrar": el ahorro de cómputo es secundario al ahorro de memoria. Permite hacer fine-tunings que de otra forma serían imposibles.
  • Rank muy alto sin justificación: r=128 no es necesariamente mejor que r=16. Puede ser peor por sobreajuste.
  • Adaptar todas las capas: no aporta tanto. Las atenciones son donde más impacto se ve.
  • Ignorar el alpha: alpha bajo → adaptador débil. Alpha demasiado alto → modelo inestable.
  • No fusionar para producción: si necesitas latencia mínima, fusiona LoRA con el base. Si necesitas alternar adaptadores dinámicamente, mantenlos separados.
  • Esperar que sustituya pretraining: LoRA adapta, no enseña conocimiento nuevo profundo.

Cuándo usar LoRA

Sí, usa LoRA cuando:

  • Quieres fine-tunear modelos grandes (>10B) con hardware limitado.
  • Necesitas mantener múltiples adaptadores sobre el mismo modelo base (un cliente, una tarea, un estilo por adaptador).
  • Tu dataset es pequeño-mediano (cientos a decenas de miles de ejemplos).
  • Quieres iterar rápido en experimentos de fine-tuning.

Es menos óptimo si:

  • Necesitas cambios muy profundos del comportamiento del modelo (full fine-tuning puede ser mejor).
  • Estás haciendo continued pretraining con muchos datos nuevos (LoRA puede saturar).
  • Tu modelo es pequeño (<3B) y full fine-tuning no es caro.

Referencias

Tagsiaentrenamientoeficienciapeft