Statik vs. Continuous Batching
hourglass_empty Statik Batching
Tüm istekler aynı uzunlukta tamamlanana kadar bekler. Kısa istekler GPU'yu boşta tutar. Throughput düşer.
bolt Continuous Batching
Her decoding adımında yeni istekler eklenir. GPU sürekli aktif. 10-20× throughput artışı sağlanabilir.
call_split Prefill/Decode Ayrımı
Prompt işleme (prefill) ve token üretimi (decode) ayrı aşamalar olarak planlanır; kaynak çakışması önlenir.
play_circle Çalışma Prensibi
Sunucu, gelen her isteği bir çalışma kuyruğuna alır. Her decoding iterasyonunda scheduler; mevcut GPU kapasitesine göre yeni istekleri aktif batch'e ekler ve tamamlanan istekleri kaldırır. KV cache, PagedAttention gibi tekniklerle dinamik olarak tahsis edilir. Bu sayede farklı uzunluklardaki onlarca istek paralel ilerler; hiçbiri diğerinin bitmesini beklemez.
Sürekli Toplu İşlemin (Continuous Batching) Temel Kavramları
- check_circle Statik Batch'in Sorunu: Geleneksel statik batch, tüm isteklerin aynı anda başlayıp bitmesini bekler. Kısa yanıtlar bitince uzun yanıtlar için GPU boşa bekler; bu kapasite israfıdır.
- check_circle Iteration-Level Scheduling: Her token üretim adımında (iteration) tamamlanan istekler batch'ten çıkarılır, bekleyen yeni istekler hemen eklenir. GPU sürekli dolu tutulur.
- check_circle Throughput Artışı: Continuous batching ile statik batch'e kıyasla 2-23× throughput artışı elde edilebilir (Orca makalesi, 2022). Gerçek artış iş yükü dağılımına bağlıdır.
- check_circle vLLM Entegrasyonu: vLLM, PagedAttention ile birlikte continuous batching uygular; GPU bellek kullanımı ve throughput optimizasyonunu aynı anda sağlar.
- check_circle Bellek Yönetimi: Her istek için KV önbellek alanı dinamik tahsis edilir. İstek tamamlandığında bellek serbest bırakılarak yeni isteğe tahsis edilir.
- check_circle Uygulamalar: TensorRT-LLM, TGI (Text Generation Inference) ve vLLM üretim çıkarım sunucularının tamamı continuous batching uygular. OpenAI ve Anthropic'in production servislerinin temel bileşeni.
Continuous Batching'in LLM Servis Altyapısındaki Yeri
Büyük dil modellerini yüksek trafikli üretim ortamında sunmanın temel zorlukları şunlardır: her istek farklı uzunlukta çıktı üretir, istekler eş zamanlı gelir ve GPU belleği kısıtlıdır. Continuous batching bu zorluklara iterasyon düzeyinde zamanlama getirerek çözüm sunar. Pratik karşılaştırma: aynı donanımda statik batch ile saniyede 10 istek işlenirken continuous batching ile bu sayı 50-100'e ulaşabilir; kısa ve uzun yanıtların karma geldiği gerçek trafikte fark en belirgin olur. Prefill ve decode ayrımı: modern LLM çıkarımında prefill aşaması (prompt işleme) hesaplama yoğun, decode aşaması (token üretimi) bellek bant genişliği yoğundur. Disaggregated prefill-decode mimarisi bu iki aşamayı farklı donanım kümelerine ayırarak kaynak kullanımını daha da optimize eder. vLLM'i yerel olarak çalıştırmak için: `pip install vllm` ve `vllm serve <model_id>` ile OpenAI uyumlu API sunucusu başlatılır; continuous batching varsayılan olarak etkindir.
quiz Sık Sorulan Sorular
- check_circle Hangi kütüphaneler destekler?: vLLM, TensorRT-LLM, SGLang, Hugging Face TGI ve Triton Inference Server continuous batching'i üretime hazır şekilde destekler.
- check_circle PagedAttention ile ilişkisi?: PagedAttention, KV cache'i sanal sayfa tablosu gibi yönetir; continuous batching'de farklı uzunluktaki istekler arası bellek parçalanmasını önler. İkisi birbirini tamamlar.
- check_circle Ne zaman kritik?: Çok sayıda eş zamanlı kullanıcı, değişken uzunlukta yanıtlar ve yüksek GPU kullanım hedefi olan API servisleri için vazgeçilmezdir.
- check_circle Continuous batching nedir?: LLM çıkarım sunucularında her token üretim adımında tamamlanan istekleri batch'ten çıkarıp yenilerini ekleyen, GPU kullanımını sürekli maksimumda tutan zamanlama tekniğidir.
- check_circle Neden statik batch yerine continuous batching?: Statik batch'te kısa istekler bitince GPU, uzun istekler için boşa bekler. Continuous batching bu boşluğu kapatarak throughput'u 2-23× artırır. Gerçek trafik karışık uzunlukta istekler içerdiğinden fark daha belirgin olur.
- check_circle vLLM continuous batching nasıl kullanır?: vLLM, PagedAttention ile birlikte iteration-level scheduling uygular. `vllm serve` komutuyla başlatılan sunucu otomatik olarak continuous batching ve bellek yönetimini sağlar; kullanıcı tarafında ek yapılandırma gerekmez.
- check_circle Continuous batching hangi çıkarım çerçeveleri destekler?: vLLM, Hugging Face TGI, NVIDIA TensorRT-LLM ve DeepSpeed-MII continuous batching destekler. Üretim LLM servisleri için bu çerçevelerden biri seçilmesi önerilir.