返回顶部
首页 > 资讯 > 精选 >基于CUDA out of memory的解决方法是什么
  • 360
分享到

基于CUDA out of memory的解决方法是什么

2023-07-05 04:07:00 360人浏览 泡泡鱼
摘要

今天小编给大家分享一下基于CUDA out of memory的解决方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收

今天小编给大家分享一下基于CUDA out of memory的解决方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    CUDA out of memory的解决

    我的输入样本维度是(1000,12,24,72),一开始我是这么输入数据的:

    trainer.train(x_train, t_train, x_val, t_val)

    发现必溢出,后来我取出其中400个样本输入:

    trainer.train(x_train[:400], t_train[:400], x_val, t_val)

    发现不溢出了,训练正常,然后我把400删掉,但没删冒号:

    trainer.train(x_train[:], t_train[:], x_val, t_val)

    竟然也没有溢出!!!虽然训练速度降了,但是也能正常训练,我不是很懂原理是啥,好神奇!

    但是样本量一大起来,即使用冒号法还是可能会溢出。比方说我后来把4000个样本作为x/t_train:

    >>>x_train.shape(4000,12,24,72)>>>t_train.shape(4000,24)>>>trainer.train(x_train[:], t_train[:], x_val, t_val)RuntimeError:CUDA out of memory...

    之所以说“可能”会溢出,是因为确实是有小概率能正常训练的,但是大部分情况还是会out of memory…

    再附上两个我昨天看到的两种不同的解决方案。

    一个是减少带梯度的中间变量(即非叶子节点)。简言之,能一行代码搞定的,尽量不要写成多行,即使写成多行,也要尽可能减少新变量的建立。

    另一个是在eval的时候,让所有的变量都不带梯度。只需要添加一行代码:

    with torch.no_grad():    outputs = Net_(inputs)

    在with语句里的所有变量requires_grad都是False。

    CUDA error: out of memory问题

    本人遇到的问题是在训练是正常,一到验证时就会出现cuda error: out of memory的问题

    解决思路溯寻

    首先就是考虑减少batch_size和num_worker,对于我的情况不奏效

    然后找到pin_memory发现是设置的True,改为false,仍旧不管用

    包括把

     # Empty GPU cache        if torch.cuda.is_available():            torch.cuda.empty_cache()

    放到报错位置的前后,不奏效

    后来再聚焦问题关键,是一到验证就会出问题,所以专门查攻略,我初步怀疑是因为验证没有参与反向传播,梯度累积,内存爆了,但当时代码中有with torch.no_grad(): ,所以并没有发现关键,知道看到别人里面 forWord是放在with torch.no_grad()后面的,所以最后

    with torch.no_grad():                # Forward pass                loss, np_probs, hv_logits = self.forward(images, targets)

    以上就是“基于CUDA out of memory的解决方法是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: 基于CUDA out of memory的解决方法是什么

    本文链接: https://lsjlt.com/news/349648.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • 基于CUDA out of memory的解决方法是什么
      今天小编给大家分享一下基于CUDA out of memory的解决方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
      99+
      2023-07-05
    • 粗暴解决CUDA out of memory的问题
      小渣渣复现大佬project发现GPU跑不动,出现如下报错: RuntimeError: CUDA out of memory. 看下来最简单粗暴方法就是减少batch_size...
      99+
      2024-04-02
    • 如何解决CUDA out of memory的问题
      小编给大家分享一下如何解决CUDA out of memory的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!复现大佬project发现GPU跑不动,出现如下...
      99+
      2023-06-15
    • 【ERROR】ORA-27102: out of memory 解决方法
      一、问题描述...
      99+
      2024-04-02
    • 基于SimpleFramework的Enterprise2.0解决方案是什么
      这篇文章给大家介绍基于SimpleFramework的Enterprise2.0解决方案是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一. 系统综述Simpleframework是基于 Intercepting-...
      99+
      2023-06-17
    • 基于Java递归算法的封装解决方法是什么
      本篇内容介绍了“基于Java递归算法的封装解决方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、递归算法1、概念简介递归算法的核心...
      99+
      2023-06-02
    • adb出现adb server is out of date时的解决的方法
      当出现"adb server is out of date"错误时,可以按照以下步骤解决问题:1. 打开命令行窗口或终端。2. 输入...
      99+
      2023-09-20
      adb
    • 基于flashback_scn的expdp导出方法是什么
      本篇内容介绍了“基于flashback_scn的expdp导出方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
      99+
      2024-04-02
    • Java中关于OOM的场景及解决方法是什么
      这期内容当中小编将会给大家带来有关Java中关于OOM的场景及解决方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。OOM for Heap=>例如:java.lang.OutOfMemory...
      99+
      2023-06-17
    • 基于maven install 没反应的解决方法
      今天遇到一个很坑的问题,打开eclipse工作空间里面的项目全部报错。执行maven 的任何命令都没有反应,控制台也没任何输出。点击maven update project 提示 the chosen operation is not cu...
      99+
      2023-05-31
      maven install mave
    • 基于Python搭建个人云盘的方法是什么
      这篇文章主要介绍“基于Python搭建个人云盘的方法是什么”,在日常操作中,相信很多人在基于Python搭建个人云盘的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于Python搭建个人云盘的方法...
      99+
      2023-06-16
    • 基于React封装一个组件的方法是什么
      这篇文章主要讲解了“基于React封装一个组件的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于React封装一个组件的方法是什么”吧!antd 是如何封装组件的仓库地址divi...
      99+
      2023-06-29
    • 关于Opensuse双系统的问题和解决方法是什么
      这篇文章将为大家详细讲解有关关于Opensuse双系统的问题和解决方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天干了件愚蠢的事情,稀里糊涂的就用openSUSE11.2修复自己...
      99+
      2023-06-16
    • golang pprof监控memory block mutex使用的方法是什么
      这篇文章主要介绍“golang pprof监控memory block mutex使用的方法是什么”,在日常操作中,相信很多人在golang pprof监控memory block ...
      99+
      2023-07-05
    • ASP.NET MVC基于异常处理的解决方法
      今天就跟大家聊聊有关ASP.NET MVC基于异常处理的解决方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。EntLib的异常处理应用块(Exception Handling Ap...
      99+
      2023-06-17
    • recorder.js基于Html5录音功能的实现方法是什么
      这篇文章主要讲解了“recorder.js基于Html5录音功能的实现方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“recorder.js基于Ht...
      99+
      2024-04-02
    • 基于Harbor构建docker私有仓库的方法是什么
      基于Harbor构建docker私有仓库的方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一.harbor简介基于镜像的复制策略;支持LDAP/AD域,...
      99+
      2023-06-21
    • 基于端口的虚拟主机测试方法是什么
      基于端口的虚拟主机测试方法是通过使用不同的端口号来模拟多个虚拟主机,在同一台物理主机上运行多个网站。以下是基于端口的虚拟主机测试方法...
      99+
      2023-08-22
      虚拟主机
    • 基于域名的虚拟主机配置方法是什么
      基于域名的虚拟主机配置方法是将多个域名指向同一台服务器,并根据不同的域名配置不同的网站或应用程序。以下是基于域名的虚拟主机配置方法的...
      99+
      2023-08-08
      虚拟主机
    • mysql乱码的解决方法是什么
      这期内容当中小编将会给大家带来有关mysql乱码的解决方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在CMD中查看编码设置:show variables like ...
      99+
      2023-06-04
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作