Modellleistung mit bfloat16 verbessern
TPUs bieten standardmäßig eine
Matrixmultiplikationen mit bfloat16
Werte und Akkumulationen mit IEEE float32
Werte. Durch die Verwendung von Gleitkommazahlen mit geringerer Genauigkeit
ohne Abstriche bei der Genauigkeit zu machen.
Der dynamische Bereich von bfloat16
und float32
ist äquivalent. bfloat16
belegt die Hälfte des Arbeitsspeichers. Weitere Informationen zur Leistung von bfloat16
Siehe Eine Studie zu BFLOAT16 für Deep-Learning-Schulungen.
bfloat16 explizit verwenden
Dank der automatischen Formatkonvertierung in TPUs müssen Sie sich keine Gedanken über numerische Werte machen.
können Sie Leistungsverbesserungen erzielen, indem Sie Werte explizit
an bfloat16
. 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. Operanden und Ausgaben dieser Operationen in
bfloat16
speichern reduziert die zu übertragende Datenmenge und verbessert sich insgesamt Geschwindigkeit.
Für den Einstieg empfehlen wir Ihnen, sich ein wenig Erfahrung mit einem der Cloud TPU-Referenzmodelle: Nachher im Leitfaden zu Profilerstellungstools und Anleitung zur Fehlerbehebung bereitstellen detaillierte technische Informationen zum Erstellen und Optimieren von maschinellem Lernen Modelle zu erstellen.
Details zur Format-Conversion
Die Formatumwandlung von float32
in bfloat16
wird automatisch eingefügt durch den
XLA-Compiler. Bei TPUs ist das Rundungsschema in der Konvertierung
Rund um die nächste Stufe
und Überlauf nach inf
. Außerdem unterstützt der bfloat16
in Cloud TPU keine
Subnormalen angezeigt, sodass alle Subnormalen während der Konvertierung auf null gesetzt werden.
Spezielle Werte wie NaN
und inf
bleiben in der Conversion erhalten.
Die Formatumwandlung von bfloat16
in float32
wird ebenfalls automatisch eingefügt.
vom XLA-Compiler. Da float32
alle genauen Werte in bfloat16
darstellen kann,
die Konvertierungspads 16 Nullen in die Mantissenbits. Spezielle Werte sind
beibehalten werden.
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.