AI 文摘

llama2模型架构和模型训练细节


  • By AiBard123
  • November 23, 2023 - 2 min read



作者: AINLP 来源: AINLP

作者:qst

地址:https://zhuanlan.zhihu.com/p/659885184

整理:关于NLP那些你不知道的事

背景

大型语言模型(LLMs)已经展现出巨大的潜力,成为高效的人工智能助手,在需要专家知识的复杂推理任务中表现出色,覆盖了许多领域,包括专业领域,如编程和创意写作。它们通过直观的聊天界面与人类进行交互,这导致它们在广大公众中迅速得到了广泛的应用。为此写了一篇Llama2开源大模型架构和训练细节。

简介

Llama2论文链接

https://arxiv.org/pdf/2307.09288.pdf

研究主要公开2个大模型Llana2和Llama2-chat:

  • Llama 2是对Llama进行了更新的版本,可以理解为预训练版本。

  • Llama 2-chat是针对对话场景优化过的Llama 2微调版本,理解为监督学习+强化学习后的微调版本。

下面按照大模型的预训练和微调,两大核心章节展开,总体模型训练框架图如下:

Llama2框架图

从上框架图来看,整体步骤:

—>Llama 2进行预训练
—>有监督初始微调,创建了Llama 2-Chat的初始版本
—>使用人类反馈强化学习(RLHF)方法,具体是通过拒绝采样和近端策略优化(PPO),对模型进行迭代优化,使得模型输出人类偏好
—>在RLHF阶段,累积迭代奖励建模数据与模型改进并行进行,确保奖励模型保持在分布内

为了创建新的Llama 2模型系列,使用了优化的自回归Transformer,并进行了几项改进以提高性能。具体而言,进行了更强大的数据清洗,更新了数据组合,训练了更多的总标记数量(增加了40%),将上下文长度加倍(原先Llama2上下文长度是2k翻倍至4k),并使用分组查询注意力(GQA)来改善较大模型的推理可扩展性。

1 预训练

预训练数据说明

训练语料库包括来自公开可用数据源的新数据组合,不包括来自Meta产品或服务的数据。努力删除了来自某些已知包含大量私人个人信息的网站的数据。对2万亿标记的数据进行了训练,因为这提供了良好的性能-成本平衡,同时通过对最真实的来源进行过采样,以增加知识并减少幻觉(幻觉就是模型输出和事实不符的结论)。

预训练技术细节

Transformer 架构

采用了大部分Llama 的预训练设置和模型架构。同样使用了标准的Transformer架构(如上图),应用了RMSNorm进行预正则化,使用了SwiGLU激活函数和旋转位置嵌入。与Llama 相比,主要的架构差异包括增加的上下文长度和分组查询注意力(GQA)。

补充说明:分组查询注意力,懂得请跳过

GQA

“分组查询注意力”是一种有效的自然语言处理技术,将输入的文本按照不同的词汇组或者主题组进行划分,然后为每个分组单独应用注意力机制,以便模型更好地理解和处理文本中的信息。

概要来说主要特点具有分组灵活、个性化处理、提高效率和可解释性强等特点,能够在各种任务中发挥重要作用,提高模型的性能和准确率

具体参考论文链接

GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints

https://browse.arxiv.org/pdf/2305.13245.pdf

预训练超参数

  1. 使用AdamW优化器进行训练,其中β1 = 0.9,β2 = 0.95,eps = 10^(-5)

  2. 使用余弦学习率调度

  3. 在前2000个步骤进行预热,并将最终学习率衰减到峰值学习率的10%

  4. 使用了0.1的权重衰减和1.0的梯度裁剪

2 fine-tuning

微调数据说明

针对大模型的训练最核心的一步就是在微调阶段,Llama 2-Chat是几个月的研究和对齐技术迭代应用的结果,包括指令调优和RLHF,需要大量的计算和注释资源。

提示词示例图

数据分析发现有限的干净指令调优数据可以足够达到高质量水平。特别是对于公开的第三方数据分析对比得出数据普遍存在质量和多样性较差。

微调训练细节

整体微调框架:

微调+RLHF

初始微调训练步骤:

  1. 在微调过程中,每个样本由一个提示和一个答案组成,包括的不安全的提示语预训。(如提示词示例图所示)

  2. 初始学习率为(lr)2×10^(-5),权重衰减(weight decay)为0.1,批大小(batch_size)为64

  3. 使用自回归目标函数,并将用户提示中的标记的损失值设为零,因此只在答案标记上进行反向传播

  4. 总训练轮次2个epoch

强化学习阶段:

HLHF框架图

简单说明下强化学习的核心部分,其核心在于通过智能体与环境的交互来实现自我优化,在大模型训练过程中就是利用奖励模型来不断使模型输出更接近人类想要的输出结果,而这个核心就是如何使得奖励模型输出能和人类输出更对齐,当然奖励模型也可以使人类本身,也可以使训练出来的模型,而Llama系列模型是采用了训练奖励模型,论文中还提出后期优化上对奖励模型的优化等于间接优化最终模型。想系统学习强化学习->论文

Fine-Tuning Language Models from Human Preferences

https://arxiv.org/pdf/1909.08593

  • 奖励模型的初始化到训练

从预训练Llama-Chat模型检查点初始化为奖励模型,这么做是为了确保奖励模型“知道”聊天模型所知道的内容,防止因模型知识分布太大影响模型综合指标均衡。

RLHF训练(Reward Learning from Human Feedback)是一种应用于经过微调的语言模型的模型训练程序,旨在进一步使模型的行为与人类偏好和指令遵循保持一致。收集代表经验抽样的人类偏好的数据,其中人类标注员选择他们更喜欢的两个模型输出中的那一个。随后,将利用这些人类反馈数据来训练一个奖励模型,该模型学习人类标注员偏好的模式,并可以自动化偏好决策。打分综合考虑2项指标:有用性(称为Helpfulness RM)和安全性(Safety RM)

  • RLHF训练参数

同等参数量的模型使用与基础模型相同的优化器和参数。对于70B参数的Llama 2-Chat,最大学习率为5 × 10^-6,对于其余模型,最大学习率为1 × 10^-5。学习率按余弦下降的学习率计划进行下降,最低下降到最大学习率的10%。采用3%的总步数进行热身,最小值为5。batch_size保持固定为512对或1024行每批。

  • RLHF迭代训练

迭代微调 随着接收到更多批次的人类偏好数据注释,能够训练出更好的奖励模型并收集更多提示。因此,训练了连续的RLHF模型版本,分别称为RLHF-V1,…,RLHF-V5。

探索了两种主要算法的RLHF微调:

  1. 近端策略优化(PPO)这是RLHF文献中的标准方法,这里不做赘述。

  2. 拒绝抽样微调,从模型中抽样K个输出,并根据奖励选择最佳候选者,其中奖励被视为能量函数。在这里,使用选定的输出进行梯度更新。对于每个提示,获得最高奖励分数的样本被视为新的黄金标准。在新的排名样本集上微调模型,加强奖励信号。

这两个RL算法主要区别在于:

1.广度 —— 在拒绝抽样中,模型对于给定的提示会探索K个样本,而在PPO中只会生成一个样本。

2.深度 —— 在PPO中,训练时的样本是根据上一步梯度更新后的更新模型策略进行采样的。在拒绝抽样微调中,在应用类似于SFT的微调之前,使用模型的初始策略来收集所有的输出样本。然而,在实际的训练迭代中,两种RL算法之间的基本差异不太明显。直到RLHF(V4),仅使用了拒绝抽样微调,之后将两者顺序结合起来,在拒绝抽样的检查点上应用PPO,然后再次进行采样。

模型的后期优化

1 在其他条件相等的情况下,奖励模型的改进可以直接转化为Llama 2-Chat的改进。

2 RLHF模型在几轮对话后往往会忘记初始对话信息,特别是角色扮演对话过程中,为了解决这些限制,提出了Ghost Attention(GAtt)解决上下文信息遗忘问题(也有研究说GAtt不是非必要的,具体是否在训练过程中使用不做说明,只探讨技术)。

关于GAtt补充:

左侧没使用和右侧使用GAtt区别(是否连续使用表情回复)

Ghost Attention的主要特点是通过修改微调数据,利用上下文信息来帮助模型在多轮对话中保持一致性。GAtt使用一个"ghost"向量作为每个对话轮次的额外输入。这个向量代表了先前对话的所有内容的汇总信息,通过计算当前对话中每个词语与这个向量的余弦相似度,来调整每个词语的注意力分配。

这样的操作可以让模型更好地理解对话上下文,避免忘记之前的指令,从而使得对话的连贯性更好。同时,GAtt的实现方法非常简单,可以方便地集成到现有的模型中,并且不需要额外的训练或参数调整

总结

总的来说Llama2相对于Llama改进主要核心几点:有数据质和量上的提高、sft阶段采用了分组注意力机制增强的模型知识表证能力、强化学习阶段采用了GAtt机制解决上下文遗忘问题。

进技术交流群请添加AINLP小助手微信(id: ainlp2)

请备注具体方向+所用到的相关技术点

![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSJADkmZ2IX6Z23znAibuEevotDMq9iaMxiapK7jfMibiauGFkycicAJEs6x5U9SGyDJZ0S1tRed9TPNUUDQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。

  


  


![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSKABHCqVVQkVYPrM4XY1vsd0iaeuXzyJnoFc8cibd5mYb4wdA3WMQtiaPVmr0XLZHMuVibqWncibpnTSnQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)

阅读至此了,分享、点赞、在看三选一吧🙏

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具