Mejora el rendimiento de tu modelo con bfloat16
De forma predeterminada, las TPU realizan
operaciones de multiplicación de matrices con valores bfloat16
y acumulaciones con valores IEEE
float32. El uso de números de punto flotante de precisión reducida disminuye el tiempo de
convergencia sin perder exactitud.
El rango dinámico de bfloat16 y float32 es equivalente. Sin embargo, bfloat16
usa la mitad del espacio de memoria. Para obtener más información sobre el rendimiento de bfloat16,
consulta Un estudio sobre BFLOAT16 para el entrenamiento de aprendizaje profundo.
Usa bfloat16 de forma explícita
Si bien la conversión automática de formato en las TPU te permite evitar pensar en la precisión
numérica, puedes lograr mejoras en el rendimiento
si conviertes explícitamente los valores a bfloat16. Existen dos motivos para convertir valores de forma explícita en bfloat16:
Almacenar valores en formato
bfloat16ahorra memoria en el chip, lo que permite que las Cloud TPU entrenen modelos más grandes o usen tamaños de lote más grandes.Algunas operaciones dependen del ancho de banda de la memoria, lo que significa que el tiempo que se tarda en cargar datos de la memoria puede ralentizar el tiempo total dedicado a realizar el procesamiento. Almacenar los operandos y los resultados de esas operaciones en formato
bfloat16reduce la cantidad de datos que se deben transferir, lo que mejora la velocidad general.
Para comenzar, te recomendamos que adquieras experiencia en uno de los modelos de referencia de Cloud TPU. Después de eso, la guía de herramientas de generación de perfiles y la guía de solución de problemas proporcionan información técnica detallada para ayudarte a crear y optimizar modelos de aprendizaje automático por tu cuenta.
Detalles de la conversión de formato
El compilador XLA inserta automáticamente la conversión de
formato de float32 a bfloat16. En la TPU, el esquema de redondeo en la conversión es
redondeo al número par más cercano
y el desbordamiento se produce a inf. Además, bfloat16 en Cloud TPU no admite números subnormales,
por lo que todos estos números se vacían a cero durante la conversión.
Los valores especiales, como NaN y inf, se preservan en la conversión.
El compilador XLA también inserta automáticamente la conversión de
formato de bfloat16 a float32. Dado que float32 puede representar todos los valores exactos en bfloat16,
la conversión agrega 16 ceros en los bits de mantisa. Los valores especiales se
preservan en la conversión.
Los puntos de control obtenidos de un modelo entrenado en Cloud TPU se pueden implementar en otras plataformas de hardware (por ejemplo, inferencia o ajuste en CPU o GPU) sin conversiones manuales exhaustivas.