Kode error: E2002

Kategori: Waktu Kompilasi: Blok dan Pengtile-an Input/Output Mosaik Tidak Selaras

Error ini terjadi saat bentuk blok input atau output kernel tidak selaras dengan pengelompokan default jenis data pada hardware TPU tertentu yang digunakan.

Contoh Pesan Error:

UNIMPLEMENTED: Mosaic failed to compile TPU kernel: Failed to set window params
for input 0: Operand of shape (..., 256, 8192) has tiling (16, 128), but its
block shape (..., 8, 8192) is not divisible by tiling evenly nor matches the
full shape.

Backend XLA: TPU

Ringkasan

Tensor core (TC) di TPU memiliki register vektor dua dimensi. Kedua dimensi tersebut disebut sublane dan lane. Karena unit komputasi TPU (misalnya, MXU) beroperasi pada perincian register vektor, array XLA disusun dalam memori TPU dalam petak.

Pengaturan petak ini (misalnya, 8x128) meminimalkan transformasi data saat memasukkan data ke unit komputasi. Dimensi petak yang tepat (subjalur × jalur) bergantung pada generasi hardware dan jenis data. Misalnya, pengelompokan umum untuk sebagian besar jenis adalah 8×128.

Pada waktu kompilasi, XLA menerapkan batasan berikut untuk dimensi minor dan minor ke-2 dari setiap input/output kernel:

  1. Keterbagian: Dimensi blok harus berupa kelipatan dimensi petak dalam tensor pokok, atau
  2. Pengecualian Bentuk Penuh: Jika dimensi blok tidak dapat dibagi, dimensi tersebut harus sama dengan ukuran penuh dimensi tersebut dalam tensor pokok.

Error ini dipicu saat sebuah blok melanggar kedua kondisi. Misalnya, memuat blok berbentuk (8, 100) dari input berbentuk (8, 1024) pada hardware dengan pengelompokan berbentuk (8, 128) gagal karena 100 tidak dapat dibagi dengan 128 dan 100 != 1024. Namun, hal ini akan diizinkan jika bentuk inputnya adalah (32, 100).

Proses debug

Untuk mengatasi error ini, pastikan bentuk blok kernel Anda selaras dengan pengaturan tata letak hardware saat ini. Ubah kode kernel untuk menyelaraskan ukuran blok sehingga menjadi kelipatan pengelompokan yang diperlukan.

  • Contoh: Jika error menyatakan bahwa ubinnya adalah (16, 128), tetapi bentuk blok Anda adalah (8, 128), ubah spesifikasi blok sehingga bentuknya cocok dengan (16, 128).