GPU belleğini PagedAttention ile optimize eden, yüksek throughputlu açık kaynaklı LLM servis motoru.

vLLM, UC Berkeley'de geliştirilen ve büyük dil modellerinin (LLM) üretim ortamında hızlı ve verimli biçimde sunulmasını sağlayan açık kaynaklı bir çıkarım (inference) kütüphanesidir. Temel yeniliği olan PagedAttention mekanizması, KV önbelleğini işletim sistemlerindeki sanal bellek yönetiminden ilham alarak sayfalara böler ve dinamik olarak tahsis eder. Bu yaklaşım bellek parçalanmasını minimuma indirerek GPU belleğinin çok daha verimli kullanılmasına olanak tanır. Continuous batching özelliğiyle birleşince vLLM, standart HuggingFace Transformers pipeline'larına kıyasla 24 kata kadar daha yüksek throughput elde edebilir. vLLM, 2023 yılında SOSP konferansında yayımlanan akademik makaleyle tanıtıldı ve kısa sürede yapay zeka topluluğunun en çok kullandığı LLM servis altyapısı haline geldi. Proje GitHub'da 40K'ı aşan yıldızla aktif bir geliştirici kitlesine sahip olmaya devam etmektedir. OpenAI uyumlu REST API sunan vLLM, mevcut sistemlere minimal değişiklikle entegre edilebilmektedir. Teknik açıdan vLLM; Llama, Mistral, Qwen, Gemma ve diğer popüler modelleri destekler. Tensor parallelism ve pipeline parallelism ile modeli birden fazla GPU'ya dağıtabilir, quantization (AWQ, GPTQ, bitsandbytes) ile bellek gereksinimini düşürür. LoRA adaptörlerini çalışma zamanında dinamik olarak yükleyip kaldırabilmesi birden fazla görev için tek bir model örneğini paylaşmaya imkân tanır. Türkiye'de yapay zeka tabanlı ürün geliştiren şirketler ve araştırma kurumları, vLLM'i özellikle maliyet optimizasyonu amacıyla tercih etmektedir. Aynı GPU kümesinde standart kütüphanelere kıyasla çok daha yüksek istek kapasitesi sunulabilmesi, bulut maliyetlerini önemli ölçüde düşürür. Yerli yapay zeka altyapılarında veri egemenliğini korurken yüksek performans elde etmek isteyen kurumlar için kritik bir araçtır. vLLM, OpenAI uyumlu API sunduğundan mevcut entegrasyonlar minimum değişiklikle kendi altyapısına taşınabilir; bu da geçiş sürecini hızlandıran önemli bir avantajdır. Akademik temelli olmasına karşın hızla olgunlaşan proje, kurumsal destek almak isteyen ekipler için de güvenilir bir tercih olmayı sürdürmektedir.

vLLM Nedir?

vLLM, büyük dil modellerini üretim ölçeğinde sunmak için tasarlanmış yüksek performanslı bir çıkarım (inference) motorudur. UC Berkeley'de geliştirilen vLLM, PagedAttention adlı özgün bellek yönetim yaklaşımıyla GPU belleğinin israfını engellerken continuous batching ile çok sayıda eş zamanlı isteği verimli biçimde işler. OpenAI uyumlu API arayüzü, mevcut uygulamalara kolayca entegre edilmesini sağlar.

PagedAttention Nasıl Çalışır?

Geleneksel LLM çıkarımında KV cache (anahtar-değer önbelleği) her token üretildiğinde büyür ve GPU'da ardışık bellek bloğu gerektirir. Bu durum parçalanmaya (fragmentation) yol açar ve gerçek kapasiteden çok daha az istek işlenebilir. PagedAttention, KV cache'i işletim sistemlerindeki sayfalı bellek (paged memory) mantığıyla yönetir: sabit boyutlu sayfalara böler, dinamik olarak tahsis eder ve farklı istekler arasında paylaştırır. Bu yaklaşım GPU belleğini ~%90 verimlilikle kullanılabilir hale getirir.

Continuous Batching

Klasik statik batching'de bir grup istek aynı anda işlenir ve en uzun yanıtın bitmesi beklenir; bu kısa istekler için GPU'yu boş bırakır. Continuous (sürekli) batching ise her adımda hangi isteğin bir sonraki tokeni almaya hazır olduğunu kontrol eder ve boşlukları derhal yeni isteklerle doldurur. Bu dinamik zamanlama, toplam throughput'u önemli ölçüde artırır ve gecikme dağılımını düzleştirir.

Kurulum ve Kullanım

vLLM, pip ile tek komutta kurulur. Temel kullanım için CUDA uyumlu bir GPU ve NVIDIA sürücüsü gerekir. Sunucu başlatıldığında --model parametresiyle HuggingFace model kimliği verilir; vLLM modeli indirir, yükler ve OpenAI uyumlu endpoint'leri açar. --tensor-parallel-size ile çoklu GPU dağılımı, --quantization ile bellek tasarrufu sağlanabilir. CPU-only modda çalışabilir ancak performans önemli ölçüde düşer.

Rakip Araçlarla Karşılaştırma

vLLM'in başlıca rakipleri TGI (HuggingFace Text Generation Inference), TensorRT-LLM (NVIDIA) ve llama.cpp'dir. TGI genel amaçlı ve yönetimi kolayken vLLM daha yüksek throughput sunar. TensorRT-LLM NVIDIA GPU'larında en yüksek ham hızı verebilir ancak model dönüştürme adımı gerektirir. llama.cpp ise CPU ve Apple Silicon optimizasyonuyla öne çıkar. vLLM kullanım kolaylığı ve performans dengesiyle en yaygın tercih haline gelmiştir.

Türkiye'deki Kullanım Alanları

Türkiye'de yapay zeka ürünleri geliştiren startup'lar ve kurumsal şirketler vLLM'i ağırlıklı olarak maliyet optimizasyonu için kullanmaktadır. Aynı GPU donanımıyla daha fazla eş zamanlı kullanıcı istemesi karşılanabildiğinden bulut faturası belirgin biçimde düşer. Yerel modelleri kendi veri merkezlerinde çalıştırmak isteyen finans ve sağlık kuruluşları için vLLM, KVKK uyumluluğunu korurken yüksek performans sağlayan tercih edilen servis motorudur.

Sıkça Sorulan Sorular

vLLM CPU üzerinde çalışır mı? Evet, ancak performans GPU'ya kıyasla çok düşüktür. Üretim kullanımı için CUDA uyumlu NVIDIA GPU önerilir.

OpenAI SDK ile doğrudan kullanılabilir mi? Evet. vLLM, base_url parametresiyle OpenAI Python SDK'ya yönlendirilerek sorunsuz çalışır.

Quantization desteği var mı? Evet, AWQ, GPTQ ve bitsandbytes quantization desteklenir; bu sayede bellek gereksinimi düşürülür.

Birden fazla model aynı anda sunulabilir mi? Evet, LoRA ile birden fazla adaptör tek bir temel model üzerinde çalışma zamanında yönetilebilir.

vLLM ve Ollama arasındaki fark nedir? Ollama kullanıcı dostu kurulum ve yerel geliştirme için idealdir; vLLM yüksek eş zamanlılık ve üretim ölçeği için optimize edilmiştir.

Hangi lisansla dağıtılır? Apache 2.0 — ticari kullanım dahil herhangi bir kısıt olmaksızın kullanılabilir.

terminal Kurulumdan ilk isteğe: çalışan komutlar

Kurulum tek satır: pip install vllm. Sanal ortamı uv ile kuranlar uv venv --python 3.12 ve uv pip install vllm ile daha hızlı sonuç alır. Paket CUDA 12 için derlenmiş tekerlerle gelir, yani makinede yeterince yeni bir NVIDIA sürücüsü bulunmalı; nvidia-smi çıktısındaki sürücü ve CUDA sürümünü kurulumdan önce kontrol edin.

Sunucuyu başlatmak için vllm serve Qwen/Qwen2.5-7B-Instruct --max-model-len 8192 yazın. Model Hugging Face'ten iner, ardından OpenAI uyumlu uçlar 8000 portunda açılır. Erişimi kapalı modellerde HF_TOKEN ortam değişkenini vermeniz gerekir.

İlk isteği curl ile atabilirsiniz: curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"Qwen/Qwen2.5-7B-Instruct","messages":[{"role":"user","content":"Merhaba"}]}'. Python tarafında mevcut kodunuzu değiştirmenize gerek yok; OpenAI istemcisini base_url="http://localhost:8000/v1" ve api_key="EMPTY" ile kurmanız yeterli.

Docker tercih edenler için: docker run --gpus all --ipc=host -p 8000:8000 vllm/vllm-openai:latest --model Qwen/Qwen2.5-7B-Instruct. Buradaki --ipc=host atlanırsa paylaşımlı bellek yetmez ve çok işlemcili yükleme sırasında hata alırsınız.

memory Hangi model kaç GB VRAM ister?

  • check_circle 7B ve 8B modeller: FP16 ağırlıklar yaklaşık 15-16 GB yer kaplar; KV cache payıyla birlikte 24 GB'lık tek kart (RTX 3090, RTX 4090, L4, A10G) rahat çalışır. AWQ veya GPTQ 4 bit sürümde ağırlık 5 GB bandına iner, 12 GB'lık kartlar bile yeter.
  • check_circle 13B ve 14B modeller: FP16'da yaklaşık 28 GB ağırlık demek; 40 GB'lık bir A100 ya da --tensor-parallel-size 2 ile iki adet 24 GB kart gerekir. 4 bit nicelemede 9-10 GB'a düştüğü için 16 GB'lık tek kart iş görür.
  • check_circle 30B ve 34B modeller: FP16 için 64 GB civarı bellek, pratikte tek H100 80 GB veya iki A100 40 GB. 4 bit sürümler 20 GB bandına indiğinden 24 GB'lık tek kartta da çalışır, ancak bağlam uzunluğunu kısmanız gerekir.
  • check_circle 70B modeller: FP16'da 140 GB'ı aşar; iki H100 80 GB ya da dört A100 40 GB ile tensor paralel kurulum ister. AWQ 4 bit sürüm 40 GB bandına indiği için tek A100 80 GB veya iki 24 GB kart yeterli olabilir.
  • check_circle KV cache payını unutmayın: vLLM varsayılan olarak GPU belleğinin yüzde 90'ını ayırır (--gpu-memory-utilization 0.9). Ağırlıklardan artan kısım KV cache'e gider ve eş zamanlı istek sayısını o belirler. Bellek yetmiyorsa ilk hamle --max-model-len değerini düşürmektir.
  • check_circle Kaba hesap: 1 milyar parametre FP16'da yaklaşık 2 GB, 8 bitte 1 GB, 4 bitte 0,5 GB yer kaplar. Bulduğunuz sayının üstüne bağlam ve eş zamanlılık için yüzde 20-30 pay bırakın.

compare_arrows vLLM mi Ollama mı? Karar kriterleri

İkisi aynı işi yapmıyor. Ollama tek kişinin makinesinde model indirip çalıştırmak için tasarlandı; llama.cpp tabanlı olduğu için GGUF niceleme kullanır, CPU ve Apple Silicon'da da çalışır, kurulumu birkaç dakika sürer. vLLM ise sunucu tarafı bir servis motoru: aynı GPU üzerinde yüzlerce eş zamanlı isteği sıraya alır ve toplam verimi yüksek tutar.

Tek kişilik geliştirme, deneme, dizüstü bilgisayar ya da GPU'suz makine söz konusuysa Ollama. Kullanıcıya açık bir ürün, çağrı merkezi, toplu belge işleme veya saniyede onlarca istek varsa vLLM. Kararsız kaldığınızda tek soru yeter: aynı anda kaç istek işleyeceksiniz? Tek haneli sayılarda fark hissedilmez, onlu sayılara çıkıldığında continuous batching farkı belirgin hale gelir.

Maliyet tarafı daha da basit. Saatlik kiralanan bir GPU'nun ücreti sabittir, dolayısıyla saatte işlediğiniz token sayısı arttıkça bin token başına maliyet düşer. Aynı kartta iki kat throughput, birim maliyeti yarıya indirir. Ollama'nın bu senaryodaki zaafı sınırlı eş zamanlılık, vLLM'in zaafı ise NVIDIA GPU ve Linux bağımlılığıdır.

help Sıkça Sorulan Sorular

  • check_circle vLLM nasıl kurulur? pip install vllm komutu yeterlidir; paket CUDA 12 için derlenmiş tekerlerle gelir ve Python 3.9 ile 3.12 arası sürümlerde çalışır. Kurulumdan sonra vllm serve model-adi komutu OpenAI uyumlu sunucuyu 8000 portunda başlatır. Sürücü uyuşmazlığı yaşamamak için kurulumdan önce nvidia-smi çıktısını kontrol edin.
  • check_circle vLLM için hangi GPU gerekir, 7B model kaç GB VRAM ister? FP16 ağırlıklarla 7B model yaklaşık 15 GB yer kaplar; KV cache payıyla birlikte 24 GB'lık bir kart (RTX 3090, RTX 4090, L4) rahat yeter. AWQ veya GPTQ 4 bit sürümlerde ağırlık 5 GB bandına indiği için 12 GB'lık kartlar da çalıştırabilir. 70B gibi büyük modellerde tek kart yetmez, --tensor-parallel-size ile birden fazla GPU'ya dağıtmanız gerekir.
  • check_circle vLLM CUDA out of memory hatası nasıl çözülür? Önce --max-model-len değerini düşürün; bellek çoğunlukla ağırlıklara değil bağlam uzunluğu için ayrılan KV cache'e gider. Sonra --gpu-memory-utilization değerini 0.95'e çekmeyi, modelin AWQ ya da GPTQ sürümüne geçmeyi ve --max-num-seqs ile eş zamanlı istek sayısını sınırlamayı deneyin. Aynı kartta başka bir işlem varsa nvidia-smi ile görüp kapatın.
  • check_circle vLLM Windows'ta çalışır mı? Doğrudan çalışmaz. Resmi destek Linux üzerinedir; Windows kullanıcıları WSL2 içine Ubuntu kurup NVIDIA'nın WSL sürücüsüyle çalıştırır ya da Docker imajını kullanır. Sadece denemek isteyen biri için Ollama veya LM Studio çok daha az uğraştırır.