PagedAttention: vLLM'in Bellek Sihri
Self-hosted production'da kim aynı GPU'da 100 kullanıcıya hizmet veriyor? vLLM. Nasıl? PagedAttention. Bu derste OS sanal belleğinden esinlenen bu zarif tekniği sezgisel öğreneceksin.
Şükrü Yusuf KAYA
14 min read
AdvancedPagedAttention: KV Cache'i Sayfalara Böl
Problem: Bir GPU'da 100 farklı kullanıcının LLM sorgusunu aynı anda işliyorsun. Her birinin farklı uzunlukta context'i var. Naif yaklaşımla her kullanıcıya maksimum context kadar bellek ayırırsın → %80 boş bellek!
Çözüm: PagedAttention — OS'in sanal belleğinden ilham alarak KV cache'i sabit boyutlu bloklara böl, kullandığın kadarını ata.
Bu, vLLM'nin (open-source production inference engine) temel inovasyonu, 2023'te yayınlandı (Berkeley papersinden). Şimdi neredeyse her serious inference engine kullanıyor.
Naif Yaklaşımın Sorunu#
Düşün: 5 kullanıcı, hepsi farklı sorgu uzunluğu:
User A: 10K context User B: 50K context User C: 5K context User D: 100K context (yarısı output) User E: 30K context
Naif yaklaşım: her birine 128K bellek ayır (max context). Toplam: 5 × 128K = 640K bellek. Gerçek kullanım: 195K. %70 israf.
PagedAttention: Sayfalara Böl#
OS'in sanal belleği bu sorunu nasıl çözer? Pages (sayfalar): 4KB sabit boyutlu bloklar. Programa "sürekli bir bellek varmış gibi" görünür ama altta paçalar.
PagedAttention aynı şeyi KV cache için yapar:
- Sabit blok boyutu: ör. 16 token / blok
- Block table: her sequence için "hangi bloklar bana ait" listesi
- Bellek havuzu: tüm bloklar tek bir pool'dan, kim kullanırsa onun
Block Table Örneği#
User A block table: [1, 3] → tokenlar 0-15: blok 1; tokenlar 16-31: blok 3 User B block table: [2, 4, 5] → tokenlar 0-15: blok 2; 16-31: 4; 32-47: 5
Block table küçük — sadece blok numaraları. Attention compute sırasında "hangi bloğu okumalıyım" lookup.
İlham Kaynağı: OS Sanal Belleği
OS analojisi: Block table = page table. Block = physical page. Sequence = process. KV cache pool = physical memory.
PagedAttention'ın Pratik Etkisi#
vLLM benchmark'ları (orijinal makaleden):
| Metrik | Naif | PagedAttention | İyileşme |
|---|---|---|---|
| Bellek kullanımı | %30 verimli | %96 verimli | 3.2× |
| Throughput (req/s) | 100 | 240 | 2.4× |
| Latency p95 | 2.5s | 1.1s | 2.3× |
Aynı GPU, 2.4× daha fazla kullanıcı. Self-hosted inference yapan şirketler için yaşam-ölüm farkı.
Prefix Sharing ile Etkileşim#
PagedAttention'ın bonus özelliği: aynı prefix kullanan iki kullanıcı aynı blokları paylaşabilir.
Örnek: 100 kullanıcı aynı şirket dokümanını sorguluyor (50K context). Her birinin block table'ı aynı 3125 bloku işaret eder (50K / 16 = 3125 blok). Bellek tasarrufu:
- Naif: 100 × 50K = 5M token KV
- PagedAttention + shared prefix: 50K + 100 × user-query-tokens = 50K + ~10K = 60K
- Tasarruf: 83× az bellek
Bonus: Shared Prefix
İşte multi-tenant caching'in vLLM versiyonu. Aynı prefix'i kullanan tüm kullanıcılar otomatik olarak aynı bloklara işaret eder, hiç ekstra mantık yazmana gerek yok.
Block Boyutu Seçimi#
Tradeoff: küçük blok = az fragmentation ama lookup overhead'i fazla; büyük blok = az lookup ama fragmentation.
| Block Size | Fragmentation | Lookup Cost | Default |
|---|---|---|---|
| 1 token | ~0% | Çok yüksek | ❌ |
| 8 token | ~%2 | Orta | ⚠️ |
| 16 token | ~%4 | Düşük | ✅ vLLM default |
| 64 token | ~%15 | Çok düşük | ⚠️ short context için |
Modül 10'da vLLM kurarken bu parametreyi göreceğiz.
SGLang RadixAttention: Bir Adım İleri#
vLLM PagedAttention sequence başına block table tutar. SGLang radix tree kullanarak prefix sharing'i daha agresif yapar:
Üç kullanıcı "Merhaba dünya" prefix'ini paylaşıyor → tek blok grubu, üç çocuk. Token-by-token automatic prefix matching.
vLLM şimdi de prefix-caching özelliği eklemiş; ikisi giderek yakınsıyor.
✓ Pekiştir#
Bir Sonraki Derste#
Bu modülün son dersi — modül bitirme sınavı. KV cache'in matematiksel ve pratik tüm yönleri masaya geliyor. 10 soru, %70 ile geç, Modül 3'e devam et.
Frequently Asked Questions
Hayır. vLLM, SGLang, TensorRT-LLM içinde hazır var. Sadece kavramı anlaman yeterli — production'da hazır kütüphane kullan.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
Related Content
1. Temeller — Context Penceresi Ekonomisi
Bu Eğitim Hakkında ve Prompt Caching Neden Önemli?
Start Learning1. Temeller — Context Penceresi Ekonomisi
Token Ekonomisi 101: Input vs Output Cost Asimetrisi
Start Learning1. Temeller — Context Penceresi Ekonomisi