--- 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 | <> | %91.2 | **%93.2** | %92.0 | | **Turkish MMLU** — alibayram/turkish_mmlu, 6.200 sınav sorusu, 5 şık (cloze, uzunluk normalize) | %20 | <> | %24.1 | %25.0 | — | | Turkish MMLU — aynı set, şık harfi (A–E) | %20 | <> | %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 | <> | %99.7 | | kısıt (230) | talimat takibi (IFEval tarzı): biçim / tam doğru | <> | %75.2 / %40.4 | | tanım (90) | ham modelin bildiği ama SFT'de görmediği varlıklarda doğru kategori | <> | %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)** * <> ö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.