Categoria:ambiente de execução: núcleo interrompido inesperadamente
Esse erro indica que um núcleo de TPU parou de executar instruções prematuramente. Esse é um estado de erro fatal em que o hardware força uma interrupção devido a uma falha irrecuperável, uma violação de restrições de hardware ou uma interrupção deliberada acionada por declarações de tempo de execução geradas pelo compilador.
Exemplo de mensagem de erro:
INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:1:0x1d9 ...
Backends do XLA:TPU
Visão geral
O XLA compila programas JAX em uma sequência de instruções de assembly de baixo nível. Em tempo de execução, o dispositivo TPU executa essas instruções em sequência. Um erro "Core Halted Unexpectedly" (Núcleo interrompido inesperadamente) ocorre quando o hardware da TPU encontra uma condição irrecuperável que impede a execução, forçando o núcleo a um estado fatal "HALTED" (INTERROMPIDO).
Como esse erro pode ser causado por falhas físicas de hardware, bugs do compilador ou problemas no código do usuário (principalmente em kernels personalizados), analise com cuidado as mensagens de registro para identificar a causa específica.
Depuração
Para resolver esse erro, primeiro identifique qual dos três cenários específicos causou a interrupção inesperada. Verifique seus registros em busca das assinaturas de texto específicas descritas abaixo.
- "observed errors are: [Hardware/Network/Power]": indica uma falha na infraestrutura física. → Ir para Cenário 1: falhas de infraestrutura (hardware/rede/energia)
- "observed errors are: [User]": indica uma violação de restrição de hardware. → Ir para Cenário 2: violações de restrições de hardware
A mensagem de erro contém detalhes específicos, como as seguintes palavras-chave:
BoundsCheck,scheckne,scheckeq,schecklt,scheckge,scheckbetweenIsso indica que uma asserção gerada pelo compilador no programa compilado falhou durante a execução. → Ir para Cenário 3: falhas de asserção geradas pelo compilador XLA
Cenário 1: falhas de infraestrutura (hardware/rede/energia)
Assinatura:os registros indicam explicitamente observed errors are: [Hardware], observed errors are: [Network] ou observed errors are: [Power].
Isso indica uma falha na infraestrutura física não relacionada à lógica do software ou do modelo. O chip de TPU, a estrutura de rede que conecta os chips ou a fonte de alimentação falhou.
- Tente de novo:se o problema foi uma queda de tensão transitória ou uma falha na rede, uma simples nova tentativa pode funcionar.
- Identifique e remova nós ruins:se o erro persistir na mesma tarefa ou host específico, é provável que o hardware esteja com defeito. Use as ferramentas de gerenciamento de cluster para esvaziar/isolar o nó afetado e reinicie o job em nós íntegros.
Cenário 2: violações de restrições de hardware
Assinatura:os registros indicam observed errors are: [User].
Isso indica que o compilador XLA gerou uma instrução que violou uma restrição de hardware inviolável (por exemplo, uma instrução que tenta acessar um endereço de memória fora dos limites na memória HBM ou Scratchpad). Embora seja rotulado como "Usuário", isso raramente é causado por código de usuário de alto nível.
- Registre um bug do XLA:provavelmente é um bug do compilador. Ele nunca deve emitir instruções que violem as especificações de hardware. Envie um relatório do bug.
Cenário 3: falhas de asserção geradas pelo compilador XLA
Assinatura:a mensagem de erro contém detalhes específicos sobre a asserção gerada pelo compilador que está falhando. Procure as seguintes palavras-chave:
BoundsCheck,scheckne,scheckeq,schecklt,scheckge,scheckbetween
Isso indica que uma asserção gerada pelo compilador no programa compilado falhou durante a execução. Analise a mensagem de erro específica para determinar o subtipo.
Cenário 3.A: incompatibilidade do grupo de lançamento
Exemplo de mensagem de erro:
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:esse erro geralmente ocorre em ambientes de TPU com vários hosts. Isso indica que os núcleos de TPU, que devem executar o mesmo programa de maneira sincronizada (como parte de um "grupo de lançamento"), ficaram dessincronizados. Especificamente, um núcleo de TPU entrou em um grupo de sincronização com um identificador de programa diferente do líder do grupo atual, sugerindo programas inconsistentes em todos os hosts.
- Verificar flags da XLA:confira se todos os hosts usam exatamente o mesmo
XLA_FLAGS. - Verifique se há programas JAX consistentes:confira se todos os hosts estão executando programas JAX idênticos. Verifique imagens do Docker, versões do libtpu etc.
Cenário 3.B: falha na verificação de limites
Exemplo de mensagem de erro:
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:o programa tentou acessar a memória fora dos limites alocados. A mensagem de erro geralmente inclui detalhes sobre o tipo de acesso à memória (por exemplo, dma.hbm_to_vmem) e o cálculo do endereço.
- Depurar kernels personalizados:se estiver usando o Pallas, verifique os cálculos de índice.
Use
pl.debug_printoucheckifypara validar índices de tensor. - Verifique o sharding:confira se as anotações de sharding são consistentes com as formas de tensor.
Cenário 3.C: sincronização do Mosaic/Pallas
Exemplo de mensagem de erro:
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:esse erro é específico do código gerado pelo compilador Mosaic (usado pelo Pallas JAX). Isso indica um problema de sincronização em um kernel personalizado. As TPUs usam semáforos para gerenciar dependências (por exemplo, garantindo que uma DMA seja concluída antes do uso). Esse erro sugere que um sinal em um semáforo não foi aguardado corretamente.
- Sincronização de auditoria:verifique se cada
dma_starttem umdma_waitcorrespondente. - Verificar semáforos:verifique se os sinais e as esperas de semáforos estão estritamente pareados.
Problemas sem classificação
Se o registro de erros não corresponder aos cenários 1, 2 ou 3 (ou seja, não houver "observed errors", tags "scheck" nem mensagens específicas de limites/semáforos):
- Ação:provavelmente é um bug interno do XLA. Envie um relatório do bug.