前提:
在论文中,作者重提出了一个观点作为前提:当前的大模型已经具备了,根据一些示例(few shot)和文本提示,去执行一个新任务,之前大家都觉得更大的参数==更好的模型,但是Hoffmann 等人(2022)的最新工作表明,对于给定的计算预算(compute budget), 最佳性能并非来自那些最大的模型,而是来自那些在更多数据上训练出来的较小模型(大模型量级下的小模型)。
这里的计算预算不单单指的是训练,还包括推理。
我们更喜欢训练时间长,推理速度更快的模型,而不是训练时间较短,推理速度较慢的模型。因此一个参数量较少,训练数据较多的模型是我们期待的。
llama是一个相较于gpt3参数量更少,性能更强的模型。模型的结构仍然是transformer的decoder部分。只是有一些细节发生了变化。
llama的几个改进后的细节:
首先,归一化的方式有两种:pre和post,
-
llama使用的归一化是pre的归一化,解释是让训练的稳定性增强。
对每个变压器子层的输入进行归一化,而不是对输出进行归一化,使模型训练更稳定。并且使用的是rms归一化,梯度下降时,损失能够更平滑。下面是两种归一化的对比:
更换激活函数为glu,具有门控机制,决定哪些输入信息需要保留,那些需要略去。sigmoid进行scale,避免产生梯度爆炸或者梯度消失问题。
3. 取消位置嵌入,改为RoPE旋转位置编码。旋转位置编码是将绝对位置信息转换为相对位置信息。将q和n(绝对位置)相关变换得到q*,将k和m(绝对位置)经过相关变化得到k*。用q*和k*算出的attention就包含了相对位置信息,因为计算是内积计算。具体的计算公式如下:
qm~=f(q,m),kn~=f(k,n),m,n为绝对位置。f(*) = eimθ
〈qm eimθ,kn einθ〉=Re[(qm eimθ)(kn einθ)∗]=Re[qmkn∗ei(m−n)θ]
可以发现,内积结果中包含了相对位置信息
位置编码对大模型而言尤为重要,因为既然是要训练大模型,那么长文本的表征和模型对于长文本的建模能力就显得非常重要。其实,对于任何文本,token的相对位置包含的信息都比绝对位置要更丰富。