DocsKI-Training Coach📊 Training verstehen

Der Trainings-Loop

Was genau passiert, wenn du auf 'Training starten' klickst?

Wenn FrameTrain das Training startet, läuft ein präziser, sich wiederholender Zyklus ab. Jeder dieser Zyklen heißt Step. Das Verstehen dieses Loops hilft dir, Probleme zu erkennen, Logs zu lesen und Hyperparameter sinnvoll einzustellen.

Der vollständige Trainings-Loop

Für jede Epoche (1 bis num_epochs):
  ┌─ Für jeden Batch (1 bis dataset_size / batch_size):
  │   1. Batch laden           → nächste B Trainingsbeispiele
  │   2. Forward Pass          → Prediction berechnen
  │   3. Loss berechnen        → Prediction vs. Label
  │   4. Backward Pass         → Gradienten berechnen (autograd)
  │   5. Gradient Clipping     → max_grad_norm (optional, verhindert Explosion)
  │   6. optimizer.step()      → Gewichte aktualisieren
  │   7. optimizer.zero_grad() → Gradienten zurücksetzen (!)
  │   8. scheduler.step()      → LR anpassen (falls Scheduler aktiv)
  └─ Ende Batch

  Nach jeder Epoche (oder alle N Steps):
  9. Validation Loop        → Loss & Metriken auf Val-Set messen
  10. Metriken loggen       → Accuracy, F1, Perplexity etc.
  11. Checkpoint speichern  → wenn beste Val-Performance erreicht
  12. Early Stopping prüfen → Abbruch falls keine Verbesserung

Trainings-Modus vs. Evaluierungs-Modus

Pytorch und alle modernen Frameworks unterscheiden zwei Modi. Dieser Unterschied ist kritisch und wird oft vergessen:

model.train() – Training Mode

  • ✓ Dropout-Layer ist aktiv
  • ✓ BatchNorm nutzt Batch-Statistiken
  • ✓ Gradienten werden berechnet
  • ✓ Gewichte werden angepasst
  • → Höherer Loss als beim Evaluieren (Dropout)

model.eval() – Evaluation Mode

  • ✗ Dropout-Layer ist deaktiviert
  • ✓ BatchNorm nutzt globale Laufstatistiken
  • ✗ Gradienten werden NICHT berechnet (torch.no_grad())
  • ✗ Gewichte werden NICHT verändert
  • → Ehrliche Messung der echten Performance

Häufiger Fehler: Validation im falschen Modus

Wer vergisst, vor der Validation auf eval() zu wechseln, bekommt einen niedrigeren Validation Loss als in Wirklichkeit (Dropout deaktiviert Neuronen im Train-Modus). FrameTrain behandelt das automatisch korrekt.

Was ist ein "Step" genau?

Ein Step = 1 Batch forward + backward + Gewichts-Update. Die Gesamtzahl der Steps bestimmt, wie viel das Modell insgesamt lernt:

Total Steps = ⌈dataset_size / batch_size⌉ × num_epochs

Beispiel:
  Dataset:   1.000 Trainingsbeispiele
  Batch Size: 8
  Epochen:   3

  Steps/Epoche = ⌈1.000/8⌉ = 125
  Total Steps  = 125 × 3 = 375

Praktische Faustregel:
  Für LLM Fine-Tuning: ~500–2.000 Steps meist ausreichend
  Für Klassifikation:  ~200–1.000 Steps reichen oft

Checkpointing-Strategie

Best Checkpoint

Speichere nur das Modell mit dem besten Validation Loss. Spart Speicherplatz. Empfohlen für Produktion.

⭐ Standard

Every N Steps/Epochs

Speichere regelmäßig, unabhängig von Performance. Nützlich um Training fortzusetzen nach Absturz.

Für lange Trainings

Last N Checkpoints

Behalte nur die letzten N Checkpoints. Für Ensemble-Training oder Analyse des Trainingsverlaufs.

Für Experimente