XYZNOT

Artículos · arXiv 2106.09685

LoRA: Low-Rank Adaptation of Large Language Models

Publicado cs.CLcs.AIcs.LG arXivPDF

Leer con traducción e IA

Resumen en tres líneas

  1. 🎯 El fine-tuning completo de modelos de lenguaje masivos como GPT-3 175B requiere reentrenar y almacenar miles de millones de parámetros por tarea, creando cuellos de botella prohibitivos de almacenamiento, VRAM y despliegue.
  2. 🔧 Congela las matrices de pesos preentrenadas e inyecta matrices entrenables de descomposición de bajo rango () en las capas densas del Transformer, escalando el producto por y permitiendo la fusión para el despliegue sin añadir latencia.
  3. 📈 En GPT-3 175B, LoRA reduce los parámetros entrenables en 10.000x y la VRAM en 3x (de 1,2TB a 350GB) a la vez que iguala o supera al fine-tuning completo en GLUE, WikiSQL y SAMSum.

Resumen

Un paradigma importante del procesamiento del lenguaje natural consiste en el preentrenamiento a gran escala en datos de dominio general y la adaptación a tareas o dominios particulares. A medida que preentrenamos modelos más grandes, el ajuste fino completo (full fine-tuning), que reentrena todos los parámetros del modelo, se vuelve menos viable. Tomando como ejemplo GPT-3 175B: desplegar instancias independientes de modelos ajustados, cada una con 175B de parámetros, resulta prohibitivamente costoso. Proponemos la adaptación de bajo rango, o LoRA (Low-Rank Adaptation), que congela los pesos del modelo preentrenado e inyecta matrices entrenables de descomposición de rango en cada capa de la arquitectura Transformer, reduciendo en gran medida el número de parámetros entrenables para tareas posteriores. En comparación con GPT-3 175B ajustado con Adam, LoRA puede reducir el número de parámetros entrenables en 10.000 veces y el requisito de memoria GPU en 3 veces. LoRA rinde a la par o mejor que el fine-tuning en cuanto a la calidad del modelo en RoBERTa, DeBERTa, GPT-2 y GPT-3, a pesar de tener menos parámetros entrenables, un mayor rendimiento (throughput) de entrenamiento y, a diferencia de los adaptadores, ninguna latencia de inferencia adicional. También proporcionamos una investigación empírica sobre la deficiencia de rango en la adaptación de modelos de lenguaje, lo que arroja luz sobre la eficacia de LoRA. Publicamos un paquete que facilita la integración de LoRA con modelos de PyTorch y ofrecemos nuestras implementaciones y checkpoints de modelos para RoBERTa, DeBERTa y GPT-2 en https://github.com/microsoft/LoRA.

Resumen original (inglés)

An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.

Guía de lectura

Problema y motivación

La adaptación de modelos de lenguaje preentrenados a gran escala a diversas aplicaciones posteriores depende tradicionalmente del ajuste fino completo o full fine-tuning (actualizar todos los parámetros a ). Para arquitecturas masivas como GPT-3 175B, almacenar y servir copias independientes de modelos de 175B de parámetros es prohibitivamente costoso en términos de almacenamiento, memoria GPU y sobrecarga de E/S. Las técnicas anteriores de ajuste eficiente en parámetros presentan inconvenientes evidentes:

  • Capas de adaptadores en serie (Series Adapter Layers): Insertan módulos de cuello de botella secuencialmente dentro de los bloques Transformer. Debido a que estas operaciones secuenciales no se pueden paralelizar, introducen una latencia de inferencia significativa, ralentizando las pasadas hacia adelante (forward passes) hasta en un en regímenes de servicio en línea con GPU única y lotes pequeños.
  • Prefix / Prompt Tuning: Optimiza vectores de prompt continuos que se anteponen a las activaciones de las capas. Estos métodos son difíciles de optimizar, escalan de forma no monótona con la longitud del prompt y consumen parte del límite de longitud de secuencia que de otro modo estaría disponible para el contexto.

LoRA aborda este compromiso entre eficiencia y calidad basándose en la hipótesis de que las actualizaciones de adaptación de pesos tienen un rango intrínseco bajo durante la transferencia a tareas posteriores.

Ideas clave

  • Reparametrización de bajo rango: Para una matriz densa congelada , se parametriza la actualización de adaptación como , donde , , y el rango .
  • Cero latencia de inferencia añadida: Dado que la reparametrización es lineal, las matrices de bajo rango entrenadas se pueden integrar directamente en los pesos preentrenados () en el momento del despliegue, conservando una arquitectura de inferencia idéntica y sin penalización de latencia en comparación con el fine-tuning.
  • Modelo base compartido con intercambio en caliente (Hot-Swapping): El modelo congelado de gran tamaño permanece estático en la memoria GPU; cambiar de tarea solo requiere intercambiar las matrices de bajo rango y , reduciendo drásticamente el almacenamiento de cientos de gigabytes a decenas de megabytes.
  • Adaptación selectiva de la atención: Aplicar la descomposición de rango exclusivamente a las proyecciones de autoatención (en particular, la consulta y el valor ) logra un rendimiento competitivo manteniendo congeladas las capas MLP prealimentadas (feed-forward).

Método

Para una capa de proyección densa que produce , LoRA modifica el cómputo a:

Detalles clave de implementación:

  1. Inicialización: se inicializa a partir de una distribución gaussiana aleatoria y se inicializa en cero, lo que garantiza que al inicio del entrenamiento.
  2. Factor de escala: La actualización se escala mediante , donde es un hiperparámetro constante. Al optimizar con Adam, fijar igual al rango inicial evita tener que reajustar las tasas de aprendizaje al experimentar con diferentes valores de .
  3. Fusión para despliegue: En producción, la matriz de pesos adaptada se materializa explícitamente como . Al cambiar de tarea, se recupera mediante resta () y se fusiona con los nuevos pesos del adaptador ().
  4. Capas objetivo: Aunque es aplicable a cualquier capa densa, los experimentos se centran principalmente en las proyecciones de atención del Transformer (). Aplicar LoRA con a y ofrece una eficiencia óptima en tareas posteriores.

Resultados

  • GPT-3 175B: LoRA reduce los parámetros entrenables de 175.255,8M a 4,7M ( o ) o 37,7M (), reduciendo el tamaño del checkpoint de 350GB a 35MB (una reducción de 10.000x) y la VRAM de entrenamiento de 1,2TB a 350GB. El rendimiento de entrenamiento (throughput) aumenta un (de 32,5 a 43,1 tokens/s por GPU V100).
  • Exactitud en tareas posteriores (GPT-3):
    • Exactitud de validación de forma lógica en WikiSQL: El fine-tuning completo logra un ; LoRA (37,7M) alcanza un .
    • Exactitud de validación emparejada en MultiNLI: El fine-tuning completo logra un ; LoRA (4,7M) alcanza un .
    • Resumen de diálogos en SAMSum: El fine-tuning completo obtiene 52,0 / 28,0 / 44,5 en ROUGE-1/2/L; LoRA (4,7M) alcanza 53,8 / 29,8 / 45,9.
  • RoBERTa y DeBERTa (Benchmark GLUE): En RoBERTa Large, LoRA iguala al fine-tuning ( frente a de puntuación media) utilizando 0,8M de parámetros frente a 355,0M. En DeBERTa XXL (1,5B), LoRA obtiene una media de en GLUE con 4,7M de parámetros en comparación con los del fine-tuning completo (1.500,0M de parámetros).
  • Análisis del rango intrínseco: El análisis de similitud de subespacios revela que las direcciones singulares principales de para y se solapan en gran medida ( de similitud normalizada para la dimensión 1). Además, amplifica direcciones que están presentes pero no fuertemente enfatizadas en , exhibiendo un factor de amplificación para .

Limitaciones y preguntas abiertas

  • Procesamiento por lotes multitarea (Multi-Task Batching): Cuando los pesos de bajo rango se fusionan en para eliminar la latencia de inferencia, procesar en un mismo lote entradas para múltiples tareas simultáneamente en una sola pasada hacia adelante no resulta trivial.
  • Selección heurística de capas: La práctica actual se basa en heurísticas empíricas (adaptar y ) en lugar de un marco fundamentado para determinar qué matrices adaptar entre las capas de atención y MLP.
  • Cambios extremos de dominio: Para tareas posteriores que difieren drásticamente de la distribución del preentrenamiento (como adaptar un LLM en inglés a un idioma de destino completamente distinto), la adaptación de bajo rango puede resultar insuficiente en comparación con una adaptación de mayor rango o completa.

Términos clave

Low-Rank Adaptation (LoRA)
Método de ajuste fino eficiente en parámetros que congela los pesos del modelo base y entrena matrices de descomposición de bajo rango en paralelo a las capas densas.
Intrinsic Rank
La baja dimensionalidad efectiva o el número de vectores singulares necesarios para capturar una adaptación significativa de parámetros durante la transferencia a tareas específicas.
Adapter Layers
Módulos de cuello de botella externos insertados secuencialmente en los bloques Transformer, los cuales introducen cómputo secuencial no paralelizable y latencia de inferencia.
Prefix Tuning
Estrategia de adaptación que antepone vectores entrenables continuos a los tokens de entrada o a los estados ocultos de las capas, reduciendo el contexto disponible de la secuencia.
Weight Folding / Weight Merging
La adición aritmética de matrices de bajo rango directamente en la matriz de pesos preentrenada para eliminar la sobrecarga de tiempo de ejecución durante la inferencia.
Grassmann Distance Subspace Similarity
Una métrica que mide el solapamiento del espacio generado por las columnas entre matrices ortonormales de vectores singulares de las actualizaciones de adaptación.
Feature Amplification Factor
La proporción entre la norma de Frobenius de y la proyección de sobre el subespacio singular de , que mide con qué intensidad se enfatizan las direcciones específicas de la tarea.

Preguntas

¿Por qué LoRA no introduce latencia adicional de inferencia en comparación con los adaptadores?

Dado que LoRA es lineal (), el producto de bajo rango se puede calcular explícitamente y sumar a antes del despliegue (). De este modo, la inferencia ejecuta una multiplicación de matrices estándar sin las capas de cuello de botella secuenciales que causan latencia en las arquitecturas con adaptadores.

¿A qué matrices de pesos del Transformer se debe aplicar LoRA?

Los experimentos en GPT-3 muestran que adaptar tanto los pesos de proyección de consulta () como los de valor () ofrece el mejor rendimiento para un presupuesto de parámetros fijo. Adaptar múltiples matrices de atención con un rango menor (p. ej., ) supera la estrategia de asignar todos los parámetros a un único tipo de matriz con un rango mayor.

¿Qué rango $r$ es suficiente para adaptar modelos de lenguaje grandes?

Un rango muy pequeño como , o suele ser suficiente para tareas posteriores. El análisis de similitud de subespacios revela que los vectores singulares principales aprendidos con rangos pequeños se solapan significativamente con los aprendidos con rangos mayores (como ), mientras que los rangos más altos capturan en su mayoría ruido aleatorio de optimización.

¿Cómo inicializa LoRA sus matrices de bajo rango?

La matriz se inicializa utilizando una distribución gaussiana aleatoria, mientras que la matriz se inicializa en cero. Esto asegura que al comienzo del entrenamiento, manteniendo inalterada la pasada hacia adelante del modelo preentrenado.

La explicación de esta página la escribió una IA a partir del artículo y puede contener errores. Consulte el artículo para los detalles.

Leer con traducción e IA