İçeriğe geç

vLLM Prefix Caching: Hash-Based Automatic Caching

vLLM (open-source production inference engine) prefix caching mekanizması: hash-based, automatic, block-level. Modül 2'de gördüğümüz PagedAttention bilgisinin uygulanışı.

Şükrü Yusuf KAYA
13 dakikalık okuma
İleri

vLLM Prefix Caching

Self-hosted inference için vLLM standart oldu. Berkeley'den çıkmış, GitHub'da 30K+ star, production'da en yaygın kullanılan açık inference engine.
vLLM'in iki büyük cache mekanizması var:
  1. PagedAttention (Modül 2 Ders 12'de gördük) — memory yönetimi
  2. Prefix caching — bu derste

vLLM Prefix Caching Mantığı#

Provider'larda automatic ama black box. vLLM'de automatic ama kontrol edilebilir ve gözlemlenebilir.
Çalışma prensibi:
  1. Gelen request'in tokenları block'lara ayrılır (default 16 token/block)
  2. Her block'un hash'i hesaplanır
  3. Hash daha önce görülmüş mü? Cache'te mi?
  4. Görülmüşse: o block'un K, V matrislerini reuse et
  5. Görülmemişse: hesapla + cache'e ekle

vLLM'i Prefix Caching ile Başlatma#

bash
# Llama-3.1-8B'yi prefix caching ile başlat
vllm serve meta-llama/Llama-3.1-8B-Instruct \
--enable-prefix-caching \
--block-size 16 \
--gpu-memory-utilization 0.9 \
--max-model-len 32768
vLLM komut satırı
Önemli flags:
  • --enable-prefix-caching
    : caching açar
  • --block-size
    : blok başına token sayısı (16 default, 8 veya 64 da denenebilir)
  • --gpu-memory-utilization
    : VRAM kullanımı (0.9 = %90)
  • --max-model-len
    : max context

API ile Kullanım#

vLLM OpenAI-uyumlu API sunar:
python
from openai import OpenAI
 
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="EMPTY", # vLLM bypass
)
 
# İlk istek
resp1 = client.chat.completions.create(
model="meta-llama/Llama-3.1-8B-Instruct",
messages=[
{"role": "system", "content": LONG_SYSTEM}, # 2K token
{"role": "user", "content": "Soru 1"}
],
)
# Cache miss → fresh compute, ~2sn
 
# İkinci istek (aynı system)
resp2 = client.chat.completions.create(
model="meta-llama/Llama-3.1-8B-Instruct",
messages=[
{"role": "system", "content": LONG_SYSTEM}, # ← aynı, cache hit
{"role": "user", "content": "Soru 2"}
],
)
# Cache hit → prefill atlanır, ~0.2sn
vLLM API + prefix caching

Cache Hit Telemetrisi (vLLM)#

vLLM Prometheus metrics expose eder. Cache hit rate metrik adı:
vllm:cache_hits_total
.
curl http://localhost:8000/metrics | grep vllm:cache # vllm:cache_hits_total{model="..."} 5421 # vllm:cache_misses_total{model="..."} 287 # Hit rate = 5421 / (5421 + 287) = %94.97
Production Setup
vLLM tek başına bir backend; production'da Prometheus + Grafana ile monitor et. Cache hit rate %85 altına düşerse alarm kur.

Provider vs Self-Hosted Cache Karşılaştırma#

BoyutProvider (Anthropic)Self-Hosted (vLLM)
SetupAPI key, sıfır kodGPU, kurulum, devops
CostToken başınaGPU saat başına
Cache controlManuel (cache_control)Automatic
ObservabilityLimitedFull Prometheus
PrivacyProvider'a gönderirOn-prem
ScaleProvider scale ederSen scale edersin
Min throughput1 req/dakika OKGPU 24/7 active olmalı

✓ Pekiştir#

Bir Sonraki Derste#

vLLM lab: gerçek throughput karşılaştırması.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

İlgili İçerikler