Inference (Çıkarım (Model Çıkarımı))

Çıkarım, eğitilmiş bir yapay zeka modelinin model ağırlıklarını güncellemeden yeni girdilere yanıt ürettiği ileri besleme sürecidir.

Çıkarım (Inference), eğitilmiş bir yapay zeka modelinin yeni girdilere yanıt üretmek için kullanıldığı süreçtir. Eğitim aşamasının aksine, çıkarım sırasında model ağırlıkları güncellenmez; model yalnızca ileri besleme (forward pass) yapar. Büyük dil modellerinde çıkarım, prefill ve decode olmak üzere iki aşamadan oluşur. Prefill aşamasında giriş tokenlerinin tamamı paralel olarak işlenir ve KV önbelleği (KV cache) doldurulur; bu aşama GPU paralelizminden yüksek oranda yararlanır. Decode aşamasında ise model her seferinde bir token üretir ve KV önbelleğini günceller; bu aşama bellek bant genişliğiyle sınırlıdır (memory-bound). Çıkarım optimizasyonu, üretim sistemlerinde kritik öneme sahiptir. Temel metrikler: gecikme (latency — ilk token süresi ve token başına süre), verim (throughput — saniyede üretilen token sayısı), bellek kullanımı. Başlıca optimizasyon teknikleri şunlardır: Niceleme (Quantization): FP16/BF16, INT8, INT4 ile model boyutunu küçültme. KV Cache Yönetimi: PagedAttention ve prefix caching ile bellek verimliliği. Batch Processing: Birden fazla isteği birleştiren continuous batching. Flash Attention: Bellek verimli dikkat hesaplama. Spekülatif Kod Çözme: Küçük taslak modelle büyük modeli hızlandırma. Çıkarım altyapısı için vLLM, TGI (Text Generation Inference), TensorRT-LLM ve Ollama gibi özelleşmiş araçlar geliştirilmiştir. Bulut sağlayıcılar (OpenAI API, Anthropic API, AWS Bedrock) çıkarım altyapısını hizmet olarak sunar.

play_arrow LLM Çıkarım Süreci

LLM çıkarımı iki belirgin aşamadan oluşur ve her aşama farklı hesaplama özellikleri gösterir. Prefill aşaması: Kullanıcının tüm girdi tokenleri tek seferinde transformer katmanlarından geçirilir. Bu aşama yüksek oranda paralelleştirilebilir (tüm tokenler eş zamanlı işlenir) ve hesaplama yoğun (compute-bound) olduğundan GPU tensor core kullanımı yüksektir. Her katmanda K (Key) ve V (Value) vektörleri hesaplanır ve KV önbelleğine yazılır. Decode aşaması: Modelin her adımda yalnızca bir token ürettiği ve KV önbelleğini bir token kadar genişlettiği sıralı aşamadır. Bu aşama bellek bant genişliği ile sınırlıdır (memory-bound): Her adımda tüm model ağırlıkları ve KV önbelleği bellekten okunmalıdır. 7B parametre modeli FP16'da ~14 GB model ağırlığı gerektirir; bu ağırlıkların her token için bellekten okunması decode hızını sınırlar.

Çıkarım Optimizasyon Teknikleri

compress Niceleme (Quantization)

FP16 → INT8 → INT4: Model ağırlıkları düşük hassasiyetle saklanır. GPTQ, AWQ ve GGUF niceleme formatları model boyutunu 2–4× küçülterek daha hızlı decode sağlar.

memory KV Cache Optimizasyonu

PagedAttention (vLLM): OS sayfa tablosu mantığıyla KV önbelleği parçalı ayrılır. Bellek israfı %20'den altına iner, daha yüksek toplu işlem kapasitesi sağlar.

layers Continuous Batching

Farklı uzunluklardaki istekler GPU'da dinamik olarak bir araya getirilir. Tamamlanan diziler beklenmeden yeni istekler batch'e eklenir; GPU kullanımı önemli ölçüde artar.

fast_forward Spekülatif Kod Çözme

Küçük bir taslak model (draft model) birkaç token üretir; büyük model hepsini tek seferinde doğrular. Gecikmeyi %2–3× azaltabilir.

build Çıkarım Altyapısı Araçları

  • check_circle vLLM: PagedAttention ve continuous batching ile en yüksek verimlilik sağlayan açık kaynak çıkarım motoru. Hugging Face modelleriyle doğrudan çalışır.
  • check_circle TGI (Text Generation Inference): Hugging Face'in resmi çıkarım sunucusu. Flash Attention, tensor parallelism ve gRPC/REST API desteğiyle üretim kullanımına hazır.
  • check_circle Ollama: Yerel cihazda LLM çalıştırmak için en kullanıcı dostu araç. GGUF formatındaki nicellenmiş modelleri indirip tek komutla çalıştırır.
  • check_circle TensorRT-LLM: NVIDIA'nın CUDA optimizasyonlu çıkarım kütüphanesi. Veri merkezi GPU'larında (A100, H100) en yüksek verimi sağlar.

quiz Sıkça Sorulan Sorular

  • check_circle Çıkarım mı, eğitim mi daha pahalı?: Tek bir model çalıştırması için eğitim çok daha pahalıdır. Ancak milyonlarca kullanıcıya hizmet veren bir API için toplam çıkarım maliyeti tek seferlik eğitim maliyetini kolaylıkla aşabilir. OpenAI, toplam GPU bütçesinin büyük çoğunluğunu çıkarım için harcadığını belirtmiştir.
  • check_circle Token başına gecikme nasıl hesaplanır?: Decode aşamasının toplam süresi / üretilen token sayısı. Genellikle "inter-token latency" veya "time per output token (TPOT)" olarak ölçülür. İlk token süresi (time to first token, TTFT) ise prefill süresini yansıtır ve etkileşimli uygulamalar için kritiktir.
  • check_circle CPU'da LLM çıkarımı yapılabilir mi?: Evet, özellikle INT4/INT8 nicellenmiş küçük modeller (1B–7B) modern CPU'larda çalışabilir. Ollama ve llama.cpp bu amaçla optimize edilmiştir. Ancak hız GPU'ya kıyasla 10–50× daha yavaştır.