为什么所有公开的对 GPT-3 的复现都失败了?复现和使用GPT-3/ChatGPT,你所应该知道的(4)
扫一扫
分享文章到微信
扫一扫
关注99科技网微信公众号
训练过程中的修改。OPT 做了很多中途调整并从最近的 checkpoint 重启训练,包括改变截断梯度范数 (clip gradient norm) 和学习率,切换到简单的 SGD 优化器然后回到 Adam,重置动态损失标量 (dynamic loss scalar),切换到更新版本的 Megatron 等等。
这种中途调整可能是 OPT 失败的原因之一。相比之下,PaLM 几乎没有做任何中途调整。它只是当损失尖峰出现时,从尖峰开始前大约 100 步的 checkpoint 重新开始训练,并跳过了大约 200-500 个 batch 的数据。仅仅依靠这种简单的重启,PaLM 就取得神奇的成功。这是由于它在预训练数据构建期间就已经完成采样,因此模型具有在 Bit 意义上的确定性,以及它对模型架构和训练设置进行了许多修改以获得更好的稳定性。PaLM 中的此类修改在下一点中展示。模型架构/训练设置:为了使训练更稳定,PaLM 对模型架构和训练设置进行了多项调整,包括使用 Adafactor 的修改版本作为优化器,缩放在 softmax 之前的输出 logit,使用辅助损失来鼓励 softmax 归一化器接近 0,对词向量和其他层权重使用不同的初始化,在前馈层和层归一化中不使用偏差项,并且在预训练期间不使用 dropout。
请注意,GLM-130B 中还有更多有价值的内容关于如何稳定地训练非常大的模型,例如:使用基于 DeepNorm 的后置层归一化而不是前置层归一化,以及词向量层梯度收缩。以上大多数模型修改没有被 OPT 和 BLOOM 采用,这可能会导致它们的不稳定和失败。训练过程:如下表所示,原始的 GPT-3 预训练过程见过的 token 数与 OPT 和 BLOOM 接近,而 PaLM 则远远超过了它们。同样,PaLM 和 GPT-3 预训练语料库都大于 BLOOM 和 OPT。因此,在更多的 token 上、用更大规模的高质量语料库进行预训练可能是 GPT-3 和 PaLM 成功的一个重要因素。
除了上面列出的四点,还有一些其它因素,它们可能对于更稳定的训练并不重要,但仍然可能影响最终的性能。
第一点,PaLM 和 GPT-3 都使用了在训练过程中从小到大逐渐增加的 batch size,这已经被展示对于训练一个更好的 LLM 是有效的,然而 OPT 和 BLOOM 都使用了恒定的 batch size。
第二点,OPT 使用了 ReLU 激活函数,而 PaLM 使用 SwiGLU 激活函数,GPT-3 和 BLOOM 使用 GeLU,它通常使得训练的 LLM 的性能更好。
第三点,为了更好的建模更长的序列,PaLM 使用 RoPE 词向量,BLOOM 使用 ALiBi 词向量,而原始的 GPT-3 和 OPT 使用学习得到的词向量,这可能影响在长序列上的性能。
2 我们应该在哪些任务上使用GPT-3.5或ChatGPT?99科技网:http://www.99it.com.cn
