Overfitting bekämpfen
Konkrete Maßnahmen nach Effektivität sortiert
Overfitting ist das häufigste Problem beim Training. Die gute Nachricht: Es ist gut erforscht und es gibt viele bewährte Techniken. Einzeln oder kombiniert eingesetzt, lösen sie praktisch jeden Overfitting-Fall.
Overfitting: Val-Loss steigt wieder an
Die 7 effektivsten Maßnahmen gegen Overfitting
Mehr diverse Trainingsdaten
Mehr und diversere Daten ist immer die effektivste Maßnahme. Mehr Beispiele = das Modell kann nicht einzelne auswendig lernen.
Dataset vergrößern (echte Daten), Data Augmentation (Kapitel 7), synthetische Daten via LLM generieren.
Early Stopping aktivieren
Stoppe das Training, bevor Overfitting beginnt. Überwache Validation Loss und stoppe wenn er aufhört zu sinken.
patience=3–5, monitor="val_loss", speichere immer den besten Checkpoint.
LoRA mit kleinem Rank nutzen
LoRA limitiert die Anzahl trainierbarer Parameter drastisch. Weniger freie Parameter = weniger Overfitting-Kapazität.
rank=4 oder rank=8 statt rank=32. Nur q_proj und v_proj als target_modules.
Dropout erhöhen
Höherer Dropout-Wert deaktiviert mehr Neuronen zufällig. Das Netz muss robustere, redundante Repräsentationen lernen.
LoRA dropout von 0.05 auf 0.1–0.2 erhöhen. Aufpassen: zu hoch → Underfitting.
Weniger Epochen trainieren
Die einfachste Lösung: Einfach früher aufhören. Wenn Early Stopping zu spät reagiert.
Epochen halbieren. Validation Loss-Kurve zeigt wann der Wendepunkt war.
Weight Decay erhöhen (L2 Regularisierung)
Bestraft große Gewichte. Hält Modell-Parameter klein und verhindert, dass das Modell einzelne Features zu stark gewichtet.
weight_decay von 0.01 auf 0.05–0.1 erhöhen im AdamW Optimizer.
Label Smoothing aktivieren
Statt harter 0/1-Labels werden weiche Labels verwendet (z.B. 0.9/0.05). Verhindert zu selbstsichere Vorhersagen.
label_smoothing=0.1. Gut wenn Modell zu confident ist.
Kombinations-Strategien nach Situation
Fine-Tuning mit wenig Daten (< 500 Beispiele)
Early Stopping + LoRA rank=4–8 + weight_decay=0.1 + dropout=0.1Datenlimitierung ist das Hauptproblem
Fine-Tuning mit mittelgroßem Dataset (500–5.000)
Early Stopping + LoRA rank=16 + weight_decay=0.01Standard-Setup, sollte gut funktionieren
Full Fine-Tuning mit wenig Daten
Early Stopping + kleines LR (1e-5) + weight_decay=0.1 + dropout=0.2Vorsichtig! Full FT mit wenig Daten = hohes Overfitting-Risiko
Goldene Regel für FrameTrain Fine-Tuning
Underfitting beheben
Schritt-für-Schritt Diagnose und Lösungen
Underfitting ist oft einfacher zu beheben als Overfitting. Der erste Schritt ist immer, die genaue Ursache zu identifizieren – dann folgt der passende Fix.
Systematischer Diagnosebaum
Sinkt der Training Loss überhaupt in den ersten 100 Steps?
✓ Ja → weiter zu Schritt 2
✗ NEIN → sofort: LR prüfen (wahrscheinlich zu niedrig), Dataset-Format prüfen (Labels korrekt?)
Sinkt Training Loss noch bei der letzten Epoche ohne Plateau?
✓ Ja → mehr Epochen trainieren (früher gestoppt)
✗ Nein (Plateau aber hoch) → Schritt 3
Kann das Modell ein Mini-Dataset (50 Beispiele) overfitten?
✓ Ja (100% Train Acc) → Datenmenge erhöhen, mehr Epochen, LR prüfen
✗ NEIN → fundamentales Problem: LR, Modellgröße oder Datenformat falsch
Ist Dropout zu hoch oder Regularisierung zu stark?
✓ Ja → Dropout auf 0 setzen zum Test, Weight Decay reduzieren
✗ Nein → Modell zu klein, falscher Optimizer oder LR noch immer falsch
Konkrete Fixes nach Ursache
Learning Rate zu niedrig
LR schrittweise erhöhen: 1e-6 → 1e-5 → 5e-5 → 1e-4. Jedes Mal kurzes Training zum Testen.
Zu wenige Epochen
Epochen verdoppeln oder verdreifachen. Auf Loss-Kurve achten: sinkt sie noch?
Falsches Basismodell
Größeres Modell: 1B → 7B, oder spezialisierteres Modell für die Domäne.
Falscher Optimizer
AdamW ist Standard. SGD ohne Warmup ist bei Transformern fast immer falsch.
Fehler im Dataset
Stichproben manuell prüfen. Sind Labels korrekt? Stimmt Tokenisierung? Encoding-Probleme?
Zu hoher Dropout
Dropout temporär auf 0.0 setzen. Wenn Modell dann lernt: Dropout war zu hoch.
Batch Size zu klein / Gradienten zu noisig
Batch Size erhöhen oder Gradient Accumulation. Mehr stabile Gradienten.
Der Mini-Dataset-Test – dein wichtigstes Debug-Tool
Learning Rate Probleme
Die häufigste Fehlerquelle vollständig diagnostizieren
Die Learning Rate ist der empfindlichste aller Hyperparameter. Ein Faktor von 10 zu hoch oder zu niedrig kann den Unterschied zwischen perfektem Training und komplettem Versagen bedeuten.
Zu hohe Learning Rate: Loss springt unkontrolliert
Zu niedrige Learning Rate: Loss sinkt kaum
LR Diagnose-Matrix
| Symptom | Diagnose | Fix |
|---|---|---|
| Loss oszilliert stark, kein Konvergieren | LR zu hoch | LR ÷ 5–10 |
| Loss sinkt <0.001 pro Epoche | LR zu niedrig | LR × 3–5 |
| Loss explodiert (NaN/Inf) | LR extrem zu hoch | LR ÷ 100, Clipping prüfen |
| Loss sinkt gut, dann plötzlich Spike | LR zu hoch ohne Warmup | Warmup hinzufügen |
| Sehr langsamer Start, dann okay | LR startet zu niedrig | Warmup kürzer oder LR erhöhen |
| Plateau nach 20% Training | LR zu niedrig für Fine-Tuning | Cyclischen Scheduler testen |
LR Range Test – die beste Methode zur LR-Findung
Der LR Range Test ist die systematischste Methode: Trainiere 1 Epoche mit exponentiell steigender LR und plotte den Loss. Die optimale LR liegt kurz vor dem steilsten Abstieg.
LR Range Test Ablauf:
1. Starte mit sehr kleiner LR (z.B. 1e-8)
2. Erhöhe LR exponentiell jeden Step: LR × 1.3
3. Plotte Loss vs. LR
4. Finde den Punkt des steilsten Loss-Abstiegs
5. Optimale LR ≈ 1/10 dieses Punktes
Beispiel:
Steilster Abstieg bei LR = 1e-4
→ Gute Start-LR ≈ 1e-5
Faustregel für Transformer Fine-Tuning:
BERT-Familie: 2e-5 bis 5e-5
GPT/Decoder: 1e-5 bis 1e-4
LoRA (LLaMA): 1e-4 bis 3e-4LR und Batch Size: Der Zusammenhang
Eine größere Batch Size bedeutet stabiler Gradienten, was eine höhere LR erlaubt. Die Linear Scaling Rule:
Wenn Batch Size × 2 → LR × 2 (Linear Scaling) Beispiel: Batch Size 8, LR = 2e-5 (baseline) Batch Size 16 → LR ≈ 4e-5 Batch Size 32 → LR ≈ 8e-5 Achtung: Bei sehr großen Batch Sizes (> 512) versagt Linear Scaling → Square Root Scaling besser: LR ∝ sqrt(Batch Size)
Warmup: Warum er so wichtig ist
Am Anfang des Trainings sind Gradienten unzuverlässig (zufällige Initialisierung). Ein LR Warmup beginnt mit einer sehr kleinen LR und steigert sie linear auf die Ziel-LR:
Ohne Warmup: sofortiger großer Update auf unzuverlässige Gradienten
→ Instabilität, mögliche frühe Divergenz
Mit Warmup:
Steps 1–100: LR steigt von 0 → 2e-5 (linear)
Steps 101+: LR bei 2e-5 oder Cosine Decay
Empfehlung: Warmup = 5–10% der Total Steps
Bei 1000 Total Steps: 50–100 Warmup StepsSchnelle LR-Empfehlungen für FrameTrain
2e-5 für BERT-artige, 2e-4 für LoRA. Wenn instabil: halbieren. Wenn zu langsam: verdoppeln. Warmup immer aktivieren.Loss Spikes & Crashes
Plötzliche Ausreißer im Training verstehen und lösen
Ein Loss Spike ist ein plötzlicher, starker Anstieg des Loss während des Trainings. Das Training kann sich danach erholen – oder komplett abstürzen (Gradient Explosion).
Spike-Typen und ihre Diagnose
Einzelner Spike, erholt sich schnell
ModeratUrsache: Schlechtes Batch / Ausreißer in Daten
Symptome: Loss springt 2–10× hoch für 1–3 Steps, dann zurück zum Trend
Lösungen:
- ✓ Gradient Clipping aktivieren/verstärken (max_grad_norm = 0.5)
- ✓ Datensatz auf fehlerhafte Einträge prüfen (extrem kurze/lange Texte)
- ✓ Batch Size erhöhen (mittelt Ausreißer heraus)
- ✓ Wenn häufig: Daten-Qualitätsprüfung dringend empfohlen
Mehrere Spikes, kein Erholen
HochUrsache: LR zu hoch ohne ausreichendes Clipping
Symptome: Wiederkehrende große Spikes, allgemeine Instabilität, kein Fortschritt
Lösungen:
- ✓ LR um Faktor 5–10 reduzieren
- ✓ Warmup Phase länger machen
- ✓ Gradient Clipping auf 0.5 oder 0.3 senken
- ✓ AdamW Epsilon erhöhen (1e-8 → 1e-6)
Loss explodiert auf NaN oder Inf
KritischUrsache: Gradient Explosion, numerische Instabilität
Symptome: Loss wird NaN, Training bricht ab oder gibt Fehler
Lösungen:
- ✓ LR drastisch reduzieren (÷100)
- ✓ Gradient Clipping auf 0.5 senken
- ✓ Mixed Precision auf fp32 wechseln (deaktiviert bf16/fp16)
- ✓ Layer Normalization im Modell prüfen
- ✓ Dataset auf extrem seltene Zeichen / Encoding-Fehler prüfen
Loss Crash: sinkt plötzlich stark
Meist positivUrsache: Meist POSITIV: Modell hat wichtiges Muster gelernt (Phasentransition)
Symptome: Loss fällt in kurzer Zeit auf neues niedrigeres Niveau und bleibt dort
Lösungen:
- ✓ Abwarten! Meist kein Problem
- ✓ Wenn danach wieder steigt: war echter Spike → Normal-Verhalten nach Clipping
- ✓ Wenn instabil bleibt: LR leicht reduzieren
Präventive Maßnahmen gegen Spikes
Gradient Clipping
max_grad_norm = 1.0 (Standard)Begrenzt maximale Gradient-Norm. Schutz Nummer 1 gegen Explosionen.
LR Warmup
warmup_steps = 5–10% totalVerhindert frühe Spikes durch unzuverlässige Gradienten am Anfang.
Daten-Bereinigung
max_length filtern, Duplikate entfernenFehlerhafte oder extreme Datenpunkte sind häufige Spike-Ursachen.
bf16 statt fp16
torch_dtype=bfloat16BFloat16 hat größeren Zahlenbereich, weniger Overflow-Risiko als fp16.
FrameTrain Schutz-Defaults