Код ошибки: E0200

Категория: Выполнение: Неожиданная остановка работы ядра

Эта ошибка указывает на то, что ядро ​​TPU преждевременно прекратило выполнение инструкций. Это критическая ошибка, при которой оборудование принудительно останавливается из-за неустранимой неисправности, нарушения аппаратных ограничений или преднамеренного прерывания, вызванного сгенерированными компилятором утверждениями времени выполнения.

Пример сообщения об ошибке:

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

Бэкенды XLA: TPU

Обзор

XLA компилирует программы JAX в последовательность низкоуровневых инструкций ассемблера. Во время выполнения устройство TPU последовательно выполняет эти инструкции. Ошибка «Core Halted Unexpectedly» возникает, когда аппаратное обеспечение TPU сталкивается с неисправимой ситуацией, которая препятствует дальнейшему выполнению, переводя ядро ​​в фатальное состояние «HALTED».

Поскольку эта ошибка может быть вызвана физическими сбоями оборудования, ошибками компилятора или проблемами в пользовательском коде (особенно в ядрах пользовательских фреймворков), необходимо тщательно проанализировать сообщения журнала, чтобы определить конкретную причину.

Отладка

Для устранения этой ошибки необходимо сначала определить, какой из трех конкретных сценариев вызвал неожиданную остановку. Проверьте журналы на наличие описанных ниже текстовых сигнатур.

Сценарий 1: Сбои в инфраструктуре (оборудование/сеть/питание)

Подпись: В журналах явно указано, observed errors are: [Network] или observed errors are: [Power] или observed errors are: [Hardware] .

Это указывает на сбой физической инфраструктуры, не связанный с вашим программным обеспечением или логикой модели. Возможно, вышел из строя чип TPU, сетевая инфраструктура, соединяющая чипы, или источник питания.

  • Повторите задание: если проблема заключалась в кратковременном падении напряжения или нестабильности сети, простая повторная попытка может помочь.
  • Выявление и удаление неисправных узлов: если ошибка сохраняется в той же конкретной задаче или на том же хосте, скорее всего, неисправно оборудование. Используйте инструменты управления кластером, чтобы "отключить"/"заблокировать" затронутый узел и перезапустить задание на исправных узлах.

Сценарий 2: Нарушения аппаратных ограничений

Подпись: В журналах observed errors are: [User] .

Это указывает на то, что компилятор XLA сгенерировал инструкцию, нарушающую нерушимое аппаратное ограничение (например, инструкцию, пытающуюся получить доступ к адресу памяти за пределами допустимого диапазона в памяти HBM или Scratchpad). Хотя это обозначено как "Пользовательский код", это редко бывает вызвано высокоуровневым пользовательским кодом.

  • Сообщите об ошибке в XLA: Вероятно, это ошибка компилятора, компилятор никогда не должен генерировать инструкции, нарушающие аппаратные характеристики. Пожалуйста, отправьте отчет об ошибке.

Сценарий 3: Сбои утверждений, генерируемые компилятором XLA

Подпись: Сообщение об ошибке содержит подробную информацию о сгенерированном компилятором утверждении, которое не выполняется. Найдите следующие ключевые слова:

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

Это указывает на то, что сгенерированное компилятором утверждение в скомпилированной программе завершилось с ошибкой во время выполнения. Проанализируйте конкретное сообщение об ошибке, чтобы определить подтип ошибки:

Сценарий 3.А: Несоответствие стартовой группы

Пример сообщения об ошибке:

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.

Причина: Эта ошибка обычно возникает в многохостовых средах TPU. Она указывает на то, что ядра TPU, которые должны выполнять одну и ту же программу синхронно (в составе «группы запуска»), рассинхронизировались. В частности, ядро ​​TPU присоединилось к группе синхронизации с другим идентификатором программы, чем у текущего лидера группы, что указывает на несогласованность программ на разных хостах.

  • Проверьте флаги XLA: убедитесь, что все хосты используют абсолютно одинаковые значения XLA_FLAGS .
  • Согласованность программ Jax: Убедитесь, что на всех хостах выполняется идентичная программа Jax. Проверьте образы Docker, версии libtpu и т. д.

Сценарий 3.B: Сбой проверки границ

Пример сообщения об ошибке:

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

Причина: Программа попыталась получить доступ к памяти за пределами выделенных границ. Сообщение об ошибке часто содержит подробную информацию о типе доступа к памяти (например, dma.hbm_to_vmem) и вычислении адреса.

  • Отладка пользовательских ядер: Если вы используете Pallas, проверьте вычисления индексов. Используйте pl.debug_print или checkify для проверки индексов тензоров.
  • Проверка сегментации: Убедитесь, что аннотации сегментации соответствуют формам тензоров.

Сценарий 3.C: Мозаичная/Палласовская синхронизация

Пример сообщения об ошибке:

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.

Причина: Эта ошибка характерна для кода, сгенерированного компилятором Mosaic (используемым Pallas JAX). Она указывает на проблему синхронизации в пользовательском ядре. TPU используют семафоры для управления зависимостями (например, для обеспечения завершения DMA перед использованием). Эта ошибка предполагает, что сигнал на семафоре не был должным образом ожидаем.

  • Аудит синхронизации: Убедитесь, что для каждого dma_start существует соответствующее dma_wait .
  • Проверка семафоров: Убедитесь, что сигналы семафоров и ожидания строго связаны между собой.

Вопросы без категории

Если ваш журнал ошибок не соответствует сценарию 1, 2 или 3 (т.е. отсутствуют "наблюдаемые ошибки", теги "scheck" и сообщения о конкретных границах/семафорах):

  • Действие: Вероятно, это внутренняя ошибка XLA. Пожалуйста, отправьте отчет об ошибке.