【607】GPU、显存 查看与设置

参考:Linux查看GPU信息和使用情况

参考:Linux查看GPU信息和使用情况

参考:基于tensorflow的keras中GPU的使用

参考:keras实现多GPU或指定GPU的使用介绍

参考:【推荐】科普帖:深度学习中GPU和显存分析


  今天开始在 GPU 上面训练深度学习模型,首先遇到的问题就是 kernel dead,究其原因是因为 GPU 被占用,因此需要指定 GPU 来运行,而对于显存的理解,正常来说应该是图形显示的用处,但是在深度学习训练的时候,显存就类似于主板的内存,没有足够大的显存就类似于主板内存太小所导致的一系列问题。

  虽然 keras 代码可以自动识别 GPU,存在被占用的情况,因此需要自己设置 GPU,首先是查看 GPU 以及 显存 使用情况。

  在 Terminal 中输入 nvidia-smi,如下所示:

(py3.6_tensorflow2.0) (base) [sankuai@xh-deliveryai-mapui01 unet-keras]$ nvidia-smi
Tue Jul 13 17:08:00 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.39       Driver Version: 418.39       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| 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 M60           On   | 00000000:00:15.0 Off |                    0 |
| 42%   56C    P0    50W / 120W |   7333MiB /  7618MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla M60           On   | 00000000:00:16.0 Off |                    0 |
| 44%   62C    P0   122W / 120W |   4236MiB /  7618MiB |    100%      Default |
+-------------------------------+----------------------+----------------------+
|   2  Tesla M60           On   | 00000000:00:17.0 Off |                    0 |
| 34%   52C    P0    48W / 120W |     80MiB /  7618MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  Tesla M60           On   | 00000000:00:18.0 Off |                    0 |
| 36%   40C    P0    43W / 120W |     80MiB /  7618MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0     35317      C   ...da3/envs/py3.6_tensorflow2.0/bin/python  7322MiB |
|    1     35317      C   ...da3/envs/py3.6_tensorflow2.0/bin/python    69MiB |
|    1     64279      C   python                                      4153MiB |
|    2     35317      C   ...da3/envs/py3.6_tensorflow2.0/bin/python    69MiB |
|    3     35317      C   ...da3/envs/py3.6_tensorflow2.0/bin/python    69MiB |
+-----------------------------------------------------------------------------+

  界面解读(并非针对本图,原链接

  • GPU : GPU编号,【笔者目前使用的是双卡,编号为0,1】;
  • Name:GPU型号,这里为GeForce GTX 1080 Ti;
  • Persistence-M :持续模式状态,如果为on,能耗大但新的GPU启动时耗时短,这里为off;
  • Fan : 风扇转速,取值为0%~100%;
  • Temp : 温度,单位是℃;
  • Perf : 显卡性能状态,取值为P0~P12,其中P0表示状态最大性能{未工作},P12表示状态最小性能{达到最大工作限度};
  • Pwe:Usage/Cap : 能耗,71w表示当前能耗,250w表示满负荷能耗;
  • Bus-Id : 涉及GPU总线的东西,domain:bus:device.function;
  • Disp.A : Display Active,表示GPU的显示是否初始化;
  • Memory-Usage : 显存使用情况, 11021M表示当前0号显卡使用大显存大小;11178M表示显卡大小;
  • Volatile GPU-Util : 表示GPU的实际利用率;
  • Uncorr. ECC:Error Correcting Code,错误检查与纠正;
  • Compute M:compute mode,计算模式。

  实时更新(可以修改数字,下面是 1s 更新一次)

watch -n 1 nvidia-smi

  设置可看见的方式,既可以选择想要被看到的 GPU:

  上图中的 GPU 0,显存大量被使用,GPU 1,GPU 被大量使用,因此只能选择 2,3,如下的代码所示:

os.environ["CUDA_VISIBLE_DEVICES"] = "2, 3"

  注意:一定要确保资源充足才能运行!!

原文地址:https://www.cnblogs.com/alex-bn-lee/p/15007448.html