本文翻译自英伟达发布的论文《Nemotron-4 340B Technical Report》,由机智流社区成员「北辰」翻译,整篇技术报告将分三期发布,本期为第三期
全文约 4000 字,预计阅读时间 10 分钟
上周,NVIDIA 更新了其最新的开源超大模型
Nemotron-4 340B
,这次不仅放出了大模型的参数,也放出了全套预训练、对齐和奖励模型的训练代码,同时还有一份详细的技术报告!在 OpenAI 正在内部讨论要不要“CloseAI”的当下万分难得。现在,就跟着机智流一起来看下这篇诚意满满的技术报告吧。
关注机智流,并在后台回复
"340B"
,即可获取论文、模型和代码地址!
3 对齐
3.3 对齐算法
我们采用了模型对齐的标准协议,包括两个阶段:监督微调和偏好微调。在本节中,我们将详细说明底层算法,并介绍我们的创新训练策略。
(一)3.3.1 分段监督微调
监督微调(SFT)
构成了对齐的第一步。传统上,SFT 在单一阶段进行,其中数据集包含所有任务的样本混合。然而,我们的实验结果表明,同时学习多种行为有时会导致它们之间的冲突,从而阻止模型同时在所有任务上实现最佳对齐。我们在编码任务中特别强烈地观察到这种现象,调整数据混合的采样权重未能使模型与所有编码任务对齐。为了解决这个问题,我们设计了一个二阶段 SFT 策略,使模型能够按顺序和有意识地获得不同的行为。我们发现这种方法在所有下游任务中都取得了更好的结果。
代码 SFT
。为了在不干扰其他任务的情况下提高编码和推理能力,我们首先仅在编码数据上进行 SFT。我们发现需要大量的数据才能有效地提高模型的编码能力。为了有效地合成编码数据,我们开发了
Genetic Instruct
,这是一种模仿进化过程的方法,利用自我指令和 wizard coder 变异从有限数量的高质量种子创建大量合成样本。在这种方法中,我们还引入了一个适应度函数,使用 LLM 来评估生成指令及其解决方案的正确性和质量。通过这些评估和检查的样本被添加到种群池中,进化过程继续进行,直到达到目标种群大小。整个管道设计用于多个种群的高效并行执行,根据需要实现可扩展性。经过广泛的去重和过滤,保留了大约 800K 样本用于代码 SFT 训练。我们使用恒定的学习率 3e-7 和全局批量大小 128 对模型进行训练。
通用SFT。
在第二阶段,我们继续进行通用SFT,利用 200K 个样本的混合数据集,涵盖了 3.2 节中概述的各种任务。为了减轻遗忘的风险,数据混合还包括前一阶段代码 SFT 生成的 2% 的编码样本。我们使用全局批量大小 128 对模型进行三轮训练,并在 [1e-7, 5e-7] 的范围内进行 LR 搜索。对于这两个阶段,我们屏蔽了用户回合,并且只在助手回合上计算损失。
(二)3.3.2 偏好微调
在监督微调阶段之后,我们通过偏好微调继续改进模型,其中我们的模型学习以
(提示,选择的应答,拒绝的应答)
三元组形式的偏好组织。具体来说,我们的偏好微调阶段涉及多轮模型改进,使用直接偏好优化和我们的新对齐算法,即奖励感知偏好优化。
直接偏好优化 (DPO)
。DPO算法优化策略网络,以最大化选择和拒绝应答之间的隐含奖励差距。虽然策略学习区分选择和拒绝的应答,我们观察到随着它们的间隙增加,选择和拒绝应答的可能性都持续下降,即使选择的应答是高质量的。从经验上看,我们观察到当训练足够长时,策略网络倾向于过拟合,一个指标的改进(例如,MT-Bench)通常伴随着其他指标的退化(例如,0-shot MMLU)。我们尝试通过在 DPO 损失的基础上增加加权 SFT 损失来解决这些问题。额外的 SFT 损失有助于防止策略网络远离偏好数据,特别是由于我们的偏好数据不是从参考策略生成的。当真实信号不可用时,为了避免模型学习低质量的选择应答,我们使用 Nemotron-4-340B-Reward 选择具有高质量选择应答的示例。这构成了一个包含 160K 示例的偏好数据集,涵盖了各种任务。我们使用全局批量大小 256 和恒定学习率对模型进行一轮训练。我们在 [3e-8, 3e-7] 的范围内调整学习率,DPO 损失中的 kl 正则化系数在 [3e-4, 3e-3] 的范围内,SFT 损失的权重在 [1e-5, 1e-3] 的范围内。
奖励感知偏好优化(RPO)
。正如第3.2.3节所述,我们的大多数偏好数据是合成的,其偏好排名是根据 Nemotron-4-340B-Reward 的奖励来判断的。而 DPO 只使用两个应答之间的二元顺序,奖励之间的差异包含更多信息。从经验上,我们观察到一些拒绝应答只是略逊于选择的应答,而有些拒绝应答却远远落后。DPO在不知道质量差距的情况下,努力最大化选择和拒绝应答的隐含奖励差距,这导致过拟合并不必要地“取消学习”高质量的拒绝应答。为了克服这个问题,我们提出了一种新算法,即
奖励感知偏好优化 (RPO)
,它尝试使用由策略网络定义的隐含奖励来近似奖励差距。具体来说,这定义了一个新损失函数,如下所示:
其中
是要训练的策略网络;
是参考策略;
对应于提示、选择的应答和拒绝的应答;
分别是由奖励模型确定的选择和拒绝应答的奖励。
上式是一个距离度量。与 DPO 相比,RPO 学习近似奖励差距,这可以防止过拟合问题。使用 DPO 训练的检查点作为初始化和参考策略,我们进一步使用 RPO 对模型进行训练。具体来说,我们使用一个包含 300K 示例的偏好数据集,对选择应答的质量过滤不那么严格。我们还试用了一个较小正则化系数(1e-5)的选定 SFT 损失。我们固定 η = 1,lr = 3e-7,并在 [1e-3, 1.] 的范围内调整 KL 系数 β。虽然单一迭代的 RPO 训练已经能够在所有任务上统一改进模型,但我们运行了三轮 RPO,其中每一轮迭代都使用前一轮迭代的检查点作为初始化和参考策略。我们观察到模型随着额外的 RPO 迭代而持续改进。经过三轮 RPO 训练的检查点是最终的 Nemotron-4-340B-Instruct。
3.4 指令模型评估
(一)3.4.1 自动基准测试
我们对 Nemotron-4-340B-Instruct 进行了广泛的自动基准测试评估。在本节中,我们将展示我们的模型结果,并与当前可用的开源(Llama-3-70B-Instruct、Mixtral-8x22B-Instruct-v0.1、Qwen-2-72B-Instruct 和专有(GPT-4-1106-preview、Mistral Large、Claude-3-Sonnet)对齐模型进行了比较。以下是我们评估模型的任务列表和设置:
-
单轮对话
:AlpacaEval 2.0 LC和 Arena Hard。
-
多轮对话
:MT-Bench。请注意,这是原始 MT-Bench的修正版本,分数平均比原始 MT-Bench 分数低 0.8。具体来说,我们发现 30 个参考答案中有 13 个在推理、数学、编码类别中是不正确的,这大大影响了准确评估。修正后的答案包含在 https://github.com/lm-sys/FastChat/pull/3158。
-
-
-
代码
:HumanEval(0-shot) Pass@1 Score 和 MBPP(0-shot)。
-
-