Büyük dil modellerini (LLM’ler) geniş ölçeklerde dağıtmak, iki ana zorlukla karşı karşıya bırakır: yüksek talepler sırasında hızlı yanıt verme sağlamak ve GPU maliyetlerini yönetmek. Kurumlar genellikle, zirve talep dönemlerinde ek GPU’lar temin etmek ile hizmet seviyesi sözleşmesini (SLA) riske sokmak arasında kalır. Bu durumda iki seçenek ortaya çıkar:
- En kötü durum trafik senaryolarını yönetmek için çok sayıda GPU ile pek çok replik dağıtmak; bu durum, donanımın çoğu zaman boşta kalması nedeniyle bütçeyi tüketir.
- Sıfırdan agresif bir şekilde ölçeklenmek, bu durumda kullanıcıların gecikme yaşamalarına neden olur.
Ne ilk yaklaşım ne de ikinci yöntem ideal değildir. İlk seçenek bütçenizi aşındırırken, ikinci seçenek kullanıcılarınızı hayal kırıklığına uğratır.
NVIDIA Run:ai GPU bellek değiştirme, aynı zamanda model sıcak değiştirme olarak da bilinir, GPU bellek kısıtlamalarını ele alarak ve otomatik ölçeklendirme verimliliğini artırarak çıkarımlar için GPU kullanımını en üst düzeye çıkarmayı amaçlayan yeni bir yeniliktir.
Model Sıcak Değiştirmenin Önemi
Sıcak değiştirme, modellerin hizmetinde kaynak yönetimi için daha dinamik bir yaklaşım sunar. Bu yöntem, birden fazla modelin aynı GPU’ları paylaşabilmesine olanak tanır; bu durumda toplam bellek ihtiyaçları mevcut GPU kapasitesini aşsa bile. İşte nasıl çalıştığı:
- Dinamik bellek dışlama: Beklenti içinde olmayan, belirli bir süre boyunca talep almayan modeller GPU belleğini işgal etmez. Kullanılmadığında, CPU belleğine aktarılarak yer tasarrufu sağlanır.
- Hızlı etkinleştirme: Bir talep alındığında, model hemen GPU belleğine geri aktarılır ve bu işlem düşük gecikme ile gerçekleşir.
- Daha fazla model replikası, daha az donanım: Bu, birden fazla modelin aynı donanımı paylaşmasına olanak tanır ve her zaman açık olan makinelerin sayısını önemli ölçüde azaltır. Ayrıca, sunucunun (yani CPU süreci) GPU kısmı dışarıda kaldığında bile aktif kalması, repliğin hızlı bir şekilde yeniden etkinleştirilmesine yardımcı olur, çünkü sunucu zaten başlatılmıştır.
Sıcak değiştirme ile organizasyonlar tahmin edilemez iş yüklerini etkili bir şekilde yönetebilirken, maliyet açısından aşırı donanım temin etme riskinden de kaçınabilirler.
GPU Bellek Değiştirme: Performans Validasyonu
GPU bellek değiştirme performansını gösterme amacıyla gerçek dünya LLM dağıtım senaryolarını simüle ettik.
Test edilen modeller
- Meta Llama 3.1 8B Instruct (FP32: ~32 GB)
- Mistral-7B (FP32: 27.5 GB)
- Falcon-11B (FP32: 41.83 GB)
Donanım ve yazılım ortamı
- GPU: NVIDIA L40S (48 GB) PCIe Gen4 x8 üzerinden bağlantılı, maksimum teorik bant genişliğinin yarısıyla sınırlıdır.
- Örnek tipi: AWS g6e.4xlarge
- Planlayıcı: NVIDIA Run:ai Scheduler (v2.19)
- Çıktı motoru: vLLM versiyon 0.6.4, varsayılan yapılandırmalarla
- Sunucu görüntüsü düğümde önceden yüklüydü ve model ağırlıkları EBS depolamada önbelleğe alındı, tüm senaryolarda ağ trafiği fazla olmadan kullanıldı.
Metotlar
- İlk token zamanı (TTFT): İlk talebin sunucuya ulaşması anından modelin ilk tokenı üretmesine kadar geçen süre ölçüldü. Gerçek üretim ortamını simüle etmek için vLLM’nin resmi test senaryosu kullanılarak ısınma aşaması devre dışı bırakıldı.
Giriş koşulları
- İçerik uzunlukları: 128 token ve 2,048 token, modeller EOS tokenında duracak şekilde ayarlandı.
Üç Farklı Dağıtım Senaryosunda Gecikme ve Verimlilik Karşılaştırması
Üç ayrı senaryoyu değerlendirdik:
- Sıfırdan ölçekleme: Bir modeli sıfırdan yüklemenin TTFT’si ölçüldü.
- Tek bir GPU üzerindeki modeller arasında GPU bellek değişimi: Bir modelin CPU bellekten GPU belleğine geri yüklendiğinde TTFT’yi değerlendirdik.
- Temel (sıcak modeller): Modelin zaten GPU belleğinde mevcut olduğu durumda TTFT ölçüldü.
1. Sıfırdan Ölçekleme – Uzun Gecikmeler
Sıfırdan ölçekleme, pod’un başlatılmasını, modelin GPU’ya yüklenmesini ve ilk isteğin işlenmesini içerir. Beklendiği üzere, bu yaklaşım, en yüksek TTFT’yi oluşturdu çünkü başlatma gecikmeleri mevcuttu.
Model | Giriş Uzunluğu (Token) | TTFT (sn) |
Llama 3.1 8B Instruct | 128 | 159.49 |
2,048 | 159.77 | |
Mistral-7B | 128 | 145.90 |
2,048 | 146.90 | |
Falcon-11B | 128 | 207.07 |
2,048 | 208.13 |
TTFT, daha küçük modeller için genellikle 140 saniyeyi aşarken, daha büyük modeller için 200 saniyenin üzerine çıktı. Bu gecikmeler, 208 saniyeye kadar uzayabiliyor ve gerçek zamanlı uygulamalar için pratik değildir. Bu durum, üretimde sıfırdan ölçeklemenin verimsizliğini gözler önüne seriyor.
2. GPU Bellek Değişimi – Optimum Verimlilik
Bu testte, modeller CPU belleğinde başlatıldı ve talepler geldiğinde dinamik olarak GPU belleğine değiştirildi. İlk grup, Llama 3.1 8B ve Mistral-7B‘den oluşurken, ikinci grup Llama 3.1 8B ve Falcon-11B‘yi içeriyordu. Aşağıdaki sırayla ilerledik:
- Bir modele talep gönderildi, bu model GPU belleğine yüklenirken TTFT kaydedildi.
- Bu model görevi tamamladıktan sonra otomatik olarak yeniden CPU belleğine alındı ve ikinci modele talep gönderildi. Benzer şekilde, ikinci model GPU belleğine alındı ve TTFT kaydedildi.
Not: GPU bellek değişimi ile TTFT, PCI bant genişliği ve modeller arasında CPU ile GPU belleği arasında geçiş süresi ile sınırlandırılır.
Model | Giriş Uzunluğu (Token) | TTFT (sn) |
Mistral-7B | 128 | 2.4 |
2,048 | 2.57 | |
Llama 3.1 8B Instruct | 128 | 2.9 |
2,048 | 3 |
Model | Giriş Uzunluğu (Token) | TTFT (sn) |
Falcon-11B | 128 | 2.93 |
2,048 | 3.13 | |
Llama 3.1 8B Instruct | 128 | 2.9 |
2,048 | 3.13 |
Her iki grup—Llama 3.1 8B Instruct ile Mistral-7B ve Llama 3.1 8B Instruct ile Falcon-11B—modeller ve giriş uzunlukları boyunca tutarlı sonuçlar gösterdi. Falcon-11B, beklenildiği gibi, bellek ayak izi nedeniyle Mistral-7B‘den biraz daha uzun TTFT gösterdi. Ancak bu fark (~0.5 saniye) minimaldir ve gerçek dünya senaryoları için kabul edilebilir performans aralıklarındadır.
Bu sonuçlar—giriş dizisi uzunluğuna bağlı olarak yalnızca 2-3 saniye—sıfırdan ölçekleme yöntemine kıyasla %50-66’lık bir iyileşme göstermektedir. Bu, model türüne ve giriş uzunluğuna bağlı olarak değişiklik göstermektedir.
3. Temel Performans – Sıcak Modeller, Yüksek Maliyetler
Bir temel oluşturarak, modellerin GPU belleğinde tamamen yüklü olduğu durumda TTFT ölçtük. Bu durum, gecikme açısından teorik en iyi senaryoyu temsil eder.
Model | Giriş Uzunluğu (Token) | TTFT (sn) |
Llama 3.1 8B Instruct | 128 | 0.038 |
2,048 | 0.21 | |
Mistral-7B | 128 | 0.036 |
2,048 | 0.17 | |
Falcon-11B | 128 | 0.05 |
2,048 | 0.25 |
Sıcak modeller, neredeyse anında yanıtlar sunarken, GPU’yu her zaman o modele tam olarak tahsis edilmesini gerektirir. Birden fazla model veya replikayı yönetirken bu durum, GPU’ların düşük talep dönemlerinde önemli ölçüde kullanılmamasına yol açarak yüksek maliyetlere neden olur.
Maliyet Verimliliği ve Performans Dengelemesi
GPU bellek değişimi, performans ve maliyet arasında ideal dengeyi sağlayarak TTFT’yi sadece birkaç saniyeye indirmektedir. Bu, organizasyonların iş yüklerini daha az GPU üzerinde toplarken, katı SLA koşullarını korumalarını sağlar ve hem verimlilik hem de güvenilirlik sunar. Her zaman açık sıcak modellere kıyasla bu yaklaşım, sadece küçük bir gecikme farkıyla önemli maliyet tasarrufları sağlamaktadır.
NVIDIA Run:ai Model Streamer, sıfırdan ölçekleme senaryolarında TTFT’yi birkaç on saniye azaltmaya yardımcı olsa da, GPU bellek değiştirme, TTFT’yi 10 saniyenin altına düşürerek bu tür SLA’ları gerektiren uygulamalar için ideal bir çözüm sunmaktadır.
GPU bellek değiştirme ile GPU verimliliğini en üst düzeye çıkarabilir, boşta kalma maliyetlerini minimize edebilir ve kullanıcılarınızın beklediği yanıt hızını sürdürebilirsiniz.Bize ulaşın ve GPU bellek değişimini canlı izleyerek NVIDIA Run:ai’nın AI altyapınızı nasıl dönüştürebileceğini daha fazla öğrenin.