Los Formatos Numéricos Más Comunes para LLMs

Gábor Bíró 22 de enero de 2025
4 min de lectura

El funcionamiento eficiente de los Modelos de Lenguaje Grandes (LLM) depende en gran medida del almacenamiento y procesamiento adecuado de sus pesos. El formato numérico elegido impacta directamente en los requisitos de memoria, la velocidad computacional y la precisión del modelo. Con el tiempo, FP32 ha sido gradualmente complementado o reemplazado por FP16 y BF16 para el entrenamiento, mientras que INT8 y formatos cuantificados de bits incluso inferiores son cada vez más comunes para optimizar la inferencia.

Los Formatos Numéricos Más Comunes para LLMs
Fuente: Elaborado por el autor

La inteligencia artificial, especialmente el aprendizaje profundo, implica una gran cantidad de computación. Los formatos numéricos utilizados en estos cálculos (es decir, cómo los números son almacenados y manipulados por la computadora) influyen directamente en:

  • Velocidad: Los formatos de menor precisión (menos bits) permiten cálculos más rápidos.
  • Huella de Memoria: Menos bits requieren menos memoria, lo cual es crucial para cargar y ejecutar modelos grandes.
  • Consumo de Energía: Procesar menos bits generalmente requiere menos energía.
  • Precisión: Los formatos de mayor precisión (más bits) producen resultados más precisos, pero a menudo a costa de velocidad, memoria y energía.

El objetivo es encontrar el equilibrio óptimo entre precisión y eficiencia. Para los LLM, los formatos numéricos más comunes para almacenar pesos son punto flotante de media precisión (FP16) y bfloat16 (BF16). Para la optimización de la inferencia a través de la cuantificación, se utilizan cada vez más INT8 e incluso formatos de bits inferiores.

Formatos Numéricos Clave en IA:

  1. FP32 (Punto Flotante de 32 bits)
    • Históricamente, este era el formato predeterminado en el aprendizaje profundo.
    • Ofrece alta precisión pero exige una memoria y recursos computacionales significativos.
    • Raramente se utiliza directamente para almacenar pesos en los LLM grandes modernos.
  2. FP16 (Punto Flotante de 16 bits / Media Precisión)
    • Introducido por Nvidia con la arquitectura Pascal (2016).
    • Soportado por Nvidia Tensor Cores y otras GPUs, permitiendo cálculos más rápidos.
    • Reduce el uso de memoria y los requisitos computacionales en comparación con FP32. La reducción en la precisión es a menudo aceptable para entrenar y ejecutar modelos de aprendizaje profundo.
    • Suficientemente preciso para muchos modelos grandes, pero en algunos casos (por ejemplo, gradientes muy pequeños), la pérdida de precisión puede causar problemas como el subdesbordamiento.
  3. BF16 (bfloat16 / Punto Flotante Cerebral)
    • También de 16 bits como FP16, pero con una estructura interna diferente: más bits para el exponente y menos para la mantisa (parte fraccionaria).
    • Esto le da a BF16 un rango dinámico (la diferencia entre los números representables más grande y más pequeño) más cercano a FP32 que FP16.
    • Esto mitiga los problemas de subdesbordamiento y permite que BF16 se utilice eficazmente durante el entrenamiento con menos pérdida de precisión en comparación con FP16 en ciertos escenarios.
    • Nvidia introdujo el soporte para BF16 con la arquitectura Ampere (2020).
  4. FP8 (Punto Flotante de 8 bits)
    • Debutó en las arquitecturas Hopper (H100) y Blackwell (B100, B200, GB200) de Nvidia.
    • Viene en dos variantes: E4M3 (4 bits de exponente, 3 bits de mantisa) y E5M2 (5 bits de exponente, 2 bits de mantisa).
    • E4M3 proporciona mayor precisión, mientras que E5M2 ofrece un rango dinámico más amplio.
    • Acelera significativamente tanto el entrenamiento como la inferencia, a menudo con una pérdida de precisión aceptable en comparación con FP16.
  5. INT8 (Entero de 8 bits, para Modelos Cuantificados)
    • Altamente eficiente en términos de memoria y computación, potencialmente hasta 4 veces más rápido que las operaciones FP16.
    • Incurre en cierta pérdida de precisión, pero puede gestionarse eficazmente mediante técnicas de cuantificación cuidadosas.
    • Común en dispositivos periféricos y plataformas móviles, y soportado por aceleradores de IA dedicados (por ejemplo, Nvidia TensorRT, Qualcomm AI Engine).
    • Menos utilizado durante el entrenamiento, ya que la pérdida de precisión puede ser más problemática para los cálculos de gradiente.
    • Es una práctica común cuantificar modelos originalmente entrenados en FP32 o FP16, convirtiendo pesos y activaciones a INT8 para la inferencia.
  6. INT4 / INT2 (Cuantificados, Formatos de Bajo Bit)
    • Cada vez más comunes en modelos y optimizaciones recientes (por ejemplo, para modelos Llama, GPT-4).
    • Reduce drásticamente el uso de memoria y acelera la inferencia.
    • Utilizado principalmente para la inferencia; generalmente no adecuado para el entrenamiento.

La Importancia del Soporte de Hardware para Formatos Numéricos

El soporte de hardware para formatos numéricos es crítico para las GPUs (y otros aceleradores de IA) porque determina fundamentalmente la eficiencia computacional.

  1. Unidades de Ejecución Optimizadas: Cuando una GPU soporta un formato en hardware (por ejemplo, FP16, BF16, FP8), significa que circuitos dedicados (unidades de ejecución, como unidades de multiplicación y acumulación) en el chip están diseñados específicamente para ese formato. Estos circuitos realizan operaciones directamente en hardware, lo cual es órdenes de magnitud más rápido que la emulación por software.
  2. Movimiento de Datos Eficiente: El soporte de hardware optimiza no solo la computación sino también el movimiento de datos. El sistema de memoria de la GPU (registros, cachés, memoria global) y los buses de datos están alineados con los formatos soportados. Esto significa que se necesitan mover menos bits, reduciendo los requisitos de ancho de banda de memoria, la latencia y el consumo de energía.
  3. Maximización del Paralelismo: Las GPUs derivan su potencia del paralelismo masivo. El soporte de hardware permite que se realicen más operaciones simultáneamente sobre datos en el formato soportado. Por ejemplo, si una GPU soporta operaciones de 16 bits en hardware, podría realizar dos operaciones de 16 bits en paralelo en lugar de una operación de 32 bits, duplicando potencialmente el rendimiento para esas operaciones.
  4. Eficiencia Energética: Los circuitos dedicados no solo son más rápidos sino también más eficientes energéticamente. Se necesitan conmutar menos transistores para realizar la misma operación en comparación con hardware menos especializado o emulación por software, lo que resulta en un menor consumo de energía y generación de calor.

Resumen

Para el entrenamiento, FP16 o BF16 son predominantes. Para la inferencia, muchos modelos ahora usan cuantificación INT8 o incluso INT4 para una ejecución más rápida y una menor huella de memoria. La evolución de los formatos numéricos en IA es un proceso de optimización continuo. Los formatos de menor precisión permiten la construcción de sistemas de IA más rápidos, eficientes y potencialmente más baratos, pero las compensaciones entre precisión, rango dinámico y exactitud deben ser cuidadosamente consideradas. Las arquitecturas de hardware más nuevas (como Ampere, Ada Lovelace, Hopper, Blackwell) soportan un número creciente de formatos numéricos eficientes, acelerando aún más el desarrollo de la IA. En el futuro, podemos esperar la aparición de formatos numéricos aún más especializados adaptados a las cargas de trabajo de IA.

Gábor Bíró 22 de enero de 2025