İçeriğe geç
Cloud Provider Benchmarks

GPU ve AI altyapısı

Ç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

  1. 01 KV kapasitesi bağlam uzunluğuyla ters orantılı ölçeklenir: 16× daha uzun bağlam 16× daha az eşzamanlı dizi demektir.
  2. 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.
  3. 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.
  4. 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.

Llama 3.1 8B Instruct · FP8 · 1× H100 SXM5 Çalıştırılabilir senaryo matrisi (KV önbelleği kapasite modeli) · KV budget ≈ 60.0 GB
Bağlam 15102550100 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.

Qwen3 32B · FP8 · 1× H200 SXM Çalıştırılabilir senaryo matrisi (KV önbelleği kapasite modeli) · KV budget ≈ 87.0 GB
Bağlam 15102550100 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 bellek gereksinimleri ve minimum GPU sayısı (FP8 ağırlıklar)
Model Parametre (B) BF16 (GB) FP8 (GB) INT4 (GB) KV / token (KiB) KV @32K (GB) Min. H100 SXM5Min. H200 SXMMin. 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. [1] vLLM documentation — vLLM project Resmî dokümantasyon erişim:
  2. [2] Efficient Memory Management for Large Language Model Serving with PagedAttention — Kwon et al., SOSP 2023 İkincil kaynak erişim:
  3. [3] Llama 3.1 8B Instruct model card — Meta Resmî dokümantasyon erişim:
  4. [4] Qwen2.5 7B Instruct model card — Qwen Resmî dokümantasyon erişim: