LoRA Adapters/es
| Article | |
|---|---|
| Topic area | deep learning |
| Prerequisites | Transformer, AdamW, Backpropagation |
Visión general
LoRA (Low-Rank Adaptation, adaptación de bajo rango) es un método de ajuste fino eficiente en parámetros que inyecta pequeñas matrices entrenables de descomposición de bajo rango en las capas de un modelo pre-entrenado y congelado. Introducido por Hu et al. en 2021, LoRA reparametriza las actualizaciones de pesos seleccionadas como el producto de dos factores de bajo rango, entrenando únicamente esos factores y manteniendo fijos los pesos originales. El "adaptador" resultante contiene típicamente entre el 0,01 y el 1 por ciento de los parámetros del modelo base, pero recupera la mayor parte de la calidad del ajuste fino completo en tareas posteriores. Dado que los pesos del adaptador pueden fusionarse de nuevo con los pesos base en tiempo de inferencia, LoRA no introduce latencia adicional en el despliegue, lo que lo distingue de los métodos de adaptador anteriores que insertaban capas extra en el paso hacia adelante.[1] LoRA se ha convertido en la receta dominante de ajuste fino para modelos de lenguaje grandes, modelos de difusión y Vision Transformers, y constituye el bloque básico de los repositorios de adaptadores compartidos por la comunidad, que se utilizan para especializar modelos en tareas, estilos o personajes.
Motivación
El ajuste fino completo de un modelo fundacional moderno significa actualizar cada parámetro y luego almacenar una copia completa del modelo por cada tarea. Para un modelo de lenguaje de 70B parámetros en precisión de 16 bits, cada checkpoint ajustado pesa aproximadamente 140 GB; el estado del optimizador requerido durante el entrenamiento es varias veces mayor. Esto resulta inviable cuando un mismo modelo base debe especializarse para cientos de tareas, usuarios o dominios.
La observación empírica que motiva LoRA es que el cambio que introduce una corrida de ajuste fino sobre una matriz de pesos pre-entrenada tiende a residir en un subespacio de bajo rango. Si $ W_0 \in \mathbb{R}^{d \times k} $ es una matriz de pesos pre-entrenada y $ W_0 + \Delta W $ es la versión ajustada, la descomposición en valores singulares de $ \Delta W $ normalmente muestra que un pequeño número de direcciones singulares concentra la mayor parte de la energía. Hu et al. argumentaron que el "rango intrínseco" de la adaptación específica de tarea es lo bastante pequeño como para que $ \Delta W $ pueda parametrizarse directamente como un producto de bajo rango sin perder expresividad.
Formulación
LoRA reemplaza la actualización $ \Delta W $ para una matriz de pesos elegida por una forma factorizada $ {\displaystyle \Delta W = \frac{\alpha}{r}\, B A,} $ donde $ A \in \mathbb{R}^{r \times k} $, $ B \in \mathbb{R}^{d \times r} $, el rango $ r $ es mucho menor que $ \min(d, k) $ (habitualmente 4, 8, 16 o 64), y $ \alpha $ es un factor de escala constante. El paso hacia adelante de la capa modificada queda como $ {\displaystyle h = W_0 x + \frac{\alpha}{r}\, B A x.} $ La matriz original $ W_0 $ permanece congelada y no recibe actualizaciones de gradiente. Solo $ A $ y $ B $ se entrenan.
En la inicialización, $ A $ se muestrea de una distribución gaussiana (o de Kaiming) y $ B $ se fija en cero, de modo que $ \Delta W = 0 $ en el paso cero y las predicciones de la red coinciden exactamente con las del modelo pre-entrenado. El flujo de gradiente a través del producto $ BA $ rompe entonces la simetría, y el adaptador aprende una actualización específica de la tarea.
El factor de escala $ \alpha/r $ desacopla la tasa de aprendizaje efectiva del adaptador del rango. De otro modo, duplicar $ r $ duplicaría la magnitud de $ \Delta W $ a valores de parámetro fijos; el factor $ 1/r $ cancela ese efecto, de manera que los hiperparámetros ajustados a un rango se transfieren razonablemente a otro. Una convención habitual es fijar $ \alpha = r $ o $ \alpha = 2r $.
Dónde aplicar LoRA
En un Transformer, LoRA se aplica con mayor frecuencia a las matrices de proyección del mecanismo de atención: las proyecciones de consulta, clave, valor y salida $ W_Q $, $ W_K $, $ W_V $, $ W_O $. El artículo original encontró que adaptar solo $ W_Q $ y $ W_V $ era suficiente en tareas estilo GLUE; la práctica más reciente para modelos de lenguaje grandes aplica LoRA a las cuatro proyecciones de atención más las proyecciones ascendente y descendente del feed-forward, ya que las tareas de seguimiento de instrucciones y razonamiento se benefician de una cobertura más amplia.
LoRA puede aplicarse a cualquier capa lineal, incluidas las tablas de embedding y la cabeza softmax de salida, aunque la LoRA sobre tablas de embedding requiere cuidado debido a su pase hacia atrás no estándar a través de operaciones de selección por índice. Los núcleos convolucionales pueden reformatearse como una matriz 2D y adaptarse de forma análoga, lo que constituye la base de LoRA para modelos de visión y modelos de difusión.
Entrenamiento e inferencia
Durante el entrenamiento, el estado del optimizador --gradientes, momentos de Adam/AdamW y pesos maestros para precisión mixta-- se asigna únicamente para $ A $ y $ B $. Con rango 8 y adaptación de $ W_Q, W_V $, el número de parámetros entrenables para un modelo de lenguaje de 7B parámetros baja de 7B a aproximadamente 4M, lo que supone una reducción de 1700x. Los ahorros de memoria correspondientes, combinados con checkpointing de gradiente y cuantización de pesos a 4 bits, son los que permiten que técnicas como QLoRA ajusten modelos de más de 65B parámetros en una sola GPU de consumo.
En tiempo de inferencia, el adaptador puede fusionarse en los pesos base: $ {\displaystyle W_{\text{merged}} = W_0 + \frac{\alpha}{r}\, B A.} $ Una vez fusionada, la capa modificada es indistinguible de una capa totalmente ajustada y no añade ningún coste de latencia ni memoria. Alternativamente, el adaptador puede mantenerse sin fusionar y aplicarse como una rama aditiva en tiempo de ejecución; esto permite intercambiar en caliente distintos adaptadores sobre el mismo modelo base sin recargar pesos, lo que es la base del servido multi-tenant de adaptadores y de las "bibliotecas de adaptadores" en herramientas de generación de imágenes.
Variantes y extensiones
Una amplia familia de métodos se construye sobre la receta de LoRA:
- QLoRA (Dettmers et al. 2023) -- combina LoRA con cuantización de 4 bits de los pesos base congelados utilizando el tipo de dato NF4 y doble cuantización. El adaptador se entrena en 16 bits mientras los gradientes fluyen a través de pesos base descuantizados. Esto hizo factible el ajuste fino de modelos de más de 30B parámetros en una sola GPU de 24 GB.[2]
- DoRA (Weight-Decomposed Low-Rank Adaptation, adaptación de bajo rango con descomposición de pesos) -- descompone $ W_0 $ en un vector de magnitud y una matriz de dirección, y luego aplica LoRA solo a la dirección. Empíricamente reduce la brecha respecto al ajuste fino completo en tareas donde la LoRA estándar tiene peor rendimiento.
- AdaLoRA -- aprende la asignación de rango entre capas usando una parametrización análoga a la descomposición en valores singulares (con valores singulares explícitos), podando direcciones poco importantes durante el entrenamiento.
- LoRA+ -- usa tasas de aprendizaje distintas para $ A $ y $ B $, motivado por la asimetría de que $ B $ parte de cero. El artículo recomienda $ \eta_B / \eta_A \approx 16 $.
- VeRA -- comparte matrices de proyección aleatorias entre todas las capas y entrena solo pequeños vectores de escala por capa, alcanzando una reducción de parámetros 10x respecto a LoRA con calidad similar.
- LoRA para modelos de difusión -- el método de ajuste fino dominante para Stable Diffusion y modelos relacionados. Los repositorios comunitarios distribuyen cientos de miles de LoRAs de estilo, personaje y concepto, típicamente de 10 a 200 MB cada uno.
Comparaciones
LoRA se sitúa en el panorama más amplio de los métodos de ajuste fino eficiente en parámetros (PEFT):
- Ajuste fino completo -- el techo de calidad más alto, con el coste más alto. Se utiliza cuando el dominio de la tarea está lejos de los datos de pre-entrenamiento y resulta aceptable un único modelo dedicado por tarea.
- Módulos adaptadores (Houlsby et al. 2019) -- insertan pequeñas redes en cuello de botella entre las subcapas del Transformer. Parámetros y latencia adicionales en el paso hacia adelante en inferencia; sin opción de fusión.
- Prefix tuning y prompt tuning -- prependen vectores aprendidos a la entrada o a cada capa de atención. Muy pocos parámetros; sensibles a la inicialización y más difíciles de ajustar para tareas que requieren cambios de comportamiento sustanciales.
- BitFit -- entrena solo los términos de sesgo. Extremadamente barato pero de expresividad limitada.
El atractivo de LoRA es que ocupa un punto óptimo: calidad comparable al ajuste fino completo en la mayoría de las tareas de ajuste fino, recuentos de parámetros comparables a los del prefix tuning, ningún coste adicional en tiempo de inferencia tras la fusión y una composicionalidad limpia (varios LoRAs entrenados para conceptos distintos pueden combinarse linealmente, con matices).
Limitaciones
LoRA asume que la actualización específica de la tarea es aproximadamente de bajo rango. Para tareas que requieren una inyección sustancial de conocimiento --como entrenar un modelo en una nueva lengua o sobre un nuevo y vasto corpus de hechos--, el rango necesario para igualar el ajuste fino completo puede ser lo bastante alto como para que el ahorro de parámetros desaparezca. El pre-entrenamiento de un modelo desde cero usando solo actualizaciones tipo LoRA en general no es eficaz.
Elegir dónde y a qué rango aplicar LoRA sigue siendo un ejercicio empírico. Los valores por defecto comunes (rango 8 o 16, solo proyecciones de atención) funcionan bien para el ajuste por instrucciones de modelos de lenguaje, pero pueden quedarse cortos para código, matemáticas o adaptación multimodal, donde típicamente se necesita una LoRA uniforme de mayor rango sobre más capas.
La composición de adaptadores no siempre es lineal: apilar o sumar varios LoRAs entrenados de forma independiente puede producir interferencias, en particular en modelos de difusión, donde se han propuesto algoritmos de fusión específicos (TIES, DARE) y técnicas de ortogonalización para mitigar el cross-talk.
Por último, LoRA reduce pero no elimina la brecha respecto al ajuste fino completo. En benchmarks que miden habilidades técnicas estrechas (razonamiento matemático, síntesis de código), un ajuste fino completo bien ajustado todavía supera a LoRA por un margen pequeño pero medible, y la brecha se ensancha en rangos muy bajos.