Resource exhausted: OOM when 问题分析及原因

昨晚用VGG16训练模型时,弹了个资源耗尽的错误,一脸懵逼,在VGG8跑得好好的,换了个网络就不行了,报错如下,还有很长一大段的,但关键是这段:

2019-05-06 10:54:24.400484: W tensorflow/core/framework/op_kernel.cc:1275] OP_REQUIRES failed at conv_ops.cc:398 : Resource exhausted: OOM when allocating tensor with shape[64,64,224,224] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc

分析一下就可以看出问题了,我设置的batch_size 是64,图片输入大小为224x224,通过卷积,已经拉伸到64维了,所以是tensor with shape[64,64,224,224],在细算下占用内存的大小就知道为什么报错了,数据类型是float32,即4B存一个数据,计算一下所需内存大小:64*64*224*224*4=822083584B/1024/1024=784.0M,所以算到这一层就需要784M的GPU显存,我用的k40,11G显存,就报错了,说明缓存不足啊,其实我同时调用了2条k40,也不行。

解决方法也很简单,两个:

  1. 减少batch_size的大小,我设置的是64,我改为16就可以跑了。
  2. 咬咬牙,换个显存大一点的显卡,完美解决问题
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章