训练过程中,模型跑得好好的,结果'喀’,蹦出这么个错误,不能愉快的玩耍了都。 这个错误一出现。 1.*首先得排除整个显卡上是不是有别的模型在跑? 2.如果没有,检查自己的模型逻辑有没有错误?(很多时候,即使没错也会崩……) 3.*接下来,在进行下一步尝试…… 先用invidia-smi命令,看看服务器上有哪些空闲显卡(本地电脑可忽略,重新运行就是了).
对于tensorflow来说,可以用CUDA_VISIBLE_DEVICES=1(,2...) python train.py,命令来运行程序,其中的数字1,2...代表显卡序号。如果你觉得一个显卡不够,或是想让程序跑得快,在不影响别人使用的情况下,可以多选择几块显卡。CUDA_VISIBLE_DEVICES命令是用来确定CUDA允许tensorflow发现的显卡。如果没有,默认情况下tensorflow会利用所有能利用的资源。
对于濒临淘汰的Theano来说,运行时设置device=1(,2,3..),即可。
4.如果还是不行,请回到第二步……不要过度自信…… 补充一条测试方法:先把模型调整的最简,比如只有一层全连接,然后一层一层的往上加,逐步简历自己的模型,在建立的过程中发现问题。毕竟这个错误,很玄……有时候,前几轮跑的好好的,到后面却崩溃了,这种情况就得多跑几次先碰碰运气。如果始终出现这种问题,首先要考虑简化网络比如将隐藏层单元数从300改为200,或是将双向LSTM改成单向的。
OOM的错误目前我还没找到最有效的解决方法,之前本以为能解决问题,但是偶然还是会出现。词表的大小也会引起OOM的错误,最近尝试google news的词向量,小词表不会引发OOM 错误,换成大词表,就不行了。如果你们有好的解决方法,欢迎留言讨论。
|