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. 咬咬牙,換個顯存大一點的顯卡,完美解決問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章