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 min read
AdvancedvLLM 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:
- PagedAttention (Modül 2 Ders 12'de gördük) — memory yönetimi
- 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:
- Gelen request'in tokenları block'lara ayrılır (default 16 token/block)
- Her block'un hash'i hesaplanır
- Hash daha önce görülmüş mü? Cache'te mi?
- Görülmüşse: o block'un K, V matrislerini reuse et
- 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şlatvllm serve meta-llama/Llama-3.1-8B-Instruct \ --enable-prefix-caching \ --block-size 16 \ --gpu-memory-utilization 0.9 \ --max-model-len 32768vLLM komut satırı
Önemli flags:
- : caching açar
--enable-prefix-caching - : blok başına token sayısı (16 default, 8 veya 64 da denenebilir)
--block-size - : VRAM kullanımı (0.9 = %90)
--gpu-memory-utilization - : max context
--max-model-len
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 istekresp1 = 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.2snvLLM API + prefix caching
Cache Hit Telemetrisi (vLLM)#
vLLM Prometheus metrics expose eder. Cache hit rate metrik adı: .
vllm:cache_hits_totalcurl 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#
| Boyut | Provider (Anthropic) | Self-Hosted (vLLM) |
|---|---|---|
| Setup | API key, sıfır kod | GPU, kurulum, devops |
| Cost | Token başına | GPU saat başına |
| Cache control | Manuel (cache_control) | Automatic |
| Observability | Limited | Full Prometheus |
| Privacy | Provider'a gönderir | On-prem |
| Scale | Provider scale eder | Sen scale edersin |
| Min throughput | 1 req/dakika OK | GPU 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...
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