旗木五五开e 2024-05-07 20:28 采纳率: 75%
浏览 19
已结题

#深度学习显存# #内存# 报错torch.cuda.0ut0fMemoryError:CUDA out of memory

问题遇到的现象和发生背景

电脑1配置:RTX2080TI,显存11GB,内存64GB,cuda版本12.3,batchsize=4能运行
电脑2配置:RTX4070super,显存12GB,内存16GB,cuda版本12.4,batchsize=4报错,出现torch.cuda.0ut0fMemoryError:CUDA out of memory.Tried to allocate 128.00 MiB.GPU 0 has a total capacty of 11.99 GiB of which 5.63 GiB is free.0f the allocated memory 5.07 GiB is allocated by Py......
电脑1GPU信息

img


电脑2GPU信息

img

操作环境、软件版本等信息

都使用pycharm,python3.8,环境相同

尝试过的解决方法

缩小batchsize可以运行

我想要达到的结果

同样batchsize=4,为什么12GB显存报错,11GB可以运行呢?跟内存大小有关系吗?怎么解决啊,求帮助,感激不尽。

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-07 20:28
    关注

    引自免费微信小程序:皆我百晓生

    在处理深度学习模型时,显存不足的问题通常是因为模型所需的内存超过了分配给GPU的可用空间。从您提供的信息来看,两台电脑的主要区别在于显存容量(11GB vs 12GB)和CUDA版本(12.3 vs 12.4)。然而,这并不是导致问题的根本原因。实际上,问题可能出在其他方面。

    首先,让我们分析一下两台电脑上的系统进程占用情况。通过nvidia-smi命令输出的信息可以看到,两个系统的GPU内存使用率都不高。这意味着大部分的显存并没有被深度学习任务占用,而是被其他应用程序占用了。在电脑2上,尽管总显存比电脑1多1GB,但可用的显存却少于电脑1。这是因为电脑2上有更多后台进程正在消耗GPU资源。

    为了解决这个问题,您可以尝试以下步骤:

    1. 关闭不必要的后台进程:在开始菜单搜索栏输入"任务管理器",查看并关闭与深度学习无关的GPU密集型应用。

    2. 调整PyTorch的内存管理策略:在您的Python脚本中加入以下代码,来优化内存管理:

      import torch
      torch.backends.cudnn.benchmark = True
      torch.cuda.empty_cache()
      

      torch.backends.cudnn.benchmark = True 可以让CuDNN选择最佳算法进行卷积运算,提高效率。 torch.cuda.empty_cache() 清空缓存,释放已分配但未使用的GPU内存。

    3. 如果仍然存在问题,考虑降低Batch Size:即使在硬件配置更高的电脑2上,Batch Size可能还是过大,导致显存溢出。将Batch Size减小可能会解决问题,比如从4降到2或更低,然后逐步增加直到找到可运行的最大值。

    4. 确保所有库(包括PyTorch、CUDA、cuDNN等)都是最新版本,并且兼容。有时旧版本的库可能会导致内存管理问题。

    5. 如果依然存在内存不足的问题,可以考虑升级硬件,例如增加更多的RAM,或者换一个具有更大显存的GPU。

    6. 使用混合精度训练(Mixed Precision Training):对于某些模型,尤其是大型模型,使用半精度浮点数(fp16)而不是单精度浮点数(fp32)可以在不牺牲太多准确性的前提下显著减少内存需求。要启用混合精度,可以参考PyTorch官方文档中的教程:https://pytorch.org/docs/stable/notes/cuda.html#mixed-precision-training

    如果您已经尝试了上述所有建议但仍遇到问题,可能需要检查您的模型结构、数据预处理以及模型训练过程是否有内存泄漏或其他可能导致内存使用过高的情况。确保模型在每个批次的训练过程中不会累积大量中间结果,可以定期清理不再需要的张量。此外,确保您在加载数据集时没有一次性加载整个数据集到内存中,而是采用迭代加载的方式来减少内存占用。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月24日
  • 已采纳回答 5月16日
  • 修改了问题 5月7日
  • 创建了问题 5月7日

悬赏问题

  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码