Toz-1 / README.md
Ahmetemiiii2's picture
Update README.md
120cf88 verified
|
Raw History Blame Contribute Delete
10.3 kB
---
language:
- tr
license: apache-2.0
library_name: transformers
pipeline_tag: text-generation
base_model: TozAI/Toz-1-Base
datasets:
- TozAI/Toz-1-SFT
- kilicai/turkish-ft-balanced-200k
tags:
- turkish
- türkçe
- turkish-language-model
- turkish-llm
- turkish-slm
- small-language-model
- language-model
- text-generation
- causal-lm
- decoder-only
- pretrained
- pretraining
- from-scratch
- trained-from-scratch
- chat
- instruction-following
- turkish-nlp
- natural-language-processing
---
# Töz-1
**Töz-1**, Töz AI'ın sıfırdan eğittiği ilk Türkçe dil modelidir: 195 milyon parametre,
yalnızca Türkçe, tokenizer'dan ağırlıklara kadar her şey kendi eğitimimiz. Bu depo
modelin **sohbet (SFT) sürümüdür**; ham ön eğitim modeli [TozAI/Toz-1-Base](https://huggingface.co/TozAI/Toz-1-Base).
Küçük bir model: sıradan bir bilgisayarın işlemcisinde çalışır, kısa ve sade Türkçe
cevaplar verir. Bir bilgi kaynağı değil, **küçük bir modelin neler yapabildiğini
gösteren bir deney** olarak görülmeli (bkz. Sınırlamalar).
Konuşmak için https://toz-chat.onrender.com/sohbet.html
## Sürümler
| sürüm | tarih | ne değişti |
|---|---|---|
| **v2** (bu sürüm) | Ekim 2026 | SFT'ye ~9.000 filtrelenmiş Türkçe sohbet örneği eklendi, matematik örnekleri 1.000 azaltıldı |
| v1 | 27 Eylül 2026 | ilk yayın; `revision="v1"` ile hâlâ indirilebilir |
**v2 neden?** v1 kendi ürettiğimiz dar kalıplarla eğitilmişti ve tanımadığı soru türlerini en yakın
kalıba zorluyordu: "Valorant oynayayım mı?" → "Hayır, adım Töz-1", "Matematik kursu almalı
mıyım?" → "Sadece tek basamaklı işlemler yapabiliyorum", "Valorant oynayabilir miyim?" →
"Bilgisayarına erişimim yok". Tavsiye, fikir ve gündelik sorular veride neredeyse yoktu;
"ben … miyim" (kullanıcı kendini soruyor) ile "sen … misin" (modelin yeteneği soruluyor) ayrımı
da öğrenilmemişti. v2 bu boşluğu gerçek sohbet örnekleriyle kapatmayı hedefliyor. Bilgi
düzeyi aynı: ön eğitim değişmedi.
```python
# v1'i kullanmak için
model = AutoModelForCausalLM.from_pretrained("TozAI/Toz-1", revision="v1")
```
## Hızlı başlangıç
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "TozAI/Toz-1"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype=torch.float32) # GPU'da torch.float16
mesajlar = [{"role": "user", "content": "Fransa'nın başkenti neresi?"}]
girdi = tok.apply_chat_template(mesajlar, add_generation_prompt=True,
return_tensors="pt", return_dict=True)
cikti = model.generate(**girdi, max_new_tokens=80)
print(tok.decode(cikti[0, girdi["input_ids"].shape[1]:], skip_special_tokens=True))
```
`transformers` 4.51 veya üstü gerekir (mimari Qwen3 olarak kayıtlı, `trust_remote_code` gerekmez).
Varsayılan üretim ayarları `generation_config.json`'da: temperature 0.7, top_p 0.9,
repetition_penalty 1.1. Bilgi sorularında daha düşük sıcaklık (0.3–0.4) daha tutarlı cevap verir.
**Sohbet biçimi** (chat template bunu kendisi kurar):
```
Kullanıcı: {soru}
Töz: {cevap}<|endoftext|>Kullanıcı: {soru}
Töz:
```
Sistem mesajı ile eğitilmedi. Bağlam penceresi 1024 token.
## Neler yapabilir
* Gündelik sohbet, selamlaşma, kendini tanıtma ("Sen kimsin?", "Seni kim yaptı?")
* Yaygın bilgi soruları: başkentler, kıtalar, Türkiye'nin illeri ve bölgeleri, bilinen kişi
ve kavramların kısa tanımı ("X kimdir?", "Y nedir?")
* Takip soruları: "Fransa'nın başkenti neresi?" → "Peki orada hangi dil konuşulur?"
* Tek basamaklı sayılarla toplama, çıkarma, çarpma; daha büyük hesaplarda yapamadığını söyler
* Basit biçim talimatları: tek kelimeyle cevap, "… ile başla/bitir", tırnak, iki cümle, JSON
* Evet/hayır sorularında önce bilgiyi söyleyip sonra karar verir:
"Edirne Marmara Bölgesi'ndedir, yani evet."
* Fikir sorularında ("Sence iyi biri miydi?") yargı bildirmez, bildiğini aktarır
## Değerlendirme
### Genel Türkçe benchmark'lar
Hepsi aynı scriptle (`mmlu_olc.py`, `turblimp_olc.py`), 0-shot, şıkların/cümlelerin
olasılığı karşılaştırılarak ölçüldü. Karşılaştırma için ufakzeka-1-base de **aynı scriptle**
ölçüldü.
| benchmark | şans | Töz-1 v2 | Töz-1 v1 | Töz-1-Base | ufakzeka-1-base |
|---|---|---|---|---|---|
| **TurBLiMP** — Türkçe dilbilgisi, 16 konu × 1.000 cümle çifti | %50 | <<DOLDUR: v2 TurBLiMP>> | %91.2 | **%93.2** | %92.0 |
| **Turkish MMLU** — alibayram/turkish_mmlu, 6.200 sınav sorusu, 5 şık (cloze, uzunluk normalize) | %20 | <<DOLDUR: v2 cloze_norm>> | %24.1 | %25.0 | — |
| Turkish MMLU — aynı set, şık harfi (A–E) | %20 | <<DOLDUR: v2 harf>> | %20.5 | %21.1 | — |
* TurBLiMP'te Töz-1-Base, 13.5B tokenla eğitilmiş ufakzeka-1-base'in (151M) önünde; Töz-1 4.42B
tokenla eğitildi. Dilbilgisi az veriyle doyan bir yetenek; dünya bilgisi gerektiren testlerde
daha çok token gören modellerin önde olması beklenir.
* Turkish MMLU (KPSS, TUS, ALES vb.) 195M bir model için çok zor: sonuç şansın üstünde
(6.200 soruda ±0.5 puan gürültü) ama düşük. Şık harfi biçimi küçük modellerde şans
seviyesinde kalır. ufakzeka-1 bu seti bizim scriptimizle ölçülmediği için "—".
* SFT bilgi testinde (MMLU) skoru korudu: v2'deki 9.000 sohbet örneği de modelin bilgisini bozmadı.
### Kendi donuk setlerimiz
Eğitimde hiç görülmeyen, modelin öğrenmesini istediğimiz davranışları ölçen setler
(veri setinde `olcum/`, puanlayıcılar `uretim/` altında):
| set | ne ölçüyor | Töz-1 v2 | Töz-1 v1 |
|---|---|---|---|
| matematik (305) | tek basamaklı işlemler, eğitimde olmayan soru kalıplarıyla | <<DOLDUR: v2 matematik>> | %99.7 |
| kısıt (230) | talimat takibi (IFEval tarzı): biçim / tam doğru | <<DOLDUR: v2 kısıt biçim / tam>> | %75.2 / %40.4 |
| tanım (90) | ham modelin bildiği ama SFT'de görmediği varlıklarda doğru kategori | <<DOLDUR: v2 tanım>> | %25.6 |
Tek bir eğitim koşusunun rastgeleliği bu küçük setlerde ±3–4 puan oynatabiliyor.
## Eğitim
**Ön eğitim** (Töz-1-Base)
* 5.68 milyar tokenlık Türkçe korpus (web metni 4.96B + Vikipedi 0.72B)
* 30.000 adım × 147.456 token = **4.42 milyar token** (~23 token/parametre)
* WSD öğrenme oranı (tepe 4e-4, 800 adım ısınma, 24.000. adımdan itibaren düşüş),
son %15'te Vikipedi oranı %8'den %35'e çıkarıldı
* AdamW (0.9, 0.95), weight decay 0.1, z-loss 1e-4, fp16 karışık hassasiyet
* Donanım: Kaggle 2× Tesla T4 ve tek bir RTX 3060 Ti (8 GB)
**SFT (v2)**
* <<DOLDUR: toplam örnek sayısı, eğitim logundaki "toplam" satırı>> örnek, 3 epoch, lr 1e-4 (kosinüs),
kayıp yalnızca cevap tokenlarında, tek RTX 3060 Ti
* **Kodla üretilen veri** (v1'den): kimlik, sohbet, bilgi, takip soruları, talimat kısıtları,
tek basamaklı matematik (v2'de 1.000 örnek azaltıldı), Vikipedi tanımları. Vikipedi tanımları
ham modele okutulup **modelin zaten bildiği** varlıklar seçilerek alındı (bilmediği bilgiyi
SFT'de öğretmek uydurmayı öğretir). Ayrıntılar: [TozAI/Toz-1-SFT](https://huggingface.co/datasets/TozAI/Toz-1-SFT)
* **Sohbet verisi** (v2'de eklendi): [kilicai/turkish-sft-clean-v5-strict-pruned](https://huggingface.co/datasets/kilicai/turkish-sft-clean-v5-strict-pruned)
(yazarın en sıkı temizlenmiş sürümü: güvensiz içerik ve tekrarlar silinmiş) içinden ~9.000 örnek;
soru-cevap, talimat, yaratıcı yazım ve çok turlu sohbet kategorileri. Sistem mesajları atıldı;
kod, başka model kimliği ("ChatGPT", "OpenAI"…), İngilizce ağırlıklı metin, 300 tokeni aşan
cevaplar ve 1024 tokeni aşan konuşmalar elendi (`sohbet_veri.py`).
**Mimari**
| | |
|---|---|
| parametre | 195M (bağlı embedding) |
| katman / genişlik / kafa | 18 / 768 / 12 |
| FFN | SwiGLU, 3072 |
| konum | RoPE (θ = 10.000), 1024 bağlam |
| normalizasyon | RMSNorm (pre-norm) + QK-norm |
| sözlük | 32.768 token, Türkçe için eğitilmiş byte-level BPE |
Mimari Hugging Face'teki Qwen3 ile birebir aynı olduğu için o sınıfla kaydedildi;
ağırlıklar Qwen'den **türetilmedi**, tamamen sıfırdan eğitildi.
## Sınırlamalar
* **Bilgi hataları yapar ve bunu kendinden emin söyler.** Örneğin bilinen bir padişahı
doğru kategoriyle tanımlayıp kaçıncı padişah olduğunu yanlış söyleyebilir. Önemli bir
bilgiyi bu modelden öğrenmeyin.
* 195M parametre ve 4.4B token, dünya bilgisi için az. Az bilinen kişi, yer ve olaylarda uydurur.
* Büyük harfle yazması istendiğinde bozulabilir (büyük harfli Türkçe ön eğitimde nadir).
* Liste uzunluğu, sınıflandırma ve karmaşık çok adımlı talimatlarda zayıf.
* Yalnızca tek basamaklı aritmetik; çok basamaklı hesap yapamaz.
* Sadece Türkçe; başka dillerde anlamlı cevap vermez.
* Web verisinden gelen önyargıları taşıyabilir; ayrı bir güvenlik eğitimi almadı.
## Lisans
Model ağırlıkları **Apache-2.0**. SFT verisinin Vikipedi kısmı CC BY-SA 4.0; v2'de eklenen
sohbet verisi (kilicai/turkish-sft-clean-v5-strict-pruned) Apache-2.0. Ticari olmayan lisanslı (Alpaca kökenli)
veri eğitimde **kullanılmadı**.
---
## English summary
Töz-1 is a 195M-parameter Turkish-only language model trained **from scratch** by Töz AI
(own tokenizer, 4.42B pre-training tokens on 2× T4 + one RTX 3060 Ti), followed by SFT on
programmatically generated examples plus (since v2, October 2026) ~9K filtered Turkish chat
conversations. v1 (27 Sep 2026) remains available via `revision="v1"`. It handles casual chat,
common facts, follow-up questions, single-digit arithmetic and simple formatting
instructions, and it confidently makes factual errors. On TurBLiMP (Turkish grammar
minimal pairs) the base model scores 93.2% vs 92.0% for ufakzeka-1-base (13.5B tokens), both
measured with the same script; on Turkish MMLU (6,200 exam questions) it scores 25.0%
(chance 20%). Treat it as a small-model
experiment, not a knowledge source. The architecture matches Qwen3 exactly (RMSNorm,
QK-norm, SwiGLU, RoPE, tied embeddings), so it loads with plain `transformers>=4.51`;
the weights are **not** derived from Qwen. License: Apache-2.0.