Llama 2:开放基础模型与微调聊天模型

发布于:2025-07-18 ⋅ 阅读:(21) ⋅ 点赞:(0)

温馨提示:
本篇文章已同步至"AI专题精讲" Llama 2:开放基础模型与微调聊天模型

摘要

在本研究中,我们开发并发布了 Llama 2,一组预训练和微调的大型语言模型(LLMs),其规模从 70 亿参数到 700 亿参数不等。我们的微调模型称为 Llama 2-Chat,针对对话类场景进行了优化。在我们测试的大多数基准任务中,这些模型的性能优于现有的开源聊天模型;基于我们对有用性和安全性的人工评估,Llama 2-Chat 可能是闭源模型的一个合适替代方案。我们详细描述了对 Llama 2-Chat 的微调方法和安全性改进,以便社区能够在我们的工作基础上继续发展,并共同推动大型语言模型的负责任开发。

在这里插入图片描述

1 引言

大型语言模型(LLMs)已被证明是极具潜力的 AI 助手,在需要跨多个领域专家知识的复杂推理任务中表现出色,包括编程和创意写作等专业领域。它们通过直观的聊天界面实现与人类的交互,从而在公众中迅速并广泛普及。

考虑到训练方法看似简单,LLMs 所展现出的能力令人惊叹。自回归 transformer 在大规模的自监督语料库上进行预训练,随后通过例如人类反馈强化学习(Reinforcement Learning with Human Feedback, RLHF)等技术与人类偏好对齐。尽管训练方法本身较为简单,但高昂的计算成本限制了 LLMs 的开发,仅限于少数参与者。目前已有一些预训练 LLMs 的公开发布(如 BLOOM(Scao et al., 2022)、LLaMa-1(Touvron et al., 2023)、以及 Falcon(Penedo et al., 2023)),其性能接近闭源预训练模型的竞争者,如 GPT-3(Brown et al., 2020)和 Chinchilla(Hoffmann et al., 2022),但这些模型都无法真正替代闭源“产品级” LLMs,例如 ChatGPT、BARD 和 Claude。这些闭源产品级模型经过了大量微调,以更好地对齐人类偏好,极大提升了其可用性与安全性。而这一过程可能需要大量的计算资源和人工标注成本,且通常不透明、难以复现,从而限制了社区在 AI 对齐研究方面的进展。

在本研究中,我们开发并发布了 Llama 2 系列模型,包括预训练和微调的 LLMs,即 Llama 2 与 Llama 2-Chat,其规模最大可达 700 亿参数。在我们测试的一系列有用性与安全性基准中,Llama 2-Chat 模型通常优于现有的开源模型。同时,在我们所进行的人类评估中,这些模型在某些方面已可与部分闭源模型相媲美(见图 1 和图 3)。我们通过特定的安全性数据标注与微调、红队测试以及迭代评估等措施增强了这些模型的安全性。此外,本文还详尽介绍了我们的微调方法和提升 LLM 安全性的策略。我们希望这种开放性能够使社区复现微调的 LLM,并持续提升这些模型的安全性,为更加负责任的 LLM 开发铺平道路。我们还分享了在开发 Llama 2 和 Llama 2-Chat 过程中发现的一些新现象,例如工具使用能力的涌现以及知识的时间组织方式。
在这里插入图片描述

我们将面向公众发布以下模型,用于研究和商业用途:

  1. Llama 2:这是 Llama 1 的更新版本,使用全新组合的公开数据进行了训练。我们将预训练语料的规模增加了 40%,将模型的上下文长度翻倍,并采用了 grouped-query attention(Ainslie et al., 2023)。我们发布了参数规模为 7B、13B 和 70B 的 Llama 2 模型版本。我们还训练了 34B 的模型变体,并在本文中报告其性能,但该版本不予发布

  2. Llama 2-Chat:这是在 Llama 2 基础上微调得到的模型,针对对话场景进行了优化。我们同样发布了其 7B、13B 和 70B 参数规模的版本。

我们认为,只要以安全方式进行,LLMs 的开放发布将对社会产生净正效益。与所有 LLM 一样,Llama 2 是一项新兴技术,其使用存在潜在风险(Bender et al., 2021b;Weidinger et al., 2021;Solaiman et al., 2023)。目前为止的测试是在英语环境下进行的,尚未——也不可能——覆盖所有使用情境。因此,在部署任何基于 Llama 2-Chat 的应用程序之前,开发者应根据其具体应用场景执行相应的安全性测试与调优。我们提供了《负责任使用指南》以及代码示例‖,以支持 Llama 2 和 Llama 2-Chat 的安全部署。我们在第 5.3 节中详细介绍了我们的责任发布策略。

本文其余部分组织如下:第 2 节介绍预训练方法,第 3 节介绍微调方法,第 4 节介绍模型安全性方案,第 5 节包含关键观察与见解,第 6 节回顾相关工作,第 7 节为总结。

在这里插入图片描述

2 预训练

为了构建全新的 Llama 2 模型系列,我们从 Touvron 等人(2023)所描述的预训练方法出发,使用了优化后的自回归 transformer,但为了提升性能,我们做出了一些改进。具体而言,我们进行了更强健的数据清洗、更新了数据混合策略、总 token 数增加了 40%、上下文长度翻倍,并在更大模型中采用了 grouped-query attention(GQA),以提升推理可扩展性。表 1 比较了新发布的 Llama 2 模型与 Llama 1 模型的属性。

2.1 预训练数据

我们的训练语料包含了新的公开数据混合,这些数据不包含来自 Meta 产品或服务的信息。我们特别努力去除来自某些站点的数据,这些站点被已知包含大量关于私人个体的个人信息。我们在总计 2 万亿个 tokens 的数据上进行训练,这是性能与成本之间的良好权衡。我们对最具事实性的语料进行了上采样,以提升模型知识性并抑制幻觉现象。

我们还进行了多种预训练数据的研究分析,以帮助用户更好理解模型的潜在能力与局限;相关结果见第 4.1 节。

2.2 训练细节

我们大多数的预训练设置与模型架构延续自 Llama 1。我们使用标准 transformer 架构(Vaswani et al., 2017),采用 RMSNorm(Zhang and Sennrich, 2019)进行预归一化,激活函数使用 SwiGLU(Shazeer, 2020),位置编码使用旋转位置嵌入(RoPE, Su et al., 2022)。与 Llama 1 的主要结构差异在于上下文长度的提升以及引入了 grouped-query attention(GQA)。我们在附录 A.2.1 节详细介绍了这些变化,并通过消融实验展示它们的重要性。

超参数设置:我们使用 AdamW 优化器(Loshchilov and Hutter, 2017),其参数为 β 1 = 0.9 , β 2 = 0.95 , e p s = 1 0 − 5 β₁ = 0.9,β₂ = 0.95,eps = 10⁻⁵ β1=0.9β2=0.95eps=105。学习率采用余弦退火策略,预热阶段为 2000 步,最终学习率衰减至峰值学习率的 10%。我们设置权重衰减为 0.1,梯度裁剪阈值为 1.0。图 5(a) 展示了 Llama 2 在这些超参数设置下的训练损失情况。
在这里插入图片描述

在这里插入图片描述

Tokenizer
我们使用与 Llama 1 相同的 tokenizer;该 tokenizer 使用字节对编码(bytepair encoding, BPE)算法(Sennrich et al., 2016),并基于 SentencePiece(Kudo and Richardson, 2018)实现。与 Llama 1 一样,我们将所有数字拆分为单个数字,将未知的 UTF-8 字符按字节拆解。总词表大小为 32k 个 token。

2.2.1 训练硬件与碳足迹

训练硬件:我们在 Meta 的 Research Super Cluster(RSC)(Lee and Sengupta, 2022)以及内部生产集群上对模型进行了预训练。这两个集群均使用 NVIDIA A100 GPU。有两个关键差异:首先是网络互连类型的不同:RSC 使用 NVIDIA Quantum InfiniBand,而生产集群则采用基于普通以太网交换机的 RoCE(RDMA over Converged Ethernet)解决方案。这两种互连方案都提供 200 Gbps 的端口速率。第二个差异是每张 GPU 的功耗限制——RSC 限定为 400W,而生产集群为 350W。通过这两个集群的比较,我们能够评估不同互连方案在大规模训练中的适用性。RoCE(作为一种更经济的商用互连网络)在多达 2000 张 GPU 的规模下,其扩展性几乎与昂贵的 InfiniBand 相当,这使得预训练过程更加民主化。
在这里插入图片描述

预训练的碳足迹
参考前人研究(Bender et al., 2021a;Patterson et al., 2021;Wu et al., 2022;Dodge et al., 2022),并依据 GPU 设备的功耗估算与碳效率,我们尝试计算 Llama 2 模型预训练所产生的碳排放。GPU 的实际功耗取决于其利用率,可能与我们所采用的 GPU 功率估算值(即热设计功率,TDP)不同。需要注意的是,我们的计算未考虑互连设备、非 GPU 的服务器功耗,或数据中心冷却系统所消耗的额外能量。此外,AI 硬件(如 GPU)的制造过程中产生的碳排放,也可能进一步增加整体碳足迹,如 Gupta 等人(2022b,a)所指出。表 2 总结了 Llama 2 系列模型预训练阶段的碳排放情况。我们共计在 A100-80GB(TDP 为 400W 或 350W)设备上执行了约 330 万 GPU 小时的计算任务。据估算,总排放为 539 吨二氧化碳当量(tCO₂eq),其中 100% 已通过 Meta 的可持续发展项目直接抵消。我们的开源发布策略也意味着其他公司无需重复承担这些预训练成本,从而节约了更多全球资源。

2.3 Llama 2 预训练模型评估

在本节中,我们报告 Llama 1 与 Llama 2 基础模型、MosaicML 的 Pretrained Transformer(MPT)†† 模型,以及 Falcon(Almazrouei et al., 2023)模型在标准学术基准上的表现。所有评估均使用我们的内部评测库完成。MPT 与 Falcon 的评估结果为我们在内部复现所得。对于这些模型,我们在内部评估结果与公开报告中选择最优分数。

表 3 总结了一系列流行基准上的整体性能表现。关于安全相关基准,请参见第 4.1 节。我们将这些基准分为以下几类,各基准的详细结果可见附录 A.2.2 节:

  • Code:我们报告模型在 HumanEval(Chen et al., 2021)和 MBPP(Austin et al., 2021)上的平均 pass@1 分数。

  • Commonsense Reasoning:我们报告以下基准的平均结果:PIQA(Bisk et al., 2020)、SIQA(Sap et al., 2019)、HellaSwag(Zellers et al., 2019a)、WinoGrande(Sakaguchi et al., 2021)、ARC easy 与 challenge(Clark et al., 2018)、OpenBookQA(Mihaylov et al., 2018)以及 CommonsenseQA(Talmor et al., 2018)。CommonsenseQA 使用 7-shot,其余均为 0-shot。

  • World Knowledge:我们报告模型在 NaturalQuestions(Kwiatkowski et al., 2019)与 TriviaQA(Joshi et al., 2017)上 5-shot 的平均性能。

  • Reading Comprehension:我们报告 SQuAD(Rajpurkar et al., 2018)、QuAC(Choi et al., 2018)与 BoolQ(Clark et al., 2019)这三个阅读理解任务的 0-shot 平均表现。

  • MATH:我们报告 GSM8K(8-shot)(Cobbe et al., 2021)与 MATH(4-shot)(Hendrycks et al., 2021)两个基准的 top-1 平均分。
    在这里插入图片描述

    Popular Aggregated Benchmarks:我们报告模型在 MMLU(5-shot)(Hendrycks et al., 2020)、Big Bench Hard(BBH)(3-shot)(Suzgun et al., 2022)以及 AGI Eval(3–5-shot)(Zhong et al., 2023)上的整体结果。对于 AGI Eval,我们仅评估英文任务并报告其平均结果。

如表 3 所示,Llama 2 模型在各项任务中均优于 Llama 1 模型。尤其是,Llama 2 70B 在 MMLU 和 BBH 上的得分分别较 Llama 1 65B 提高约 5 分和 8 分。Llama 2 7B 与 30B 模型在除代码基准之外的所有类别上均优于相应规模的 MPT 模型。对于 Falcon 模型,Llama 2 的 7B 与 34B 模型在所有基准类别中也优于 Falcon 7B 与 40B 模型。

此外,Llama 2 70B 模型在性能上超过了所有开源模型。除了开源模型之外,我们还将 Llama 2 70B 与闭源模型进行了对比。如表 4 所示,Llama 2 70B 在 MMLU 和 GSM8K 上的表现接近 GPT-3.5(OpenAI, 2023),但在代码基准上存在显著差距。Llama 2 70B 的结果在几乎所有基准上均与 PaLM(540B)(Chowdhery et al., 2022)持平或更好。尽管如此,Llama 2 70B 与 GPT-4 以及 PaLM-2-L 之间仍存在显著的性能差距。

我们还分析了潜在的数据污染问题,具体内容见附录 A.6。
在这里插入图片描述

3 微调

Llama 2-Chat 是历经数月研究与多轮对齐技术迭代应用的成果,这些对齐技术包括指令微调与人类反馈强化学习(RLHF),均需大量计算与标注资源支持。在本节中,我们报告了我们在监督微调(第 3.1 节)、初始与迭代奖励建模(第 3.2.2 节)以及 RLHF(第 3.2.3 节)方面的实验与发现。我们还介绍了一种新技术——Ghost Attention(GAtt),我们发现该技术有助于控制多轮对话中的对话流(第 3.3 节)。关于微调模型的安全性评估,详见第 4.2 节。

3.1 监督微调(SFT)

在这里插入图片描述

开始阶段
为了启动微调(SFT)阶段,我们使用了公开的指令微调数据(Chung et al., 2022),这与 Touvron 等人(2023)中所使用的数据相同。

质量即一切
第三方的 SFT 数据来源众多,但我们发现其中许多数据的多样性和质量不足,尤其是在对齐 LLM 至对话式指令时表现不佳。因此,我们优先收集了数千条高质量的 SFT 样本,如表 5 所示。通过舍弃来自第三方数据集的数百万样本,转而使用我们供应商标注团队提供的较少但高质量样本,我们的结果有了显著提升。这一发现与 Zhou 等人(2023)的结论相似,即少量清洁的指令微调数据足以达到较高的质量水平。我们发现约几万条的 SFT 标注就足以取得高质量结果。我们在累计收集了 27,540 条标注后停止了 SFT 标注。需要注意的是,我们未使用任何 Meta 用户数据。

我们还观察到,不同的标注平台和供应商会显著影响下游模型性能,这凸显了即使在使用供应商时进行数据质量检查的重要性。为验证数据质量,我们仔细审查了 180 个样本,将人工标注与模型生成的样本进行对比分析。令人惊讶的是,来自最终 SFT 模型的生成输出往往与人工手写的 SFT 数据不相上下,表明我们可以调整优先级,将更多标注资源投入到基于偏好的 RLHF 标注中。

微调细节
在监督微调阶段,我们采用余弦学习率调度,初始学习率为 2 × 10⁻⁵,权重衰减为 0.1,批量大小为 64,序列长度为 4096 token。微调样本由提示(prompt)和回答(answer)组成。为确保模型序列长度被充分利用,我们将训练集中的所有提示与回答拼接起来,使用特殊 token 分隔提示和回答部分。训练时采用自回归目标函数,且对用户提示部分的 token 不计算损失,反向传播仅作用于回答 token。最终,我们对模型进行了 2 个 epoch 的微调。

3.2 基于人类反馈的强化学习(RLHF)

RLHF 是一种应用于微调语言模型的训练方法,用以进一步使模型行为符合人类偏好和指令遵循。我们收集了体现人类偏好的数据,具体做法是让人工标注者在两个模型输出中选择他们更偏好的一个。这些人类反馈随后被用来训练一个奖励模型,该模型学习标注者偏好的模式,从而实现偏好决策的自动化。

3.2.1 人类偏好数据收集

接下来,我们收集用于奖励建模的人类偏好数据。我们选择了二元比较协议,而非其他方案,主要因为它能最大化采集到的提示多样性。当然,其他策略也值得探索,留作未来工作。

我们的标注流程如下:先让标注者撰写一个提示,然后基于提供的标准,在两个采样的模型回复间做选择。为最大化多样性,两个回复分别来自不同模型变体,并且调整了温度超参数。除了强制选择外,我们还要求标注者对所选回复相对于另一个回复的优越程度进行标注,等级包括“明显更好”、“更好”、“略好”或“几乎无差/不确定”。

在偏好标注中,我们重点关注“helpfulness”(帮助性)和“safety”(安全性)。帮助性指 Llama 2-Chat 回复满足用户请求并提供所需信息的程度;安全性指模型回复是否不安全,例如“提供制造炸弹的详细说明”可能被认为是有帮助的,但根据安全指南是不允许的。区分这两项使我们能对每一项应用具体指南,更好地指导标注者,例如安全性标注专注于对抗性提示等内容。

除标注指南差异外,我们还在安全阶段额外收集安全标签,将模型回复归类为三类:1)优选回复安全,另一个不安全;2)两者均安全;3)两者均不安全。安全数据集中三类比例分别为 18%、47% 和 35%。我们不包含优选回复不安全而另一个回复安全的示例,因为我们认为更安全的回复也更受人类偏好。安全指南及详细标注信息详见第 4.2.1 节。

人类标注按周批次收集。随着偏好数据量增加,奖励模型得以改进,Llama 2-Chat 训练出更优版本(见第 5 节图 20)。Llama 2-Chat 的改进也导致模型数据分布变化。由于奖励模型准确率在面对新分布时可能迅速下降(如过度专门化,见 Scialom et al., 2020b),每次新一轮 Llama 2-Chat 微调前,收集基于最新模型迭代的偏好数据非常重要,以保持奖励模型的分布一致性和准确性。

表 6 报告了我们随时间收集的奖励建模数据统计,并与多份开源偏好数据集进行了对比,包括 Anthropic Helpful and Harmless(Bai et al., 2022a)、OpenAI Summarize(Stiennon et al., 2020)、OpenAI WebGPT(Nakano et al., 2021)、StackExchange(Lambert et al., 2023)、Stanford Human Preferences(Ethayarajh et al., 2022)及 Synthetic GPT-J(Havrilla)。我们收集了超过一百万条基于人类应用特定指南的二元比较数据,称为 Meta 奖励建模数据。需要注意的是,不同文本领域中提示与回答的 token 数量存在差异。摘要和在线论坛数据通常有较长提示,而对话式提示则较短。相比现有开源数据集,我们的偏好数据具有更多的对话轮次且平均更长。

3.2.2 奖励建模

奖励模型输入模型回复及其对应提示(包括前轮对话上下文),输出一个标量分数,用以表示生成回复的质量(如帮助性和安全性)。基于此分数作为奖励,我们可在 RLHF 训练中优化 Llama 2-Chat,使其更符合人类偏好,提升帮助性和安全性。

已有研究发现,帮助性与安全性有时存在权衡(Bai et al., 2022a),这使得单一奖励模型难以兼顾两者。为解决此问题,我们训练了两个独立奖励模型,一个针对帮助性(称为 Helpfulness RM),另一个针对安全性(称为 Safety RM)。

奖励模型由预训练聊天模型的检查点初始化,确保两个模型共享预训练时获得的知识。简单来说,奖励模型“知道”聊天模型知道的内容。这避免了两模型信息不匹配导致青睐幻觉内容的情况。模型架构及超参数与预训练语言模型相同,只是将下一 token 预测的分类头替换为回归头,用于输出标量奖励。

在这里插入图片描述

训练目标

为了训练奖励模型,我们将收集到的成对人类偏好数据转换为二元排序标签格式(即“被选中”与“被拒绝”),并强制要求被选中回复的分数高于被拒绝回复。我们使用了与 Ouyang 等人(2022)一致的二元排序损失:

L ranking = − log ⁡ σ ( r θ ( x , y c ) − r θ ( x , y r ) ) ( 1 ) L_{\text{ranking}} = -\log \sigma \big(r_\theta(x, y_c) - r_\theta(x, y_r)\big)\quad(1) Lranking=logσ(rθ(x,yc)rθ(x,yr))(1)

其中, r θ ( x , y ) r_\theta(x, y) rθ(x,y) 是模型权重 θ \theta θ 下对提示 x x x 及回复 y y y 输出的标量分数, y c y_c yc 是标注者选择的优选回复, y r y_r yr 是被拒绝的回复。

基于该二元排序损失,我们针对帮助性和安全性的奖励模型分别进行了改进。考虑到第 3.2.1 节所述的偏好等级为四档(如“明显更好”),利用这一信息显式地引导奖励模型对差异更大的生成结果分配更显著的分数差异是有益的。为此,我们在损失中加入了一个边际(margin)项:

L ranking = − log ⁡ σ ( r θ ( x , y c ) − r θ ( x , y r ) − m ( r ) ) ( 2 ) L_{\text{ranking}} = -\log \sigma \big(r_\theta(x, y_c) - r_\theta(x, y_r) - m(r)\big)\quad(2) Lranking=logσ(rθ(x,yc)rθ(x,yr)m(r))(2)

其中,边际 m ( r ) m(r) m(r) 是偏好等级的离散函数。自然地,对于差异明显的回复对使用较大边际,对于差异较小的回复对使用较小边际(详见表 27)。我们发现这一边际项能够提升帮助性奖励模型的准确率,尤其在两条回复更易区分的样本上。详细的消融实验和分析见附录 A.3.3 表 28。

数据组成

我们将新收集的数据与现有开源偏好数据集结合,形成更大的训练集。初期在收集偏好标注数据的同时,使用开源数据集对奖励模型进行启动训练。值得注意的是,在本研究中,RLHF 的奖励信号旨在学习人类对 Llama 2-Chat 输出的偏好,而非任何模型的输出。但实验中未观察到开源偏好数据导致的负迁移。因此,我们决定将其保留在训练数据中,以增强奖励模型的泛化能力,防止奖励被“欺骗”,即 Llama 2-Chat 利用奖励模型弱点,通过表现较差却得分虚高的方式。

针对来自不同来源的训练数据,我们对帮助性和安全性奖励模型分别尝试了多种混合策略,以确定最佳方案。经过大量实验,帮助性奖励模型最终使用了所有 Meta 帮助性数据,配合等比例从 Meta 安全数据及开源数据中均匀采样的数据。Meta 安全奖励模型则使用所有 Meta 安全和 Anthropic 无害(Harmless)数据,混合 90% Meta 帮助性和 10%开源帮助性数据。我们发现 10% 帮助性数据的设置对于选中与拒绝回复均被判定为安全的样本准确率提升显著。

训练细节

训练周期为整个训练数据集的 1 个 epoch。早期实验发现训练过长容易过拟合。优化器参数与基础模型保持一致。Llama 2-Chat 70B 模型最大学习率为 5 × 1 0 − 6 5 \times 10^{-6} 5×106,其余模型为 1 × 1 0 − 5 1 \times 10^{-5} 1×105。学习率采用余弦调度,最低降至最大学习率的 10%。采用总训练步数 3%(至少 5 步)作为预热(warm-up)步数。有效批量大小固定为 512 对样本,等同于每批 1024 行数据。
在这里插入图片描述

温馨提示:
阅读全文请访问"AI深语解构" Llama 2:开放基础模型与微调聊天模型


网站公告

今日签到

点亮在社区的每一天
去签到