Tamaño de los Modelos LLM, Requisitos de Memoria y Cuantificación

Gábor Bíró 12 de noviembre de 2024
3 min de lectura

Los Modelos de Lenguaje Grandes (LLM), como GPT-3, LLaMA o PaLM, son redes neuronales de gran tamaño. Este tamaño se mide típicamente por el número de parámetros (p. ej., 7b, 14b, 72b, que significan 7 mil millones, 14 mil millones, 72 mil millones de parámetros). Un parámetro es básicamente un valor de peso o sesgo dentro de la red neuronal. Estos parámetros se aprenden durante el entrenamiento y, en conjunto, representan el "conocimiento" del modelo, determinando cómo procesa la información y genera resultados. Los LLM actuales tienen miles de millones, y a veces incluso cientos de miles de millones, de parámetros.

Tamaño de los Modelos LLM, Requisitos de Memoria y Cuantificación
Fuente: Elaborado por el autor

Cientos de miles de millones de parámetros se traducen en considerables requisitos de memoria:

  • Almacenamiento: Los parámetros del modelo deben almacenarse en un almacenamiento persistente, como un disco duro o SSD.
  • Carga: Para ejecutar el modelo (llevar a cabo la inferencia), los parámetros deben cargarse en la memoria de la GPU (u otro acelerador).
  • Cálculo: Durante la ejecución del modelo, la GPU necesita acceso constante a estos parámetros para realizar cálculos.

Ejemplo:

Supongamos que un modelo tiene 175 mil millones de parámetros, y cada parámetro se almacena en formato FP32 (coma flotante de 32 bits).

  • Un número FP32 ocupa 4 bytes (32 bits / 8 bits por byte).
  • 175 mil millones de parámetros * 4 bytes/parámetro = 700 mil millones de bytes = 700 GB.

Por lo tanto, ¡solo almacenar los parámetros del modelo requiere 700 GB de espacio! Cargar y ejecutar el modelo requiere al menos esta cantidad de VRAM (Video RAM) en la GPU. Por eso son necesarias las GPU de gama alta con mucha VRAM (como NVIDIA A100, H100) para ejecutar LLM a gran escala. Si, en lugar de 4 bytes, cada parámetro ocupase solo 1 byte (como con el formato INT8), el requisito de memoria en gigabytes sería más o menos igual al número de parámetros en miles de millones. Por ejemplo, un modelo de 175B parámetros que utiliza INT8 requeriría aproximadamente 175 GB de VRAM.

Cuantificación: Reducción de los Requisitos de Memoria

La cuantificación es una técnica que busca reducir el tamaño del modelo y su huella de memoria, generalmente a cambio de sacrificar una cantidad aceptable de precisión. Durante la cuantificación, los parámetros del modelo (pesos y, a veces, activaciones) se convierten a un formato numérico de menor precisión.

¿Cómo funciona la cuantificación?

  1. Formato Original: Los modelos se entrenan típicamente utilizando formatos FP32 o FP16 (coma flotante de 16 bits).
  2. Formato de Destino: Durante la cuantificación, los parámetros se convierten a formatos como INT8 (entero de 8 bits), FP8 u otros tipos de menor precisión.
  3. Mapeo: La cuantificación implica crear un mapeo entre el rango de valores en el formato original (p. ej., FP32) y el rango de valores en el formato de destino (p. ej., INT8). Este mapeo define cómo representar los valores originales utilizando el rango limitado del formato de destino y puede ser lineal o no lineal.
  4. Redondeo: Basándose en el mapeo, los valores originales se "redondean" al valor representable más cercano en el formato de destino.
  5. Pérdida de Información: Este proceso de redondeo lleva inevitablemente a cierta pérdida de información, lo que puede resultar en una disminución de la precisión del modelo. El desafío de la cuantificación reside en minimizar esta pérdida de precisión.

Ejemplo (Cuantificación INT8):

  • FP32: Un número ocupa 4 bytes.
  • INT8: Un número ocupa 1 byte.

Si cuantificamos un modelo de 175 mil millones de parámetros de FP32 a INT8, ¡el tamaño del modelo se reduce de 700 GB a 175 GB! Este es un ahorro importante, que posibilita ejecutar el modelo en GPU más pequeñas y económicas (aunque a menudo con una ligera disminución del rendimiento).

Métodos de Cuantificación:

  • Cuantificación Post-Entrenamiento (PTQ): La cuantificación se realiza después de que el modelo ha sido completamente entrenado. Este es el método más simple, pero puede conducir a una mayor pérdida de precisión.
  • Entrenamiento Consciente de la Cuantificación (QAT): Las operaciones de cuantificación se simulan o se incorporan al proceso de entrenamiento en sí. El modelo aprende a compensar la pérdida de precisión causada por la cuantificación. Esto generalmente produce una mejor precisión que PTQ, pero requiere más tiempo y recursos computacionales para el entrenamiento.

Resumen

La cuantificación es una técnica fundamental para ejecutar LLM a gran escala de forma eficiente. Permite una reducción considerable del tamaño del modelo y de los requisitos de memoria, haciendo que estos modelos potentes sean accesibles a un público más amplio y a más hardware. Sin embargo, la cuantificación implica un equilibrio con la precisión, por lo que es crucial seleccionar el método de cuantificación y el formato numérico adecuados para la tarea específica. El soporte de hardware (por ejemplo, operaciones INT8 eficientes en las GPU) es clave para ejecutar modelos cuantificados de forma rápida y eficaz. La evolución de los formatos numéricos (FP32, FP16, BF16, INT8, FP8) y su soporte de hardware está directamente relacionada con la cuantificación, lo que permite colectivamente la creación y el despliegue de LLM cada vez más grandes y complejos.

Gábor Bíró 12 de noviembre de 2024