pytorch OutOfMemoryError

news2024/12/26 9:27:12

torch.cuda.OutOfMemoryError

 before:

self.memory = deque(maxlen=50000)

after:

 self.memory = deque(maxlen=500)

ok....

pytorch模型提示超出内存cuda runtime error(2): out of memory - pytorch中文网

看到这个提示,表示您的GPU内存不足。由于我们经常在PyTorch中处理大量数据,因此很小的错误可能会迅速导致程序耗尽所有GPU; 好的事,这些情况下的修复通常很简单。这里有几个常见检查事项包括:

一、不要在循环训练中累积历史记录。

默认情况下,涉及需要求导/梯度gradients变量的计算将保存在内存中。计算中避免使用这些变量,例如在跟踪统计数据时,这些变量在循环训练中将超出你内存。相反,您应该分离变量或访问其基础数据。

有时,当可微分变量可能发生时,它可能并不明显。考虑以下循环训练(从源代码删减):

total_loss = 0
for i in range(10000):
    optimizer.zero_grad()
    output = model(input)
    loss = criterion(output)
    loss.backward()
    optimizer.step()
    total_loss += loss

在这里,total_loss你的循环训练中积累了历史,因为它loss是一个具有autograd历史的可微变量。你可以通过编写total_loss += float(loss)来解决这个问题。

这个问题的其他例子: 1。

二、释放你不需要的张量和变量。

如果将一个张量或变量分配给本地,Python将不会释放,直到本地超出范围。你可以通过使用del x这样的代码释放。同样,如果将一个张量或变量赋值给对象的成员变量,它将不会释放,直到该对象超出范围。如果你释放了你不需要的变量,内存收益率会提升很多。

当地人的范围可能比你想象的要大。例如:

for i in range(5):
    intermediate = f(input[i])
    result += g(intermediate)
output = h(result)
return output

在这里,intermediate即使在h执行时依然存在,因为它在循环结束后没有释放。你使用完它以后应该使用del intermediate释放它。

三、不要在太大的序列上运行RNN。

通过RNN反向传播所需的内存量与RNN的长度成线性关系; 因此,如果尝试向RNN提供一个时间太长的序列,则会耗尽内存。

这个现象的技术术语是基于时间的反向传播,关于如何实现截断的BPTT有很多参考资料,包括单词language model example; 截断由本论坛帖子中repackage描述的函数处理 。

四、不要使用太大的线性图层。

线性图层nn.Linear(m, n)使用O(nm)内存:也就是说,权重的内存需求与特征的数量成正比。通过这种方式来超出你的内存是非常容易的(并且记住你至少需要两倍的权重,因为你还需要存储梯度。)


原创文章,转载请注明 :pytorch模型提示超出内存cuda runtime error(2): out of memory - pytorch中文网
原文出处: https://ptorch.com/news/160.html
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做外贸有没有好的软件?

在外贸电商行业中,邮件营销是非常重要的一种营销方式之一。除了性价比高,他还能对目标客户进行精准营销。但是,对于刚开始做的公司来讲,不注意方法和细节也难收获到理想的营销效果。 一、问题 1)不管理邮箱联系人 只…

13.Isaac教程--模型制作

模型制作 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 该软件包演示了具有软件定义装配工作流程的工厂场景。 在模拟工厂环境中,多个 AMR 在装配站之间运输材料,而每个装配站的机械臂拾取所需材料并将其放置在对接的 …

自定义el-pagination分页

项目场景: 提示:这里简述项目相关背景: vue项目使用el-ui库,由于原本的el-pagination显示字段和样式无法满足其他项目的设计要求,需要进行改动 el-ui官网: 改动后: 解决方案: 1…

golang字符串常见功能

文章目录1. 获取字符串长度2. 是否一xx开头3. 是否以xx结尾4. 是否包含5. 变大写6. 变小写7. 去两边8. 替换9. 分割10. 拼接11. string转换为int12. int转换为string13. 字符串和字节切片14. 字符串和rune切片15. string和字符1. 获取字符串长度 2. 是否一xx开头 3. 是否以xx结…

抖音seo优化排名

武汉微驱动科技有限公司 你有没有想过,同样是运营抖音,为什么别人的视频总是排在你的前面?你死磕创意,拍摄、剪辑,甚至比同行更投入,为什么他的收益总是高于你? 当下抖音搜索引擎的用户数量已经…

Nginx与LUA(1)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~HTTP服务器是相对于HTTP客户端来说的——HTTP客户端就是各种常用的「浏览器」,如IE、chrome、微信浏览器。当浏览器通过URL地址栏访问一个Web页面时&a…

【C++】STL六大组件之一——适配器(adapters)

目录1. 前言2. 初始适配器2.1 适配器的概念2.2 适配器的分类3. 容器适配器(container adapters)3.1 认识deque3.1.1 逻辑结构3.1.2 物理结构3.1.3 deque的迭代器3.1.4 选择deque做stack/queue底层容器的原因3.2 stack3.3 queue3.4 另一种容器适配器 ——…

阿里云计算巢 x GBase GCDW:自动化部署云原生数据仓库

近日,阿里云计算巢与天津南大通用数据技术股份有限公司(以下简称:GBASE)合作,双方融合各自技术优势,助力企业用户实现云上数据仓库的自动化部署,让用户在云端获取数据仓库服务“更简单”&#x…

【ESP32+freeRTOS学习笔记-(六)软件定时器】

目录1、软件定时器概念2、软件定时器的运行机制2.1 组成2.2 创建2.3 运行3、软件定时器的属性和状态3.1 定时器的周期3.2 定时器的类型3.3 定时器的状态4、软件定时器的回调函数原型5、定时器的使用5.1 创建定时器xTimeCreate()5.2 启动定时器xTimerStart()5.3 终止定时器xTime…

IPC进程间通信-system V 共享内存

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录一、共享内存原理二、共享内存的建立原理三、共享内存的创建四、共享内存的删除五、共享内存挂接到自己的地址空间六、从进程地址空间去掉与…

快过年了用Python抢红包

快过年了,刚刚收到了两个消息,一个好消息,一个坏消息。 先说好消息,好消息就是微信群里即将有人要发红包, 坏消息是我抢不上! 难道就这么放弃了吗?那就只能试试能不能通过编程的方式实现自动化…

基于轻量级YOLOV5+BIFPN的苹果瑕疵检测识别分析系统

BIFPN是一种比较经典有效的特征融合手段,在很多检测模型中都有集成应用,实际表现也验证了BIFPN的有效性,这里并不是要探讨BIFPN的原理内容,而是想集成这项技术,提升原有模型的性能表现,在我之前的一些文章中…

排序算法之冒泡排序

一般学习过编程的人都知道,排序算法有很多种,包括直接选择排序、直接插入排序、计数排序、快速排序、归并排序、冒泡排序等,在我看来,以上六种排序算法是必须要掌握的,今天,我们先来讲解一下冒泡排序算法&a…

Java高手速成 | 新增类Record的工作实例

01、什么是Record? Record 是Java新增的库类,在Java 14和Java 15中以预览(preview)形式公布。Record类用来自动生成对定义数据进行创建、设置、访问以及比较等代码,所以又被称作数据类(data class)。在一…

初级开发者福音:手把手教你实现数字滚动效果~

文章目录一、前言二、背景知识三、实现方案Step 1:分析需求Step 2:实现单个数字的滚动效果Step 3:组件接口设计Step 4:完善组件一、前言 前端数字滚动显示的场景很多,比如抽奖的时候,营造一种马上公布中奖…

[MySQL从入门到实战环境部署](超详细版)

MySQL从入门到实战环境部署1.部署CentOS1.1部署CenOS虚拟机步骤(1)基于VirtualBox(2)下载CentOS1.2环境部署过程2.部署MySQL1.部署CentOS 1.1部署CenOS虚拟机步骤 (1)基于VirtualBox 下载网址&#xff1…

Docker Compose:Docker Compose部署nacos初始化MySQL

Docker Compose:Docker Compose部署nacos初始化MySQL找初始化sql文件nacos初始化mysql-schema.sql文件内容docker-compose.yml上传到挂载目录运行docker-compose.yml访问nacos找初始化sql文件 先去官网下载nacos安装包 官方github地址:https://github.…

Centos7安装opengauss

安装包下载地址:https://www.opengauss.org/zh/download/注:本文介绍的是轻量版安装先创建一个系统用户(opengauss数据库不允许使用 root 用户安装)创建用户useradd omm设置密码passwd omm将安装包拷贝并解压到用户家目录 ~/openG…

linux-云服务器数据盘挂载失败导致进入维护模式

已经在华为云、AWS上面吃过这个亏了,老这样可不好,心怦怦跳的。 华为云是由于服务器升级配置后重启,数据盘名称变化导致进入维护模式。AWS则是由于重启后没有挂载上数据盘,手动编辑/etc/fstab文件错误导致进入维护模式。 究其原…

2022年航空发动机行业研究报告

第一章 行业概况 航空发动机制造指主要用来产生拉力或推力使飞机前进的发动机设备。除了产生前进力外,还可以为飞机上的用电设备提供电力,为空调设备等用气设备提供气源。航空发动机制造产业链包括原材料研发、零部件生产制造、分系统和整机制造。 原材…