Recursos/Entrenamiento de modelos/Qué ocurre durante el entrenamiento

Método

QLoRA (LoRA de 4 bits)

QLoRA entrena un adaptador LoRA ordinario sobre un modelo base almacenado en 4 bits en lugar de 16. La memoria de entrenamiento se reduce a aproximadamente un tercio, por lo que la misma máquina puede realizar el ajuste fino de un modelo unas tres veces mayor, a costa de cierta velocidad.

Capítulo 65 min de lectura5 referencias

Qué es

QLoRA, abreviatura de LoRA cuantizado, combina dos ideas. La cuantización almacena cada número en menos bits. LoRA congela el modelo base y entrena un pequeño adaptador junto a él. Dado que la base está congelada, nunca necesita gradientes ni el estado del optimizador, por lo que puede almacenarse de forma compacta; solo el adaptador debe mantenerse en una precisión adecuada para el aprendizaje. QLoRA mantiene la base congelada en 4 bits, una cuarta parte de los 16 habituales, y entrena el mismo adaptador LoRA por encima en 16 bits.

Fue introducido por Dettmers et al. en 2023. Su artículo realizó el ajuste fino de un modelo de 65.000 millones de parámetros en una única GPU de 48 GB, donde el ajuste fino regular de 16 bits habría necesitado más de 780 GB, al tiempo que conservaba el rendimiento en las tareas del ajuste fino de 16 bits.

BASE CONGELADA · 4 BITSL1L2L3L4L5L6L7L8desempaquetada a 16 bitspara esta capa, luego descartadaadaptador · 16 bitsMEMORIA PARA ENTRENAR~27 GB libres en un portátil de 36 GB8B~19 GB~9 GB14B~33 GB~13 GB27–32B~60–70 GB~22–26 GBLoRA · base de 16 bitsQLoRA · base de 4 bits
Parte superior: la base congelada se almacena en 4 bits y cada capa se desempaqueta a 16 bits solo mientras se calcula; el pequeño adaptador LoRA junto a cada capa se entrena en 16 bits. Parte inferior: memoria aproximada para entrenar, frente a los aproximadamente 27 GB que tiene libres un portátil de 36 GB después del sistema operativo. Cifras ilustrativas basadas en una regla general común.

Cómo funciona

Un peso de 16 bits ocupa 2 bytes; uno de 4 bits ocupa medio byte. Comprimir un modelo entrenado de forma tan extrema sin arruinarlo se basa en tres ingredientes del artículo:

  • NormalFloat de 4 bits (NF4). Los pesos entrenados siguen aproximadamente una curva de campana centrada en cero. NF4 coloca sus 16 valores posibles para que coincidan con esa forma, de modo que más de ellos caigan donde se encuentra la mayoría de los pesos. En el artículo, superó a los enteros de 4 bits y a los flotantes de 4 bits ordinarios.
  • Doble cuantización. Los pesos se cuantizan en pequeños bloques, cada uno con su propia constante de escala, y esas constantes se suman. QLoRA también cuantiza las constantes, reduciendo su coste de aproximadamente 0,5 a unos 0,13 bits por peso: un ahorro de unos 3 GB en un modelo de 65B.
  • Optimizadores paginados. Cuando un ejemplo largo provoca un pico repentino de memoria, el estado del optimizador se traslada a la memoria ordinaria de la CPU por un momento en lugar de que la ejecución se bloquee.

Durante las pasadas hacia adelante y hacia atrás, los pesos de 4 bits de cada capa se descomprimen (descuantizan) a 16 bits, se utilizan para la aritmética de esa capa y luego se descartan. Los gradientes fluyen a través de la base congelada hacia el adaptador, que es la única parte que cambia. En cualquier momento, la memoria contiene todo el modelo en 4 bits más el equivalente a una capa de pesos de 16 bits.

Por qué la base se reduce a aproximadamente una cuarta parte
bytes per weight of the frozen base
  16-bit (bf16)                              2 bytes
  4-bit NF4 + double-quantised constants  ≈ 0.52 bytes   (≈ 4.13 bits)

an 8B model, frozen base only
  16-bit   8 × 10⁹ × 2 bytes      ≈ 16 GB
  4-bit    8 × 10⁹ × 0.52 bytes   ≈  4.1 GB
Un modelo de 8B en una GPU de 16 GB (ilustrativo)
  1. LoRA en una base de 16 bits: aproximadamente 16 GB solo de pesos congelados. Con el adaptador, el estado de su optimizador y las activaciones, una regla general común da como resultado unos 19 GB. No cabe.
  2. QLoRA: la base se reduce a unos 4–5 GB. Algunas partes, como las capas de normalización y, a menudo, las capas de incrustación y salida, suelen mantenerse en 16 bits. Con el adaptador y la memoria de trabajo, el total es de unos 9 GB, lo que cabe con margen de sobra.
  3. El adaptador es exactamente igual de grande que un adaptador LoRA del mismo rango: decenas de MB.
  4. La contrapartida: cada paso es algo más lento, ya que cada capa se descomprime sobre la marcha.
ModeloLoRA (base de 16 bits)QLoRA (base de 4 bits)
8B~19 GB~9 GB
14B~33 GB~13 GB
27–32B~60–70 GB~22–26 GB

Estos son los totales para entrenar, incluida la memoria de trabajo, razón por la cual se sitúan por encima de los 4–5 GB que la página de ajuste fino completo indica para la base de 4 bits de un modelo de 7B antes de las activaciones. Un portátil de 36 GB con memoria compartida, con unos 27 GB libres una vez que el sistema operativo toma su parte, puede entrenar un modelo de 27–32B con QLoRA, frente a unos 10B con el LoRA estándar.

Cuál es su coste y cuándo utilizarlo

  • Velocidad. Descomprimir cada capa en cada paso añade trabajo, por lo que el entrenamiento es algo más lento que con LoRA en el mismo modelo.
  • Calidad. Los resultados son muy similares a los de LoRA. El artículo igualó el ajuste fino de 16 bits en todos sus puntos de referencia; aun así, pueden aparecer pequeñas diferencias en su propia evaluación, por lo que le recomendamos comparar con una ejecución de evaluación en lugar de darlo por sentado.
  • El resultado. Sigue siendo un adaptador. Cárguelo en el modelo base normal de 16 bits o en su copia de 4 bits; el tamaño del adaptador en sí no cambia.
  • Cuándo utilizarlo. Utilice QLoRA cuando el modelo que desea no encaje con LoRA. Si encaja, el LoRA estándar es más rápido para obtener el mismo resultado.

La configuración

Cuantización (QLoRA)Típico Desactivado si el modelo cabe con LoRA; activado si no cabe#

Indica si la base congelada se carga en 4 bits. Desactivado, entrena un adaptador LoRA normal sobre una base de 16 bits: es más rápido por paso, pero requiere aproximadamente el triple de memoria. Activado, entrena QLoRA, la opción indicada cuando el modelo que desea no cabría de otra manera. Solo se aplica a los adaptadores: un ajuste fino completo modifica todos los pesos, por lo que cada peso debe mantenerse en una precisión entrenable.

Precisión de cálculoTípico bf16 cuando la GPU lo admite#

El formato numérico en el que se descomprimen los pesos de 4 bits para la aritmética de cada capa, y el formato en el que se entrena el adaptador. bf16 (bfloat16) mantiene el rango de los números de coma flotante de 32 bits en 16 bits, por lo que los valores rara vez se desbordan; las GPU de NVIDIA lo admiten a partir de la generación Ampere. Las GPU más antiguas, como la T4, suelen realizar los cálculos en fp16, que tiene un rango menor.

Errores comunes

  • Elegir QLoRA cuando el modelo ya cabe con LoRA. Solo añade tiempo de entrenamiento.
  • Esperar un archivo de resultado más pequeño. El adaptador tiene el mismo tamaño que un adaptador LoRA; solo se reduce la memoria de entrenamiento.
  • Intentar utilizar QLoRA para hacer que encaje un ajuste fino completo. Solo se aplica a los adaptadores.
  • Partir de un modelo que se publicó ya comprimido (FP8, MXFP4). QLoRA cuantiza por sí mismo un modelo de precisión completa, por lo que parte de la versión BF16.
  • Cargar el adaptador en un modelo diferente, o en una versión diferente del mismo, a aquel en el que fue entrenado.

Referencias y lecturas adicionales

Las fuentes externas se abren en una pestaña nueva.

  1. 01QLoRA: Efficient Finetuning of Quantized LLMsDettmers et al., 2023 · arXiv · arxiv.orgEl artículo original: NF4, doble cuantización, optimizadores paginados y el resultado de 65B en una sola GPU.
  2. 02Making LLMs even more accessible with bitsandbytes, 4-bit quantization and QLoRAHugging Face blog, 2023 · huggingface.coUna guía clara y práctica sobre la carga en 4 bits y el entrenamiento con QLoRA.
  3. 03BitsandbytesHugging Face Transformers docs · huggingface.coLas opciones de carga en 4 bits: NF4, cuantización doble y el tipo de datos de cálculo.
  4. 04QuantizationHugging Face PEFT docs · huggingface.co
  5. 05LLM.int8(): 8-bit Matrix Multiplication for Transformers at ScaleDettmers et al., 2022 · arXiv · arxiv.orgEl trabajo previo en 8 bits del cual surgió la biblioteca de cuantización de QLoRA.

Convierta semanas de trabajo experto en minutos

Vea cómo Scalata se adapta a su equipo, a sus datos y a sus Controles.

Contactar con ventas