文章来源 | 恒源云社区
原文地址 | 【小技巧-显卡篇】
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 的版本会造成进程卡住。