Speculative Decoding (Spekülatif Kod Çözme)

Spekülatif Kod Çözme, küçük bir taslak modelin önerdiği tokenleri büyük hedef modelin paralel doğruladığı, çıktı kalitesini koruyarak 2–4× çıkarım hızlanması sağlayan LLM optimizasyon tekniğidir.

Speculative Decoding (Spekülatif Kod Çözme), büyük dil modellerinin (LLM) otoregresif çıkarım hızını artırmak için tasarlanmış lossless bir optimizasyon tekniğidir. Klasik otoregresif çıkarımda her token, hedef modelin (target model) tek bir ileri geçişini (forward pass) gerektirir; bu süreç GPU'nun hesap kapasitesini tam verimde kullanmaz ve bellek bant genişliği darboğazına yol açar. Speculative decoding bu sorunu iki model mimarisiyle çözer: küçük, hızlı bir taslak model (draft model) ve büyük, kaliteli bir hedef model. Her adımda taslak model γ token önerir (genellikle γ = 4–8). Hedef model bu γ tokeni tek bir toplu ileri geçişte paralel olarak doğrular; yani γ+1 token için gereken hesaplama maliyeti, tek token üretme maliyetiyle yaklaşık eşittir. Spekülatif örnekleme (speculative sampling) kuralı, her tokenin hedef modelin olasılık dağılımıyla uyumluluk olasılığına göre kabul veya reddedilmesini belirler. İlk ret noktasından itibaren hedef modelin kendi tahminleri devreye girer. Bu prosedür, hedef modelin doğrudan örneklemesiyle istatistiksel olarak özdeş bir çıktı dağılımı üretir; dolayısıyla lossless bir hızlanmadır. Gerçek uygulamalarda hız kazanımı, taslak modelin kabul oranına (acceptance rate) bağlıdır. Kod tamamlama ve formüllü metinler gibi düşük entropili çıktılarda kabul oranı %80–90'a ulaşabilir ve 2×–4× duvar saati hızlanması gözlemlenir. Buna karşın yüksek entropi gerektiren yaratıcı metinlerde kazanım azalır. Tekniğin çeşitli biçimleri geliştirilmiştir. Medusa, hedef modele ek taslak başları (heads) ekleyerek ayrı bir draft modeline olan ihtiyacı ortadan kaldırır. EAGLE ve EAGLE-2, gizli katman aktivasyonlarından beslenen tek katmanlı ağ yapısıyla çok yüksek kabul oranları elde eder. Self-speculative yöntemler ise hedef modelin erken çıkış katmanlarını taslak olarak kullanır; bu sayede ikinci bir modele gerek kalmaz. Üretim ortamında Google Gemini, Anthropic Claude, vLLM ve SGLang speculative decoding'i aktif biçimde kullanmaktadır. Gerçek zamanlı sohbet asistanları ve anlık kod tamamlama araçları, düşük gecikme gereksinimi nedeniyle bu teknikten en fazla kazanım elde eden uygulama alanlarıdır.

fast_forward Speculative Decoding Nasıl Çalışır?

Süreç iki modele dayanır: Taslak model (küçük, hızlı) ve Hedef model (büyük, kaliteli). Her adımda: (1) Taslak model γ token üretir (genellikle γ=4-8). (2) Hedef model bu tokenleri tek seferde paralel işleyip olasılık dağılımlarını hesaplar. (3) Spekülatif örnekleme kuralına göre tokenler kabul/ret edilir. (4) İlk ret noktasından sonra hedef modelin öngörüsü alınır. Tüm bu süreç hedef modelin tek token üretme süresine yakın tamamlanır.

Yaygın Uygulamalar

compress Küçük Taslak Model

Örneğin Llama 70B için Llama 7B taslak olur. Aynı tokenizer ve vokabüler paylaşılması şarttır. vLLM ve llama.cpp bu yaklaşımı destekler.

device_hub Medusa

Tek modele birden fazla taslak kafa (head) ekler; ayrı model gerekmez. Her kafa bir sonraki pozisyonu tahmin eder. Küçük bellek yüküyle hızlanma sağlar.

speed EAGLE / EAGLE-2

Hedef modelin gizli katman aktivasyonlarından beslenen taslak kafa. Çok yüksek kabul oranıyla 3-4× hızlanma. Açık kaynak; HuggingFace'de mevcuttur.

Spekülatif Kod Çözmenin Çalışma Mekanizması

  • check_circle Taslak Model ve Doğrulama: Küçük taslak model (draft): büyük hedef modelden 5-10× küçük; hızlıca k token üretir. Büyük hedef model: üretilen k token'ı paralel doğrular — kabul/red kararı verir. Kabul edilen token'lar tutulur; ilk reddedilen noktada hedef model kendi token'ını üretir.
  • check_circle Hız Kazanımı Mekanizması: Hedef modelin tek forward pass'ı k+1 token doğrulayabilir — sadece 1 token üretmekle aynı maliyet. k token beklenti: kabul oranı yüksekse çok token kazanılır. Tipik hız artışı: 2-3× daha hızlı çıkarım — aynı donanımda, aynı kalitede.
  • check_circle Taslak Model Seçimi: N-gram: geçmiş token'lardan taslak üret — ek model yok. Küçük dil modeli: Llama 3 70B için Llama 3 8B taslak. Self-speculative: aynı modelin erken çıkış katmanları taslak olarak. Medusa: bir forward pass'ta birden fazla taslak başlığı.

Spekülatif Kod Çözmenin Uygulamaları ve Sınırları

Kullanım alanları: gerçek zamanlı konuşma asistanı, anlık kod tamamlama, düşük gecikme chatbot. Google Gemini çıkarım hızlandırması: spekülatif decoding kullanılıyor. Hugging Face Assisted Generation: transformers kütüphanesi built-in speculative decoding desteği. llama.cpp: speculative decoding opsiyonu mevcut. Sınırlar: kabul oranı düşükse (taslak zayıf) fayda azalır; bellek: taslak model ek VRAM gerektirir. En iyi sonuç: taslak ve hedef model aynı tokenizer — farklı tokenizer çalışmaz. Kontrol: belirleyici — çıktı kalitesi token başına örneklemeyle tam aynı.

quiz Sık Sorulan Sorular

  • check_circle Çıktı kalitesi düşer mi?: Hayır. Orijinal spekülatif örnekleme matematiksel olarak hedef modelin örneklemesiyle eşdeğerdir (lossless). Greedy veya temperature örneklemede çıktı aynıdır.
  • check_circle Tüm modeller için uygun mu?: En etkilidir: yavaş otoregresif modeller + düşük batch size + yüksek kabul oranı gerektiren dağılım benzeri modeller. Çok kısa üretimde veya yüksek temperature'da kazanım azalır.
  • check_circle Nerede kullanılıyor?: Google'ın Gemini API, Anthropic'in Claude API, vLLM, llama.cpp ve SGLang; speculative decoding'i production'da kullanmaktadır.
  • check_circle Spekülatif kod çözme nedir?: Büyük dil modelinin çıkarımını hızlandırmak için küçük bir taslak modelin token önerdiği, büyük modelin bu önerileri paralel doğruladığı tekniktir. Çıktı kalitesini düşürmeden 2-3× hız artışı sağlar.
  • check_circle Spekülatif kod çözme güvenilir mi?: Evet. Matematiksel olarak ispat edilmiş: spekülatif decoding çıktısı hedef modelin doğrudan üretimindekiyle istatistiksel olarak özdeş. Farklı token üretilmez — yalnızca hızlanır.
  • check_circle Spekülatif kod çözme nasıl aktive edilir?: Hugging Face: generate() çağrısına assistant_model=draft_model parametresi. llama.cpp: -md <draft_model_path> ve -ngld <lookahead> argümanları. vLLM: spekülatif decoding yerleşik destekli — yapılandırma dosyasında aktive.
  • check_circle Hangi durumlarda en fazla hız kazanılır?: Taslak modelin kabul oranı yüksek olduğunda: benzer eğitim dağılımı, aynı tokenizer. Düşük entropi bölgeler: formül, kod template, tekrarlı yapı. Yüksek entropi (yaratıcı metin): kabul oranı düşer, kazanım azalır.