Keras / Tensorflow 疑似内存泄漏

问题描述 投票:0回答:2

我正在使用 Keras (2.4) 和 Tensorflow (2.3.1) 后端。我正在使用网格搜索调整一些元参数,以便多次调用模型创建和

model.fit
方法(训练是在具有单个 GPU 的机器上完成的)。

Tensorflow 有记录的内存泄漏问题(例如参见此处,但还有更多报告,只需在 Google 中搜索

tensorflow memory leak
)。我过去遇到过这个问题,并设法使用小批量大小和手动调用 Python 垃圾收集器的组合将其保持在最低水平。但现在在另一个项目中,我怀疑我再次遇到了它。

我附上一张监控 RAM 使用情况的图像。 15 小时,我的问题很简单 - 看起来这可能是内存泄漏的结果吗?一方面,最大使用量随着时间的推移而增长。但是,另一方面,似乎取消分配(也许当模型实例被销毁并使用新参数创建时?)将大部分已用内存释放回(几乎)到初始级别。 enter image description here

python tensorflow keras memory-leaks
2个回答
4
投票

怎么样

tf.keras.backend.clear_session()

按照文档

Keras 管理一个全局状态,它用它来实现 功能模型构建 API 和统一自动生成层 名字。

如果您在循环中创建许多模型,则此全局状态将 随着时间的推移消耗越来越多的内存,你可能想要 清除它。调用clear_session()释放全局状态:this 有助于避免旧模型和图层造成的混乱,尤其是在内存不足的情况下 数量有限。


0
投票

使用 Tensorflow 2.16.1 或 2.17.0 训练 a UNet 时出现内存泄漏;但不适用于 Tensorflow 2.11.1。

© www.soinside.com 2019 - 2024. All rights reserved.