Categoria: Runtime: Core Halted Unexpectedly
Questo errore indica che un core TPU ha interrotto l'esecuzione delle istruzioni in anticipo. Questo è uno stato di errore irreversibile in cui l'hardware forza un arresto a causa di un guasto non recuperabile, di una violazione dei vincoli hardware o di un interrupt deliberato attivato da asserzioni di runtime generate dal compilatore.
Messaggio di errore di esempio:
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
Panoramica
XLA compila i programmi JAX in una sequenza di istruzioni di assemblaggio di basso livello. In fase di runtime, il dispositivo TPU esegue queste istruzioni in sequenza. Si verifica un errore "Core Halted Unexpectedly" quando l'hardware TPU rileva una condizione non recuperabile che impedisce l'ulteriore esecuzione, forzando il core in uno stato irreversibile "HALTED".
Poiché questo errore può derivare da guasti hardware fisici, bug del compilatore o problemi del codice utente (in particolare nei kernel personalizzati), devi analizzare attentamente i messaggi di log per identificare la causa specifica.
Debug
Per risolvere questo errore, devi prima identificare quale dei tre scenari specifici ha causato l'interruzione imprevista. Controlla i log per le firme di testo specifiche descritte di seguito.
- "observed errors are: [Hardware/Network/Power]": Indica un guasto dell'infrastruttura fisica. → Vai a Scenario 1: guasti all'infrastruttura (hardware/rete/alimentazione)
- "observed errors are: [User]": indica una violazione di un vincolo hardware. → Vai allo Scenario 2: violazioni dei vincoli hardware
Il messaggio di errore contiene dettagli specifici, ad esempio le seguenti parole chiave:
BoundsCheck,scheckne,scheckeq,schecklt,scheckge,scheckbetweenCiò indica che un'asserzione generata dal compilatore nel programma compilato non è riuscita durante l'esecuzione. → Vai a Scenario 3: errori di asserzione generati dal compilatore XLA
Scenario 1: guasti infrastrutturali (hardware/rete/alimentazione)
Firma:i log indicano esplicitamente observed errors are: [Hardware] o
observed errors are: [Network] o observed errors are: [Power].
Ciò indica un errore dell'infrastruttura fisica non correlato al software o alla logica del modello. Il chip TPU, il tessuto di rete che collega i chip o l'alimentatore non funziona.
- Riprova l'operazione:se il problema era un calo di tensione transitorio o un problema di rete, un semplice tentativo potrebbe funzionare.
- Identifica e rimuovi i nodi danneggiati:se l'errore persiste sulla stessa attività o sullo stesso host, è probabile che l'hardware sia difettoso. Utilizza gli strumenti di gestione del cluster per "svuotare"/"isolare" il nodo interessato e riavvia il job sui nodi integri.
Scenario 2: violazioni dei vincoli hardware
Firma:i log indicano observed errors are: [User].
Ciò indica che il compilatore XLA ha generato un'istruzione che violava un vincolo hardware inviolabile (ad es. un'istruzione che tenta di accedere a un indirizzo di memoria fuori dai limiti nella memoria HBM o Scratchpad). Sebbene sia etichettato come "Utente", questo problema è raramente causato da codice utente di alto livello.
- Segnala un bug di XLA:è probabile che si tratti di un bug del compilatore, che non dovrebbe mai emettere istruzioni che violano le specifiche hardware. Invia una segnalazione di bug.
Scenario 3: errori di asserzione generati dal compilatore XLA
Firma:il messaggio di errore contiene dettagli specifici sull'asserzione generata dal compilatore che non va a buon fine. Cerca le seguenti parole chiave:
BoundsCheck,scheckne,scheckeq,schecklt,scheckge,scheckbetween
Ciò indica che un'asserzione generata dal compilatore nel programma compilato non è riuscita durante l'esecuzione. Analizza il messaggio di errore specifico per determinare il sottotipo.
Scenario 3.A: mancata corrispondenza del gruppo di lancio
Messaggio di errore di esempio:
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.
Causa: questo errore si verifica in genere negli ambienti TPU multi-host. Indica che i core TPU, che dovrebbero eseguire lo stesso programma in modo sincronizzato (come parte di un "gruppo di lancio"), sono diventati non sincronizzati. Nello specifico, un core TPU è entrato a far parte di un gruppo di sincronizzazione con un identificatore di programma diverso da quello del leader del gruppo attuale, il che suggerisce programmi incoerenti tra gli host.
- Verifica i flag XLA:assicurati che tutti gli host utilizzino esattamente lo stesso
XLA_FLAGS. - Controlla la coerenza dei programmi JAX:verifica che tutti gli host eseguano programmi JAX identici. Verifica le immagini Docker, le versioni di libtpu e così via.
Scenario 3.B: controllo dei limiti non riuscito
Messaggio di errore di esempio:
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
Causa:il programma ha tentato di accedere alla memoria al di fuori dei limiti allocati. Il messaggio di errore spesso include dettagli sul tipo di accesso alla memoria (ad es.
dma.hbm_to_vmem) e sul calcolo dell'indirizzo.
- Esegui il debug dei kernel personalizzati:se utilizzi Pallas, controlla i calcoli degli indici.
Utilizza
pl.debug_printocheckifyper convalidare gli indici dei tensori. - Controlla lo sharding: assicurati che le annotazioni di sharding siano coerenti con le forme dei tensori.
Scenario 3.C: Sincronizzazione Mosaic/Pallas
Messaggio di errore di esempio:
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.
Causa: Questo errore è specifico del codice generato dal compilatore Mosaic (utilizzato da Pallas JAX). Indica un problema di sincronizzazione all'interno di un kernel personalizzato. Le TPU utilizzano semafori per gestire le dipendenze (ad es. assicurandosi che un DMA sia completato prima dell'uso). Questo errore suggerisce che un segnale su un semaforo non è stato atteso correttamente.
- Sincronizzazione audit:assicurati che ogni
dma_startabbia undma_waitcorrispondente. - Controlla i semafori:verifica che i segnali e le attese dei semafori siano strettamente accoppiati.
Problemi senza categoria
Se il log degli errori non corrisponde agli scenari 1, 2 o 3 (ovvero non sono presenti "errori osservati", tag "scheck" e messaggi di limiti/semaforo specifici):
- Azione:probabilmente si tratta di un bug interno di XLA. Invia una segnalazione di bug.