formato de coma flotante bfloat16


El formato de punto flotante bfloat16 ( Brain Floating Point ) [1] [2] es un formato de número de computadora que ocupa 16 bits en la memoria de la computadora ; representa un amplio rango dinámico de valores numéricos mediante el uso de un punto de base flotante . Este formato es una versión truncada (16 bits) del formato de punto flotante de precisión simple IEEE 754 de 32 bits (binary32) con la intención de acelerar el aprendizaje automático y la computación de sensores cercanos . [3] Conserva el rango dinámico aproximado de los números de coma flotante de 32 bits al retener 8bits de exponente , pero solo admite una precisión de 8 bits en lugar del significado de 24 bits del formato binary32. Más que los números de coma flotante de 32 bits de precisión simple, los números bfloat16 no son adecuados para cálculos de enteros, pero este no es su uso previsto. Bfloat16 se utiliza para reducir los requisitos de almacenamiento y aumentar la velocidad de cálculo de los algoritmos de aprendizaje automático. [4]

El formato bfloat16 fue desarrollado por Google Brain , un grupo de investigación de inteligencia artificial de Google. [5] El formato bfloat16 se utiliza en procesadores Intel AI , como Nervana NNP-L1000, procesadores Xeon ( extensiones AVX-512 BF16) y FPGA de Intel , [6] [7] [8] TPU de Google Cloud , [9] [10] [11] y TensorFlow . [11] [12] ARMv8.6-A , [13] AMD ROCm , [14] y CUDA [15]también es compatible con el formato bfloat16. En estas plataformas, bfloat16 también puede usarse en aritmética de precisión mixta , donde los números bfloat16 pueden operarse y expandirse a tipos de datos más amplios.

El formato bfloat16, al ser un flotante truncado de 32 bits de precisión simple IEEE 754 , permite una conversión rápida hacia y desde un flotante de 32 bits de precisión simple IEEE 754; en la conversión al formato bfloat16, los bits del exponente se conservan mientras que el campo significativo se puede reducir mediante el truncamiento (por lo tanto, corresponde al redondeo hacia 0 ), ignorando el caso especial NaN . La conservación de los bits del exponente mantiene el rango del flotante de 32 bits de ≈ 10 −38 a ≈ 3 × 10 38 . [dieciséis]

El exponente binario de coma flotante bfloat16 se codifica utilizando una representación binaria de compensación , siendo la compensación cero 127; también conocido como sesgo de exponente en el estándar IEEE 754.

Por lo tanto, para obtener el verdadero exponente definido por la representación binaria de compensación, la compensación de 127 debe restarse del valor del campo del exponente.

Los valores mínimo y máximo del campo exponente (00 H y FF H ) se interpretan especialmente, como en los formatos estándar IEEE 754.