LoRA
Tienes un modelo grande y quieres adaptarlo al estilo de tus documentos. Entrenar todos sus pesos —los números que controlan los cálculos— exige mucha memoria. ¿Se puede aprender solo una corrección pequeña de lo que el modelo ya sabe hacer?
LoRA (Low-Rank Adaptation) conserva los pesos base y entrena dos matrices más pequeñas, es decir, tablas de números que describen su cambio. El producto de esas tablas da una corrección que se suma a una matriz seleccionada del modelo.
En lugar de cambiar de forma independiente cada casilla de una tabla grande, la actualización pasa por una dimensión intermedia estrecha. Su tamaño, llamado rango r, limita el número de direcciones independientes de la corrección. El ahorro afecta a los parámetros entrenados, no a eliminar el modelo base de la memoria.
Un r pequeño ofrece una adaptación más barata, pero con menos libertad. LoRA es una variante de Fine-tuning; no garantiza calidad sin buenos datos y ajustes. El ejemplo siguiente permite contar los números que se entrenan y distinguirlos de la memoria total necesaria.
Mecanismo y detalles
En la parametrización original, para una matriz base utilizamos:
y contienen los parámetros entrenables. Un pequeño limita el rango de la actualización, y fija su escala. La limitación afecta al cambio de los pesos, no al rango de toda la matriz base. Hu et al., LoRA: Low-Rank Adaptation of Large Language Models, §4.1 describen el mecanismo.
Cuántos parámetros ahorramos realmente
Ejemplo propio: una matriz de 4096 × 4096 tiene 16 777 216 parámetros. Con , las dos matrices de LoRA tienen en total parámetros. Son 256 veces menos parámetros entrenables de esa única matriz, suponiendo que entrenemos solo su adaptador.
Los pesos base siguen teniendo que almacenarse. También hace falta memoria para las activaciones y los demás elementos del cálculo, por lo que este ejemplo no implica un consumo de VRAM 256 veces menor. En §4.2, los autores describen por separado los ahorros del estado del optimizador [Polski] y del tamaño del adaptador guardado.
En un Transformer, LoRA puede aplicarse a determinadas proyecciones de atención, pero el método no se limita a una pareja de matrices. El alcance final del entrenamiento depende de la configuración: el rango, las capas indicadas y los posibles módulos adicionales entrenables. La documentación de PEFT describe, entre otros, r, target_modules y modules_to_save.
El artículo anterior sobre el script de entrenamiento de DeepSeek R1 [Polski] contiene un ejemplo de configuración de LoRA. Es material relacionado; la definición anterior se basa en el trabajo original y la documentación.