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 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:

  1. 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.

  2. 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.

Als Erstes sollten Sie praktische Erfahrungen mit einem der Cloud TPU-Referenzmodelle sammeln. Anschließend finden Sie im Leitfaden zur Profilerstellungstools und im Leitfaden zur Fehlerbehebung ausführliche technische Informationen zum eigenständigen Erstellen und Optimieren von ML-Modellen.

Details zur Formatkonvertierung

Die Formatkonvertierung von float32 nach bfloat16 wird automatisch vom XLA-Compiler eingefügt. Bei TPUs ist das Rundungsschema in der Konvertierung Rund um die nächste Stufe und Überlauf nach 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 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, 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.