tldr;
Bu sayfada, Latency Hiding Scheduler tarafından kullanılan maliyet modelinin iç işleyişi açıklanmaktadır. Modeli ayarlamak istiyorsanız doğrudan Ayarlama bölümüne gidin.
Gecikmeyi Gizleme Planlayıcı (LHS), HLO DAG'yi duvar süresini en aza indirecek şekilde planlayan bir derleyici geçişidir.
Kararlarını, performans tabloları ve analitik modellerin bir karışımını kullanan birleşik maliyet modeline göre verir. Özellikle XLA, GEMM'ler ve hızlı ara bağlantı kolektifleri için performans tablolarını yerleştirir ve diğer durumlarda analitik ağ oluşturma ve birleştirme maliyeti modelini kullanır. Belgenin geri kalanında, bunların iç işleyişi genel olarak açıklanmaktadır.
Performans tabloları – ICI koleksiyonları
Performans tablosu iki ana bileşenden oluşur: toplayıcı ve interpolasyon aracı.
Toplayıcı
Toplayıcı, toplu işlemler için performans tabloları oluşturmaktan sorumlu bir C++ aracıdır. Her bir HLO işleminin performansını ölçer (ör. all-gather, all-reduce) statik olarak tanımlanmış bir parametre alanında.
Nasıl Çalışır?
Araç, belirli bir küme için bir dizi toplu işlem, aktarım boyutu ve aktarım şeması üzerinde tarama yapar. Oluşturulan HLO'yu çalıştırmak ve performans metriklerini toplamak için mevcut çok ana bilgisayarlı HLO çalıştırıcı altyapısını ve ExecutionProfile verilerini kullanır.
Veri Toplama Parametreleri
Gecikme tabloları, aşağıdaki parametrelerin ürünler arası birleşimi için toplanır:
- Kolektif Türü:
all-reduceall-gatherreduce-scatter
- Transfer Boyutu:
- 1.024 B ile 2 GiB arasında logaritmik ölçek (ör. 1024B, 2048B, 4096B, ...)
- Transfer Şeması:
rail-alignednon-rail-aligned
Bu tarama, 2, 4 ve 8 cihazlı düğümler arası kümeler için çalıştırılır.
Çıkış
Bir toplama çalıştırmasının sonucu, .pbtxt biçiminde bir gecikme tablosudur (platform başına yaklaşık 116 KB).
Interpolator
İnterpolasyon aracı, derleme sırasında çalışma zamanı tahminleri sağlamak için oluşturulan performans tablolarını kullanan derleyici bileşenidir.
Dahili Veri Yapısı
Başlatma sırasında, Interpolator performans tablosunu bir harita olarak işler.
Bu harita, anahtar olarak (collective_type, transfer_scheme) demetini kullanır.
Her anahtarla ilişkili değer, 2 boyutlu Öklid düzlemidir. Bu düzlem, iki eksene göre ağ verimini (toplayıcı tarafından ölçülür) indeksler:
- Aktarım boyutu.
- İlgili cihaz sayısı.
Arama ve İnterpolasyon
Derleyici bir toplu işlemle karşılaştığında Interpolator aşağıdaki adımları gerçekleştirir:
- İşlemin
(collective_type, transfer_scheme)değerini harita anahtarı olarak kullanarak doğru 2D işleme düzlemini tanımlar. - Ardından, 2 boyutlu düzlemde ağırlıklı ortalama alma (Öklid uzaklığına göre) yöntemini kullanarak sorgu noktası olarak işlemin
(transfer_size, num_devices)değerini kullanır. - Bu aramanın sonucu, tek ve benzersiz bir ağ işleme hızı değeridir.
Gerekçe: İşleme Hızı ve Ekstrapolasyon
Sistem, ham gecikme yerine ağ verimini saklamak için tasarlanmıştır. Bu tasarım tercihi, tabloda açıkça bulunmayan aktarım boyutları için performansı tahmin etmeyi önemli ölçüde basitleştirir.
Gecikme tabloları, toplu boyutta ağ bant genişliği doygunluğunu yakalarsa
S, o noktadaki işleme hızı T maksimum olarak kabul edilir. S' > S boyutundaki yeni bir topluluk için çalışma süresi şu şekilde tahmin edilebilir:
\[\text{EstimatedTime}(S') = \frac{S'}{T_{\text{saturated} } }\]
Bu sayede model, toplayıcı tarafından ölçülen maksimum 2 GiB'tan daha büyük olanlar da dahil olmak üzere her boyuttaki koleksiyonların performansını tahmin edebilir.
- Maksimum işleme hızını küçümsemek.
- Bu nedenle, büyük aktarımlar için çalışma süresini olduğundan fazla tahmin edin.
Genel olarak XLA:GPU ekipleri performans tablolarını tutar ancak kullanıcıların kendi tablolarını sağlamaya karar verdiği durumlarda, tabloların temsili olmasını ve hedef donanım için bant genişliğinin doygun olduğu bölgedeki ölçümleri içermesini sağlamak, tabloları oluşturan kullanıcının sorumluluğundadır.
Performans tabloları – GEMM'ler
Topluluklar sistemine benzer şekilde, GEMM gecikme tabloları iki bileşen tarafından desteklenir: toplayıcı ve interpolasyon aracı.
Toplayıcı
Toplayıcı, Genel Matris Çarpımları (GEMM'ler) için performans tabloları hesaplayan bir C++ aracıdır. HLO dot op düzeyinde matris çarpımlarının performansını ölçer.
Nasıl Çalışır?
Araç, GEMM boyutlarının (toplu, iki daralmayan ve bir daralan boyut) ve veri türlerinin statik bir alanında tarama yapar.
- Varsayılan Veri Türleri:
LHS = bf16,f32,RHS = bf16,f32,OUT = bf16,f32. - Altyapı: HLO op profiler'ı yeniden kullanır.
Toplama Parametreleri
Gecikme tabloları, aşağıdaki boyutların ürünler arası için toplanır:
- batch:
{1, 2, 4} - m (non-contracting):
{256, 512, ..., 4096} - n (sözleşme yapılmayan):
{256, 512, ..., 4096} - k (sözleşme):
{256, 512, ..., 4096}
Çıkış ve Depolama
Tam tarama, .pbtxt gecikme tablosu oluşturur. Bu tablo, interpolatör tarafından kullanılmaya hazırdır.
Interpolator
İnterpolasyon aracı, GEMM performansını tahmin etmek için oluşturulan tabloları kullanan derleyici bileşenidir.
Gerekçe: FLOPS Doygunluğu
Toplanan gecikme tabloları, interpolasyon cihazının her giriş için FLOPS değerini yeniden oluşturmasına olanak tanır:
\[\text{FLOPS} = \frac{2 \times b \times m \times n \times k}{\text{runtime} }\]
Önemli bir nokta, FLOPS'un belirli bir noktada doygunluğa ulaşmasıdır. Yani donanım, belirli bir matris şeklinin ötesinde en yüksek FLOPS değerine ulaşır. Bu doygunluk, kolektifler için kullanılan ekstrapolasyon yönteminin kullanılmasını sağlar.
Arama ve İnterpolasyon
İnterpolasyon aracı, tablo verilerinden 4 boyutlu Öklid uzayı oluşturur. Performans tahmini sağlamak için bu 4 boyutlu alanda ağırlıklı ortalama enterpolasyonu gerçekleştirir. Belirli bir veri türü için tablo yoksa her boyut, bayt sayısına göre normalleştirilir.
Analitik Maliyet Modeli - DCN
S Eğrisi Toplu Maliyet Modeli
S eğrisi modeli, tamamen analitik bir ağ tavanı modelidir.
Genel Bakış
Model, bir dizi sabit ağ özelliğine göre toplu işlemlerin performansını tahmin etmek için tasarlanmıştır.
Model Girişleri
Model için iki giriş kategorisi gerekir:
Sabit Ağ Özellikleri (Kullanıcı Tarafından Tanımlanan):
- Toplu lansman ek yükü
- NIC hızı
- RTT (gidiş dönüş süresi)
XLA, varsayılan olarak bir platformu otomatik olarak algılar ve en yaygın mimariler için değerleri kullanır. Bu özellikler kullanıcı tarafından yapılandırılabilir. Ayrıntılar için Ayarlama bölümüne bakın.
Per-Collective Inputs:
- Toplu tür (ör.
AllGather,ReduceScatter) - Aktarım boyutu
- İletişime dahil olan düğüm sayısı
- Toplu tür (ör.
Entegrasyon
S eğrisi modeli XLA:GPU'ye entegre edilmiştir ve Hopper ile Blackwell'de kullanılmaktadır.
Analitik Maliyet Modeli - Birleşmeler
Diğer çekirdekler için doğru çalışma sürelerini tahmin etmek üzere GPU performans maliyeti modelini kullanırız. Bu konu hakkında daha fazla bilgiye buradan ulaşabilirsiniz.
İnce ayar
S eğrisi modeli, doğru XLA işaretleri verilerek ayarlanabilir. Varsayılan yapılandırma çoğu durumda yeterli olsa da model kontrolü diğer durumlarda kullanılabilir.
export NIC_SPEED_GBPS=... # NIC speed per GPU in Gigabytes
export GPUS_PER_NODE=... # Num of GPUs per cluster interconnected with fast network (e.g. NVLINK)
export XLA_FLAGS=--xla_gpu_analytical_latency_estimator_options="nic_speed_gbps=$NIC_SPEED_GBPS,gpus_per_node=$GPUS_PER_NODE"