Continuous Batching ve PagedAttention Mimarisi
PagedAttention, KV cache belleği sabit boyutlu sayfalara bölerek harici bellek yönetimi mantığını GPU belleğine uygular; bu, parçalanma kaybını ortadan kaldırarak mevcut belleğin çok daha verimli kullanılmasını sağlar.
Sessiz kayıp
Üretim hizmetlerinde bellek, en pahalı ve en kısıtlı kaynaktır. Her istek bir KV cache ayırdığı için, ayrılan bellek miktarı eşzamanlı istek sayısını doğrudan belirler.
Klasik yaklaşımda her istek için önceden bir bellek bloğu ayrılır. İstek daha kısa sürse bile ayrılan alan boş kalır. Bu, sessiz ama pahalı bir israftır.
Parçalanma sorunu
Değişken uzunluktaki istekler, sürekli büyüyen bellek blokları oluşturur. Zamanla bloklar birbirine sığmaz ve kullanılmayan boşluklar oluşur.
Bu, bellek kullanımında önemli bir israftır. Fragmentasyon nedeniyle kapasiteye erken ulaşıldığında yeni istekler kabul edilemez hâle gelir.
Sayfa fikri
PagedAttention, KV cache belleği sabit boyutlu sayfalara böler. Her istek, sayfaları bir listede tutar; veri yazılırken yeni sayfa eklenir, başka sayfaya taşımak gerekmez.
Bu, işletim sistemlerindeki sayfa tabanlı bellek yönetiminin doğrudan GPU belleğine uyarlanmış hâlidir. Parçalanma büyük ölçüde ortadan kalkar.
Continuous batching
Klasik toplu işlem, bir partiyi tamamen bitirmeden yenisine başlamaz. Bu, bir istek bitene kadar bekleyen boş yer bırakıyor.
Continuous batching ise yeni istekleri mevcut partilere dinamik olarak ekler. Tamamlanan isteklerin yerine yeni istekler girer ve donanım sürekli dolu kalır.
Pratik etki
Bu iki teknik birlikte, aynı donanımda işlenebilen istek sayısını ciddi biçimde artırıyor. Bu, doğrudan servis başına maliyet verimine dönüşüyor.
Ayrıca uzun ve kısa isteklerin karışımında performans daha öngörülebilir hâle geliyor. Bir isteğin süresi diğerlerini gereğinden fazla etkilemiyor.
- Önceden ayrılan bellek, kısa isteklerde boşa gidiyor
- Değişken uzunluk, parçalanmaya ve bellek israfına yol açıyor
- Sayfa tabanlı yönetim, parçalanmayı büyük ölçüde çözüyor
- Sürekli toplu işlem, donanımı boş bırakmıyor
Sık sorulan sorular
PagedAttention tam olarak ne yapıyor?
KV cache belleğini sabit boyutlu sayfalara bölerek yönetiyor. Bu, işletim sistemlerindeki sayfa tabanlı bellek yönetimi mantığını GPU belleğine uyarlıyor ve parçalanma kaybını büyük ölçüde ortadan kaldırıyor.
Continuous batching neden gerekli?
Klasik toplu işlem, bir partiyi bitirmeden yenisine başlamaz. Bu, bekleyen donanımı boşa çıkarıyor. Sürekli toplu işlem, tamamlanan isteklerin yerine yenilerini ekleyerek verimi artırıyor.
Performans kazancı nereden geliyor?
Daha az bellek israfı ve daha yüksek donanım doluluğu. İkisi birleştiğinde aynı GPU üzerinde işlenebilen eşzamanlı istek sayısı ciddi biçimde artıyor.
Bu teknikler kaliteyi etkiler mi?
Hayır. Bellek yönetimi ve toplu işlem stratejisi, hesaplanan sonuçları değiştirmiyor. Yalnızca kaynak kullanımını iyileştiriyor.
Kaynakça
- vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttentionarXiv
- Sayfa tabanlı bellek yönetimiWikipedia
- VLLMWikipedia
- B bellekWikipedia
- Büyük dil modeliWikipedia
Bu konuyla ilgili haberler
- vLLM Nedir? Üretimde Çıkarım (Inference) Hızı Neden Standart API'lardan 10 Kat Hızlı?
- KV Cache Nedir? LLM’ler Neden Onsuz Çok Yavaş Kalır?
- Bulut Pazarında Deprem: Akamai ve Anthropic’ten 11,6 Milyar Dolarlık Tarihi Çıkarım İttifakı
- DeepSeek Harness Neden Gündemde? Yüzde 99,9 Önbellek Vuruşuyla Token Maliyetlerini Sıfırlayan Mimari