AI Sözlüğü
Orta· ~2 dk okuma#batch-size#throughput#inference

Batch Size

Eşzamanlı işlenen sekans sayısı

Aynı anda paralel işlenen istek sayısı. Throughput'u dramatik artırır ama VRAM ve latency'yi de etkiler.

PARALEL N SEKANS · TEK GPUeşzamanlı isteklerreq 1req 2req 3req 4req 5req 6GPUbatch= 6tek passthroughput~6× ↑vLLM continuous batching — slot boşalır boşalmaz yeni istek girer
Tanım

GPU paralel matris işlemcidir; tek bir istek için kullanmak çoğunlukla GPU'yu boşa harcar. Batch size N: aynı forward pass'te N farklı sekansı birlikte işle. GPU bir matris çarpımı yerine N matrisi tek seferde yapar — toplam throughput dramatik artar.

Eğitim vs. inference farkı: - Training batch size: bir gradient adımında kaç örnek. 32-512 tipik. Büyük = daha pürüzsüz gradient ama daha çok VRAM. - Inference batch size: aynı anda kaç istek. Production'da throughput maksimizasyonu için kritik. vLLM 256 default.

İki tür inference batching: - Statik batching: bir grup isteği bekle, hepsini birlikte başlat, hepsi bitene kadar GPU dolu — yavaş istek hızlıları yavaşlatır. - Continuous batching: vLLM ve modern motorların yenilik. Bir istek bittiğinde hemen yenisi gelir; GPU sürekli dolu, latency düşük. Throughput 5-10× artar.

KV cache batch boyunca paralel — N istek = N × cache. Production'da max_num_seqs ile tavanlanır (vLLM).

Benzetme

Bir fırıncı tek tek ekmek pişirmek yerine fırına 20 ekmek koyar. Toplam zaman aynı (bir ekmek → 20 ekmek değil), ama 20× daha çok ekmek çıkar. GPU da öyle: tek bir matris çarpımı için 20 sekansı paralel işleyebilir.

Gerçek dünyadan örnek

vLLM ile Llama 3.1 8B sunucusu.

Batch=1 (tek kullanıcı): ~95 tok/s. Batch=8: GPU dolu olmaya başlar, ~620 tok/s toplam (kullanıcı başı ~78). %95 throughput artışı. Batch=32: ~2400 tok/s toplam (kullanıcı başı ~75). 25× tek-stream. Batch=64: VRAM dolar, OOM ya da swap. Tipik tavan 32-64.

Continuous batching ile her tamamlanan istek hemen yerine geleni alır — boş slot olmaz. Statik batching aynı 32 isteği bekleyip birlikte başlatırdı ve uzun istek hızlıları geciktirirdi (head-of-line blocking). Continuous bunu çözer.

Ne zaman kullan
  • Production sunucu — yüksek throughput şart
  • Batch offline inference — 1000 prompt'u toplu işle
  • Multi-user serving — vLLM, TGI, SGLang
  • Embedding üretimi — çok metni tek seferde embed et
Ne zaman kullanma
  • Tek-kullanıcı yerel deneme (Ollama default tek-stream — hız zaten yeterli)
  • Latency'ye duyarlı tek istek — batching beklemenin gecikmesi var
  • VRAM kıt — batch artırınca OOM
Sık yapılan hatalar

Statik batching seçmek

Eski sistemlerde (HF Transformers naive serve) statik batching = en yavaş istek hepsini geciktirir. Modern motor (vLLM, TGI) continuous batching kullan.

Batch size = throughput limiti yanılgısı

Batch=128 koymak, kullanıcılar 8 ise faydasız. Etkin batch = aktif kullanıcı sayısı. Kapasite planlamada gerçek concurrency'e bak.

VRAM hesabı yapmamak

Batch×(model + cache_per_seq) = toplam VRAM. Cache batch ile lineer büyür. 32 sekans × 4 GB cache = 128 GB. PagedAttention bunu ~%75'e indirir.