Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Leistung des Modells mit bfloat16 verbessern
Standardmäßig führen TPUs Matrixmultiplikationsvorgänge mit bfloat16-Werten und Akkumulationen mit IEEE-float32-Werten aus. Durch die Verwendung von Gleitkommazahlen mit reduzierter Genauigkeit wird die Zeit bis zur Konvergenz verkürzt, ohne dass die Genauigkeit beeinträchtigt wird.
Der dynamische Bereich von bfloat16 und float32 ist gleich. bfloat16 belegt jedoch nur die Hälfte des Arbeitsspeichers. Weitere Informationen zur Leistung von bfloat16 finden Sie unter A Study of BFLOAT16 for Deep Learning Training (Eine Studie zu BFLOAT16 für das Deep-Learning-Training).
Bfloat16 explizit verwenden
Die automatische Formatumwandlung in TPUs erlaubt, dass Sie nicht über die numerische Genauigkeit nachdenken. Sie können jedoch Leistungsverbesserungen erzielen, indem Sie Werte explizit in bfloat16 umwandeln. Es gibt zwei Gründe, Werte explizit in bfloat16 umzuwandeln:
Das Speichern von Werten im Format bfloat16 spart On-Chip-Arbeitsspeicher, sodass Cloud TPUs größere Modelle trainieren oder größere Batches verwenden können.
Einige Operationen sind an die Arbeitsspeicherbandbreite gebunden. Das heißt, dass die Zeit, die zum Laden von Daten aus dem Arbeitsspeicher aufgewendet wird, die für die Berechnung benötigte Zeit verlängern kann. Das Speichern von Operanden und Ausgaben dieser Vorgänge im bfloat16-Format reduziert die zu übertragende Datenmenge, wodurch die Gesamtgeschwindigkeit verbessert wird.
Die Formatkonvertierung von float32 nach bfloat16 wird automatisch vom XLA-Compiler eingefügt. Auf TPU wird bei der Umwandlung auf den nächsten geraden Wert aufgerundet und bei Überlauf auf inf. Außerdem werden auf Cloud TPU mit bfloat16 keine Subnormalwerte unterstützt. Daher werden alle Subnormalwerte bei der Umwandlung auf Null gesetzt.
Spezielle Werte wie NaN und inf bleiben bei der Umwandlung erhalten.
Die Formatkonvertierung von bfloat16 nach float32 wird ebenfalls automatisch vom XLA-Compiler eingefügt. Da float32 alle genauen Werte in bfloat16 darstellen kann, werden bei der Umwandlung 16 Nullen in die Mantissenbits eingefügt. Spezielle Werte bleiben bei der Conversion erhalten.
Prüfpunkte, die aus einem auf Cloud TPUs trainierten Modell abgerufen wurden, können ohne umfangreiche manuelle Konvertierungen auf anderen Hardwareplattformen (z. B. Inferenz oder Feinabstimmung auf CPUs oder GPUs) bereitgestellt werden.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-18 (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."]]