LLM 预训练和评估奖励模型的技巧

LLM 预训练和评估奖励模型的技巧

首页休闲益智组合模型2更新时间:2024-06-06

翻译自SEBASTIAN RASCHKA的“Tips for LLM Pretraining and Evaluating Reward Models”

原文链接:Tips for LLM Pretraining and Evaluating Reward Models

翻译的时候有删节。

1. 持续预训练大型语言模型的简单且可扩展的策略

我们经常讨论微调LLM以遵循指示。然而,用新知识或特定领域数据更新LLM在实践中也非常相关。最近的论文《持续预训练大型语言模型的简单且可扩展的策略》提供了关于如何继续使用新数据预训练LLM的宝贵见解。

具体来说,研究人员比较了以三种不同方式训练的模型:

  1. 常规预训练:使用随机权重初始化模型并在数据集 D1 上对其进行预训练。
  2. 继续预训练:采用上述场景中的预训练模型,并在数据集 D2 上进一步预训练。
  3. 在组合数据集上重新训练:与第一个场景一样,使用随机权重初始化模型,但在数据集 D1 和 D2 的组合(并集)上对其进行训练。

三种预训练方法图解

方法 3,在组合数据集上进行再训练,是该领域普遍采用的做法,例如,正如我去年在讨论 BloombergGPT 论文时所写的那样。这是因为重新训练通常有助于找到良好的学习率计划(通常采用线性预热,然后进行半周期余弦衰减),并有助于防止灾难性遗忘。

灾难性遗忘是指神经网络,特别是在顺序学习任务中,在学习新信息时忘记先前学到的信息的现象。随着时间的推移,这在跨不同数据集或任务训练的模型中尤其成问题。

因此,通过在包含新旧信息的组合数据集上重新训练模型,模型可以在适应新数据的同时保持其在先前学习的任务上的性能。

1.1 要点和结果

这篇长达24页的论文报告了大量的实验,并附有无数的图表,对于今天的标准来说已经非常彻底了。为了将其缩小为易于理解的格式,下图总结了主要结果,表明通过持续的预训练可以达到与从头开始对组合数据集进行重新训练所达到的相同的良好性能。

持续预训练比从头开始重新训练便宜 2 倍(因为在预训练模型已经可用的情况下,它只使用一半的数据),但可以达到相同的良好性能。资料来源:带注释的图来自https://arxiv.org/abs/2403.08763 。

成功应用持续预训练的“技巧”是什么?

  1. 重新加热和重新衰减学习率(参见下一节)。
  2. 将原始预训练数据 (D1) 的一小部分(例如 5%)添加到新数据集 (D2) 以防止灾难性遗忘。请注意,0.5% 和 1% 等较小的分数也有效。
1.2 学习率表

在预训练或微调 LLM 时,通常使用学习率计划,该计划从线性预热开始,然后是半周期余弦衰减,如下所示。

用于预训练和微调 LLM 的通用学习率计划。来源:从头开始构建大型语言模型,https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-D/01_main-chapter-code/appendix-D.ipynb )

如上图所示,在线性预热期间,学习率从较低值开始,并在训练的初始阶段逐渐增加到预定义值。该方法有助于在进入主要训练阶段之前稳定模型的权重参数。随后,在预热期之后,学习率采用余弦衰减方案来训练并逐渐降低模型的学习率。

考虑到预训练的学习率非常低,我们如何调整学习率以继续预训练?通常,我们将学习率重新引入预热阶段,然后进入衰减阶段,这称为重新升温和重新衰减。简而言之,我们采用与初始预训练阶段使用的完全相同的学习率计划

持续预训练的时间表。基于从头开始构建大型语言模型的图,https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-D/01_main-chapter-code/appendix-D.ipynb

作者发现重新变暖和重新腐烂确实有效。此外,他们还与所谓的“无限学习率”时间表进行了比较,该时间表指的是 2021 Scaling Vision Transformers 论文中概述的时间表。该时间表以温和的余弦(或可选的反平方)衰减开始,过渡到恒定的学习速率,并以退火的急剧衰减结束。

对 3 个预训练阶段的重新升温和重新衰减以及无限学习率计划进行实验。资料来源:带注释的图来自https://arxiv.org/abs/2403.08763 。

无限学习率计划很方便,因为人们可以在恒定学习率阶段通过短退火阶段随时停止预训练(而不是完成余弦半周期)。然而,如上图结果所示,使用“无限学习率”进行预训练和持续预训练是没有必要的。常见的重新升温和重新衰减会导致与无限学习率计划相同的最终损失。

1.3 结论和注意事项

据我所知,重新加热和重新衰减,以及将原始预训练数据添加到新数据中,或多或少是常识。然而,我真的很感激研究人员花时间在这份非常详细的 24 页报告中正式测试这种方法。

此外,我发现有趣的是,“无限学习率”计划是不必要的,并且本质上会导致与我们通过常见的线性预热和半周期余弦衰减获得的相同的最终损失。

虽然我很欣赏本文中进行的全套实验,但一个潜在的警告是,大多数实验都是在相对较小的 405M 参数模型和相对经典的 LLM 架构 (GPT-NeoX) 上进行的。然而,作者表明,结果也适用于 10B 参数模型,这使我们有理由相信这些结果也适用于更大(例如,70B 参数)模型以及可能的架构变化。

研究人员专注于预训练类似大小的数据集。此外,附录还表明,当仅使用 50% 或 30% 的数据集进行持续预训练时,这些结果是一致的。未来一项有趣的研究是看看当预训练数据集远小于初始预训练数据集(这是实践中的常见情况)时,这些趋势和建议是否成立。

未来另一个有趣的研究是测试持续的预训练如何影响指令微调LLM的指令跟踪能力。我特别好奇的是,在通过持续预训练更新LLM知识后,是否有必要添加另一轮指令微调。


附带说明一下,如果您对有效地预训练大型语言模型 (LLM) 感兴趣,我们最近开源了一个名为Thunder的 PyTorch 编译器。

当我的同事将其应用到我帮助开发的LitGPT开源 LLM 库时,他们在预训练 Llama 2 7B 模型时实现了 40% 的运行时性能提升。

使用 Thunder 预训练 LLM,图片来源:https://github.com/Lightning-AI/lightning-thunder


2. 评估语言建模的奖励模型

RewardBench:评估语言建模的奖励模型引入了用于人类反馈强化学习 (RLHF) 的奖励模型的基准,这是LLM流行的指令调整和对齐程序。

在讨论本文的主要内容之前,我们先快速绕一下,并在下一节中简要讨论 RLHF 和奖励建模。

2.1 奖励模型和RLHF简介

RLHF 旨在改进LLM,使其生成的输出更符合人类偏好。通常,这是指模型响应的有益性和无害性。我还在上一篇文章中更详细地介绍了 RLHF 流程:https://magazine.sebastianraschka.com/p/llm-training-rlhf-and-its-alternatives 。

请注意,本文重点关注奖励模型的基准测试,而不是通过 LLM 获得的指令微调 LLM。下图总结了 RLHF 流程,该流程用于创建 ChatGPT 和 Llama 2-chat 等遵循指令的 LLM。

用于根据人类偏好微调和调整LLM的 3 步 RLHF 流程摘要。基于 InstructGPT 论文中带注释的数字,https://arxiv.org/abs/2203.02155 。

如上图所示,奖励模型创建是 RLHF 流程的中间步骤。此外,奖励模式本身就是LLM。

奖励模型和原始基础 LLM 之间的区别在于,我们调整奖励模型的输出层,使其返回可用作奖励标签的分数。为了实现这一目标,我们有两个选择:(1) 用生成单个 logit 值的新线性层替换现有的输出层,或者 (2) 重新利用现有输出 logit 之一并使用奖励标签对其进行微调。

训练奖励模型的过程和损失函数类似于训练用于分类的神经网络。在常规二元分类中,我们预测输入示例属于类别 1 还是类别 0。我们使用逻辑函数对此进行建模,该函数计算输入示例属于类别 1 的类别成员概率。

下图总结了通过逻辑函数进行二元分类任务的主要要点

二元分类的总结。

如果您不熟悉训练分类器的逻辑函数,可以在此处找到更多信息:

关于奖励建模,我们可以使用二元分类的逻辑损失(将结果标记为 0 或 1)来训练奖励模型。

然而,对于奖励模型,更常见的是使用类似的 Bradley-Terry 模型,该模型是为成对比较任务设计的,其目标不是将项目独立分类,而是确定项目对之间的偏好或排名。

Bradley-Terry 模型在感兴趣的结果是相对比较的场景中特别有用,例如“这两项中哪一项是首选?” 而不是绝对的分类,例如“这个项目是 0 还是 1?”

用于相对比较的 Bradley-Terry 模型概述。

2.2.RLHF 与直接偏好优化 (DPO)

在大多数模型中,例如 Llama 2 和 OpenAI 的 InstructGPT(可能与 ChatGPT 模型背后的方法相同),奖励模型被训练为分类器来预测两个答案之间的人类偏好概率,如上一节所述。

然而,训练奖励模型需要额外的步骤,在实践中,如果我们直接优化奖励而不创建显式奖励模型,会更容易。这种方法也称为直接偏好优化(DPO),最近得到了广泛的流行。

在 DPO 中,其思想是优化策略 π,其中策略只是正在训练的模型的行话,使其最大化预期奖励,同时在一定程度上保持接近参考策略 π ref 。这有助于在新策略 π 中维持 π ref的一些所需属性(例如稳定性或安全性)。

奖励模型和 DPO 的比较

上述方程中的 β 通常充当温度参数,控制概率分布对策略分数差异的敏感性。较高的贝塔值使分布对差异更加敏感,从而导致函数更加陡峭,其中选项之间的偏好更加明显。较低的贝塔值使模型对分数差异不太敏感,从而导致代表较弱偏好的函数更平坦。从本质上讲,贝塔有助于校准概率模型中表达偏好的强度。

由于其相对简单,即不需要训练单独的奖励模型,通过 DPO 进行微调的LLM非常受欢迎。那么,它的表现如何?根据原始DPO 论文,DPO 的表现非常好,如下表所示。然而,这一点必须持保留态度,因为由于数据集和计算要求较大,具有专用奖励模型(即 RLHF-PPO)的 RLHF 更难训练,而且比较可能无法反映最佳 DPO 模型与最好的 RLHF-PPO 型号。

原始 DPO 论文中的注释表,https://arxiv.org/abs/2305.18290

此外,许多 DPO 模型都位于大多数 LLM 排行榜的顶部。然而,由于 DPO 比具有专用奖励模型的 RLHF 使用起来要简单得多,因此还有更多的 DPO 模型。因此,很难说 DPO 是否在实际上更好,因为这些模型没有等效模型(即,具有完全相同架构的模型在完全相同的数据集上训练,但使用 DPO 而不是RLHF 具有专门的奖励模型)。

2.3 奖励平台

在简要介绍了 RLHF 和奖励建模之后,本节将直接进入RewardBench:评估语言建模的奖励建模论文,该论文提出了评估奖励模型和 DPO 模型奖励分数的基准。

提议的基准套件评估所选(首选)响应和拒绝响应的分数,如下图所示。

RewardBench 将奖励模型和 DPO 模型评估建模为预测任务,并计算方法选择“选择”(首选)响应的频率。(注释图来自 RewardBench 论文,https://arxiv.org/abs/2403.13787 )

下图列出了 RewardBench 排名前 20 的型号。该图中显示的表格基本上证实了我之前提到的内容。也就是说,许多 DPO 模型可以在大多数 LLM 排行榜的顶部找到,这可能是因为 DPO 比具有专用奖励模型的 RLHF 更易于使用,因此那里有更多的 DPO 模型。他们自己。

根据 RewardBench 的前 20 名模型。(RewardBench 论文中的注释表,https://arxiv.org/abs/2403.13787 )。

请注意,现有排行榜和 RewardBench 之间的区别在于它们评估的指标。虽然其他排行榜评估通过奖励模型训练的LLM的问答和对话表现,但 RewardBench 重点关注用于训练这些LLM的奖励分数。

该论文的另一个有趣的结论是,正如人们所期望的那样,测量的奖励准确性与模型大小相关,如下表所示。(不幸的是,此比较仅适用于 DPO 型号。

按型号类型和尺寸划分的 DPO 型号。(RewardBench 论文中的注释表,https://arxiv.org/abs/2403.13787 )。

2.4 结论、注意事项和对未来研究的建议

虽然本文没有介绍任何新的 LLM 微调方法,但它是讨论奖励建模和 DPO 的一个很好的借口。另外,很高兴终于看到奖励模型的基准。感谢研究人员创建和分享它。

需要注意的是,看看 RewardBench 上的排名是否与使用这些奖励模型产生的公共排行榜上的 LLM 聊天模型密切相关,这会很有趣。然而,由于公共排行榜数据和 RewardBench 数据都是公开的,这有望激发人们在未来撰写分析这些数据的论文。

作者在论文中承认的另一个小警告是,RewardBench 确实很适合 DPO 模型。这是因为 DPO 模型比奖励模型多得多。

将来,在另一篇论文中,看到未来的研究将很有趣,这些研究使用固定的计算资源和数据集对 RLHF 奖励模型和 DPO 模型进行受控实验,看看哪些模型脱颖而出。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved