Código do erro: E0200

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.

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_print ou checkify para 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_start tem um dma_wait correspondente.
  • 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):