Hiç kendi GPU'nuzda büyük bir dil modeli barındırmayı denediniz ve çok aç bir Tamagotchi sahiplenmiş gibi hissettiniz mi? Ona VRAM veriyorsunuz, çekirdekleri şımartıyorsunuz ve sonunda bir cevap istediğinizde... size beş saniye boyunca bakıyor ve uzaklaşıyor. İşte bu benim "vanilya" LLM sunucusuyla geçirdiğim hafta sonuydu. Sonra vLLM'yi kurdum.
Spoiler: vLLM, LLM çıkarımını sanki üç tekerlekli bisikletinizi bir Tesla ile değiştirmişsiniz gibi hissettiren açık kaynaklı bir motordur. Bu vLLM incelemesi, ne olduğunu, donanım bütçenizden nasıl daha fazla belirteç (token) sıktığını, nerelerde parladığını, nerelerde tökezlediğini ve kimlerin sepete, kümeye veya "belki sonra" yığınına koyması gerektiğini inceliyor.
vLLM nedir, sade İngilizceyle (ve daha az GPU gözyaşıyla)?
vLLM, büyük dil modelleri için açık kaynaklı bir çıkarım ve hizmet motorudur. Onu hava trafik kontrolörü, bagaj görevlisi ve indirimli havayolu şirketinin hepsi bir arada düşünün; istekleri planlayan, belirteçleri (token) GPU belleğine sıkıştıran ve koltukları (VRAM) boş bırakmadan verimli bir şekilde havalanan şey. Tanıdığınız modelleri (Llama, Mistral, Mixtral, Phi, Qwen, Gemma) tanıdık API'lerin (OpenAI tarzı, OpenAI uyumlu) arkasına sarar, ardından akıllı bellek hileleri ve zamanlamayla onları turbo şarj eder.
LLM'leri naif döngülerle veya hatta genel amaçlı hizmet çerçeveleriyle çalıştırmayı denediyseniz, muhtemelen en büyük hız katiliyle tanışmışsınızdır: boşa harcanan bellek. vLLM'nin alametifarikası, anahtar/değer dikkat önbelleklerini bir işletim sistemindeki sayfalar gibi ele alan dinamik bir bellek yöneticisi olan PagedAttention'dır. Çevirisi: Her sohbete VRAM'de özel bir çatı katı vermek yerine, çatı katını ortak çalışma alanına dönüştürür. Daha fazla insan (istek) sığabilir. Herkes daha hızlı yazar.
Bu vLLM incelemesi kimler için?
- Düşük gecikmeli sohbet ve yüksek verimli toplu işler isteyen yapay zeka uygulamaları geliştiren ekipler.
- Ticari LLM uç noktalarına açık kaynaklı bir alternatif arayan altyapı uzmanları.
- Performanstan ödün vermeden hızlı model değiştirmelerine ihtiyaç duyan araştırmacılar.
- Kendi kendine barındırma yoluyla belirteç (token) maliyetlerini düşürmeye çalışan pragmatik girişimciler.
"Sadece bir istem kutusu ve hisler istiyorum" diyorsanız, yönetilen API'leri tercih edebilirsiniz. "10 kat bütçe olmadan 10 kat verim istiyorum" diyorsanız, okumaya devam edin.
vLLM'nin öne çıkan özellikleri (ve neden umursamalısınız)
- PagedAttention: Dikkat KV önbellekleri için bellek sayfalandırması. vLLM'nin kare düşürmeden birçok isteği yönetebilmesinin nedeni budur.
- Sürekli toplu işleme: Yeni istekler devam eden toplu işlemlere katılır, böylece GPU'lar meşgul kalır ve gecikme makul seviyelerde kalır.
- OpenAI uyumlu API'ler: Minimum kod değişikliğiyle OpenAI için oluşturulmuş araçlara ve SDK'lara takın.
- Tensör/nicemleme desteği: FP16, BF16 ve popüler nicemlenmiş ağırlıklar (uygun olduğunda AWQ, GPTQ gibi), böylece daha büyük beyinleri daha küçük GPU'lara sığdırabilirsiniz.
- Çoklu GPU ve dağıtılmış hizmet: Tek A100'ünüz terlemeye başladığında ölçeklendirin.
- Akış belirteçleri (streaming tokens): Kullanıcılar kelimelerin bir Hollywood hack sahnesi gibi yazıldığını görür, bu da her şeyin bir şekilde daha hızlı hissedilmesini sağlar.
- LoRA/adaptör desteği (modele bağlı): Aynı temel model üzerinde ince ayarlı varyantlar sunuyorsanız kullanışlıdır.
Hızlı kurulum hikayesi (namı diğer: ilk belirtece ne kadar hızlı ulaşabilirim?)
- vLLM'yi pip aracılığıyla kurun. Çağırma çemberine gerek yok:
pip install vllm
- Hugging Face'teki bir modele veya yerel ağırlıklarınıza yönlendirin.
- OpenAI uyumlu bir uç noktayla sunucuyu başlatın.
- Curl ile çalıştırın veya mevcut OpenAI istemcinize takın.
Bir tüketici GPU'su ve bir veri merkezi kartına sahip bir iş istasyonunda yaptığım testlerde, ilk belirtece ulaşma süresi, özellikle yük altında, stok transformatör sunucu kurulumlarına göre gözle görülür şekilde daha hızlı hissedildi. Sihir, birden fazla kullanıcı (veya kendi toplu işleriniz) sunucuya yüklendiğinde ortaya çıkar; vLLM, GPU'yu besler.
Kıyaslamalar, gecikme ve gerçek dünya hissi
vLLM incelemesi sırasında göze çarpanlar:
- Verim: Sürekli toplu işlemeyle vLLM, GPU'nuzu yalnızca elipsler yazdıran bir uzay ısıtıcısına dönüştürmeden saniyede birçok isteğe hizmet edebilir. Ona ne kadar çok eşzamanlı istek atarsanız (makul sınırlar içinde), o kadar çok esner.
- Gecikme: İlk belirtece ulaşma süresi rekabetçi ve bazen de denediğim diğer açık kaynaklı sunuculardan daha iyi; özellikle akış etkinleştirildiğinde ve istemler kısa ila orta uzunlukta olduğunda.
- Uzun çıktılar: Sürekli üretim istikrarlıdır. Çok uzun üretimler için VRAM'i rahat tutmak için max_tokens, ışın ayarlarını (gerekliyse) ve sıcaklığı ayarlamak isteyeceksiniz.
- Karma iş yükleri: Sohbeti, araç kullanma istemlerini ve hafif toplu puanlamayı aynı anda işlemekte tuhaf bir şekilde iyidir. Tıpkı kimseyi zehirlemeden hem krep hem de pad thai servis eden bir lokanta gibi.
Sayılarınız GPU sınıfına, nicemlemeye, dizi uzunluklarına ve model seçimine bağlı olacaktır. Ancak örüntü tutarlıdır: eşzamanlılık arttıkça vLLM öne çıkar.
vLLM'nin diğer LLM sunucularına göre nerelerde parladığı
- Önceliğiniz minimum gecikme düşüşüyle çok sayıda etkileşimli kullanıcıya hizmet etmekse, vLLM'nin zamanlayıcısı ve PagedAttention'ı öne çıkıyor.
- Mevcut uygulamalara yerleştirmek için OpenAI uyumlu uç noktalara ihtiyacınız varsa, tak ve çalıştır dostudur.
- Maliyet optimizasyonu yapıyorsanız, genellikle biraz daha küçük bir GPU sınıfına geçebilir veya aynı donanımdan daha fazla istek/sn sıkabilirsiniz. Her yerdeki CFO'lar hemen dikkat kesildi.
vLLM'nin sizi nerelerde hayal kırıklığına uğratabileceği (sihirli peri tozu değil)
- Model uyumluluğu evrensel değildir. En popüler açık ağırlıklar harika çalışır, ancak egzotik mimariler veya en son nicem formatları ince ayar gerektirebilir veya henüz desteklenmeyebilir.
- Bellek hala fiziktir. PagedAttention yardımcı olur, ancak 100 eşzamanlı kullanıcılı 6 GB'lık bir GPU'daki 7B modeli hala bir sitcom'dur, bir sunucu değil.
- Gelişmiş çoklu kiracılık ve koruma rayları, diğer araçlarla eşleştirmeyi veya tutkal kodu yazmayı gerektirebilir.
- Güncellemeler hızla ilerliyor. Bu, özellikler için bir artı, durgun kararlılık istiyorsanız bir eksi.
vLLM ve olağan şüpheliler (dostça bir yüzleşme)
- Text Generation Inference (TGI): TGI cilalı ve kurumsal olarak popülerdir. vLLM, özellikle konuşkan iş yükleri için dinamik toplu işleme ve PagedAttention ile genellikle verimde onu geride bırakır. TGI, güçlü Hugging Face entegrasyonuna ve sağlam üretim ergonomisine sahiptir. Ham hizmet hızı ve OpenAI benzeri API'ler için vLLM'yi seçin; HF araçlarında derinlemesineyseniz ve onların operasyonel kalıplarını istiyorsanız TGI'yi seçin.
- OpenLLM/FastChat/Diğerleri: Birçoğu deney yapmak için harikadır. vLLM genellikle eşzamanlılık ve bellek verimliliğinde kazanır. Yoğun trafiğe sahip bir tüketici uygulaması geliştiriyorsanız, vLLM'nin zamanlaması kuyrukları kısa tutmaya yardımcı olur.
- Özel Triton/Transformers yığınları: Ortalama bir sunucu oluşturabilirsiniz, ancak vLLM zaten oluşturacağınız hileleri paketler ve küçük bir şehrin değerindeki çekirdekleri korumanıza gerek kalmaz.
Derinlemesine inceleme: PagedAttention neden önemli?
Modelinizin dikkat düşünce alanını dev bir beyaz tahta olarak hayal edin. Her sohbet ona çizim yapıyor. Çoğu sunucu, tüm bölümü atar; sohbet iki karalama ve bir gülen yüzden oluşsa bile. PagedAttention, bu beyaz tahtayı yapışkan notlara ayırır ve onları içeri ve dışarı karıştırır. Daha fazla insan aynı anda çizebilir, daha az boşluk, daha az boşa harcanan alan. İşte bu yüzden vLLM, gerçek dünya (yani rastgele şeyler soran birçok kullanıcı) ortaya çıktığında performansı koruyor.
Geliştirici deneyimi: rahat mı yoksa sert mi?
- API rahatlığı: OpenAI'yi taklit eden REST uç noktaları elde edersiniz. Mevcut istemcilerinizi, istem şablonlarınızı ve kaydedicilerinizi getirin.
- Yapılandırmalar: Toplu iş boyutları, tensör paralelliği, nicemleme ve zamanlayıcı düğmeleri için bol miktarda işaret içeren mantıklı varsayılanlar.
- Gözlemlenebilirlik: Metrik uç noktaları, günlükler ve Prometheus kancaları var, ancak muhtemelen kendi izlemenizi ekleyeceksiniz.
- Genişletilebilirlik: Belirteçleyiciler, adaptörler ve arka uçlar için eklenti benzeri destek gelişiyor. Gece yarısı kod okumayı seviyorsanız, depo aktif ve yaklaşılabilir.
Maliyet hesabı: vLLM GPU faturasını nasıl değiştirir
- Daha iyi kullanım = daha az boş döngü. Saatine göre (bulut) veya itfa (şirket içi) ödüyorsanız, vLLM'nin verim artışı dolar başına daha fazla belirtece (token) dönüşür.
- Nicemleme kazanımları: Desteklendiği durumlarda AWQ/GPTQ/INT8 çalıştırmak, VRAM ayak izlerini küçültebilir ve bir GPU katmanını düşürmenize veya kart başına daha fazla eşzamanlı iş sığdırmanıza olanak tanır.
- Yatay ölçek: Daha fazla kas ihtiyacınız olduğunda, vLLM birden fazla GPU ve düğümde çalışır. Mimarınızı bir blendera atmadan doğrusal olarak büyüyebilirsiniz.
Kural olarak: hizmetinizde bir avuçtan fazla eşzamanlı kullanıcı varsa veya toplu işleri dalgalar halinde çalıştırıyorsanız, vLLM'nin verimliliği hızla karşılığını verir. Sadece istemleri test ediyorsanız, sahip olmak güzel bir şey.
Gerçek dünya senaryoları: vLLM'nin hakkını verdiği yerler
- Çok sayıda eşzamanlı kullanıcısı olan sohbet asistanları: Müşteri desteği, dahili BT yardımı veya öğrencilerin gece yarısından beş dakika önce deneme taslakları oluşturmasına yardımcı olan uygulama.
- İçerik oluşturma işlem hatları: DMV gibi görünen bir kuyruk olmadan paralel olarak oluşturulan blog taslakları, e-posta taslakları, kod yorumları.
- Araç destekli aracıları: Modeliniz araç çağrıları için durakladığında, vLLM'nin toplu işlemi GPU'yu diğer isteklerle meşgul tutar.
- RAG sistemleri: vLLM, alıcınız kitap kurdu işlerini başka bir yerde yaparken, oluşturma katmanı olarak güzel bir şekilde çalışır.
vLLM kurulum ipuçları (eğlenceli bir şekilde öğrenildi)
- Hizmet vermeyi planladığınız modelle başlayın. Önce küçük bir 3B'yi kıyaslamayın, sonra bir 70B dağıtın ve GPU'nuzun neden çığlık attığını merak edin.
- Maksimum bağlam uzunluğunu ayarlayın. Aşırı büyük bağlam VRAM'i patlatır; doğru boyutlandırma eşzamanlılığı yüksek tutar.
- Akışı etkinleştirin. Kullanıcılar daha hızlı yanıtlar hisseder ve kullanıcı arabirimi belirteçlerini erken temizleyebilirsiniz.
- Gerçek trafik örüntüleriyle test edin. Yoğun mu? Sabit mi? Karışık mı? vLLM'nin zamanlayıcısı şekle bağlı olarak farklı şekilde parlar.
- Her şeyi kaydedin. Gecikme p50, p95, belirteç (token) verimi ve OOM olayları, bir sonraki sıkıştırmanız gereken yeri size söyler.
Güvenlik ve yönetişim: kendi olgun pantolonlarınızı getirin
vLLM bir hizmet motorudur, ahlaki bir pusula değil. Denetim, PII temizleme, hız sınırları, kiracı yalıtımı veya denetim izlerine ihtiyacınız varsa, bunları ağ geçidinde veya uygulama katmanında ekleyin. İyi haber: OpenAI uyumlu arayüz, favori politikalarınızı ve ara yazılımınızı değiştirmeyi kolaylaştırır.
İnce baskı: bu vLLM incelemesindeki uyumluluk ve uyarılar
- Her model mimarisi veya nicem ağırlığı tak ve çalıştır olmayacaktır. Belgeleri ve topluluk sorunlarını kontrol edin. Destek hızı hızlıdır, ancak yenilik her zaman kararlılığın önüne geçer.
- CPU geri dönüşü mü? vLLM, GPU'larda en mutlu halindedir. CPU üzerinde deney yapabilirsiniz, ancak bu kayak botlarıyla maraton koşmaya çalışmak gibidir.
- Çoklu GPU parçalama güçlüdür, ancak dikkatli yapılandırma gerektirir. Özellikle üretim SLA'ları için yük devretme ve sıcak başlatmaları test edin.
Hızlı başlangıç: zihinsel bir kontrol listesi
- Donanım: Hedef modeliniz için yeterli VRAM'e ve eşzamanlılık için ek alana sahip GPU'lar.
- Model: İyi desteklenen bir aile (Llama, Mistral, Mixtral, Qwen, Gemma) seçin ve belirteçleyici/nicemleme uyumluluğunu onaylayın.
- Hizmet: vLLM'yi OpenAI API'si açıkken çalıştırın, yanıtları yayınlayın, bağlamı ve max_tokens'ı mantıklı bir şekilde ayarlayın.
- Ölçek: GPU'lar veya düğümler ekleyin. Yönlendirme, hız sınırları ve kimlik doğrulama için bir ağ geçidi kullanın. Bulut kullanıyorsanız otomatik ölçeklendirmeyi düşünün.
- Maliyetler: Saniye başına belirteç (token), eşzamanlılık ve ortalama çıktı uzunluğunu ölçün. Her değişiklikten sonra yeniden çalıştırın.
Belirtmeye değer: Sider.AI'ın bu resme nerede uyduğu
Dikkat, geliştiriciler: model seçmeye, istemler arasında hızı karşılaştırmaya ve genellikle yineleme yaparken aklınızı kaybetmemeye çalışıyorsanız, Sider.AI mükemmel bir akıl sağlığı kontrolü olabilir. Farklı arka uçlarda istemleri tasarlayabilir, test edebilir ve iyileştirebilir, ardından maliyet veya kontrol için kendi kendine barındırma zamanı geldiğinde vLLM'ye geçebilirsiniz. Sider.AI'yı pit ekibiniz olarak düşünün; ardından vLLM'yi pist açıldığında sürdüğünüz yarış arabası olarak düşünün. vLLM'yi şu anda kimler seçmeli?
- Evet: Büyüyen kullanıcı tabanlarına sahip girişimler, birçok ekibe hizmet veren dahili platformlar, ücretli API'den kendi kendine barındırmaya geçen ürün ekipleri.
- Belki: Seçenekleri keşfeden yalnız geliştiriciler. Trafiğiniz çok küçükse, yönetilen API'ler şimdilik daha basit (ve daha ucuz) olabilir.
- Henüz değil: Hizmet katmanında anahtar teslim uyumluluk ve yalıtım gerektiren yüksek düzeyde düzenlenmiş kuruluşlar. Önce etrafına daha fazla koruma rayı eklemeniz gerekecek.
vLLM'nin artıları ve eksileri (şekerleme yok)
Artıları
- Eşzamanlılık altında mükemmel verim
- OpenAI uyumlu API, geçişleri basitleştirir
- PagedAttention ile güçlü bellek verimliliği
- Popüler açık modeller ve nicemleme için iyi destek
- Aktif topluluk ve hızlı geliştirme temposu
Eksileri
- Evrensel model/nicem desteği yok; bazı ince ayarlar gerekli
- GPU'larda en iyisi; CPU kullanımı çoğunlukla bilimsel deneyler içindir
- Üretim sınıfı çoklu kiracılık ve yönetişim ekstralar gerektirir
- Hızlı değişiklikler zaman zaman yükseltme sorunları anlamına gelebilir
Bu vLLM incelemesinin kararı
vLLM, hem akademik açıdan akıllı hem de üretim açısından pratik hissettiren nadir açık kaynaklı projelerden biridir. Bir saunaya dönüşen bir GPU çiftliği kurmadan LLM'leri ölçekte çalıştırmak konusunda ciddiyseniz, kısa listenizde yer almalıdır; muhtemelen en üstte. Modelleri sunmanın tek yolu bu değil, ancak şu anda en hızlı, en esnek ve geliştirici dostu olanlardan biri.
Başka bir deyişle: mevcut kurulumunuz kullanıcıların hayatlarını yeniden gözden geçirecek kadar uzun süre beklemesine neden oluyorsa, vLLM cevapları onlar yapmadan önce göndermenize yardımcı olacaktır. Ve tüm mesele bu değil mi?
Eylem planı: LLM'nizi bu hafta hızlandırın
- 1. Gün: Hedef modelinizle vLLM'yi ayağa kaldırın. Akışı açın. Gerçek istemlerinizle vurun.
- 2. Gün: Bağlam penceresini ve toplu iş ayarlarını ayarlayın. Daha fazla istek sığdırmak için desteklenen bir nicemlemeyi deneyin.
- 3. Gün: Bir ağ geçidi ve günlükler ekleyin. p95 gecikmesini ve dolar başına belirteci (token) ölçün.
- 4-5. Günler: Gerçek kullanıcılara bir kanarya itin. Gerekirse ölçeklendirin. Köpüklü bir şeyle kutlayın (seltzer sayılır).
Ve patronunuz maliyeti ikiye katlamadan verimi nasıl ikiye katladığınızı sorduğunda, sadece iki kelime söyleyin: "sayfalandırılmış dikkat". Ardından bu vLLM incelemesini onlara verin ve her şeyi planlamışsınız gibi başınızı sallamalarının tadını çıkarın.
SSS
S1:vLLM küçük ekipler için mi yoksa sadece büyük işletmeler için mi uygun?
İkisi için de. Maliyetleri düşürmek için yönetilen API'lerden kendi kendine barındırmaya geçiyorsanız, vLLM'nin OpenAI uyumlu uç noktaları geçişi kolaylaştırır. Büyük ekipler için verim ve eşzamanlılık kazanımları, trafik zirve yaptığında parlar.
S2:vLLM'de en iyi hangi modeller çalışır?
Llama, Mistral, Mixtral, Qwen, Gemma ve Phi gibi popüler açık modeller iyi bilinen yollardır. Nicemlenmiş varyantlar için uyumluluk notlarını kontrol edin; en yaygın formatlar çalışır, ancak egzotik kombinasyonlar ince ayar gerektirebilir.
S3:vLLM'yi çalıştırmak için ne kadar GPU'ya ihtiyacım var?
VRAM'i model boyutunuza ve bağlam pencerenize göre eşleştirin, ardından eşzamanlılık için ek alan ekleyin. Tek bir yüksek bellekli GPU, 7B-13B modeline iyi hizmet edebilir; daha büyük modeller veya yoğun trafik, çoklu GPU kurulumlarından yararlanır.
S4:vLLM sadece verimi mi artırıyor yoksa gecikmeyi de azaltıyor mu?
İş yüküne bağlı olarak her ikisi de. Sürekli toplu işleme, daha iyi verim için GPU kullanımını iyileştirirken, akış ve verimli zamanlama, konuşkan uygulamalarda ilk belirtece ulaşma süresine ve kuyruk gecikmesine yardımcı olur.
S5:vLLM, Text Generation Inference (TGI) ile nasıl karşılaştırılır?
vLLM, özellikle etkileşimli sohbet için PagedAttention ve dinamik toplu işlemeyle genellikle TGI'yi verimde geride bırakır. TGI, Hugging Face entegrasyonlarına ve kurumsal cilaya yaslanır; yığınınız ve öncelikleriniz karar vermeli.