Kategori: CompileTime: SparseCore No Viable Logical Replica Count
Error ini terjadi saat compiler XLA:SparseCore gagal menentukan konfigurasi jumlah replika logis yang valid yang memungkinkan workload sesuai dengan memori scratchpad lokal SparseCore (Tilespmem).
Contoh Pesan Error:
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) ...
Backend XLA: TPU
Ringkasan
Error ini khusus untuk kasus penggunaan SparseCore, terutama untuk Model Embedding Besar (LEM).
Jumlah replika logis adalah parameter compiler internal yang menentukan cara mempartisi batch input untuk mengelola tekanan alokasi ruang kerja. Compiler berupaya membagi beban kerja menjadi potongan yang lebih kecil (replika) sehingga buffer perantara yang diperlukan untuk setiap potongan sesuai dengan Memori Scratchpad SparseCore yang terbatas. Secara umum, jumlah replika logis yang lebih tinggi mengurangi tekanan alokasi dengan memproses batch data yang lebih kecil dalam satu waktu.
Error ini menunjukkan bahwa meskipun telah mencoba berbagai konfigurasi pemisahan, compiler tidak dapat menemukan penyiapan yang sesuai dengan buffer yang diperlukan dalam memori Tilespmem. Ukuran alokasi ditentukan oleh kombinasi dari:
sample_count: Jumlah ID pencarian sematan yang ditetapkan ke setiap SparseCore (berasal dari ukuran batch).feature_width: Ukuran dimensi embedding.max_nz_per_row: Jumlah maksimum ID pencarian sematan non-unik di semua SparseCore.max_unique_nz_per_row: Jumlah maksimum ID pencarian sematan unik.
Proses debug
Untuk mengatasi error ini, Anda perlu mengurangi tekanan memori pada scratchpad SparseCore.
1. Meningkatkan Kualitas Estimasi Metadata
Compiler mengalokasikan memori berdasarkan max_nz_per_row dan
max_unique_nz_per_row. Jika nilai ini diperkirakan secara konservatif (yaitu, ditetapkan
jauh lebih tinggi daripada yang diperlukan data sebenarnya), compiler akan mencadangkan
ruang yang tidak perlu, sehingga menyebabkan error ini. Pastikan parameter ini secara akurat mencerminkan distribusi ID sebenarnya dari set data Anda.
Anda dapat mempertimbangkan untuk menerapkan Pengoptimalan yang Diarahkan oleh Masukan (FDO) untuk menentukan nilai optimal bagi parameter ini.
2. Mengurangi Ukuran Batch
sample_count diturunkan langsung dari ukuran batch global Anda. Mengurangi ukuran batch akan mengurangi jumlah data yang harus diproses setiap SparseCore per langkah, sehingga mengurangi ukuran buffer sementara yang diperlukan.