Chat modelinin beklediği control token'lar yanlışsa aynı mesaj yapısı farklı modele tamamen farklı token sequence üretebilir; format training ve inference'ta aynı olmalıdır.
Fine-tune sonrası durmayan, role token basan veya boş cevap üreten modeli EOS/PAD, chat template, generation prompt, masking ve tokenizer ile düzeltin.
Chat modelinin beklediği control token'lar yanlışsa aynı mesaj yapısı farklı modele tamamen farklı token sequence üretebilir; format training ve inference'ta aynı olmalıdır.
`add_generation_prompt=True` yeni assistant cevabının başlangıç control token'larını eklemek içindir; prefill senaryosunda `continue_final_message` farklı davranır ve ikisi aynı anda kullanılmaz.
PAD ve EOS aynı ID yapılabilir ama loss masking ve generation config doğru kurulmazsa EOS token'ları yanlışlıkla ignore edilebilir.
Model `max_new_tokens` dolana kadar hiç EOS üretmiyorsa EOS supervision veya generation config'i inceleyin. `<|assistant|>`, `<|user|>` gibi marker'ları metin olarak kusuyorsa template/tokenizer eşleşmesi şüphelidir. Hemen EOS üreterek boş cevap veriyorsa training data'da assistant content masklenmiş olabilir.
Training sırasında `apply_chat_template(..., add_generation_prompt=False)` ile oluşturulan sequence ile inference sırasında `add_generation_prompt=True` sequence'ini decode edip yan yana koyun. BOS/EOS, role header ve turn terminator token'ları beklenen yerde mi kontrol edin.
python - <<'PY'
# print(tokenizer.special_tokens_map)
# print(tokenizer.eos_token, tokenizer.eos_token_id)
# print(tokenizer.pad_token, tokenizer.pad_token_id)
# print(tokenizer.chat_template)
PY
Assistant cevabının sonundaki EOS/turn-end token'ı label olarak tutulmuyorsa model durmayı öğrenmez. Completion-only/assistant-only masking uygularken terminator token'ın -100'e çevrilmediğini örnek batch üzerinde kontrol edin.
Causal LM'lerde ayrı pad token olmayan tokenizer için `pad_token=eos_token` sık kullanılır. Fakat collator tüm EOS ID'lerini padding sanıp labels'ı -100 yaparsa gerçek sequence-end EOS supervision da kaybolabilir. Masking'i token ID'ye kör uygulamak yerine attention mask/padding position üzerinden doğrulayın.
Llama, Qwen, Gemma, Mistral ve diğer instruct modelleri aynı `messages` yapısını farklı control token dizilerine dönüştürür. Bir modelin ChatML template'ini başka modele kopyalamak, tokenizer special token'ları eksikse training sinyalini bozabilir.
Tokenizer'a yeni role/EOS token ekleyip model input embedding boyutunu büyütmezseniz index hatası veya öğrenilmeyen token davranışı oluşabilir. `resize_token_embeddings(len(tokenizer))` sonrası yeni embedding/lm_head parametrelerinin adapter checkpoint'te nasıl saklandığını PEFT troubleshooting rehberine göre kontrol edin.
`eos_token_id`, list halinde multiple EOS, `pad_token_id`, `min_new_tokens`, `max_new_tokens` ve stopping criteria generation davranışını değiştirir. Model yalnız hard limit ile duruyorsa training template'i ve EOS label'ı düzeltilmeden sadece stopping criteria eklemek semptomu gizler.
Aynı chat template, aynı prompt ve deterministic decoding ile base model düzgün duruyor, adapter model durmuyorsa problem adapter training/masking tarafındadır. Base model de bozuksa tokenizer/template/generation pipeline önce düzeltilmelidir.
Tokenizer special token map'i kaydedin; 5 training example'ını token ID ve decoded biçimde inceleyin; assistant başlangıç ve bitiş token'larını label içinde doğrulayın; base/adapter inference'ı aynı config ile karşılaştırın; checkpoint tokenizer dosyalarının modelle birlikte dağıtıldığını kontrol edin.
| Belirti | Muhtemel neden | Kontrol |
|---|---|---|
| Hiç durmuyor | EOS label yok | Assistant son token labels |
| Role token basıyor | Yanlış template | Decoded training sequence |
| Boş cevap | Assistant mask/truncation | Supervised token count |
| Base düzgün adapter bozuk | Fine-tune formatı | Base vs adapter A/B |
Ç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.
Her zaman değil. Kritik nokta gerçek EOS token'larının padding sanılıp loss'tan maskelenmemesidir.
EOS üretmeyi öğrenmemiş, yanlış EOS ID kullanıyor veya generation pipeline doğru EOS'u tanımıyor olabilir.
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.