Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR
EKA SUNUCU · AI MODEL EĞİTİM HATA MERKEZİ

SFTTrainer Loss 0.0, Loss NaN ve Eval Loss NaN: Fine-Tuning Neden Öğrenmiyor?

TRL SFTTrainer loss=0.0/NaN sorunlarını dataset formatı, -100 labels, truncation, assistant_only_loss, learning rate ve precision ile teşhis edin.

PyTorchTransformersPEFT / TRLSon teknik kontrol: 14 Ağustos 2026
01

Resmî dokümantasyonla doğrulanan temel noktalar

01

TRL `assistant_only_loss=True` kullanıldığında loss yalnız assistant token'larında hesaplanır; chat template uygun assistant mask üretmelidir.

02

Assistant token'ları max length sonrasında truncate edilirse labels tamamen -100 kalabilir ve training gerçek supervision almadan 0 loss benzeri davranış gösterebilir.

03

Prompt-completion ve conversational dataset formatları TRL'de farklı masking davranışlarına sahiptir; dataset formatı training config ile uyumlu olmalıdır.

02

Loss 0.0 gerçekten iyi haber değildir

SFT başlangıcında gerçek dil modeli loss'unun tam 0 olması çoğu durumda şüphelidir. Özellikle ilk step'ten itibaren 0.0 görüyorsanız modelin mükemmel öğrendiğini değil labels'ın maskelenmiş olabileceğini düşünün.

03

İlk kontrol: label tensorunda kaç gerçek token var?

Cross-entropy'de `-100` genellikle ignore index'tir. Batch içindeki bütün label'lar -100 ise loss hesaplanacak token kalmaz. Trainer'a geçmeden önce collator çıktısından `labels.ne(-100).sum()` değerini yazdırın.

Teşhis / doğrulama komutları
python - <<'PY'
# batch = next(iter(trainer.get_train_dataloader()))
# print((batch['labels'] != -100).sum(dim=1))
PY
04

Truncation assistant cevabını tamamen kesiyor olabilir

Uzun system/user prompt ve kısa max_length kombinasyonunda assistant response sequence sonuna düşer ve tamamı truncate olabilir. TRL issue'larında bu durum assistant mask'in tamamen 0 olmasına ve 0-loss davranışına yol açmıştır. Dataset token uzunluk dağılımını percentile olarak ölçün.

05

`assistant_only_loss` ve chat template uyumluluğu

TRL güncel dokümantasyonu assistant-only loss için template'in `{% generation %}` / `{% endgeneration %}` marker'larıyla assistant token mask üretebilmesini ister. Model template'i bunu desteklemiyorsa flag'i açmak hata veya yanlış masking üretir.

06

NaN loss: precision ve learning rate

NaN yalnız dataset problemi değildir. Aşırı learning rate, FP16 overflow, problemli custom loss, invalid logits veya model-specific attention bug'ı NaN üretebilir. Aynı mini-batch'i `model.train()` altında forward edip logits finite mi, loss finite mi ayrı kontrol edin.

07

Eval loss NaN ama train loss normal

Eval dataset'te assistant cevabı olmayan örnekler, farklı format, farklı truncation oranı veya tamamı maskelenmiş batch olabilir. Train ve eval preprocessing pipeline'ın birebir aynı format varsayımlarını kullandığını doğrulayın.

08

Dataset formatını yanlış seçmek

TRL language-modeling, prompt-completion ve conversational formatları destekler. `text` column'lı klasik LM dataset ile `messages` conversational dataset aynı masking semantiğine sahip değildir. Önce dataset type/formatı netleştirin, sonra `completion_only_loss` / `assistant_only_loss` seçin.

09

Aynı batch ile trainer dışı sanity test

Trainer karmaşıklığını ayırmak için tek batch'i modele doğrudan verin. `input_ids`, `attention_mask`, `labels` shape; label token sayısı; logits finite oranı ve raw loss değerini yazdırın. Burada NaN varsa problem trainer logging değil model/data katmanındadır.

10

Düzeldiğini nasıl doğrularsınız?

İlk 20-50 step boyunca supervised token sayısı >0, loss finite, grad norm finite ve learning rate beklenen aralıkta olmalı. Validation'da birkaç sabit prompt'u aynı decoding ayarlarıyla base model ve fine-tuned checkpoint üzerinde karşılaştırın.

DIAGNOSTIC MATRIX

Belirti → olası neden

Belirtiİlk şüpheDoğrulama
İlk step loss=0Tüm labels -100Label count
Uzun örneklerde 0TruncationToken length dağılımı
Loss NaNLR/precision/logitsSingle-batch forward
Eval NaNEval masking/formatEval batch labels
Üretim ortamı notu

Çalışan eğitim ortamında paketleri rastgele güncellemeyin. GPU modeli, driver, CUDA/PyTorch runtime, transformers, accelerate, peft, trl, bitsandbytes/diffusers sürümleri ile model revision ve dataset fingerprint bilgisini her run için kaydedin. Önce minimal reproducible test oluşturun, sonra production eğitime müdahale edin.

FAQ

Sık sorulan sorular

Loss 0 ise model çok iyi mi öğrenmiştir?

Genellikle hayır. Fine-tuning'in başından itibaren 0.0 çoğu zaman supervised label kalmadığını veya logging/masking problemi olduğunu gösterir.

`assistant_only_loss=True` her modelde çalışır mı?

Hayır. Chat template'in assistant token mask üretebilmesi gerekir; güncel TRL bu desteği template düzeyinde bekler.

OFFICIAL SOURCES

Resmî teknik kaynaklar ve proje issue'ları

CLUSTER

İlgili AI eğitim rehberleri

EKA SUNUCU · GPU ALTYAPISI

Eğitim konfigürasyonunuza göre GPU seçin.

Model boyutu, precision, context, batch, LoRA/QLoRA veya full fine-tuning yöntemi ve multi-GPU ihtiyacınızı birlikte değerlendirin; yalnız GPU model adına bakarak kapasite seçmeyin.

GPU Sunucu VPS Destek
Top