Çok kullanıcılı LLM çıkarımı: eşzamanlılık, bağlam ve KV önbellek bir GPU'yu nasıl sınırlar
Bir GPU kaç eşzamanlı kullanıcıya hizmet verebilir: bağlam uzunluğuna göre KV önbellek kapasitesi, gecikmenin yükle neden arttığı ve eşzamanlılığın doğru benchmarkı.
Yayımlandı: Güncellendi: Read in English
Kısa yanıt
Bir GPU'nun tutabileceği en fazla eşzamanlı dizi sayısı, KV bütçesinin hedef bağlam uzunluğundaki tek bir dizinin KV boyutuna bölümüdür. Tek H100'de FP8 ile Llama 3.1 8B için bu, 8K token'lık yaklaşık 55 dizi, ancak 128K token'lık yalnızca yaklaşık 3 dizidir. Bu seviyelerdeki verim ve gecikme ölçülmelidir.
Yönetici özeti
Aynı anda çok sayıda kullanıcıya hizmet vermeyi üç şey sınırlar: KV önbellek belleği (kaç dizinin sığdığı), hesaplama (batch'lenmiş prefill ve decode'un ne kadar hızlı çalıştığı) ve zamanlama (motorun gecikme ile verim arasında nasıl denge kurduğu). KV kapasitesi model mimarisinden ve GPU belleğinden hesaplanabilir; yükün gecikme üzerindeki etkileri ise ölçülmelidir. Bu makale, hesaplamayı ve 1, 5, 10, 25, 50 ve 100 eşzamanlılık seviyeleri için kullanılan benchmark tasarımını açıklar.
Temel bulgular
- 01 KV kapasitesi bağlam uzunluğuyla ters orantılı ölçeklenir: 16× daha uzun bağlam 16× daha az eşzamanlı dizi demektir.
- 02 Grouped-query attention önemlidir: Qwen2.5 7B 4 KV başlığı kullanır ve token başına yaklaşık 57 KB gerektirir; bu, Llama 3.1 8B'nin 131 KB'ının yarısından azdır.
- 03 KV kapasitesinin ötesinde motorlar istekleri kuyruğa alır veya önceden keser (pre-empt); bu da ilk token'a kadar geçen süreyi keskin biçimde artırır. p95 ve p99 gecikme bunu ortalamalardan önce ortaya çıkarır.
- 04 Benchmarklar yalnızca belleğe sığan eşzamanlılık/bağlam kombinasyonlarını çalıştırır; uygulanamayan kombinasyonlar başarısızlık olarak değil, uygulanamaz olarak raporlanır.
Eşzamanlılığı ne sınırlar
vLLM gibi continuous batching motorları, KV önbellekte yer olduğu sürece istekleri çalışan batch’e ekler. Her etkin dizi, gördüğü her token için key ve value değerlerini tutar. Önbellek dolduğunda yeni istekler bekler veya çalışanlar önceden kesilir (pre-empt).
Bağlam uzunluğuna göre KV kapasitesi
Aşağıdaki matris, standart varsayımları kullanarak her bağlam uzunluğu ve hedef eşzamanlılık için yapılandırmanın sığıp sığmadığını gösterir.
| Bağlam | 1 | 5 | 10 | 25 | 50 | 100 | Maks. eşz. |
|---|---|---|---|---|---|---|---|
| 8K | ✓ | ✓ | ✓ | ✓ | ✓ | — | 55 |
| 16K | ✓ | ✓ | ✓ | ✓ | — | — | 27 |
| 32K | ✓ | ✓ | ✓ | — | — | — | 13 |
| 64K | ✓ | ✓ | — | — | — | — | 6 |
| 128K | ✓ | — | — | — | — | — | 3 |
✓ senaryo bellek modeline sığar · — KV önbelleği aşılır (çalıştırılmaz) · ✕ ağırlıklar sığmaz · n/a model bu bağlamı desteklemez. Model: %90 bellek kullanımı, %5 çalışma zamanı rezervi, 16-bit KV önbelleği.
| Bağlam | 1 | 5 | 10 | 25 | 50 | 100 | Maks. eşz. |
|---|---|---|---|---|---|---|---|
| 8K | ✓ | ✓ | ✓ | ✓ | — | — | 40 |
| 16K | ✓ | ✓ | ✓ | — | — | — | 20 |
| 32K | ✓ | ✓ | ✓ | — | — | — | 10 |
| 64K | ✓ | ✓ | — | — | — | — | 5 |
| 128K | ✓ | — | — | — | — | — | 2 |
✓ senaryo bellek modeline sığar · — KV önbelleği aşılır (çalıştırılmaz) · ✕ ağırlıklar sığmaz · n/a model bu bağlamı desteklemez. Model: %90 bellek kullanımı, %5 çalışma zamanı rezervi, 16-bit KV önbelleği.
Mimari farklar
Grouped-query attention KV başlıklarını ve dolayısıyla KV boyutunu azaltır. Daha az KV başlığına sahip modeller aynı donanımda daha fazla eşzamanlı kullanıcıyı destekler.
| Model | Parametre (B) | BF16 (GB) | FP8 (GB) | INT4 (GB) | KV / token (KiB) | KV @32K (GB) | Min. H100 SXM5 | Min. H200 SXM | Min. L40S |
|---|---|---|---|---|---|---|---|---|---|
| Llama 3.1 8B Instruct Yoğun · GQA | 8 | 16 | 8 | 4 | 128 | 4,3 | 1× | 1× | 1× |
| Llama 3.3 70B Instruct Yoğun · GQA | 70,6 | 141 | 71 | 35 | 320 | 10,7 | 2× | 1× | 2× |
| Qwen2.5 7B Instruct Yoğun · GQA | 7,6 | 15 | 8 | 4 | 56 | 1,9 | 1× | 1× | 1× |
| Qwen3 32B Yoğun · GQA | 32,8 | 66 | 33 | 16 | 256 | 8,6 | 1× | 1× | 1× |
| Qwen3 30B-A3B MoE · 3,3B aktif · GQA | 30,5 | 61 | 31 | 15 | 96 | 3,2 | 1× | 1× | 1× |
Ağırlık boyutu = parametre × hassasiyet baytı. KV = 2 × katman × KV başlığı × başlık boyutu × 2 bayt (MLA için latent boyutu). Minimum GPU: %85 kullanılabilir bellek ve GPU başına en az 4 GB KV payı. Ölçüm değil, kapasite modelidir.
Yük gecikmeyi nasıl etkiler
Düşük eşzamanlılıkta TTFT çoğunlukla prefill süresidir ve TPOT bant genişliğine bağlı decode süresine yakındır. Eşzamanlılık arttıkça:
- Verim (tüm kullanıcılar genelinde saniye başına çıktı token’ı) artar, ardından hesaplama doyuma ulaştığında yatay seyreder.
- TPOT kademeli olarak artar, çünkü her decode adımı daha büyük bir batch işler.
- TTFT, KV önbellek veya zamanlayıcı bütçesi dolana kadar sabit kalır, ardından istekler kuyruğa girdikçe dik biçimde yükselir.
p99 TTFT’nin tırmanmaya başladığı nokta, kurulumun pratik kapasitesidir.
Benchmark tasarımı
Çok kullanıcılı çıkarım benchmarkı, vllm bench serve komutunu 1, 5, 10, 25, 50 ve 100 eşzamanlılıkta ve 8K, 32K, 64K ve 128K bağlamlarda, yalnızca senaryonun sığdığı durumlarda çalıştırır. TTFT, TPOT, p50/p95/p99’da uçtan uca gecikme, çıktı verimi, hata oranı ve tepe GPU belleğini kaydeder. Sonuçlar, çalıştırma yeniden üretildikten sonra yayımlanır.
Sınırlamalar
- Kapasite değerleri her dizinin tam bağlam uzunluğuna ulaştığını varsayar; karışık uzunluklara sahip gerçek trafikte daha fazla dizi sığar.
- Prefix caching, FP8 KV önbellek ve speculative decoding kapasiteyi ve gecikmeyi değiştirir ve koşu parametreleri olarak kaydedilir.
- İstemci ile sunucu arasındaki ağ gecikmesi sunucu tarafı metriklerin dışında tutulur.
Sonuç
Eşzamanlılık kapasitesi hesaplanabilir; eşzamanlılık performansı hesaplanamaz. Uygulanabilir yapılandırmaları seçmek için KV aritmetiğini kullanın, ardından kurulumun hedefini karşılamayı bıraktığı noktayı bulmak için artan yük altında kuyruk gecikmesini ölçün.
Sık sorulan sorular
Tek bir H100 kaç kullanıcıya hizmet verebilir?
Modele ve bağlama bağlıdır. FP8 ile Llama 3.1 8B ve 8K token'lık dizilerle KV önbelleğe yaklaşık 55 dizi sığar. Bu eşzamanlılıktaki gecikmenin hedefinizi karşılayıp karşılamadığı ölçülmelidir.
TTFT ve TPOT nedir?
İlk token'a kadar geçen süre (TTFT), ilk çıktı token'ına kadar olan gecikmeyi ölçer ve ağırlıklı olarak kuyrukta bekleme ile prefill tarafından belirlenir. Çıktı token'ı başına süre (TPOT), sonraki token'lar arasındaki aralığı ölçer ve ağırlıklı olarak decode tarafından belirlenir.
Neden p95 ve p99 raporlanıyor?
Yük altında isteklerin küçük bir kısmı kuyrukta bekler. Ortalamalar bunları gizler; kuyruk yüzdelikleri en yavaş kullanıcıların deneyimini gösterir.
Kaynaklar
- [1] vLLM documentation — vLLM project Resmî dokümantasyon erişim:
- [2] Efficient Memory Management for Large Language Model Serving with PagedAttention — Kwon et al., SOSP 2023 İkincil kaynak erişim:
- [3] Llama 3.1 8B Instruct model card — Meta Resmî dokümantasyon erişim:
- [4] Qwen2.5 7B Instruct model card — Qwen Resmî dokümantasyon erişim:
İlgili araştırmalar
GPU ve AI altyapısı
LLM çıkarımı için en iyi GPU: H100, H200 ve L40S'yi model boyutuna göre eşleştirme
Model boyutu, hassasiyet, bağlam uzunluğu ve eşzamanlılığa göre LLM çıkarımı için hangi GPU kullanılmalı — Qwen, Llama, DeepSeek ve MiniMax için boyutlandırma rehberi.
GPU ve AI altyapısı
LLM çıkarımı için NVIDIA H100 ve H200: bellek, bant genişliği ve yükseltmenin anlamlı olduğu durumlar
H100 ve H200; teknik özellikler, model sığması, KV önbellek kapasitesi ve Llama, Qwen, DeepSeek çıkarımı için decode bant genişliği tavanlarıyla karşılaştırıldı.
GPU ve AI altyapısı
NVIDIA H100 ve L40S: çıkarım iş yükünüze hangi GPU uyar?
H100 ve L40S; bellek, bant genişliği, FP8 hesaplama ve model sığması açısından türetilmiş decode tavanları ve GPU-saat başına bulut fiyatlarıyla karşılaştırıldı.
GPU ve AI altyapısı
NVIDIA H200 ve L40S: kapasite, bant genişliği ve çıkarım maliyeti dengeleri
LLM çıkarımı için H200 ve L40S: 141 GB HBM3e ile 48 GB GDDR6, decode tavanları, 7B'den 72B'ye model sığması ve yayımlanmış bulut fiyatları karşılaştırıldı.