【发布时间】:2020-12-06 11:32:44
【问题描述】:
我问这个问题是因为我在我的 GTX 2070 上成功地在具有 8GB VRAM 的笔记本电脑上训练了一个分段网络,并且我在我的台式电脑上使用完全相同的代码和完全相同的软件库使用 GTX 1080TI,它仍然会内存不足。
为什么会发生这种情况,考虑到:
-
相同的 Windows 10 + CUDA 10.1 + CUDNN 7.6.5.32 + Nvidia 驱动程序 418.96(随 CUDA 10.1 一起提供)在笔记本电脑和 PC 上。
-
使用 TensorFlow 2.3 进行训练可以在我 PC 上的 GPU 上流畅运行,但它无法为仅使用 PyTorch 进行训练分配内存。
-
PyTorch 通过以下命令识别 GPU(打印 GTX 1080 TI):
print(torch.cuda.get_device_name(0)) -
PyTorch 在运行此命令时分配内存:
torch.rand(20000, 20000).cuda()#allocated 1.5GB of VRAM.
解决办法是什么?
【问题讨论】:
-
感谢反对者表达您的选择。我想在您的评论中看到投反对票的原因,以便了解我的问题/假设中的错误。
-
这很有趣。不应该发生,它似乎不是“减少批量大小”用例 :) 您是否使用了某种自定义数据集/采样器/数据加载器?您是否在这些组件之一中将数据移动到 GPU 上?您是否尝试过创建一个最小的可重现示例?我将能够尝试重现该问题并调查解决方案为何有效,但事实上,该问题没有任何必需的信息。如果你还有它,你介意发布完整的堆栈跟踪吗?
-
是的,我正在使用这个会产生问题的 jupyter 笔记本。请注意,无论 PyTorch[1.2,1.6] 和等效的 torchvision 版本如何,该错误不会发生在我的笔记本电脑上,但会发生在 PC 上(完全相同的配置)。 github.com/qubvel/segmentation_models.pytorch/blob/master/…。既然是通过减少DataLoader中worker的数量来解决的,我假设它与处理器或线程有关?
-
您是否检查过不使用增强 (
augmentation=None) 是否仍然会导致问题?除此之外,一切似乎都很好。我稍后会试一试。 -
它仍然会导致问题,因为我在两种情况下(PC 和笔记本电脑)从一开始就将其设置为 None
标签: python tensorflow pytorch out-of-memory