正在耗尽CUDA内存 [英] Getting CUDA out of memory

查看:6
本文介绍了正在耗尽CUDA内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试培训一个网络,但我得到了, 我将我的批处理大小设置为300,我得到了这个错误,但即使我将它减少到100,我仍然得到这个错误,更令人沮丧的是,对于在~1200个图像上运行10个纪元,它需要大约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,您也会收到"运行时错误:CUDA运行时错误(2):内存不足":

  • 请勿使用过大的线性层。 线性层nn.Line(m,n)使用O(Nm)内存:也就是说,权重的内存需求与考虑到梯度的特征数量成二次函数关系。

  • 请勿在您的培训循环中累积历史记录。 如果您在10000或更多的循环中递归地计算损失,则反向传播评估将是巨大的;需要大量内存。

  • 删除不需要的张量del显式

  • 如果您怀疑某个其他Python进程正在占用您的内存,请在您的GPU上运行ps -elf | grep python和python进程kill -9 [pid]

这篇关于正在耗尽CUDA内存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆