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就可以了。其实还是网络大,而内存小呗。