RadarMakale Bülteniai üretimi

Makale Bülteni — PagedAttention ve vLLM

İşletim sistemlerinin sanal bellek sayfalama mantığını KV cache yönetimine uyarlayarak bellek israfını sıfırlayan ve vLLM motorunu doğuran temel çalışma.

Woosuk Kwon ve UC Berkeley ekibinin kaleme aldığı “Efficient Memory Management for Large Language Model Serving with PagedAttention” başlıklı akademik makale, modern yapay zeka altyapı mühendisliğinde bir dönüm noktasıdır1. Pratikte bu çalışma, büyük dil modellerinin üretim ortamında sunulmasını kısıtlayan en büyük fiziksel engeli, yani GPU VRAM parçalanmasını (fragmentation) işletim sistemlerinin elli yıllık sanal bellek sayfalama prensibiyle çözmüştür. vLLM motorunun çekirdeğini oluşturan bu algoritma öncesinde, sistemler her kullanıcı isteği için en kötü senaryoyu varsayarak devasa bitişik bellek blokları ayırıyor ve GPU belleğinin yarısından fazlasını boş yere rezerve ederek israf ediyordu.

Akademik iddianın ötesinde endüstri standardı haline gelen ölçümlere baktığımızda ortaya konan kazanım tartışmasızdır. Makalede klasik çıkarım sistemlerinde yüzde altmış ile seksen arasında seyreden VRAM israfına karşı %4’ün altına inen bellek israfı ve 4 kata varan throughput artışı vadedilirken, bu ölçümler doğrudan kurumsal veri merkezi donanımı olan NVIDIA A100 GPU’lar üzerinde kanıtlanmıştır. Açık kaynak dünyasında ise projenin ana omurgası olan vllm-project/vllm deposunda son commit bugün, 1.240 açık issue ile sektörün en hareketli ve en kalabalık mühendislik topluluklarından biri faaliyet göstermektedir2.

İddia ve Gerçeklik: PagedAttention ve vLLM

Geleneksel derin öğrenme çerçeveleri tensörleri bellekte mutlaka bitişik (contiguous) bir dizi olarak tutmak ister. Bir dil modeli metin üretirken her yeni token ile birlikte Key ve Value tensörleri dinamik olarak uzar. Bu uzamayı yönetmek için eski sistemler, kullanıcının iki bin token üreteceğini varsayarak bellekte peşinen yer ayırırdı. Kullanıcı yalnızca yirmi token alıp bağlantıyı kestiğinde ise ayrılan belleğin yüzde doksanı çöp olurdu. PagedAttention makalesinin temel mimari tezi, ana bellekteki sayfalar (pages) gibi KV cache tensörlerini sabit boyutlu bloklara (örneğin on altı token) bölmek ve mantıksal blokları fiziksel olarak belleğin dağınık noktalarında tutmaktır.

Sistem, bir sayfa tablosu (page table) üzerinden mantıksal token dizisini fiziksel bloklara haritalandırır. Yeni bir token üretildiğinde ve mevcut blok dolduğunda, işletim sisteminin bellek tahsis etmesi gibi VRAM havuzundan boş bir blok çekilerek zincire eklenir. Bu sayede harici parçalanma tamamen yok edilirken, dahili parçalanma sadece son bloğun boş kalan birkaç token’ıyla sınırlı kalır. Üstelik paralel örnekleme (parallel sampling) ve dallanan sorgularda bloklar kopyalanmadan doğrudan işaretçi seviyesinde paylaşılır (Copy-on-Write). Ancak bu parlak mimarinin madalyonunun diğer yüzünde ciddi sistem karmaşıklıkları yatar: Bellek yöneticisi artık Python çalışma zamanında bir CPU orkestrasyon yüküne dönüşür.

Blok boyutu seçimi mimarlar için kritik bir tavizdir; çok küçük bloklar sayfa tablosu arama maliyetini patlatırken, çok büyük bloklar bellek israfını geri getirir. Dahası GPU belleği tamamen dolduğunda devreye giren “preemption” (öncelik hakkı) mekanizması, blokları CPU belleğine taşımak (swapping) zorunda kalır. Bellek takası yoğunlaştığında ise P99 gecikme sürelerinde yüzlerce milisaniyelik kuyruk kilitlenmeleri yaşanır.

Kod ve Entegrasyon Haritası

PagedAttention, tozlu raflarda kalan bir araştırma makalesinin tam zıddı olarak doğrudan endüstrinin fiili çıkarım motoruna dönüşmüştür. vllm-project/vllm deposu, C++, CUDA ve Triton katmanlarıyla harmanlanmış, son derece olgun ve üretim kalitesinde bir mimariye sahiptir2. Kod tabanı incelendiğinde, klasik tekil model betiklerinin aksine asenkron bir motor mimarisi (AsyncLLMEngine), sürekli toplu işleme (continuous batching) zamanlayıcısı ve OpenAI uyumlu API sunucusuyla anahtar teslim bir altyapı sunmaktadır.

Açık kaynak ekosistemindeki benimsenme seviyesi neredeyse rakipsizdir. HuggingFace TGI, Ray Serve, Triton Inference Server ve hatta bulut devlerinin (AWS Bedrock, Together AI) kendi iç altyapıları dahi PagedAttention mantığını ve vLLM bileşenlerini doğrudan sistemlerine entegre etmiştir3. Ancak bu devasa büyüme, beraberinde ciddi bir bakım yükü ve kod karmaşıklığı getirmiştir. Binlerce farklı model mimarisi, quantization şemaları (AWQ, GPTQ, FP8) ve donanım arka uçları (ROCm, TPU, Neuron) tek bir çatı altında birleştikçe, kütüphanenin bağımlılık grafiği aşırı derecede kırılgan hale gelmiştir.

GitHub tartışmalarında ve issue kayıtlarında mühendisler, küçük sürüm güncellemelerinde bile yaşanan kernel uyumsuzluklarından, CUDA çekirdek çökmelerinden ve bellek sızıntısı (memory leak) hatalarından sıklıkla şikayet etmektedir4. Yine de vLLM ekibi bu sorunları hafifletmek adına mimariyi V1 motoru ile baştan yazmış, Python yükünü asgariye indirerek C++ çekirdeğini daha yalın hale getirmiştir.

Ticari Etki: Kimin İşine Yarar?

PagedAttention ve vLLM ikilisi, yapay zeka odaklı SaaS girişimleri ve bulut üzerinden model sunan teknoloji şirketleri için sunucu maliyetlerini doğrudan üçte bire indiren devrimsel bir tasarruf aracıdır. Önceden sekiz adet A100 GPU ile ancak karşılanabilen eşzamanlı kullanıcı trafiği, PagedAttention sayesinde iki adet GPU üzerinde kesintisiz çalışabilmektedir. Bu durum, aylık on binlerce dolar donanım kirası ödeyen start-up’ların kârlılık eşiğini erkene çekmesini sağlamıştır.

Teknolojinin en büyük fayda sağladığı bir diğer alan ise çoklu ajan sistemleri ve kod tamamlama servisleridir. Ortak sistem prompt’larının ve kütüphane dokümantasyonlarının bellekte tek bir kopya olarak tutulabilmesi (prefix caching ve copy-on-write desteği), prefill maliyetlerini dramatik biçimde düşürür. Kurumsal intranet ortamlarında şirket içi modeller barındıran BT departmanları için de minimum donanımla maksimum kullanıcıya yanıt verebilmek büyük bir sermaye tasarrufu yaratır.

Buna karşılık tekil kullanıcılar için yerel dizüstü bilgisayarlarda veya edge cihazlarda çalışan sistemler açısından PagedAttention zorunlu bir tercih değildir. Tek bir kullanıcının sıralı istekler gönderdiği senaryolarda llama.cpp gibi saf C++ kütüphaneleri çok daha az operasyonel yükle çalışır. Sonuç olarak PagedAttention, çok kullanıcılı, yüksek eşzamanlı ve kurumsal ölçekte model sunumu yapan her mühendislik ekibinin tartışmasız bir numaralı altyapı bileşenidir.

Kaynaklar

  1. Efficient Memory Management for Large Language Model Serving with PagedAttention — arXiv
  2. vLLM: A High-Throughput and Memory-Efficient Inference Engine — GitHub
  3. PagedAttention Paper and Discussion — HuggingFace
  4. vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention — Hacker News