Ang aming GB10 machine ay patuloy na namamatay sa sarili. Ang log ay nagsisi sa memorya; init pala ang dahilan
Ops
Isa sa aming tatlong NVIDIA GB10 machines ang namatay nang tatlong beses sa loob ng apat na araw noong Setyembre: noong Setyembre 10, noong Setyembre 12 (nagpatuloy itong patay sa loob ng 17 oras) at noong Setyembre 13, labing-dalawang minuto pagkatapos itong buksan muli. Bawat beses, kailangan ng tao na pindutin ang power button.
Ganito ang itsura ng heat shutdown
Biglang tumigil ang system journal, habang aktibo pa ito, walang nakasulat na shutdown: ang hard power-off ay hindi nagbibigay ng sapat na oras sa journald upang isulat ang buffer nito. Noong Hulyo, pagkatapos ng katulad na shutdown, bumalik pa nga ang orasan na may lumang petsa. At ang hardware watchdog, na nagre-reboot ng machine na nag-hang, ay walang ginawa, dahil hindi nag-hang ang machine: nawala ang kuryente.
Ang mali na pahiwatig
Ang huling mga linya ng kernel bawat pagkamatay ay mga GPU out-of-memory errors (NV_ERR_NO_MEMORY), kaya mukhang memorya ang may kasalanan. Hindi pala. Ang mga linyang iyon ay simpleng pinakakaraniwang isinulat ng kernel: 440,580 sa isang boot na tumakbo ng 19 araw bago ito natapos. Kapag ang isang linya ay lumilitaw nang ganito kadalas, ito ang magiging huling linya bago ang anumang bagay. Bago sisihin ang isang linya ng log, bilangin kung gaano kadalas itong lumilitaw kapag walang problema.
Ang tamang pahiwatig
Dahil nawawala ng journal ang huling ilang minuto sa power-off, nagdagdag kami ng maliit na sampler na nagsusulat ng temperatura, load at memorya sa isang file bawat minuto at pinapalabas ito sa disk. Nahuli nito ang lahat ng limang pagkamatay mula Hulyo. Bawat isa ay nangyari sa full GPU load (96%), na may CPU na 85 hanggang 97 °C.
Ang timing ang nagpaliwanag sa natitira. Mga simula ng Setyembre, inilipat namin ang video rendering sa machine na ito. Ang GPU power nito sa full load ay tumaas mula humigit-kumulang 24 W hanggang 46 W, ang median GPU temperature nito mula 68 hanggang 86 °C, at ang mga minuto kada linggo na may CPU na 95 °C o higit pa ay mula wala hanggang 4,283. Ang aming dalawang iba pang GB10 machines, na tumatakbo ng language model sa parehong 96% load, ay nanatili sa 65 hanggang 81 °C. Ang isa lang itong mas hindi nag-cool nang maayos.
Ang unang ayos: isang GPU clock cap
Sa GB10, hindi kayang itakda ng nvidia-smi ang power limit, ngunit kaya nitong i-cap ang GPU clock: nvidia-smi -lgc 0,2000. Noong Hulyo, ibinaba nito ang pinakamainit na zone mula 91 °C hanggang 77 hanggang 83 °C sa loob ng ilang segundo. Dalawang detalye ang mahalaga:
- I-apply ito bago magsimula ang mga mabigat na serbisyo. Ang aming cap service ay unang tumakbo mga 15 segundo pagkatapos ng boot, nang ang model server ay nagsimula nang mag-load sa full power, na ang sandaling iyon ang nag-crash sa machine. Ngayon, tumatakbo ito bago magsimula ang Docker.
- Tingnan sa ilalim ng load. Na may cap, ang inirereport na GPU clock ay nananatiling humigit-kumulang 2,400 MHz kapag idle ang GPU. Sa ilalim ng load, nananatili ito sa 1,976 MHz.
Ang pangalawang pag-aayos: isang heat guard sa mga hakbang
Hindi sapat ang cap nang pumasok ang rendering, kaya ngayon ay binabasa ng isang guard ang bawat sensor isang beses kada segundo at kumikilos sa mga hakbang: mas mababang GPU clock mula 89 °C at mas mababa pa mula 92 °C; mula 94 °C, ipinapause ang renderer (SIGSTOP) at pinapabagal ang CPU; mula 96 °C, ipinapause ang lahat ng GPU job sa mga segundo na kailangan para lumamig. Bumabalik ito sa dating setting lamang matapos manatiling mas malamig ang makina sa isang panahon. Sa 97 °C sa loob ng 20 segundo, ang isang last-resort brake ay humihinto sa video service nang tuluyan.
Sa unang siyam na minuto nito sa ilalim ng rendering, ang pinakamainit na zone ay umabot sa 94 °C na may median na 89 °C, kumpara sa mga plateau na 97 °C noon. May presyo ito: sa isang araw noong kalagitnaan ng Setyembre, ang renderer ay ipinause sa 17% ng oras, at ang GPU ay tumakbo sa 900 MHz o mas mababa sa karamihan ng araw. At hindi ito lunas: sarili itong pinatay ang makina nang isang beses pa, noong 11 Oktubre, sa 97 hanggang 98 °C. Tumatakbo ito nang walang pahinga mula noon, 20 araw habang sinusulat namin ito.
Apat na pagkakamali na ginawa namin sa daan
- Hindi nilalamig ng makina ang pag-pause ng isang job. Sumabog ang brake habang naka-pause na ang renderer, dahil may isang image model na nagdi-drawing pa at isang dosena ng timer na nagsimula sa parehong minuto. Ang pinakatamang hakbang ngayon ay ipinapause ang lahat ng mabigat na GPU job, hindi lang ang renderer.
- Ipinapause ng guard ang mga job ayon sa pangalan, at nagbago ang mga pangalan. Dalawang beses na nakalusot ang isang bagong engine sa pause: isang image model na may bagong process name noong Setyembre, at noong Oktubre ay isang renderer na tumatakbo sa container sa halip na bilang child ng render service. Kasama na ngayon sa bawat pagbabago ng engine ang pagsusuri sa listahan ng guard.
- Hindi nabuksan ang hold ng brake. Hininto nito ang video service at iniwan ang isang hold file upang walang magsimula ulit. Walang nag-alerto sa sinuman, at tumigil ang output sa loob ng tatlong araw bago namin mapansin. Ang hold ay nagpapawala na ngayon sa sarili: limang minuto matapos ang huling brake, walang bagong brake, may hindi bababa sa 30 GB na libreng memorya at average na 93 °C o mas mababa sa loob ng sampung minuto. Hindi talaga gumagana ang paghintay na lumamig ang makina: average nito ang 88 °C may rendering at walang rendering.
- Ang alarm ay tumunog sa normal na temperatura ng makina. Ang alert threshold ay 88 °C, na siyang average ng makinang ito. Sa loob ng isang araw, 32% ng oras ay nasa 90 °C o higit pa, 8% ay nasa 93 °C o higit pa, at 3% ay nasa 95 °C o higit pa, at hindi kailanman umabot sa 97 °C. Inilipat namin ang alarm sa 97 °C, ang plateau kung saan talaga ito namatay, at tumigil ang mga email ng alarm.
Ang takeaway
Pinanatili ng software ang buhay ng makinang ito, ngunit ang dahilan ay pisikal: ang pagpapalamig nito ay dalawa hanggang tatlong beses na mas masama kaysa sa mga kapwa nito. Kung ang isang GB10 machine ay kusang namamatay sa ilalim ng load, tingnan muna ang airflow. Pagkatapos, limitahan ang GPU clock bago magsimula ang mga serbisyo ninyo, i-pause ang mga mabigat na trabaho bago maabot ng makina ang limitasyon nito, at itakda ang mga alarm mula sa mga temperatura na talagang ginagamit nito.
Factory Floor ay may kasamang heat guard ng ganitong uri: binabasa nito ang pinakamainit sa mga sensor ng GPU at thermal-zone, ini-pause ang mga mabigat na trabaho na tinukoy ninyo sa isang itinakdang temperatura (92 °C by default), at ipinagpapatuloy lamang ang mga ito kapag nasa ibaba ng mas mababang temperatura (84 °C), kasama ang memory at disk guards sa tabi nito.