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ışı elde edilebilir.
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. Farklı uzunluklardaki onlarca istek bu yapıyla paralel ilerler; hiçbiri diğerinin bitmesini beklemez.
Sürekli Toplu İşlemin 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 optimizasyonu aynı anda gerçekleştirilir.
- 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 Üretim Uygulamaları: TensorRT-LLM, TGI (Text Generation Inference) ve vLLM üretime hazır continuous batching uygular. OpenAI ve Anthropic'in production servislerinin temel bileşenidir.
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. Prefill ve decode ayrımı: modern LLM çıkarımında prefill aşaması hesaplama yoğun, decode aşaması 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.
quiz Sık Sorulan Sorular
- 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. Karma uzunluktaki gerçek trafikte fark en belirgin olur.
- check_circle vLLM continuous batching nasıl kullanır?: vLLM, PagedAttention ile birlikte iteration-level scheduling uygular. `vllm serve <model_id>` komutuyla başlatılan sunucu otomatik olarak continuous batching etkinleştirir; kullanıcı tarafında ek yapılandırma gerekmez.
- check_circle Hangi framework'ler destekler?: vLLM, TensorRT-LLM, SGLang, Hugging Face TGI ve DeepSpeed-MII continuous batching'i üretime hazır şekilde destekler.
- check_circle PagedAttention ile ilişkisi nedir?: PagedAttention, KV cache'i sanal sayfa tablosu gibi yönetir; continuous batching'de farklı uzunluktaki istekler arası bellek parçalanmasını önler. İki teknik birbirini tamamlar.