Kode error: E3001

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.