Ressourcen/Modelltraining/Was während des Trainings passiert

Konzept

Die Trainingsschleife

Fine-Tuning ist ein kurzer Vorgang, der tausendfach wiederholt wird: die Zielantwort vorhersagen, messen, wie falsch die Vorhersage war, berechnen, in welche Richtung sich jedes Gewicht bewegen sollte, und es ein wenig verschieben.

Kapitel 64 Min. Lesezeit5 Quellen

Was es ist

Ein Sprachmodell ist eine sehr große Funktion mit Milliarden von anpassbaren Zahlen, seinen Gewichten. Bei einem gegebenen Text gibt es eine Wahrscheinlichkeit für jedes mögliche nächste Token aus. Fine-Tuning ändert diese Gewichte so, dass das Modell bei Ihrer Art von Kontext der von Ihnen gewünschten Antwort eine hohe Wahrscheinlichkeit zuweist. Der Trainings-Loop ist das Verfahren, das dies tut. Es ist keine einzelne clevere Operation, sondern ein einfacher Schritt, der viele tausend Mal wiederholt wird, wobei jede Wiederholung die Gewichte leicht anpasst.

EIN BATCHz. B. 8 Beispiele1. Forward PassVorhersage des Ziels, Token für Token2. Losswie falsch war es? (Kreuzentropie)3. Backward PassGradient für jedes trainierbare Gewicht4. UpdateSchrittweite = Lernrate
Ein Trainingsschritt. Wiederholen Sie dies für jeden Batch, und Sie haben eine Epoche abgeschlossen; wiederholen Sie die Epoche, und das Modell sieht jedes Beispiel erneut.

Wie ein Schritt funktioniert

1. Forward Pass. Ein Batch von Beispielen durchläuft das Modell. An jeder Position jeder Zielantwort erzeugt das Modell eine Wahrscheinlichkeitsverteilung über sein gesamtes Vokabular, oft 100.000 Token oder mehr, für das, was als Nächstes kommt. Da die wahre Antwort bereits bekannt ist, werden alle Positionen parallel in einem einzigen Durchlauf vorhergesagt. Das Modell sieht immer die korrekten früheren Token anstelle seiner eigenen Schätzungen, eine Technik, die Teacher Forcing genannt wird.

2. Loss. Für jedes Ziel-Token ist der Loss der negative Logarithmus der Wahrscheinlichkeit, die das Modell dem korrekten Token gegeben hat. Der Loss des Batches ist der Durchschnitt über alle seine Ziel-Token. Kontext-Token (der System-Prompt, frühere Züge, die Nachricht des Benutzers) werden gelesen, aber aus diesem Durchschnitt ausgeblendet, sodass nur die Antworten bewertet werden, die Sie als Ziele ausgewählt haben.

Kreuzentropie-Verlust über einen Batch
loss = − (1 / N) × Σ log p(correct token | everything before it)

N = the number of target tokens in the batch
context tokens are masked: read, never scored
Kreuzentropie bei drei Token
  1. Das Modell gibt dem korrekten nächsten Token eine Wahrscheinlichkeit von 0,9: Loss = −ln 0,9 ≈ 0,11.
  2. Eine Wahrscheinlichkeit von 0,5: Loss = −ln 0,5 ≈ 0,69.
  3. Eine Wahrscheinlichkeit von 0,05: Loss = −ln 0,05 ≈ 3,00.
  4. Durchschnitt über die drei Token: (0,11 + 0,69 + 3,00) ÷ 3 ≈ 1,26. Ein selbstbewusst falsches Token dominiert das Ergebnis.
  5. Zum Vergleich: Ein Modell, das zufällig aus 100.000 Token rät, käme auf ln 100.000 ≈ 11,5. Fine-Tuning-Losses beginnen weit darunter, da das Basismodell bereits gut raten kann; das Training verfeinert es anhand Ihrer Antworten.

3. Backward Pass. Backpropagation berechnet den Gradienten jedes trainierbaren Gewichts: wie sehr sich der Loss ändern würde, wenn sich dieses Gewicht um einen winzigen Betrag bewegen würde, und in welche Richtung. Dies kostet etwa doppelt so viel Rechenleistung wie der Forward Pass und benötigt die Zwischenwerte (Aktivierungen), die während des Forward Passes gespeichert wurden. Deshalb benötigen längere Beispiele und größere Batches mehr GPU-Speicher.

4. Update. Der Optimierer ändert jedes Gewicht entgegen seinem Gradienten, skaliert durch die Lernrate. In seiner einfachsten Form, dem reinen Gradientenabstieg, besteht die Regel aus einer einzigen Zeile.

Gradientenabstieg
gradient  = ∂loss / ∂w        how the loss changes when w changes
w (new)   = w − learning_rate × gradient
VerlustWert eines Gewichtsstarkes Gefälle zu Beginn,daher ein großer erster SchrittGERINGSTER VERLUSTSchritt =Lernrate× Gradient
Gradientenabstieg mit einem einzigen Gewicht. Der Gradient ist die Steigung des Verlusts beim aktuellen Wert; jede Aktualisierung macht einen Schritt bergab, der der Lernrate multipliziert mit dieser Steigung entspricht. Die Schritte werden von selbst kleiner, da die Steigung in der Nähe des Tiefpunkts abflacht. Ein echtes Modell führt dies für Milliarden von Gewichten gleichzeitig aus.

Der Optimierer: Adam und AdamW

Sprachmodelle werden fast immer mit Adam oder seiner Variante AdamW anstelle des reinen Gradientenabstiegs trainiert. Adam führt zwei gleitende Durchschnitte für jedes Gewicht: den durchschnittlichen Gradienten (Momentum, das das Rauschen von einem Batch zum nächsten glättet) und den durchschnittlichen quadrierten Gradienten (der den Schritt jedes Gewichts skaliert, sodass Gewichte mit konstant großen Gradienten keine riesigen Schritte machen und selten aktualisierte nicht verhungern). Das Ergebnis ist, dass sich jedes Gewicht pro Schritt ungefähr um die Lernrate bewegt, unabhängig von der rohen Größe seines Gradienten.

AdamW ändert die Art und Weise, wie Weight Decay angewendet wird, ein sanfter Zug der Gewichte in Richtung Null, der extreme Werte verhindert: Es wird direkt von den Gewichten subtrahiert, anstatt in den Gradienten gemischt zu werden, was mit Adams gewichtsspezifischer Skalierung zuverlässiger funktioniert. Es ist der Standard-Optimierer in gängigen Trainingsbibliotheken.

Ein AdamW-Update, für ein Gewicht
m = β1 · m + (1 − β1) · g        running average of gradients (momentum)
v = β2 · v + (1 − β2) · g²       running average of squared gradients
w = w − lr · m̂ / (√v̂ + ε)        a step scaled separately for every weight
w = w − lr · λ · w               decoupled weight decay (the "W" in AdamW)

g = gradient,  m̂ and v̂ = bias-corrected m and v
usual defaults: β1 = 0.9,  β2 = 0.999,  ε = 1e-8

Diese beiden gleitenden Durchschnitte werden in 32-Bit-Genauigkeit für jedes trainierbare Gewicht gespeichert: 8 Bytes pro Gewicht zusätzlich zu den Gewichten und Gradienten selbst. Das ist der Hauptgrund, warum vollständiges Fine-Tuning so viel Speicher benötigt und warum LoRA, das nur einen kleinen Adapter trainiert, so wenig braucht.

Von den Schritten zum fertigen Modell

  • Schritte summieren sich zu Epochen. Ein Durchlauf über jedes Trainingsbeispiel ist eine Epoche; ein Fine-Tuning-Lauf umfasst in der Regel eine bis wenige Epochen.
  • Die Lernrate ändert sich während des Durchlaufs. Ein Lernratenplan erhöht sie meist kurzzeitig (Warm-up) und senkt sie dann in Richtung null, damit frühe Schritte das Modell nicht destabilisieren und späte Schritte feine Anpassungen vornehmen.
  • Die Validierung läuft parallel. In regelmäßigen Abständen wird das Modell anhand zurückgehaltener Beispiele bewertet, ohne dass Gewichte aktualisiert werden. Dieser Validation Loss zeigt, ob es das Muster lernt oder Ihre Beispiele auswendig lernt.
  • Das Ergebnis sind neue Gewichte: entweder ein komplett aktualisiertes Modell oder ein kleiner Adapter, der auf das unveränderte Basismodell aufgesetzt wird.

Häufige Fehler

  • Den Loss als Qualitätskennzahl interpretieren. Der Loss gibt an, wie gut das Modell Ihre Ziel-Token vorhersagt, nicht, ob seine Antworten gut sind; das beantwortet eine Evaluierung.
  • Loss-Werte verschiedener Basismodelle vergleichen. Jedes hat seinen eigenen Tokenizer, daher sind die Zahlen nicht auf derselben Skala.
  • Erwarten, dass das Training falsche Ziele korrigiert. Der Loop senkt den Loss zuverlässig für alle Antworten, die Sie als Ziele markieren, einschließlich Fehler.
  • Annehmen, dass das Modell Regeln lernt. Es lernt Tendenzen durch viele kleine Anpassungen, sodass ein Verhalten, das nur in zwei Beispielen gezeigt wird, kaum erlernt wird.

Quellen und weiterführende Literatur

Externe Quellen werden in einem neuen Tab geöffnet.

  1. 01Optimizing Model ParametersPyTorch Tutorials · pytorch.orgDie Schleife in etwa zwanzig Codezeilen: Forward Pass, Loss, Backward Pass, Optimizer-Schritt.
  2. 02Linear regression: Gradient descentGoogle Machine Learning Crash Course · developers.google.comEine interaktive Einführung in Gradienten und Loss am einfachstmöglichen Modell.
  3. 03Adam: A Method for Stochastic OptimizationKingma & Ba, 2014 · arXiv · arxiv.orgDas ursprüngliche Adam-Paper mit der Update-Regel und ihren Standardeinstellungen.
  4. 04Decoupled Weight Decay RegularizationLoshchilov & Hutter, 2017 · arXiv · arxiv.orgStellt AdamW vor und erklärt, warum Weight Decay vom Gradienten getrennt werden sollte.
  5. 05Cross-entropyWikipedia · en.wikipedia.org

Verwandeln Sie wochenlange Expertenarbeit in Minuten

Erfahren Sie, wie Scalata zu Ihrem Team, Ihren Daten und Ihren Kontrollen passt.

Vertrieb kontaktieren