---
title: "Yerel LLM'iniz Sıcaklık (Temperature) 0 Değerinde Neden Farklı Yanıtlar Verir?"
url: https://blog.edumints.com/yerel-llm-iniz-sicaklik-temperature-0-degerinde-neden-farkli-yanitlar
category: "LLM"
date: 2026-10-28T08:07:07.280Z
publisher: Edumints Blog
lang: tr-TR
source_name: "dev.to"
source_url: https://dev.to/moca_fd0227eb23c29ea2d065/why-your-local-llm-gives-different-answers-at-temperature-0-32jn
---

# Yerel LLM'iniz Sıcaklık (Temperature) 0 Değerinde Neden Farklı Yanıtlar Verir?

Sıcaklık (temperature) değerini 0'a ayarladınız, rastgelelik tohumunu (seed) sabitlediniz ve aynı istemi (prompt) iki kez gönderdiniz; ancak iki farklı yanıt aldınız. Bu yazı, bu farkın nereden kaynaklandığını, kendi makinenizde bunu nasıl gözlemleyebileceğinizi ve tekrarlanabilir yanıtlara ihtiyacınız olduğunda çıkarım (inference) motorlarının ne sunduğunu açıklamaktadır.

## Belirti (Semptom)

Ölçülmüş bir vaka: `llama.cpp` sunucusuna (yapı b11643, Qwen2.5-7B-Instruct Q8_0, `-np 8`) karşı gsm8k veri setindeki 100 problem üzerinde `lm-evaluation-harness` çalıştırıldığında; ilk testte tek seferde bir istek, ikinci testte ise sekiz eşzamanlı (concurrent) istek gönderildi. Aynı model dosyası, aynı ayarlar ve açgözlü çözme (greedy decoding) kullanılmasına rağmen üretilen metinler 100 problemin 41'inde farklılık gösterdi. 0 numaralı problemde iki çalıştırma ilk 213 karakter boyunca aynı kaldı; ardından biri *"so she makes"*, diğeri ise *"so the total amount she makes"* yazdı ve çözümün geri kalanı tamamen farklı bir yola saptı. Tam eşleşme (strict-match) skoru 0.83'ten 0.82'ye düştü.

Bu durum yalnızca tek bir motora özgü değildir:
- **Thinking Machines Lab**, sıcaklık 0 değerinde aynı istemi 1.000 kez gönderdi ve 80 farklı tamamlama elde etti (*Defeating Nondeterminism in LLM Inference*, 2025).
- **Yuan ve ark.**, yalnızca GPU sayısı, GPU türü veya değerlendirme yığın (batch) boyutu değiştiğinde BF16 formatındaki DeepSeek-R1-Distill-Qwen-7B modelinde %9'a varan doğruluk değişimi ölçtü (*arXiv 2506.09501*).
- `llama.cpp`, Ollama, LM Studio ve vLLM hata takip sistemlerinin tamamında; istem önbelleği (prompt cache), spekülatif çözme (speculative decoding), slot sayısı veya GPU değiştiğinde sıcaklık-0 çıktısının değiştiğine dair raporlar bulunmaktadır.

## Sıcaklık 0 ve Seed Aslında Neyi Sabitler?

Sıcaklık ve seed yalnızca tek bir adımı kontrol eder: modelin hesapladığı olasılıklardan bir sonraki token'ı seçmek. Sıcaklık 0 değerindeyken motor en yüksek olasılıklı token'ı seçer ve seed işlevini yitirir. İkisi de olasılıkların kendisiyle ilgilenmez. Eğer logit değerleri çok küçük bir farkla bile farklı çıkarsa, greedy decoding sadık bir şekilde bu biraz farklı sayılar arasından seçim yapar. Dolayısıyla asıl soru, aynı modelin aynı girdi için neden biraz farklı logit değerleri hesapladığıdır.

## Neden 1: Kayan Noktalı (Floating-Point) Toplama İşlemi Sıraya Bağlıdır

Bilgisayar her kayan noktalı toplama işleminden sonra yuvarlama yapar; bu nedenle `(a + b) + c` her zaman `a + (b + c)` değerine eşit değildir. Her bir logit, milyonlarca çarpma-toplama (multiply-add) işleminin sonucudur ve bir GPU çekirdeğinin (kernel) bunları hangi sırayla topladığı son bitleri belirler. Birkaç satırlık NumPy kodu bunu açıkça gösterir:

```python
import numpy as np
rng = np.random.default_rng(0)
x = rng.standard_normal(4096).astype(np.float32)

def fsum(v): # float32 olarak baştan sona topla
    s = np.float32(0)
    for t in v:
        s = np.float32(s + t)
    return s

print(fsum(x) == fsum(x[::-1])) # False: farklı sıra son basamakları değiştirir

n = np.rint(x * 2**13).astype(np.int64) # tam sayı ızgarasında aynı değerler
print(n.sum() == n[::-1].sum()) # True: tam sayı toplamları sıraya bağlı değildir
```

Son iki satırı aklınızda tutun. Yazının sonunda tekrar karşımıza çıkacaklar.

## Neden 2: Motor Sizin İçin Sırayı Değiştirir

GPU çekirdekleri hız için yazılmıştır ve sayıları toplamanın en hızlı yolu işin şekline bağlıdır. İsteğiniz aynı kalsa bile motor hesaplama yöntemini her değiştirdiğinde işlem sırası da değişir:

- **Yığınlama (Batching) ve eşzamanlı istekler:** Sunucu, isteğinizi o anda yaptığı diğer işlerle birlikte hesaplar. Tek bir satır için yapılan matris çarpımı ile sekiz satır için yapılan çarpım, farklı indirgeme (reduction) sıralarına sahip farklı çekirdekler kullanabilir. Bu nedenle yığında (batch) başka kimlerin olduğuna bağlı olarak satırınızın sonucu biraz farklı çıkar. Thinking Machines, yığın değişmezliği (batch invariance) eksikliğinin temel neden olduğunu göstermiştir.

## Yazılım Geliştirme ve Pratik Çıkarımlar

LLM tabanlı uygulamalar geliştirirken `temperature=0` ayarını mutlak bir determinizm garantisi olarak görmek yanıltıcıdır:
- **Regresyon ve Değerlendirme Testleri:** CI/CD süreçlerinde veya model değerlendirmelerinde eşzamanlı istek sayısını (batch size) ve donanım ortamını sabit tutmak, test tutarlılığı için kritik öneme sahiptir.
- **Birebir Eşleşme Beklentisi:** Üretim ortamında sunucu yüküne bağlı olarak dinamik batching devreye girdiğinde çıktıların karakter bazında değişebileceğini öngörün ve testlerinizi birebir metin eşleşmesi yerine anlamsal doğruluk üzerine kurgulayın.

---

**Kaynak:** dev.to (https://dev.to/moca_fd0227eb23c29ea2d065/why-your-local-llm-gives-different-answers-at-temperature-0-32jn)
**Yayıncı:** [Edumints Blog](https://blog.edumints.com) · Alıntılarken bu URL'ye bağlantı verin: https://blog.edumints.com/yerel-llm-iniz-sicaklik-temperature-0-degerinde-neden-farkli-yanitlar
