decider-4b-tr: Türkçe kararlar, kalibre olasılıklar, 1 epoch
English summary. A Turkish LoRA fine-tune (rank 64, merged into the bf16 weights) of
Mapika/decider-4b v2.1, a 4.2B decision model on Qwen3.5-4B-Base that returns a
calibrated probability for every option of typed choice / noul / score questions in one forward pass, without generating
text. Trained for one epoch on 63.990 rows of Turkish decision data (machine-translated bev-decision-150K and SQuAD 2.0,
native Turkish MASSIVE, XNLI and movie reviews) plus English replay rows trained toward the base model's own answers. On
101.716 held-out test decisions accuracy goes from 0.689 to 0.796, ECE from
0.028 to 0.020; answerability on Turkish SQuAD 2.0 from 0.683 to
0.862 (AUROC 0.809 → 0.940). The independent jev-bench sets are unchanged.
FP8 serving (DECIDER_FP8=1) costs no measurable accuracy here.
Bu model, Mapika/decider-4b'nin (v2.1, Apache-2.0) Türkçe karar verisiyle LoRA
ince ayarı yapılmış halidir. decider metin üretmez: bir durum (state) ve tipli sorular alır, her sorunun her seçeneği için
kalibre edilmiş bir olasılığı tek ileri geçişte döndürür. Sorular Laya ve
TypeSafe Jev ile aynı şemadadır:
- choice: seçeneklerden biri (ör. hangi birim, hangi niyet),
- noul: bir ifadenin doğru olma olasılığı (evet/hayır),
- score: sıralı seviyelerden biri (her seviye ayrı bir evet/hayır satırında değerlendirilir).
Kullanım
Çıkarım kodu (decider/) bu repoda; torch, transformers>=5 ve flash-linear-attention gerekir (hız için
causal-conv1d önerilir). Ağırlıklar bf16'da 8,4 GB.
import sys
from huggingface_hub import snapshot_download
path = snapshot_download("hayriyigit/decider-4b-tr", token="hf_...") # private repo: okuma yetkili bir token
sys.path.insert(0, path)
from decider.infer import Decider
d = Decider(path)
state = "Siparişim iki haftadır gelmedi, kargo takip numarası da çalışmıyor. Paramı geri istiyorum."
questions = {
"birim": {"type": "choice", "instructions": "Bu talebi hangi birim ele almalı?",
"criteria": {"fatura": "ödeme, iade, fatura", "kargo": "teslimat ve takip", "teknik": "uygulama veya site hataları"}},
"iade": {"type": "noul", "instructions": "Müşteri para iadesi istiyor."},
"memnuniyet": {"type": "score", "instructions": "Müşteri ne kadar memnun?",
"criteria": ["Çok memnuniyetsiz", "Memnuniyetsiz", "Nötr", "Memnun", "Çok memnun"]},
}
answers = d.system_one(state, questions)["answers"]
Bu modelin bu örnekteki cevabı:
| Soru | Cevap | Olasılık |
|---|---|---|
| birim | fatura (kargo 0,353) |
0,644 |
| iade | evet | 0,986 |
| memnuniyet | Çok memnuniyetsiz (seviye 0) | 0,887 |
"birim" sorusunda model iadeyi öne çıkarıyor: müşteri parasını geri istiyor ve "iade" fatura biriminin açıklamasında geçiyor. İki seçenek de makul olduğunda olasılıklar bunu gösterir (0,64 / 0,35).
FP8: DECIDER_FP8=1 (ya da Engine(path, fp8=True)) büyük lineer katmanları yüklerken e4m3 FP8'e çevirir (ağırlıklar kanal,
aktivasyonlar token bazında ölçeklenir); ayrı bir dosya gerekmez. Ayrıntılar aşağıda.
Sıcaklıklar (soru türü başına, decider_config.json) eğitimde görülmemiş Türkçe kararlarda kalibre edildi: choice 0,936,
noul 1,146, score 1,093.
Değerlendirme
Test, laya-tr-karar'ın test setinin aynısıdır (101.716 karar): iki model
ailesi satır satır karşılaştırılabilir. "Önce" ince ayar öncesi Mapika/decider-4b'dir. Metni bir test satırında da geçen
eğitim satırları eğitimden çıkarılmıştı.
Kaynağa göre
| Test seti | Karar | Doğruluk (önce) | Doğruluk (sonra) | Fark (puan) | ECE (önce) | ECE (sonra) | laya-tr-karar |
|---|---|---|---|---|---|---|---|
| bev-decision-150K-tr (makine çevirisi) | 46.320 | 0,669 | 0,838 | +16,9 | 0,027 | 0,009 | 0,774 |
| bev-decision-150K, İngilizce orijinal | 5.766 | 0,720 | 0,754 | +3,4 | 0,021 | 0,013 | 0,772 |
| jev-bench-tr (benchmark, makine çevirisi) † | 22.773 | 0,710 | 0,708 | −0,2 | 0,031 | 0,051 | 0,496 |
| jev-bench, İngilizce orijinal † | 2.000 | 0,768 | 0,770 | +0,2 | 0,034 | 0,035 | 0,584 |
| MASSIVE tr-TR (ana dili Türkçe) | 2.974 | 0,829 | 0,871 | +4,2 | 0,036 | 0,036 | 0,773 |
| XNLI Türkçe test (insan çevirisi) | 5.010 | 0,813 | 0,832 | +1,9 | 0,036 | 0,015 | 0,733 |
| beyazperde film yorumları (ana dili Türkçe) | 5.000 | 0,520 | 0,634 | +11,3 | 0,050 | 0,040 | 0,533 |
| SQuAD 2.0 dev, cevaplanabilirlik (makine çevirisi) | 11.873 | 0,683 | 0,862 | +17,9 | 0,049 | 0,017 | 0,703 |
| Hepsi | 101.716 | 0,689 | 0,796 | +10,7 | 0,028 | 0,020 | 0,686 |
† Train bölümü eğitimde kullanılmayan, bağımsız test setleri. Diğerlerinin train bölümlerinden eğitime satır girdi (test satırları hariç).
Soru türüne göre
| Tür | Karar | Doğruluk (önce) | Doğruluk (sonra) | ECE (önce) | ECE (sonra) |
|---|---|---|---|---|---|
| choice | 39.616 | 0,717 | 0,814 | 0,056 | 0,021 |
| noul | 39.371 | 0,783 | 0,875 | 0,007 | 0,018 |
| score | 22.729 | 0,478 | 0,630 | 0,032 | 0,024 |
Cevaplanabilirlik (SQuAD 2.0 dev, Türkçe)
Soru: "Verilen document, question sorusunun TÜM kısımlarını doğru ve eksiksiz şekilde cevaplamak için yeterli bilgiyi
açıkça içeriyor mu? …" (noul), state {"question": …, "document": …}; 11.873 soru, yarısı cevaplanamaz.
| Model | Doğruluk | AUROC | Cevaplanabilirde doğru | Cevaplanamazda doğru |
|---|---|---|---|---|
| decider-4b (önce) | 0,683 | 0,809 | 0,918 | 0,439 |
| decider-4b-tr | 0,862 | 0,940 | 0,938 | 0,783 |
Konusu aynı ama istenen bilgiyi içermeyen belgeler, P(evet):
| Belge ("Türksat 6A hangi tarihte uzaya fırlatıldı?") | laya-tr-karar | decider-4b (önce) | decider-4b-tr |
|---|---|---|---|
| Belgedeki tarih başka bir olaya (bir toplantıya) ait | 0,920 | 0,354 | 0,025 |
| Belgede hiç tarih yok | 0,917 | 0,066 | 0,027 |
| Fırlatma tarihi yazıyor | 0,919 | 0,926 | 0,996 |
Nasıl okunmalı
- Kazancın çoğu eğitim verisinin geldiği kaynaklarda: bev-tr, SQuAD-tr, beyazperde, MASSIVE ve XNLI. Bağımsız jev-bench setleri (†) yerinde kaldı (0,710 → 0,708); yani model bu veri ailelerini öğrendi, genel bir "Türkçe karar" sıçraması ölçülmedi.
- İngilizce unutulmadı: İngilizce bev doğruluğu arttı, İngilizce jev-bench aynı kaldı.
- Kalibrasyon zaten iyiydi ve iyi kaldı: toplam ECE 0,028 → 0,020. noul'da biraz kötüleşti (0,007 → 0,018).
- Kötüleşen jev-bench alt setleri: civil_comments −7,5, sst5 −4,9, strategyqa_grounded −3,6, helpsteer2_helpfulness −2,9, sms_spam −1,7, mmlu −1,6, ledgar −1,6, arc_challenge −1,1, strategyqa_closed −1,0 puan. Nedeni ayrıca incelenmedi.
- laya-tr-karar ile: bu model 14 kat büyük ve İngilizce bev dışında her kaynakta onun üzerinde; özellikle bağımsız jev-bench'te (Laya 0,496) ve kalibrasyonda (Laya ECE 0,083). Laya çok daha hızlıdır: aynı test setini aynı GPU'da Laya ~2 dakikada, bu model ~1 saatte (eager, CUDA graph'sız) değerlendirdi.
bev-decision alanları (Türkçe test)
| Alan | Karar | Doğruluk (önce) | Doğruluk (sonra) |
|---|---|---|---|
| Sentiment, emotion, and moderation | 11.526 | 0,727 | 0,865 |
| Spatial and logical reasoning | 8.384 | 0,508 | 0,783 |
| Retail, product, and shopping | 6.601 | 0,695 | 0,936 |
| Response preference and quality | 3.176 | 0,511 | 0,638 |
| Support and intent routing | 2.858 | 0,866 | 0,971 |
| Tool and workflow decisions | 2.307 | 0,952 | 0,987 |
| Software security | 2.240 | 0,516 | 0,688 |
| Game-state decisions | 2.039 | 0,701 | 0,879 |
| Software engineering and code | 2.039 | 0,671 | 0,723 |
| Financial reporting and banking | 1.740 | 0,573 | 0,826 |
| Reading comprehension | 1.422 | 0,860 | 0,864 |
| Scientific and paper understanding | 508 | 0,671 | 0,835 |
| Contract evidence | 320 | 0,700 | 0,838 |
| Browser interaction | 286 | 0,762 | 0,850 |
| Spam detection | 271 | 0,985 | 0,978 |
| Civic and safety operations | 261 | 0,460 | 0,770 |
| Sensory quality rating | 260 | 0,269 | 0,400 |
| Engagement and ranking | 82 | 0,573 | 0,646 |
jev-bench-tr alt setleri (bağımsız)
| Alt set | Karar | Doğruluk (önce) | Doğruluk (sonra) | Fark (puan) |
|---|---|---|---|---|
| arc_challenge | 1.000 | 0,844 | 0,833 | −1,1 |
| banking77 | 1.000 | 0,786 | 0,810 | +2,4 |
| boolq | 1.000 | 0,862 | 0,877 | +1,5 |
| chaosnli | 1.599 | 0,594 | 0,637 | +4,4 |
| civil_comments | 2.000 | 0,938 | 0,863 | −7,5 |
| clinc150 | 1.000 | 0,877 | 0,873 | −0,4 |
| fever_evidence | 1.000 | 0,909 | 0,926 | +1,7 |
| go_emotions | 1.000 | 0,486 | 0,496 | +1,0 |
| helpsteer2_helpfulness | 1.000 | 0,432 | 0,403 | −2,9 |
| helpsteer2_verbosity | 1.000 | 0,668 | 0,661 | −0,7 |
| ledgar | 1.000 | 0,694 | 0,678 | −1,6 |
| massive | 1.000 | 0,832 | 0,867 | +3,5 |
| measuring_hate_speech | 1.000 | 0,460 | 0,534 | +7,4 |
| mmlu | 1.000 | 0,631 | 0,615 | −1,6 |
| mnli | 1.000 | 0,821 | 0,832 | +1,1 |
| paws | 1.000 | 0,665 | 0,694 | +2,9 |
| sms_spam | 800 | 0,976 | 0,959 | −1,7 |
| sst5 | 1.000 | 0,477 | 0,428 | −4,9 |
| strategyqa_closed | 687 | 0,553 | 0,543 | −1,0 |
| strategyqa_grounded | 687 | 0,841 | 0,805 | −3,6 |
| stsb | 1.000 | 0,509 | 0,510 | +0,1 |
| yelp5 | 1.000 | 0,652 | 0,643 | −0,9 |
FP8
Aynı 13.371 test kararında (rastgele 10.000 satır), RTX 5090:
| bf16 | FP8 (DECIDER_FP8=1) |
|
|---|---|---|
| Doğruluk | 0,797 | 0,796 |
| ECE | 0,021 | 0,021 |
| NLL | 0,522 | 0,524 |
İstek başına gecikme, medyan (CUDA graph + torch.compile) |
23,5 ms | 14,7 ms |
FP8 doğruluğa ölçülebilir bir maliyet getirmedi; medyan gecikme %37 düştü. Gecikme 300 gerçek test isteğinde, istekler tek tek gönderilerek ölçüldü. Bu isteklerin uzunlukları farklı olduğu için yeni şekillerde CUDA graph yakalaması da ölçüme girdi: %90'lık gecikme (83,2 / 90,2 ms) ve toplam hız bu yüzden temsil edici değildir. Toplu (batch) sunumda hız ölçülmedi.
Eğitim
| Kaynak | Satır |
|---|---|
| bev-decision-150K-tr train (alan ağırlıklı, örtüşmesi temizlenmiş) | 27.000 |
| SQuAD 2.0-tr train (cevaplanabilirlik) | 20.000 |
| MASSIVE tr-TR train | 5.000 |
| beyazperde train | 5.000 |
| XNLI Türkçe validation | 2.490 |
| bev-decision-150K train, İngilizce (replay) | 6.000 |
Satırlar laya-tr-karar'ın veri hazırlığından alındı. 1.500 Türkçe satır (metne göre gruplanmış) doğrulama ve sıcaklık kalibrasyonu için ayrıldı; kalan 63.990 satırdan decider'ın kendi prompt koduyla 169.657 prompt satırı çıktı (56.858.516 token): her soru ayrı satırda, her score seviyesi ayrı bir evet/hayır satırında, seçenek sırası karıştırılarak.
| Taban model | Mapika/decider-4b v2.1 (eb5fbdf), Qwen3.5-4B-Base |
| Yöntem | LoRA rank 64, alpha 128; attention (q/k/v/o, linear attention in_proj_qkv/in_proj_z/out_proj) ve MLP (gate/up/down); 121,9M eğitilen parametre; eğitimden sonra bf16 ağırlıklara birleştirildi |
| Kayıp | Türkçe satırlarda gold dağılımına cross-entropy; İngilizce satırlarda donuk taban modelin kendi cevap dağılımına (KL), decider-4b v2.1'in unutmaya karşı tarifi |
| Program | 1 epoch, 786 adım × 65.536 token; öğrenme hızı 1e-4, %5 ısınma, cosine; AdamW, gradient clip 1,0 |
| Donanım ve süre | 1 × RTX 5090 (32 GB), bf16, gradient checkpointing, causal-conv1d ile; eğitim 3 sa 56 dk (~4.400 token/s) |
| Doğrulama (eğitim sonu) | 3.826 satırda slot doğruluğu 0,891, cross-entropy 0,260 |
| Sıcaklık | decider.calibrate.fit_by_type, 2.118 ayrılmış Türkçe cevapta: choice 0,936, noul 1,146, score 1,093 |
Eğitim ve değerlendirme kayıtları (config, eğitim kaydı, önce/sonra raporları, FP8 ölçümleri) training/ klasöründe.
Sınırlamalar
- Eğitim verisinin çoğu makine çevirisidir; bağımsız Türkçe testlerde (jev-bench) iyileşme görülmedi.
- Kalibrasyon Türkçe veriyle yapıldı; farklı bir alanda kullanmadan önce eşikleri kendi verinizle kontrol edin.
- Taban modelin sınırlamaları geçerlidir (bkz. decider-4b kartı): RL aşaması yok, zor çok adımlı sorularda fazla emin olabilir.
- Yalnızca Türkçe ve İngilizce değerlendirildi.
- FP8 hızı yalnızca tek tek isteklerde, medyan gecikme olarak ölçüldü.
Lisans
Taban model Apache-2.0'dır. Eğitim verilerinin lisansları farklıdır; ayrıntılar LICENSE.md'de.
- Downloads last month
- -