与LLaMA相比,LLaMA2的性能可与闭源ChatGPT、BARDX、以及Claude相比,且模型开源。作者释放了两个版本的模型,分别是:

  • LLaMA2, 在LLAMA1基础之上,模型预训练数据增加了40%,上下文长度增加了两倍。模型参数有7B,13B,70B,34B。
  • LLaMA2-CHAT, LLAMA2的微调版本,主要优化了对话能力。

如图1所示,LLaMA2的训练流程示意图。

图1 LLaMA2的训练流程示意图

预训练

LLaMA一致的是:基于标准的Transformer架构,利用RMSNorm对子层的输入进行标准化,利用SwiGLU作为激活函数,利用RoPE作为位置编码。

与LLaMA不一致的是:增加了上下文长度,且使用了分组查询注意力GQA;预训练数据为开源的新混合办法形成的数据,其拥有2 trillion tokens。

在超参数方面,AdamW作为优化器的$\beta_1=0.9,\beta_2=0.95,eps=10^{-5}$;余弦调度学习率有2000步的warm up;权重衰减为0.1;梯度裁剪系数为1.0。与LLaMA一致,利用SentencePiece实现的BPE作为tokenizer,词汇表大小为32k 。

微调

如表1所示,微调数据的格式。

表1 SFT标注-帮助性例子(top)与安全性表示例子(bottom)

有监督微调的数据不仅包含大量的第三方数据,还包含研究人员标注的高质量数据,其数据格式可见表1所示。与Zhou等人的发现相似,少量高质量的指令微调数据足够使模型拥实现高质量的效果。同时,作者们也发现模型输出的SFT数据比人类输出的数据更能够提升模型性能,这对数据收集有很大的影响。

微调细节。对于有监督微调,利用余弦学习率调度,其初始学习率为$2\times10^{-5}$,权重衰减为0.1,batch size为64,序列长度为4096。

RLHF

奖励模型的训练数据是基于两个模型的响应,由人类选择最好的一个,且拥有的评分等级。同时,这部分的数据收集还考虑有助性和安全性。

奖励模型

奖励模型以响应和对应提示、上下文为输入,输出表示模型生成质量的标量值。基于该奖励函数,优化LLaMA2-Chat,提高模型与人类偏好更好的对齐,以及生成有助性和安全性。Bai等人发现,单个奖励函数往往在有助性和安全性上权衡,从而很难在两者都表现的很好。因此,作者们训练了两个独立的奖励函数,一个是有助性奖励模型,另一个是安全性奖励模型。奖励模型的初始化是基于预训练chat模型checkpoint,模型架构和超参数与预训练语言模型相同,从而防止模型之间的不匹配。在模型架构方面,预测头从预测下一个token变为二分类。在模型训练阶段,奖励模型的目标函数为排序损失函数,即
$$
\begin{aligned}
\mathcal{L}_{ranking}=-log(\sigma(r_{\theta}(x,y_c)-r_{\theta}(x,y_r)))
\end{aligned}\tag{1}
$$
式(1)中$y_c$为标注人员偏好的生成,$y_r$为拒绝的生成。

同时,制定了四级的分数评级,基于该信息可使奖励模型更有区分性,因此奖励函数变为
$$
\begin{aligned}
\mathcal{L}_{ranking}=-log(\sigma(r_{\theta}(x,y_c)-r_{\theta}(x,y_r)-m(r)))
\end{aligned}\tag{2}
$$
式(2)中$m(r)$为偏好评分的离散函数,称为margin。对于明显区别的响应,有一个大的margin;对于相似的响应,有一个小的margin。在经过广泛实验,发现,margin非常有效的提升有助性奖励模型和安全性奖励模型。

迭代型微调

随着人类偏好数据的收集,从而训练更好的奖励模型,也收集更多的提示。奖励模型提升了,从而可得到更好的语言模型。由此,作者们训练了一系列模型,不断提升模型的性能。对于RLHF微调的探索,利用两种算法,分别是PPO和拒绝采样微调。其中,拒绝采样微调来自于Bai等人的研究,该方法从模型中采样$K$个输出,选择最好的一个。

多轮一致性的系统消息

在一个对话场景中,一些指令可应用于所有对话轮数,例如:“act as”一些公众人物。若对LLaMA2-Chat提供这些指令,随后的响应需都遵守该指令。然而,模型往往容易忘记最初的指令,如图2所示。

图2 多轮对话的记忆消息问题

为了解决该问题,受到Bai等人提出的上下文蒸馏方法影响,作者们提出了Ghost Attention。GAtt方法的具体实现:

  • 若存在一个多轮对话数据$[u_1,a_1,\ldots,u_n,a_n]$。
  • 定义一个指令inst,该指令应被整个对话过程关注,那么可concat对话中用户的消息与该指令,作为合成数据。
  • 接下来,可利用RLHF模型采样这些合成数据,与拒绝采样相类似。

与采样相比可替代的方法是:除了第一轮对话中用户数据外,drop掉其他轮所有用户的数据。然而,这种方式会造成模型在训练时间上的不匹配。为了解决该问题,作者们只是直接把之前轮次对话数据的损失设置为0。

相关思考

虽然LLaMA2基于开源数据训练,但是预训练数据的混合方法,在论文没有找到。由于笔者比较关注模型架构,所以对于模型的安全性训练和RLHF微调没有过多的关注。

标签: LLaMAs

版权: 本篇博文采用《CC BY-NC-ND 4.0》,转载必须注明作者和本文链接

添加新评论