Skip to content

Gradienten-Kappung

Gradient Clipping

Gradient ClippingGlobal norm threshold 1.0: a single bad batch rescaled, training continues uninterrupted01020304050607080Training step0123456Gradient normclip = 1.0LossClipping modesGlobal norm clipscale all param gradsif ||g|| > tPer-tensor clipeach layer separatelypreserves ratiosValue clipclamp each elementrarer; cruderClipped norm / lossRaw norm / lossGlobal norm clip (threshold 1.0) is the default in PyTorch, JAX, and Hugging Face Trainer for transformer pretraining

Gradient Clipping skaliert den Gradientenvektor neu, wenn seine globale L2-Norm einen Schwellenwert t überschreitet. Die Operation lautet: Wenn ||g|| > t, dann g = g * (t / ||g||). Dadurch bleibt die Gradientenrichtung erhalten, während seine Magnitude auf genau t begrenzt wird, anders als bei elementweisem Wert-Clipping, das die Richtung verzerrt. In der Praxis wird der Schwellenwert zwischen 0,5 und 5,0 gesetzt: GPT-2 und GPT-3 verwenden t = 1,0, LLaMA verwendet 1,0 und PaLM verwendet 1,0, womit 1,0 der De-facto-Standard für das Vortraining von Transformern ist. Ein einzelner anomaler Batch, bei dem die Verlustfunktion auf extreme Eingaben trifft, kann eine Gradientennorm erzeugen, die dem 10- bis 100-fachen des typischen Wertes entspricht; ohne Clipping schickt dies die Gewichte auf einen großen Schritt in eine Region mit hohem Verlust und verursacht einen Verlustausreißer, von dem sich das Training möglicherweise nicht erholt. Das Diagramm zeigt einen Gradientennorm-Ausreißer von 6,1 bei Schritt 34 (gegenüber einem typischen Wert von etwa 0,4): Ohne Clipping divergiert der Trainingsverlust; mit Clipping bei 1,0 wird die Norm neu skaliert und das Training verläuft störungsfrei weiter.

English version