num_thread
CPU thread sayısı (llama.cpp -t / --threads)
Local inference'ta CPU üzerinde hesaplama yapan thread sayısı. llama.cpp'de `-t` / `--threads`, Ollama'da `num_thread`. Default, fiziksel (performans) çekirdek sayısıdır.
Model ağırlıklarının bir kısmı ya da tamamı CPU'da çalışıyorsa (n_gpu_layers ile kısmi offload, ya da GPU'suz makine), matris çarpımları birden fazla thread'e bölünür. Thread sayısı hızı doğrudan etkiler, ama "ne kadar çok o kadar iyi" değildir.
llama.cpp'de iki ayrı ayar var:
-t/--threads: token üretimi (generation) için thread sayısı.-tb/--threads-batch: prompt işleme (batch) için. Default:--threadsile aynı.
-t verilmezse (default -1, Ekim 2026 itibarıyla) llama.cpp
"matematik için faydalı" çekirdek sayısını kendisi seçer:
- macOS: performans çekirdeği sayısı (
hw.perflevel0.physicalcpu), verimlilik çekirdekleri hariç. - Linux x86-64, hibrit CPU: E-core'lar ve hyperthread kardeşleri hariç P-core sayısı. Kaynak koddaki gerekçe: E-core'lar adımları kilitli ilerleyen thread'leri yavaşlatır, hyperthreading de lineer cebire fayda getirmez.
- Diğer Linux / Windows: fiziksel çekirdek sayısı.
Ollama: num_thread default 0 = "runtime karar versin". Ollama
GGUF modelleri llama.cpp sunucusu üzerinden çalıştırır ve
num_thread 0'dan büyükse ona -t olarak geçirir; aksi hâlde yukarıdaki
llama.cpp seçimi geçerli olur. Güncel Modelfile parametre tablosunda
artık listelenmiyor, API'de options.num_thread olarak duruyor.
Bir mutfakta aynı yemeği hazırlayan aşçılar. Her ocağa (fiziksel çekirdek) bir aşçı koymak verimli. Aynı ocağa ikinci aşçıyı (hyperthread) eklemek işi hızlandırmaz, birbirlerinin yoluna girerler. Çırakları (E-core) ekibe katmak da kötü: herkes en yavaşın bitirmesini bekler.
8 P-core + 8 E-core'lu, toplam 24 mantıksal thread gösteren bir Linux masaüstü. Model tamamen CPU'da çalışıyor.
| Ayar | Ne olur |
|---|---|
-t 24 | Tüm mantıksal thread'ler; E-core'lar ve hyperthread'ler darboğaz olur |
-t 16 | P + E karışık; en yavaş çekirdek temposu belirler |
-t 8 | Sadece P-core'lar; llama.cpp'nin kendi seçtiği default |
Hangisinin en hızlı olduğu donanıma göre değişir; tahmin etme, ölç.
llama.cpp'nin llama-bench aracı birden fazla değeri tek seferde dener:
``
llama-bench -m model.gguf -t 4,6,8,12,16
``
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Merhaba",
"options": { "num_thread": 8 }
}'# Yeni kurulum (llama.app): llama serve
# Eski binary adıyla: llama-server
llama serve -hf ggml-org/Qwen3.5-0.8B-GGUF \
--threads 8 \
--threads-batch 16 \
-ngl 0
# Başlangıç log'undaki "system_info: n_threads = ..." satırı
# gerçekte kullanılan değeri gösterir- Model tamamen ya da kısmen CPU'da çalışıyorsa — hız üzerinde en etkili ayarlardan biri
- Makinede başka ağır işler varsa — birkaç çekirdeği onlara bırakmak için thread'i azalt
- Konteyner ya da VM'de çekirdek kısıtı varsa — otomatik algılama host'un çekirdeklerini görebilir
- Benchmark sonucu default'tan farklı bir değeri işaret ediyorsa
- Model tamamen GPU'daysa — hesap GPU'da döner, thread sayısının etkisi sınırlıdır
- Otomatik seçim doğruysa — fiziksel çekirdek sayısı zaten iyi bir başlangıç
- 'Mantıksal thread sayısı kadar' koymak için — çoğu zaman yavaşlatır
Mantıksal çekirdek sayısını vermek
Görev yöneticisinin gösterdiği sayı (hyperthread dahil) fiziksel çekirdeğin iki katı olabilir. Token üretimi bellek bant genişliğiyle sınırlı olduğundan fazladan thread genelde kazanç getirmez, hatta yarışma yüzünden yavaşlatır.
Bellek bant genişliği tavanı
Belirli bir noktadan sonra thread eklemek token/s'yi artırmaz; darboğaz artık RAM bant genişliğidir. 6 ile 12 thread aynı sonucu veriyorsa az olanı seç, makinenin geri kalanı rahat etsin.
Konteyner kotası
Docker'da --cpus 4 gibi bir kota varken otomatik algılama host'taki tüm çekirdekleri sayabilir. Kotaya uygun -t (ya da num_thread) değerini açıkça ver.