微信扫码
与创始人交个朋友
我要投稿
技术报告很干,简单笔记一下。早上看到lmsys 竞技场上还开分了,比llama3 70b稍微高一点,目前是竞技场上分数最高的开源模型。虽然参数量大了好几倍,但是license很友好。
技术报告地址:
https://d1qx31qr3h6wln.cloudfront.net/publications/Nemotron_4_340B_8T_0.pdf
总共训练了 9T 个令牌,其中前 8T 作为正式预训练阶段,最后 1T 为持续预训练阶段。(在模型训练结束时切换数据分布( switching the data distribution )和学习率衰减调度(learning rate decay schedule )可以显著提高模型质量。
具体来说,在对 8T 个 token 进行预训练后,使用相同的损失目标并对 1T 个额外 token 进行继续训练。在继续训练的这个附加阶段中,利用两种不同的数据分布。第一个分布构成了持续训练令牌的大部分,并利用在预训练期间已经训练过的令牌,但该分布将更大的采样权重放在更高质量的源上。第二种分布引入了少量问答式对齐示例,以更好地允许模型在下游评估中响应此类问题,同时还增加来自模型精度较低区域的数据源的权重。learning rate schedule 考虑更陡峭的衰减斜率,发现这种数据分布的顺序和风格允许模型在预训练数据集上温和地过渡,并更好地从训练第二阶段阶段引入的数据。
发现多属性回归奖励模型可以更有效地将真正的有用性与不相关的回复分开。回归模型更擅长预测细粒度的奖励,捕捉相似响应之间有用性的细微差别。
回归奖励模型建立在Nemotron-4-340B-Base 模型之上,用新的奖励“头”替换最终的 softmax 层。这个“头”是一个线性投影,它将最后一层的隐藏状态映射到 HelpSteer 属性(有用性、正确性、连贯性、复杂性、详细性)的五维向量中。在推理过程中,可以将这些属性值通过加权和进行聚合,作为总体奖励。
尽管有现成的提示词数据集,例如 LMSYS-Chat-1M ,但生成合成提示,使能够控制提示分布以覆盖不同的场景。提示多样性是多维的——它涉及任务多样性(例如writing, open Q&A, closed Q&A)、 主题多样性(例如stem, humanities, daily life)和指令多样性(例如json output, # paragraph, Yes-or-No answers)。
生成宏观主题 -> 子主题 -> 生成问题 -> 问题细化 (技术报告附录中包含相关prompt)
通过迭代角色扮演,模型在模拟助手和用户的角色之间交替。为了在用户轮流中引发所需的行为,发现必须为模型提供明确的提示约束,定义不同的用户个性,并附有对话历史记录。还通过排除礼貌性陈述(例如“Thank you for .”, “Sure I’d happy to .”)来对用户进行后处理,以模仿现实世界的用户问题。此外,利用 Nemotron4-340B-Reward 来评估对话的质量,为每个样本分配分数并过滤掉那些低于预定阈值的样本。这提供了额外的质量保证,确保只保留高质量的数据。
偏好数据包含合成的单轮提示、指令跟随提示、两轮提示以及来自真实世界的提示(如ShareGPT)。对于每个提示,使用多个随机中间模型生成响应。利用多个模型生成响应可确保偏好数据集具有可供模型学习的不同响应。此外,当响应是来自根据 MT-Bench 表现最佳的模型的多个随机生成时,就可以构建更具挑战性的综合偏好示例。这些具有挑战性的偏好示例使模型能够进一步改进自身。
给定每个提示的多个响应,需要判断他们的偏好排名并选择已选择和拒绝的响应。一些任务可以使用真实标签(例如,GSM8K 和 MATH 训练数据集中的答案)或 编译验证(例如,可以使用 python 脚本验证响应后的指令)来评估,使用真实值/脚本验证结果来评估判断每个答案的正确性。选择正确的响应作为选择的响应,选择错误的响应作为拒绝的响应。
LLM评判和奖励模型评判。大多数提示都没有客观的答案。尝试了 LLM-as-Judge 和Reward-Model-as-Judge。在 LLM-as-Judge 中,为了避免位置偏差,询问 LLM 两次并交换响应顺序。当 LLM 在两次都有一致的判断时,作为一个有效的三元组。虽然 LLM-as-Judge 为偏好数据集的早期迭代提供了初始数据,但进一步探索了 Reward-Model-as-Judge,其中询问Nemotron-4-340B-Reward预测每对(提示、响应)的奖励,并根据奖励决定偏好排名。
奖励模型评判比 LLM评判具有更高的准确性。具体来说,在 Chat-Hard 类别中,选择和拒绝的响应很难区分,Reward-Modelas-Judge 的表现比 LLM-as Judge 好得多,平均准确度分别为 0.87 和 0.54。Chat-Hard 类别分数对于合成数据生成中的偏好排名特别重要。因此,在后来的数据集迭代中转而使用奖励模型作为判断。
(1)当使用相同的数据集时,基础模型的强度对指令微调后的模型有直接影响,基础模型越强,指令微调后的模型就越强;(2)相反,当使用相同的基础模型时,数据集的质量在决定指令微调后的模型的有效性方面起着关键作用,更高质量的数据导致更强的指导模型。在整个对齐过程中,进行多轮数据生成和细化,不断提高模型的质量。
一个迭代的流程:
传统上,SFT 只训练一个截断,其中数据集包含来自所有任务的样本的混合。然而,实验发现,同时学习多种行为有时会导致它们之间的冲突,从而阻止模型同时在所有任务上实现最佳对齐。在编码任务中尤其强烈地观察到这种现象,其中调整数据混合的采样权重无法使模型与所有编码任务保持一致。
为了解决这个问题,设计了一个两阶段 SFT 策略,使模型更好的学习到不同类型的任务。并在所有下游任务中都能产生优异的结果。为了提高编码和推理能力而不干扰其他任务,在第一阶段纯粹对编码数据进行SFT。实验发现这个阶段需要大量的数据才能有效提高模型的编码能力,通过利用种子数据合成进化方法,最终保留了800k的样本用于codesft。在第二阶段,继续进行通用 SFT,利用 200K 样本的混合数据集,其中包含各种任务。为了降低遗忘风险,数据混合还包括来自先前代码 SFT 阶段的 2% 的代码生成样本。
DPO算法优化策略网络,以最大化所选响应和拒绝响应之间的隐式奖励差距。虽然该策略学会区分选择的响应和拒绝的响应,但观察到选择的响应和拒绝的响应的可能性随着差距的增加而一致下降,即使选择的响应是高质量的。实验观察到,当训练足够长的时间时,策略网络往往会过度拟合,并且一种指标(例如 MT-Bench)的改进通常伴随着其他指标(例如 0-shot MMLU)的退化。尝试通过在所选响应上添加加权 SFT 损失来缓解这些问题。额外的 SFT损失有助于防止策略网络大量偏离偏好数据,特别是因为的偏好数据不是从参考策略生成的。
为了避免模型学习低质量的选择响应,当真实响应不清楚时,使用 Nemotron-4-340B-Reward 来挑选具有高质量选择响应的示例。这会产生一个包含 16 万个示例(包括各种任务)的偏好数据集。以全局批量大小 256 和恒定学习率训练一个 epoch 的模型。在[3e-8, 3e-7]内调整学习率,在[3e-4, 3e-3]内调整DPO损失中的kl正则化系数,在[1e-5, 1e-3]内调整SFT损失的权重]。
奖励感知偏好优化,因为大多数偏好数据都是合成的,其偏好排名是根据Nemotron-4-340BReward 的奖励来判断的。虽然 DPO 仅使用两个响应之间的顺序,但奖励之间的差异包含更多信息。根据经验,观察到一些被拒绝的响应仅比所选的响应稍差,而一些被拒绝的响应则远远落后。由于不了解质量差距,DPO 努力最大化所选响应和拒绝响应的隐性奖励差距,这会导致过度拟合和不必要的“忘记”高质量拒绝响应。为了克服这个问题,使用RPO来进一步对齐。
与 DPO 相比,RPO 学习近似奖励差距,从而防止过度拟合问题。使用 DPO 训练的检查 点作为初始化和参考策略,进一步使用 RPO 训练模型。具体来说,使用包含 30 万个示例的偏好数据集,对所选响应进行不太严格的质量过滤。还包括所选择的具有较小正则化系数 (1e-5) 的 SFT 损失。固定 η = 1,lr = 3e-7,并将 KL 系数 β 调整在 [1e-3, 1.] 范围内。虽然 RPO 训练的一次迭代已经在所有任务上统一改进了模型,但运行了 3 次 RPO 迭代,其中每次迭代都使用前一次迭代的checkpoint作为初始化和参考策略。观察到该模型通过额外的 RPO 迭代不断改进。RPO 训练三次迭代后的checkpoint是最终的Nemotron-4-340B-Instruct。
最后很多评测贴一张图叭,gpt4-level的开源模型,respect
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-28
2024-04-26
2024-08-21
2024-04-11
2024-07-09
2024-08-13
2024-07-18
2024-10-25
2024-07-01
2024-06-17