Kategoria: Czas działania: rdzeń został nieoczekiwanie zatrzymany
Ten błąd oznacza, że rdzeń TPU przedwcześnie przestał wykonywać instrukcje. Jest to stan błędu krytycznego, w którym sprzęt wymusza zatrzymanie z powodu nieodwracalnej usterki, naruszenia ograniczeń sprzętowych lub celowego przerwania wywołanego przez asercje środowiska wykonawczego wygenerowane przez kompilator.
Przykładowy komunikat o błędzie:
INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:1:0x1d9 ...
Backendy XLA: TPU
Przegląd
XLA kompiluje programy JAX do sekwencji instrukcji asemblera niskiego poziomu. W czasie działania urządzenie TPU wykonuje te instrukcje sekwencyjnie. Błąd „Core Halted Unexpectedly” (Rdzeń został nieoczekiwanie zatrzymany) występuje, gdy sprzęt TPU napotka nieodwracalny stan, który uniemożliwia dalsze wykonywanie, co zmusza rdzeń do przejścia w krytyczny stan „HALTED” (ZATRZYMANO).
Ten błąd może wynikać z awarii sprzętu, błędów kompilatora lub problemów z kodem użytkownika (zwłaszcza w przypadku niestandardowych jąder). Aby zidentyfikować konkretną przyczynę, musisz dokładnie przeanalizować komunikaty dziennika.
Debugowanie
Aby rozwiązać ten problem, musisz najpierw określić, który z 3 konkretnych scenariuszy spowodował nieoczekiwane zatrzymanie. Sprawdź w logach konkretne sygnatury tekstowe opisane poniżej.
Scenariusz 1. Awarie infrastruktury (sprzęt, sieć, zasilanie)
Podpis: w logach wyraźnie podano observed errors are: [Network] lub observed errors are: [Power] lub observed errors are: [Hardware].
Oznacza to awarię infrastruktury fizycznej niezwiązaną z oprogramowaniem ani logiką modelu. Uszkodzony jest chip TPU, sieć łącząca chipy lub zasilacz.
- Ponów próbę wykonania zadania: jeśli problemem był chwilowy spadek napięcia lub zakłócenie sieci, proste ponowienie próby może zadziałać.
- Wykrywanie i usuwanie uszkodzonych węzłów: jeśli błąd nadal występuje w przypadku tego samego konkretnego zadania lub hosta, prawdopodobnie jest to wada sprzętu. Użyj narzędzi do zarządzania klastrem, aby „opróżnić” lub „odizolować” węzeł, którego dotyczy problem, i ponownie uruchomić zadanie na działających węzłach.
Scenariusz 2. Naruszenia ograniczeń sprzętowych
Podpis: dzienniki wskazują observed errors are: [User].
Oznacza to, że kompilator XLA wygenerował instrukcję, która naruszała niezbywalne ograniczenie sprzętowe (np. instrukcja próbująca uzyskać dostęp do adresu pamięci poza zakresem w pamięci HBM lub Scratchpad). Chociaż jest oznaczony jako „Użytkownik”, rzadko jest spowodowany przez kod użytkownika wysokiego poziomu.
- Zgłoś błąd XLA: prawdopodobnie jest to błąd kompilatora, który nigdy nie powinien emitować instrukcji naruszających specyfikacje sprzętowe. Zgłoś błąd.
Scenariusz 3. Błędy asercji wygenerowane przez kompilator XLA
Sygnatura: komunikat o błędzie zawiera szczegółowe informacje o asercji wygenerowanej przez kompilator, która nie powiodła się. Wyszukaj te słowa kluczowe:
BoundsCheck,scheckne,scheckeq,schecklt,scheckge,scheckbetween
Oznacza to, że podczas wykonywania skompilowanego programu nie powiodło się wygenerowane przez kompilator stwierdzenie. Przeanalizuj konkretny komunikat o błędzie, aby określić jego podtyp:
Scenariusz 3.A. Niezgodność grupy wprowadzającej
Przykładowy komunikat o błędzie:
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.
Przyczyna: ten błąd występuje zwykle w środowiskach TPU z wieloma hostami. Oznacza to, że rdzenie TPU, które mają wykonywać ten sam program w zsynchronizowany sposób (w ramach „grupy uruchamiania”), utraciły synchronizację. Rdzeń TPU dołączył do grupy synchronizacji z identyfikatorem programu innym niż bieżący lider grupy, co sugeruje niespójne programy na różnych hostach.
- Sprawdź flagi XLA: upewnij się, że wszystkie hosty używają dokładnie tego samego
XLA_FLAGS. - Spójne programy Jax: sprawdź, czy wszystkie hosty wykonują identyczny program Jax. Sprawdź obrazy Dockera, wersje libtpu itp.
Scenariusz 3.B. Błąd sprawdzania zakresu
Przykładowy komunikat o błędzie:
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
Przyczyna: program próbował uzyskać dostęp do pamięci poza przydzielonym zakresem. Komunikat o błędzie często zawiera szczegóły dotyczące typu dostępu do pamięci (np. dma.hbm_to_vmem) i obliczeń adresu.
- Debugowanie niestandardowych jąder: jeśli używasz Pallas, sprawdź obliczenia indeksu.
Użyj
pl.debug_printlubcheckifydo weryfikacji indeksów tensora. - Sprawdź podział: upewnij się, że adnotacje dotyczące podziału są zgodne z kształtami tensorów.
Scenariusz 3.C. Synchronizacja Mosaic/Pallas
Przykładowy komunikat o błędzie:
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.
Przyczyna: Ten błąd dotyczy kodu wygenerowanego przez kompilator Mosaic (używany przez Pallas JAX). Wskazuje problem z synchronizacją w niestandardowym jądrze. Procesory TPU używają semaforów do zarządzania zależnościami (np. zapewniają, że przed użyciem operacji DMA zostanie ona ukończona). Ten błąd sugeruje, że sygnał na semaforze nie został prawidłowo oczekiwany.
- Sprawdź synchronizację: upewnij się, że każdy znak
dma_startma odpowiedni znakdma_wait. - Sprawdź semafory: upewnij się, że sygnały semaforów i oczekiwania są ściśle powiązane.
Problemy bez kategorii
Jeśli Twój dziennik błędów nie pasuje do scenariusza 1, 2 ani 3 (tzn. nie zawiera „observed errors”, tagów „scheck” ani konkretnych komunikatów o ograniczeniach lub semaforach):
- Działanie: prawdopodobnie jest to błąd wewnętrzny XLA. Zgłoś błąd.