Mesin GB10 kami kerap mematikan dirinya sendiri. Log menyalahkan memori; puncanya ialah haba
Operasi
Salah satu daripada tiga mesin NVIDIA GB10 kami padam tiga kali dalam empat hari pada bulan September: pada 10 September, pada 12 September (ia kekal padam selama 17 jam) dan pada 13 September, dua belas minit selepas ia dihidupkan semula. Setiap kali, seseorang perlu menekan butang kuasa.
Rupa bentuk penutupan akibat haba
Jurnal sistem berhenti begitu sahaja, di tengah-tengah aktiviti, tanpa rekod penutupan: pemadaman kuasa keras tidak memberi journald masa untuk menulis penimbalnya. Pada bulan Julai, selepas penutupan serupa, jam kembali dengan tarikh lama. Dan watchdog perkakasan, yang memulakan semula mesin yang menggantung, tidak bertindak apa-apa, kerana mesin itu tidak menggantung: kuasanya telah hilang.
Petunjuk yang salah
Baris kernel terakhir sebelum setiap pemadaman ialah ralat memori GPU tidak cukup (NV_ERR_NO_MEMORY), jadi memori kelihatan bersalah. Sebenarnya tidak. Baris-baris itu hanyalah perkara paling biasa yang ditulis oleh kernel: 440,580 baris dalam satu but yang berjalan selama 19 hari sebelum ia berakhir. Apabila sesuatu baris muncul sekerap itu, ia pasti akan menjadi baris terakhir sebelum apa-apa berlaku. Sebelum menyalahkan baris log, kira berapa kerap ia muncul apabila tiada masalah.
Petunjuk yang betul
Oleh kerana jurnal kehilangan beberapa minit terakhir semasa pemadaman kuasa, kami telah menambah penyampel kecil yang menulis suhu, beban dan memori ke dalam fail setiap minit dan mengalirkannya ke cakera. Ia menangkap kesemua lima pemadaman sejak Julai. Setiap satu berlaku pada beban GPU penuh (96%), dengan CPU pada 85 hingga 97 °C.
Masa menjelaskan baki masalah. Menjelang awal September, kami telah memindahkan pemprosesan video ke mesin ini. Kuasa GPU-nya pada beban penuh meningkat daripada kira-kira 24 W kepada 46 W, suhu median GPU meningkat daripada 68 kepada 86 °C, dan minit setiap minggu dengan CPU pada 95 °C atau lebih meningkat daripada tiada kepada 4,283. Dua mesin GB10 kami yang lain, yang menjalankan model bahasa pada beban 96% yang sama, kekal pada 65 hingga 81 °C. Mesin ini sekadar penyejukannya lebih teruk.
Pembetulan pertama: had jam GPU
Pada GB10, nvidia-smi tidak boleh menetapkan had kuasa, tetapi ia boleh mengehadkan jam GPU: nvidia-smi -lgc 0,2000. Pada bulan Julai, ini menurunkan zon paling panas daripada 91 °C kepada 77 hingga 83 °C dalam beberapa saat. Dua perkara penting:
- Tetapkannya sebelum perkhidmatan berat bermula. Perkhidmatan had kami pada mulanya berjalan kira-kira 15 saat selepas but, apabila pelayan model telah mula dimuatkan pada kuasa penuh, iaitu saat yang telah merosakkan mesin. Kini ia berjalan sebelum Docker bermula.
- Periksa di bawah beban. Dengan had aktif, jam GPU yang dilaporkan masih membaca kira-kira 2,400 MHz apabila GPU tidak aktif. Di bawah beban, ia kekal pada 1,976 MHz.
Pembetulan kedua: pengawal keselamatan haba secara berperingkat
Had tersebut tidak mencukupi sebaik pemprosesan grafik bermula, jadi pengawal keselamatan kini membaca setiap sensor sekali sesaat dan bertindak secara berperingkat: jam GPU yang lebih rendah dari 89 °C dan lebih rendah lagi dari 92 °C; dari 94 °C, perisian pemprosesan grafik dijeda (SIGSTOP) dan CPU diperlahankan; dari 96 °C, setiap tugas GPU dijeda selama beberapa saat untuk penyejukan. Ia kembali ke tahap asal hanya selepas mesin kekal lebih sejuk untuk suatu tempoh. Pada 97 °C selama 20 saat, brek terakhir menghentikan perkhidmatan video sepenuhnya.
Dalam sembilan minit pertama pemprosesan grafik, zon paling panas memuncak pada 94 °C dengan median 89 °C, berbanding paras 97 °C sebelum ini. Ia ada harganya: pada satu hari pada pertengahan September, perisian pemprosesan grafik dijeda selama 17% masa, dan GPU beroperasi pada 900 MHz atau kurang untuk kebanyakan hari. Dan ia bukan penyembuhan: mesin itu mematikan dirinya sekali lagi, pada 11 Oktober, pada 97 hingga 98 °C. Ia telah beroperasi tanpa gangguan sejak itu, 20 hari ketika kami menulis ini.
Empat kesilapan yang kami lakukan di sepanjang jalan
- Menjeda satu tugas tidak menyejukkan mesin. Brek aktif dengan perisian pemprosesan grafik sudah dijeda, kerana model imej masih memproses dan selusin pemasa bermula pada minit yang sama. Tahap tertinggi kini menjeda setiap tugas GPU yang berat, bukan hanya perisian pemprosesan grafik.
- Pengawal keselamatan menjeda tugas berdasarkan nama, dan nama-nama telah berubah. Dua kali sebuah enjin baharu terlepas daripada jeda: model imej dengan nama proses baharu pada September, dan pada Oktober sebuah perisian pemprosesan grafik yang beroperasi dalam kontena dan bukan sebagai proses anak perkhidmatan pemprosesan grafik. Setiap perubahan enjin kini termasuk pemeriksaan senarai pengawal keselamatan.
- Penahanan brek tidak pernah dilepaskan. Ia menghentikan perkhidmatan video dan meninggalkan fail penahanan supaya tiada apa yang memulakannya semula. Tiada apa-apa yang memberi amaran kepada sesiapa pun, dan output berhenti selama tiga hari sebelum kami menyedarinya. Penahanan kini dilepaskan secara automatik: lima minit selepas brek terakhir, tanpa brek baharu, sekurang-kurangnya 30 GB memori kosong dan purata sepuluh minit 93 °C atau kurang. Menunggu mesin menyejuk tidak pernah menjadi penyelesaian: ia purata 88 °C dengan dan tanpa pemprosesan grafik.
- Penggeran berbunyi pada suhu normal mesin. Ambang amaran ialah 88 °C, iaitu purata bagi mesin ini. Dalam tempoh satu hari, ia berada pada 90 °C atau lebih selama 32% masa, 93 °C atau lebih selama 8% masa dan 95 °C atau lebih selama 3% masa, dan tidak pernah mencapai 97 °C. Kami mengalihkan penggeran ke 97 °C, iaitu tahap mendatar di mana ia benar-benar mati, dan e-mel amaran berhenti.
Pengajaran utama
Perisian mengekalkan mesin ini hidup, tetapi puncanya adalah fizikal: penyejukannya dua hingga tiga kali lebih buruk daripada mesin seumpamanya. Jika mesin GB10 mematikan dirinya sendiri di bawah beban, periksa aliran udara terlebih dahulu. Kemudian hadkan jam GPU sebelum perkhidmatan anda bermula, jeda tugas berat sebelum mesin mencapai hadnya, dan tetapkan penggeran berdasarkan suhu yang sebenarnya dicapai oleh mesin.
Factory Floor merangkumi pengawal keselamatan haba sebegini: ia membaca sensor GPU dan zon terma yang paling panas, menjeda tugas berat yang anda tetapkan pada suhu tertentu (92 °C secara lalai) dan menyambungnya semula hanya di bawah suhu yang lebih rendah (84 °C), dengan pengawal keselamatan memori dan cakera di sebelahnya.