Cómo funciona
LoRA (Low-Rank Adaptation) es una técnica de ajuste fino (fine-tuning) que no modifica los pesos originales del modelo. En su lugar, añade dos matrices pequeñas de bajo rango junto a las capas originales. Durante el entrenamiento, solo se actualizan esas matrices nuevas; el modelo base queda congelado.
La idea central es que el cambio necesario para adaptar un modelo a una tarea nueva puede representarse con una matriz de bajo rango. Es decir, en lugar de actualizar una matriz enorme de pesos, basta aprender una corrección compacta. Esto reduce drásticamente la cantidad de parámetros entrenables y el consumo de memoria de video (VRAM).
En la práctica, eliges qué capas del modelo recibirán las matrices LoRA (generalmente las capas de atención) y defines un rango (rank) pequeño, como 8 o 16. Cuanto mayor es el rango, más capacidad de aprendizaje, pero también más memoria y tiempo de entrenamiento.
Ejemplo práctico
Imagina que quieres enseñar a un modelo de código a seguir el estilo de commits de tu empresa. Con LoRA, preparas un conjunto de ejemplos de commit y ejecutas el entrenamiento en una sola GPU. El resultado es un archivo pequeño (decenas de megabytes) con las matrices LoRA, que cargas sobre el modelo base al momento de usarlo. El modelo original no se modificó.
Herramientas como Hugging Face PEFT y bibliotecas de entrenamiento (Axolotl, Unsloth) ya incluyen LoRA lista para usar. El comando típico recibe el modelo base, el dataset y el rango:
python train.py --model base-model --dataset commits.jsonl --lora-r 16 --output lora-adapterPara qué sirve
LoRA sirve para adaptar modelos de lenguaje a tareas específicas con poco hardware y pocos datos. Es la base de la mayoría de los ajustes finos que hacen equipos pequeños. También permite mantener varias adaptaciones (una por cliente, una por estilo) sin duplicar el modelo base, ahorrando almacenamiento y memoria.
Términos como QLoRA llevan la idea más lejos al combinar LoRA con cuantización, permitiendo entrenamiento en GPUs de consumo.