Pytorch训练深度强化学习时CPU内存占用一直在快速增加

news/2024/5/18 22:27:28 标签: pytorch, 人工智能, python, 强化学习

最近在用MATD3算法解决多机器人任务,但是在训练过程中,CPU内存一直在增加(注意,不是GPU显存)。我很头疼,以为是算法代码出了问题,导致了内存泄漏,折腾了1天也没解决。后来用memory_profiler对代码分析,才发现是这个函数占用的内存一直在增加:

 def store_transition()

说白了,就是经验池的存储函数,也就是因为一直往经验池里加数据导致内存增加。那为啥以前我没感觉到内存明显增加呢?想了想,可能是因为我最近修改了算法输入,把图像作为状态输入的一部分了,此外换了配置更好的电脑,程序运行速度也提升了。二者综合作用下,内存才会有明显增加,从而被我发现!(我真是脑子抽了,这么简单的问题一直没想到。。。。)

解决方法:终极方法就是换大内存。。。。一些小技巧的话也有,来看看ChatGPT是怎么说的:

  1. 降低图像分辨率

    减小输入图像的分辨率。较低分辨率的图像需要更少的内存。您可以在图像输入被神经网络处理之前使用图像缩放技术来减小图像尺寸。但要小心,不要将分辨率降低到丢失重要细节的程度,因为这可能会对学习产生负面影响。
  2. 使用灰度图像

    考虑将彩色图像转换为灰度图像。灰度图像比彩色图像需要的内存明显少。
  3. 限制重放缓冲区大小

    减小经验重放缓冲区的大小。这种方法将限制存储在内存中的数据量,但也可能影响代理的学习质量。您需要在缓冲区大小和训练稳定性之间取得平衡。
  4. 实施有限经验重放

    有限经验重放(PER)是一种技术,根据学习进展为经验分配不同的优先级。您可以使用PER来更有效地分配内存,将更高的优先级分配给对学习更有信息价值的经验。
  5. 使用状态预处理器

    实施状态预处理器,用于在将图像输入馈送到神经网络之前处理图像以提取相关信息并减小输入数据的维度。这可以帮助减小内存占用。
  6. 批处理

    不要一次处理重放缓冲区中的所有经验,而是执行批处理。这包括在每个训练迭代中抽样一个较小的经验批次。虽然这不会直接减小内存使用,但可以更有效地管理内存。
  7. 分布式计算

    如果可行,考虑使用具有多台计算机或GPU的分布式计算环境。分布式训练可以将内存使用分散到不同的资源中。
  8. 优化代码

    确保您的代码具有高效的内存使用。审查数据加载、处理和模型训练流程,以最小化内存消耗。避免不必要的内存复制,并使用生成器或数据流水线来实时加载和处理数据。
  9. 监控内存使用

    使用内存分析工具监控训练过程的内存使用情况。这有助于识别特定的内存热点或内存泄漏。
  10. 批量图像压缩

    如果可能,在将图像数据存储到重放缓冲区之前对图像数据进行压缩。压缩可以显着减小图像数据的内存占用。
  11. 增量训练

    而不是训练一定数量的剧集,考虑增量训练。将代理分成较小的块进行训练,并定期保存和清除经验重放缓冲区。这样,您可以更有效地控制内存使用。

 PS:前3点我觉得挺好用的,有其他好的手段也欢迎大家补充!


http://www.niftyadmin.cn/n/5103119.html

相关文章

react|redux状态管理

react|redux状态管理 参考官网:https://cn.redux-toolkit.js.org/tutorials/quick-start 状态管理使用流程 1、安装: npm install react-redux reduxjs/toolkit2、创建store.js 通过configureStore的hook对reducer(或slice)进行…

企业著作权数据的价值:探索企业作品著作权API的应用

引言 随着知识经济的崛起,企业的知识产权和著作权保护变得愈发重要。企业拥有大量的著作权作品,包括文档、软件、设计、创意和更多。这些作品代表了企业的创新和核心价值。为了更好地保护和管理这些资产,企业可以探索企业作品著作权API的应用…

PDF编辑阅读 PDF Expert v3.5.2

PDF Expert是由Readdle开发的一款专业的PDF编辑和阅读工具。它可以帮助用户在Mac、iPad和iPhone等设备上查看、注释、编辑、填写和签署PDF文档。 以下是PDF Expert的特点: PDF编辑:PDF Expert提供了丰富的PDF编辑功能,包括添加、删除、移动…

项目管理之5W2H项目定义法

在项目管理中,为了确保项目的成功实施,项目团队需要全面了解项目的各个方面,并制定相应的计划和措施。为此,可以采用一种被称为5W2H的项目定义方法。这种方法可以帮助项目团队更好地了解项目的需求、干系人、实施地点、交付物、时…

如何选择优质的静动态住宅代理IP提供商?

当前,当网络隐私和数据安全备受关注时,住宅代理的使用已成为不可或缺的资源。从网络抓取者和营销人员到安全爱好者和在线安全爱好者,住宅代理在执行任何在线活动时提供基本的匿名性。 然而,并非所有住宅代理提供商都是相同的&…

通过尖端技术创造价值:释放生成式 AI 的力量

塔曼纳 一、说明 近年来,世界见证了人工智能(AI)的重大进步,生成式AI是最具革命性的技术之一。生成式人工智能已成为一种强大的方法,使机器能够创建新的原创内容,使其成为不同行业各种应用背后的驱动力。在…

MacOS迁移微信的数据目录

使用微信的朋友都知道,微信太占用存储了,在MacOS上想变更到其他位置很困难,不过经过测试还是有办法的,供大家参考: MacOS:Sonoma 14 WeChat:3.8.3 先完全退出微信端!…

pytest合集(10)— conftest.py文件

1、conftest.py文件 conftest.py文件是pytest框架中的一个特殊文件,用于定义共享的设置、夹具(fixture)和钩子函数(hook)。 在pytest中,conftest.py文件可以用于在整个测试项目中共享夹具、配置和钩子函数。通过在conftest.py文…