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

最近在用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点我觉得挺好用的,有其他好的手段也欢迎大家补充!

相关推荐
AnnyYoung3 分钟前
华为云deepseek大模型平台:deepseek满血版
人工智能·ai·华为云
INDEMIND1 小时前
INDEMIND:AI视觉赋能服务机器人,“零”碰撞避障技术实现全天候安全
人工智能·视觉导航·服务机器人·商用机器人
慕容木木1 小时前
【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体的替代品,可本地部署+知识库,注册即可有750w的token使用
人工智能·火山引擎·deepseek·deepseek r1
南 阳1 小时前
百度搜索全面接入DeepSeek-R1满血版:AI与搜索的全新融合
人工智能·chatgpt
企鹅侠客1 小时前
开源免费文档翻译工具 可支持pdf、word、excel、ppt
人工智能·pdf·word·excel·自动翻译
m0_748235952 小时前
Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider
hadoop·python·flask
冰淇淋百宝箱2 小时前
AI 安全时代:SDL与大模型结合的“王炸组合”——技术落地与实战指南
人工智能·安全
Dyan_csdn2 小时前
【Python项目】基于Python的Web漏洞挖掘系统
网络·python·安全·web安全
Minner-Scrapy2 小时前
DApp 开发入门指南
开发语言·python·web app
Elastic 中国社区官方博客2 小时前
Elasticsearch Open Inference API 增加了对 Jina AI 嵌入和 Rerank 模型的支持
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·jina