Naš stroj GB10 se je sam izklopil. Dnevnik je krivil pomnilnik; bila je toplota
Operacije
Ena od naših treh naprav NVIDIA GB10 se je v štirih dneh septembra trikrat ugasnila: 10. septembra, 12. septembra (bila je ugasnjena 17 ur) in 13. septembra, dvanajst minut po vklopu. Vsakič je potrebovala osebo, da pritisne gumb za vklop.
Kako je videti izklop zaradi toplote
Sistemski dnevnik se je preprosto ustavil sredi dejavnosti, brez zapisa o izklopu: trd izklop napajanja ne pusti časa journaldu, da zapiše svoj medpomnilnik. Julija se je ura po podobnem izklopu celo vrnila s starim datumom. In strojni varuh, ki ponovno zažene zataknilo se napravo, ni storil ničesar, ker se naprava ni zataknila: napajanje je bilo prekinjeno.
Napačen namig
Zadnje vrstice jedra pred vsakim izpadom so bile napake pomnilnika GPU (NV_ERR_NO_MEMORY), zato je bil pomnilnik videti kriv. Ni bil. Te vrstice so bile preprosto najpogostejša stvar, ki jo je jedro zapisalo: 440.580 jih je bilo v enem samem zagonu, ki je trajal 19 dni, preden se je končal. Ko se vrstica pojavi tako pogosto, bo zadnja vrstica pred čemur koli. Preden krivite vrstico v dnevniku, preštejte, kako pogosto se pojavi, ko gre vse v redu.
Pravilen namig
Ker dnevnik pri izklopu napajanja izgubi zadnje minute, smo dodali majhen vzorčilec, ki vsako minuto zapiše temperature, obremenitev in pomnilnik v datoteko ter jo zapiše na disk. Ujel je vseh pet izpadov od julija. Vsak je nastopil pri polni obremenitvi GPU (96 %), s CPU na 85 do 97 °C.
Časovni okvir je pojasnil preostanek. Okoli začetka septembra smo na to napravo prenesli upodabljanje videa. Poraba energije GPU pri polni obremenitvi je narasla s približno 24 W na 46 W, srednja temperatura GPU s 68 na 86 °C, minute na teden s CPU na 95 °C ali več pa z nič na 4.283. Naši drugi dve napravi GB10, ki poganjata jezikovni model pri enaki obremenitvi 96 %, sta ostali pri 65 do 81 °C. Ta se je preprosto slabše hladila.
Prva rešitev: omejitev takta GPU
Na GB10 nvidia-smi ne more nastaviti omejitve moči, lahko pa omeji takt GPU: nvidia-smi -lgc 0,2000. Julija je to v nekaj sekundah znižalo najtoplejšo cono s 91 °C na 77 do 83 °C. Pomembna sta dva detajla:
- Uporabite jo pred zagonom zahtevnih storitev. Naša storitev za omejitev se je prvič zagnala približno 15 sekund po zagonu, ko je strežnik modela že začel nalagati pri polni moči, kar je bil trenutek, ki je napravo sesul. Zdaj teče pred zagonom Docker.
- Preverite pod obremenitvijo. Z vklopljenim omejevalnikom ura GPU še vedno kaže približno 2.400 MHz, ko je GPU v mirovanju. Pod obremenitvijo se zadrži pri 1.976 MHz.
Druga popravila: zaščitni mehanizem pred pregrevanjem v korakih
Omejevalnik ni bil dovolj, ko je začel delovati upodabljalec, zato zaščitni mehanizem zdaj vsako sekundo prebere vse senzorje in ukrepa v korakih: nižji ura GPU od 89 °C in še nižji od 92 °C; od 94 °C se upodabljalec zaustavi (SIGSTOP) in CPU upočasni; od 96 °C se vsa opravila GPU zaustavijo za sekunde, potrebne za ohladitev. Koraki se sproščajo šele, ko se stroj dlje časa ohranja hladnejši. Pri 97 °C za 20 sekund zadnja zavora popolnoma ustavi storitev videa.
V prvih devetih minutah upodabljanja je najtoplejša cona dosegla vrh 94 °C z mediano 89 °C, v primerjavi s prejšnjimi platoji pri 97 °C. To ima svojo ceno: en dan sredi septembra je bil upodabljalec zaustavljen 17 % časa, GPU pa je večino dneva deloval pri 900 MHz ali manj. In to ni zdravilo: stroj se je še enkrat sam izklopil, 11. oktobra, pri 97 do 98 °C. Od takrat deluje brez prekinitve, 20 dni, ko to pišemo.
Štiri napake, ki smo jih storili na poti
- Zaustavitev enega opravila ni ohladila stroja. Zavora je sprožila, ko je bil upodabljalec že zaustavljen, ker je slikovni model še vedno upodabljal in je na minuto začela vrsta časovnikov. Najvišja stopnja zdaj zaustavi vsa zahtevna opravila GPU, ne le upodabljalec.
- Zaščitni mehanizem zaustavlja opravila po imenu, imena pa so se spremenila. Dvakrat bi nov pogon ušel zaustavitvi: slikovni model z novim imenom procesa v septembru in oktobra upodabljalec, ki teče v kontejnerju namesto kot podrejeni proces storitve upodabljanja. Vsaka sprememba pogona zdaj vključuje pregled seznama zaščitnega mehanizma.
- Zadržanje zavore se nikoli ni sprostilo. Ustavila je storitev videa in pustila datoteko zadržanja, da se nič ni znova zagnalo. Nikoli ni bilo nobenega opozorila in izhod se je ustavil za tri dni, preden smo to opazili. Zadržanje se zdaj samo sprosti: pet minut po zadnji zavori, brez nove zavore, z vsaj 30 GB prostega pomnilnika in desetminutnim povprečjem 93 °C ali manj. Čakanje, da se stroj ohladi, nikoli ne bi delovalo: povprečje je bilo 88 °C z upodabljanjem in brez njega.
- Alarm je zazvonil pri običajni temperaturi stroja. Prag za opozorila je bil 88 °C, kar je bila povprečna temperatura tega stroja. V enem dnevu je 32 % časa preživel pri 90 °C ali več, 8 % pri 93 °C ali več in 3 % pri 95 °C ali več, nikoli pa ni dosegel 97 °C. Alarm smo prestavili na 97 °C, na plato, kjer je stroj dejansko odpovedal, in e-poštna opozorila so se ustavila.
Ključna ugotovitev
Programska oprema je ta stroj vzdrževala v pogonu, a vzrok je bil fizičen: njegovo hlajenje je bilo dva- do trikrat slabše kot pri sorodnih napravah. Če se stroj GB10 pod obremenitvijo sam izklopi, najprej preverite pretok zraka. Nato omejite takt GPU pred zagonom storitev, zaustavite zahtevna opravila, preden stroj doseže svojo mejo, in nastavite alarme glede na temperature, pri katerih dejansko deluje.
Factory Floor vključuje takšni zaščitni mehanizem pred pregrevanjem: bere najvišjo vrednost med senzorji GPU in toplotnih con, zaustavi zahtevna opravila, ki jih določite, pri nastavljeni temperaturi (privzeto 92 °C) in jih znova zažene šele pod nižjo temperaturo (84 °C), poleg njega pa sta še zaščitna mehanizma za pomnilnik in disk.