---
title: "vLLM KV Cache'i Gerçekte Nasıl Yönetiyor? (Kendi Oyuncak Projemle Karşılaştırma)"
url: https://blog.edumints.com/vllm-kv-cachei-gercekte-nasil-yonetiyor-kendi-oyuncak-projem-d1no83ki
category: "Yapay Zeka"
date: 2026-08-06T09:02:48.175Z
publisher: Edumints Blog
lang: tr-TR
source_name: "dev.to"
source_url: https://dev.to/thokozani_buthelezi_2cd41/how-vllm-actually-manages-kv-cache-vs-the-toy-version-i-built-2kba
---

# vLLM KV Cache'i Gerçekte Nasıl Yönetiyor? (Kendi Oyuncak Projemle Karşılaştırma)

Yapay zeka sistemlerinde bellek yönetimini anlamanın en etkili yolu, büyük kütüphanelerin basitleştirilmiş bir simülasyonunu kodlamaktır. Birkaç hafta önce PagedAttention, blok yöneticisi ve **Copy-on-Write (CoW)** mekanizmalarını içeren basit bir KV Cache simülasyonu geliştirdim. Ancak gerçek GPU belleğine bağlanmamış bu "oyuncak" sürümü, vLLM'in güncel kaynak kodlarıyla karşılaştırdığımda önemli mimari dersler çıkardım.

## Kopyaladığım Sınıf Artık Mevcut Değil

Makalede geçen ve simülasyonda kopyaladığım yekpare `BlockManager` sınıfı güncel vLLM kod tabanında tamamen kaldırılmış. Bunun yerine sorumluluklar daha küçük ve modüler dosyalara bölünmüş:

- `kv_cache_manager.py`: Zamanlayıcı (scheduler) ile iletişim kuran katman.
- `kv_cache_coordinator.py`: İstekleri doğru alt yöneticiye yönlendirir.
- `single_type_kv_cache_manager.py`: Blok hesaplama ve sayım işlerini üstlenir.
- `block_pool.py`: Boş blok listesini ve bellek tahsisini yönetir.

**Pratik Çıkarım:** Üretim ortamında tek bir bellek yöneticisi yerine farklı dikkat (attention) mekanizmalarını (örneğin Mamba veya kayan pencere) destekleyen modüler bir yapı şarttır. Yazılım geliştirirken prototip aşamasındaki monolithic yapıları zamanla esnek bileşenlere bölmek gerekir.

## Blok Matematiği Doğrulandı

Temel blok hesaplama mantığı (`cdiv(num_tokens, block_size)`) ve kullanılabilirlik kontrolleri toy projemle neredeyse birebir aynı çıktı. Tahsis ve serbest bırakma süreçlerinde referans sayacı (**`ref_cnt`**) kullanılarak, sayaç sıfıra ulaştığında bloğun iade edilmesi prensibi korunuyor.

Aradaki temel fark veri yapısı seçiminde yatıyor. Basit projemde düz bir Python listesi yeterliyken, vLLM çift yönlü bağlı liste (**doubly linked list**) kullanıyor.

**Pratik Çıkarım:** **Prefix caching** mekanizması nedeniyle listenin ortasından O(1) karmaşıklıkla blok çıkarılması gerekir. Veri yapısı tercihi, uygulamanın erişim modellerine göre şekillenmelidir.

## Yazarken Kopyala (Copy-on-Write): Doğru Mantık, Farklı Tetikleyici

Simülasyondaki `_apply_cow` sezgisi doğruydu; bellek yöneticisi GPU üzerindeki veriyi doğrudan kopyalamak yerine yalnızca blok tablosundaki işaretçileri günceller ve asıl kopyalamayı alt seviye işçilere devreder.

Farklı olan ise tetiklenme sebebidir. Orijinal makalede mekanizma **beam search** için kurgulanmışken, modern vLLM'de **prefix caching** sırasında bir isteğin kısmi eşleşme yaşaması durumunda özel kopyalama ihtiyacı için tetiklenir.

**Pratik Çıkarım:** Gecikmeli değerlendirme (**lazy evaluation**) gibi tasarım desenleri kalıcıdır, ancak tetikleyici iş gereksinimleri zamanla evrilir.

## Bellek Tasarrufunu Ölçmek: İlk Deneme Hatalıydı

Sayfalamalı bellek yönetiminin vadettiği kazançları yalnızca teorik hesaplamalarla ölçmek yanıltıcı olabilir. Prototipimde bellek tasarrufunu yanlış ölçtüğümü, GPU profil araçları ve gerçek yük testleri olmadan doğru metriklere ulaşılamayacağını fark ettim.

**Pratik Çıkarım:** Öğrenme sürecinde prototip yazmak konsepti kavramak için harikadır; ancak üretim seviyesindeki mühendislik, gerçek bellek ölçümleri ve profil çıkarma (**profiling**) gerektirir.

[Orijinal kaynağa buradan ulaşabilirsiniz.](https://dev.to/thokozani_buthelezi_2cd41/how-vllm-actually-manages-kv-cache-vs-the-toy-version-i-built-2kba)

---

**Kaynak:** [dev.to](https://dev.to/thokozani_buthelezi_2cd41/how-vllm-actually-manages-kv-cache-vs-the-toy-version-i-built-2kba)
**Yayıncı:** [Edumints Blog](https://blog.edumints.com) · Alıntılarken bu URL'ye bağlantı verin: https://blog.edumints.com/vllm-kv-cachei-gercekte-nasil-yonetiyor-kendi-oyuncak-projem-d1no83ki
