AI Atlas
Orta · ~2 dk okuma #num_thread #cpu-inference #inference

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.

24 MANTIKSAL THREAD ≠ 24 FAYDALI THREADHİBRİT CPUP-CORE × 8E-CORE × 8kullanılan threadhyperthread (boşta)E-core (dışarıda)LLAMA.CPP DEFAULT-t 8Linux hibrit: P-core sayısımacOS: performans çekirdeğidiğer: fiziksel çekirdek-t 24 → fazla thread ≠ hızOllama num_thread = 0 iken seçimi llama.cpp yapar; en iyi değeri llama-bench ile ölç
Tanım

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: --threads ile 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.

Benzetme

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.

Gerçek dünyadan örnek

8 P-core + 8 E-core'lu, toplam 24 mantıksal thread gösteren bir Linux masaüstü. Model tamamen CPU'da çalışıyor.

AyarNe olur
-t 24Tüm mantıksal thread'ler; E-core'lar ve hyperthread'ler darboğaz olur
-t 16P + E karışık; en yavaş çekirdek temposu belirler
-t 8Sadece 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 ``

Kod örnekleri
Ollama API · thread sayısını elle vermek bash
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Merhaba",
  "options": { "num_thread": 8 }
}'
llama.cpp · üretim ve prompt işleme için ayrı thread sayısı bash
# 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
Ne zaman kullan
  • 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
Ne zaman kullanma
  • 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
Sık yapılan hatalar

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.