【小技巧-显卡篇】如何查看显卡占用的情况?
-
1、如何看显卡占用的情况?
通过终端执行 nvidia-smi 命令可以查看显卡的情况,可以查看显卡功耗、显存占用等情况。
root@I15b96311d0280127d:~# nvidia-smi Mon Jan 11 13:42:18 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 460.27.04 Driver Version: 460.27.04 CUDA Version: 11.2 | |-------------------------------+----------------------+----------------------+ | 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 GeForce RTX 3090 On | 00000000:02:00.0 Off | N/A | | 63% 55C P2 298W / 370W | 23997MiB / 24268MiB | 62% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| +-----------------------------------------------------------------------------
因为实例均为 Docker 容器,因容器 PID 隔离的限制使用 nvidia-smi 会看不到进程。
在终端中执行 py3smi 命令可以查看到是否有进程正在使用显卡。
root@I15b96311d0280127d:~# py3smi Mon Jan 11 13:43:00 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI Driver Version: 460.27.04 | +---------------------------------+---------------------+---------------------+ | GPU Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | +=================================+=====================+=====================+ | 0 63% 55C 2 284W / 370W | 23997MiB / 24268MiB | 80% Default | +---------------------------------+---------------------+---------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU Owner PID Uptime Process Name Usage | +=============================================================================+ | 0 ??? 10494 23995MiB | +-----------------------------------------------------------------------------+
2、训练时 GPU 利用率上不去?
在训练过程中查看显卡的使用率,发现核心利用率和显卡功耗低,没有完全利用显卡。
这种情况有可能是每一次训练的步骤中,除了使用 GPU 外,还有大部分时间消耗在了 CPU,造成了 GPU 利用率成周期变化。
解决利用率的问题需要改进代码,可以参考夕小瑶的 训练效率低?GPU利用率上不去? 的这篇文章。
3、CUDA、CUDNN 版本是多少?
使用 nvidia-smi 所查看到的 CUDA Version 为当前驱动支持的版本,不代表实例已安装的版本。
具体版本以创建实例时选择的官方镜像版本的为准。
# 查看 CUDA 版本 root@I15b96311d0280127d:~# nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Feb_14_21:12:58_PST_2021 Cuda compilation tools, release 11.2, V11.2.152 Build cuda_11.2.r11.2/compiler.29618528_0 # 查看 CUDNN 版本 root@I15b96311d0280127d:~# dpkg -l | grep libcudnn | awk '{print $2}' libcudnn8 libcudnn8-dev # 查看 CUDNN 位置 root@I15b96311d0280127d:~# dpkg -L libcudnn8 | grep so /usr/lib/x86_64-linux-gnu/libcudnn.so.8.1.1 ...
4、在 RTX 30 系列显卡上开始训练会卡住?
查看库所使用的 CUDA 版本是否低于 11.0。
RTX 3000 系列显卡最低要求 CUDA 11 及以上的版本,使用低于 11 的版本会造成进程卡住。