使用Nvidia Apex导致的问题
2020-06-06 本文已影响0人
zelda2333
- Loss整体变大,而且很不稳定。效果变差。
- 会遇到梯度溢出。
Gradient overflow. Skipping step, loss scaler 0 reducing loss scale to ....
Emmm.....写出来的目的就是看到这些不要慌张,是正常现象,至于解决的话,好像也没法解决,Gradient overflow 不是经常出现就没问题。
如果Gradient overflow频繁出现的话,可以考虑使用以下办法。
解决办法:
经过验证可以通过以下几种方法,来防止出现梯度溢出的问题:
1、O2换成O1,再不行换成O0
2、把batchsize从32调整为16会显著解决这个问题,另外在换成O0的时候会出现内存不足的情况,减小batchsize也是有帮助的
3、减少学习率也是一种方法(没有亲自验证)
4、增加Relu会有效保存梯度,防止梯度消失(亲测有效,如下说明)
参考链接:
Apex使用教程 与 梯度爆炸问题