SON DAKİKA

Nvdia

NVIDIA Dynamo ile KV Cache Darboğazlarını Nasıl Azaltabiliriz?

Yapay zeka modelleri, büyüdükçe ve daha karmaşık hale geldikçe, çıkarım (inference) süreci, bir modelin yanıtlar üretme işlemi, büyük bir zorluk haline geliyor. Büyük dil modelleri (LLM’ler) olan GPT-OSS ve DeepSeek-R1, girdileri anlamak ve bağlamlandırmak için önemli ölçüde dikkat verisi—Anahtar-Değer (KV) Cache—kullanıyor. Fakat bu verilerin verimli bir şekilde yönetilmesi giderek zorlaşıyor.

Bu yazı, çıkarım sırasında KV Cache’in maliyet etkin depolama alanına aktarılmasının, çıkarım maliyetlerini nasıl düşürebileceğini ve kullanıcı deneyimini nasıl artırabileceğini inceliyor. Ayrıca, NVIDIA Dynamo’daki son optimizasyonların bu durumu nasıl mümkün kıldığını açıklıyor.

KV Cache Nedir?

KV Cache, LLM’lerin dikkat mekanizmasının temelinde yatan bir veri yapısıdır. Bu yapı, çıkarım süreçinin başlangıç aşaması olan ön dolum sırasında oluşturulur. KV Cache, modelin yanıt oluşturma aşamasında en ilgili giriş parçalarına odaklanmasını sağlamak için aradaki dikkat verilerini depolar.

Ancak, KV Cache’in boyutu, istem uzunluğuyla birlikte doğrusaldır ve yanıt üretim sürecinde hızlı erişim için GPU belleğinde bulunması gerekir. Modeller bağlam pencerelerini genişlettikçe, bazen milyonlarca sembole ulaşmakta, KV Cache ciddi bir darboğaz haline gelmektedir.

KV Cache Neden LLM Çıkarımında Darboğazdır?

GPU belleği sınırlı ve maliyetlidir. İstem uzunluğu arttıkça, KV Cache büyüyerek üretim sırasında daha fazla bellek gerektirir. Çok turlu konuşmalar, derin araştırmalar ve kod üretimi gibi kullanım senaryolarında, KV Cache’in bellek içinde uzun süre tutılması gerekir. GPU bellek sınırlarına ulaşıldığında, çıkarım sistemleri bazı uzlaşmalar yaşar. Bu uzlaşmalar arasında:

  • KV Cache’in bazı bölümlerini silerek, maliyetli yeniden hesaplamalar ile karşılaşabilirler.
  • İstem uzunluğunu veya bağlam penceresini sınırlayarak, model performansını düşürebilirler.
  • Daha fazla GPU ekleyerek, işletme maliyetlerini artırabilirler.

Büyük KV Cache’leri GPU belleğinde uzun süre tutmak sürdürülebilir değildir ve sağlayıcıları maliyet, gecikme ve yetenek arasında seçim yapmaya zorlar.

Dynamo, KV Cache Darboğazlarını Nasıl Azaltır?

Son Dynamo sürümü, KV Cache’in sınırlı GPU belleğinden daha büyük maliyet etkin depolama alanına anında aktarımını sağlar. Bu, KV Cache’i GPU belleğinden daha ölçeklenebilir ve uygun maliyetli depolama sistemlerine, örneğin CPU RAM, yerel SSD’ler veya uzak ağ depolama alanlarına doğrudan taşır. NVIDIA’nın NIXL adlı düşük gecikmeli aktarım kütüphanesi sayesinde, Dynamo KV Cache bloklarını GPU belleği ile harici depolama arasında hızlı bir şekilde taşıyabilir, çıkarımı kesintiye uğratmadan sürdürmeyi sağlar.

The image illustrates a system architecture involving a GPU at the center, which connects to multiple key-value (KV) caches.
Şekil 1. KV Cache taşınması, sınırlı GPU bellek alanından daha büyük maliyet etkin depolama alanına anlık transfer sağlar.

KV Cache Taşınmasının Faydaları Nelerdir?

KV Cache taşınması ile çıkarım hizmeti sağlayıcıları, istem boyutunu sınırlamadan daha uzun bağlam pencerelerine sahip modelleri destekleyebilir. Taşınma, GPU bellek kullanımını azaltarak kümelerin aynı anda daha fazla kullanıcıyı yönetmesine olanak tanır ve genel eşzamanlılığı artırır. Bu, ek GPU ihtiyacını azaltarak altyapı maliyetlerini düşürür ve bu maliyet düşüşü, önbelleklenmiş giriş token’larını içeren istemlerde son kullanıcılara indirim olarak yansıtılabilir.

KV Cache taşınması ayrıca pahalı KV Cache yeniden hesaplamasını önleyerek, daha hızlı yanıt süreleri ve daha iyi bir kullanıcı deneyimi sağlar. Sonuç olarak, sağlayıcılar daha yüksek bir akış ve daha düşük token başına maliyet elde eder, bu da çıkarım hizmetlerinin daha ölçeklenebilir ve verimli olmasını sağlar.

KV Cache Ne Zaman Taşınmalı?

KV Cache’in CPU’ya veya depolamaya taşınması, genellikle KV Cache’in GPU belleğini aştığı ve önbellek yeniden kullanımı, veri aktarımının maliyetini aştığı durumlarda en etkili olur. Bu durum, uzun bağlamlar, yüksek eşzamanlılık veya kaynak kısıtlı çıkarım ortamlarında büyük önem taşır:

  • Uzun oturumlar ve çok turlu konuşmalar: Taşınma, büyük istem öneklerini korur, yeniden hesaplamayı önler ve ilk token gecikmesi ile akışı artırır.
  • Yüksek eşzamanlılık: Boş veya kısmi konuşmalar GPU belleğinden çıkarılabilir, bu da aktif isteklerin bellek sınırlarına ulaşmadan devam etmesine olanak tanır.
  • Paylaşılan veya tekrarlanan içerikler: Kullanıcılar veya oturumlar arasında yeniden kullanım (örneğin, sistem öbekleri ve şablonlar) önbellek vuruşlarını artırır.
  • Bellek veya maliyet kısıtlı dağıtımlar: RAM veya SSD’ye taşınmak, GPU talebini azaltır ve uzun istemler veya daha fazla kullanıcıyı donanım eklemeden destekler.
  • G/Ç odaklı platformlar: Yüksek anahtar-alet bant genişliğine sahip ortamlar daha fazla fayda sağlar, çünkü aktarım gecikmesi daha düşüktür ve hesaplama ile örtüşebilir.

Dynamo’da KV Cache Taşınması Nasıl Çalışır?

Dynamo KV Block Manager (KVBM), önbellek taşınmasını ve bellek koordinasyonunu sağlayan sistemdir. Üç ana katmandan oluşmaktadır:

  • Model entegrasyon katmanı: Popüler AI çıkarım motorlarını, örneğin NVIDIA TensorRT-LLM ve vLLM ile birleştirir. Bu, model bazlı entegrasyon gereksinimlerini ortadan kaldırır ve farklı motorlar arasında tutarlı işlevsellik sağlar.
  • Bellek yönetimi katmanı: Bellek allocated, organizasyonu ve yeniden kullanımını yönetir. Verinin nerede bulunduğunu takip eder ve geliştiricilerin KV Cache taşınma stratejilerini özelleştirmesine olanak tanır.
  • Depolama ve veri aktarım katmanı (NIXL kullanarak): KVBM’i çeşitli depolama türlerine bağlar; CPU, SSD, dosya sistemleri ve bulut platformları. NIXL, makineler arasında hızlı veri aktarımını destekler.
High-level architecture of Dynamo KV Block manager and how it interfaces with different components of LLM inference ecosystem.
Şekil 2. Dynamo KV Block manager, LLM çıkarım ekosisteminin farklı bileşenleriyle etkileşime geçer.

Bellek yönetimini model motorlarından ayırarak ve depolama erişimini standartlaştırarak, KVBM entegrasyonu ve ölçeklenebilirliği basitleştirir. Depolama sağlayıcılarının, farklı çıkarım motorları için sistemlerini özelleştirmeleri gerekmez, çünkü KVBM dönüştürme işlemini otomatikleştirir. Bu mimari, performansı artırır, geliştirmeyi basitleştirir ve depolama ile hesaplamanın bağımsız olarak evrimleşmesine olanak tanır.

Dynamo, LMCache ile Nasıl Entegre Olur?

Dynamo’nun temel tasarım ilkelerinden biri açıklıktır. Kullanıcılara yerleşik işlevsellik veya üçüncü taraf entegrasyonları seçme özgürlüğü sağlar. Bu bağlamda, Dynamo LMCache ile entegre olur, bu sayede CPU’lar, yerel ve uzak depolama arasında bellek önbelleği ve yeniden kullanım sistemleri sunar.

LMCache, vLLM gibi çıkarım motorları için bir KV önbellek katmanı oluşturur. Bu, sık kullanılan verilerin, örneğin konuşma geçmişi veya istemlerin GPU’dan maliyet etkin depolama alanına taşınmasını sağlar ve yüksek hacimli veya tekrarlayıcı iş yüklerine akıllı tahliye ve alma stratejileri sunar. vLLM kullanan ekipler için LMCache, Dynamo’nun açık mimarisiyle uyumlu güçlü bir KV Cache yönetim çözümü sunar.

Depolama Sağlayıcıları, KV Cache Taşınmasından Nasıl Faydalanıyor?

Vast NVIDIA Dynamo ile yüksek performanslı bir entegrasyon test etti ve GPU ile depolama arasında kalıcı KV Cache hareketi sağladı. GPU Direct Storage (GDS) plgini kullanarak, Vast, tek bir NVIDIA H100 GPU’ya 35 GB/s’ten fazla bir veri aktarım hızı elde etti, bu da GPU’nun tam kapasitede çalıştığını gösterdi ve depolamanın bir performans darboğazı olmadığını teyit etti.

Ayrıca, Vast, vLLM ve LMCache kullanarak NVLINK ile çift GPU sisteminde, 130K token uzunluğundaki istemle Qwen3-32B modelini çalıştırdı ve önceden hesaplanan KV Cache’i Vast depolama alanından yükleyerek ilk token için süreyi (TTFT) azalttı.

WEKAyapılan laboratuvar testlerinde, NVIDIA Dynamo ve WEKA tarafından geliştirilen özel bir NIXL plgini kullanarak GPU ile depolama arasında yüksek performanslı KV Cache hareketini değerlendirdi. Testler, WEKA’nın Artırılmış Bellek Ağı’nın KV Cache’i token deposundan GPU’lara bellek hızında aktarabildiğini ve TTFT’yi azalttığını gösterdi.

Testler NVIDIA DGX H100 sistemi üzerinde sekiz H100 GPU ile gerçekleştirilmiştir. Bu kurulum 270 GB/s’ye kadar okuma hızı elde etti ve WEKA’nın RDMA tabanlı, sıfır-kopya veri yolu belirli ayrıştırılmış çıkarım yüklerinin taleplerini karşıladığını doğrulamış oldu.

Bu test sonuçları, depolama alanına KV Cache taşımanın, dağıtık ortamlarda büyük bağlamlı, yüksek akışlı üretilen AI iş yüklerini desteklemede potansiyelini vurgulamaktadır.

Dynamo KVBM Kullanarak KV Cache Nasıl Yönetilir?

KVBM’i vLLM’de KV Cache yönetimi için kullanmak için aşağıdaki adımları izleyin:

# KVBM lider/çalışan kaydı ve keşfi için etcd'yi başlat
docker compose -f deploy/docker-compose.yml up -d

# vllm ve kvbm içeren bir konteyner oluştur
./container/build.sh --framework vllm --enable-kvbm

# konteyneri başlat
./container/run.sh --framework vllm -it --mount-workspace --use-nixl-gds

# CPU belleğine KV taşınmasını etkinleştir
# 4, CPU belleğinden 4 GB'ın kullanılacağını belirtir
export DYN_KVBM_CPU_CACHE_GB=4

# diske KV taşınmasını etkinleştir
# 8, diskin 8 GB'lık kullanılacağını belirtir
export DYN_KVBM_DISK_CACHE_GB=8

# örnek bir LLM modelini sun
vllm serve --kv-transfer-config 
'{"kv_connector":"DynamoConnector","kv_role":"kv_both", 
"kv_connector_module_path": "dynamo.llm.vllm_integration.connector"}' 
deepseek-ai/DeepSeek-R1-Distill-Llama-8B

# LLM'ye bir istek yap
curl localhost:8000/v1/chat/completions   -H "Content-Type: application/json"   -d '{
    "model": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
    "messages": [
    {
        "role": "user",
        "content": "Eldoria'nın kalbinde, sınırsız sihir ve gizemli yaratıkların bulunduğu kadim bir toprak yer alıyor; uzun zamandır unutulmuş Aeloria şehri. Bilgi ve güç merkezi olarak bir zamanlar parlayan Aeloria, zamanın kaygan kumlarının altında gömülerek yüzyıllardır dünyadan kaybolmuştur. Sen, benzersiz merak ve cesaretiyle tanınan bir kaşifsin ve Aeloria'nın gerçekleriyle şekillendirme potansiyeline sahip, derin bir sır sunduğu tüyolar veren antik bir harita bulmuşsun. Yolculuğun seni tehlikeli çölde, etkileyici ormanlarda ve yüksek dağ sıralarından geçirecek. Görev: Karakter Arka Planı: Karakterin için ayrıntılı bir arka plan geliştirin. Aeloria'yı keşfederek motivasyonları, becerileri ve zayıflıklarıyla birlikte, antik şehir veya efsaneler ile nasıl kişisel bağlantılar kurduğunu ifade edin. Bilgi arayışı mı yoksa kayıp bir aile üyesini mi bulmak istiyor? Bir ipucu gizli."
    }
    ],
    "stream":false,
    "max_tokens": 30
  }'

KVBM Metriği Nasıl Etkinleştirilir ve Görüntülenir?

Ölçüm toplama etkinleştirmek ve Grafana panosundan görüntülemek için aşağıdaki adımları takip edin:

# Temel hizmetleri (etcd & natsd) başlatın, ayrıca Prometheus ve Grafana ile
docker compose -f deploy/docker-compose.yml --profile metrics up -d

# DYN_SYSTEM_ENABLED'in true ve DYN_SYSTEM_PORT'ün 6880 olduğundan emin olun.
# NOT: KVBM işçi metriği için 6880 ve KVBM lider metriği için 6881 portlarının açık olmasını sağlamak önemlidir.
DYN_SYSTEM_ENABLED=true DYN_SYSTEM_PORT=6880 vllm serve --kv-transfer-config
'{"kv_connector":"DynamoConnector","kv_role":"kv_both", 
"kv_connector_module_path": 
"dynamo.llm.vllm_integration.connector"}' 
deepseek-ai/DeepSeek-R1-Distill-Llama-8B

# Eğer güvenlik duvarı KVBM metrik portlarını engelliyorsa, Prometheus metriklerini göndermek için
sudo ufw allow 6880/tcp
sudo ufw allow 6881/tcp

Grafana metriklerini http://localhost:3001 üzerinden (varsayılan giriş: dynamo/dynamo) görüntüleyin ve KVBM Dashboard’u arayın.

KVBM’yi Benchmark Etme

vLLM sunulduğunda, LMBenchmark kullanarak KVBM performansını değerlendirmek için aşağıdaki adımları izleyin:

git clone https://github.com/LMCache/LMBenchmark.git

# sentetik çok turlu sohbet verisetini çalıştırma gösterimi.
# biz model, son nokta, çıktı dosyası ön eki ve qps geçiyoruz.
cd LMBenchmark/synthetic-multi-round-qa
./long_input_short_output_run.sh 
    "deepseek-ai/DeepSeek-R1-Distill-Llama-8B" 
    "http://localhost:8000" 
    "benchmark_kvbm" 
    1

# Ortalama TTFT başına performans rakamları yukarıdaki komutun çıktısında elde edilecek.

LMBenchmark’in nasıl kullanılacağı hakkında daha fazla bilgi için LMCache/LMBenchmark GitHub reposuna başvurabilirsiniz.

Eğer daha önce bahsedilen bölümde ölçümler etkinleştirildiyse, KV taşınması ve KV onboarding işlemlerini Grafana panosunda gözlemleyebilirsiniz.

Karşılaştırma yapmak için vllm serve deepseek-ai/DeepSeek-R1-Distill-Llama-8B yazarak KVBM’i kapatıp bir temel oluşturarak deneyebilirsiniz.

Dynamo ve LMCache ile Nasıl Başlanır?

LMCache, ENABLE_LMCACHE ortam değişkeni ayarlanarak etkinleştirilir:

  • export ENABLE_LMCACHE=1

Ayrıca LMCache için ek yapılandırmalar ortam değişkenleri aracılığıyla özelleştirilebilir:

  • LMCACHE_CHUNK_SIZE=256 – Önbellek granülaritesi için token blok boyutu (varsayılan: 256)
  • LMCACHE_LOCAL_CPU=True – CPU bellek alt yapısını taşınmayı etkinleştir
  • LMCACHE_MAX_LOCAL_CPU_SIZE=20 – GB cinsinden CPU bellek sınırı (mevcut RAM’e göre ayarlanabilir)

İleri düzey yapılandırmalar için LMCache, çoklu depolama arkası kullanma yeteneği sunar:

  • CPU RAM: Hızlı yerel bellek taşıma
  • Yerel Depolama: Disk tabanlı dayanıklılık
  • Redis: Dağıtılmış önbellek paylaşımı
  • GDS Arkası: Yüksek akış için GPU Direct Storage
  • InfiniStore/Mooncake: Bulut yerli depolama çözümleri

Dynamo ile LMCache ve vLLM kullanarak başlamak için aşağıdaki adımları takip edin:

# KVBM lider/çalışan kaydı ve keşfi için etcd'yi başlatın
docker compose -f deploy/docker-compose.yml up -d

# vllm ve kvbm içeren bir konteyner oluştur
./container/build.sh --framework vllm

# konteyneri başlat
./container/run.sh --framework vllm -it --mount-workspace

# aggrege çıkarımda lmcache ile vllm çalıştır
./components/backends/vllm/launch/agg_lmcache.sh

# dağılmış çıkarımda lmcache ile vllm çalıştır
./components/backends/vllm/launch/disagg_lmcache.sh

Gerekli ortam değişkenlerinin .sh betikleri içinde hızlı bir kurulum için bulunduğunu unutmayın. Bunları ihtiyaçlarınıza göre güncelleyebilirsiniz.

Sonuç

LLM’ler büyüdükçe, çıkarım sürecinde KV Cache’in yönetimi, sınırlı ve pahalı GPU belleği nedeniyle büyük bir zorluk haline gelmiştir. NVIDIA Dynamo, bu durumu çözerek KV Cache’in CPU RAM, SSD’ler ve ağ depolama gibi daha ölçeklenebilir depolama alanlarına taşınmasını sağlar. Bu, düşük gecikmeli NIXL aktarım kütüphanesi ile mümkün olmaktadır.

Dynamo, vLLM gibi popüler çıkarım motorları ve LMCache gibi açık kaynak araçları ile entegrasyon sağlayarak, verimli önbellek yeniden kullanımını, yeniden hesaplamaların azaltılmasını ve uzun bağlamlı yüksek eşzamanlı iş yüklerini destekler. Vast ve WEKA gibi depolama sağlayıcıları, Dynamo ile başarılı bir şekilde entegre olarak, yüksek akışlı depolama sistemlerinin KV Cache’i etkili bir şekilde aktarabileceğini kanıtlamıştır.

Bu yetenekler, KV Cache taşınmasının çıkarım maliyetlerini düşürmek, tepki sürelerini iyileştirmek ve büyük çaplı üretilen AI uygulamalarının daha geniş bir şekilde dağıtımını sağlamak için pratik ve ölçeklenebilir bir çözüm olduğunu vurgular. Daha fazla bilgi için Dynamo ile başlamayı öğrenin.

Kaynak

Nvdia Blog

Düşüncenizi Paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgili Teknoloji Haberleri