El análisis y la predicción son fundamentales para la TI actual a medida que las organizaciones se embarcan en la transformación digital, con casos de uso que van desde el reconocimiento de voz y el análisis de patrones en la ciencia, hasta el uso en detección de fraude y seguridad, hasta AIOps en TI y almacenamiento.
A medida que la inteligencia artificial y los métodos predictivos (aprendizaje automático, aprendizaje profundo, procesamiento neuronal, etc.) se vuelven más frecuentes, se han desarrollado formas de optimizar estas operaciones.
La clave entre ellas es la aparición de nuevas formas de tratar con grandes números, y bfloat16, desarrollado originalmente por Google, es la más destacada entre ellas.
En este artículo, analizamos qué es bfloat16, el impacto que tendrá en la memoria y el almacenamiento de back-end, y qué fabricantes de hardware lo admiten.
¿Qué es bfloat16?
Bfloat16, abreviatura de Brain Float 16, es una forma de representar números de coma flotante en operaciones informáticas. Los números de coma flotante son una forma en que las computadoras pueden manejar números muy grandes (piense en millones, billones, billones, etc.) o muy pequeños (piense en muchos ceros después de los puntos decimales) mientras usa el mismo esquema.
En los esquemas de coma flotante, hay un número determinado de bits binarios. Un bit indica si el número es positivo o negativo, algunos de los bits indican el número en sí y el elemento de coma flotante, el exponente, es una cantidad de bits que indican dónde debe estar el punto decimal.
Bfloat16, como sugiere su nombre, utiliza un formato de 16 bits para hacer todo esto. Al hacerlo, reduce a la mitad el peso en bits del estándar existente más predominante, IEEE 754, que es de 32 bits.
Pero bfloat16 usa un exponente que tiene el mismo tamaño que el de IEEE 754, lo que le permite representar el mismo rango de tamaño de números, pero con menos precisión.
¿Para qué sirve bfloat16?
Bfloat16 fue desarrollado por Google (la B representa el proyecto Brain de la empresa) específicamente para sus unidades de procesamiento de tensor (TPU) utilizadas para el aprendizaje automático. La clave aquí es que para las operaciones de aprendizaje automático no necesita los niveles de precisión en términos de potencias binarias que podrían requerir otros cálculos. Pero usted quiere velocidad de operación, y eso es a lo que apunta bfloat16.
¿Cómo afectará bfloat16 al almacenamiento?
Los beneficios clave de bfloat16 son que reduce los requisitos de almacenamiento durante el procesamiento y acelera los cálculos individuales durante las operaciones de aprendizaje automático.
Bfloat16 ocupa la mitad de la memoria de las operaciones equivalentes que usan números de 32 bits IEEE 754, lo que significa que se puede almacenar más en la memoria y tomar menos tiempo para entrar y salir de la memoria. Eso significa que se pueden usar modelos y conjuntos de datos más grandes. Además, bfloat16 tarda menos en cargarse en la memoria desde el almacenamiento masivo.
El soporte de hardware para bfloat16 es algo que se integra en los procesadores y unidades de procesamiento, por lo que se adaptará al estándar.
Es probable que los volúmenes de almacenamiento de back-end se vean afectados positivamente. En otras palabras, necesitará menos almacenamiento si realiza muchas operaciones de aprendizaje automático con bfloat16. Pero es más probable, al menos por un tiempo, que IEEE 754 predomine y bfloat16 se convierta a partir de ese estándar existente.
¿Qué soporte de hardware existe para bfloat16?
Bfloat16 se implementó por primera vez en las TPU de hardware de Google, compatibles con Intel, que se pueden usar a través de los servicios en la nube del proveedor (Cloud TPU) o se pueden comprar como un producto para uso local del cliente.
En el momento de escribir este artículo, también es compatible con las CPU escalables Xeon de tercera generación de Intel, los procesadores Power10 de IBM y Neoverse de ARM.
Bfloat16 también es compatible con varias NPU (unidades de procesamiento neuronal, de las cuales la TPU es una), incluidas Trillium, Centaur, Flex, Habana, Nervana y Wave de ARM.