Mașina noastră GB10 se oprea singură. Jurnalul acuză memoria; cauza era supraîncălzirea

Operațiuni

Una dintre cele trei mașini NVIDIA GB10 s-a oprit de trei ori în patru zile în septembrie: pe 10 septembrie, pe 12 septembrie (a rămas oprită timp de 17 ore) și pe 13 septembrie, la douăsprezece minute după ce a fost pornită din nou. De fiecare dată a fost nevoie ca o persoană să apese butonul de pornire.

Cum arată o oprire din cauza supraîncălzirii

Jurnalul de sistem s-a oprit pur și simplu, în plină activitate, fără nicio oprire înregistrată: o oprire bruscă a alimentării nu oferă timp pentru journald să își scrie bufferul. În iulie, după o oprire similară, ceasul a revenit chiar cu o dată veche. Iar watchdog-ul hardware, care repornește o mașină blocată, nu a făcut nimic, pentru că mașina nu se blocase: alimentarea dispăruse.

Indiciul care era greșit

Ultimele linii din kernel înainte de fiecare oprire erau erori de memorie GPU insuficientă (NV_ERR_NO_MEMORY), deci memoria părea vinovată. Nu era. Aceste linii erau pur și simplu cele mai frecvente scrise de kernel: 440.580 într-o singură pornire care funcționase timp de 19 zile înainte de a se termina. Când o linie apare atât de des, va fi ultima linie înainte de orice. Înainte de a acuza o linie din jurnal, numărați cât de des apare când totul merge bine.

Indiciul care era corect

Deoarece jurnalul își pierde ultimele minute în cazul unei opriri a alimentării, adăugaserăm un mic sampler care scrie temperaturile, sarcina și memoria într-un fișier în fiecare minut și îl salvează pe disc. A surprins toate cele cinci opriri din iulie. Fiecare a survenit la sarcină GPU maximă (96%), cu CPU-ul la 85-97 °C.

Cronologia a explicat restul. În jurul începutului lui septembrie, mutaserăm randarea video pe această mașină. Puterea GPU sub sarcină maximă a crescut de la aproximativ 24 W la 46 W, temperatura mediană a GPU-ului de la 68 la 86 °C, iar minutele pe săptămână cu CPU-ul la 95 °C sau mai mult, de la niciuna la 4.283. Celelalte două mașini GB10, care rulează modelul de limbaj la aceeași sarcină de 96%, au rămas la 65-81 °C. Aceasta se răcea pur și simplu mai prost.

Prima soluție: o limită a ceasului GPU

Pe GB10, nvidia-smi nu poate seta o limită de putere, dar poate limita ceasul GPU: nvidia-smi -lgc 0,2000. În iulie, aceasta a redus cea mai fierbinte zonă de la 91 °C la 77-83 °C în câteva secunde. Două detalii contează:

A doua remediere: un mecanism de siguranță termică în trepte

Limita nu a fost suficientă odată ce randarea a intrat în scenă, așa că un mecanism de siguranță citește acum fiecare senzor o dată pe secundă și acționează în trepte: un ceas GPU mai redus de la 89 °C și încă unul mai redus de la 92 °C; de la 94 °C, randorul este pus în pauză (SIGSTOP) și CPU-ul încetinit; de la 96 °C, fiecare job GPU este pus în pauză pentru secundele necesare răcirii. Revine doar după ce mașina a rămas mai rece pentru o perioadă. La 97 °C timp de 20 de secunde, o frână de ultimă instanță oprește complet serviciul video.

În primele nouă minute sub randare, cea mai fierbinte zonă a atins un vârf de 94 °C cu o mediană de 89 °C, față de platouri de 97 °C înainte. Are un preț: într-o zi de la mijlocul lui septembrie, randorul a fost pus în pauză 17% din timp, iar GPU-ul a rulat la 900 MHz sau mai puțin în cea mai mare parte a zilei. Și nu este un remediu universal: mașina s-a oprit singură încă o dată, pe 11 octombrie, la 97-98 °C. De atunci, funcționează fără întreruperi, 20 de zile la momentul scrierii acestor rânduri.

Patru greșeli pe care le-am făcut pe parcurs

Concluzia

Software-ul a menținut această mașină în funcțiune, dar cauza era fizică: răcirea ei era de două-trei ori mai proastă decât a mașinilor similare. Dacă o mașină GB10 se oprește singură sub sarcină, verificați mai întâi fluxul de aer. Apoi limitați ceasul GPU înainte de pornirea serviciilor, întrerupeți sarcinile grele înainte ca mașina să atingă limita și setați alarmele în funcție de temperaturile la care rulează efectiv.

Factory Floor include un mecanism de siguranță termică de acest tip: citește cea mai ridicată valoare dintre senzorii GPU și cei de zonă termică, întrerupeți sarcinile grele specificate de dumneavoastră la o temperatură setată (implicit 92 °C) și le reia doar sub una mai mică (84 °C), având alături mecanisme de siguranță pentru memorie și disc.

Actualizat: