ELAI S.r.l.

LoRA más allá del ahorro de memoria: rango, geometría de adaptación y límites medibles

¿Cuándo basta una actualización de bajo rango? Derivaciones, SVD, un contraejemplo y un experimento reproducible explican los límites de LoRA.

LoRA más allá del ahorro de memoria: rango, geometría de adaptación y límites medibles

Análisis técnico · 21 de septiembre de 2026 · Álgebra lineal, adaptación de modelos, experimentos reproducibles

Resumen

¿Cuándo basta una actualización de bajo rango para especializar un modelo? La respuesta depende de qué direcciones deben cambiar, qué entradas las hacen importantes y si el optimizador puede alcanzarlas. Este artículo deriva el número de parámetros y los gradientes de LoRA, analiza su límite de representación mediante la descomposición en valores singulares y lo mide en dos problemas controlados. En matrices de 64 × 64, el mismo rango 8 deja sin representar el 13,53% o el 87,50% de la energía de la actualización. Un segundo ejemplo demuestra que minimizar el error de reconstrucción de los pesos puede seleccionar la dirección equivocada para los datos. De ello surge un criterio preciso: el rango es una hipótesis sobre la geometría de la tarea que debe evaluarse junto con la distribución de las entradas, la optimización y la generalización.

Naturaleza de la contribución. Este es un análisis didáctico con cálculos originales reproducibles, no una nueva investigación revisada por pares. El experimento utiliza matrices sintéticas y una solución analítica: no entrena un LLM ni mide su exactitud. Se presupone familiaridad con matrices, derivadas y aprendizaje supervisado.

1. La pregunta que el número de parámetros no resuelve

Especializar un modelo en documentos técnicos parece plantear una pregunta económica: ¿cuánta memoria requiere actualizarlo? Pero existe una pregunta anterior: ¿qué transformaciones necesitan cambiar? Una matriz con millones de coeficientes podría requerir una corrección concentrada en pocas direcciones. Otra, del mismo tamaño, podría necesitar correcciones independientes en muchas direcciones. El número de coeficientes del modelo inicial no distingue estos casos.

LoRA, presentado por Hu y sus colaboradores en 2021, congela una matriz preentrenada y aprende una corrección factorizada. Su interés científico reside precisamente en la restricción impuesta a esa corrección. El trabajo original documenta resultados en modelos y tareas concretos; no demuestra que toda especialización admita un rango pequeño. Aquí separamos tres preguntas que suelen confundirse: ¿puede representarse la actualización necesaria? ¿Puede encontrarla el entrenamiento? ¿Mantiene la solución su calidad con datos nuevos? [1, secciones 4 y 7]

Esta distinción evita un error frecuente al interpretar experimentos: si aumentar el rango no mejora una puntuación, todavía no hemos demostrado que la tarea sea intrínsecamente sencilla. Los datos pueden ser insuficientes, los módulos adaptados inadecuados o la escala de las actualizaciones incorrecta. A la inversa, un rango mayor que reduce la pérdida de entrenamiento no demuestra una mejora fuera de la muestra.

2. De la matriz completa a la corrección factorizada

Consideremos una capa lineal sin sesgo para mantener visible el mecanismo. La entrada x tiene k componentes, la salida h tiene d y la matriz inicial W₀ tiene dimensiones d × k. El ajuste completo puede modificar los dk coeficientes. En la parametrización LoRA escribimos:

Weff = W₀ + ΔW,   ΔW = sBA
A ∈ ℝr×k,   B ∈ ℝd×r,   h = W₀x + sB(Ax).   (1)

El número r es el rango máximo de la actualización; s es un escalar distinto de cero que regula su escala. A comprime la entrada en r coordenadas y B las devuelve al espacio de salida. Todas las columnas de BA pertenecen al espacio generado por las columnas de B; por tanto, rank(BA) ≤ r. La restricción afecta a ΔW, no a W₀ ni a Weff, que pueden tener rango completo. Congelar W₀ no lo hace pequeño ni lo elimina de la memoria.

Almacenamos rk coeficientes en A y dr en B. Para una sola matriz cuadrada con d = k = 4096 obtenemos la siguiente comparación. Son recuentos de coeficientes entrenables, sin sesgos ni otros módulos:

ConfiguraciónCoeficientes entrenablesProporción respecto a 4096²
Actualización completa16.777.216100%
LoRA, r = 865.5360,390625%
LoRA, r = 16131.0720,78125%
LoRA, r = 64524.2883,125%

Con rango 8 entrenamos 256 veces menos coeficientes para esta matriz. No se deduce una reducción de 256 veces de la memoria total: siguen existiendo los pesos congelados, las activaciones, los búferes y, según la implementación, copias de los pesos y estados del optimizador. También sigue siendo necesaria la propagación del gradiente a través del modelo. El ahorro depende de la precisión numérica, la longitud de las secuencias, el tamaño de los lotes y los módulos implicados.

Además, la factorización contiene redundancia. Para cualquier matriz invertible R de dimensiones r × r, los pares (B, A) y (BR, R⁻¹A) producen la misma actualización. En el subconjunto de matrices de rango exactamente r, la variedad tiene r(d + k − r) grados de libertad, mientras que el número de parámetros almacenados sigue siendo r(d + k). Esta diferencia explica por qué contar números en memoria no equivale a contar direcciones funcionales independientes.

Para un solo vector, la rama adicional requiere un trabajo proporcional a r(k + d), además del producto con W₀. Tras el entrenamiento podemos incorporar sBA a W₀ y utilizar una sola matriz, si el formato numérico y la infraestructura lo permiten. La posibilidad algebraica de fusionarlas no garantiza automáticamente una latencia idéntica en cualquier sistema, sobre todo si se mantienen adaptadores separados o pesos cuantizados.

3. El gradiente explica la inicialización y la escala

Denotemos por L la pérdida y por G = ∂L/∂Weff el gradiente respecto a la matriz efectiva. G tiene dimensiones d × k. Partiendo de dWeff = s(dB)A + sB(dA), y utilizando el producto interno entre matrices ⟨P,Q⟩ = tr(PᵀQ), agrupamos por separado los términos en dA y dB. Obtenemos:

∂L/∂B = sGAᵀ ∈ ℝd×r
∂L/∂A = sBᵀG ∈ ℝr×k.   (2)

Si inicializamos B a cero y A con valores aleatorios no nulos, la actualización inicial es nula: el modelo parte de su función preentrenada. En el primer paso, el gradiente de A es cero, mientras que el de B puede ser distinto de cero. Una vez que B cambia, A también puede aprender. Inicializar ambas a cero bloquearía los dos gradientes de esta parametrización. No es un detalle cosmético: la asimetría inicial conserva la función original sin impedir el aprendizaje.

Las fórmulas también muestran por qué la factorización modifica la optimización. Con descenso de gradiente simultáneo, paso η y despreciando los términos de orden η², la variación de la actualización es:

δ(ΔW) ≈ −ηs²[G AᵀA + BBᵀG].   (3)

El ajuste directo de la matriz daría, en cambio, un paso −ηG. Las matrices AᵀA y BBᵀ filtran el gradiente según la geometría actual de los factores. Incluso con suficiente capacidad de representación, las trayectorias pueden diferir. La ecuación (3) se refiere al descenso de gradiente simple; no describe exactamente Adam, la penalización de pesos ni el recorte de gradientes. Aísla un mecanismo, no sustituye las mediciones del entrenamiento real.

La convención clásica s = α/r vincula escala y rango. Cambiar r manteniendo α fijo modifica, por tanto, dos cosas a la vez: capacidad y dinámica. rsLoRA propone s = α/√r, a partir de un análisis de estabilidad respecto al rango bajo hipótesis explícitas de inicialización y escala. La consecuencia práctica es comparar rango, escala y tasa de aprendizaje mediante un protocolo coherente, sin suponer que un único valor de α hace equivalentes todas las pruebas. [2, secciones 2–4]

4. Un límite medible: ¿cuánta energía queda fuera?

Supongamos por un momento que conocemos una corrección objetivo ΔW*. Es una hipótesis artificial útil para estudiar la capacidad: en una especialización real nadie nos entrega esta matriz. Escribamos su descomposición en valores singulares, ordenados de mayor a menor:

ΔW* = U diag(σ₁, …, σm) Vᵀ,   m = min(d,k).
ΔW*r = Σi=1…r σi uiviᵀ.   (4)

Los vectores ui y vi forman bases ortonormales en sus respectivos espacios. Al truncar la suma conservamos r transformaciones elementales. La propiedad de mejor aproximación de la SVD en norma de Frobenius establece que ninguna matriz de rango como máximo r puede superar a la suma truncada según este criterio. La norma de Frobenius al cuadrado es la suma de los cuadrados de todos los coeficientes.

minrank(M)≤r ‖ΔW* − M‖²F = Σi=r+1…m σ²i
εr = (Σi>r σ²i) / (Σi≥1 σ²i).   (5) [4]

La identidad del residuo también se observa directamente: los términos uiviᵀ son ortogonales entre sí en el producto interno de Frobenius, por lo que las energías de los términos descartados se suman. La optimalidad del truncamiento añade el paso decisivo: no mostramos solo una aproximación posible, sino el mejor límite alcanzable para ese rango y esa métrica.

LoRA puede representar este límite: para s positivo podemos tomar B = Urdiag(√σi/√s) y A = diag(√σi/√s)Vrᵀ. Entonces sBA = ΔW*r. Es una construcción de existencia, no un algoritmo de entrenamiento con textos. No demuestra que un optimizador encuentre esos factores, ni que reconstruir una matriz sea el objetivo adecuado para un LLM.

5. Experimento ejecutado: el mismo rango, dos problemas distintos

Construimos dos matrices de 64 × 64 con las mismas bases ortogonales U y V, obtenidas mediante descomposición QR de matrices gaussianas. En el primer caso, σi = exp(−(i−1)/8): pocas direcciones concentran gran parte de la energía. En el segundo, todos los valores singulares son 1: ninguna dirección tiene prioridad. Para cada rango calculamos la SVD truncada y medimos εr. No hay ruido, fase de entrenamiento ni selección de hiperparámetros sobre un conjunto de prueba.

La semilla aleatoria es 20260921. El cálculo se ejecutó en float64 con Python 3.14.0 y NumPy 2.5.3; los gráficos proceden de los mismos resultados y se generaron con Matplotlib 3.11.2. Para comprobar la interpretación funcional también evaluamos 20.000 entradas gaussianas independientes x ∼ N(0,I), comparando la energía media del error de salida con la energía de la salida objetivo.

Espectros sintéticos y porcentaje de energía residual según el rango; con rango 8 los residuos son 13,53% y 87,50%.
Figura 1. Izquierda: los dos espectros impuestos. Derecha: el residuo óptimo calculado mediante SVD. El eje vertical del espectro es logarítmico y el del residuo es lineal. Fuente: experimento sintético adjunto, no una evaluación de un modelo lingüístico.
Rango rResiduo: decaimientoResiduo: espectro plano
177,8801%98,4375%
260,6531%96,8750%
436,7879%93,7500%
813,5335%87,5000%
161,8316%75,0000%
320,0335%50,0000%
640%0%

En el caso plano, la fórmula se reduce a εr = (64−r)/64. Perder el 87,5% con rango 8 es inevitable para este objetivo, incluso con un optimizador perfecto. En el caso de decaimiento, el rango 16 conserva aproximadamente el 98,17% de la energía. Afirmar que «rango 16 basta» sin precisar el espectro y la métrica elimina justamente la información que hace útil el resultado.

La comprobación con 20.000 entradas devuelve, a rango 8, un residuo empírico del 13,4516% en el primer caso y del 87,5061% en el segundo, próximo a los valores esperados. Es una comprobación Monte Carlo, no un intervalo de confianza ni un resultado sobre un corpus. Cuando los valores singulares son iguales, la base elegida por la SVD no es única: pequeñas diferencias numéricas entre entornos pueden cambiar el residuo muestral, mientras que el teórico permanece idéntico.

El recuento de parámetros revela otro límite: para matrices de 64 × 64, la factorización almacena 128r coeficientes. Con rango 32 almacena 4096, tantos como una matriz completa; con rango 64 almacena el doble. Estos rangos permiten mostrar la curva completa de capacidad. No serían elecciones justificadas por el ahorro de parámetros. Los cocientes económicos del ejemplo de 4096 × 4096 no deben trasladarse al problema sintético más pequeño.

6. El contraejemplo: los datos pueden invertir la elección

La norma de Frobenius atribuye el mismo peso a todas las coordenadas. Un sistema real no recibe necesariamente entradas isotrópicas. Para entradas de media cero con covarianza Σ = E[xxᵀ] y error matricial E = ΔW* − M, el error cuadrático esperado en la salida es:

Ex[‖Ex‖²₂] = tr(EΣEᵀ) = ‖EΣ1/2‖²F.   (6)

Usamos E para la matriz de error y Ex[·] para la esperanza estadística. Si Σ = I recuperamos el criterio anterior. En otro caso importa la combinación entre error y distribución de las entradas. Tomemos ΔW* = diag(4,1) y Σ = diag(1,100). La mejor aproximación de rango 1 en Frobenius es MF = diag(4,0): conserva el mayor valor singular y deja un error cuadrático en los coeficientes de 1.

Sin embargo, la segunda coordenada de la entrada tiene varianza 100. Descartarla genera un error esperado en la salida de 100. Si elegimos MΣ = diag(0,1), el error en los coeficientes aumenta a 16, pero el error esperado en la salida disminuye a 16. Sin corrección alguna sería 116. Por tanto, un criterio que solo considera los pesos prefiere la peor solución para esta distribución.

CorrecciónError en coeficientes, ‖E‖²FError esperado en la salida
Ninguna: diag(0,0)17116
MF = diag(4,0)1100
MΣ = diag(0,1)1616

Si Σ es definida positiva, el problema ponderado se resuelve truncando la SVD de ΔW*Σ1/2 y multiplicando después por la derecha por Σ−1/2. Las transformaciones invertibles preservan el rango. Si Σ es singular, hay que tratar su soporte por separado: no puede utilizarse una inversa ordinaria. Incluso en un problema lineal, la distribución modifica qué direcciones merecen el presupuesto.

En un Transformer el contexto es más complejo: las entradas de las capas dependen de las anteriores, la pérdida final no es una simple distancia entre salidas lineales y adaptar varios módulos puede modificar las representaciones internas. La SVD de una actualización individual es, por tanto, una herramienta diagnóstica, no una regla automática para asignar rango a toda la red.

7. De la capacidad al protocolo para un modelo especializado

Para especializar un modelo en un dominio, el primer paso es definir qué constituye una mejora: extraer campos de documentos, utilizar correctamente terminología técnica o ejecutar instrucciones restringidas son objetivos distintos. Una puntuación media puede ocultar el empeoramiento de casos raros. La separación entre entrenamiento y prueba también debe seguir la unidad informativa real: repartir aleatoriamente páginas casi idénticas de un mismo documento produce una evaluación demasiado fácil.

Un protocolo propuesto, no ejecutado en este artículo, compara el modelo base con rangos 4, 8, 16 y 32, fijando inicialmente los módulos adaptados. Cada configuración recibe un presupuesto comparable de búsqueda de tasa de aprendizaje y escala, utiliza varias semillas aleatorias y selecciona los hiperparámetros con la validación. La prueba final permanece separada hasta la decisión. Después se compara, con igual presupuesto de parámetros cuando sea posible, la adaptación de pocos módulos con la adaptación distribuida en más módulos.

Deben registrarse la calidad en el dominio, el rendimiento en tareas generales de control, la memoria máxima, el tiempo, el número de tokens y la variabilidad entre ejecuciones. La comparación con un ajuste completo, cuando sea viable, ayuda a distinguir los límites de la restricción de los límites del modelo base. Un mayor número de épocas o intentos de ajuste de hiperparámetros no debe convertirse en una ventaja oculta para una sola configuración.

Las curvas de entrenamiento y validación ofrecen indicios, no diagnósticos infalibles. Si ambas siguen siendo deficientes, la capacidad, la optimización y la calidad de los datos continúan siendo hipótesis abiertas. Si solo mejora el entrenamiento, el aumento de rango podría favorecer el ajuste a peculiaridades de la muestra. Si mejora el promedio pero empeora un subconjunto crítico, la decisión debe basarse en el uso previsto, no en el atractivo del número agregado.

Otra dirección consiste en modificar la parametrización. DoRA separa magnitud y dirección de los pesos y utiliza una actualización de bajo rango para la componente direccional. El trabajo de 2024 propone esta elección para cambiar la dinámica de adaptación y la evalúa en tareas específicas. No es simplemente «LoRA con mayor rango», ni una garantía universal de superioridad. En este análisis no hemos reproducido DoRA ni rsLoRA: son comparaciones metodológicas documentadas, no resultados de nuestro experimento. [3, secciones 3–5]

8. Reproducir, comprobar y delimitar

El siguiente núcleo muestra cómo se calcula el residuo. El archivo descargable también incluye la construcción de matrices, la comprobación Monte Carlo, el contraejemplo con covarianza y la verificación de los gradientes mediante diferencias finitas. Esta última produjo un error absoluto máximo de aproximadamente 2,71 × 10⁻⁹.

u, singular, vh = np.linalg.svd(target, full_matrices=False)
approx = (u[:, :r] * singular[:r]) @ vh[:r, :]
residual = target - approx
epsilon = np.sum(singular[r:]**2) / np.sum(singular**2)
direct = np.sum(residual**2) / np.sum(target**2)
assert abs(epsilon - direct) < 1e-12

Para repetir todo el cálculo, instale NumPy y ejecute python experiment.py --out results.json. El JSON registra versiones, semilla, dimensiones y resultados. El script no requiere modelos, credenciales ni conjuntos de datos externos. La reproducibilidad numérica implica concordancia dentro de las tolerancias declaradas en el código, no igualdad de todas las cifras con cualquier biblioteca BLAS.

Descargar código, resultados, script de gráficos e instrucciones · Descargar resultados en JSON.

La principal limitación es deliberada: utilizamos un oráculo que conoce ΔW*, no un proceso que lo aprende. No medimos convergencia, ruido en las etiquetas, generalización lingüística, memoria GPU ni latencia. El caso isotrópico y el contraejemplo anisotrópico demuestran propiedades matemáticas de los problemas construidos; no estiman la distribución de las actualizaciones de un modelo comercial concreto. Los trabajos citados también tienen sus propias fechas y protocolos: esta no es una revisión exhaustiva del estado del arte de 2026.

9. La conclusión técnica

LoRA hace económica una familia restringida de actualizaciones. Su idoneidad depende de la energía y la relevancia funcional de las direcciones que esa familia puede expresar. Nuestro cálculo muestra dos errores de razonamiento: un mismo rango no implica la misma capacidad relativa de reconstrucción, y una mejor reconstrucción de los pesos no implica menor error sobre los datos. Las ecuaciones de los gradientes añaden un tercer nivel: una solución representable puede ser difícil de aprender con la parametrización elegida.

Para el trabajo en modelos especializados que EL-AI pretende profundizar, esto establece una pregunta concreta de diseño: ¿qué direcciones de adaptación requiere la tarea y con qué mediciones podemos demostrar que se han aprendido? El experimento adjunto es material didáctico de esta publicación, no evidencia de un producto ya validado ni de un proyecto de cliente. El siguiente paso científicamente útil sería verificar estas hipótesis con datos de dominio separados, un presupuesto declarado y una comparación repetible.

Referencias primarias

  1. Hu, E. J. y colaboradores. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685, versión 2, 2021. Métodos y análisis del rango: secciones 4 y 7.
  2. Kalajdzievski, D. A Rank Stabilization Scaling Factor for Fine-Tuning with LoRA. arXiv:2312.03732, versión 1, 2023. Hipótesis y análisis de la escala: secciones 2–4.
  3. Liu, S.-Y. y colaboradores. DoRA: Weight-Decomposed Low-Rank Adaptation. arXiv:2402.09353, versión 3, 2024. Descomposición, método y evaluación: secciones 3–5.
  4. James, D., Solomon, J. Singular Value Decomposition. Stanford CS 205A, 2016. Diapositivas 25–26: teorema de Eckart–Young y normas matriciales. [4]

Portada ilustrativa generada con IA: no representa sedes ni instalaciones reales de EL-AI. La figura científica se ha generado con los datos del cálculo adjunto.