Continuous Batching (Sürekli Toplu İşlem)

LLM çıkarım sunucularında her token adımında tamamlanan istekleri batch'ten çıkarıp yenilerini ekleyen, GPU'yu sürekli aktif tutan iteration-level zamanlama tekniği.

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 durum GPU kullanım oranını ciddi biçimde 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. Tekniğin akademik temeli, Yu ve arkadaşlarının 2022'de yayımladığı "Orca: A Distributed Serving System for Transformer-Based Generative Models" çalışmasına dayanır. Bu makalede "iteration-level scheduling" adıyla tanımlanan yöntem, statik batch'e kıyasla 2-23× throughput artışı sağladığını kanıtladı. Pratik uygulamada ise 2023'te vLLM'nin PagedAttention ile birleştirdiği bu teknik, LLM servis altyapısında kalıcı bir standart hâline geldi. Teknik açıdan continuous batching; ön-doldurma (prefill) ve kod-çözme (decode) aşamalarının ayrılması, iterasyon düzeyinde zamanlama, verimli KV cache yönetimi ve öncelik kuyrukları bileşenlerine dayanır. Prefill aşamasında tüm prompt tokenleri bir kez işlenir; decode aşamasında her adımda tek token üretilir. Farklı isteklerin decode adımları eşzamanlı yürütüldüğünde GPU boşta kalmadan çalışmayı sürdürür; bu da KV cache alanının verimli kullanılmasını zorunlu kılar. Bellek yönetimi bu tekniğin kritik bir bileşenidir. PagedAttention, KV cache belleğini sanal sayfa tablosu modeline göre yönetir ve farklı uzunluktaki isteklerin yarattığı parçalanmayı önler. Çeşitli isteklerin KV state'leri aynı fiziksel GPU belleğinde örtüşmeden barındırılabilir; bu da sistemin eş zamanlı istek kapasitesini doğrudan artırır. Üretim ortamlarında continuous batching'i destekleyen başlıca framework'ler şunlardır: vLLM (PagedAttention ile), NVIDIA TensorRT-LLM, Hugging Face TGI (Text Generation Inference), SGLang (yapısal üretim için optimize) ve DeepSpeed-MII. GPU kapasitesi sabitken bu teknik, değişken uzunluktaki çok kullanıcılı API trafiğinde gecikme kararlılığını koruyarak saniyede işlenen token sayısını 10-20× artırabilmektedir. RAG pipeline'ları, ajansal AI sistemleri ve bulut LLM API'leri için temel bir altyapı bileşeni konumuna 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ışı 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.