Kendi sunucunuzda LLM sunmak: vLLM ile kurulumdan üretime
Beceri rehberi

Kendi sunucunuzda LLM sunmak: vLLM ile kurulumdan üretime

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 6 dk okuma

vLLM ile büyük dil modelini kendi sunucunuzda sunma: model ve donanım seçimi, vllm serve ile kurulum, ayarlar, güvenlik ve sık hatalar.

vLLM nedir, kendi sunucuda neden kullanılır?

vLLM, büyük dil modellerini bir sunucuda çıkarım (inference) için çalıştıran açık kaynaklı bir sunum motorudur. Modeli yükler, gelen istekleri gruplar ve GPU belleğini verimli kullanarak aynı donanımdan daha çok eşzamanlı kullanıcıya yanıt üretmeye çalışır. Dışarıya bir HTTP arayüzü açar; bu arayüz, yaygın sohbet servislerinin istek biçimiyle uyumlu olduğu için mevcut istemci kodunu büyük ölçüde değiştirmeden bağlayabilirsiniz.

Kendi sunucunda barındırmanın tipik gerekçeleri şunlardır: verinin kurum dışına çıkmaması gereken durumlar, tahmin edilebilir maliyet, model ve sürüm üzerinde tam kontrol, gecikme süresini kendi ağınızda yönetebilme ve ince ayar yapılmış kendi modelinizi sunma ihtiyacı. Karşılığında altyapıyı siz işletirsiniz: GPU kapasitesi, güncellemeler, izleme ve güvenlik sizin sorumluluğunuzdadır.

Başlamadan önce bu gerekçelerden en az birinin sizin için geçerli olup olmadığını sorun. Düşük hacimli ve hassas olmayan bir kullanım için hazır bir servis kullanmak çoğu zaman daha az emek gerektirir.

Model ve donanım seçimi nasıl yapılır?

Sunumun ilk kararı, hangi modelin hangi GPU üzerinde çalışacağıdır. Bir modelin ağırlıkları GPU belleğine sığmalıdır; üzerine çıkarım sırasında her istek için tutulan bağlam önbelleği (KV cache) de eklenir. Bellek ihtiyacı yaklaşık olarak şu kalemlerden oluşur: model ağırlıkları, eşzamanlı isteklerin bağlam önbelleği ve çalışma sırasındaki geçici tamponlar.

Karar verirken şu soruları sorun:

  • Hedef görev nedir: kısa sınıflandırma mı, uzun belge özetleme mi, sohbet mi? Küçük bir model basit görevde yeterli ve daha ucuz olabilir.
  • Eşzamanlı kaç kullanıcı beklenir ve istekler ne kadar uzun bağlam taşır? Uzun bağlam, aynı GPU'da daha az eşzamanlı isteğe izin verir.
  • Model lisansı ticari kullanıma uygun mu? Bunu modelin kendi lisans sayfasından kontrol edin.
  • Tek GPU yeterli mi, yoksa modeli birden çok GPU'ya bölmek mi gerekiyor? Büyük modellerde ağırlıklar GPU'lar arasında paylaştırılır; bu, vLLM'in desteklediği bir kullanım biçimidir ancak ilgili ayar adlarını sürümünüze ait belgeden okuyun.

Nicemleme (kuantizasyon) ağırlıkları daha az bellekle tutmayı sağlar ve daha küçük donanımda daha büyük model çalıştırmanın yoludur. Kalitede küçük bir kayıp olabileceği için kendi görev örnekleriniz üzerinde karşılaştırarak karar verin.

Kurulum ve ilk sunucu: adım adım

Önce temiz bir Python ortamı ya da kapsayıcı hazırlayın; GPU sürücüleri ve CUDA uyumu vLLM sürümünüzün belgesindeki gereksinimlerle eşleşmelidir. Ardından paket kurulur ve sunucu tek komutla başlatılır. vLLM belgeleri komutun biçimini şöyle gösterir (model adı kendi seçiminizle değişir):

vllm serve <model-adi>

Komutun ilk argümanı modelin adıdır. Model ilk çalıştırmada bir model deposundan indirilir ve belleğe yüklenir. Hazır olduğunda sunucu, sohbet tamamlama için /v1/chat/completions yolunda istek kabul eder.

Çalıştığını doğrulamak için basit bir istek gönderin. Örnek (kurgusal model adıyla):

curl http://SUNUCU_ADRESI:PORT/v1/chat/completions -H "Content-Type: application/json" -d '{"model": "model-adi", "messages": [{"role": "user", "content": "Merhaba, kendini tanıt."}]}'

Yanıtta modelin ürettiği metin choices alanının içinde gelir. Bağlantı noktası ve kimlik doğrulama seçeneklerini kullandığınız sürümün belgesinden teyit edin; bunlar sürümler arasında değişebilir. İstemci tarafında mevcut bir kütüphaneyle çalışıyorsanız yalnızca taban adresi sunucunuzun adresiyle değiştirmeniz çoğu zaman yeterlidir.

Performansı ve belleği ayarlamak

Sunucu ilk ayağa kalktığında varsayılan ayarlarla çalışır; üretim için ana dengeleri gözden geçirirsiniz: bellek, bağlam uzunluğu ve eşzamanlılık.

Bağlam uzunluğu sınırını gerçek ihtiyacınıza çekin. Modelin desteklediği en yüksek bağlamı açık bırakmak, bağlam önbelleği için ayrılacak belleği şişirir ve eşzamanlı istek sayısını düşürür. İstekleriniz kısa kalıyorsa sınırı düşürmek aynı GPU'da daha çok kullanıcıyı karşılar.

GPU belleğinin ne kadarının vLLM'e ayrılacağı bir ayardır; çok yüksek tutmak aynı makinede başka işlerle çatışır, çok düşük tutmak önbelleği daraltır. Başka süreçlerle GPU paylaşıyorsanız bu payı bilinçli seçin.

Yük testi yapmadan ayar değiştirmeyin. Gerçek trafiğe benzeyen istek uzunlukları ve eşzamanlılıkla bir test çalıştırın ve ilk token süresine, toplam yanıt süresine ve saniyedeki üretilen token miktarına bakın. İlk token süresi kullanıcının beklediği süreyi, üretim hızı ise genel kapasiteyi gösterir. Bir ayarı değiştirin, aynı testi tekrarlayın, farkı kayda alın.

Üretime hazırlık: güvenlik ve işletim

Test makinesinde çalışan bir sunucu, üretim için yeterli değildir. Kontrol listesi:

  • Erişim: Sunucuyu doğrudan internete açmayın. Önüne bir ağ geçidi ya da ters vekil koyun, kimlik doğrulama ve istek sınırlaması orada uygulansın.
  • Ağ: Sunucuya yalnızca uygulama katmanından erişilmesini sağlayın.
  • Model dosyaları: Ağırlıkların kaynağını ve sürümünü kayıt altına alın; aynı model adı farklı zamanda farklı ağırlık getirebilir.
  • İzleme: Gecikme, hata oranı, GPU bellek kullanımı ve kuyruk uzunluğunu bir izleme sistemine toplayın. Kapasite sorunu çoğunlukla kuyruğun uzamasıyla önce görünür.
  • Yeniden başlatma: Süreç çökerse otomatik ayağa kalkması için bir süreç yöneticisi ya da orkestrasyon kullanın. Model yüklemesi zaman aldığı için sağlık kontrolü yükleme bitmeden trafiği yönlendirmemelidir.
  • Gizlilik: İstek ve yanıtlarda kişisel veri varsa kayıt politikanızı önceden belirleyin; günlüklere düz metin yazmak sızıntı kaynağı olabilir.
  • Sürüm yönetimi: vLLM ve model güncellemelerini önce ayrı bir ortamda deneyin, kendi değerlendirme örneklerinizle kaliteyi doğrulayın.

Sık yapılan hatalar

  • Belleğe sığmayan modeli seçmek: Yükleme sırasında bellek hatası alınır. Önlem: ağırlık ve bağlam önbelleği ihtiyacını baştan hesaplamak, gerekirse nicemlenmiş sürüm seçmek.
  • Gereksiz uzun bağlam: Kapasiteyi düşürür. Önlem: sınırı gerçek kullanım örneklerine göre koymak.
  • Yük testi yapmadan canlıya çıkmak: Tek kullanıcıyla hızlı görünen sunucu, eşzamanlı yükte kuyruklanır. Önlem: gerçekçi eşzamanlılıkla test.
  • Sunucuyu korumasız açmak: Önlem: ağ geçidi, kimlik doğrulama ve ağ ayrımı.
  • Sohbet şablonunu atlamak: Talimatla eğitilmiş modeller kendi sohbet biçimini bekler; yanlış şablon kalitesiz yanıt üretir. vLLM belgeleri özel sohbet şablonu verme seçeneğinden söz eder; modelin kartındaki biçimi kontrol edin.
  • Kalite ölçmemek: Hız ölçülüp kalite ölçülmez. Önlem: nicemleme ya da model değişikliğinden önce ve sonra aynı örnek soru kümesini değerlendirmek.
  • Tek örneğe bağımlılık: Tek sunucu çökerse hizmet durur. Önlem: önemli kullanımda yedek örnek ve yük dağıtımı.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

LLM Kendi Sunucunda Barındırma ve Sunum (vLLM, TGI) eğitimi, modelin kurum altyapısında çalıştırılmasından sorumlu mühendisler için kurgulanmıştır: MLOps, platform ve altyapı ekipleri ile uygulama geliştiricileri ilk hedef kitledir. Modül başlıkları model seçimi ve donanım boyutlandırmayı, vLLM ile sunumu, kuantizasyon ve bellek optimizasyonunu, performans testi ve kapasiteyi, üretim işletimi ve güvenliği kapsar; yani bu sayfadaki akışın her halkasına karşılık gelir.

Open Source LLM Modelleri (Llama, Mistral) eğitimi, hangi açık modelin hangi iş için seçileceği ve bunların kendi altyapıda çalıştırılması ile uygulamaya dönüştürülmesi üzerine yoğunlaşır. Verisini dışarı çıkarmak istemeyen kurumsal ekipler, bu programları birlikte ele alarak model seçiminden üretim işletimine kadar bir yol haritası çıkarabilir.

İlgili Mindset programı

LLM Kendi Sunucunda Barındırma ve Sunum (vLLM, TGI)

Sık sorulanlar

Sık sorulan sorular

vLLM ile Ollama arasındaki fark nedir?

Bu araçlar modeli kendi makinenizde çalıştırır; fakat odakları farklıdır. vLLM, çok sayıda eşzamanlı isteği verimli karşılayan sunucu tarafı bir sunum motoru olarak öne çıkar. Ollama ise genelde tek kullanıcılı yerel denemeler ve geliştirici makineleri için kolay kurulum sunar. Üretim yükü planlıyorsanız yük testiyle ikisini kendi senaryonuzda karşılaştırın.

vLLM çalıştırmak için GPU şart mı?

Pratikte büyük dil modellerini kabul edilebilir hızda sunmak için GPU gerekir. Desteklenen donanım ve işlemci sürümleri vLLM sürümüne göre değiştiğinden, kurulum sayfasındaki güncel uyumluluk listesini kontrol edin. Küçük bir modeli yalnızca denemek için daha mütevazı donanım yeterli olabilir ama üretim hızını yansıtmaz.

Mevcut OpenAI uyumlu istemci kodum vLLM ile çalışır mı?

vLLM, sohbet tamamlama için /v1/chat/completions yolunu sunan uyumlu bir sunucu arayüzü verir. Bu nedenle çoğu istemci kütüphanesinde taban adresi ve model adını değiştirmek yeterli olur. Yine de araç çağırma ya da yapılandırılmış çıktı gibi gelişmiş özelliklerin desteğini kullandığınız sürümün belgesinden doğrulayın.

Modelimi ilk kez ayağa kaldırırken ne kadar bekleme normaldir?

Süre modelin boyutuna, diskten okuma hızına ve ağdan indirme gerekip gerekmediğine bağlıdır. İlk çalıştırmada model deposundan indirme eklenir, sonraki çalıştırmalarda önbellekteki ağırlıklar kullanılır. Üretimde yükleme süresini hesaba katıp sağlık kontrolünü modelin hazır olduğu ana bağlayın.

Kendi sunucuda barındırmak her zaman daha ucuz mudur?

Hayır. Hacim düşükse ve donanım çoğu zaman boş kalıyorsa hazır bir servis daha ekonomik olabilir. Kendi altyapınızın maliyeti donanım, elektrik, işletim emeği ve yedekliliği de içerir. Veri gizliliği ya da tahmin edilebilir maliyet gibi gerekçeler çoğu zaman maliyetten daha belirleyici olur.

vLLM ile LLM'i Kendi Sunucunda Çalıştırma Rehberi