Bei `assistant_only_loss=True` wird Loss nur auf Assistant-Tokens berechnet; das Chat Template muss eine gültige Maske liefern.
TRL SFTTrainer loss=0.0/NaN anhand Dataset-Format, -100 Labels, Truncation, assistant_only_loss, Learning Rate und Precision diagnostizieren.
Bei `assistant_only_loss=True` wird Loss nur auf Assistant-Tokens berechnet; das Chat Template muss eine gültige Maske liefern.
Werden Assistant-Tokens durch max length abgeschnitten, können alle Labels -100 werden und Training ohne echte Supervision mit 0-Loss erscheinen.
Prompt-Completion und Conversational Datasets haben unterschiedliche Masking-Semantik; Format und Training-Config müssen zusammenpassen.
Ein exakter Loss von 0.0 direkt zu Trainingsbeginn ist verdächtig. Wahrscheinlicher sind maskierte Labels als perfektes Lernen.
Bei Cross-Entropy ist `-100` typischer Ignore-Index. Sind alle Labels -100, bleibt kein Supervision-Token. Vor Training `labels.ne(-100).sum()` prüfen.
python - <<'PY'
# batch = next(iter(trainer.get_train_dataloader()))
# print((batch['labels'] != -100).sum(dim=1))
PY
Lange Prompts plus kurze max_length können die gesamte Assistant-Antwort abschneiden. Tokenlängen-Perzentile im Dataset messen.
Aktuelles TRL benötigt passende Generation-Marker im Chat Template, damit Assistant-Masken entstehen. Ohne diese Unterstützung kann Masking fehlschlagen.
NaN kann durch hohe Learning Rate, FP16 Overflow, Custom-Loss-Fehler, ungültige Logits oder model-spezifische Bugs entstehen. Mini-Batch direkt im Train-Modus testen.
Eval-Dataset kann andere Formate, fehlende Assistant-Antworten oder komplett maskierte Batches enthalten. Train- und Eval-Preprocessing angleichen.
TRL unterstützt LM-, Prompt-Completion- und Conversational-Formate. Ein `text`-Dataset und ein `messages`-Dataset haben andere Masking-Semantik.
Zur Isolation einen Batch direkt ins Modell geben und Shapes, Label-Anzahl, finite Logits und Raw Loss prüfen. NaN hier bedeutet Model/Data-Problem.
In den ersten 20-50 Steps sollten Supervision-Tokens >0, Loss/Grad-Norm finite und Learning Rate plausibel sein. Feste Prompts mit Base und Checkpoint vergleichen.
| Symptom | Erster Verdacht | Prüfung |
|---|---|---|
| Loss=0 im ersten Step | Alle Labels -100 | Labels zählen |
| 0 nur bei langen Beispielen | Truncation | Tokenlängen |
| Loss NaN | LR/Precision/Logits | Single-Batch Forward |
| Eval NaN | Eval-Masking/Format | Eval-Labels prüfen |
In einer funktionierenden Trainingsumgebung Pakete nicht blind aktualisieren. GPU, Treiber, CUDA/PyTorch-Runtime, Transformers, Accelerate, PEFT, TRL, bitsandbytes/Diffusers, Modellrevision und Dataset-Fingerprint pro Run protokollieren.
Meist nein. Direkt ab Start deutet 0 häufig auf fehlende Supervision oder Masking-/Logging-Probleme.
Nein. Das Chat Template muss Assistant-Token-Masken erzeugen können.
Modellgröße, Precision, Context, Batch, LoRA/QLoRA oder Full Fine-Tuning und Multi-GPU gemeinsam bewerten.