Kode Error: E0200

Kategori: Runtime: Core Berhenti Tiba-Tiba

Error ini menunjukkan bahwa core TPU berhenti mengeksekusi instruksi sebelum waktunya. Ini adalah status error fatal saat hardware memaksa penghentian karena kesalahan yang tidak dapat dipulihkan, pelanggaran batasan hardware, atau interupsi yang disengaja yang dipicu oleh pernyataan runtime yang dihasilkan compiler.

Contoh Pesan Error:

INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:1:0x1d9 ...

Backend XLA: TPU

Ringkasan

XLA mengompilasi program JAX menjadi serangkaian petunjuk assembly tingkat rendah. Saat runtime, perangkat TPU menjalankan petunjuk ini secara berurutan. Error "Core Halted Unexpectedly" terjadi saat hardware TPU mengalami kondisi tidak dapat dipulihkan yang mencegah eksekusi lebih lanjut, sehingga memaksa core ke status "HALTED" fatal.

Karena error ini dapat berasal dari kegagalan hardware fisik, bug compiler, atau masalah kode pengguna (terutama di kernel kustom), Anda harus menganalisis pesan log dengan cermat untuk mengidentifikasi penyebab spesifiknya.

Proses debug

Untuk mengatasi error ini, Anda harus mengidentifikasi terlebih dahulu skenario spesifik mana dari ketiga skenario tersebut yang menyebabkan penghentian yang tidak terduga. Periksa log Anda untuk menemukan tanda tangan teks tertentu yang dijelaskan di bawah.

Skenario 1: Kegagalan Infrastruktur (Hardware/Jaringan/Daya)

Signature: Log secara eksplisit menyatakan observed errors are: [Network] atau observed errors are: [Power] atau observed errors are: [Hardware].

Hal ini menunjukkan kegagalan infrastruktur fisik yang tidak terkait dengan software atau logika model Anda. Chip TPU, fabric jaringan yang menghubungkan chip, atau catu daya gagal berfungsi.

  • Coba lagi tugas: Jika masalahnya adalah penurunan voltase sementara atau gangguan jaringan, coba lagi tugas tersebut.
  • Identifikasi dan Hapus Node Bermasalah: Jika error tetap terjadi pada tugas atau host tertentu yang sama, kemungkinan hardware rusak. Gunakan alat pengelolaan cluster Anda untuk "menguras"/"mengisolasi" node yang terpengaruh dan mulai ulang tugas Anda di node yang berfungsi dengan baik.

Skenario 2: Pelanggaran Batasan Hardware

Tanda tangan: Status log observed errors are: [User].

Hal ini menunjukkan bahwa compiler XLA menghasilkan instruksi yang melanggar batasan hardware yang tidak dapat dilanggar (misalnya, instruksi yang mencoba mengakses alamat memori di luar batas pada memori HBM atau Scratchpad). Meskipun diberi label "Pengguna", masalah ini jarang disebabkan oleh kode pengguna tingkat tinggi.

  • Laporkan Bug XLA: Kemungkinan ini adalah bug compiler, compiler tidak boleh mengeluarkan petunjuk yang melanggar spesifikasi hardware. Harap buat laporan bug.

Skenario 3: Kegagalan Pernyataan yang dihasilkan compiler XLA

Tanda Tangan: Pesan error berisi detail spesifik tentang pernyataan yang gagal yang dihasilkan compiler. Cari kata kunci berikut:

  • BoundsCheck, scheckne, scheckeq, schecklt, scheckge, scheckbetween

Error ini menunjukkan bahwa pernyataan yang dihasilkan compiler dalam program yang dikompilasi gagal selama eksekusi. Analisis pesan error tertentu untuk menentukan sub-jenisnya:

Skenario 3.A: Ketidakcocokan Grup Peluncuran

Contoh Pesan Error:

Core halted unexpectedly: INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:1:0x1d9 (from TensorCoreSequencer:1:0x309): scheckne: An unexpected leader shows up in the launch group with a different launch id than the current group leader.

Penyebab: Error ini biasanya terjadi di lingkungan TPU multi-host. Hal ini menunjukkan bahwa core TPU, yang diharapkan menjalankan program yang sama secara tersinkron (sebagai bagian dari "grup peluncuran"), telah menjadi tidak sinkron. Secara khusus, core TPU bergabung dengan grup sinkronisasi dengan ID program yang berbeda dari pemimpin grup saat ini, yang menunjukkan program yang tidak konsisten di seluruh host.

  • Verifikasi Flag XLA: Pastikan semua host menggunakan XLA_FLAGS yang sama persis.
  • Program Jax yang Konsisten: Periksa apakah semua host menjalankan program Jax yang identik. Verifikasi image Docker, versi libtpu, dll.

Skenario 3.B: Kegagalan Pemeriksaan Batas

Contoh Pesan Error:

Core halted unexpectedly: INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:23:0x292 (from TensorCoreSequencer:23:0xd74a): BoundsCheck 92 [deref of %s931] for %937 = dma.hbm_to_vmem [thread:$0]  /*hbm=*/%s931, /*size_in_granules=*/16384, /*vmem=*/%s935, /*dst_syncflagno=*/%s860, /*src_stride=*/512, /*dst_stride=*/128, /*steps_per_stride=*/8

Penyebab: Program mencoba mengakses memori di luar batas yang dialokasikan. Pesan error sering kali menyertakan detail tentang jenis akses memori (misalnya, dma.hbm_to_vmem) dan penghitungan alamat.

  • Men-debug Kernel Kustom: Jika menggunakan Pallas, periksa perhitungan indeks Anda. Gunakan pl.debug_print atau checkify untuk memvalidasi indeks tensor.
  • Memeriksa Sharding: Pastikan anotasi sharding konsisten dengan bentuk tensor.

Skenario 3.C: Sinkronisasi Mosaic/Pallas

Contoh Pesan Error:

Core halted unexpectedly: INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:21:0xae5 (from TensorCoreSequencer:21:0x54c5): Semaphore (scratch argument 1) has a nonzero value upon exit from a Mosaic kernel. Make sure every DMA is awaited, and every semaphore signal is paired with a wait.

Penyebab: Error ini khusus untuk kode yang dihasilkan oleh kompilator Mosaic (yang digunakan oleh Pallas JAX). Hal ini menunjukkan masalah sinkronisasi dalam kernel kustom. TPU menggunakan semafor untuk mengelola dependensi (misalnya, memastikan DMA selesai sebelum digunakan). Error ini menunjukkan bahwa sinyal pada semaphore tidak ditunggu dengan benar.

  • Sinkronisasi Audit: Pastikan setiap dma_start memiliki dma_wait yang sesuai.
  • Periksa Semaphore: Verifikasi bahwa sinyal dan penantian semaphore dipasangkan secara ketat.

Masalah yang Tidak Dikategorikan

Jika log error Anda tidak cocok dengan Skenario 1, 2, atau 3 (yaitu, tidak ada "observed errors", tidak ada tag "scheck", dan tidak ada pesan batas/semaphore tertentu):

  • Tindakan: Kemungkinan ini adalah bug XLA internal. Harap buat laporan bug.