Pytorchを使うと強制再起動する謎問題の解決法


概要

Pytorchで学習及び識別を行っていたところ、再起動を繰り返す謎の問題が発生した。この問題を解決すべく、あらゆる手を尽くし調査を行い、解決にまでこぎつけたので備忘録として残しておく。

前提

前提条件を記す。

マシン構成

・マザーボード: WS-X299 SAGE系
・CPU: i9-9920X

調査内容

突然と再起動を繰り返すため以下の調査を行った。

・Pytorchを実行すると急にPCが再起動を始める。(1回目は動作するが2回目は必ず落ちる等)
・CPU温度に異常なし $ watch -n 0.1 sensors
・CPU使用率及びファンの回転に異常なし $ top
・GPU使用率及び温度に異常なし $ nvidia-smi
・ジャーナルログに異常なし $ journalctl
・再起動ログに異常なし $ last reboot
・GUI系に異常なし $ less /var/log/xorg.0.log
・syslog系に異常なし $ less /var/log/syslog
・message系(syslog)に異常なし $ less /var/log/message
・kernel系に異常なし $ less /var/log/kern.log
・kernel panic off $ kernel.panic = 0
・電源系変更 (物理)
・電圧系監視 (物理)
・消費電力監視 (物理)
・GPU配線変更 (物理)
・CUDA 9.x系~11.x系で発生
・Pytorchのバージョンも関係ないようである

どのログにも異常は見られなかった。
一体私が何をしたっていうんだ。

解決方法

解決法…それは「ターボモードをソフトウェア上でオフ」にする。

$ sudo su root
$ echo "1" > /sys/devices/system/cpu/intel_pstate/no_turbo

これにより、かなり発生頻度を下げることができる。なんじゃこれは…

原因

どうやら問題はX299ボード及びi9-9920Xの構成の際に、高負荷を掛けるとX299に搭載されたターボモード(Turbo Boost Max Technology 3.0)が働き、その不具合で落ちるそうである。なお、BIOSでターボモードを切っても意味がないという徹底ぶり。