在日常的训练过程中,你可能需要经常查看当前GPU的使用状态(类似于Linux的Top)。有很多命令可以做到。
1. nvidia-smi
这个命令是基础,一般你系统装完CUDA都会有。这里详细的记录了当前系统的GPU数量和相应GPU的具体信息,比如这里只有一张3090显卡,他的满载功耗为350W,显存为24G,当前正在运行一个任务,性能占用为14%。
Sun Aug 25 14:44:25 2024
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.60.02 Driver Version: 510.60.02 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:3B:00.0 Off | N/A |
| 0% 49C P2 112W / 350W | 1639MiB / 24576MiB | 14% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 723829 C python 1637MiB |
+-----------------------------------------------------------------------------
但是nvidia-smi
只显示你运行命令时刻的GPU状态,你可以使用watch
获得显卡每个时刻的状态:
# 这里的1 是 每一秒刷新的意思
watch -n 1 nvidia-smi
2. gpustate
你也可以使用gpustate
命令来获取简洁的状态,也可以配合watch
命令获得长时间的状态。
# 首先得安装gpustate
pip intall gpustate
gpustate
AMP Sun Aug 25 14:49:10 2024 510.60.02
[0] NVIDIA GeForce RTX 3090 | 44°C, 7 % | 1639 / 24576 MB | chaofan(1637M)
3. nvitop
我最喜欢的则是nvitop
,他的输出类似于nvidia-smi
,但输出信息更丰富,会出来一个类似top
命令的窗口,自动更新当前GPU+CPU状态。
# 首先得安装
pip install nvitop