【问题标题】:Clearing memory when training Machine Learning models with Tensorflow 1.15 on GPU在 GPU 上使用 Tensorflow 1.15 训练机器学习模型时清除内存
【发布时间】:2021-06-03 12:33:17
【问题描述】:

我正在使用 GPU 训练一个非常密集的 ML 模型,如果我开始训练模型,然后让它训练几个 epoch 并注意到我的更改并没有对损失产生显着影响,通常会发生什么情况/accuracy,我将进行编辑,重新初始化模型并从 epoch 0 重新开始训练。在这种情况下,我经常会遇到 OOM 错误。

我的猜测是,尽管我覆盖了所有模型变量,但仍有一些东西占用了内存空间。

有没有办法在 Tensorflow 1.15 中清除 GPU 的内存,这样我每次想从头开始训练时都不必不断重启内核?

【问题讨论】:

    标签: python-3.x tensorflow gpu


    【解决方案1】:

    这完全取决于您使用的 GPU。我假设您使用的是 NVIDIA,但即便如此,取决于确切的 GPU,也有三种方法可以做到这一点-

    1. nvidia-smi -r 适用于 TESLA 和其他现代变体。
    2. nvidia-smi --gpu-reset 适用于各种较旧的 GPU。
    3. 很遗憾,其他操作只能重新启动。

    【讨论】:

    • 我确实有一个 TESLA GPU,抱歉没有提及。当我运行它时,我收到一条消息,说我没有足够的权限。我想我可以运行 sudo nvidia-smi -r,但可以提供更多关于该命令将做什么的信息?
    • 它告诉 GPU 自行重置,包括循环 ECC Ram。
    • 明白了。我尝试运行它,因为我是从 IPython 内部执行此操作,所以我收到一条消息,提示“一个或多个其他进程当前正在使用 1 个设备,请终止使用此设备的所有进程......”。有没有办法从 IPython shell 内部解决这个问题。也许 Tensorflow 有一些 API?
    • 如果您在没有标志的情况下运行nvidia-smi,它应该向您显示正在运行和使用 GPU 的进程列表。然后,您可以使用普通的kill 命令终止该进程。
    猜你喜欢
    • 2021-10-01
    • 2019-08-06
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2020-11-27
    • 2020-02-16
    • 2018-07-12
    • 1970-01-01
    相关资源
    最近更新 更多