LB Politikalarıyla Yönlendirme
Bu eğitimde GPUStack'in rota düzeyinde yük dengeleme politikaları pratikte anlatılmaktadır: yükü dağıtırken oturumları sabit tutmak ve karar hizmetinin istek başına küçük ve büyük bir model arasında seçim yapmasına izin vermek. Yapılandırma referansı için bkz. Model Rota Yönetimi.
Önkoşullar
- Çalışan bir GPUStack kurulumu. Bu politikaları uygulayan AI ağ geçidi, varsayılan olarak GPUStack ile dağıtılır, dolayısıyla standart kurulumun ekstra kuruluma ihtiyacı yoktur.
- Rota hedefi olarak hizmet veren iki konuşlandırılmış model, ör.
qwen3-0.6bveqwen3-32b(aşağıdaki örneklerde bunlar kullanılmaktadır). - Karar hizmeti kısmı için:
Model-ProvidersayfasındaTypeSafe Decision Service (Jev)sağlayıcısı olarak kayıtlı bir Jev karar hizmeti (bkz. Model Sağlayıcı Yönetimi).
Adım 1: Rotayı Oluşturun
Routessayfasına gidin.Add Route'e tıklayın, örneğin adını verin.qwen3.- Tüm ağırlıkları ayarlamadan bırakarak
qwen3-0.6bveqwen3-32b'iRoute Targetsolarak seçin. Save'a tıklayın.
Ağırlık ve politika olmadan, rotanın Route By'si dönüşümlüdür — iki model arasında düz dönüşümlü.
Adım 2: Session Affinity ve Least Inflight Request Etkileşimi
Politika eklentileri etkinleştirildiğinde her eklenti tüm aday hedefleri puanlar. Son seçim mekanizması en yüksek ağırlıklı toplam puana sahip hedefi seçer:
Session Affinity en yüksek puanı oturumun mevcut hedefine, Least Inflight Request ise en az yüklü hedefe verir. Oturum ancak Least Inflight Request puan farkı Session Affinity puan farkını aştığında mevcut hedeften ayrılır.
Her iki eklentinin ağırlığı varsayılan değerinde (1) olduğunda aşağıdaki tablo, oturumun mevcut hedefinde x işlenmekte olan istek biriktiği ve diğer tüm hedeflerin boşta olduğu durumun sonucunu gösterir. Bu, hedef değiştirmeye en elverişli durumdur:
| Hedefler (N) | x=0 | x=1 | x=2 | x=3 | x=4 | Hedef değişir mi? |
|---|---|---|---|---|---|---|
| 2 | korunur | eşitlik ⚠️ | DEĞİŞİR | DEĞİŞİR | DEĞİŞİR | evet |
| 3 | korunur | korunur | eşitlik ⚠️ | DEĞİŞİR | DEĞİŞİR | evet |
| 4 | korunur | korunur | korunur | korunur | korunur | yalnızca x ≈ 5.3 olduğunda |
| ≥5 | korunur | korunur | korunur | korunur | korunur | hayır |
- DEĞİŞİR: oturum bir sonraki aday hedefe geçer.
- eşitlik ⚠️: puan farkları tam olarak eşittir. Son seçim rastgele yapılır; aynı istek başka hedefe geçebilir veya mevcut hedefte kalabilir.
- N ≥ 5: Least Inflight Request puan farkı
1/(N−1) ≤ 0.25ile sınırlıdır; bu, Session Affinity farkından küçüktür. Yalnızca yük dengesizliği oturumun hedef bağlılığını bozamaz.
Daha büyük rotalarda yükün önemli olmasını sağlamak için ağırlıkları yeniden dengeleyin — ölçekli ağırlık oranları altındaki çevirme eşikleri için Ağırlıklar Nasıl Çalışır konusuna bakın.
Adım 3: Session Affinity ve Least Inflight Request Özelliklerini Etkinleştirme
- Rotayı 1. Adımdan düzenleyin.
Session Affinity'i etkinleştir — varsayılan oturum anahtar zincirini kabul edin (session-idbaşlığı,x-client-request-idbaşlığı, ardındanprompt_cache_keygövde alanı) veya kendinizinkini belirtin.Least Inflight Request'i varsayılan ağırlığıyla etkinleştirin.- Rotayı kaydedin ve
Route By'ninPolicyolduğunu doğrulayın.
Oturumlar artık yapışkan: aynı oturum anahtarını taşıyan istekler aynı hedefte kalıyor — istem önbellekleri sıcak kalıyor — ağır yüklü bir sahip, yukarıdaki tabloya göre oturumları sonunda boşta kalan hedefe aktarıyor.
Her yolda gerçekte hangi anahtar kaynakların geçerli olduğuna dikkat edin: başlık anahtarları (örn. session-id) her yerde çalışır, ancak prompt_cache_key gibi gövde anahtarları yalnızca /responses ve /messages istekleri üzerinde etkili olur — standart oturum gövde alanı olmayan /chat/completions'de yalnızca zincirin başlık anahtarları dikkate alınır. Sohbet trafiği için başlık anahtarını tercih edin.
Adım 4: Karar Hizmeti Yönlendirmesi Ekleme
Şimdi rotayı modele uygun hale getirin: Bir oturumu her zaman hangi modelde başlamış olursa olsun sabitlemek yerine, karar motoruna her isteğin hangi modeli hak ettiğini sorun.
-
Rotayı düzenleyin ve
Decision Service Routing'ı etkinleştirin:Decision Service— kayıtlı sağlayıcıyı seçin.Decision Model— e.g.jev-latest.Instructions— "İsteği iyi karşılayabilecek en küçük modeli seçin. Basit, kısa veya olgusal istekler hızlı modele; karmaşık akıl yürütme, matematik veya kod istekleri büyük modele gider."Model Criteria— hedef başına bir giriş (veyaGenerate from targets'e tıklayın ve hassaslaştırın):qwen3-0.6b— "Çok hızlı, düşük maliyetli 0,6B modeli. Selamlaşmayı, basit gerçek soruları, biçimlendirmeyi ve kısa sohbetleri yönetir. Çok adımlı akıl yürütme, matematik ve kod konularında başarısız olur."qwen3-32b— "Yüksek kapasiteli 32B akıl yürütme modeli. Karmaşık akıl yürütme, matematik, kod oluşturma ve uzun bağlam analizini yönetir. İstek başına daha yavaş ve daha pahalı."
-
Kaydedin ve ardından
qwen3rota adına karşı iki kimliği doğrulanmış istek gönderin ($GPUSTACK_API_KEY'iAPI Keyssayfasında oluşturulan bir API anahtarıyla değiştirin):
İlk istek qwen3-0.6b'e, ikincisi ise qwen3-32b'e yönlendirilir.
Ağırlıklar Nasıl Çalışır?
Ağırlıklar iki farklı yerde farklı anlamlarla görünür:
Hedef Ağırlık (trafik payı)
Target Weight modunda, bir hedefin ağırlığı, kaç örnek çalıştırdığına bakılmaksızın hedefin trafikteki toplam payıdır. GPUStack, bölünmenin her zaman yapılandırılmış hedef ağırlıklarla eşleşmesi için örnek başına ağırlıkları ölçeklendirir:
- Hedef A (ağırlık 100, 1 örnek) ve Hedef B (ağırlık 100, 2 örnek) trafiği iki hedef arasında 50/50 böler — örnek başına 1/3 değil.
- Bir hedefin ölçeğini 1'den 2'ye çıkarmak payını değiştirmez; her örnek bunun yarısını alır.
qwen3-0.6b ve qwen3-32b ile örnek: qwen3-0.6b'de ağırlık 100 ve qwen3-32b'de ağırlık 300, kopyalarının sayısı ne olursa olsun, isteklerin %25'ini küçük modele ve %75'ini büyük modele gönderir.
Politika Ağırlığı (toplamdaki etki)
Her politika eklentisinin Weight değeri, Policy modundaki ağırlıklı toplama katkısını belirler. Pozitif bir sayıdır; kesirli değerler de anlamlıdır. Weight ayarlanmazsa eklentinin yerleşik varsayılanı kullanılır: Session Affinity ve Least Inflight Request için 1, Decision Service Routing için 10.
Oturumun mevcut hedefinde x işlenmekte olan istek varken ve diğer tüm hedefler boşta iken Session Affinity × Least Inflight Request dengesi şöyle hesaplanır:
- Session Affinity puan farkı:
affDiff = 0.5 / (2·(1 − 2⁻ᴺ)) - Least Inflight Request puan farkı:
loadDiff = x / ((1+x)·(N−1) + 1) - oturum,
w_leastInflight × loadDiff > w_affinity × affDiffolduğunda hedef değiştirir
Ağırlık oranı hedef değiştirme eşiğini değiştirir. Aşağıdaki tablo, her ağırlık oranı (Least Inflight Request : Session Affinity) ve hedef sayısı N için oturumun hedef değiştirmesini sağlayan en düşük x etkin istek sayısını gösterir:
| N | 1:1 (varsayılan) | 1.5:1 | 2:1 |
|---|---|---|---|
| 2 | 2 | 1 | 1 |
| 3 | 3 | 1 | 1 |
| 4 | 6 | 2 | 1 |
| 5 | asla | 3 | 2 |
| 6 | asla | 7 | 3 |
| 7 | asla | asla | 4 |
| 8 | asla | asla | 9 |
Tablonun okunması:
- Varsayılan 1:1 oranında beş veya daha fazla hedefi olan rotalarda oturum asla hedef değiştirmez: Least Inflight Request farkının üst sınırı Session Affinity farkının altında kalır.
- Session Affinity
Weightdeğerini yarıya indirmek (2:1 oranı), 8 hedefe kadar olan rotalardax= 2–4 düzeyinden itibaren yükün etkili olmasını sağlar. Least Inflight RequestWeightdeğerini ikiye katlamak da aynı etkiyi verir; yalnızca oran önemlidir. - Kesin eşitlikler (örn. N=2/x=1'de 1:1) bitirici tarafından rastgele bozulur.
Politikalar İşi Nasıl Bölüyor?
Etkinleştirilen tüm politikalar aynı ağırlıklı toplama katkıda bulunur ve her biri bir iş yapar:
- Karar Hizmeti Yönlendirme hangi modelin isteğe uygun olduğuna karar verir (varsayılan
Weight10, bunun genellikle baskın ses olduğunu yansıtır); - Session Affinity, istem önbellek konumunu koruyarak oturumu mevcut modelinde tutar;
- Least Inflight Request, istekleri seçilen modelin örnekleri arasında dağıtır.
Model birden fazla örnek olarak dağıtıldığında Decision Service Routing seçimi o modelle sınırlar; Least Inflight Request ise bu modelin örneğini seçer.