Náš stroj GB10 se sám vypínal. Log obviňoval paměť; šlo o přehřátí.
Provoz
Jeden ze tří našich strojů NVIDIA GB10 zhasl třikrát během čtyř dní v září: 10. září, 12. září (byl vypnutý 17 hodin) a 13. září, dvanáct minut po opětovném zapnutí. Pokaždé potřeboval člověka, aby stiskl tlačítko napájení.
Jak vypadá vypnutí kvůli přehřátí
Systémový deník se jednoduše zastavil uprostřed činnosti, bez záznamu o vypnutí: tvrdé vypnutí napájení nedá journaldu čas zapsat jeho buffer. V červenci se po podobném vypnutí dokonce vrátil starý datum. A hardwarový hlídač, který restartuje zaseknutý stroj, nic neudělal, protože stroj zaseknutý nebyl: prostě zmizelo napájení.
Špatná stopa
Poslední řádky kernelu před každým pádem byly chyby vyčerpání paměti GPU (NV_ERR_NO_MEMORY), takže paměť vypadala jako viník. Nebyla. Tyto řádky byly jednoduše nejčastější věc, kterou kernel zapisoval: 440 580 z nich během jednoho spuštění, které běželo 19 dní, než skončilo. Když se řádek objevuje tak často, bude posledním řádkem před čímkoli. Než začnete obviňovat řádek v logu, spočítejte, jak často se objevuje, když se nic neděje.
Správná stopa
Protože deník při vypnutí napájení přichází o poslední minuty, přidali jsme malý vzorkovač, který každou minutu zapíše teploty, zátěž a paměť do souboru a uloží je na disk. Zachytil všech pět pádů od července. Každý nastal při plné zátěži GPU (96 %), s CPU na 85 až 97 °C.
Časování vysvětlilo zbytek. Kolem začátku září jsme na tento stroj přesunuli renderování videa. Jeho výkon GPU při plné zátěži vzrostl z přibližně 24 W na 46 W, mediánová teplota GPU z 68 na 86 °C a minuty za týden s CPU na 95 °C a více z nuly na 4 283. Naše dva další stroje GB10, které běží jazykový model při stejné zátěži 96 %, zůstaly na 65 až 81 °C. Tento se jednoduše hůře chladil.
První oprava: omezení taktu GPU
Na GB10 nelze pomocí nvidia-smi nastavit limit napájení, ale lze omezit takt GPU: nvidia-smi -lgc 0,2000. V červenci to snížilo nejteplejší zónu z 91 °C na 77 až 83 °C během několika sekund. Záleží na dvou detailech:
- Nastavte ho před startem náročných služeb. Naše služba pro omezení taktu se nejprve spouštěla asi 15 sekund po startu, když server s modelem už začal načítat při plném výkonu, což byl moment, který stroj shodil. Nyní běží před startem Dockeru.
- Zkontrolujte to pod zátěží. Při zapnutém omezení stále ukazuje hlášená taktovací frekvence GPU přibližně 2 400 MHz, když je GPU v klidu. Pod zátěží se drží na 1 976 MHz.
Druhá oprava: ochranný mechanismus proti přehřátí s krokovým řízením
Omezení nestačilo, jakmile začalo probíhat vykreslování, takže ochranný mechanismus nyní jednou za sekundu čte všechny senzory a zasahuje po krocích: od 89 °C sníží taktovací frekvenci GPU a od 92 °C ji sníží znovu; od 94 °C pozastaví vykreslování (SIGSTOP) a zpomalí CPU; od 96 °C pozastaví všechny úlohy na GPU po dobu nezbytnou k ochlazení. Zpět se vrací pouze tehdy, když stroj zůstává určitou dobu chladnější. Při 97 °C po dobu 20 sekund zastaví nouzová brzda video službu úplně.
Během prvních devíti minut pod zátěží vykreslování dosáhla nejteplejší zóna špičky 94 °C s mediánem 89 °C, oproti předchozím plošinám na 97 °C. Má to svou cenu: jeden den v polovině září bylo vykreslování pozastaveno po 17 % času a GPU běželo po většinu dne na 900 MHz nebo méně. A není to zázračné řešení: stroj se ještě jednou sám vypnul, 11. října, při 97 až 98 °C. Od té doby běží bez přerušení, 20 dní, když to píšeme.
Čtyři chyby, kterých jsme se po cestě dopustili
- Pozastavení jedné úlohy stroj neochladilo. Brzda se spustila, když bylo vykreslování již pozastaveno, protože model pro generování obrázků stále kreslil a tucet časovačů se spustilo ve stejné minutě. Nejvyšší stupeň nyní pozastavuje všechny náročné úlohy na GPU, nejen vykreslování.
- Ochranný mechanismus pozastavuje úlohy podle názvu a názvy se změnily. Dvakrát by novému enginu uniklo pozastavení: modelu pro generování obrázků s novým názvem procesu v září a v říjnu vykreslovacímu enginu, který běží v kontejneru místo jako podproces vykreslovací služby. Každá změna enginu nyní zahrnuje kontrolu seznamu ochranného mechanismu.
- Zádrž brzdy se nikdy nezrušila. Zastavila video službu a zanechala soubor zádrže, aby se nic nespustilo znovu. Nikdo také nebyl upozorněn a výstup se zastavil na tři dny, než jsme si toho všimli. Zádrž se nyní ruší sama: pět minut po poslední brzdě, bez nové brzdy, s alespoň 30 GB volné paměti a desetiminutovým průměrem 93 °C nebo méně. Čekání na ochlazení stroje nikdy nemohlo fungovat: průměrně měl 88 °C s vykreslováním i bez něj.
- Alarm se spustil při běžné provozní teplotě stroje. Práh pro upozornění byl 88 °C, což byla průměrná teplota tohoto stroje. Během jednoho dne strávil 32 % času na teplotě 90 °C a více, 8 % na 93 °C a více a 3 % na 95 °C a více, přičemž nikdy nedosáhl 97 °C. Posunuli jsme alarm na 97 °C, tedy na plateau, kde stroj skutečně umíral, a e-maily s upozorněním přestaly chodit.
Shrnutí
Software udržoval tento stroj v provozu, ale příčina byla fyzická: jeho chlazení bylo dva až třikrát horší než u sesterských strojů. Pokud se stroj GB10 pod zátěží sám vypne, zkontrolujte nejprve proudění vzduchu. Poté omezte takt GPU před spuštěním služeb, pozastavte náročné úlohy, než stroj dosáhne svého limitu, a nastavte alarmy podle teplot, na kterých skutečně běží.
Factory Floor obsahuje takový ochranný mechanismus proti přehřátí: čte nejvyšší hodnotu ze senzorů GPU a tepelných zón, pozastaví vámi určené náročné úlohy při nastavené teplotě (výchozí hodnota 92 °C) a obnoví je pouze pod nižší teplotou (84 °C), přičemž vedle něj fungují ochranné mechanismy pro paměť a disk.