正在耗尽CUDA内存 [英] Getting CUDA out of memory
本文介绍了正在耗尽CUDA内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
---------------------------------------------------------------------------
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
,您也会收到"运行时错误:CUDA运行时错误(2):内存不足":
请勿使用过大的线性层。 线性层nn.Line(m,n)使用O(Nm)内存:也就是说,权重的内存需求与考虑到梯度的特征数量成二次函数关系。
请勿在您的培训循环中累积历史记录。 如果您在10000或更多的循环中递归地计算损失,则反向传播评估将是巨大的;需要大量内存。
删除不需要的张量
del
显式。如果您怀疑某个其他Python进程正在占用您的内存,请在您的GPU上运行
ps -elf | grep python
和python进程kill -9 [pid]
。
这篇关于正在耗尽CUDA内存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文