Continuous Batching (Sürekli Toplu İşlem)

Continuous Batching (Sürekli Toplu İşlem), LLM çıkarım sunucularında gelen istekleri statik batch'ler yerine sürekli, iterasyon bazlı dinamik gruplar hâlinde işleyen bir zamanlama tekniğidir.

Continuous Batching (Sürekli Toplu İşlem), LLM çıkarım sunucularında gelen istekleri statik batch'ler yerine sürekli, iterasyon bazlı dinamik gruplar hâlinde işleyen bir zamanlama tekniğidir. Geleneksel statik batching'de tüm istekler aynı uzunluğa tamamlanana kadar GPU boşta bekler; bu GPU kullanımını düşürür. Continuous batching ise her decoding adımında yeni isteklerin batch'e eklenmesine ve tamamlananların batch'ten çıkarılmasına olanak tanır. 2023'te vLLM'nin PagedAttention ile birlikte bu tekniği popülerleştirmesiyle LLM servis verimliliği dramatik biçimde arttı. Continuous batching sayesinde GPU, kısa isteklerin bitimini beklemek yerine sürekli aktif kalır; bu da throughput'u (saniyede işlenen token) 10-20× iyileştirir. Değişken uzunluktaki isteklerin yoğun olduğu üretim ortamlarında bu kazanım kritik önem taşır. Teknik açıdan continuous batching; ön-doldurma (prefill) ve kod-çözme (decode) aşamalarının ayrılması, iterasyon düzeyinde zamanlama, KV cache yönetimi ve öncelik kuyrukları bileşenlerine dayanır. vLLM, TensorRT-LLM, SGLang ve TGI (Text Generation Inference) bu tekniği üretime hazır şekilde destekler. Özellikle çoklu kullanıcı API servislerinde sabit GPU kapasitesiyle daha yüksek istek kapasitesi sunabilmek için vazgeçilmez hâle gelmiştir.

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.

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.