Visualizador de patrones de bits FP16 y bfloat16
Visualiza los patrones de bits de coma flotante de media precisión (FP16, IEEE 754 binary16) y bfloat16. Convierte de decimal a bits y viceversa, con el signo, exponente y mantisa resaltados en colores. Útil para aprender sobre cuantización de ML y aceleración de inferencia.
Estructura de FP16 frente a bfloat16
Ambos formatos suman 16 bits en total, pero reparten esos bits entre exponente y mantisa de forma muy distinta, dando a cada uno un rango representable y una precisión muy diferentes.
| Elemento | FP16 (IEEE 754 media precisión) | bfloat16 |
|---|---|---|
| Bits totales | 16 | 16 |
| Bits de exponente | 5 | 8 |
| Bits de mantisa | 10 | 7 |
| Rango representable | Aproximadamente ±6.1×10⁻⁵ a ±65504 (rango más estrecho, pero más bits de mantisa para precisión) | Aproximadamente ±1.2×10⁻³⁸ a ±3.4×10³⁸ (mismo rango amplio que float32, pero menor precisión) |
| Uso principal | Procesamiento de imágenes, gráficos e inferencia eficiente en memoria (entrenamiento en media precisión) | Entrenamiento de deep learning (TPU y GPU modernas) — sin preocuparse por el desbordamiento del exponente al convertir desde float32 |
bfloat16 comparte el ancho de exponente (8 bits) y el sesgo (127) de float32, lo que significa que puede obtenerse de un valor float32 simplemente truncando la mantisa — un atajo práctico de implementación.
Ver cómo se disponen los bits en FP16 y bfloat16
Aunque ambos ocupan dieciséis bits, FP16, es decir IEEE 754 binary16, y bfloat16 reparten esos bits de maneras bien distintas. Esta herramienta convierte entre valores decimales y patrones de bits y colorea por separado el signo, el exponente y la mantisa, de modo que la diferencia pueda verse y no solo leerse.
**La clave está en el reparto. FP16 da cinco bits al exponente y diez a la mantisa, mientras que bfloat16 da ocho al exponente y siete a la mantisa.** Ocho bits de exponente es exactamente lo que usa la precisión simple, y de ahí se siguen dos propiedades. La primera es que **bfloat16 abarca el mismo intervalo de valores que FP32**, y la segunda es que **convertir desde FP32 se reduce a truncar a los dieciséis bits superiores.** Por eso el aprendizaje automático prefiere bfloat16: hay mucho menos riesgo de que un valor se salga del intervalo y arruine un entrenamiento. El precio es una mantisa de solo siete bits, de modo que **la precisión resulta más basta que la de FP16.** Elija FP16 donde importe la precisión y bfloat16 donde importe el intervalo.
Cómo se usa
- Elija el sentido de la conversión De decimal a bits y de bits a decimal están ambos disponibles.
- Introduzca un valor Sirven por igual un número decimal o una cadena de unos y ceros.
- Lea los bits coloreados **El signo, el exponente y la mantisa se muestran cada uno con su propio color.**
- Enfrente FP16 con bfloat16 **Representar el mismo valor en ambos formatos muestra exactamente dónde se separan.**
Consejos para aprovecharla mejor
- Incluso para el mismo valor, como 0.1, FP16 y bfloat16 lo redondean de forma muy distinta. Cambia de formato y compara los patrones de bits de la mantisa.
- Como bfloat16 comparte el ancho de exponente y el sesgo de float32, resiste el desbordamiento incluso con valores grandes por encima de 65504. FP16, en cambio, se desborda a infinito en cuanto se supera 65504.
- Convertir "70000" a FP16 se desborda a infinito, mientras que bfloat16 lo representa bien (con precisión reducida).
- Al cuantizar modelos en frameworks como PyTorch o TensorFlow, bfloat16 se convierte fácilmente desde float32, mientras que el rango más estrecho de FP16 a veces requiere un escalado previo.
- Para convertir bits de vuelta a decimal, introduce un valor hexadecimal de 4 dígitos con prefijo `0x`, o un valor binario de 16 dígitos (el prefijo `0b` es opcional).
Cuándo resulta útil
Entender qué cuesta la cuantización
**Puede establecer en concreto hasta dónde se redondea un valor al bajar un modelo a dieciséis bits.**
Decidir entre los formatos
Le da el material para sopesar si su caso necesita intervalo o precisión.
Hallar dónde empieza el desbordamiento
**Puede probar, con valores reales, qué ocurre en cuanto se rebasa el mayor número representable en FP16.**
Aprender cómo funciona la coma flotante
Puede seguir, bit a bit, cómo un exponente y una mantisa se combinan para expresar un solo número.
Términos de la coma flotante
- Bit de signo
- El único bit más alto, que da el signo: 0 para positivo y 1 para negativo.
- Exponente
- La parte que expresa la magnitud del valor. **FP16 le asigna cinco bits y bfloat16 ocho.**
- Mantisa
- La parte que corresponde a las cifras significativas. **FP16 tiene diez bits y bfloat16 siete, y esa brecha es justamente la diferencia de precisión.**
- Bfloat16
- **Un formato de dieciséis bits que mantiene el exponente en los ocho bits de FP32.** Reduce a la mitad el almacenamiento sin sacrificar el intervalo.
- Número subnormal
- La representación empleada cuando el exponente está en su mínimo, que permite valores extremadamente próximos a cero.
- Cuantización
- La práctica de expresar los pesos de un modelo con menos bits. **Bajan el almacenamiento y el cómputo, y con ellos la precisión.**
Preguntas frecuentes
A propósito — Por qué el machine learning quería una representación numérica "menos precisa"
Alrededor de 2018, Google diseñó un nuevo formato de coma flotante de 16 bits llamado bfloat16 para sus Unidades de Procesamiento Tensorial (TPU). FP16 (media precisión IEEE 754) ya existía y se usaba en procesamiento de imágenes y gráficos, pero sus escasos 5 bits de exponente le daban un rango representable estrecho, poco adecuado para los gradientes que se desvanecen o explotan durante el entrenamiento de deep learning.
La idea de diseño de bfloat16 es sencilla: sacrificar precisión en la mantisa, pero mantener el exponente exactamente tan ancho como los 8 bits de float32, para poder manejar con seguridad los valores extremadamente grandes y pequeños que surgen durante el entrenamiento. El nombre "Brain Floating Point" proviene de Google Brain, el equipo de investigación de machine learning que lo creó.
En la informática convencional, reducir la precisión de coma flotante se ha considerado durante mucho tiempo un caldo de cultivo de errores. Pero los modelos de deep learning tienen una propiedad inusual: un error numérico modesto rara vez afecta mucho la precisión final de las predicciones. Aprovechar esa propiedad de "algo impreciso pero que funciona en conjunto" — y reducir a la mitad el coste de memoria y cómputo con un formato de 16 bits — representa una optimización propia del machine learning, bastante alejada de la sabiduría tradicional de la informática.