大家好,我是HxShine。
今天分享Meta的Llama 2: Open Foundation and Fine-Tuned Chat Models:LLAMA2:开源的基础和微调后的聊天大语言模型。Meta开源模型在除了代码能力外都追平或者超过了ChatGPT的水平,它做了很多工作提升大模型的能力和安全性。其利用更高质量的数据来训练模型,同时利用强化学习迭代多次来优化模型效果是使其追上ChatGPT的最强大的法宝。同时目前如何对大模型进行强化学习放出来的文章也不多,本文给出非常多的RLHF实验和结果给大家进行参考,方便社区后续进行相关实验。总之LLaMA2是大模型开源之光,它以一己之力促进了整个LLM开源社区的发展,后续可能在其基础上也会有真正的更大更好的中文开源大模型出来,它的经验也值得大家去学习。
一、概述
Title: Llama 2: Open Foundation and Fine-Tuned Chat Models
论文地址:Llama 2: Open Foundation and Fine-Tuned Chat Models
代码:https://github.com/facebookresearch/llama
官网:https://ai.meta.com/llama/
1 Motivation
开源的LLM chat模型效果还不太好,还没一个开源大模型能和闭源模型(例如chatgpt)能比的。
ChatGPT是闭源的,LLM的有用性和安全性如何改进这一类论文还不是特别多。
2 Methods
2.1 整体架构
总结1: 参考InstructGPT[1],主要还是分为三个步骤(预训练、SFT、RLHF),其中RLHF用了两个Reward Model(Safety Reward Model、Helpful Reward Model),创新性地引入两个Reward模型,在保证安全性的同时,保持很好的有用性。
总结2: 在RLHF阶段,不断迭代优化奖励模型与增强模型能力对于确保奖励模型保持在分布范围内至关重要,本文后面的实验中,看到从最开始与chatgpt对比只有10%的胜率,用了本文提到的SFT和迭代RLHF后,胜率可高达60%。
总结3:Rejection Sampling(拒绝采样):强化学习方法的一种,每次采样多个结果,选取最佳的k个结果构建新的训练数据,更新梯度,同时迭代优化模型效果。
2.2 发布LLAMA2和LLAMA2-CHAT
总结1:本次同时发布了基座模型LLAMA2和Chat模型LLAMA2-CHAT,参数在7B、13B、70B都有。
总结2:在新的公开的混合数据来训练,语料库的大小增加了40%,将型的上下文长度增加了一倍,采用了分组查询注意力机制。
2.3 LLAMA2和LLMA1训练情况对比
说明:Llama 2系列模型。所有模型都使用4M token进行训练。其中更大的模型34B和70B模型使用分组查询注意力(GQA)来提高推理可扩展性,7B和13B还是通用的注意力机制。
总结1: 相对于llama1,llama2的窗口长度翻倍,训练tokens翻倍。
总结2: 使用分组查询注意(GQA)来提高推理可扩展性。
Grouped Query Attention:在常规的注意力机制中,我们通常将一个查询与一组键(key)和值(value)进行匹配,以便在执行各种任务(如翻译、问答等)时聚焦于相关信息。而在 "grouped query attention" 中,将多个查询作为一个组一起进行处理,从而引入了查询组之间的交互。这种注意力机制的一个应用场景是在多轮对话理解中,例如问答系统或对话生成模型。在多轮对话中,每一轮对话可以被视为一个查询组,其中每个查询表示一个轮次的输入。通过引入 "grouped query attention",模型可以更好地捕捉到不同轮次之间的信息流动和上下文关联,从而更准确地理解和生成响应。总之,"grouped query attention" 是一种注意力机制的变种,用于处理多组查询之间的交互,特别适用于多轮对话理解等场景,有助于提高模型的上下文理解和信息交互能力。
3 Conclusion
3.1 整体情况:远超开源大模型,除代码能力外追上了ChatGPT
与开源模型对比:发布了7B,13B,34B,70B的模型,在大多数评测基准上,LLaMA2模型优于开源聊天模型,详情如下图:
大模型评价维度:一般从代码,常识推理,世界知识,阅读理解,数学,比较热的几个数据集包括MMLU,BBH,AGI Eval等方面来评估。
与闭源模型对比:有用性和安全性都不错,除了代码能力,其他能力接近ChatGPT,可能是ChatGPT的合适替代品:
详细描述了我们对Llama 2-Chat进行微调和安全改进的方法,以使社区能够在我们的工作基础上再接再厉,并为LLM的负责任的发展做出贡献。
3.2 LLAMA2的Helpfulness表现
总结1:LLama-2 70b模型与chatgpt-0301的GSB评分为35.9:31.5:32.5,Llama2-70b有用性比ChatGPT-0301还要好点。
总结2: GPT4自动评估,绿色区域表明,LLama-2的模型更好,为了消除平局,使用了赢/(赢+输)来计算分数。
3.3 LLAMA2的Safety表现
总结:Llama-2 70b-chat违反安全的比例低于5%,比ChatGPT0301高于5%还要好,尽管评测有一定局限性。
二、预训练和Fine-tuning
1 预训练训练loss变化情况
总结1: 对比Llama1,PPL最终是到1.6左右,这里Llama2-70B到1.5了。
总结2: 观察到进行2T tokens预训练后,模型仍然没有任何饱和迹象,还能继续加数据继续训!!!
总结3: tokenizer方法和LLAMA1一样,包括:BPE编码,SentencePiece切词,32K。
2 有监督SFT关键是高质量的数据
总结: SFT数据的质量比数量更重要,本文发现开源的一些数据量比较大,但是多样性和质量都不太好,本文最终收集了27540条高质量的数据来训练,效果有明显的改善。
3 人类偏好数据收集(百万级别)
总结1:收集了现有的开源的和meta收集的数据集,总共290万,其中Meta整理了141万。
总结2:人类偏好的标签包括2种反馈,chosen或者rejected,感觉不是特别细。
总结3:还分析了各种偏好数据的比较的次数、每个对话的平均轮次、每个例子、每个提示和每个回答的平均token数等指标。
4 各种大模型在Meta偏好数据上的表现
总结1: GPT4在人类偏好数据集上效果都比较高。GPT4没有在Meta数据集上训练过,但是效果也是比较好的,但是比经过Meta数据训练的RM的效果还是要差一些。
总结2: 经过人类偏好数据集训练的Reward model能大幅提升在该领域的偏好效果。在Meta Safety以及Meta Helpful数据集上,经过对应场景数据训练的RM,Safety RM和Helpfulness RM在各自的领域都是最好的,比GPT4都要好。
5 Reward model效果和模型尺寸的关系
总结:数据越多,模型越大效果越好,70b的Reward模型更好的概率在80%+,13b的Reward模型更高的概率在75%-76%左右。
6 RL迭代训练(PPO和Rejection sampling fine-tuning)是关键的制胜法宝
总结1: 在强化学习阶段,不断迭代优化模型效果,主要探索了两种不同的RL算法来迭代优化,PPO和Rejection Sampling fine-tuning算法。
总结2: Rejection Sampling fine-tuning是一种从模型生成多个候选输出,通过奖励机制选择最佳输出,并将选定的输出用于梯度更新和微调的方法。这个方法在之前的研究基础上进行了拓展,使得模型可以通过选择的输出来进一步优化自身。
总结3: 拒绝采样和ppo的不同。宽度:在拒绝采样中,该模型为给定的提示探索K个样本,而PPO只探索1个样本。深度:在PPO中,在步骤t的训练期间,样本是上一步梯度更新后t-1的更新模型策略的函数。在拒绝采样微调中,我们在应用类似于SFT的微调之前,根据模型的初始策略对收集新数据集的所有输出进行采样。由于应用了迭代模型更新,两个RL算法之间的基本差异不那么明显。
结论:拒绝采样可以从多个样本中,选择更好的样本来训练迭代模型,采样的个数越多,效果越好。同时温度系数越高,多样性越高效果越越好。
总结1: 只在70B的LLAMA2-CHAT上使用了拒绝采样,其他小模型都是从大模型蒸馏过去。
总结2: 总共RL迭代了5轮,在RLHF(V4)之前,只使用拒绝采样微调,之后,我们按顺序将两者结合起来,在再次采样之前在结果的拒绝采样checkpoint上应用PPO。
7 利用GAtt方法来提升多轮问答中对系统指令的遵循能力
说明:在多轮问答中,经常会忘记系统指令,如左图所示忘记用emojis来回答的指令,后面用GAtt技术优化后,右边有明显改善。
GAtt方法:感觉是一种新的attention方法,对于第一条指令或者系统指令提供的注意力更强。
8 LLAMA2-CHAT的演变过程(RLHF迭代5轮的变化情况),效果非常强!
总结1: RLHF总共迭代了5次,每次迭代都有提升,其中前4次用的是拒绝采样来训练,v5用上了ppo提升更大。
总结2: RLHF带来的提升是比较明显的,从对chatgpt10%的胜率提升到了60%+。
9 人工评估有用性
总结: 在helpfulness prompts上,比其他开源模型效果要更好,甚至比闭源的chatgpt都要好一点。
三、Safety
1 在训练数据中引入更安全的数据
总结1: 安全的数据越多,效果越好,helpfulness保持稳定
总结2: 随着更多安全训练数据的添加,较低的安全RM分数(即最不安全的回答)逐渐消失,代表安全分非常低的结果越来越少。
2 利用Context distillation方法提升安全性
Context distillation方法:指在上下文中引入额外限制提升安全性的方法,这里提供了两种方法如下:
方法1: Generic Preprompt:提升回答中不应该包括任何有害的、不道德、或者有偏见的内容。
方法2: Preprompt with Answer Template:给出答案的模版,指导可能不安全的行为该如何回答。
结论1: 采取通用的预提示方法(Generic Preprompt)会提高安全RM分数,但带有定制答案模板的预提示(Preprompt with answer Template)会更有帮助。
结论2: 随着原始安全分的增加,Context Distillation带来的提升越来越小,甚至对高分数的样本带来负面影响,所以本文只在能提升安全分的样本上使用context distillation技术。
3 Red Teaming
目的1:被动风险识别可能不太够,这里还提出要主动风险识别来优化,本文把他叫做Red Teaming,主要用于分析哪些情况下可能会造成毒性的结果。
目的2: 安全是一个长尾问题,即使非常不频繁的case也会导致严重的后果。
发现的llm攻击特点:
• [早期模型]更有可能生成不安全的响应,而没有注意到它们包含有问题的内容。[稍晚的模型]能够发现有问题的内容,但是还是无法避免不输出。[最新模型]能够解决这些问题。
• 创意写作请求(歌曲、故事、诗歌等)可能会让他生成之前会强烈反对的内容(逃避监管机制,生成不安全的内容)。
• 在积极的上下文中嵌入有问题的请求,例如使用积极、进取、富有能量的问题进行掩盖,是最有效的攻击方法。
4 Safety Evaluation of Llama 2-Chat
总结:不同尺寸的LLAMA2系列模型中,都有更好的安全性,同时有用性也非常不错。
总结:多轮问答的有害性比单轮问答的有害性对别,增加比较多,但是LLAMA2系列模型都比其他模型好,34b的模型有点奇怪,本文也没有开源。
总结:比较了多个角度,包括有害的,非法的,低质量三大类情况下个模型的违反比例,LLAMA2系列表现都不错,34b的模型表现有点奇怪没有开源。
四、Discussion
1 SFT模型到RLHF方法给Reward model score分布带来的变化
总结:最还是的mix数据训练的SFT,低分数的比较多,随着利用标注数据,效果有了明显的提升,同时利用RLHF,获得高分数的样本越来越多,说明效果越来越好。
2 RLHF降低模型结果的了多样性
总结1:温度越高,多样性越好,但是做了RLHF后,多样性有了明显的下降。
总结2: Creative Prompts还能维持较高的多样性,同时上文也提到,可能更容易被攻击,所以感觉多样性和有毒性确实是一个需要权衡的过程。
五、思考与总结
总结:本文主要从预训练、Fine-tuning、Safety这几个角度来介绍了LLAMA2,其中引入高质量的数据,多次迭代优化Reward Model是非常关键的一步。
总结1: 训练数据质量非常重要。相对于多而质量不高的数据,SFT过程中,收集27540条高质量的数据就能有非常大的提升。
总结2: RLHF对对齐人类观念还是非常重要的。LLAMA2使用RLHF迭代训练后,对chatgpt的胜率从开始的10%的胜率提升到了60%+。
总结3: 模型越大,数据量越多,Reward Model的效果就越好。
总结4: 提升安全性可以在训练数据,SFT,RLHF多个方面进行优化。引入更安全的数据,可以降低毒性非常高的结果。引入RLHF,可以进一步提高输出结果的Reward Model分数。
总结5: 引入Context distillation方法也可以有效的提升安全性。通用的不能输出毒性结果的指令能够带来一定提升,同时对毒性结果进行后处理,能够更进一步提升安全性。
总结6: 多轮问答比单论问答有更高的出现毒性回答的概率。本文利用GAtt方法来优化多轮问答的安全性。
总结7: 安全性和多样性是需要权衡的。在看到RLHF对齐人类观念的同时,也要看到其多样性牺牲比较大。同时如果多样性比较高,也使其更有可能产生不安全的内容。
进技术交流群请添加我微信
请备注昵称+公司/学校+研究方向,否则不予通过
如果觉得文章能够帮助到你,点赞是对我最好的支持!