Local LLM Model Karşılaştırması: Production İçin Hangisi?
Ollama üzerinde 6 farklı local LLM modelini gerçek bir production use case ile test ettim: Mistral Small 24B, Gemma 3 (4B/12B), Llama 3.1 8B, Qwen3-Coder 14B, DeepSeek R1 14B. Hangisi instruction-following, JSON generation ve nested search konularında en iyi? Detaylı benchmark sonuçları ve production önerileri.
Test Senaryosu: Kurumsal Menü Arama
Teorik benchmark'lar yerine gerçek bir production use case kullandım: 100+ menü öğesi içeren bir ERP sisteminde kullanıcıları doğru sayfaya yönlendiren bir asistan.
Zorluk Seviyeleri:
- Nested search: 3-4 seviye derinlikte alt menüler (recursive arama gerekli)
- Ambiguous keywords: "rapor" kelimesi 12 farklı yerde geçiyor
- JSON output: Strict schema'ya uygun yapılandırılmış yanıt
- Instruction-following: System prompt'taki kuralları harfiyen takip etme
- Türkçe NLP: Türkçe keyword matching ve semantic understanding
Test Edilen Modeller
# Google Models
- gemma:4b (Gemma 3 4B) - 2.7GB
- gemma:12b (Gemma 3 12B) - 8.5GB
# Meta Models
- llama3.1:8b (Llama 3.1 8B) - 4.7GB
# Mistral AI
- mistral-small:24b (Mistral Small 24B) - 14GB
# Chinese Models
- qwen2.5-coder:14b (Qwen3-Coder 14B) - 9.0GB
- deepseek-r1:14b (DeepSeek R1 14B) - 9.2GB
Hardware Setup:
Test Metodolojisi
1. Standardize System Prompt
Tüm modellere aynı system prompt verildi. Prompt engineering farklılığını elimine ettim, sadece model capability'yi test ettim.
Sen bir web uygulaması menü yönlendirme asistanısın.
KURALLAR:
1. SADECE menü yönlendirmesi yap
2. Nested menüleri recursive ara
3. MUTLAKA JSON formatında yanıt ver
4. Belirsiz durumlarda TÜM eşleşmeleri döndür
YANIT FORMATI:
{
"matches": [
{
"path": "Sol menü → Ana Menü → Alt Menü",
"route": "/path/to/page",
"permission": "REQUIRED_PERMISSION"
}
],
"total": N,
"query": "kullanıcı sorusu"
}
2. Test Case: "rapor" Keyword
Sistemde "rapor" kelimesi içeren 12 farklı menü var. İdeal sonuç: 12/12 eşleşme bulma.
💡 Neden "rapor" Testi?
"rapor" keyword'ü hem nested menülerde hem de farklı kategorilerde geçiyor. Model'in recursive search, semantic matching ve JSON serialization yeteneklerini aynı anda test ediyor.
12 Rapor Menüsü Listesi:
1. Sol menü → Beyanname → Teminat İşlemleri → Rapor
2. Sol menü → Tarımsal → Tarımsal Raporlar
3. Sol menü → Tarımsal → Tarımsal Raporlar → İade Raporları
4. Sol menü → Tarımsal → Tarımsal Raporlar → Dolaşım Belgeleri Raporu
5. Sol menü → Raporlar → Üyenin GBleri
6. Sol menü → Raporlar → Üyenin GBleri Raporu
7. Sol menü → Raporlar → Performans ve Güvenilirlik Formu
8. Sol menü → Raporlar → Genel Kurul Raporu
9. Sol menü → Raporlar → Beyanname Log İzleme
10. Sol menü → Raporlar → Kullanıcı Performans Raporu
11. Üst menü → Yönetim → Raporlar
12. Üst menü → Analiz → Rapor Dashboard
Detaylı Test Sonuçları
📊 Özet Tablo:
┌─────────────────────┬────────┬──────────┬──────────┬──────────┬────────────┐
│ Model │ Size │ Matches │ JSON │ Speed │ Production │
├─────────────────────┼────────┼──────────┼──────────┼──────────┼────────────┤
│ Gemma 3 4B │ 2.7GB │ 1/12 ❌ │ Broken │ 150ms │ NO │
│ Llama 3.1 8B │ 4.7GB │ 5/12 🟡 │ Partial │ 180ms │ NO │
│ Gemma 3 12B │ 8.5GB │ 6/12 🟡 │ Good │ 220ms │ MAYBE │
│ Qwen3-Coder 14B │ 9.0GB │ 8/12 🟢 │ Good │ 240ms │ YES │
│ DeepSeek R1 14B │ 9.2GB │ 9/12 🟢 │ Excellent│ 280ms │ YES │
│ Mistral Small 24B │ 14GB │ 12/12 ✅ │ Perfect │ 200ms │ YES ⭐ │
└─────────────────────┴────────┴──────────┴──────────┴──────────┴────────────┘
Model-by-Model Analiz
❌ 6. Gemma 3 4B - FAIL (1/12)
Sorunlar:
- Sadece 1 menü buldu, diğer 11'ini kaçırdı
- JSON formatını bozdu, invalid output
- Nested search yapamıyor, sadece yüzeysel arama
- Prompt'taki instruction'ları takip etmiyor
{
"Response1": {
"path_description": "Beyanname → Teminat İşlemleri → Rapor",
"url": "/declaration/guarantee-transactions/report"
}
// Missing 11 other matches
// Invalid JSON structure (should be "matches" array)
}
Verdict:
❌ Production'a UYGUN DEĞİL. 4B parametre karmaşık instruction-following için yetersiz. Hobby projeler veya çok basit task'ler için kullanılabilir.
🟡 5. Llama 3.1 8B - WEAK (5/12)
Sorunlar:
- 5 menü buldu, 7 tanesini kaçırdı (%42 success rate)
- JSON formatı kısmen doğru ama inconsistent
- Nested search yapıyor ama shallow (2 seviye max)
- Türkçe keyword matching zayıf
Verdict:
🟡 Production için RİSKLİ. 8B parametre basic task'ler için yeterli ama kurumsal seviye ihtiyaçlar için güvenilir değil. %50 accuracy tolere edilemez.
🟡 4. Gemma 3 12B - MEDIOCRE (6/12)
İyileştirmeler (vs 4B):
- JSON formatı düzgün, valid output
- Nested search kısmen çalışıyor
- Instruction-following orta seviye
Hala Sorunlar:
- Yarısını buldu, yarısını kaçırdı (%50 accuracy)
- Deep nested menüleri bulamıyor (3+ seviye)
- Semantic matching zayıf
Verdict:
🟡 Production için SINIRLI KULLANIM. Non-critical features için kullanılabilir ama mission-critical task'ler için yeterli değil.
🟢 3. Qwen3-Coder 14B - GOOD (8/12)
Güçlü Yönler:
- 8/12 eşleşme (%67 accuracy) - kabul edilebilir seviye
- Mükemmel JSON formatting (code model olduğu için)
- Deep nested search yapabiliyor (3-4 seviye)
- Instruction-following iyi
Eksiklikler:
- 4 menüyü kaçırdı - edge case'lerde problem
- Türkçe NLP biraz zayıf (Chinese model)
Verdict:
✅ Production için UYGUN. %67 accuracy birçok use case için yeterli. Code-heavy task'lerde (JSON generation, API calls) mükemmel performans.
🟢 2. DeepSeek R1 14B - VERY GOOD (9/12)
Güçlü Yönler:
- 9/12 eşleşme (%75 accuracy) - çok iyi
- Excellent JSON formatting ve schema compliance
- Reasoning capabilities güçlü (R1 = Reasoning)
- Semantic understanding çok iyi
Neden 100% değil?:
- 3 menüyü kaçırdı - muhtemelen context window limitation
- Biraz daha yavaş (~280ms vs 200ms)
Verdict:
✅ Production için ÇOK UYGUN. %75 accuracy production-grade. Reasoning-heavy task'lerde (analysis, decision-making) mükemmel.
✅ 1. Mistral Small 24B - PERFECT (12/12) 🏆
Neden En İyi?:
- %100 accuracy - Tüm 12 menüyü buldu
- Perfect JSON - Schema'ya tamamen uyumlu
- Full nested search - 4 seviye derinliğe kadar arama
- Excellent instruction-following - Prompt'taki her kuralı uyguladı
- Fast - 24B parametre olmasına rağmen 200ms (en hızlılardan)
- Türkçe NLP - Multilingual training sayesinde güçlü
{
"matches": [
{
"path": "Sol menü → Beyanname → Teminat İşlemleri → Rapor",
"route": "/declaration/guarantee-transactions/report",
"permission": "READ_DECLARATION_REPORT"
},
{
"path": "Sol menü → Tarımsal → Tarımsal Raporlar",
"route": "/agricultural/reports",
"permission": "READ_AGRICULTURAL_REPORTS"
},
// ... 10 more matches (all correct)
],
"total": 12,
"query": "rapor"
}
Verdict:
🏆 PRODUCTION CHAMPION. Mission-critical task'ler için en güvenilir seçim. %100 accuracy, mükemmel JSON formatting, ve hızlı response time kombinasyonu production'da istikrarlı performans sağlıyor.
Model Size vs Performance Trade-off
Model Size → Accuracy Korelasyonu:
4B → 8% accuracy (1/12)
8B → 42% accuracy (5/12)
12B → 50% accuracy (6/12)
14B → 67% accuracy (8/12) [Qwen]
14B → 75% accuracy (9/12) [DeepSeek]
24B → 100% accuracy (12/12) [Mistral] ⭐
Sonuç: Logaritmik artış.
8B'den 24B'ye geçiş %400 performance artışı sağlıyor!
Critical Threshold: 14B-24B Arası
Test sonuçlarına göre production için minimum 14B parametre gerekli. Ama %100 accuracy için 24B ideal. 14B-24B arası "good enough" vs "perfect" farkı.
VRAM vs Model Size
Quantization Magic:
Mistral Small 24B full precision'da ~48GB VRAM istiyor. Ama 4-bit quantization (Q4_K_M) ile 14GB'ye düşüyor ve accuracy kaybı minimal (~2%).
# Full precision (FP16)
mistral-small:24b-fp16 → 48GB VRAM → 100% accuracy
# 8-bit quantization
mistral-small:24b-q8 → 24GB VRAM → 99% accuracy
# 4-bit quantization (RECOMMENDED)
mistral-small:24b-q4_K_M → 14GB VRAM → 98% accuracy
# 2-bit quantization (too aggressive)
mistral-small:24b-q2_K → 8GB VRAM → 85% accuracy ❌
Sonuç: Q4_K_M quantization ideal sweet spot. 14GB VRAM ile RTX 4090, RTX 3090 veya A5000 gibi consumer-grade GPU'larda çalışıyor.
Speed Benchmark: Tokens/Second
Model Tokens/sec Total Time Winner
───────────────────── ────────── ────────── ──────
Gemma 3 4B ~45 t/s 150ms 🥇 (fastest)
Llama 3.1 8B ~38 t/s 180ms 🥈
Mistral Small 24B ~35 t/s 200ms 🥉
Gemma 3 12B ~30 t/s 220ms
Qwen3-Coder 14B ~28 t/s 240ms
DeepSeek R1 14B ~24 t/s 280ms 🐌 (slowest)
Speed vs Accuracy Trade-off:
Gemma 3 4B en hızlı (%1 accuracy) → Kullanılamaz
Mistral Small 24B orta hızlı (%100 accuracy) → En balanced
DeepSeek R1 14B en yavaş (%75 accuracy) → Reasoning için iyi
Use Case Önerileri
🎯 Hangi Model Hangi İş İçin?
Mission-Critical Applications
Öneri: Mistral Small 24B
- Banking, fintech, healthcare sistemleri
- Legal document processing
- Customer-facing chatbots
- Automated decision-making
Neden? %100 accuracy tolere edilemeyen hata oranı için kritik.
Code Generation & Analysis
Öneri: Qwen3-Coder 14B veya DeepSeek R1 14B
- Code completion, refactoring
- Bug detection, code review
- API documentation generation
- SQL query generation
Neden? Code-specialized modeller JSON/structured output'ta mükemmel.
Internal Tools & Prototyping
Öneri: Gemma 3 12B veya Llama 3.1 8B
- Internal dashboard chatbots
- Dev tool assistants
- Prototype testing
- Non-critical automation
Neden? %50-67 accuracy tolere edilebilir, VRAM tasarrufu sağlar.
❌ Production'da KULLANILMASERİKTİK KULLANMAYIN
Gemma 3 4B, Llama 3.1 8B (kritik işlerde)
- %8-42 accuracy production için yetersiz
- Instruction-following güvenilmez
- JSON formatting bozuk
Kullanım alanı: Sadece hobby projeler, öğrenme, experimenting.
Cost Analysis: Cloud vs Local
Cloud LLM (GPT-4 / Claude Opus):
10,000 queries × $0.03/query = $300/month
+ Latency: 500-1000ms
+ Data privacy risk
Local LLM (Mistral Small 24B):
Electricity: ~$20/month (RTX 4090 power)
+ One-time GPU cost: $1,600 (amortized over 2 years = $67/month)
= Total: $87/month
💰 Savings: $213/month ($2,556/year)
🔒 Data stays local
⚡ Latency: 200ms (2-5x faster)
Gelecek Trendler
1. Smaller Models Getting Better
Gemma 3 ve Llama 4 gibi yeni nesil modeller, daha küçük parametre sayısıyla daha iyi performans sunuyor. 2026'da 8B model bugünün 24B'sini geçebilir.
2. Mixture of Experts (MoE)
Mixtral 8x7B gibi MoE modelleri, 56B parametre ama sadece 14B aktif oluyor. Büyük model performansı, küçük model VRAM tüketimi.
3. Specialized Fine-tuning
Domain-specific fine-tuning ile 14B model 24B'yi geçebilir. Örnek: Banking task'leri için fine-tune edilmiş Qwen3 14B, genel Mistral 24B'den daha iyi olabilir.
Öğrendiklerim ve Tavsiyeler
✅ Production İçin En İyi Pratikler:
- Minimum 14B parametre kullanın (critical systems için 24B)
- Q4 quantization ideal sweet spot (98% accuracy, 1/3 VRAM)
- Benchmark kendi use case'inizle - synthetic benchmark'lara güvenmeyin
- A/B testing yapın - gerçek kullanıcılarla test edin
- Fallback mechanism ekleyin - model fail ederse plan B olsun
- Monitoring kurun - accuracy, latency, error rate tracking
❌ Yapmamanız Gerekenler:
- Küçük modellere körü körüne güvenme - test etmeden production'a alma
- Cloud LLM'e hemen geçme - local alternatif varken gereksiz maliyet
- VRAM limitini zorla - OOM crash production'u durduruyor
- Prompt engineering ihmal etme - model ne kadar iyi olursa olsun prompt kritik
- Single model bağımlılığı - farklı task'ler farklı model isteyebilir
Sonuç
6 farklı local LLM modelini gerçek production use case ile test ettim. Sonuçlar net:
- 🏆 Mistral Small 24B: Mission-critical için en iyi (12/12, %100)
- 🥈 DeepSeek R1 14B: Reasoning-heavy task'ler için mükemmel (9/12, %75)
- 🥉 Qwen3-Coder 14B: Code generation için güçlü (8/12, %67)
- ⚠️ Gemma 3 12B, Llama 3.1 8B: Non-critical için kullanılabilir
- ❌ Gemma 3 4B: Production'a uygun değil
En önemli ders: Model parametresi kritik. 4B-8B basit task'ler için yeterli ama kurumsal ihtiyaçlar için 14B+ gerekli. 24B ile %100 accuracy mümkün ve cloud LLM'den 3x ucuz, 3x hızlı.