【GPU显不足】

目录

 

0.环境配置

1.出现的问题

2.问题分析与解决

2.1问题分析

2.2解决方法

1)在.py文件中设置成自动增加申请的显存(首选)

2)减少batchsize,即减少了GPU内存分配需求

3)换个显存更大的GPU

4)重置输入图片尺寸,即通过减小图片的大小来减少对显存的消耗

5)如果网络中用到了RNN,可以使用swap_memory=True选项以减少其对显存的占用。

3.参考


0.环境配置

#环境
python 3.6
tensorflow-gpu 1.12
#模型
VGG-11 + Residual on Mnist with LR=0.001

1.出现的问题

Allocator (GPU_0_bfc) ran out of memory trying to allocate 1.53GiB.  Current allocation summary follows.

报错原因在于GPU显存不够用了,可以在运行过程通过命令nvidia-smi查看GPU的显存大小(16G)以及利用率(55%),退出用ctrl+C

【具体】

主要关心的参数为Memory-Usage,如下图所示,1块GPU的显存都被极大的占用了,但是GPU-Util(GPU利用率为55),那么说明后台有进程在消耗GPU资源。

命令行输入 fuser -v /dev/nvidia*,就会显示使用GPU的进程;把消耗资源的进程关闭即可:命令行输入 kill 进程号 ,再次显示GPU的使用情况(其实可以根据nvidia-smi显示的最下面那一栏就可以看出占用内存的编号

查看内存信息使用 free -m(约128G)

注意

最开始前面那一列是GPU相关信息 使用的是tesla显卡

中间那一列才是显存利用情况【已分配显存/可用总显存】,显存是16G的

最右边那列是GPU利用率

2.问题分析与解决

2.1问题分析

总的内存是128GiB,远高于1.53GiB。为什么还会报错误呢?因为出现这个问题得 时候,一般都是在用GPU跑大型得深度学习的程序,才会导致所需要的GPU内存不足,那这又是怎么回事呢?首先查看一下电脑显存,在终端输入nvidia-smi,看到如上界面:看到一块GPU的显存是15109MiB(约为16GiB),问题又来了,显存也比需要的1.53GiB大呀,怎么会提示这样的错误呢?网上查查主要有如下解决方法:

2.2解决方法

1)在.py文件中设置成自动增加申请的显存(首选)

如果没有设置允许tensorflow根据需要自动增加申请的显存,可以先尝试这个,看看用上单个GPU的所有显存能否解决。设置自动增长的代码见

py文件添加
os.environ['CUDA_VISIBLE_DEVICES']='5,6,7'
#其中当allow_soft_placement参数设置为True时,如果运算无法由GPU执行,那么TensorFlow会自动将它放到CPU上执行。
config = tf.ConfigProto(allow_soft_placement=True)
#另外可以在session这一块进行显存分配
config.gpu_options.allow_growth = True
session = tf.Session(config=config)


运行时多指定两个参数
#--num_clones:指定GPU 卡的数量。
#--ps_tasks:指定参数伺服器的数量。
python xx.py --num_clones=3  --ps_tasks=1 

2)减少batchsize,即减少了GPU内存分配需求

3)换个显存更大的GPU

4)重置输入图片尺寸,即通过减小图片的大小来减少对显存的消耗

5)如果网络中用到了RNN,可以使用swap_memory=True选项以减少其对显存的占用。

例如tf.nn.bidirectional_dynamic_rnn()方法就有这个参数。设置之后,tensorflow会将RNN前向运算产生但反向传播需要用到的tensor从GPU转移到CPU中(从显存转移到内存),这几乎不会甚至完全不会带来性能上的损失。

3.参考

https://blog.csdn.net/qq_35975447/article/details/106438644

https://blog.csdn.net/jidebingfeng/article/details/81557434

https://www.freesion.com/article/9789162136/

https://stackoverflow.com/questions/36927607/how-can-i-solve-ran-out-of-gpu-memory-in-tensorflow

https://www.pianshen.com/article/7605737462/

https://www.cnblogs.com/deep-learning-stacks/p/10741859.html  ###TF显存管理器背景知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静静喜欢大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值