Connect with us

Inteligencia artificial

LoRa, QLoRA y QA-LoRA: Adaptabilidad eficiente en grandes modelos de lenguaje a través de la factorización de matrices de baja rango

mm
LoRA : Low-Rank Adaptation of Large Language Models

Los grandes modelos de lenguaje (LLM) han creado un nicho único, ofreciendo capacidades sin precedentes en la comprensión y generación de texto similar al humano. El poder de los LLM se puede atribuir a su enorme tamaño, que a menudo cuenta con miles de millones de parámetros. Si bien este tamaño masivo impulsa su rendimiento, también genera desafíos, especialmente cuando se trata de la adaptación del modelo para tareas o dominios específicos. Los métodos convencionales de gestión de LLM, como el ajuste fino de todos los parámetros, presentan una carga computacional y financiera importante, lo que supone una barrera significativa para su adopción generalizada en aplicaciones del mundo real.

En un artículo anterior, exploramos el ajuste fino de grandes modelos de lenguaje (LLM) para adaptarlos a requisitos específicos. Analizamos varias metodologías de ajuste fino, como el ajuste fino basado en instrucciones, el ajuste fino de una sola tarea y el ajuste fino eficiente de parámetros (PEFT), cada una con su enfoque único para optimizar los LLM para tareas distintas. Central en la discusión fue la arquitectura del transformador, la columna vertebral de los LLM, y los desafíos que plantean las demandas computacionales y de memoria de manejar una gran cantidad de parámetros durante el ajuste fino.

Parámetros en LLM

https://huggingface.co/blog/hf-bitsandbytes-integration

La imagen anterior representa la escala de varios grandes modelos de lenguaje, ordenados por su número de parámetros. Notablemente: PaLM, BLOOM, etc.

A partir de este año, ha habido avances que han llevado a modelos aún más grandes. Sin embargo, ajustar estos modelos gigantescos y de código abierto en sistemas estándar es inviable sin técnicas de optimización especializadas.

Entonces, se introdujo la Adaptación de Baja Rango (LoRA) por Microsoft en este documento, con el objetivo de mitigar estos desafíos y hacer que los LLM sean más accesibles y adaptables.

La esencia de LoRA radica en su enfoque hacia la adaptación del modelo sin profundizar en las complejidades de volver a entrenar todo el modelo. A diferencia del ajuste fino tradicional, donde cada parámetro está sujeto a cambios, LoRA adopta una ruta más inteligente. Congela los pesos del modelo preentrenado e introduce matrices de descomposición de rango trainable en cada capa de la arquitectura del transformador. Este enfoque reduce drásticamente la cantidad de parámetros trainable, garantizando un proceso de adaptación más eficiente.

La Evolución de las Estrategias de Ajuste de LLM

Al reflexionar sobre el viaje del ajuste de LLM, se puede identificar varias estrategias empleadas por los practicantes a lo largo de los años. Inicialmente, el enfoque estaba en el ajuste fino de los modelos preentrenados, una estrategia que implica una alteración exhaustiva de los parámetros del modelo para adaptarse a la tarea específica en cuestión. Sin embargo, a medida que los modelos crecieron en tamaño y complejidad, también lo hicieron las demandas computacionales de este enfoque.

La siguiente estrategia que ganó tracción fue el ajuste fino de subconjuntos, una versión más restringida de su predecesor. Aquí, solo un subconjunto de los parámetros del modelo se ajusta, reduciendo la carga computacional en cierta medida. A pesar de sus méritos, el ajuste fino de subconjuntos todavía no pudo seguir el ritmo de crecimiento en el tamaño de los LLM.

A medida que los practicantes buscaron explorar vías más eficientes, surgió el ajuste fino completo como un enfoque riguroso pero gratificante.

Introducción a LoRA

El rango de una matriz nos da una idea de las dimensiones creadas por sus columnas, determinado por el número de filas o columnas únicas que tiene.

  • Matriz de rango completo: Su rango coincide con el número menor entre sus filas o columnas.
  • Matriz de baja rango: Con un rango notablemente menor que ambos su cuenta de filas y columnas, captura menos características.

Ahora, los grandes modelos capturan una comprensión amplia de su dominio, como el lenguaje en los modelos de lenguaje. Pero, ajustarlos para tareas específicas a menudo solo requiere resaltar una pequeña parte de estas comprensiones. Aquí es donde LoRA brilla. Sugiere que la matriz que muestra estos ajustes de pesos puede ser una matriz de baja rango, capturando así menos características.

LoRA limita inteligentemente el rango de esta matriz de actualización dividiéndola en dos matrices de rango más pequeñas. Así, en lugar de alterar toda la matriz de pesos, solo cambia una parte de ella, lo que hace que la tarea de ajuste fino sea más eficiente.

Aplicación de LoRA a los Transformadores

LoRA ayuda a minimizar la carga de entrenamiento en las redes neuronales centrándose en matrices de pesos específicas. Bajo la arquitectura del transformador, ciertas matrices de pesos están vinculadas con el mecanismo de autoatención, a saber, Wq, Wk, Wv y Wo, además de dos más en el módulo de la Red Neuronal de Capas Múltiples (MLP).

Arquitectura de los Transformadores

Arquitectura de los Transformadores

 

Cabezas de atención del transformador

Cabezas de atención del transformador

Explicación Matemática detrás de LoRA

Desglosemos las matemáticas detrás de LoRA:

  1. Matriz de Pesos Preentrenada W0:
    • Comienza con una matriz de pesos preentrenada W0 de dimensiones d×k. Esto significa que la matriz tiene d filas y k columnas.
  2. Descomposición de Baja Rango:
    • En lugar de actualizarectamente la matriz completa W0, que puede ser computacionalmente costoso, el método propone un enfoque de descomposición de baja rango.
    • La actualización ΔW a W0 se puede representar como el producto de dos matrices: B y A.
      • B tiene dimensiones d×r
      • A tiene dimensiones r×k
    • El punto clave aquí es que el rango r es mucho menor que ambos d y k, lo que permite una representación más computacionalmente eficiente.
  3. Entrenamiento:
    • Durante el proceso de entrenamiento, W0 permanece sin cambios. Esto se conoce como “congelar” los pesos.
    • Por otro lado, A y B son los parámetros trainable. Esto significa que, durante el entrenamiento, se realizan ajustes en las matrices A y B para mejorar el rendimiento del modelo.
  4. Multiplicación y Adición:
    • Tanto W0 como la actualización ΔW (que es el producto de B y A) se multiplican por la misma entrada (denotada como x).
    • Los resultados de estas multiplicaciones se suman.
    • Este proceso se resume en la ecuación: h=W0x+ΔWx=W0x+BAx. Aquí, h representa la salida final después de aplicar las actualizaciones a la entrada x.

En resumen, este método permite una forma más eficiente de actualizar una gran matriz de pesos representando las actualizaciones mediante una descomposición de baja rango, lo que puede ser beneficioso en términos de eficiencia computacional y uso de memoria.

LORA

LORA

Inicialización y Escalado:

Cuando se entrenan modelos, la forma en que se inicializan los parámetros puede afectar significativamente la eficiencia y efectividad del proceso de aprendizaje. En el contexto de nuestra actualización de la matriz de pesos utilizando A y B:

  1. Inicialización de las Matrices A y B:
    • Matriz A: Esta matriz se inicializa con valores gaussianos aleatorios, también conocidos como distribución normal. La razón detrás de utilizar la inicialización gaussiana es romper la simetría: diferentes neuronas en la misma capa aprenderán diferentes características cuando tengan pesos iniciales diferentes.
    • Matriz B: Esta matriz se inicializa con ceros. Al hacerlo, la actualización ΔW=BA comienza como cero al comienzo del entrenamiento. Esto garantiza que no haya un cambio abrupto en el comportamiento del modelo al principio, permitiendo que el modelo se adapte gradualmente a medida que B aprende valores apropiados durante el entrenamiento.
  2. Escalado de la Salida de ΔW:
    • Después de computar la actualización ΔW, su salida se escala por un factor de rα donde α es una constante. Al escalar, se controla la magnitud de las actualizaciones.
    • El escalado es especialmente crucial cuando el rango r cambia. Por ejemplo, si decide aumentar el rango para mayor precisión (a costa de la computación), el escalado garantiza que no necesite ajustar muchos otros hiperparámetros en el proceso. Proporciona un nivel de estabilidad al modelo.

Impacto Práctico de LoRA

LoRA ha demostrado su potencial para ajustar LLM a estilos artísticos específicos de manera eficiente por personas de la comunidad de IA. Esto se destacó en la adaptación de un modelo para imitar el estilo artístico de Greg Rutkowski.

Como se destacó en el documento con GPT-3 175B como ejemplo. Tener instancias individuales de modelos ajustados con 175B de parámetros cada uno es bastante costoso. Pero, con LoRA, los parámetros trainable disminuyen 10,000 veces, y el uso de memoria de la GPU se reduce a un tercio.

Impacto de LoRa en el ajuste fino de GPT-3

Impacto de LoRa en el ajuste fino de GPT-3

La metodología LoRA no solo representa un avance significativo hacia hacer que los LLM sean más accesibles, sino que también subraya el potencial de cerrar la brecha entre los avances teóricos y las aplicaciones prácticas en el dominio de la IA. Al aliviar los obstáculos computacionales y fomentar un proceso de adaptación del modelo más eficiente, LoRA está en posición de desempeñar un papel fundamental en la adopción y despliegue más amplio de los LLM en escenarios del mundo real.

QLoRA (Cuantizado)

Mientras que LoRA es un juego cambiador en la reducción de las necesidades de almacenamiento, todavía requiere una GPU robusta para cargar el modelo para el entrenamiento. Aquí es donde QLoRA, o LoRA Cuantizado, entra en juego, combinando LoRA con la cuantificación para un enfoque más inteligente.

Cuantización

Cuantización

Normalmente, los parámetros de peso se almacenan en un formato de 32 bits (FP32), lo que significa que cada elemento en la matriz ocupa 32 bits de espacio. Imagina si pudiéramos comprimir la misma información en solo 8 o incluso 4 bits. Esa es la idea básica detrás de QLoRA. La cuantificación se refiere al proceso de mapear valores continuos e infinitos a un conjunto más pequeño de valores finitos y discretos. En el contexto de los LLM, se refiere al proceso de convertir los pesos del modelo de tipos de datos de mayor precisión a tipos de menor precisión.

Cuantización en LLM

Cuantización en LLM

Aquí hay una explicación más simple de QLoRA:

  1. Cuantización Inicial: Primero, el LLM se cuantiza a 4 bits, reduciendo significativamente la huella de memoria.
  2. Entrenamiento LoRA: Luego, se realiza el entrenamiento LoRA, pero en la precisión estándar de 32 bits (FP32).

Ahora, es posible que se pregunte, ¿por qué volver a 32 bits para el entrenamiento después de reducirlo a 4 bits? Bueno, para entrenar de manera efectiva los adaptadores LoRA en FP32, los pesos del modelo necesitan revertir a FP32 también. Este cambio de ida y vuelta se realiza de manera inteligente y paso a paso para evitar abrumar la memoria de la GPU.

LoRA encuentra su aplicación práctica en la biblioteca de Ajuste Fino Eficiente de Parámetros (PEFT) de Hugging Face, simplificando su utilización. Para aquellos que buscan utilizar QLoRA, está disponible a través de una combinación de las bibliotecas bitsandbytes y PEFT. Además, la biblioteca Aprendizaje por Refuerzo de Transformadores (TRL) de HuggingFace facilita el ajuste fino supervisado con soporte integrado para LoRA. Juntas, estas tres bibliotecas proporcionan la herramienta esencial para ajustar un modelo preentrenado seleccionado, permitiendo la generación de descripciones de productos convincentes y coherentes cuando se proporcionan instrucciones de atributos específicas.

Después del ajuste fino de QLoRA, los pesos deben revertir a un formato de alta precisión, lo que puede llevar a una pérdida de precisión y carece de optimización para acelerar el proceso.

Una solución propuesta es agrupar la matriz de pesos en segmentos más pequeños y aplicar la cuantificación y la adaptación de baja rango a cada grupo individualmente. Un nuevo método, llamado QA-LoRA, intenta combinar los beneficios de la cuantificación y la adaptación de baja rango mientras mantiene el proceso eficiente y el modelo efectivo para las tareas deseadas.

Conclusión

En este artículo, tocamos los desafíos que plantean sus enormes tamaños de parámetros. Analizamos las prácticas de ajuste fino tradicionales y sus demandas computacionales y financieras asociadas. La esencia de LoRA radica en su capacidad para modificar modelos preentrenados sin volver a entrenarlos por completo, reduciendo así los parámetros trainable y haciendo que el proceso de adaptación sea más rentable.

También exploramos brevemente QLoRA (LoRA Cuantizado), una combinación de LoRA y Cuantificación que reduce la huella de memoria del modelo mientras mantiene la precisión esencial para el entrenamiento. Con estas técnicas avanzadas, los practicantes ahora cuentan con bibliotecas robustas que facilitan la adopción y el despliegue de LLM en una amplia gama de escenarios del mundo real.

Matrix

Matrix

Estas estrategias están diseñadas para equilibrar la adaptabilidad de los LLM para tareas específicas y garantizar que los procesos de ajuste fino y despliegue no sean excesivamente exigentes en términos de recursos computacionales y de almacenamiento.

He pasado los últimos cinco años sumergiéndome en el fascinante mundo del Aprendizaje Automático y el Aprendizaje Profundo. Mi pasión y experiencia me han llevado a contribuir a más de 50 proyectos de ingeniería de software diversos, con un enfoque particular en AI/ML. Mi curiosidad continua también me ha llevado hacia el Procesamiento de Lenguaje Natural, un campo que estoy ansioso por explorar más a fondo.