论文笔记–Llama 2: Open Foundation and Fine-Tuned Chat Models

论文笔记–Llama 2: Open Foundation and Fine-Tuned Chat Models

1. 文章简介

  • 标题:Llama 2: Open Foundation and Fine-Tuned Chat Models
  • 作者:Touvron H, Martin L, Stone K, et al.
  • 日期:2023
  • 期刊:arxiv preprint

2. 文章概括

  文章训练并开源了模型Llama2系列模型。文章对Llama2做了大量的安全和有用性的微调,并进行了大量的数值试验,实验证明,Llama2-chat比其它被比较的开源的chat模型(BLOOM,LLaMa1,Falcon)效果好,且有潜力成为一些未开源chat模型(ChatGPT,BARD)的替代。meta公司发行了如下开源模型

  • LLAMA2模型:LLAMA1[1]的更新版本,包含7B,13B,70B参数三个版本
  • LLAMA2-CHAT模型:在LLAMA2之上对对话场景进行微调的chat模型,包含7B,13B,70B参数三个版本。文章整体框架如下图
    整体框架

  由于文章内容比较多,笔者挑选了其中重点的部分进行介绍。全部数值实验结果可参见原文。(这篇文章读起来和写起来真的很费力😣,因为文章很长,细节很多,而且好多技术细节写的好晦涩啊)

3 文章重点技术

3.1 预训练Pretraining

3.1.1 预训练细节

  文章使用自回归Transformer模型,在LLAMA1[1]的基础之上进行了一些增强,具体包括

  1. 增加数据:Llama的语料库包含2trillion个tokens,且全部为公共可用数据,不包含Meta自己的数据集
  2. 增加40%的token数
  3. 增加上下文长度从2048到4096
  4. 修改attention为Grouped-query attention(GQA),以提升推理效率
      具体差异可见下表
    llama2模型参数量

3.1.2 Llama2模型评估

  文章对上述Llama2模型与Llama1,MosaicML,Falcon这些开源模型效果进行了评估、比对。文章选择了包含代码、常识推理、世界知识、阅读理解、数学、MMLU等benchmarks进行了数值实验。如下表所示,Llama2模型效果超过了Llama1,且超过所有其他被比较的开源模型。
llama2开源模型数值试验
  此外,文章将Llama2模型与GPT-3.5、GPT-4,PaLM,PaLM-2-L这些闭源模型进行了比较,通过调用这些模型的API来获得在benchmarks上面的数值实验结果。从下表可以看出,在Llama2 70B和GPT-4等闭源模型中还是有一定的性能差距的。
llama2闭源模型数值试验

3.2 微调Fine-tuning

3.2.1 Supervised Fine-Tuning(FT)

  类似于LIMA[2]的结论,文章发现少量高质量的SFT数据的效果超过使用大量无法保证质量的三方数据。文章发现,大约几万条高质量的SFT标注就可以实现高精度的结果,最终文章标注了27540条SFT数据

3.2.2 Reinforcement Learning with Human Feedback(RLHF)

3.2.2.1 偏好数据

  类似InstructGPT[3],文章尝试收集人类偏好数据,并通过RLHF来将模型和人类偏好和指令遵循进行对齐。
  首先,文章通过如下程序收集人类偏好数据:1) 标记员写一个prompt 2) 让模型基于该prompt生成两个回答 3) 标记员基于给定的标准进行二选一 4) 标记员给出两个回答的差异程度:significantly better, better, slightly better或者unsure。按照如上程序,文章每周迭代收集helpfulness和safety两个基准的偏好数据,从而迭代训练llama2-chat模型。
  此外,标记员需要给出一个安全性的标签,标签指向三个类别:1) 被选择的答案是安全的,另一个答案不安全 2) 两个答案都是安全的 3) 两个答案都是不安全的。结果表明三种选择的占比分别为18%, 47%和35%。文章将上述第一个分类的数据移除,因为安全的回答自然会被人类偏爱。

3.2.2.2 Reward Modeling(RM)

  接下来,文章利用上述helpfulness, safety偏好数据分别训练两个奖励模型Helpfulness RMSafety RM。文章利用预训练的chat模型作为RM的初始化参数,这样可以包含预训练阶段学习到的知识,模型参数和架构与预训练阶段一致,除了将用于预测token的分类head修改为一个计算奖励的份的回归head。
  为了学习人类偏好数据,文章参考InstructGPT[3]中的ranking损失函数论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models,其中论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models为prompt,论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models为被选择的回答,论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models为被拒绝的回答,论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models表示奖励模型的输出分值。上述损失函数旨在令被偏好的回答论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models的得分尽可能高于被拒绝的回答论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models的得分。在此基础上,文章将收集到的偏好程度数据囊括进来:论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models,其中论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models表示偏好程度(前面收集的significantly better, better, slightly better或者unsure),论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models越大表示被选择的回答被人类的偏好程度越明显,从而两个回答之间的得分差异要更大。
  最后,将Helpfulness RM和Safety RM模型分别在Meta Helpfulness data和Meta Safety data上训练得到连个奖励模型。RM满足scaling law,即在相同的数据集上,模型越大,效果越好:
RM scaling law

3.2.2.3 Iterative Fine-Tuning

  由于Meta的人类偏好数据按周更新,从而可通过更新的数据迭代训练模型:RLHF-V1, …, RLHF-V5。具体来说,每个版本的RLHF模型可通过下述两种策略进行微调的:

  • PPO(proximal Policy Optimization):标准RLHF策略,第论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models步的样本为论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models步的更新策略的函数。PPO的目的是最大化奖励函数的期望,奖励函数定义如下:论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models,其中 论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models表示初始化的策略,公式第二项的作用为限制当前策略距离最初策略不要太远,论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models表示奖励函数得分的logits+白化,定义如下:论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models,简单解释下上式,IS_SAFETY就是代表模型中可能引发不安全回答的prompt 论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models,即对不安全的prompt或safety RM模型论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models给出得分小于0.15的prompt,我们让RLHF优先学习安全奖励模型,对其它prompt才学习有用性模型论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models
  • Rejection Sampling fine-tuning(RSFT):从模型输出中采样K个样本,通过RM选择最好的候选作为新的gold standard,在这些样本上对模型进行梯度更新。文章只对70B的模型进行RSFT,对7B和13B的模型,文章通过70B的rejection sample进行微调,相当于对大模型的蒸馏。

  在V4版本之前,文章通过RSFT进行微调,在V4之后,文章通过两个策略结合(先应用RSFT,再应用PPO)进行微调。此外,文章发现,迭代过程中模型出现了遗忘。为了解决此问题,文章每次都会将早期版本的样本包含进入微调的数据集。

3.2.3 多轮对话一致性

  作者发现,在多轮对话之后,RHLF模型很容易忘记最初的指令。为此文章提出了Ghost Attention(GAtt)。给定消息序列论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models,其中论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models代表用户在第论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models轮给出的信息,论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models为对应的模型回答。假设用户在最初的时候给出了指令inst(比如act as …)。为使模型在每一轮对话中遵循该指令,一种简单的方法是将inst直接拼接到每一个user信息中,即论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models。然后文章通过Rejection Sampling的到上述数据的回答(作为标记数据?);结下来在学习该标记数据时,只在第一轮增加inst,即论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models还原到真实状态,但这样得到的结果会造成其与标记数据的mismatch,从而文章在训练每一轮对话的时候将该轮对话之前的token loss全部设置为0。
  GAtt的效果非常好,实验发现GAtt下的inst可以持续到20+轮次的对话,直至达到最大的context长度。

3.2.4 RLHF结果

  首先文章基于模型对RLHF进行自动评估。为了确定RW自动评估的效果是否准确,文章收集了一系列的包含有用性和安全性的prompts测试机,然后让标记员评估回答的Likert Score。我们发现RM给出的分数和人类的Likert score强相关。基于RM对不同阶段的模型结果进行评估,文章发现RM模型和ChatGPT模型对llama2-chat模型评估效果都很好,在V3之后helpfulness和safety指标上都高于ChatGPT(50%),如下图所示。
llama2-chat自动评估

3.3 Safety

3.3.1 Safety in Pretraining

  首先文章预训练数据集未包含任何包含个人信息的数据,且未使用meta自己用户的数据,除此之外未进行其它过滤。
  文章对预训练语料库进行了统计分析

  • 在英语语料中,He出现的次数相比于She出现的要多,从而学习到的模型很可能会生成更多的He相关的语句
  • 文章考虑了宗教、性别、国际、种族和性取向这5种敏感话题,并计算语料库中每个话题的top5元素,如下表所示。可以看到,female出现次数更多(尽管she出现次数少),这说明这些词之间的表达语境可能不同。在国籍上,语料库中包含更多的西方国家。
    top5 terms in 5 axes
  • 文章通过HateBERT评估了英语语料中的有毒语料(toxicity),发现仅0.2%的文档中可能包含有毒文本(似然分数>=0.5)
  • 文章使用fastText来进行语言检测,超过0.5似然分数的认为属于该语言。最终检测结果表明89.7%的语料,从而针对其它语言要谨慎使用llama2。

  此外,文章通过safety benchmarks来对预训练模型进行安全分析,具体包含以下benchmarks:

  • Truthfulness:通过TruthfulQA数据来检测模型输出是否可靠、真实、符合常理。
  • Toxicity:通过ToxiGen来检测有毒回答
  • Bias:通过BOLD检测模型生成是否有政治倾向

  如下表所示,相比于llama1-7B,llama2-7B提升了21.37%的truthfulness,降低了7.61%的toxicity,且bias有提升。但相比于其它开源模型,llama2的toxicity还是很高,这是因为文章用到的数据集未经系统的过滤。但增加过滤之后模型很难再执行一些诸如hate speech的任务了。
safety benchmarks

3.3.2 Safety Fine-Tuning

  接下来文章介绍了在FT阶段的safety策略,主要包含以下几种

  • Supervised Safety FT:首先将adversarial prompts(用户选择的可能造成不安全回答的prompts)和安全的生成内容结合,将该数据放入SFT数据中。从而模型可以在RLHF之前就和安全指导对齐。
  • Safety RLHF:在RLHF阶段,文章训练了一个安全的safety RM来指导模型生成安全的回答。Safety RLHF的效果如下图所示,可以看到,下图左的Safety RM分值在应用safety RLHF之后(y轴)相比于之前(x轴)有明显的提升,且下图右的helpfulness RM分值在应用safety RLHF之后(y轴)相比于之前(x轴)未发生明显降低。
    safety RLHF
  • Safety Context Distillation:最后,文章将一个preprompt作为前文介绍的inst(比如:you are a safe and responsible preprompt )和prompt结合,让模型生成安全的回答。

  此外,文章证明了,当helpfulness数据不变时,safety数据越多,模型处理不安全prompts的能力越强,且低安全性的回答越少(ligher score),如下图所示
safety data scaling

3.3.3 Red Teaming

  文章组建了一个red teaming组,包含各个领域的专家来对不同风险分类进行模拟风险,从而减少模型的安全性问题。参与者需要标注出对话的风险领域、风险等级,作者会根据标注结果进行训练策略调整。
  定义模型的鲁棒性指标为论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models,文章发现在几轮red teaming 和模型优化之后,模型鲁棒性有所提升:论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models

3.3.4 Safety评估

  文章收集了2000个adversial prompts来进行人工评估,其中1351个是单轮对话,623个是多轮对话。然后人工对模型的安全性进行打分:1~5,分数越高表示越安全且有用。考虑打分1-2为violation,则如下图左所示,llama-整体的violation在所比较的模型中最低,且下图右表明llama2整体的整体打分也高于其它模型。
safety measures

4. 文章亮点

  文章训练并发行了一系列llama2模型,其中llama2-chat是迄今为止开源的chat模型中表现最好的。且文章给出的llama2给出了一系列安全性增强策略,可供其它LLM参考。

5. 原文传送门

Llama 2: Open Foundation and Fine-Tuned Chat Models
llama2 模型
llama2 代码

6. References

[1] 论文笔记–LLaMA: Open and Efficient Foundation Language Models
[2] 论文笔记–LIMA: Less Is More for Alignment
[3] 论文笔记–Training language models to follow instructions with human feedback
[4] GAtt示例

版权声明:本文为博主作者:Isawany原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/weixin_38124427/article/details/132250348

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2024年1月8日
下一篇 2024年1月8日

相关推荐