【问题标题】:Loading ResNet50 on RTX2070 - Out of Memory [closed]在 RTX2070 上加载 ResNet50 - 内存不足 [关闭]
【发布时间】:2020-04-30 20:14:17
【问题描述】:

我正在尝试加载 ResNext50,在它之上的 CenterNet,我可以使用 Google Colab 或 Kaggle 的 GPU 来完成。但是,

  1. 想知道这个网络需要多少 GPU 内存 (VRAM)?

  2. 当使用 RTX 2070 时,剩余 5.5GB VRAM(超过 8GB),我无法加载它。

批量大小为 1,#of workers 为 1,一切都设置为最小值。操作系统:Ubuntu 18.04(使用 PyTorch)

在 TensorFlow 中,我知道我可以限制 VRAM 的数量(这使我能够加载和运行网络,尽管我没有足够的 VRAM),但在 PyTorch 中我还没有找到这个功能。

任何想法如何解决这个问题?

【问题讨论】:

    标签: deep-learning gpu pytorch resnet


    【解决方案1】:

    使用第三方依赖

    您可以使用第三方库torchfunc 获得model 的大小(以字节为单位)(免责声明我是作者)。

    import torchfunc
    
    # Assuming model is loaded
    print(torchfunc.sizeof(model))
    

    无依赖关系

    这个函数很简单,你可以复制它,see source code

    精确尺寸

    这只是模型的大小,forwardbackward 期间的 VRAM 内存使用量更多,具体取决于您的 batch 的大小。您可以尝试pytorch_modelsize 库来估计这些(但不确定它是否适用于您的网络)。

    清除缓存

    您应该在运行网络之前清除缓存(有时重启工作站对我有帮助),因为您肯定有足够的内存。使用 GPU 杀死进程也应该有所帮助。

    再次torchfunc 可以提供帮助,发出以下命令:

    import torchfunc
    
    torchfunc.cuda.reset()
    

    【讨论】:

    • 谢谢你 Szymon,我是 def。会尽快检查并更新! (顺便说一句,我认为它需要 5.5GB 的内存,我想我应该能够清除一些 GPU 内存并能够运行它)。顺便说一句,您是否建议训练 fp16 重量以提高速度?
    • 是的,我不认为混合精度训练有很多缺点(在这种情况下使用apex),也可以将其视为额外的正则化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2013-12-24
    相关资源
    最近更新 更多