P48 — LoRA

Arquitectura y entrenamiento · Si la actualización útil de un modelo tiene rango bajo, se puede entrenar factorizada — y ajustar un modelo grande deja de exigir un centro de datos.

Nivel: L3 · Motor: lora · Notebook: P48_lora.ipynb · Anexo: álgebra y geometría

1. Identificación

Campo Valor
Título original LoRA: Low-Rank Adaptation of Large Language Models
Autoría Edward J. Hu, Yelong Shen, Phillip Wallis y otros
Año 2021
Venue arXiv:2106.09685 · ICLR 2022
Fuente primaria arXiv:2106.09685
Acceso Abierto
Fecha de consulta 2026-08-16

2. Problema anterior

Ajustar un modelo grande a una tarea significaba actualizar todos sus pesos. Con GPT-3 eso son 175 000 millones de parámetros: memoria de optimizador prohibitiva —Adam guarda dos estados por parámetro—, y una copia completa del modelo por cada tarea.

Existían alternativas de ajuste parcial. Los adapters insertaban capas nuevas, pero añadían latencia en inferencia. El prefix tuning consumía parte de la ventana de contexto. Ninguna era gratis.

3. Propuesta

Congelar W y aprender su actualización en forma factorizada:

W' = W + BA,  con B ∈ ℝ^{d×r},  A ∈ ℝ^{r×d},  r ≪ d

La hipótesis, sugerida por trabajo previo sobre la dimensionalidad intrínseca del ajuste: la actualización que hace falta para adaptar el modelo a una tarea tiene rango bajo. Si es así, BA la representa con una fracción diminuta de los parámetros.

Y la propiedad que lo hace práctico: al desplegar, BA se suma a W. El modelo resultante es una matriz normal, sin capas extra. Cero latencia añadida en inferencia — a diferencia de los adapters.

4. Intuición sin fórmulas

Un manual de mil páginas y una fe de erratas de dos. No reimprimes el manual: publicas la fe de erratas, y cada especialidad tiene la suya sobre el mismo manual.

Dónde deja de funcionar la analogía: una fe de erratas corrige puntos sueltos. BA es una corrección que toca toda la matriz, pero con una estructura muy restringida —solo r direcciones independientes—. Es densa y de rango bajo, no dispersa.

5. Matemática mínima

Parámetros a entrenar:
    ajuste completo : d × d
    LoRA            : 2 × d × r

Con d = 128:
rango r ajuste completo LoRA fracción reducción
1 16 384 256 1,6 % 64×
4 16 384 1 024 6,3 % 16×
16 16 384 4 096 25 %
64 16 384 16 384 100 %

Con r = d/2 ya no se ahorra nada: 2·d·r = d². El método solo tiene sentido con r pequeño, y eso es una apuesta sobre la estructura del problema, no un teorema.

A se inicializa aleatoria y B a cero, de modo que BA = 0 al empezar: el ajuste arranca exactamente desde el modelo base.

💡 Consejo

Puente matemático. Esta sección da por sabido lo siguiente. Si algo no te suena, léelo primero: está explicado una sola vez, en un solo sitio, y sirve para todas las fichas.

Dónde Qué necesitas de ahí
A01 §4 · Matrices como transformaciones el rango de una matriz: toda la hipótesis del método está ahí
A01 §5 · Proyección y subespacios subespacios: BA restringe la actualización a uno de dimensión r

6. Arquitectura o flujo

flowchart LR
    X["x"] --> W["W congelada<br/>❄️ d×d"]
    X --> A["A · r×d<br/>🔥 entrenable"]
    A --> B["B · d×r<br/>🔥 entrenable"]
    W --> S(("➕"))
    B --> S
    S --> Y["h = Wx + BAx"]
    S -.->|"al desplegar:<br/>W ← W + BA"| D["una matriz normal<br/>✅ sin latencia extra"]
    style W fill:#1a2a3a,stroke:#58a6ff,color:#f0f6fc

7. Qué observar en el paper original

8. Evidencia y resultados

Experimentos sobre modelos de lenguaje de distintos tamaños en tareas de comprensión y generación, comparando ajuste completo, adapters, prefix tuning y LoRA a varios rangos.

Las cifras por tarea y rango están en el artículo. Verificarlas allí. Lo que hay que retener: con una fracción muy pequeña de parámetros entrenables, la calidad se mantiene comparable al ajuste completo en las tareas evaluadas.

La miniatura de este eje solo cuenta parámetros y enseña la forma de una actualización de rango 2. No entrena nada.

9. Impacto

10. Limitaciones

  1. La hipótesis de rango bajo es empírica: nada garantiza que la actualización útil lo sea para toda tarea, especialmente si exige conocimiento realmente nuevo.
  2. r y las matrices objetivo son hiperparámetros cuya elección importa y no es automática.
  3. Menor capacidad de cambio que el ajuste completo: con desplazamientos de dominio grandes, la diferencia aparece.
  4. Componer varios adaptadores no es trivial: sumarlos no equivale a aprenderlos juntos.
  5. No reduce la memoria del modelo base durante el entrenamiento —solo la del optimizador y los gradientes—; para eso hace falta cuantizar.
  6. La comparación con ajuste completo depende de la tarea y del presupuesto del estudio.

11. Errores comunes

Error Corrección
«Entrena menos parámetros, luego es más rápido» Reduce memoria de optimizador y de gradientes, pero la pasada hacia delante sigue recorriendo el modelo entero.
«Añade latencia como los adapters» No: BA se suma a W al desplegar y queda una matriz normal. Ese es su argumento central.
«Rango mayor siempre mejor» El paper muestra que rangos muy pequeños bastan. Con r = d/2 se pierde todo el ahorro.
«Puede aprender cualquier cosa que aprenda el ajuste completo» Está restringido a un subespacio de rango r. La hipótesis es empírica, no una garantía.
«Reduce la memoria necesaria para cargar el modelo» La base sigue completa en memoria. Reducirla es lo que aporta QLoRA cuantizándola.

12. Relación con trabajos anteriores

13. Relación con trabajos posteriores

14. Notebook asociado

P48_lora.ipynb

Qué implementa: el conteo de parámetros para cuatro rangos con d = 128, y la construcción explícita de una actualización de rango 2 como producto BA.

Qué NO implementa: no entrena nada. Ni modelo, ni tarea, ni comparación de calidad. La hipótesis central del paper —que la actualización útil es de rango bajo— aquí se enuncia, no se verifica.

ai-evolution paper-lab P48 --seed 7

15. Actividades Bloom

Nivel Actividad
Recordar Escribe la ecuación de LoRA e identifica qué se congela.
Explicar Explica por qué no añade latencia en inferencia.
Aplicar Calcula el ahorro con d = 4096 y r = 8.
Analizar ¿A partir de qué r deja de haber ahorro y por qué?
Evaluar Una tarea exige conocimiento de dominio muy nuevo. ¿Confiarías en LoRA?
Crear Diseña un experimento que mida si la actualización útil de una tarea es de rango bajo.

16. Autoevaluación

  1. ¿Qué se entrena y qué se congela?
  2. ¿Por qué B se inicializa a cero?
  3. ¿Por qué no hay latencia añadida en inferencia?
  4. ¿Qué memoria ahorra exactamente y cuál no?
  5. ¿A partir de qué rango desaparece el ahorro?
  6. ¿Es la hipótesis de rango bajo un teorema?
  7. ¿Qué añade QLoRA sobre esto?

17. Respuestas esperadas

  1. Se entrenan las dos matrices pequeñas A y B; la matriz original W queda congelada y no recibe gradiente.
  2. Para que BA = 0 al inicio y el modelo arranque exactamente en el comportamiento del modelo base, sin una perturbación aleatoria de partida.
  3. Porque al desplegar se calcula W + BA una sola vez y queda una matriz de las mismas dimensiones. No hay capas adicionales que recorrer.
  4. Ahorra la memoria del optimizador y de los gradientes, que solo se necesitan para los parámetros entrenables. No ahorra la memoria de cargar el modelo base, que sigue completo.
  5. A partir de r = d/2, donde 2·d·r = d² y se entrenan tantos parámetros como en el ajuste completo.
  6. No. Es una hipótesis empírica bien respaldada en las tareas evaluadas, no una garantía general.
  7. Cuantizar la base congelada a 4 bits, que es justo la memoria que LoRA no reduce.

18. Fuentes primarias


⬅️ Anterior: P47 AlphaFold · 📇 Índice · 📝 Evaluación · 🏫 Clase 077 · LoRA, QLoRA y adaptación eficiente · ➡️ Siguiente: P49 QLoRA