Computerarithmetik
Was ist der Hauptgrund, beim gemischtpräzisen KI-Training die meisten Berechnungen in FP16 oder bfloat16 auszuführen, die ursprünglichen Gewichtswerte (Master-Gewichte) aber in FP32 zu halten?
- AWird eine kleine Aktualisierung zu den Gewichten addiert, geht sie in einem Format mit geringer Genauigkeit durch Informationsverlust verloren
- BWeil FP32 schneller rechnet als FP16, sodass die Gewichtsberechnung vollständig FP32 überlassen wird
- CWeil Gewichtswerte in FP16 oder bfloat16 laut Festlegung nicht im Speicher gehalten werden können
Antwort und Erläuterung anzeigen
Antwort: A. Wird eine kleine Aktualisierung zu den Gewichten addiert, geht sie in einem Format mit geringer Genauigkeit durch Informationsverlust verloren
Beim Training wird immer wieder ein sehr kleiner Wert „Lernrate × Gradient“ zu den Gewichten addiert. FP16 und bfloat16 haben kurze Mantissen; ist die Aktualisierung im Vergleich zum Gewicht zu klein, bleibt das Ergebnis der Addition nach der Rundung das ursprüngliche Gewicht, und die Aktualisierung verschwindet (Informationsverlust). Daher werden die Gewichte in FP32 gehalten, damit sich Aktualisierungen korrekt ansammeln, und für Vorwärts- und Rückwärtsrechnung werden in niedrigere Genauigkeit umgewandelte Kopien verwendet. Rechnen mit niedriger Genauigkeit ist schneller, und auch Werte niedriger Genauigkeit können gespeichert werden.