关于CUDA out of memory的解决方案
1 问题描述
很多时候,我们在开始进行深度学习训练的时候,经常出现存储不够的信息,
诸如这样:
你可能会认为是自己的显卡显存不够,那就再掏钱去买个更大的显卡吧。
我的显卡是titan xp 12g显存。
其实对于绝大多数的网络都是够用的,那么这个问题该如何解决哪?
2 问题的解决
1 如果你的显存真的比较小
我的显卡是titan xp12g显存,举个例子我在训练模型时,设置的batch_size==16,也就是说,我可以同时处理16副图,我占用的显存是5.82个g,如果你的显存比我的小,或者你处理其他的图片占用的更大,那么,怎
么办哪?
你可以:
修改:batch_size==4
请尽量还是选用2的n次方来设置参数。这是深度学习二进制的本质。
修改后,你的显存占用会从5.82g降到0.81g,就算你的显存比较小,总有一天,你会满足自己的需求。
2 如果你的cpu比较差
我使用的是2017年的thinkpad x1carobon笔记本,外界显卡坞带titan xp显卡。
我的cpu是i7-7600,已经过了几年了,并不好,但说不定你比我的cpu更差,那么怎么办哪?
你可以:
修改:workers==1
很多模型训练的时候,默认的线程也就是workers==8,也许你的cpu无法承受8线程同时训练,那么你可以把这个并行线程数降下来,例如我上面的,将线程数降为1,那么又可以愉快的玩耍了,但是,你能承受本来我有i7的cpu,本来我有12g的显存,却不能完全使用,还要承受八倍奉还么!!
3 一个隐藏的设置
这个发现,我尚未在其他csdn的博客上见到过,或者我没搜到。
应该有很多像我一样的偏执狂。天天盯着存储看,c盘没多一点点,就开始删除垃圾,删除缓存,删除windows更新备份,删除windows注销文件(2个g),删除windows系统补丁,删除c盘之外其他盘的虚拟内存,后者把虚拟内存转移到其他盘!因为,我们的c盘真的不堪重负。。。
后面有时间,我再谈谈如何给c盘自由加容吧。
可能,就像我一样,我举个例子,我把项目放在了F盘,那么我把除c盘之外,其他盘的虚拟缓存给删掉了,导致F盘的虚拟内存为0,也会出现这个问题。
那么,该怎么办哪?
你可以:
修改:我的电脑——属性——高级系统设置——设置——虚拟内存
为了跟我的显存保持一致,我就把虚拟内存也设置为12g吧应该是1024x12.。
懒得修改了,一切OK!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
django rest framework 实现用户登录认证详解
这篇文章主要介绍了django rest framework 实现用户登录认证详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-07-07python按列索引提取文件夹内所有excel指定列汇总(示例代码)
这篇文章主要介绍了python按列索引提取文件夹内所有excel指定列汇总,本文通过多种场景分析结合示例代码给大家介绍的非常详细,需要的朋友可以参考下2022-03-03Python利用pyodbc库将文件信息插入Access数据库
在日常编程工作中,我们经常需要处理文件和文件夹,所以本文将介绍如何使用Python编程语言和wxPython库创建一个简单的文件浏览器界面,使用户能够选择文件夹并将文件信息插入到Access数据库中,需要的可以参考下2023-08-08Python IDLE 错误:IDLE''''s subprocess didn''''t make connectio
这篇文章主要介绍了Python IDLE 错误:IDLE's subprocess didn't make connection 的解决方案的相关资料,需要的朋友可以参考下2017-02-02
最新评论