Zubnet AIAprenderWiki › LoRA
Entrenamiento

LoRA

También conocido como: Adaptación de bajo rango
Una técnica que hace que el fine-tuning sea dramaticamente más barato al entrenar solo una pequeña cantidad de parámetros adicionales en lugar de modificar el modelo entero. Los "adaptadores" LoRA son complementos livianos (a menudo solo megabytes) que modifican el comportamiento de un modelo sin reentrenar sus miles de millones de parámetros.

Por qué importa

LoRA democratizo el fine-tuning. Antes de el, personalizar un modelo de 7B requeria recursos serios de GPU. Ahora puedes hacer fine-tuning en una sola GPU de consumo en horas y compartir el diminuto archivo de adaptador. Es la razón por la que hay miles de modelos especializados en HuggingFace.

En profundidad

La idea central detrás de LoRA, publicada por Hu et al. en 2021, es que las actualizaciones de pesos durante el fine-tuning tienden a ser de bajo rango — lo que significa que los cambios pueden aproximarse bien mediante el producto de dos matrices mucho más pequenas. En lugar de actualizar una matriz de pesos W (digamos, 4096 x 4096 = 16 millones de parámetros), LoRA congela W completamente y agrega dos matrices pequenas A (4096 x r) y B (r x 4096) donde r (el rango) es típicamente 8, 16 o 64. La actualización efectiva es el producto BA, que tiene la misma forma que W pero esta parametrizado por solo 2 x 4096 x r valores. Con rango 16, eso es aproximadamente 131,000 parámetros entrenables en lugar de 16 millones — una reducción de 120x para esa sola capa. Aplica esto a todas las capas de atención del modelo y tus parámetros entrenables totales bajan de miles de millones a unos pocos millones, que es por lo que un archivo de adaptador LoRA suele pesar solo de 10 a 50 MB comparado con el modelo base de varios gigabytes.

Ajustando los parámetros

En la práctica, eliges a que capas aplicar LoRA (típicamente las matrices de proyección de atención: Q, K, V y la proyección de salida) y estableces el rango r y un factor de escalado llamado alpha. La relación alpha/r controla cuanta influencia tiene el adaptador en relación con los pesos base congelados. Mayor rango significa más expresividad pero más parámetros y memoria; en la práctica, rango 16 o 32 cubre la mayoría de los casos de uso. QLoRA, introducido por Dettmers et al. en 2023, llevo la eficiencia aun más lejos al combinar LoRA con cuantización de 4 bits del modelo base: los pesos congelados se almacenan en NF4 (un formato de 4 bits optimizado para pesos con distribución normal) mientras que los adaptadores LoRA entrenan en bf16. Esto te permite hacer fine-tuning de un modelo de 70B parámetros en una sola GPU de 48 GB — algo que de otra forma requeriria una configuración multi-GPU con cientos de gigabytes de VRAM.

El ecosistema de herramientas

El ecosistema LoRA ha madurado rápidamente. La biblioteca PEFT de HuggingFace es la implementación estandar, y herramientas como Axolotl, LLaMA-Factory y Unsloth la envuelven en interfaces de nivel más alto que manejan el formato de datos, valores predeterminados de hiperparametros y ciclos de entrenamiento. Una de las características practicas más poderosas es la composabilidad de adaptadores: como los adaptadores LoRA son aditivos, puedes entrenar adaptadores separados para diferentes tareas y fusionarlos o intercambiarlos en tiempo de inferencia sin recargar el modelo base. Algunos frameworks de serving como LoRAX y vLLM explotan esto para servir cientos de adaptadores LoRA diferentes desde un único modelo base en memoria, enrutando cada solicitud al adaptador apropiado. Esto hace viable ofrecer modelos afinados por cliente sin el costo de desplegar instancias de modelo separadas.

Las compensaciones

Sin embargo, LoRA no es gratis. La restricción de bajo rango significa que no puede aprender cambios de pesos arbitrarios — si la tarea requiere una reestructuración significativa de las representaciones internas del modelo, el fine-tuning completo superara a LoRA. En la práctica, esto importa más para tareas que son muy diferentes de aquello para lo que el modelo base fue pre-entrenado, o cuando intentas ensenarle al modelo conocimiento factual sustancial nuevo en lugar de ajustar su estilo o formato. También hay un error común de establecer el rango demasiado bajo y preguntarse por que el adaptador no parece aprender, o establecerlo demasiado alto y terminar con un adaptador que sobreajusta en datasets pequenos. El rango es tanto una perilla de regularización como de capacidad, y ajustarlo junto con la tasa de aprendizaje y el número de pasos de entrenamiento es esencial para buenos resultados.

Conceptos relacionados

← Todos los términos
← Logits Loro estocástico →
ESC