自然语言处理

GPU模型训练OOM

2019-01-17  本文已影响0人  京漂的小程序媛儿

Resource exhausted error:

OOM when allocating tensor with shape[***,*****,***] and type float

Resource exhausted

显卡内存不够:

解决方法精髓:making your model smaller or reducing your batch size

1. batch_size太大,内存不够,最快的尝试解决方案。

2.如果batch_size=1了,还是不行,那就是tensor太大了啊,而我的GPU显存只有7G。

例如我embedding之后得到的tensor shape是: (None, 60000, 60)。

此时:首先,确保代码逻辑正确性。这种情况下,就减少一些影响网络大小的参数(例如embedding dim等,提示那个tensor太大就减小哪个),先确保代码逻辑的正确性。不要太自信了,当你把所有参数都调的很小还跑不动,你就要怀疑你的网络了。

tf.float64 -> tf.float32 -> tf.float16 for all your variables. 

如果参数都小的时候跑通了,逐步增大各个参数。终极方案就是加GPU了。

在这个过程中还发现一个问题,当tensor非常大时,第一个epoch时特别慢,要30分钟左右,后面的epoch会好点,两三分钟。听说增加SGD就可以了。其实还是网络大,而内存小呗。

上一篇下一篇

猜你喜欢

热点阅读