Continuous Batching ve PagedAttention Mimarisi

338 kelime3 dk okuma

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

  1. vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttentionarXiv
  2. Sayfa tabanlı bellek yönetimiWikipedia
  3. VLLMWikipedia
  4. B bellekWikipedia
  5. Büyük dil modeliWikipedia

Bu konuyla ilgili haberler