我正在尝试训练网络,但我明白了,
我将批量大小设置为 300 并收到此错误,但即使我将其减少到 100,我仍然收到此错误,更令人沮丧的是,在 ~1200 个图像上运行 10 epoch 大约需要 40 分钟,有什么建议吗?错了,我怎样才能加快这个过程!
任何提示都会非常有帮助,提前致谢。
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-31-3b43ff4eea72> in <module>()
5 labels = Variable(labels).cuda()
6
----> 7 optimizer.zero_grad()
8 outputs = cnn(images)
9 loss = criterion(outputs, labels)
/usr/local/lib/python3.5/dist-packages/torch/optim/optimizer.py in zero_grad(self)
114 if p.grad is not None:
115 if p.grad.volatile:
--> 116 p.grad.data.zero_()
117 else:
118 data = p.grad.data
RuntimeError: cuda runtime error (2) : out of memory at /pytorch /torch/lib/THC/generic/THCTensorMath.cu:35`
即使我的 GPU 是免费的
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.111 Driver Version: 384.111 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 108... Off | 00000000:05:00.0 Off | N/A |
| 23% 18C P8 15W / 250W | 10864MiB / 11172MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 108... Off | 00000000:08:00.0 Off | N/A |
| 23% 20C P8 15W / 250W | 10MiB / 11172MiB | 0% Default
+-------------------------------+----------------------+---------------
相当普遍的问题。以下是我对这个问题的看法。
尝试将批量大小(批量数)设置为 1。如果这解决了问题,您可以尝试找到最佳批量大小。
如果即使是为了bs=1
你得到“RuntimeError:cuda运行时错误(2):内存不足”:
不要使用太大的线性层。线性层 nn.Linear(m, n) 使用 O(nm)O(nm)O(nm) 内存:也就是说,权重的内存需求与特征数量成二次方关系,同时还考虑梯度。
不要在整个训练循环中积累历史记录。如果您在循环内递归地对损失求和 10000 或更多,您的反向传播评估将是巨大的;占用大量内存。
删除不需要的张量del
明确地.
Run ps -elf | grep python
以及 GPU 上的 python 进程kill -9 [pid]
如果您怀疑其他 Python 进程正在占用您的内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)