24年12月来自AI2和西雅图华盛顿大学的论文“TÜLU 3: Pushing Frontiers in Open Language Model Post-Training”。
最近的语言模型种类繁多,但应用这些技术的开放方法落后于专用方法。底层训练数据和后训练方法既是最重要的部分,也是透明度最低的部分。为了弥补这一差距,TÜLU 3,一组完全开放的后训练模型,以及其数据、代码和训练方法,作为现代后训练技术的综合指南。TÜLU 3 以 Llama 3.1 基础模型为基础,其结果超越 Llama 3.1、Qwen 2.5、Mistral 的指导版本,甚至超越 GPT-4o-mini 和 Claude 3.5-Haiku 等封闭模型。模型的训练算法包括监督微调 (SFT)、直接偏好优化 (DPO) 和一种可验证奖励的强化学习 (RLVR) 新方法。借助 TÜLU 3,构建一个多任务评估方案,用于开发和未见过评估的后训练、标准基准实施以及对上述基准上现有开放数据集的大量去污。最后,分析并讨论无法可靠提高性能的训练方法。
TÜLU 3 版本包括模型权重、演示和完整配方 — 适用于各种核心技能的数据集、用于数据管理和评估的工具包、训练代码和基础设施,一份详细报告,用于重现和进一步将 TÜLU 3 方法应用于更多领域。
语言模型后训练的早期工作,遵循 Instruct-GPT 等模型开创的标准方法 [Ouyang et al., 2022],包括指令调整和偏好微调 (PreFT) [Stiennon et al., 2020, Nakano et al., 2021, Askell et al., 2021, Ouyang et al., 2022]。从那时起,后训练方法的复杂性和精细度不断提高,朝着多轮训练、人工数据加合成数据以及多训练算法和目标的方向发展 [Touvron et al., 2023, Dubey et al., 2024, Gunter et al., 2024]。然而,大多数成功的后训练模型,提供的有关其训练数据、代码或配方的信息有限。开放式后训练研究,例如 TÜLU 2 [Ivison,2023] 和 Zephyr-𝛽 [Tunstall,2023],在某些基准测试和聊天评估(例如 AlpacaEval 或 Arena-Hard [Li,2024a])中表现出色,但在 MATH [Hendrycks,2021]、IFEval [Zhou,2023] 和 GSM8K [Cobbe,2021] 等核心功能方面仍然落后。
TÜLU 3 的配方,便于获得最先进的后训练模型。通过四阶段后训练配方在预训练语言模型之上生成 TÜLU 3 模型(如图所示)。TÜLU 3 RECIPE 是一个先进的多阶段训练流水线,结合了强化学习中的新算法进步、尖端基础设施和严格的实验,整理数据并优化各个训练阶段的数据组合、方法和参数。
在所有阶段中,用精心选择的评估套件来衡量模型性能。阶段如下:
第 1 阶段:数据管理。整理各种提示,分配到多个优化阶段。创建新的合成提示,或者在可用时从现有数据集中获取提示,以针对特定功能。确保提示不会受到评估套件 TÜLU 3 EVAL 的污染。
第 2 阶段:监督微调。对精心挑选的提示和完成进行监督微调 (SFT)。通过彻底的实验,在评估框架的指导下,确定最终的 SFT 数据和训练超参,以增强目标核心技能,而不会显著影响其他性能。
第 3 阶段:偏好调整 。将偏好调整(特别是 DPO)应用于新策划的在线策略合成偏好数据,这些数据来自选定的提示以及离线策略数据。与 SFT 阶段一样,通过彻底的实验确定最佳偏好数据组合,揭示哪些格式的数据、方法或超参数可以带来改进。
第 4 阶段:具有可验证奖励的强化学习 。引入一个新的基于 RL 后训练阶段,该阶段在可验证奖励上训练模型,而不是在传统 RLHF PPO 训练中常见的奖励模型上训练模型。选择具有可验证结果的任务,例如数学问题解决,并且仅在模型的生成被验证为正确时才提供奖励。然后用 RL 对这些奖励进行训练。
该TÜLU 3 流程的主要贡献在于改进的数据、方法、基础设施和严格的评估。流程的关键要素包括:
数据质量、来源和规模。仔细调查可用的开源数据集、分析其来源并对其进行净化,以及策划针对核心技能的合成提示来获得提示。为了确保有效性,进行彻底的实验来研究它们对开发评估套件的影响。有针对性的提示对提高核心技能有影响,而现实世界的查询,例如 WildChat [Zhao et al., 2024],对于提高一般聊天能力很重要。使用 TÜLU 3 EVAL 去污工具,确保提示不会受到评估套件的污染。
创建多技能 SFT 数据集。通过对各种数据混合进行几轮监督微调,改进“一般”和“技能特定”类别中提示的分布。例如,为了提高数学推理能力,首先创建数学专业模型在评估套件中建立上限,然后混合数据以使一般模型更接近这个上限。
策划在线策略偏好数据集。开发一个在线策略数据管理流水线来扩展偏好数据集生成。具体来说,从 TÜLU 3-SFT 和其他模型中为给定的提示生成完成,并通过它们的成对比较获得偏好标签。该方法扩展并改进 Cui [2023] 的离线策略偏好数据生成方法。精心选择多技能偏好数据可产生 354,192 个偏好调整实例,在一系列任务中表现出显著的改进。
偏好调整算法设计。试验几种偏好调整算法,使用长度归一化的直接偏好优化可以提高性能。在实验中优先考虑简单性和效率,并在整个开发过程和训练最终模型时使用长度归一化的 DPO,而不是对基于 PPO 的方法进行更昂贵的调查。
具有可验证奖励的技能特定强化学习。采用一种新方法,利用标准强化学习范式来定位可以根据真实结果(例如数学)进行评估的技能。此算法称为具有可验证奖励的强化学习 (RLVR);如果完成成功,它将获得恒定的奖励值。结果表明,RLVR 可以提高 GSM8K、MATH 和 IFEval 的性能。
强化学习的训练基础设施。实施异步 RL 设置:通过 vLLM 高效运行 LLM 推理,同时学习器同时执行梯度更新。 RL 代码库也具有高度可扩展性,可以训练 70B RLVR 策略模型。
自发布 TÜLU 2 以来,社区见证了大量工作为后训练创建数据集,包括监督微调和偏好调整。TÜLU 3 旨在整合和扩展这些资源以构建更强大的模型。从对公共数据集的广泛调查开始这一过程,包括由专职人员注释的数据集、来自真实用户的数据集以及与模型合成的数据集。然后,手动审查每个数据集,并根据以下考虑因素进行选择:
多样性
目标技能
数据来源和许可
为了满足对多样化和特定技能数据集日益增长的需求,采用合成数据生成作为一种补充方法。合成数据生成已成为人工编写数据的一种有前途的替代方案,因为它更容易获取、可以针对不同目的进行定制,并且反映底层模型的丰富知识 [Dubey et al., 2024]。然而,大规模生成多样化和高质量的数据并非易事,因为 LM 容易陷入重复的模式或模式,这被称为“模式崩溃” [Kazdan et al., 2024]。为了确保生成的多样性,遵循 Chan et al. [2024] 中最近采用的角色驱动方法来生成合成数据。关键思想是使用不同的角色(例如,“专注于神经网络的机器学习研究人员”)和数据合成提示(例如,“创建编码问题”)来引导 LLM 合成具有相应视角的数据。具体来说,以 Persona Hub [Chan et al., 2024] 中的 ∼250K 个角色为条件,生成针对特定技能(如精确遵循指令、数学和编码)的提示。此外,在 Brahman et al. [2024]、Han et al. [2024]、Jiang et al. [2024] 的基础上,生成不合规和安全数据。
在策划训练组合时,一个重要的考虑因素是训练集和评估集之间可能存在重叠。按如下方式量化这种重叠,并根据需要从训练组合中删除实例,以防止测试集污染:
匹配方法
确认匹配实例
去污
将预训练的基础模型调整为各种任务和用户请求,通常依赖于监督微调 (SFT),也称为指令微调。此过程中的一个关键挑战是平衡代表不同技能的混合训练数据集比例。对于 TÜLU 3,进行数据混合消融并探索模型合并技术,以开发一种 SFT 训练程序,该程序可以很好地平衡优先考虑的核心技能之间性能。
为了创建 SFT 组合,通过两种方式收集或创建提示的响应:过滤现有响应和创建新响应。
对于具有现有响应的提示,如果原始响应是由人类或前沿模型(如 GPT-4o)编写的,通常会保留原始响应。对于包含来自前沿模型子集的大型数据集(例如 WildChat),用来自最佳模型的子集。还会过滤空响应和包含有关模型或其开发人员的信息的响应。如果一组提示没有响应,例如 Persona 提示,或者原始响应来自较弱的模型(例如 WildGuardMix),会使用 GPT-4o 生成新响应。此外,还手写对硬编码提示的响应。
为了开发 SFT 组合,首先使用在 TÜLU 2 上训练的 Llama 3.1 作为基准,确定落后于最先进模型的技能。针对这些技能,收集高质量的公开数据集并创建合成数据集,同时还删除了一些认为与其他较新的数据集相比质量相对较低的数据集。
为了设计最终的 SFT 组合,首先构建特定于技能的数据混合和模型,保留在单个技能上表现最佳的混合,而忽略其他评估。这样做是为了根据设置近似每个评估的上限。
然后,将这些混合放在一起,创建最初的 TÜLU 3 预览组合。然后,继续通过添加或删除数据集来迭代混合,以提高滞后的技能,对评估进行去污,并对特别大的数据集进行下采样。如图展示整个开发过程中主要预览版性能。
训练设置。为了训练 TÜLU 3 模型,用 4 到 16 个 8xH100 节点,并进行了高速互连。用 128 的有效批处理大小和 4,096 个 token 的最大序列长度。训练了两个epochs,对于 8B 模型,用 5e-6 的学习率,对于 70B 模型,用 2e-6 的学习率,这是在超参搜索后发现的。超参设置也总结在下表中。对于合并实验,用 mergekit [Goddard et al., 2024],使用线性加权平均。
探索在 SFT 期间更改随机种子,然后使用这些模型创建模型汤(model soup) [Wortsman,2022]。在下表中,将用多个不同种子训练的 8B 和 70B 模型与最佳模型汤进行比较。SFT 性能会根据种子而明显不同,这凸显多次训练运行的重要性,并且最佳模型汤并不总是优于最佳单次训练运行。因此,将每种模型大小的最佳单次 SFT 训练运行用作最终的 SFT 模型。
在训练 TÜLU 3 的早期阶段, Open-Instruct 框架上训练的 SFT 模型与在其他设置(例如 TPU)上训练的模型之间存在性能差距。这个问题主要是由于 Transformer 内部损失聚合问题造成的 (最近被广泛报道)[Wolf et al., 2020]:在不考虑梯度累积或分布式训练设置的情况下对填充tokens的损失进行平均。
为了解决这个问题,通常选择在训练时使用总损失而不是平均损失(“平均损失”)。这只需从上述方程中删除分母即可消除问题,并需要调整学习率。这实际上对所有tokens赋予相同的权重(这通常会使初始混合的性能更好)。在 TÜLU 2 SFT 混合上使用各种学习率、时期和损失类型对 Llama 3.0 进行微调来验证设置的性能。最终,使用学习率为 5.00E-06 的总损失效果最好。令人惊讶的是,更长时间的训练并没有带来进一步的改进,因此使用 2 个epochs 进行训练。
对于 TÜLU 3,探索许多偏好微调方法,目的是改进整个评估套件。探索多种训练算法,从直接偏好优化 (DPO) 及其衍生算法到强化学习算法,例如近端策略优化 (PPO)。
先前的研究已将偏好数据训练,确立为提高模拟人类或合成偏好基准模型性能的关键步骤 [Dubois et al., 2023, Ivison et al., 2023, 2024]。典型的程序是从人类或合成反馈中进行强化学习 [Ziegler et al., 2019, Stiennon et al., 2020, Ouyang et al., 2022, Bai et al., 2022]。
偏好数据。在标准设置中,有一些偏好数据集 D,由提示 𝑥 和每个提示的两个响应 𝑦、𝑦′ 组成。一些裁判将选择 𝑦、𝑦′ 中的一个作为首选响应 𝑦/c,并将另一个标记为拒绝的响应 𝑦/𝑟。
奖励模型。给定偏好数据集,使用以下目标训练奖励模型 (RM) 𝑟/𝜙:
这个 RM 目标,最大化奖励之间的差异,该差异表示 𝑦/c 优于 𝑦/r 的对数似然 [Ouyangetal.,2022]。该奖励模型可以帮助训练策略模型以输出 RM 判断偏好的内容。
有多种方法可以优化访问偏好数据的语言模型。如今,这两类算法可以抽象为强化学习算法(从价值或奖励的内部表示中学习)和直接对齐算法(直接从数据中学习)。
近端策略优化 (PPO)。解决上述目标的一种方法是使用像 PPO [Schulman et al., 2017] 这样的在线强化学习 (RL)。在 PPO 的每次训练迭代中,策略需要生成一些样本,使用这些样本上的 RM 生成奖励,并使用 PPO 算法最大化 𝑅(𝑥, 𝑦)。由于 PPO 训练循环很复杂,参考 Ouyang et al. [2022]、Ivison et al. [2024]、Huang et al. [2024a] ,获得有关设置和典型设置的更详细描述。
直接偏好调整 (DPO) 和变型。另一种方法是离线偏好调整。DPO [Rafailov,2024] 可以直接优化 RLHF 目标,其等效目标如下:
DPO 同时训练隐式奖励模型和策略模型,无需使用训练的奖励模型、进行策略生成并从 RM 获得奖励。至关重要的是,这允许离线偏好微调,直接在从各种来源收集的偏好对,训练语言模型。最近,许多工作研究如何进一步改进 DPO 目标,并提出了多种变型 [Meng2024、Xu2024a、Hong2024]。该工作探索了两个有前途的变型:SimPO [Meng,2024] 和长度归一化的 DPO,后者的目标定义为
根据提示,通过调整和改进 UltraFeedback 流水线 [Cui et al., 2023] 创建符合策略的偏好数据 (𝑥, 𝑦, 𝑦′, 𝑙𝑎𝑏𝑒𝑙)。早期的实验表明,该流水线在创建偏好数据方面具有优势,可以生成高质量的合成偏好数据集(Ivison et al. [2024] 观察到了这一点)。数据创建流水线(如图所示)包括三个阶段:提示选择、从模型池生成响应以及使用 LLM-as-a-judge 进行偏好注释以创建(偏好、拒绝)对。
第 1 阶段:提示选择。准备用于偏好微调数据集的第一步,是选择提示或用户指令以生成响应并获取偏好。鉴于提示集,精心挑选 SFT 期间使用的提示,以及从相同来源抽样但未用于 SFT 的提示。还包括来自其他来源的提示,例如没有 TruthfulQA 实例的 Ultrafeedback 版本,或者通过向提示添加新的 IF 约束。
第 2 阶段:响应生成。对于给定的提示,从模型池中随机抽取四个模型来生成响应。模型选择受到 Ultrafeedback 流水线的启发,该流水线由开源和专有模型组成,这些模型因参数大小和模型系列而异。通过使用某些模型的最新版(Llama 2 → Llama 3.1)、添加性能最佳的模型以增加池大小以及用开源替代方案替换当前无法访问的模型(如 WizardLM)来更新 Ultrafeedback 的模型池。最后,从 TÜLU SFT 模型中抽样补全,包含策略在线的数据。添加一系列提示来实现这一点,其中一个响应来自在线策略模型,另一个响应来自离线策略模型。
第 3 阶段:偏好注释。在为每个提示生成四个响应后,用 LLM-as-a-judge [Zheng et al., 2023],特别是 GPT-4o-2024-0806,从四个不同方面对每个响应进行 1 到 5 的评分:有用性、遵循指令、诚实和真实性。
为了获得 DPO 的二元偏好,类似于 Argilla 的二值化方法,得到偏好评级平均值,并将评分最高的响应作为选定的响应,并从平均值较低的响应中随机抽取作为拒绝的响应。
为 8b 和 70b 模型选择最终的偏好组合,该组合可最大限度地提高开发评估的平均表现,同时在目标技能方面也表现出色。大多数偏好数据组合消融都是针对 8b 模型运行的,从用于 SFT 的提示开始,生成在线策略和离线策略偏好数据,从而产生 96911 个(离线策略)和 19444 个(在线策略)偏好实例。根据这个偏好基础,消融向组合中添加其他提示源,以及这些添加如何影响下游评估性能,特别是针对诸如精确指令遵循、数学和 alpaca eval 上的一般聊天表现等技能。总之,偏好组合来自不同的提示源,例如 SFT 数据、WildChat 和 Persona IF。它包括 SFT 训练期间看到的提示,也包括新的、未见过的提示。最后,它包含在线和离线策略完成的混合。
在 TÜLU 3 中,引入可验证奖励强化学习 (RLVR),这是一种针对具有可验证结果的任务(例如数学问题解决和指令遵循)训练语言模型的新方法。RLVR 利用现有的 RLHF 目标,但用验证函数替换奖励模型,如图概念性所示。
当应用于具有可验证答案的领域(例如数学和可验证指令遵循任务 [Zhou et al., 2023])时,RLVR 在 GSM8K 等基准上展示有针对性的改进,同时保持其他任务的性能。 RLVR 可以看作是现有引导 LM 推理方法的简化形式 [Zelikman,2022、2024、Hoffman,2023] 或具有执行反馈 RL 的更简单形式 [Gehring,2024],其中仅使用答案匹配或约束验证作为二值信号来训练模型。虽然在先前的工作中这样做只是为了提高数学技能 [Kazemnejad,2024],但该文进一步扩展 RLVR 以涵盖多项评估,并测试它如何提高整体模型性能,将其集成为通用训练流程的一个组成部分。
PPO 设置遵循实施细节方面的最佳实践 [Huang et al., 2024a]。为了使实施能够扩展到高达 70B 参数以上的模型,还调整现有分布式 RLHF 框架的模型分配技术 [Hu et al., 2024]。此外, RL 训练异步加速吞吐量 [Noukhovitch et al., 2024]。
分布式设置。 PPO 基础架构利用 Zero Stage 3 [Rajbhandari et al., 2020] 将模型和适用的优化器状态放入内存中。在 RLVR 中,有 3 个模型:策略模型、参考策略模型和价值模型。策略和价值模型需要训练,但参考策略模型仅执行推理。推理时间通常是 RLHF 基础架构的瓶颈,因此分配专用 GPU 来进行推理,就像在 OpenRLHF 中所做的那样 [Hu et al., 2024]。具体来说,用 Ray [Moritz et al., 2018] 分配专用 GPU 以通过 vLLM [Kwon et al., 2023] 运行 PagedAttention。PagedAttention 利用虚拟内存和分页技术,帮助减少 GPU 内存碎片和冗余重复。因此,它帮助 PPO 基础架构使用更大的批量大小运行 LLM 推理并加快推理速度。此设置能够将 PPO 策略训练扩展到 70B 规模。
异步 RL 训练。此外, PPO 设置使用异步 RL 训练来提高训练效率 [Noukhovitch et al., 2024]。现有的 PPO 框架 [Hu et al., 2024, Shen et al., 2024a] 通常是同步的:推理 GPU 将首先收集策略推出数据,然后学习器 GPU 将在该推出数据上进行训练。这种设置在 Atari 的典型设置下可以相对很好地利用 GPU [Mnih et al., 2015]。然而,在 RLHF 设置下,推理计算通常需要不同的优化(例如 PagedAttention),因此需要不同的 GPU 内存分配策略。因此,同步 RL 训练意味着在学习器 GPU 运行时,推理 GPU 可能处于空闲状态,反之亦然。另一种实现方法是使用同一组 GPU 进行训练和推理,但这可能会产生额外的开销,例如在训练 GPU 中额外复制策略参数和编译推理引擎 [Shen et al., 2024a]。
设置专门为推理和训练分配 GPU,从而无需编译推理引擎并在训练 GPU 中保存策略参数的副本。此外,同时运行推理计算和训练计算,从而减少 GPU 空闲时间。然而,异步强化学习训练可能会引入过时的数据,在这种情况下,推理生成数据的速度比训练消耗的速度快得多 [Es-peholt et al., 2018],这可能会导致可重复性问题 [Huang et al., 2023]。为了提高训练的可重复性,该设置始终使用第二最新推理数据来训练策略 [Huang et al., 2023, Noukhovitch et al., 2024]。
设计用于评估 TÜLU 3 和其他比较的模型框架,其目标如下:1)评估应该是可重复的。2)应该评估模型对未见任务的泛化能力,而不仅仅是用于开发的特定基准。3)评估设置(例如,模板和提示策略)应该对各种模型公平。
因此,框架包括一个用于可重复评估的开放评估工具包、一套用于评估指令调整模型中核心技能的套件,该套件具有单独的开发和保留评估,以及一组基于对各种模型的实验在评估套件上进行评估的推荐设置,称为 TÜLU 3 评估制度。
评估套件分为开发集和未见集,前者用于开发模型,后者仅用于评估最终模型。这种设置,加上在训练数据上的净化工作,为开发过程中关注的每项核心技能泛化能力提供更公平的评估。然而,在该模型与其他模型的比较中,不能排除任何封闭模型没有在评估套件上进行训练,因此无法对没有公开发布微调数据的模型做出明确的判断。