【已解决】torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 250.00 MiB.

😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun,视频号:AI-行者Sun
🎈
本文专栏:本文收录于《AI实战中的各种bug》系列专栏,相信一份耕耘一份收获,我会把日常学习中碰到的各种bug分享出来,不说废话,祝大家早日中稿cvpr
🤓 欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。 🖥
随时欢迎您跟我沟通,一起交流,一起成长、进步!

问题

报错:torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 250.00 MiB.
在这里插入图片描述

问题分析

这个错误信息表示在使用PyTorch框架进行深度学习训练时,GPU的内存不足。具体来说,程序试图分配250MB的内存,但GPU上只有124.81MB是空闲的,而且整个过程中已经使用了1.73GB的内存。
在这里插入图片描述
74378223 parameters, 74378207 gradients, 1446.2 GFLOPs,这能不报错吗 嘿嘿

其实我这里是故意将参数量设置特别大,主要为了出现这个问题,然后看怎么解决(也许有可能你的模型参数量就是这么大,后面也有解决办法)。

  1. 内存需求超过可用内存:程序尝试分配的内存超过了GPU当前可用的内存。
  2. 内存泄漏:程序可能存在内存泄漏,导致内存没有被正确释放。
  3. 多个进程占用内存:如果有多个进程同时使用GPU,它们占用的内存总和可能超出了GPU的容量。

解决步骤:

  1. 减少批量大小(Batch Size)
    • 减小批量大小可以减少每次迭代所需的内存量。
    • 在这里插入图片描述

在这里插入图片描述
batchsize我从16减小到1,就可以跑了,最简单的办法,但是batchsize影响训练的速度,workers影响读磁盘的速度,emm…改了肯定跑的慢
在这里插入图片描述但是改了,确实有用哈

  1. 优化模型结构

    • 检查模型是否可以简化或优化,以减少内存使用。

      在报错处、代码关键节点(一个epoch跑完…)插入以下代码(目的是定时清内存):

      import torch, gc
      
      gc.collect()
      torch.cuda.empty_cache()
      
      
  2. 代码优化(好用)

    在测试阶段和验证阶段前插入代码 with torch.no_grad()(目的是该段程序不计算参数梯度),如下:

def test(model,dataloader):
    model.eval()
    with torch.no_grad(): ###插在此处
        for batch in tqdm(dataloader):
			……
  1. 使用多个GPU
    • 如果有多个GPU可用,可以尝试将模型分布到多个GPU上。

    • 在这里插入图片描述

         --device   0,1,2,3
      

在这里插入图片描述

祝大家实验顺利,有效涨点~

以上是此问题报错原因的解决方法,欢迎评论区留言讨论是否能解决,如果有用欢迎点赞收藏文章,博主才有动力持续记录遇到的问题!!!

免费资料获取

关注博主公众号,获取更多粉丝福利。


torch.cuda.OutOfMemoryError: CUDA out of memory是指在使用PyTorch进行GPU计算时,出现了内存不足的错误。具体来说,在尝试分配810.00 MiB的内存时,由于已经分配了一部分内存并没有释放,导致了内存不足的情况。 解决这个问题的方法之一是调整max_split_size_mb参数,以避免内存碎片化。这个参数可以在代码中设置,具体的值可以根据情况进行调整。另外,可以查阅PyTorch的内存管理文档以及PYTORCH_CUDA_ALLOC_CONF文档,获取更多关于内存管理和配置的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [报错记录torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 90.00 MiB (GPU 0; 7.93 ...](https://blog.csdn.net/gongkeguo/article/details/127674524)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [成功解决torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 86.00 MiB (GPU 0; 2.00 ...](https://blog.csdn.net/qq_41185868/article/details/131015210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员行者孙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值