FP4: Nuevo formato de punto flotante optimiza eficiencia

Fuentes: 4-bit floating point FP4

El artículo explora el formato de punto flotante de 4 bits (FP4), una alternativa de baja precisión a los formatos de punto flotante tradicionales de 32 y 64 bits. Originalmente, los números de punto flotante se almacenaban en 32 bits, luego evolucionaron a 64 bits para aumentar la precisión. Sin embargo, el auge de las redes neuronales, que requieren manejar una gran cantidad de parámetros, ha impulsado la demanda de formatos de menor precisión, como FP8 y FP4, donde la eficiencia de la memoria es más importante que la precisión extrema. Esto se debe a que con más parámetros, es más importante poder almacenarlos en la memoria que tener una alta precisión en cada uno.

FP4 utiliza solo 4 bits para representar un número, lo que limita la cantidad de valores distintos que se pueden representar. Estos 4 bits se dividen entre un bit para el signo, y los bits restantes para el exponente y la mantisa. Existen varias configuraciones posibles para la distribución de estos bits (E3M0, E2M1, E1M2, E0M3), siendo E2M1 la más común y soportada por hardware de Nvidia. La fórmula general para representar un número FP4 es (-1)^s * 2^(e-b) * (1 + m/2), donde 's' es el bit de signo, 'e' es el exponente, 'm' es la mantisa y 'b' es el 'bias' (sesgo). El bias es crucial para representar exponentes positivos y negativos sin usar números con signo para el exponente.

Un ejemplo práctico es que con cuatro bits, podrías representar enteros del 0 al 15. Podrías ajustar estos valores restando un valor (bias) para representar números negativos y positivos. La principal ventaja de usar FP4 es su eficiencia en el uso de la memoria, permitiendo almacenar más parámetros en redes neuronales. El artículo proporciona una tabla completa de los 16 posibles valores que se pueden representar con el formato E2M1, mostrando la limitación de la precisión pero también la utilidad para ciertas aplicaciones.

Es importante tener en cuenta que FP4 tiene limitaciones significativas en cuanto a precisión. No es adecuado para aplicaciones que requieren alta precisión numérica. Alternativas incluyen formatos de mayor precisión como FP8 o FP16. El artículo también menciona la existencia de otros formatos de punto flotante de 4 bits y anticipa una futura publicación sobre NF4, un formato diseñado para reflejar mejor la distribución de pesos en modelos de lenguaje grandes (LLMs). La librería Python Pychop se utiliza para emular y generar tablas de valores para estos formatos de baja precisión.