【问题标题】:Pytorch: How to know if GPU memory being utilised is actually needed or is there a memory leakPytorch:如何知道是否确实需要使用正在使用的 GPU 内存或是否存在内存泄漏
【发布时间】:2020-09-12 18:23:17
【问题描述】:

我有 3 个 Tesla V100(16 GB)。我正在使用 efficeint net(6300 万参数)对(512,512)的图像进行迁移学习,批量大小为 20。 我的 GPU 内存利用率低于 -

如您所见,它几乎填满了所有 3 个 GPU(几乎 80%)。 我的问题是,是否有任何理论上的方法可以计算所显示的 GPU 内存利用率是模型在特定图像和批量大小下所需要的,或者我的 GPU 中是否存在内存泄漏?

【问题讨论】:

    标签: memory-leaks deep-learning pytorch gpu conv-neural-network


    【解决方案1】:

    我不确定这是您要求的,但您是否尝试过这样做:

    memory_usage = number_of_variables * memory_usage_per_variable。

    因此,如果您使用 torch.float32 张量,并且您有 125 000 个变量通过 .cuda() 发送到 GPU。然后你在你的 GPU 上使用 4GB 的内存。你可以比较一下你的内存有多少可用内存。

    另一个健全性检查是检查 GPU 每次迭代模型的内存使用情况,如果它加倍,则说明内存泄漏。

    希望这会有所帮助。

    【讨论】:

    • 一个问题:如何知道我的代码中变量的数量。此外,关于答案的第二部分 - 就我而言,如图所示,第一个时期的内存大小会增加,然后每隔一个时期保持不变。
    • 只需查看张量的大小和数据类型,更喜欢 float32 张量,因为它们占用的内存更少。由于您有 6300 万个参数,我认为这会占用大量内存,并且内存泄漏会立即使您的机器崩溃。时代的行为是我所期望的。所以看起来没问题,但是 14 分钟会发生什么?也许你开始验证循环?
    • 是的,验证循环开始了。我看到这篇文章,我需要一些时间来理解它datascience.stackexchange.com/questions/12649/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2011-05-08
    • 2016-08-17
    • 2011-06-26
    • 2011-10-07
    • 1970-01-01
    相关资源
    最近更新 更多