Mejora el rendimiento de tu modelo con bfloat16
De forma predeterminada, las TPU realizan
operaciones de multiplicación de matrices con bfloat16
valores y acumulaciones con IEEE float32
de salida. El uso de números de punto flotante con precisión reducida disminuye el tiempo de
la convergencia sin perder exactitud.
Los rangos dinámicos de bfloat16
y float32
son equivalentes. Sin embargo, bfloat16
ocupa la mitad del espacio de la memoria. Para obtener más información
sobre el rendimiento de bfloat16
,
consulta Un estudio de BFLOAT16 para el entrenamiento de aprendizaje profundo.
Usa bfloat16 explícitamente
Mientras que la conversión automática de formato en las TPU te permite evitar tener en cuenta la
precisión, puedes lograr mejoras de rendimiento si conviertes valores de forma explícita
a bfloat16
. Hay dos motivos para convertir valores de forma explícita en bfloat16
:
Almacenar valores en formato
bfloat16
ahorra memoria en el chip, lo que habilita las Cloud TPU para entrenar modelos más grandes o usar tamaños de lotes más grandes.Algunas operaciones dependen del ancho de banda de la memoria, es decir, la cantidad de tiempo que que demora cargar datos desde la memoria puede ralentizar el tiempo total dedicado a el cálculo. Almacenar operandos y salidas de esas operaciones en
bfloat16
reduce la cantidad de datos que se deben transferir, lo que mejora la velocidad.
Para empezar, te recomendamos adquirir un poco de experiencia con uno de los Modelos de referencia de Cloud TPU. Después del la guía de herramientas de generación de perfiles y guía de solución de problemas información técnica detallada para ayudarte a crear y optimizar el aprendizaje automático tus propios modelos.
Dar formato a los detalles de las conversiones
El elemento inserta automáticamente la conversión de formato de float32
a bfloat16
Compilador XLA. En la TPU, el esquema de redondeo en la conversión es
redondear hasta el punto más cercano
y se desborda a inf
. Además, bfloat16
en Cloud TPU no es compatible
subnormales, por lo que todas las subnormales se vacían a cero durante la conversión.
Los valores especiales, como NaN
y inf
, se conservan en la conversión.
La conversión de formato de bfloat16
a float32
también se inserta automáticamente.
el compilador XLA. Como float32
puede representar todos los valores exactos en bfloat16
,
la conversión rellena 16 ceros en los bits de la mantisa. Los valores especiales son los siguientes:
en la conversión.
Los puntos de control obtenidos de un modelo entrenado en Cloud TPU pueden implementarse en otros Plataformas de hardware (por ejemplo, inferencia o ajuste de CPU o GPU) sin realizar muchas conversiones manuales.