Nasz komputer GB10 sam się wyłączał. Logi wskazywały na pamięć; przyczyną było przegrzanie
Operacje
Jeden z naszych trzech komputerów NVIDIA GB10 gasł trzy razy w ciągu czterech dni we wrześniu: 10 września, 12 września (pozostał wyłączony przez 17 godzin) i 13 września, dwanaście minut po ponownym uruchomieniu. Za każdym razem potrzebna była osoba, która nacisnęła przycisk zasilania.
Jak wygląda wyłączenie z powodu przegrzania
Dziennik systemowy po prostu się urwał w trakcie pracy, bez wpisu o zamknięciu systemu: twarde odcięcie zasilania nie daje journald czasu na zapis bufora. W lipcu, po podobnym wyłączeniu, zegar wrócił nawet ze starą datą. A sprzętowy watchdog, który restartuje zawieszoną maszynę, nic nie zrobił, ponieważ maszyna się nie zawiesiła: zasilanie zniknęło.
Błędna wskazówka
Ostatnie linie jądra przed każdym awarią to błędy wyczerpania pamięci GPU (NV_ERR_NO_MEMORY), więc pamięć wyglądała na winną. Nie była. Te linie były po prostu najczęstszą rzeczą zapisywaną przez jądro: 440 580 z nich w jednym uruchomieniu, które trwało 19 dni przed zakończeniem. Gdy linia pojawia się tak często, będzie ostatnią linią przed czymkolwiek. Zanim obwinisz linię logu, policz, jak często pojawia się, gdy nic nie idzie źle.
Właściwa wskazówka
Ponieważ dziennik traci ostatnie minuty przy odcięciu zasilania, dodaliśmy mały próbnik, który co minutę zapisuje temperatury, obciążenie i pamięć do pliku oraz wymusza zapis na dysk. Uchwycił wszystkie pięć awarii od lipca. Każda z nich nastąpiła przy pełnym obciążeniu GPU (96%), z CPU w zakresie 85 do 97 °C.
Czas trwania wyjaśnił resztę. Około początku września przenieśliśmy renderowanie wideo na tę maszynę. Moc GPU przy pełnym obciążeniu wzrosła z około 24 W do 46 W, medianowa temperatura GPU z 68 do 86 °C, a liczba minut w tygodniu z CPU na poziomie 95 °C lub więcej z zera do 4 283. Nasze dwa pozostałe komputery GB10, które uruchamiają model językowy przy tym samym obciążeniu 96%, utrzymywały się w zakresie 65 do 81 °C. Ta po prostu gorzej się chłodziła.
Pierwsza poprawka: limit taktowania GPU
Na GB10 nvidia-smi nie może ustawić limitu mocy, ale może ograniczyć taktowanie GPU: nvidia-smi -lgc 0,2000. W lipcu obniżyło to najgorętszą strefę z 91 °C do 77–83 °C w ciągu kilku sekund. Dwa szczegóły mają znaczenie:
- Zastosuj to przed uruchomieniem ciężkich usług. Nasza usługa limitu uruchamiała się początkowo około 15 sekund po starcie systemu, gdy serwer modelu już zaczął ładować przy pełnej mocy, czyli w momencie, który wcześniej powodował awarię maszyny. Teraz uruchamia się przed startem Docker.
- Sprawdź to pod obciążeniem. Przy włączonym limicie raportowany zegar GPU nadal wynosi około 2400 MHz, gdy GPU jest bezczynne. Pod obciążeniem utrzymuje się na poziomie 1976 MHz.
Drugie rozwiązanie: zabezpieczenie termiczne działające stopniowo
Limit nie wystarczył, gdy doszło renderowanie, więc zabezpieczenie teraz odczytuje każdy czujnik raz na sekundę i działa stopniowo: obniżenie zegara GPU od 89 °C i kolejne obniżenie od 92 °C; od 94 °C renderer jest wstrzymywany (SIGSTOP), a CPU zwalniany; od 96 °C każde zadanie GPU jest wstrzymywane na czas potrzebny do schłodzenia. Powrót do wyższych wartości następuje dopiero po pewnym czasie utrzymywania niższej temperatury. Przy 97 °C przez 20 sekund awaryjny hamulec całkowicie zatrzymuje usługę wideo.
W pierwszych dziewięciu minutach renderowania najgorętsza strefa osiągnęła szczyt 94 °C przy medianie 89 °C, w porównaniu z wcześniejszymi plateau na poziomie 97 °C. Ma to swoją cenę: w jednym dniu w połowie września renderer był wstrzymany przez 17% czasu, a GPU pracował przez większość dnia z zegarem 900 MHz lub niższym. To też nie jest panaceum: maszyna raz jeszcze sama się wyłączyła, 11 października, przy temperaturze 97–98 °C. Od tego czasu działa bez przerwy, 20 dni w momencie pisania tego tekstu.
Cztery błędy, które popełniliśmy po drodze
- Wstrzymanie jednego zadania nie schłodziło maszyny. Hamulec zadziałał, gdy renderer był już wstrzymany, ponieważ model obrazowy nadal generował grafiki, a tuzin timerów uruchomiło się w tej samej minucie. Najwyższy stopień zabezpieczenia wstrzymuje teraz każde ciężkie zadanie GPU, a nie tylko renderer.
- Zabezpieczenie wstrzymuje zadania po nazwie, a nazwy się zmieniły. Dwa razy nowy silnik mógłby uniknąć wstrzymania: model obrazowy z nową nazwą procesu we wrześniu oraz w październiku renderer działający w kontenerze zamiast jako proces podrzędny usługi renderującej. Każda zmiana silnika wymaga teraz sprawdzenia listy zabezpieczenia.
- Blokada hamulca nigdy nie została zdjęta. Zatrzymała usługę wideo i pozostawiła plik blokady, aby nic jej nie restartowało. Nikt też nie został zaalarmowany, a produkcja stanęła na trzy dni, zanim to zauważyliśmy. Blokada jest teraz zdejmowana automatycznie: pięć minut po ostatnim hamowaniu, przy braku nowych zdarzeń hamowania, co najmniej 30 GB wolnej pamięci i średniej dziesięciominutowej temperaturze 93 °C lub niższej. Czekanie na schłodzenie maszyny nigdy nie miało szans zadziałać: średnia temperatura wynosiła 88 °C zarówno podczas renderowania, jak i bez niego.
- Alarm zadziałał przy normalnej temperaturze maszyny. Próg alertu wynosił 88 °C, czyli średnią temperaturę tej maszyny. W ciągu jednego dnia przez 32% czasu utrzymywała ona 90 °C lub więcej, przez 8% czasu 93 °C lub więcej i przez 3% czasu 95 °C lub więcej, nigdy nie osiągając 97 °C. Przenieśliśmy alarm na 97 °C, czyli na plateau, przy którym maszyna faktycznie się wyłączała, i e-maile z alertami przestały przychodzić.
Wniosek
Oprogramowanie utrzymywało tę maszynę przy życiu, ale przyczyna była fizyczna: jej chłodzenie było dwa do trzech razy gorsze niż w maszynach siostrzanych. Jeśli maszyna GB10 sama się wyłącza pod obciążeniem, najpierw sprawdź przepływ powietrza. Następnie ogranicz taktowanie GPU przed uruchomieniem usług, wstrzymaj ciężkie zadania, zanim maszyna osiągnie swój limit, i ustaw alarmy na temperaturach, przy których ona faktycznie pracuje.
Factory Floor zawiera tego typu zabezpieczenie termiczne: odczytuje najwyższą wartość z czujników GPU i strefy termicznej, wstrzymuje wskazane przez Ciebie ciężkie zadania przy ustalonej temperaturze (domyślnie 92 °C) i wznawia je dopiero poniżej niższej wartości (84 °C), wraz z zabezpieczeniami pamięci i dysku.