Zubnet AIAprenderWiki › LoRA
Entrenamiento

LoRA

También conocido como: Adaptación de bajo rango
Una tecnica que hace que el fine-tuning sea dramaticamente mas barato al entrenar solo una pequena cantidad de parametros 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 parametros.

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 razon por la que hay miles de modelos especializados en HuggingFace.

En profundidad

La idea central detras 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 mas pequenas. En lugar de actualizar una matriz de pesos W (digamos, 4096 x 4096 = 16 millones de parametros), LoRA congela W completamente y agrega dos matrices pequenas A (4096 x r) y B (r x 4096) donde r (el rango) es tipicamente 8, 16 o 64. La actualizacion 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 parametros entrenables en lugar de 16 millones — una reduccion de 120x para esa sola capa. Aplica esto a todas las capas de atencion del modelo y tus parametros 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 parametros

En la practica, eliges a que capas aplicar LoRA (tipicamente las matrices de proyeccion de atencion: Q, K, V y la proyeccion de salida) y estableces el rango r y un factor de escalado llamado alpha. La relacion alpha/r controla cuanta influencia tiene el adaptador en relacion con los pesos base congelados. Mayor rango significa mas expresividad pero mas parametros y memoria; en la practica, rango 16 o 32 cubre la mayoria de los casos de uso. QLoRA, introducido por Dettmers et al. en 2023, llevo la eficiencia aun mas lejos al combinar LoRA con cuantizacion de 4 bits del modelo base: los pesos congelados se almacenan en NF4 (un formato de 4 bits optimizado para pesos con distribucion normal) mientras que los adaptadores LoRA entrenan en bf16. Esto te permite hacer fine-tuning de un modelo de 70B parametros en una sola GPU de 48 GB — algo que de otra forma requeriria una configuracion multi-GPU con cientos de gigabytes de VRAM.

El ecosistema de herramientas

El ecosistema LoRA ha madurado rapidamente. La biblioteca PEFT de HuggingFace es la implementacion estandar, y herramientas como Axolotl, LLaMA-Factory y Unsloth la envuelven en interfaces de nivel mas alto que manejan el formato de datos, valores predeterminados de hiperparametros y ciclos de entrenamiento. Una de las caracteristicas practicas mas 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 unico 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 restriccion de bajo rango significa que no puede aprender cambios de pesos arbitrarios — si la tarea requiere una reestructuracion significativa de las representaciones internas del modelo, el fine-tuning completo superara a LoRA. En la practica, esto importa mas 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. Tambien hay un error comun 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 regularizacion como de capacidad, y ajustarlo junto con la tasa de aprendizaje y el numero de pasos de entrenamiento es esencial para buenos resultados.

Conceptos relacionados

← Todos los términos
← Liquid AI Luma AI →
ESC