Inteligencia artificial
LoRA, QLoRA y QA-LoRA: Adaptabilidad Eficiente en Modelos de Lenguaje Grande a través de la Factorización de Matrices de Bajo Rango

Los Modelos de Lenguaje Grande (LLM) han creado un nicho único, ofreciendo capacidades sin precedentes para entender y generar texto similar al humano. El poder de los LLM se puede rastrear hasta su enorme tamaño, que a menudo tiene billones de parámetros. Mientras que esta escala grande alimenta su rendimiento, también genera desafíos, especialmente cuando se trata de adaptar el 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 pesada, 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 los Modelos de Lenguaje Grande (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 Tarea y el Ajuste Fino Eficiente de Parámetros (PEFT), cada una con su enfoque único para optimizar los LLM para tareas distintas. Central a 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.
La imagen anterior representa la escala de varios modelos de lenguaje grande, ordenados por su número de parámetros. Notablemente: PaLM, BLOOM, etc.
Este año, ha habido avances que han llevado a modelos aún más grandes. Sin embargo, ajustar estos modelos gigantes y de código abierto en sistemas estándar es inviable sin técnicas de optimización especializadas.
Entonces, entra en escena la Adaptación de Bajo Rango (LoRA) que fue introducida 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, asegurando 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 completa 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ó popularidad 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 mantener el ritmo de crecimiento en el tamaño de los LLM.
A medida que los practicantes se aventuraron a explorar vías más eficientes, el ajuste fino completo emergió como un enfoque riguroso pero gratificante.
Introducción a LoRA
El rango de una matriz nos da una visión 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 Bajo Rango: Con un rango notablemente menor que ambos su cuenta de filas y columnas, captura menos características.
Ahora, los grandes modelos captan una comprensión amplia de su dominio, como el lenguaje en los modelos de lenguaje. Pero, ajustarlos para tareas específicas a menudo solo necesita 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 bajo 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, haciendo que la tarea de ajuste fino sea más eficiente.
Aplicando 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 Perceptrón Multicapa (MLP).
Explicación Matemática detrás de LoRA
Desglosemos las matemáticas detrás de LoRA:
- Matriz de Pesos Preentrenada :
- Comienza con una matriz de pesos preentrenada de dimensiones . Esto significa que la matriz tiene filas y columnas.
- Descomposición de Bajo Rango:
- En lugar de actualizar directamente la matriz completa , que puede ser computacionalmente costoso, el método propone un enfoque de descomposición de bajo rango.
- La actualización a puede ser representada como el producto de dos matrices: y .
- tiene dimensiones
- tiene dimensiones
- El punto clave aquí es que el rango es mucho menor que ambos y , lo que permite una representación más computacionalmente eficiente.
- Entrenamiento:
- Durante el proceso de entrenamiento, permanece sin cambios. Esto se refiere a “congelar” los pesos.
- Por otro lado, y son los parámetros trainable. Esto significa que, durante el entrenamiento, se realizan ajustes a las matrices y para mejorar el rendimiento del modelo.
- Multiplicación y Adición:
- Ambas y la actualización (que es el producto de y ) se multiplican por la misma entrada (denotada como ).
- Las salidas de estas multiplicaciones se suman.
- Este proceso se resume en la ecuación: Aquí, representa la salida final después de aplicar las actualizaciones a la entrada .
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 bajo rango, lo que puede ser beneficioso en términos de eficiencia computacional y uso de memoria.
Inicialización y Escalado:
Cuando se entrenan modelos, cómo 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 y :
- Inicialización de las Matrices y :
- Matriz : Esta matriz se inicializa con valores Gaussianos aleatorios, también conocidos como distribución normal. La razón detrás del uso de 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 : Esta matriz se inicializa con ceros. Al hacerlo, la actualización comienza como cero al comienzo del entrenamiento. Esto asegura que no haya un cambio abrupto en el comportamiento del modelo al principio, permitiendo que el modelo se adapte gradualmente a medida que aprende valores adecuados durante el entrenamiento.
- Escalado de la Salida de :
- Después de computar la actualización , su salida se escala por un factor de donde es una constante. Al escalar, se controla la magnitud de las actualizaciones.
- El escalado es especialmente crucial cuando el rango cambia. Por ejemplo, si decide aumentar el rango para mayor precisión (a costa de la computación), el escalado asegura 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 los LLM a estilos artísticos específicos de manera eficiente por parte 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.
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 de modelos 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 cambiadro en la reducción de las necesidades de almacenamiento, todavía requiere una GPU potente para cargar el modelo para el entrenamiento. Aquí es donde QLoRA, o LoRA Cuantizado, entra en escena, combinando LoRA con la Cuantización para un enfoque más inteligente.
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 central detrás de QLoRA. La cuantizació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.
Aquí está una explicación más simple de QLoRA:
- Cuantización Inicial: Primero, el Modelo de Lenguaje Grande (LLM) se cuantiza a 4 bits, reduciendo significativamente la huella de memoria.
- 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 reducir a 4 bits? Bueno, para entrenar de manera efectiva los adaptadores LoRA en FP32, los pesos del modelo también deben revertir a FP32. 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 de Aprendizaje de 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 persuasivas 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 cuantización y la adaptación de bajo rango a cada grupo individualmente. Un nuevo método, llamado QA-LoRA, intenta combinar los beneficios de la cuantización y la adaptación de bajo 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 dimensiones de parámetros. Exploramos 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 Cuantización que reduce la huella de memoria del modelo mientras retiene 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 despliegue más sencillo de los LLM en una amplia gama de escenarios del mundo real.
Estas estrategias están diseñadas para equilibrar la capacidad de hacer que los LLM sean adaptables para tareas específicas y asegurar que los procesos de ajuste fino y despliegue no sean demasiado exigentes en términos de cálculo y recursos de almacenamiento.




















