nvidiaGPU便利コマンド関連
GPUでやりたい時、GPUの動作がおかしい時にやるコマンド。
ディープラーニングの学習用、仮想通貨のマイニングなどのGPU使用などを念頭にしてます。
コマンドは基本的にLinuxで使える。
GPUタスクをモニタしたい
nivida-smi -l
でメモリ使用率、温度、プロセスなどが出ます。
-l オプションをなくすと一度だけ表示させます。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.48 Driver Version: 410.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P100-PCIE... Off | 00000000:04:00.0 Off | 0 |
| N/A 52C P0 76W / 250W | 7023MiB / 12198MiB | 21% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla P100-PCIE... Off | 00000000:82:00.0 Off | 0 |
| N/A 39C P0 75W / 250W | 1333MiB / 12198MiB | 67% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 9964 C python 431MiB |
| 1 22430 C python 1323MiB |
+-----------------------------------------------------------------------------+
学習に使用するGPUを指定したい
マルチGPUを利用し学習するときはコマンドライン上で使用するGPUを指定する。
指定を行わないと自動的に全てのGPUを掴んでしまい、迷惑をかけることも。
ちゃんと使うGPUは明示的にした方がベター。
bash shellの場合
# GPU0,1両方を利用
export CUDA_VISIBLE_DEVICES=0,1
# 学習開始
python train.py
# GPU0,1を利用し学習が行われる
#GPU0のみ利用
export CUDA_VISIBLE_DEVICES=0
# 学習開始
python train.py
# GPU0のみで学習が行われる
csh系の場合
# GPU0,1両方を利用
setenv CUDA_VISIBLE_DEVICES 0,1
# 学習開始
python train.py
# GPU0,1を利用し学習が行われる
#GPU0のみ利用
setenv CUDA_VISIBLE_DEVICES 0
# 学習開始
python train.py
# GPU0のみで学習が行われる
GPU、OSがよく落ちてしまう場合
冷却性能不足などでサーバが落ちてしまうことがある場合、GPUに電力リミットをつけると良い。
>nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.48 Driver Version: 410.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P100-PCIE... Off | 00000000:04:00.0 Off | 0 |
| N/A 52C P0 76W / 250W | 7023MiB / 12198MiB | 21% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla P100-PCIE... Off | 00000000:82:00.0 Off | 0 |
| N/A 39C P0 75W / 250W | 1333MiB / 12198MiB | 67% Default |
+-------------------------------+----------------------+----------------------+
200Wに電力制限してみる。
# permuteモード。再起動するまで設定を保持する
>sudo nvidia-smi -pm 1
>sudo nvidia-smi -pl 200
>nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.48 Driver Version: 410.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P100-PCIE... Off | 00000000:04:00.0 Off | 0 |
| N/A 52C P0 76W / 200W | 7023MiB / 12198MiB | 21% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla P100-PCIE... Off | 00000000:82:00.0 Off | 0 |
| N/A 39C P0 75W / 200W | 1333MiB / 12198MiB | 67% Default |
+-------------------------------+----------------------+----------------------+
無事に電力リミットが200Wになったことを確認。
50W下げた程度ではパフォーマンスはあまり変わらないのでサーバが不安定なときにおすすめ。
これをやることで動作が安定になる場合も多い(本当は冷却機能や電源を拡充したほうがいいが。。)
GPUをリセットしたいリセット
# GPU0をリセット
sudo nvidia-smi --gpu-reset -i 0
どのユーザがGPUを利用しているか調べたい
sudo fuser -v /dev/nvidia*