2026'da SLM: Küçük Dil Modellerine ve Karşılaştırmalara Genel Bakış
2023'te "AI modeli" neredeyse her zaman GPT-4 veya Claude anlamına geliyordu. 2026 yılında manzara ve tamamen farklı: Phi-4-mini (3,8 milyar parametre), Mixtral 8x7B'den (46B) daha iyi performans gösteriyor Matematiksel akıl yürütme kıyaslamalarında 135 milyon SmolLM2 parametresi çalışır Raspberry Pi 4 ve Gemma 3n E4B, 1300'ün üzerinde bir LMArena Elo'ya sahip; bu da pek çok kişiden daha yüksek Bir yıl önceki 70B modelleri. Küçük Dil Modelleri çağı geldi ve bunun bazı sonuçları var Yapay zeka uygulamaları geliştirenler için somut.
Ne Öğreneceksiniz
- 2026'daki ana SLM'lerin haritası: Phi-4-mini, Gemma 3n, Qwen 3, SmolLM2, DeepSeek
- Kriterler nasıl yorumlanır: MMLU, HumanEval, MATH, GPQA
- Kodlama, akıl yürütme, sohbet ve sınıflandırma görevleri için hangi modelin seçileceği
- Her modelde yerel çıkarım için gerekli donanım
- Kullanım senaryonuzda özel kıyaslamalar nasıl çalıştırılır?
2026'da "Küçük" Dil Modelini Ne Tanımlıyor?
"Küçük" tanımı zamanla değişti. 2024'te "küçük" 7B'nin altı anlamına geliyordu parametreler. 2026 yılında, 1B modellerinin iki yıl önceki 13B'lerle rekabet etmesiyle eşik uygulama değişti: SLM'yi 10B parametreleri altında çalışabilen modeller olarak değerlendiriyoruz agresif nicemleme olmadan tüketici donanımında.
| Modeli | Parametreler | Yaratıcı | Lisans | VRAM (fp16) |
|---|---|---|---|---|
| SmolLM2 | 135M - 1,7B | SarılmaYüz | Apaçi 2.0 | 0,3 - 3,5 GB |
| Phi-4-mini | 3.8B | Microsoft | MİT | 7,6 GB |
| Gemma 3n E4B | 4B eff. | Gemma Hizmet Şartları | 8 GB | |
| Qwen 3 (1,7B) | 1,7 milyar | Alibaba'nın | Apaçi 2.0 | 3,4 GB |
| Qwen 3 (7B) | 7B | Alibaba'nın | Apaçi 2.0 | 14 GB |
| DeepSeek-R1 (7B) | 7B damıtılmış | Derin Arama | MİT | 14 GB |
| Mistral 7B v0.3 | 7B | Mistral Yapay Zeka | Apaçi 2.0 | 14 GB |
| Lama 3.2 (3B) | 3B | Yarım | Lamalar 3.2 | 6GB |
Karşılaştırmalar: Bunları Doğru Şekilde Yorumlama
Akademik kriterler faydalıdır ancak dikkatle yorumlanmalıdır. Üstün bir model MMLU'daki (genel bilgi) temiz Python kodu oluşturmak için yetersiz olabilir. İşte ana kriterler ve gerçekte ölçtükleri şeyler.
Temel Akademik Kriterler
# Confronto benchmark principali (valori approssimativi, Febbraio 2026)
benchmarks = {
"Phi-4-mini (3.8B)": {
"MMLU": 72.8, # Conoscenza generale, 57 soggetti
"HumanEval": 62.3, # Completamento codice Python
"MATH": 70.5, # Ragionamento matematico (AMC/AIME)
"GPQA Diamond": 36.2, # PhD-level science questions
"MT-Bench": 7.8, # Conversazione multi-turno (1-10)
},
"Gemma 3n E4B": {
"MMLU": 74.1,
"HumanEval": 58.7,
"MATH": 65.3,
"GPQA Diamond": 34.8,
"MT-Bench": 8.1,
"LMArena Elo": 1312, # Confronto umano (stile chess ELO)
},
"Qwen 3 7B": {
"MMLU": 78.3,
"HumanEval": 72.1,
"MATH": 78.9,
"GPQA Diamond": 41.2,
"MT-Bench": 8.4,
},
"DeepSeek-R1 7B distilled": {
"MMLU": 75.2,
"HumanEval": 68.4,
"MATH": 82.3, # Eccelle nel ragionamento matematico
"GPQA Diamond": 38.7,
"MT-Bench": 8.0,
},
# Per confronto: modelli piu grandi
"Mixtral 8x7B (46B)": {
"MMLU": 71.4, # Phi-4-mini (3.8B) lo supera!
"HumanEval": 60.1,
"MATH": 66.8,
},
}
# NOTA IMPORTANTE: i benchmark non misurano tutto
# - Hallucination rate (frequenza di invenzioni plausibili)
# - Instruction following su task complessi
# - Context handling su documenti lunghi
# - Velocita di inferenza su hardware specifico
# - Consumo energetico
Kullanım Durumunuza Göre Bir Karşılaştırma Nasıl Oluşturulur?
from lm_eval.api.model import LM
from lm_eval import evaluator
import json
def benchmark_slm_for_custom_task(
model_name: str,
task_examples: list[dict],
metric_fn: callable
) -> dict:
"""
Benchmark di un SLM su un task personalizzato.
task_examples: lista di {"input": str, "expected": str}
metric_fn: funzione che restituisce float 0-1 (accuracy, F1, etc.)
"""
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
results = []
total_time = 0
for example in task_examples:
import time
start = time.time()
inputs = tokenizer(example["input"], return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=256,
temperature=0.1, # bassa temperatura per task deterministici
do_sample=False
)
elapsed = time.time() - start
generated = tokenizer.decode(
outputs[0][inputs.input_ids.shape[1]:],
skip_special_tokens=True
)
score = metric_fn(generated, example["expected"])
results.append({
"input": example["input"][:50],
"expected": example["expected"],
"generated": generated,
"score": score,
"latency_ms": elapsed * 1000
})
total_time += elapsed
avg_score = sum(r["score"] for r in results) / len(results)
avg_latency = sum(r["latency_ms"] for r in results) / len(results)
return {
"model": model_name,
"task_score": round(avg_score, 4),
"avg_latency_ms": round(avg_latency, 1),
"total_examples": len(results),
"hardware": torch.cuda.get_device_name(0) if torch.cuda.is_available() else "CPU",
"detail": results
}
# Esempio di uso per classificazione del sentiment in italiano
sentiment_examples = [
{"input": "Classifica il sentiment: 'Il prodotto e eccellente!' -> ", "expected": "positivo"},
{"input": "Classifica il sentiment: 'Esperienza terribile, non lo raccomando' -> ", "expected": "negativo"},
# ... 100 esempi dal proprio dataset reale ...
]
def exact_match(generated: str, expected: str) -> float:
return 1.0 if expected.lower() in generated.lower() else 0.0
# Eseguire il benchmark su piu modelli
for model in ["microsoft/phi-4-mini", "Qwen/Qwen3-7B", "google/gemma-3n-e4b"]:
result = benchmark_slm_for_custom_task(model, sentiment_examples, exact_match)
print(f"{model}: score={result['task_score']}, latency={result['avg_latency_ms']}ms")
Donanım Gereksinimleri: SLM'leri Çalıştırmak için Gerekenler
SLM'lerin temel avantajlarından biri tüketici donanımı üzerinde çalışmalarıdır. İşte pratik kılavuz.
| Donanım | VRAM / RAM | Uyumlu Modeller (fp16) | Jeton/sn (yaklaşık) |
|---|---|---|---|
| MacBook M3 Pro (18 GB) | 18 GB birleşik | Phi-4-mini, Gemma 3n, Lama 3.2 3B | 25-40 tok/sn |
| MacBook M4 Max (48 GB) | 48 GB birleştirilmiş | Hepsi 7B, Lama 3 8B | 60-80 tok/sn |
| RTX 4060 (8 GB) | 8 GB VRAM | Phi-4-mini q4, SmolLM2 1.7B | 35-55 tok/sn |
| RTX 4070 (12 GB) | 12 GB VRAM | Phi-4-mini FP16, Qwen 3 7B q4 | 50-70 tok/sn |
| RTX 4090 (24 GB) | 24 GB VRAM | Tüm 7B fp16, Lama 3 8B | 100-130 tok/sn |
| A100 Sunucu (80GB) | 80 GB VRAM | 40B'ye kadar modeller | 200-400 tok/sn |
# Verificare se un modello entra nella VRAM disponibile
def check_model_fits_vram(
model_name: str,
quantization: str = "fp16",
safety_margin: float = 0.85
) -> dict:
"""
Stima il VRAM necessario e verifica la compatibilita.
quantization: 'fp32', 'fp16', 'int8', 'int4' (gguf q4)
"""
import torch
# Stima parametri del modello
param_counts = {
"microsoft/phi-4-mini": 3.8e9,
"google/gemma-3n-E4B": 4.0e9,
"Qwen/Qwen3-7B": 7.6e9,
"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B": 7.6e9,
"meta-llama/Llama-3.2-3B": 3.2e9,
"HuggingFaceTB/SmolLM2-1.7B": 1.7e9,
}
bytes_per_param = {
"fp32": 4, "fp16": 2, "bf16": 2, "int8": 1, "int4": 0.5
}
params = param_counts.get(model_name, 0)
if params == 0:
return {"error": f"Model {model_name} not in database"}
model_vram_gb = (params * bytes_per_param.get(quantization, 2)) / 1e9
overhead_gb = 1.5 # KV cache + activations
total_vram_gb = model_vram_gb + overhead_gb
available_vram = 0
if torch.cuda.is_available():
available_vram = torch.cuda.get_device_properties(0).total_memory / 1e9
elif hasattr(torch.backends, 'mps') and torch.backends.mps.is_available():
# Apple Silicon: usare la memoria di sistema disponibile
import psutil
available_vram = psutil.virtual_memory().available / 1e9 * 0.7
fits = total_vram_gb <= available_vram * safety_margin
return {
"model": model_name,
"quantization": quantization,
"model_vram_gb": round(model_vram_gb, 2),
"total_with_overhead_gb": round(total_vram_gb, 2),
"available_gb": round(available_vram, 2),
"fits": fits,
"recommendation": "OK" if fits else
f"Insufficiente: prova int4 o un modello piu piccolo"
}
# Test
for model in ["microsoft/phi-4-mini", "Qwen/Qwen3-7B"]:
for quant in ["fp16", "int8", "int4"]:
result = check_model_fits_vram(model, quant)
status = "OK" if result["fits"] else "NO"
print(f"[{status}] {model} ({quant}): {result['total_with_overhead_gb']:.1f}GB needed")
Kullanım Durumunuz için Hangi SLM'yi Seçmelisiniz?
Model seçimi esas olarak göreve bağlıdır. İşte buna dayalı pratik kılavuz 2026'da karşılaştırmalar ve topluluk testleri.
Kullanım Senaryosu Önerileri
- Kodlama (Python, TypeScript, SQL): Qwen 3 7B veya DeepSeek-R1 7B — 7B için sınıfının en iyisi
- Matematiksel/mantıksal akıl yürütme: DeepSeek-R1 7B damıtılmış — tabana göre büyük gelişme
- Sohbet ve genel asistan: Phi-4-mini veya Gemma 3n — en iyi kalite/boyut oranı
- Basit sınıflandırma ve NLU: SmolLM2 1.7B — birçok görev için halihazırda eşiğin üzerinde
- Cihazdaki mobil: Gemma 3n E4B (NPU için optimize edilmiş) veya SmolLM2 135M
- İtalyan RAG'ı: Phi-4-mini (çok dilli forte) veya Mistral 7B v0.3
Sonuçlar
2026, Küçük Dil Modelleri çağını kesin olarak doğruladı: 3-7B modelleri Doğru mimari ve doğru eğitim verileri, iki yıldan 10 kat daha eski modelleri geride bırakıyor önce. Seçim artık "LLM vs SLM" değil, "hangi SLM'nin hangi donanımda hangi görev için olduğu" olacaktır.
Serideki bir sonraki makale Phi-4-mini ve Gemma 3n'yi ayrıntılı olarak karşılaştırıyor: iki seçenek Kodlamada yan yana kıyaslamalarla 2026'da uç dağıtım için en ilgi çekici olanı, İtalyanca ve İngilizce muhakeme ve konuşma görevleri.
Seri: Küçük Dil Modelleri
- Madde 1 (bu): 2026'da SLM - Genel Bakış ve Karşılaştırma
- Makale 2: Phi-4-mini ve Gemma 3n - Ayrıntılı Karşılaştırma
- Madde 3: LoRA ve QLoRA ile ince ayar yapma
- Madde 4: Kenar için Niceleme - GGUF, ONNX, INT4
- Madde 5: Ollama - 5 Dakikada Yerel Olarak SLM







