这个事对于提升开源社区和从业者的技术水平是有划时代的意义的。
原因有两个:
1.LLama 2和Llama1的diff,是最好的技术学习资料,尤其是sft和rlhf上。之前llama1在SFT和RLHF上的发力不多,现在2代模型的技术细节和实验都变得更丰富了。
2.LLama 1代是曾经最好的开源大模型,从使用热度,开源生态,用户口碑全方位碾压其他的模型,LLama 2改进了它。我们先说第一个,失败的经验和找diff是技术人员最希望看到的东西,diff可以让所有的研究人员验证他们的差异,并且进行实践验证。只有成功的经验,但是没有每一步骤的上分细节和上分权重意义不大,这是另外一种藏着掖着和傲慢。
第二个,llama2终于可以取代llama系列成为新的开源大模型的起始点了,这样会极大地提升其他llama系开源模型的技术水平,这就是开源社区的力量和存在的意义。
评价一个开源社区的大模型水平如何,关键一个指标就是看他的生态,有多少人放出了llama基础上的新权重,并且效果不错。在众多人的实践检验下,是金子总会发光的。
这两点来看,对于提升开源社区和从业者的技术水平,具有划时代的意义。
好了,我们看看他的技术细节吧。
整个技术报告有76页:
HuggingFace:
https://huggingface.co/meta-llama
技术报告:
https://ai.meta.com/research/publications/llama-2-open-foundation-and-fine-tuned-chat-models/
项目主页:
https://ai.meta.com/llama/
简单总结一下:
我们从很多技术细节上能看出,模型的规模越大,上限越高,trick越多。
一、基座模型架构上
1.在attention的实现上,30B以上的模型用GQA代替了MQA和MHA,主要是考虑效果和易扩展性的权衡。
2.上下文长度从2048升级到4096
其他方面大同小异。包括预训练设置和模型架构, RMSNorm归一化、SwiGLU 、RoPE等。其他超参数设置细节:
AdamW 其中 β1 =0.9,β2 = 0.95,eps = 10−5。cosin scheduler,warmup 2000 步,衰减最终学习率降至峰值学习率的 10%,使用 0.1 的权重衰减和1.0的梯度裁剪。
二、数据方面:
1.SFT数据有10万+,RLHF的数据有100万+
2.预训练Llama 2训练语料相比LLaMA多出40%,达到了2万亿token。
当然数据的细节在rlhf部分会更讲究一些,可以结合下面的来看。
三、SFT和RL对齐方面
3.1 增加了很重的sft和rlhf,并且研究了rm和rl的一些trick,进一步强调了SFT数据质量和多样性的重要性,技术报告并对数据方面的研究做的很仔细。
在SFT的参数设置上,值得注意:(1)对于监督微调,使用cosin scheduler,初始学习率小到 2 × 10−5,decay为 0.1,bs为 64,maxlen为 4096 个标记。
(2)对于微调过程,每个样本都包含提示和答案, 为了确保正确填充模型序列长度,连接训练集中的所有提示和答案。使用特殊标记来分隔提示和答案部分。
(3) 利用自回归目标,将用户提示中的token损失归零,仅对答案token进行反向传播。最后对模型进行了 2 个 epoch 的微调。
其实这里(2)和(3)就是我们前面提到的一个trick大模型微调样本构造的trick,另外不仅仅在数据组织方面,还有流程上的优化
3.2 多论对话的SFT用了一种Ghost Attention (GAtt)的tirck。
GAtt是全文篇幅很重的一个trick,原文做了大量的相关实验。
假设我们可以访问两个人(例如,用户和助手)之间的多轮对话数据集,其中包含消息列表 [u1, a1, . 。。, un, an],其中 un 和 an 分别对应于第 n 轮的用户消息和助理消息。然后,我们定义一条指令,inst,在整个对话过程中都应遵守该指令。例如,inst 可以是“充当”。然后我们可以将该指令综合连接到对话的所有用户消息。构造为 [inst u1, a1, . 。。, inst un, an]。
接下来,可以使用最新的 RLHF 模型从这些合成数据中进行采样。
我们现在有了一个上下文对话和样本,可以用来微调模型,其过程类似于拒绝采样。可以在除第一轮之外的所有轮次中删除它,而不是用指令来增加所有上下文对话轮次,但这会导致系统消息之间的训练时间不匹配,即最后一个轮次之前出现的所有中间辅助消息 轮到我们的样品了。
为了解决这个可能会损害训练的问题,我们只需将前一轮的所有标记的损失设置为 0,包括辅助消息。
这部分细节和实验很多,建议仔细阅读技术报告原文。
3.3 rm中引入了metric learning中的margin方法。
做过人脸的同学都知道,margin的原则就是类内聚集,类间可分,这样会让RM对于好坏有更好的判断力,当然也有副作用,会让相似的数据分不开。
3.4 拒绝采样
RLHF的训练变成迭代式的,从V1到V5,并且过程中伴随着拒绝采样,在给定的K个promt中,只选取一个用于ppo的训练。不过这个过程也只用在了70B的llama上,可以看出来,模型的规模越大,上限越高,trick越多...
当然这份技术报告需要更多时间来消化和验证,这可能是这两个月来大模型方面最突破的事情了。
来源:公众号【包包算法笔记】