Zamanlayıcı
Özet
Zamanlayıcı iki ilgili görevden sorumludur:
- Ölçek büyütme: yeni model örnekleri için en iyi çalışan/GPU yerleşimini seçin.
- Ölçeği küçült: Mevcut model örneklerini sıralayın ve kopyalar azaldığında en az tercih edilenleri kaldırın.
Her iki yönde de zamanlayıcı iki basit aşamada çalışır:
- Filtre: modeli gerçekten çalıştırabilecek adayları bulun. Bunu aday listesini oluşturmak gibi düşünebilirsiniz.
- Puan: Her adaya bir puan verin, ardından mevcut hedef için en iyi olanı seçin.
Ölçek Büyütme Planlaması
1. Temel Çalışan Filtreleme
Zamanlayıcı ilk olarak çalışan listesinde temel bir filtreleme turu gerçekleştirir. Bu adım temel olarak kaynak dışı kısıtlamalarla ilgilidir: küme, etiketler, arka uç uyumluluğu, seçilen GPU'lar ve yerel yol kullanılabilirliği.
Filtre zinciri şu sırayla çalışır:
- Küme Filtresi Yalnızca çalışanları modelin hedef kümesinde tutar.
- GPU Eşleştirme Filtresi Model açıkça GPU'ları seçtiğinde çalışan kümesini daraltır.
- Etiket Eşleştirme Filtresi Yalnızca etiketleri modelin etiket seçicilerini karşılayan çalışanları tutar.
- Durum Filtresi Yalnızca çalışanları
READYdurumunda tutar. - Arka Uç Çerçeve Filtresi Hızlandırıcıları veya çalışma zamanı yetenekleri seçilen arka uçla eşleşmeyen çalışanları kaldırır.
- Yerel Yol Filtresi GPU'lar açıkça seçildiğinde
LOCAL_PATHmodellerine uygulanır. Yapılandırılmış model yolunun mevcut olmadığı çalışanları kaldırır.
Yalnızca bu temel filtreleme adımını geçen çalışanlar kaynak tabanlı filtrelemeye geçer.
2. Kaynak Bazlı Aday Filtreleme
Bu adım aynı zamanda bir filtredir. Meta verilere veya çalışan durumuna göre filtrelemek yerine kaynaklara göre filtreler: Bu çalışan veya yerleşim, modeli çalıştırmak için gerçekten yeterli RAM/VRAM sağlayabilir mi?
Kaynak gereksinimleri model türüne bağlı olarak farklı şekilde belirlenir:
- GGUF modelleri: kaynak gereksinimleri GGUF ayrıştırıcısı ile tahmin edilir.
- Diğer model türleri: kaynak gereksinimleri, vLLM, SGLang, MindIE veya VoxBox gibi ilgili arka uç tarafından tahmin edilir.
Arka uç yetenekleri farklıdır, dolayısıyla mevcut geri dönüş yolları da farklıdır:
- vLLM, SGLang, MindIE: esas olarak GPU tabanlı yerleşimleri kullanır ve burada yalnızca CPU veya kısmi boşaltma geri dönüş yollarını kullanmayın.
- GGUF, özel arka uçlar, VoxBox: Modelin kaynak gereksinimlerini tahmin etmek için GGUF ayrıştırıcısını kullanır. GPU boşaltmayı, kısmi boşaltmayı veya CPU yürütmeyi destekler.
- Özel arka uçlar, VoxBox: GPU aktarımını veya CPU yürütmeyi destekler.
Adaylar daha sonra sırayla değerlendirilir ve bir strateji çalıştırılabilir adaylar getirdiğinde süreç durdurulur. Genel olarak zamanlayıcı şunları dener:
- Tek işçi, tek GPU Bir işçi üzerindeki bir GPU, model gereksinimlerini karşılamak için yeterlidir.
- Tek işçi, birden fazla GPU Bir GPU'nun yeterli olmadığı durumlarda aynı işçi üzerinde birden fazla GPU birlikte kullanılır.
- Çalışanlar arasında dağıtılmış çıkarım Arka uç dağıtılmış yürütmeyi desteklediğinde, birden fazla çalışandaki GPU'lar kullanılabilir.
- Kısmi boşaltma veya CPU yürütme Yalnızca söz konusu model türü ve arka uç bu geri dönüş modlarını desteklediğinde kullanılır.
Burada birkaç ayrıntı önemlidir:
- Kaynaklara uygun filtreleme, adayları ortaya çıkaran ilk stratejide durur.
- Dağıtılan adaylar, asıl çalışanın yanı sıra alt çalışanları da kapsayabilir.
- Açık GPU seçimleri, hem temel çalışan filtrelemesi hem de kaynağa uygun filtreleme adımı sırasında dikkate alınır.
3. Aday Puanlaması
Çalıştırılabilir adaylar bulunduğunda zamanlayıcı, bunları bir puanlayıcı zinciriyle değerlendirir ve toplam puanı en yüksek olan adayı seçer.
Mevcut ölçek büyütme puanlaması:
- Yerleştirme Skoru
- Model Dosyası Yerellik Puanlayıcısı
Toplam aday puanı, tüm etkin puanlayıcıların toplamıdır.
Yerleştirme Puanlayıcı
Yerleştirme puanlayıcı her zaman ölçek büyütme için etkindir.
- Binpack
Bu strateji, kaynak kullanımını optimize etmek için mümkün olduğunca çok sayıda model örneğini en az sayıda "kutuya" (örneğin, İşçiler/GPU'lar) "paketlemeyi" amaçlar. Amaç, kaynak verimliliğini en üst düzeye çıkarırken kullanılan silo sayısını en aza indirmek, her bir silonun kapasitesini aşmadan mümkün olduğunca verimli bir şekilde doldurulmasını sağlamaktır. Model örnekleri, her bölmede kalan kapasiteyi en aza indirmek için en az alana sahip bölmeye yerleştirilir. - Yayılma
Bu strateji, birden fazla model örneğini farklı çalışanlar arasında mümkün olduğunca eşit bir şekilde dağıtmayı, sistemin hata toleransını ve yük dengelemeyi iyileştirmeyi amaçlamaktadır.
Ek davranış:
- GPU yerleşimleri için VRAM basıncı, RAM basıncından daha ağırdır.
- Yalnızca CPU yerleşimlerinde yalnızca RAM kullanımı dikkate alınır.
Model Dosyası Yerellik Puanlayıcısı
Model dosyası yerellik puanlayıcısı, gerekli model dosyaları zaten READY durumunda olan worker'lara yerleştirmeyi tercih etmek için eklenmiştir.
Ne işe yarar:
- Ana model dosyaları zaten hazır olan çalışanları arar.
- Spekülatif kod çözme yapılandırılmışsa taslak model için hazır dosyaları da arar.
- Her adayı, halihazırda bu dosyalara sahip olan katılımcı çalışanların oranına göre puanlar.
- Ana model konumuna taslak model konumuna göre daha fazla ağırlık verir.
4. Son Seçim
Puanlamanın ardından zamanlayıcı en yüksek toplam puana sahip adayı seçer ve model örneğini o yerleşime atar.
Ölçek Aşağı Planlama
İstenilen kopya sayısı mevcut model örneklerinin sayısından düşük olduğunda, denetleyici mevcut örnekleri sıralar ve önce en düşük sıradakileri siler.
Ölçek küçültme, mevcut model örnekleri üzerinde ayrı bir puanlayıcı zinciri kullanır:
- Durum Puanlayıcı
- Yük Boşaltma Katman Puanlayıcı
- Yerleştirme Skoru
Ortaya çıkan örnekler artan sırada puana göre sıralanır ve en düşük puana sahip örnekler ilk önce kaldırılır.
Durum Puanlayıcı
Durum puanlayıcı sağlıklı kopyaları tercih eder. Bu, sağlıksız veya henüz hazır olmayan kopyaları kaldırılacak ilk adaylar haline getirir.
GPU'ya Aktarılan Katman Puanlayıcısı
total_layers ve offload_layers bildiren GGUF modellerinde bu puanlayıcı, daha fazla katmanı GPU'ya aktarılmış örnekleri tercih eder:
- Tüm katmanların GPU'ya aktarılması en yüksek puanı alır.
- Kısmi boşaltma orantılı bir puan alır.
- Yük boşaltma katmanı meta verileri olmayan örnekler bu puanlayıcıdan
0alır.
Ölçek Küçültme Modunda Yerleştirme Puanlayıcısı
Aynı yerleştirme puanlayıcı, ölçek küçültme sırasında yeniden kullanılır ancak mevcut yerleşimleri, yerleştirme perspektifi yerine kaldırma perspektifinden değerlendirir. Yerleştirme hala modelin binpack veya spread politikasını yansıtıyor ancak puan, tutma tercihi olarak yorumlanıyor, dolayısıyla daha düşük yerleştirme puanlarının ilk önce kaldırılması daha olası.