【发布时间】:2020-03-26 12:40:49
【问题描述】:
我认为对于 GPU 内存不足的 PyTorch 用户来说,这是一条很常见的信息:
RuntimeError: CUDA out of memory. Tried to allocate ???? MiB (GPU ????; ???? GiB total capacity; ???? GiB already allocated; ???? MiB free; ???? cached)
我想为我的课程研究对象检测算法。而且许多深度学习架构需要大容量的 GPU 内存,所以我的机器无法训练这些模型。我尝试通过将每一层加载到 GPU 然后再加载来处理图像:
for m in self.children():
m.cuda()
X = m(X)
m.cpu()
torch.cuda.empty_cache()
但它似乎不是很有效。我想知道在使用少量 GPU 内存的同时训练大型深度学习模型是否有任何提示和技巧。提前致谢!
编辑:我是深度学习的初学者。如果这是一个愚蠢的问题,请道歉:)
【问题讨论】:
-
笑脸是怎么回事?大声笑..另外,减少你的批量大小和/或训练更小的图像。查看 Apex 库以进行混合精度训练。最后,例如,当将批量大小减小到 1 时,您可能希望在每次迭代后推迟将梯度设置为零,因为它仅基于单个图像。
-
我在使用 Kaggle 时遇到了同样的问题。它适用于 64 批次,然后一旦我尝试 128 并得到错误,则没有任何效果。即使是64批次也给了我同样的错误。尝试重置几次。
torch.cuda.empty_cache()没用。而是先禁用 GPU,然后重新启动内核,然后重新激活 GPU。这对我有用。 -
减少提供给模型的数据的批量大小。为我工作
标签: python deep-learning pytorch object-detection low-memory