Kategori: CompileTime: SparseCore No Viable Logical Replica Count
Bu hata, XLA:SparseCore derleyici iş yükünün SparseCore'un yerel geçici belleğine (Tilespmem) sığmasını sağlayan geçerli bir mantıksal kopya sayısı yapılandırmasını belirleyemediğinde oluşur.
Örnek Hata Mesajları:
XLA:TPU compile permanent error. Compilation failure: No viable logical replica count for the embedding table with metadata: max_nz_per_row = 141352, max_unique_nz_per_row = 8, feature_width = 8, sample_count = 204800 (last tried split factor for vector splitting = 1, last tried split factor for sample dimension splitting = 1, fixed_size_allocation_bytes = 410880, row_dependent_size_allocation_bytes = 1696224, total_spmem_size_bytes = 524288) ...
XLA Arka Uçları: TPU
Genel Bakış
Bu hata, özellikle Büyük Yerleştirme Modelleri (LEM'ler) için SparseCore kullanım alanlarına özgüdür.
Mantıksal kopya sayısı, geçici alan ayırma baskısını yönetmek için giriş gruplarının nasıl bölümleneceğini belirleyen dahili bir derleyici parametresidir. Derleyici, iş yükünü daha küçük parçalara (kopyalar) bölmeye çalışır. Böylece her parça için gereken ara arabellekler SparseCore'un sınırlı Scratchpad Memory'sine sığar. Genel olarak, daha yüksek bir mantıksal kopya sayısı, bir seferde daha küçük veri grupları işleyerek tahsis baskısını azaltır.
Bu hata, çeşitli bölme yapılandırmaları denendikten sonra bile derleyicinin, gerekli arabelleklerin Tilespmem belleğine sığdığı bir kurulum bulamadığını gösterir. Ayırma boyutu, aşağıdakilerin bir kombinasyonuyla belirlenir:
sample_count: Her SparseCore'a (grup boyutundan türetilir) atanan yerleştirme arama kimliği sayısı.feature_width: Yerleştirme boyutunun boyutu.max_nz_per_row: Tüm SparseCore'larda benzersiz olmayan maksimum yerleştirme arama kimliği sayısı.max_unique_nz_per_row: Maksimum benzersiz yerleştirme arama kimliği sayısı.
Hata ayıklama
Bu hatayı düzeltmek için SparseCore geçici alanındaki bellek baskısını azaltmanız gerekir.
1. Meta Veri Tahminlerini İyileştirme
Derleyici, max_nz_per_row ve max_unique_nz_per_row'ye göre bellek ayırır. Bu değerler muhafazakar bir şekilde tahmin edilirse (yani gerçek verilerin gerektirdiğinden çok daha yüksek ayarlanırsa) derleyici gereksiz alan ayırarak bu hataya neden olur. Bu parametrelerin, veri kümenizin gerçek kimlik dağıtımını doğru şekilde yansıttığından emin olun.
Bu parametreler için optimum değerleri belirlemek üzere geri bildirim odaklı optimizasyonu (FDO) uygulamayı düşünebilirsiniz.
2. Grup boyutunu küçültme
sample_count, doğrudan genel toplu iş boyutunuzdan elde edilir. Toplu iş boyutunu azaltmak, her SparseCore'un adım başına işlemesi gereken veri miktarını düşürür. Bu da gerekli not defteri arabelleklerinin boyutunu azaltır.