Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transformer BLOCK 梯度异常,梯度反向传播异常放大?同#69174 #69310

Open
johnyanccer opened this issue Nov 12, 2024 · 4 comments
Labels

Comments

@johnyanccer
Copy link

johnyanccer commented Nov 12, 2024

请提出你的问题 Please ask your question

Transformer BLOCK 梯度异常,同#69174#69174
在2.6和3.0环境都有测试,aistudio有公开项目,
https://aistudio.baidu.com/projectdetail/8382058

原本以为是layerlist写法不对,调整后结果无差异,纵轴是参数梯度L2范数,横轴是训练步数,input数据依次经过encoder0到encoder9,然后通过classifier 得到输出,并计算loss,没有设置共享参数

grad

如图呈现靠近输入的梯度大,靠近输出的梯度小,并且梯度迅速减小到0,然后再增大,再减小

调整transformer BLOCK的初始化参数能改变梯度大小,但是仍然呈现反向放大,并且迅速归0的现象

@warrentdrew
Copy link
Contributor

您好,训练梯度呈现靠近输入层的梯度大,靠近输出的梯度小可能和网络结构,权重,输入数据等各种因素有关,如果没有出现导致训练不收敛或者是其他训练问题,应该可认为是正常的情况。可以用相同的网络结构,权重和数据使用其他的框架(如pytorch)观察的梯度情况来确认,理论上应能得到相同的梯度情况

@johnyanccer
Copy link
Author

您好,训练梯度呈现靠近输入层的梯度大,靠近输出的梯度小可能和网络结构,权重,输入数据等各种因素有关,如果没有出现导致训练不收敛或者是其他训练问题,应该可认为是正常的情况。可以用相同的网络结构,权重和数据使用其他的框架(如pytorch)观察的梯度情况来确认,理论上应能得到相同的梯度情况

最后一层classifier的梯度是大的,靠近classifier的encoder.9变小,然后越接近输入层梯度越大
调整初始化权重大小后,梯度大小会随之变化,但仍然在10步以内就减少到0,而且也呈现梯度递减的现象
并且只更新了几步,几十步就收敛,这也不正常吧?

@warrentdrew
Copy link
Contributor

收敛过快是指loss收敛快还是梯度减小快呢,另外训练完成后可以达到预期的精度吗

@johnyanccer
Copy link
Author

johnyanccer commented Nov 12, 2024

收敛过快是指loss收敛快还是梯度减小快呢,另外训练完成后可以达到预期的精度吗

下载

梯度从一开始的10+很快减小到初始的1%,所有1、2阶矩都接近0,loss在1左右就不动了,精度就跟没训练一样

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants