Kapasite planı — bir yükün gecikme hedeflerini karşılaması için kaç GPU gerekir
Yükü tarif et: saniyede kaç istek geliyor, ne uzunlukta ve ne kadar hızlı cevaplanmalı. LLMScale bunu kaç vLLM kopyasının taşıyacağını ve her birinin kaç GPU'da çalışacağını hesaplar.
Model seç
Yük
Gecikme hedefleri
Donanım
Ne gerekiyor
| Düzen | Kopya | GPU | kopya başına istek/s | Sınır |
|---|---|---|---|---|
| 1 GPU | 1 | 1 | 11.1 | token başına süreyle sınırlı |
| TP 2 | 1 | 2 | 23.1 | token başına süreyle sınırlı |
| PP 2 | 1 | 2 | 22.3 | token başına süreyle sınırlı |
| PP 3 | 1 | 3 | 32.2 | token başına süreyle sınırlı |
| TP 4 | 1 | 4 | 47.5 | token başına süreyle sınırlı |
| TP 2 · PP 2 | 1 | 4 | 46.2 | token başına süreyle sınırlı |
| PP 4 | 1 | 4 | 44.5 | token başına süreyle sınırlı |
| PP 5 | 1 | 5 | 50.1 | token başına süreyle sınırlı |
Ortalama uzunluklara sahip, ani sıçramaların olmadığı sabit trafik için bir planlama modeli. Prompt'ları okumak her kopyanın zamanından bir pay alır ve decode süresini aynı katsayıyla uzatır; decode'daki dizi sayısı Little yasasına göre belirlenir. Hızları, üreticinin tepe değerinin %92'si olarak alınan bellek bant genişliği ile GeForce kartlarda %90 (ölçülmüş), diğer kartlarda %60 (tahmini) olarak alınan yoğun tensor işlem gücü sınırlar; üstüne her adımda katman başına sabit bir maliyet, tensor-paralel grupta katman başına iki all-reduce ve her istek için ilk tokendan önce yaklaşık 6 ms eklenir. Pipeline aşamalarının her biri bir batch çalıştırır ve o kadar kopyanın hızına ulaşır; aşamalar arası aktarım ve uzman paralelliğinin dağıtımı all-reduce gibi sayılır, henüz ölçülmemiş bir tahmindir. Tek NVIDIA GPU'da bu, vLLM 0.31 ölçümlerine yaklaşık %10–15 yakındır. Bellek kullanımı vLLM'in kendi hesabından alınır. Ani yükler için boş kapasite bırak. Strix Halo'da katman maliyeti ve tensor işlem gücü ölçüldü (vLLM ROCm), ama dörtten fazla dizi ve kısa prompt'lar 3 kata kadar yavaş; diğer AMD, Apple ve birleşik bellekli cihazlarda ve MoE modellerde prompt okumada hızlar üst sınır olarak kalır.
Plan nasıl hesaplanıyor
Bir kopya, VRAM hesaplayıcısının yerleştirdiği gibi yerleştirilmiş bir vLLM örneğidir: tek GPU, bir tensor-parallel grup, bu grupların pipeline aşamaları ya da MoE'de uzmanları veri-paralel sıralara dağıtılmış hâli. Belli bir istek hızında zamanının bir kısmını prompt'ları okumaya harcar. Prompt süresi, prompt'un FLOP sayısının GPU'nun erişilebilir yoğun tensor işlem gücüne bölünmesiyle hesaplanır; bu işlem gücü GeForce kartlarda tepe değerin ölçülmüş %90'ı, diğer kartlarda ise tahmini %60'ıdır. Ağırlıkları bir kez okumak daha uzun sürüyorsa prompt süresi olarak bu süre alınır. Zamanın geri kalanı decode adımlarına gider; böylece prompt ve decode süreleri aynı katsayıyla uzar. Belirli bir batch boyutundaki adım süresi decode modelinden gelir: ağırlıklar ile KV cache'i okuma süresi ve matris çarpımlarının süresinden uzun olanıdır. Planlayıcı, ilk token süresini, çıktı token'ı başına süreyi ve KV cache'i sınırlar içinde tutan en yüksek hızı bulur ve yükü buna böler.
- prefill payı f = kopya başına saniyedeki istek × prefill süresi
- çıktı token'ı başına süre = batch'teki decode adımı ÷ (1 − f)
- decode'daki dizi = saniyedeki istek × çıktı token'ı × çıktı token'ı başına süre
- GPU = ⌈saniyedeki istek ÷ bir kopyanın kapasitesi⌉ × bir kopyadaki GPU
Maks context'teki tek isteğin sığdığı, 8 GPU'ya kadarki her düzeni, model daha fazlasını istiyorsa hesaplayıcının en az sayısını da dener ve en ucuzdan başlayarak listeler. Pipeline aşamalarının her biri bir batch çalıştırır; böylece aşamalı bir kopya, o kadar tek aşamalı kopya kadar hızlıdır. Bir tensor-parallel grubun taşıyamadığı modeli sığdıran onlardır. Ortak prefix bir kez cache'lenir ve yeniden hesaplanmaz. İstek gelişlerinin sabit olduğu, prompt ve çıktı uzunluklarının da ortalama değerlerinde kaldığı varsayılır; ani yükselmeler ve uzun kuyruklu dağılımlar içeren gerçek trafik için ek pay gerekir.
Sık sorulanlar
- Tek GPU'ya sığan bir model neden birkaç GPU isteyebilir?
- Bellek bir modelin çalışıp çalışmadığını söyler; yük ise kaç kopya gerektiğini. Her isteğin önce prompt'u okunur, bu işlem gücüne bağlıdır; sonra cevabı bitene kadar her decode adımında bir yer tutar. Llama 3.1 8B tek bir H100'e rahatça sığar; ancak 2.048 token'lık prompt'lar, 256 token'lık cevaplar ve token başına 50 ms hedefiyle bir H100 saniyede yaklaşık 10 istek taşır, dolayısıyla saniyede 15 istek için iki H100 gerekir.
- Tensor parallelism neden bazen daha fazla GPU'ya mal olmaz?
- Bir modeli GPU'lara bölmek, her adımın okuduğu ağırlıkları ve her prompt'un gerektirdiği işi de böler; böylece her adım kısalır ve her prompt daha çabuk okunur. Bir kopyayı sınırlayan bir gecikme hedefiyse, tek kopya olarak iki GPU tek GPU'nun iki katından fazlasını taşıyabilir; kopyayı KV cache ya da ham işlem hızı sınırlıyorsa ayrı kopyalar da aynı işi görür ve daha basittir.
- Rakamlara ne kadar güvenebilirim?
- Birinci dereceden tahminlerdir. Bellek, gerçek açılışlarla doğrulanmış vLLM muhasebesinden gelir. Hızlar üretici tepe değerlerini belirtilen verimliliklerle kullanır; kuyruk modeli sabit gelişler varsayar. GPU sayısını ortalama yükün için taban kabul et, ani yükler için %20 ile %30 ekle ve tek bir kopyada bir benchmark ile doğrula.