3090显卡 爆显存调试
可能存在的原因
- 每每轮到dataloader加载数据时:
for epoch in range(start_epoch, end_epoch):for i, data in enumerate(trainloader):
dataloader一次性创建num_worker个worker,(也可以说dataloader一次性创建num_worker个工作进程,worker也是普通的工作进程),
并用batch_sampler将指定batch分配给指定worker,worker将它负责的batch加载进RAM。
然后,dataloader从RAM中找本轮迭代要用的batch,如果找到了,就使用。如果没找到,就要num_worker个worker继续加载batch到内存,直到dataloader在RAM中找到目标batch。一般情况下都是能找到的,因为batch_sampler指定batch时当然优先指定本轮要用的batch。
num_worker设置得大,好处是寻batch速度快,因为下一轮迭代的batch很可能在上一轮/上上一轮…迭代时已经加载好了。坏处是内存开销大,也加重了CPU负担(worker加载数据到RAM的进程是CPU复制的嘛)。num_workers的经验设置值是自己电脑/服务器的CPU核心数,如果CPU很强、RAM也很充足,就可以设置得更大些。
如果num_worker设为0,意味着每一轮迭代时,dataloader不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。缺点当然是速度更慢。
原因确认:
1、显卡是两张3090,24*2的显存,我之前内存大小为16G,加到32G,能调大batch了,而且内存占用也吃不满30%左右,但是显存还是跑不满,所以继续加内存到64G,现在显存能够几乎吃满。但是内存占用只有18%了。我就不是很清楚明明是内存的问题,而且内存有空间的,就是报显存分配不足的错误,无法理解。
2、num——worker也需要调整,加到64G内存之后num_worker调整为4,显存占用上去了,CPU占用下去了,之前CPU占用和心电图一样,现在稳定在28%左右。
3、evaluate()步骤中,使用torch.no_grad(),可以降低eval过程中对val数据集对模型的占用,避免爆显存。
3090显卡 爆显存调试相关推荐
- 显卡内存和计算机内存,显卡爆显存和满显存有什么区别
显卡"爆显存"就是指显卡的本地显存不够用了,显卡需要去借用内存;而"满显存"是指显存的使用量接近全部的本地显存容量. 因为现在的主流显存都是GDDR5,速度达到 ...
- python吃显卡还是内存不足_解决Pytorch 训练与测试时爆显存(out of memory)的问题
Pytorch 训练时有时候会因为加载的东西过多而爆显存,有些时候这种情况还可以使用cuda的清理技术进行修整,当然如果模型实在太大,那也没办法. 使用torch.cuda.empty_cache() ...
- 计算机应用专业需要6g显卡吗,4G、6G、8G显卡的显存容量有什么用?来看科普
在购买显卡的时候,我们经常能看到一些显卡的名称面会标注一个容量,有的是4G,有的是6G,还有的是8G,而这些容量其实就是我们常说的显存容量. 在选购显卡的时候,我们要先考虑核心类型,接下来是频率,然后 ...
- Pytorch模型测试时显存一直上升导致爆显存
问题描述 首先说明: 由于我的测试集很大, 因此需要对测试集进行分批次推理. 在写代码的时候发现进行训练的时候大概显存只占用了2GB左右, 而且训练过程中显存占用量也基本上是不变的. 而在测试的时候, ...
- RuntimeError: CUDA out of memory. Tried to allocate 14.00 MiB linux跑深度学习爆显存问题
出现这条信息就说明当前环境中可分配给跑训练的显存不够了,有两种可能原因: 1.显卡的显存确实太小,训练网络的要求高于这张显卡.解决办法只有换大显存显卡. 2.系统的进程太多,有可能跑之前调试的代码进程 ...
- RuntimeError: CUDA out of memory. Tried to allocate ... MiB Pytorch模型测试时显存一直上升导致爆显存
问题描述 由于测试集很大,出现了CUDA out of memory错误. 在写代码的时候发现进行训练的时候大概显存只占用了2GB左右,而且训练过程中显存占用量也基本上是不变的.而在测试的时候,发现显 ...
- 【踩坑】深度学习 Torch 爆显存的原因(显存不够用等问题)
简介 在深度学习过程中,使用显卡的情况主要有两个过程:一.网络模型训练过程:二.网络模型测试过程.在这两个过程中,都可能存在爆显存或者爆内存的情况.在编程过程中,有很多同学应该都遇到这种情况,本文提供 ...
- Pytorch 训练与测试时爆显存(cuda out of memory)的终极解决方案,使用cpu(勿喷)
Pytorch 训练与测试时爆显存(cuda out of memory)的终极解决方案,使用cpu(勿喷) 参见了很多方法,都没有用. 简单点,直接把gpu设成-1
- Pytorch---训练与测试时爆显存(out of memory)的一个解决方案(torch.cuda.empty_cache())
Pytorch 训练时有时候会因为加载的东西过多而爆显存,有些时候这种情况还可以使用cuda的清理技术进行修整,当然如果模型实在太大,那也没办法. 使用torch.cuda.empty_cache() ...
最新文章
- 使用Python和OpenCV对轮廓进行排序(从左到右,自上而下)
- SQL Server几个常用Date函数(二)
- profile之springboot
- jQuery.protoype.xxx=function(){}
- mysql平台workb_MySQL:MySQL Workbench的使用
- Asynchronous JS: Callbacks, Listeners, Control Flow Libs and Promises
- 富爸爸系列之三富爸爸投资指南
- 32位linux时间戳,32位unix时间戳哪一年用尽
- WebService究竟是什么?
- HTML——校友会(bootstrap)
- 计算机主机清洁维护,电脑主机日常维护保养
- *计算机二级MS office 注意事项*
- Ps快捷切图psd文件及将psd内容转化为CSS样式工具(PxCook)
- SpringBoot库存管理系统,拿来学习真香
- Unity 触发检测 碰撞检测
- java中bean的作用域有哪些_Spring中Bean的5种作用域scope详解
- 计算机网络----宽带速度kbps、KB、Mbps
- 计算机排第三!新增的工学硕士博士学位
- 草根创业回忆录一: 踏出了第一步的时候...
- 数字图像处理 第五章 图像变换