为了提高训练稳定性,我们对每个 Transformer sub-layer 的输入进行归一化,而不是对输出进行归一化。 这里使用由 Zhang 和 Sennrich(2019)提出的 RMSNorm 归一化函数。
用 SwiGLU 激活函数替换 ReLU 非线性,该函数由 Shazeer(2020)提出,目的是提升性能。 但我们使用的维度是 2/3 * 4d,而不是 PaLM 中的 4d。
去掉了绝对位置嵌入(absolute positional embeddings),并在每个网络层中添加旋转位置嵌入(rotary positional embeddings,RoPE)。 RoPE 由 Su 等(2021)提出。

Llama2采用了Llama 1中的大部分预训练设置和模型架构。使用RMSNorm应用预归一化,使用SwiGLU激活函数和旋转位置嵌入。
具体的,使用AdamW优化器进行训练,使用余弦学习率方式来动态调整学习率,预热2000步,并将最终学习率衰减到峰值学习率的10%,并使用0.1的权重衰减和1.0的梯度裁剪。
与Llama 1的主要架构差异包括增加了上下文长度【两倍关系】和分组查询关注(GQA)。
分词器方面,使用与Llama 1相同的标记器,采用字节对编码(BPE)算法,使用sentencepece的实现。值得注意的是,与Llama 1一样,将所有数字拆分为单个数字,并使用字节来分解未知的UTF-8字符。总词汇表大小为32k。