Wie Modelle wirklich lernen, vom einfachen Gradientenabstieg bis zu Adam
Mixed-Precision-Training verwendet kleinere Zahlenformate für Geschwindigkeit und Speicher. Statt jede Berechnung in voller Genauigkeit zu speichern (Standard: 32-Bit-Fließkommazahlen), nutzen viele Operationen float16 oder bfloat16: 16-Bit-Formate, die nur halb so viel Speicher brauchen, dafür aber weniger Genauigkeit bieten und bei float16 einen engeren Bereich darstellbarer Größen haben.
Das Risiko liegt im numerischen Wertebereich. Manche Gradienten sind winzig. Wird eine winzige Zahl auf null gerundet, verliert der Optimierer Information. Loss Scaling schützt diese kleinen Gradienten, indem der Verlust vor der Backpropagation multipliziert und die Gradienten danach wieder heruntergeteilt werden.
Eine Küchenwaage, die auf ganze Gramm rundet, kann eine winzige Prise Gewürz übersehen. Wiegst du zehn gleiche Prisen zusammen, sieht die Waage die Gesamtmenge. Dann teilst du durch zehn, um eine Prise zurückzugewinnen. Loss Scaling nutzt denselben Trick: Mach den kleinen Wert leichter darstellbar und skaliere ihn danach zurück. Die Abbildung unten erinnert daran, worum es geht. Abstieg funktioniert nur, wenn der Gradient jedes Schritts die Arithmetik übersteht; Genauigkeit ändert nicht die Schleife selbst, sondern entscheidet, ob die winzigen Steigungen nahe dem Minimum für sie noch sichtbar sind.