Kategori: Runtime: Ketidakcocokan Input Buffer Program
Error ini terjadi saat runtime XLA mendeteksi ketidakcocokan antara ukuran buffer memori yang diharapkan oleh program yang dikompilasi dan ukuran buffer yang sebenarnya disediakan pada waktu eksekusi.
Contoh Pesan Error:
XlaRuntimeError: INVALID_ARGUMENT: Executable(jit_embedding_pipeline_step_fn) expected parameter 2482 of size 5242880 (bf16[16,1280,40]{2,1,0:T(8,128)(2,1)}) but got buffer with incompatible size 1638400 (bf16[16,1280,40]{1,2,0:T(8,128)(2,1)}): while running replica 0 and partition 0 of a replicated computation (other replicas may have failed as well).
Backend XLA: TPU
Ringkasan
Pesan error menunjukkan ukuran yang diharapkan dan ukuran sebenarnya, serta bentuk dan tata letak tensor. Perhatikan bahwa error ini dapat terjadi meskipun dua tensor memiliki bentuk yang sama, tetapi ukurannya dalam memori dapat berbeda jika tata letak fisiknya (cara data disusun dan diatur di hardware) berbeda.
Error ini sebagian besar disebabkan oleh:
- Ketidakcocokan konfigurasi XLA dan checkpoint - Model dilatih dan checkpoint disimpan. Tata letak fisik bobot dalam checkpoint tersebut ditentukan oleh versi dan konfigurasi XLA yang tepat (misalnya, flag XLA) pada saat itu. Kemudian, titik pemeriksaan ini dimuat di lingkungan lain tempat konfigurasi telah berubah. Flag baru, nilai default yang berbeda, atau perubahan dalam kode model/XLA dapat menyebabkan runtime mengharapkan tata letak fisik yang berbeda untuk bobot. Saat buffer lama dari titik pemeriksaan diteruskan ke program XLA yang dikompilasi baru, runtime akan menampilkan error.
- Tata Letak Khusus Hardware/Topologi - Compiler XLA bebas memilih tata letak fisik yang berbeda untuk tensor guna mengoptimalkan performa di hardware yang berbeda. Tata letak yang optimal untuk TPU v4 mungkin berbeda dengan TPU v5, atau bahkan untuk slice pod yang berbeda dari chip yang sama (misalnya, 4x4x4 vs 4x8). Error terjadi saat model dikompilasi dengan asumsi tentang tata letak topologi, tetapi saat runtime, model dijadwalkan pada topologi yang berbeda, atau ada bug dalam logika tata letak compiler untuk bagian hardware tertentu.
Proses debug
- Pastikan konsistensi konfigurasi antara ekspor model dan proses ulang dari
checkpoint:
- Hindari penggunaan titik pemeriksaan lama dengan kode baru kecuali jika Anda yakin bahwa tidak ada perubahan yang memengaruhi tata letak yang telah dilakukan.
- Mengekspor ulang Model Tersimpan: Jika Anda mencurigai adanya ketidakcocokan checkpoint/konfigurasi, solusi yang paling andal adalah mengekspor ulang model tersimpan menggunakan codebase dan konfigurasi yang sama persis (dan saat ini) yang Anda gunakan untuk inferensi atau penyesuaian.
- Periksa perubahan konfigurasi (misalnya, flag XLA) antara dua proses.
- Tata letak Khusus Hardware/Topologi:
- Periksa ketidakcocokan versi dan topologi hardware jika mengganti hardware atau topologi.