from google: http://arxiv.org/abs/2309.14322

本文使用小模型来验证在训练大模型时会产生的loss问题(训练不稳定),成功的在小模型上复现了这一问题,并验证了当前解决大模型的loss问题的方法,在小模型上依然有效。并成功预测了训练不稳定问题的出现。

模型结构与初始化

AdamW 0.9&0.95&1e-8 梯度裁剪1 梯度惩罚1e-4 z-loss 1e-4

warmup step 5000(linear schedule lr) total step 100000(cosine-decay schedule)

min lr 1e-5

pre-norm、不使用bias、两个embedding不共享权重、RoPE、MLP(不是SwiGLU)、embedding初始化正态分布,方差1/sqrt(k)

batch size 256、seq len 512

tokenizer size 32101

bf16

模型为什么会产生训练不稳定

1.attention layer的logit过大

随着attention logit的上涨,模型loss逐渐离谱。产生了训练不稳定的问题。

Untitled

在探索主要原因之前,先定义attention = softmax(z)* V。 其中z 是QK的乘积并进行scale。

产生这个问题的主要原因是z的值较大,随着z的值变大,attention坍缩成one-hot向量,因此不再具备常规的attention性能。这种现象被称作注意力熵坍缩(attention entropy collapse)。

为了解决这一问题,提出了qk-layerNorm,顾名思义就是在计算前,对qk进行layerNorm,在一定程度上对z进行了削峰,使attention更加稳定。

Untitled

2.输出的对数发散