可能存在的原因

  1. 每每轮到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。

  1. num_worker设置得大,好处是寻batch速度快,因为下一轮迭代的batch很可能在上一轮/上上一轮…迭代时已经加载好了。坏处是内存开销大,也加重了CPU负担(worker加载数据到RAM的进程是CPU复制的嘛)。num_workers的经验设置值是自己电脑/服务器的CPU核心数,如果CPU很强、RAM也很充足,就可以设置得更大些。

  2. 如果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显卡 爆显存调试相关推荐

  1. 显卡内存和计算机内存,显卡爆显存和满显存有什么区别

    显卡"爆显存"就是指显卡的本地显存不够用了,显卡需要去借用内存;而"满显存"是指显存的使用量接近全部的本地显存容量. 因为现在的主流显存都是GDDR5,速度达到 ...

  2. python吃显卡还是内存不足_解决Pytorch 训练与测试时爆显存(out of memory)的问题

    Pytorch 训练时有时候会因为加载的东西过多而爆显存,有些时候这种情况还可以使用cuda的清理技术进行修整,当然如果模型实在太大,那也没办法. 使用torch.cuda.empty_cache() ...

  3. 计算机应用专业需要6g显卡吗,4G、6G、8G显卡的显存容量有什么用?来看科普

    在购买显卡的时候,我们经常能看到一些显卡的名称面会标注一个容量,有的是4G,有的是6G,还有的是8G,而这些容量其实就是我们常说的显存容量. 在选购显卡的时候,我们要先考虑核心类型,接下来是频率,然后 ...

  4. Pytorch模型测试时显存一直上升导致爆显存

    问题描述 首先说明: 由于我的测试集很大, 因此需要对测试集进行分批次推理. 在写代码的时候发现进行训练的时候大概显存只占用了2GB左右, 而且训练过程中显存占用量也基本上是不变的. 而在测试的时候, ...

  5. RuntimeError: CUDA out of memory. Tried to allocate 14.00 MiB linux跑深度学习爆显存问题

    出现这条信息就说明当前环境中可分配给跑训练的显存不够了,有两种可能原因: 1.显卡的显存确实太小,训练网络的要求高于这张显卡.解决办法只有换大显存显卡. 2.系统的进程太多,有可能跑之前调试的代码进程 ...

  6. RuntimeError: CUDA out of memory. Tried to allocate ... MiB Pytorch模型测试时显存一直上升导致爆显存

    问题描述 由于测试集很大,出现了CUDA out of memory错误. 在写代码的时候发现进行训练的时候大概显存只占用了2GB左右,而且训练过程中显存占用量也基本上是不变的.而在测试的时候,发现显 ...

  7. 【踩坑】深度学习 Torch 爆显存的原因(显存不够用等问题)

    简介 在深度学习过程中,使用显卡的情况主要有两个过程:一.网络模型训练过程:二.网络模型测试过程.在这两个过程中,都可能存在爆显存或者爆内存的情况.在编程过程中,有很多同学应该都遇到这种情况,本文提供 ...

  8. Pytorch 训练与测试时爆显存(cuda out of memory)的终极解决方案,使用cpu(勿喷)

    Pytorch 训练与测试时爆显存(cuda out of memory)的终极解决方案,使用cpu(勿喷) 参见了很多方法,都没有用. 简单点,直接把gpu设成-1

  9. Pytorch---训练与测试时爆显存(out of memory)的一个解决方案(torch.cuda.empty_cache())

    Pytorch 训练时有时候会因为加载的东西过多而爆显存,有些时候这种情况还可以使用cuda的清理技术进行修整,当然如果模型实在太大,那也没办法. 使用torch.cuda.empty_cache() ...

最新文章

  1. 使用Python和OpenCV对轮廓进行排序(从左到右,自上而下)
  2. SQL Server几个常用Date函数(二)
  3. profile之springboot
  4. jQuery.protoype.xxx=function(){}
  5. mysql平台workb_MySQL:MySQL Workbench的使用
  6. Asynchronous JS: Callbacks, Listeners, Control Flow Libs and Promises
  7. 富爸爸系列之三富爸爸投资指南
  8. 32位linux时间戳,32位unix时间戳哪一年用尽
  9. WebService究竟是什么?
  10. HTML——校友会(bootstrap)
  11. 计算机主机清洁维护,电脑主机日常维护保养
  12. *计算机二级MS office 注意事项*
  13. Ps快捷切图psd文件及将psd内容转化为CSS样式工具(PxCook)
  14. SpringBoot库存管理系统,拿来学习真香
  15. Unity 触发检测 碰撞检测
  16. java中bean的作用域有哪些_Spring中Bean的5种作用域scope详解
  17. 计算机网络----宽带速度kbps、KB、Mbps
  18. 计算机排第三!新增的工学硕士博士学位
  19. 草根创业回忆录一: 踏出了第一步的时候...
  20. 数字图像处理 第五章 图像变换

热门文章

  1. 常用的大功率电阻有哪些,电阻功率降额设计要注意什么
  2. python自学爬虫要多久_自学python爬虫需要多久
  3. 【Qt学习笔记】包含头文件确报错 does not name a type
  4. 什么是开环控制?什么是闭环控制?它们有什么区别?
  5. itpt_TCPL 第四章:函数和程序结构
  6. 蓝墨云功能扩展之试卷导出WORD文档
  7. 今天凌晨十二点和明天凌晨十二点的时间戳
  8. 【风马一族_php】常用的语句
  9. minigui 交叉编译
  10. 如何安装最纯净的win7系统