RadarMakale Bülteniai üretimi

Makale Bülteni — Sarathi ve Chunked Prefill

Uzun istemlerin prefill yükünü parçalayarak decode adımlarıyla eşzamanlı yürüten ve streaming gecikme patlamalarını önleyen zamanlayıcı analizi.

Microsoft Research ve Georgia Tech ekibinin kaleme aldığı “SARATHI: Efficient LLM Inference by Piggybacking Decodes with Chunked Prefills” başlıklı akademik makale, büyük dil modellerinin üretim altyapısındaki en sinsi darboğaza odaklanan kritik bir sistem çalışmasıdır1. Pratikte bu araştırma, bir kullanıcı sisteme sekiz bin token’lık uzun bir doküman gönderdiğinde, halihazırda ekranda akan metinleri okuyan diğer yüzlerce kullanıcının akışının aniden donması problemine çözüm getiriyor. Çıkarım motorlarının hesaplama yoğun prefill aşaması ile bellek bant genişliği yoğun decode aşaması arasında yaşadığı zamanlama krizini, istemleri parçalayarak ve eşzamanlı paketleyerek ortadan kaldırmayı vadediyor.

Akademik teorinin ötesinde OSDI 2024 ve endüstriyel çıkarım benchmark’larına yansıyan tablolara baktığımızda sonuçlar oldukça çarpıcıdır. Makale, vLLM benzeri klasik sürekli toplu işleme (continuous batching) sistemlerine kıyasla 3,7 kata varan sunucu kapasitesi artışı ve %80 daha kararlı gecikme vadederken, bu kazanımlar doğrudan kurumsal NVIDIA A100 ve H100 sunucularda ölçümlenmiş durumda. Açık kaynak tarafında ise microsoft/sarathi-serve deposunda son commit 1 ay önce, 48 açık issue ile geliştirme sürerken, algoritmanın kendisi vLLM ve SGLang çekirdeğine doğrudan üretim standardı olarak dahil edilmiştir2.

İddia ve Gerçeklik: Sarathi ve Chunked Prefill

LLM çıkarımında iki ayrı faz çalışır: İlk faz olan prefill (prompt işleme), hesaplama birimlerini (compute-bound) tek bir istekte bile tamamen doyurur. İkinci faz olan decode (token üretimi) ise her adımda tek bir token ürettiği için bellek bant genişliğine kilitlidir (memory-bound) ve GPU tensör çekirdeklerini boşta bırakır. Klasik motorlar yeni bir istek geldiğinde mevcut decode işlemlerini duraklatarak devasa istemi tek seferde işlemeye kalkar. Bu durum, kelimeler arasındaki gecikmede (inter-token latency - ITL) yüzlerce milisaniyelik kuyruk patlamalarına ve kullanıcı arayüzlerinde kekelemelere yol açar.

Sarathi makalesinin getirdiği temel mimari yenilik iki adımdan oluşur: Parçalı istem işleme (chunked prefill) ve sırtlama zamanlaması (piggybacking decodes). Sistem, gelen uzun bir istemi sabit hesaplama bloklarına (örneğin beş yüz on iki token) böler. Her ileri geçişte (forward pass) bir adet prefill parçası ile devam eden onlarca decode isteği aynı tensör işleminde birleştirilir. Prefill parçasının getirdiği yoğun matris çarpımı GPU tensör çekirdeklerini tam kapasiteye ulaştırırken, global bellekten bir kez okunan model ağırlıkları aynı anda decode isteklerine de hizmet eder. Böylece boşta kalan tensör çekirdekleri bedavaya değerlendirilir. Ancak bir sistem mimarı için madalyonun diğer yüzündeki takas iyi anlaşılmalıdır: Bu yöntem ITL dalgalanmasını çözerken, ilk token süresini (Time-to-First-Token - TTFT) geciktirir.

Dört bin token’lık bir istemi beş yüz on iki parçalara böldüğünüzde, o istemin ilk çıktıyı verebilmesi için en az sekiz ardışık GPU döngüsünün tamamlanması gerekir. Yüksek trafik altında bu parçalar diğer kullanıcıların istekleri arasına serpiştirildiği için, uzun prompt gönderen kullanıcının ilk yanıtı alma süresi belirgin biçimde uzar.

Kod ve Entegrasyon Haritası

Sarathi projesi, Microsoft Research bünyesinde geliştirilen bağımsız bir prototip motor (Sarathi-Serve) olarak başlamış olsa da asıl zaferini açık kaynak ekosisteminin devlerine entegre olarak kazandı2. Anyscale ve vLLM çekirdek mühendisleri, Sarathi’nin sunduğu parçalama mantığını doğrudan vLLM deposuna taşıyarak --enable-chunked-prefill bayrağı altında varsayılan özelliklerden biri haline getirdi3.

Kod tabanının üretim olgunluğu oldukça yüksektir. vLLM ve SGLang çatılarında chunked prefill, PagedAttention ve RadixAttention ile tam bir uyum içinde çalışmaktadır. Geliştiriciler max_num_batched_tokens parametresiyle her adımda işlenecek azami token hacmini belirleyebilmekte ve donanım doyum noktasını dinamik olarak ayarlayabilmektedir. Ancak entegrasyon hattında ince ayar yapmayan ekipler için ciddi operasyonel riskler mevcuttur. Çok küçük seçilen parça boyutları (örneğin yüz yirmi sekiz) prefill verimliliğini düşürerek TTFT sürelerini kabul edilemez seviyelere çıkarırken, çok büyük parça boyutları (örneğin iki bin kırk sekiz) decode duraksamalarını geri getirmektedir.

Hacker News ve GitHub tartışmalarında altyapı mühendisleri, özellikle çoklu GPU boru hattı paralelliğinde (pipeline parallelism) parçaların dengesiz dağılması sonucu oluşan balonlaşma (bubble) sorunlarından ve dikkat maskesi karmaşıklığından dert yanmaktadır4. Yine de bu mimari, üretim seviyesindeki yüksek eşzamanlı model sunumlarında artık vazgeçilmez bir standarttır.

Ticari Etki: Kimin İşine Yarar?

Sarathi ve chunked prefill yaklaşımı, çok kullanıcılı SaaS platformları, müşteri hizmetleri botları ve gerçek zamanlı arayüzler sunan teknoloji şirketleri için kritik bir SLA koruma kalkanıdır. Kullanıcılara saniyede sabit hızda akan akıcı bir okuma deneyimi sunmak zorunda olan ürünlerde, rastgele gelen uzun bir doküman analizinin tüm sistemi kilitlemesini önlemek müşteri memnuniyeti açısından hayati değerdedir. Aynı GPU kümesi üzerinde P99 gecikme hedefini aşmadan iki ile üç kat daha fazla eşzamanlı kullanıcı barındırabilmek, aylık bulut faturasını doğrudan aşağı çeker.

Ayrıca karmaşık RAG mimarileri çalıştıran ve kullanıcıların uzun PDF dosyaları yüklediği kurumsal arama sistemlerinde, sunucu kapasitesinin çökmesini engeller. Bulut sağlayıcıları için GPU’ların hesaplama ve bellek birimlerini aynı anda yüzde doksanın üzerinde verimlilikle çalıştırmak, donanım amortismanını hızlandırır.

Buna karşın tek kullanıcılı yerel senaryolarda veya yalnızca tekil istekler alan iç araştırma araçlarında chunked prefill devreye almak faydadan çok zarar getirir. Sistemde yarışan başka bir decode isteği yoksa istemi parçalamak yalnızca ek orkestrasyon yükü ve gecikmiş bir ilk token süresi yaratacaktır. Sonuç olarak Sarathi, yüksek eşzamanlılığın hüküm sürdüğü ve P99 kuyruk gecikmelerinin katı kurallarla sınırlandığı kurumsal üretim hatları için en etkili sistem amortisörüdür.

Kaynaklar

  1. SARATHI: Efficient LLM Inference by Piggybacking Decodes with Chunked Prefills — arXiv
  2. Sarathi-Serve Official Repository — Microsoft GitHub
  3. Optimization and Tuning with Chunked Prefill — vLLM Documentation
  4. Taming Throughput-Latency Tradeoff in LLM Inference with Sarathi-Serve — USENIX OSDI 24