Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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 float32 de IEEE. El uso de números de punto flotante de precisión reducida disminuye el tiempo de convergencia sin perder precisión.
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 A Study of BFLOAT16 for Deep Learning Training.
Usa bfloat16 de forma explícita
Si bien la conversión automática de formato en las TPUs te permite evitar pensar en la precisión numérica, puedes lograr mejoras de rendimiento asignando valores de forma explícita a bfloat16. Existen dos motivos para transmitir valores de forma explícita a bfloat16:
El almacenamiento de valores en formato bfloat16 ahorra memoria en el chip, lo que permite que las Cloud TPU entrenen modelos más grandes o usen tamaños de lotes más grandes.
Algunas operaciones dependen del ancho de banda de la memoria, lo que significa que la cantidad de tiempo que se tarda en cargar datos desde la memoria puede ralentizar el tiempo total dedicado a realizar el cálculo. El almacenamiento de operandos y resultados de esas operaciones en formato bfloat16 reduce la cantidad de datos que se deben transferir, lo que mejora la velocidad general.
El compilador XLA inserta automáticamente la conversión de formato de float32 a bfloat16. En TPU, el esquema de redondeo en la conversión es redondear al número par más cercano y desbordar a inf. Además, bfloat16 en Cloud TPU no admite números subnormales, por lo que todos se restablecen a cero durante la conversión.
Los valores especiales, como NaN y inf, se conservan 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 conservan 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 fino en CPUs o GPUs) sin conversiones manuales extensas.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[],[],null,["# Improve your model's performance with bfloat16\n==============================================\n\nBy default, TPUs perform\nmatrix multiplication operations with [`bfloat16`](https://en.wikipedia.org/wiki/Bfloat16_floating-point_format)\nvalues and accumulations with IEEE [`float32`](https://en.wikipedia.org/wiki/Single-precision_floating-point_format)\nvalues. Using reduced-precision floating point numbers decreases time to\nconvergence without losing accuracy.\n\nThe dynamic range of `bfloat16` and `float32` are equivalent. However, `bfloat16`\nuses half of the memory space. For more information about `bfloat16` performance,\nsee [A Study of BFLOAT16 for Deep Learning Training](https://arxiv.org/abs/1905.12322).\n\nUse bfloat16 explicitly\n-----------------------\n\nWhile automatic format conversion in TPUs lets you avoid thinking about numerical\nprecision, you can achieve performance improvements by explicitly casting values\nto `bfloat16`. There are two reasons to explicitly cast values to `bfloat16`:\n\n1. Storing values in `bfloat16` format saves on-chip memory, enabling Cloud TPUs\n to train larger models or use larger batch sizes.\n\n2. Some operations are memory-bandwidth-bound, which means the amount of time it\n takes to load data from memory can slow down the overall time spent performing\n the computation. Storing operands and outputs of those operations in `bfloat16`\n format reduces the amount of data that must be transferred, improving overall\n speed.\n\nTo get started, we recommend getting some experience with one of the\n[Cloud TPU reference models](/tpu/docs/tutorials/supported-models). After\nthat, the [profiling tools guide](/tpu/docs/profile-tpu-vm), and\n[troubleshooting guide](/tpu/docs/troubleshooting/troubleshooting) provide\nin-depth technical information to help you create and optimize machine learning\nmodels on your own.\n\n### Format conversion details\n\nThe format conversion from `float32` to `bfloat16` is automatically inserted by the\nXLA compiler. On TPU, the rounding scheme in the conversion is\n[round to nearest even](https://en.wikipedia.org/wiki/IEEE_754#Roundings_to_nearest)\nand overflow to `inf`. Also, the `bfloat16` on Cloud TPU does not support\nsubnormals, so all subnormals are flushed to zero during the conversion.\nSpecial values, such as `NaN` and `inf`, are preserved in the conversion.\n\nThe format conversion from `bfloat16` to `float32` is also automatically inserted\nby the XLA compiler. Since `float32` can represent all exact values in `bfloat16`,\nthe conversion pads 16 zeros in the mantissa bits. Special values are\npreserved in the conversion.\n\nCheckpoints obtained from a model trained on Cloud TPUs can be deployed on other\nhardware platforms (for example, inference or fine-tuning on CPUs or GPUs)\nwithout extensive manual conversions."]]