--- license: apache-2.0 language: - tr - en base_model: Qwen/Qwen3.5-4B tags: - turkish - fine-tuned - qwen - conversational - text-generation - system-monitoring - log-classification - json-output pipeline_tag: text-generation --- # Jazari-4B-SFT-TR Qwen3.5-4B tabanlı, Türkçe'ye adapte edilmiş 4B parametreli dil modeli. [Türkçe](#türkçe) | [English](#english) --- ## Türkçe ### Nedir? Jazari, Qwen3.5-4B modelinin Türkçe'ye adapte edilmiş hâlidir: 1. **Devam Eden Ön-Eğitim (CPT):** 674 MB Türkçe metin, 11.939 adım 2. **Denetimli İnce-Ayar (SFT):** 73.182 örnek, 13 kategori, 9.600 adım Tek bir RTX 5090 GPU'da (vast.ai), toplam ~75$ maliyetle, ~1 haftada eğitildi. ### Gerçek Dünyada Kullanım: ailm Sistem İzleme Jazari, [ailm](https://github.com/mahsumaktas/ailm) projesinde canlı olarak kullanılmaktadır — Linux sistem loglarını sınıflandırma, kök neden analizi ve aksiyon önerisi için. **ailm Entegrasyon Sonuçları (canlı sistem, 7/24):** | Metrik | Sonuç | |--------|-------| | JSON çıktı başarısı | **70/70 (%100)** — 20 farklı log + 50 tekrar testi | | Determinizm | **%100** — aynı giriş = aynı çıktı (temperature=0) | | Hız | **1.2 saniye/event** (gpt-oss:20b'den 11x hızlı) | | VRAM | **2.7 GB** (gpt-oss:20b'nin 13 GB'sine karşı) | | Kapsam | Severity, action (restart/investigate/ignore), root cause | > **Not:** Model kartı daha önce "JSON formatında patlıyor" diyordu. Yapılandırılmış prompt + `temperature=0` ile bu sorun tamamen ortadan kalkmıştır. 70/70 başarısız JSON çıktısı yoktur. **Örnek ailm çıktıları:** ``` Giriş: kernel: BUG: soft lockup - CPU#3 stuck for 22s! Çıktı: {"severity": "critical", "action": "reboot", "summary": "init.scope: BUG: soft lockup - CPU#3 stuck for 22s!", "root_cause": "CPU soft lockup likely due to driver or hardware issue"} Giriş: plasmashell[1234]: segfault at 0x0 Çıktı: {"severity": "critical", "action": "restart_service", "summary": "user@1000.service: segfault at 0x0 in libc.so.6", "root_cause": "Likely a memory corruption or library incompatibility"} Giriş: Accepted publickey for mahsum from 100.64.0.1 Çıktı: {"severity": "info", "action": "ignore", "summary": "sshd.service: Accepted publickey for mahsum", "root_cause": "This is a normal authentication event"} ``` ### Benchmark Sonuçları #### Türkçe Benchmark (360 soru) | Benchmark | Açıklama | Soru | jazari | qwen3.5:4b | |-----------|----------|:----:|:------:|:----------:| | TR-MMLU | Türkçe bilgi (12 konu) | 120 | **85.0%** | 80.0% | | TR-ARC | Türkçe bilim | 50 | **98.0%** | 84.0% | | TR-GSM8K | Türkçe matematik | 50 | 52.0% | **66.0%** | | TR-TruthfulQA | Yanlış bilgi tespiti | 40 | **95.0%** | 52.5% | | TR-HellaSwag | Cümle tamamlama | 40 | **97.5%** | 47.5% | | TR-Winogrande | Referans çözümleme | 30 | **66.7%** | 43.3% | | TR-Cultural | Türk kültürü | 30 | **76.7%** | 33.3% | | **Toplam** | | **360** | **82.5%** | 65.0% | #### ailm JSON Sınıflandırma Benchmark (70 test) | Test | Sonuç | |------|-------| | 20 farklı sistem logu | 20/20 geçerli JSON | | 50 tekrar (determinizm) | 50/50 aynı çıktı | | Severity doğruluğu | CRITICAL/WARNING/INFO doğru | | Action doğruluğu | restart_service/investigate/ignore doğru | | Root cause | Her event için açıklama | | Karşılaştırma: gemma3:12b | 0/4 JSON başarısı | | Karşılaştırma: qwen3.5:4b | 1/4 JSON başarısı | | Karşılaştırma: gpt-oss:20b | 4/4 ama 11x yavaş | #### Türkçe E-posta Sınıflandırma (50 gerçek iş e-postası, 11 kategori) 5.548 gerçek iş e-postasından rastgele seçilen 50 örnek üzerinde zero-shot test: | Sonuç | Değer | |-------|-------| | Genel doğruluk | **%56** (28/50) | | JSON formatı | **%100** (50/50 geçerli JSON) | | Hız | **0.6 saniye/mail** | **Kategori bazlı:** | Kategori Tipi | Doğruluk | Not | |---------------|----------|-----| | Belirgin kalıplar (hukuki bildirimler, resmi yazışmalar) | **%100** | Konu satırı yeterli ipucu veriyor | | Orta karmaşıklık (finans, planlama) | **%60** | İçerik analizi gerekiyor | | Domain-spesifik (teknik terimler, sektörel jargon) | **%0-40** | Fine-tune olmadan tanıyamıyor | > **Yorum:** Model, genel e-posta kategorilerini iyi tanıyor ancak domain-spesifik sınıflandırma için ek eğitim (SFT) gerekir. JSON formatı her durumda başarılı — sorun sınıf bilgisinde, format disiplininde değil. ### Bilinen Sınırlamalar 1. **Aşırı güven:** "Bilmiyorum" demez, yanlış cevap uydurabilir 2. **Genel JSON:** Serbest formda JSON üretimi tutarsız olabilir (yapılandırılmış prompt + temperature=0 ile sorun yok) 3. **Çeviri:** Türkçe→İngilizce çeviride başarısız olabilir 4. **Matematik:** TR-GSM8K'da base modelden zayıf (%52 vs %66) 5. **Domain-spesifik sınıflandırma:** Eğitim verisinde olmayan sektörel kategorileri tanıyamıyor (zero-shot %56, fine-tune ile iyileştirilebilir) ### Güçlü Yönleri - **Türkçe akıcılık:** Base Qwen3.5-4B'ye kıyasla daha doğal Türkçe - **Kültürel bilgi:** Türk deyimleri, atasözleri ve kültürel referanslar - **Yapılandırılmış çıktı:** Doğru prompt ile %100 JSON uyumluluğu (e-posta ve log sınıflandırmada kanıtlanmış) - **Hız:** 0.6-1.2 saniye/istek — gerçek zamanlı uygulamalara uygun - **Verimlilik:** 2.7 GB VRAM — tüketici GPU'larında çalışır - **Üretimde kanıtlanmış:** ailm'de 18 izleme kaynağı ile 7/24 çalışıyor ### Kullanım ```python from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("mahsum/jazari-4b-sft-tr") tokenizer = AutoTokenizer.from_pretrained("mahsum/jazari-4b-sft-tr") messages = [{"role": "user", "content": "Türkiye'nin başkenti neresidir?"}] inputs = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt") output = model.generate(inputs, max_new_tokens=256, temperature=0.7) print(tokenizer.decode(output[0], skip_special_tokens=True)) ``` #### Ollama ile ```bash ollama run jazari-4b-sft ``` #### ailm ile (sistem izleme) ```bash # ~/.config/ailm/config.toml [llm] model = "jazari-4b-sft" timeout = 30 ``` ### Gelecek Adımlar (v2 Yol Haritası) - [ ] 26 GB temizlenmiş Türkçe metin ile tam CPT (şu an sadece 674 MB) - [ ] Hizalama eğitimi (SimPO/GRPO) - [ ] Geliştirilmiş format disiplini ve talimat takibi - [ ] Belirsizlik kalibrasyonu ("Bilmiyorum" eğitimi) - [ ] Resmi Cetvel benchmark değerlendirmesi - [ ] Uç cihaz dağıtımı için GGUF nicelenmiş sürümler --- ## English ### What is this? Jazari-4B-SFT-TR is a Qwen3.5-4B model adapted for Turkish through: 1. **Continued Pre-Training (CPT):** 674 MB of Turkish text, 11,939 steps 2. **Supervised Fine-Tuning (SFT):** 73,182 examples across 13 categories, 9,600 steps Trained on a single RTX 5090 GPU (vast.ai) for ~$75 total cost in ~1 week. ### Real-World Deployment: ailm System Monitor Jazari is deployed in production as the classification engine for [ailm](https://github.com/mahsumaktas/ailm), an AI-powered Linux system companion with 18 monitoring sources. **Live System Results (24/7 operation):** | Metric | Result | |--------|--------| | JSON output reliability | **70/70 (100%)** — 20 diverse logs + 50 determinism tests | | Determinism | **100%** — same input = same output (temperature=0) | | Speed | **1.2s/event** (11x faster than gpt-oss:20b) | | VRAM | **2.7 GB** (vs 13 GB for gpt-oss:20b) | | Coverage | Severity, action (restart/investigate/ignore), root cause analysis | > **Note:** The model card previously stated "Struggles with strict output formats." With a structured system prompt + `temperature=0`, JSON compliance is 100% across 70 tests. The key is prompt engineering, not model limitation. **Comparison with other models on ailm classification task:** | Model | Size | Speed | JSON Success | Quality | |-------|------|-------|:------------:|---------| | **jazari-4b-sft** | 4.5 GB | **1.2s** | **100%** | Excellent | | gpt-oss:20b | 13 GB | 13.2s | 100% | Excellent | | gemma3:12b | 8.1 GB | 7.9s | 0% | Cannot produce JSON | | qwen3.5:4b | 3.4 GB | 67.6s | 25% | Unreliable | ### Training Details | Parameter | Value | |-----------|-------| | Base Model | Qwen/Qwen3.5-4B | | CPT Data | 674 MB Turkish text | | SFT Data | 73,182 examples (13 categories) | | LoRA Rank | CPT: r=128, SFT: r=64 (rsLoRA) | | Framework | Unsloth 2026.3.x + TRL 0.29.1 | | GPU | NVIDIA RTX 5090 (32 GB VRAM) | | Total Cost | ~$75 (vast.ai) | ### Turkish Benchmark (360 questions) | Benchmark | jazari | qwen3.5:4b | |-----------|:------:|:----------:| | TR-MMLU (knowledge) | **85.0%** | 80.0% | | TR-ARC (science) | **98.0%** | 84.0% | | TR-TruthfulQA | **95.0%** | 52.5% | | TR-HellaSwag | **97.5%** | 47.5% | | TR-Cultural | **76.7%** | 33.3% | | **Overall (360q)** | **82.5%** | 65.0% | #### Turkish Email Classification (50 real business emails, 11 categories) Zero-shot test on 50 randomly sampled emails from a 5,548-email business corpus: | Result | Value | |--------|-------| | Overall accuracy | **56%** (28/50) | | JSON format | **100%** (50/50 valid JSON) | | Speed | **0.6s/email** | | Category Type | Accuracy | Note | |---------------|----------|------| | Clear patterns (legal notices, official correspondence) | **100%** | Subject line provides sufficient signal | | Medium complexity (finance, scheduling) | **60%** | Requires content analysis | | Domain-specific (technical jargon, industry terms) | **0-40%** | Needs fine-tuning | > JSON format is always correct — the issue is category knowledge, not format discipline. Domain-specific SFT would likely raise accuracy to 85%+. ### Known Limitations 1. **Overconfidence:** Rarely says "I don't know" 2. **Free-form JSON:** Inconsistent without structured prompts (works perfectly with structured prompts + temperature=0) 3. **Translation:** Cannot reliably translate Turkish to English 4. **Math:** Weaker than base on TR-GSM8K (52% vs 66%) 5. **Domain-specific classification:** Cannot recognize industry categories not in training data (zero-shot 56%, improvable with fine-tuning) ### Strengths - **Turkish fluency:** Natural Turkish responses - **Cultural knowledge:** Turkish idioms, proverbs, cultural references - **Structured output:** 100% JSON compliance with proper prompting (proven in both email and log classification) - **Speed:** 0.6-1.2s/request — suitable for real-time applications - **Efficiency:** 2.7 GB VRAM — runs on consumer GPUs - **Production-proven:** Running 24/7 in ailm with 18 monitoring sources ### Citation ```bibtex @misc{aktas2026jazari, title={Jazari-4B-SFT-TR: Low-Budget Turkish Adaptation of Qwen3.5-4B}, author={Aktas, Mahsum}, year={2026}, url={https://huggingface.co/mahsum/jazari-4b-sft-tr} } ``` ### Acknowledgments - [Qwen Team](https://huggingface.co/Qwen) for the base model - [Unsloth](https://github.com/unslothai/unsloth) for training optimizations - [vast.ai](https://vast.ai) for affordable GPU compute --- *Jazari, robotik biliminin babası olarak kabul edilen Türk-Müslüman bilim insanı ve mühendis El-Cezerî'den (1136-1206) adını almıştır.* *Jazari is named after Al-Jazari (1136-1206), the Turkish-Muslim polymath and engineer, often regarded as the father of robotics.*