Nemotron-4 340B 技术报告:全面解读当前最强大语言模型的诞生过程
1. 最强开源模型要易主了?
图片
2天前,英伟达发布了其最强大语言模型 Nemotron-4 340B模型家族,包括 Nemotron-4-340B-Base、Nemotron-4-340B-Instruct 和 Nemotron-4-340B-Reward。
所有的模型都是基于NVIDIA的开源模型许可协议,允许用户自由分发、修改和使用模型及其输出。并且可以在8块H100的单机上以FP8精度运行。
1.1 自动化测评
在 Nemotron-4-340B-Instruct 的自动基准测试评估中,分别与开源(如 MetaAI 的 Llama-3-70B-Instruct、Mistral-AI-Team 的 Mixtral-8x22B-Instruct-v0.1 和 Qwen-Team 的 Qwen-2-72B-Instruct)及闭源模型(包括 OpenAI 的 GPT-4-1106-preview、MistralAI-Team 的 Mistral Large 和 Anthropic 的 Claude-3-Sonnet)进行了对比。
评估了包括单轮对话(AlpacaEval 2.0 LC 和 Arena Hard)、多轮对话(MT-Bench 的修正版,分数较原版本平均低 0.8 分,修正答案详见 GitHub 链接)、聚合基准(MMLU)、数学(GSM8K)、编程(HumanEval 和 MBPP 的 Pass@1 分数)、指令遵循(IFEval)和主题遵循(TFEval)等多个任务。
图片
如上图所示,Nemotron-4-340B-Instruct 在零样本评估中表现出色,这反映了模型在不使用样例时遵循指令的能力,更贴近人类与大型语言模型的实际互动。在多个测试数据集上都超越了GPT4成为了最强模型。
1.2 人类标注
在接下来的人类标注测试中,组织了一支经验丰富的标注团队,对模型进行了人工评估。
测试集包括136个精心分类的问题,涵盖10种不同的任务类型,并采用6点李克特量表来评定回答的质量。该量表不仅包含五个质量等级,还特别增加了一个等级,用于评价模型在彻底未遵循指令时的表现。标注准则围绕两个核心维度:帮助性(helpfulness)和真实性(truthfulness)。
图片
如上图所示,除了信息抽取和重写任务外,Nemotron-4-340B-Instruct 的表现与 GPT-4-1106-preview 相当甚至更优,尤其在多轮对话任务上表现突出。整体来看,模型在评估集中的胜负/平局比为 28.19%:46.57%:25.24%。
图片
至于人类评估中的次要指标,标注者对回答长度的感知在上表有所体现。结果显示,与 GPT-4-1106-preview 相比,标注者认为 Nemotron-4-340B-Instruct 的回答长度更合适(79.41% 对 74.02%),这主要得益于其较少的冗长回答(20.10% 对 25.74%)。
为什么Nemotron-4这么强?
2.1 训练数据集构成
预训练数据集由三种不同数据类型组成:英语自然语言数据占比70%,多语种自然语言数据占比15%,以及源代码数据同样占比15%。英语语料库涵盖了网络文档、新闻稿件、科学论文、书籍等多样来源和领域的精选文档。多语种数据覆盖了53种语言,包括单语种和平行语料库中的文档;代码数据集则囊括了43种编程语言。
在这组数据上累计训练了9万亿个token,前8万亿token属于正式预训练阶段,而后1万亿token则在二次训练阶段完成。关于训练语料库的详细构成和策划流程,Nemotron-4-340B-Base 与 Nemotron-4-15B-Base 采用了相同的数据混合比例。
2.2 架构细节解析
Nemotron-4-340B-Base 在架构上与 Nemotron-4-15B-Base 保持一致,采用标准的** decoder-only Transformer架构,配备因果注意力掩码,引入Rotary Position Embeddings (RoPE) 、SentencePiece 分词器(Kudo 和 Richardson,2018年),以及在 MLP 层中应用平方 ReLU 激活函数。还融入了分组查询注意力(GQA)技术。Nemotron-4-340B-Base 的超参数如下表所示,拥有 9.4 亿嵌入参数和 331.6 亿非嵌入参数。
图片
2.3 训练过程
Nemotron-4-340B-Base 的训练动用了 768 个 DGX H100 节点,每个节点装备有 8 块基于 NVIDIA Hopper 架构(NVIDIA,2022年)的 H100 80GB SXM5 GPU。这些 GPU 在执行 16 位浮点(bfloat16)运算时,单块 GPU 的峰值性能可达 989 teraFLOP/s。节点内的 GPU 通过 NVLink 和 NVSwitch(nvl)相连,GPU 间带宽高达 900 GB/s(双向各 450 GB/s)。每个节点还配备了 8 个 NVIDIA Mellanox 400 Gbps HDR InfiniBand 主机通道适配器(HCAs),以实现节点间的高速通信。
采用了 8-way 张量并行、12-way 流水线并行以及数据并行技术来训练模型,并运用分布式优化器来分散优化器状态,降低训练时的内存占用。随着批量大小的增加,数据并行度从 16 扩展至 64。
图片
上表汇总了批量大小增加的三个阶段,并展示了每次迭代的时间和模型 FLOP/s 利用率(Model FLOP/s Utilization,MFU)。MFU 衡量了 GPU 在模型训练中的效率,100% 代表理论峰值性能。
二次预训练策略表明,在模型训练末期调整数据分布和学习率衰减策略能显著提升模型品质。具体而言,在完成了 8 万亿 token 的预训练后,以相同的损失目标继续在额外的 1 万亿 token 上进行训练。
在这个二次预训练阶段,采用了两种不同的数据分布策略:
- • 第一种分布以较大采样权重侧重于高质量数据源,涵盖了预训练阶段已引入的大部分 token;
- • 第二种分布则引入了少量问答风格的对齐样本,以优化模型对类似问题的响应能力,并特别强调了模型准确度较低的数据源。
结合一个优先快速衰减的学习率计划,发现这种数据分布的排序和风格有助于模型从预训练数据集平稳过渡,并在训练的最后阶段更有效地学习新数据。
2.4 奖励模型
2.4.1 奖励模型构建
在模型对齐过程中,奖励模型起着至关重要的作用,作为训练卓越指令遵循模型时偏好排序和质量筛选的关键评判标准。
为了构建这一模型,依照与HelpSteer (Wang 等,2023b)相似的方法论,收集了包含1万条人类偏好数据的新数据集HelpSteer2(https://huggingface.co/datasets/nvidia/HelpSteer2),并已将其公开发布。
多属性回归奖励模型(multi-attribute regression reward models)在区分真正有用的信息与诸如因长度而偏好冗长无用回答等无关特征方面更为有效。此外,回归模型在细致预测奖励时表现更佳,能够捕捉到相似回答间帮助性的微妙差异。该回归奖励模型基于Nemotron-4-340B-Base模型,通过替换最终的softmax层为一个新的奖励“头部”构建而成。这个“头部”通过线性投影将最后一层的隐藏状态映射成一个包含HelpSteer五大属性(帮助性、正确性、连贯性、复杂性、啰嗦性)的五维向量。在推理时,这些属性值可以通过加权求和来综合成一个总体奖励。
3. 对齐数据
随着模型性能的持续提升,现有的数据集已难以满足训练高度对齐模型的需求。同时,从人类处获取高质量数据既费时又昂贵。为此,深入研究了合成数据生成(SDG)作为一种应对策略。
在整个对齐过程中,仅使用了约2万条人类标注数据(其中1万条用于监督式微调,另1万条HelpSteer2数据用于奖励模型训练与偏好微调),而合成数据生成流程则为监督式微调和偏好微调提供了超过98%的数据。
3.1 提示词准备
考虑到生成合成提示(Generating Synthetic Prompts)是SDG(Synthetic Data Generation,合成数据生成)的关键步骤,并且能够自主控制数据分布,满足多样化的场景,比如任务的多样性(如写作、开放式问答、封闭式问答)、主题多样性(如科学、人文、日常生活)、指令多样性(如JSON格式输出、段落生成、是否问题)。作者采用了与UltraChat数据集类似的方法。
- • 使用Mixtral-8x7B-Instruct-v0.1作为生成器,分别为开放式问答、写作、封闭式问答、数学和编程任务生成合成提示。
- • 对于每项任务,都用多样化的主题或关键词引导生成器,以确保提示覆盖广泛的话题范围。
- • 还生成了明确指定预期响应格式的指令遵循提示,例如“输出必须采用JSON格式”。
- • 还生成了包含用户与助手互动历史的两轮提示,以提升模型的对话技巧。
- • 将讨论生成单轮合成提示、指令遵循提示和两轮提示的具体流程。
3.1.1 生成单轮提示
图片
上图展示了单轮提示词的生成流程。引导生成器输出多样化的宏观主题,然后为每个宏观主题生成相关的子主题。总共收集了3000个主题,包括合成宏观主题、合成子主题以及人工收集的主题。通过引导生成器提出与每个主题相关的开放式问题,例如“机器学习是什么?”然后要求生成器细化问题,使其更加详尽具体。
对于写作类提示,如“撰写一篇关于机器学习的论文”,引导生成器根据给定主题生成特定类型的文档,如通讯稿或论文,并要求其包含更多细节。
利用C4数据集中的文本生成封闭式问答提示,引导生成器为每篇文档输出相应的指令,如“总结给定文本”或“基于给定文本,xxx是什么?”。然后,使用预定义的模板将文档与生成的指令结合起来。在生成数学和编程提示时,我们从数学和Python编程领域收集了多样化的关键词,并为这些领域生成了高层次的主题和子主题。
3.1.2 生成两轮提示
为了增强模型在多轮对话中的技能,构建了两轮对话提示,用于构建偏好数据集。这些提示包括一个问题、一个助手的回答,以及随后的一个问题,格式为“用户:XXX;助手:XXX;用户:XXX;”。从ShareGPT获取用户问题,并利用中级指令模型生成助手的回答和下一个问题。
为了更贴近现实世界的用户需求,还从LMSYS-Chat-1M(LMSYS)中提取了提示。将所有提示均衡地混合,并分为两个不同的集合:一个用于监督学习,另一个用于偏好学习,确保两者之间没有重叠。
在监督学习部分,移除了可能引发不期望对话的不安全提示。然而,在偏好学习部分,保留了这些提示,使模型能够学习区分安全与不安全的回答。
图片
上图中,对比了合成单轮提示与LMSYS提示。使用Mixtral-8x7B-Instruct-v0.1模型生成回应,并利用Nemotron-4-340B-Reward对回应的帮助性进行评分。合成提示的平均帮助性得分高于LMSYS提示,这表明LMSYS提示在难度和复杂性上通常高于合成单轮提示。
3.2 合成对话生成
通过监督微调,教会了模型如何以对话形式与用户互动。为了增强多轮对话的能力,设计了包含三轮对话的格式,以此创造出更加生动和互动的交流流程。
模型在模拟助手和用户角色之间轮换,通过迭代角色扮演来实现。对用户环节进行了后处理,以模仿现实世界用户的提问方式,排除了诸如“感谢您……”或“当然,我很乐意……”等礼貌用语。在合成演示数据时,采用了贪婪采样策略。此外,利用Nemotron4-340B-Reward来评估对话的质量,为每个样本打分,并筛选出低于预设阈值的样本,确保只保留高质量的数据。
3.3 合成偏好数据生成
使用10K人工标注的HelpSteer2偏好数据来训练Nemotron-4-340B-Reward模型,同时也寻求更广泛、更高质量和真实的偏好数据。因此,采用了以(提示,选定回应,拒绝回应)的三元组形式生成合成偏好数据。
回应生成环节,偏好数据涵盖了合成单轮提示、指令遵循提示、两轮提示以及真实世界中的ShareGPT提示、LMSYS提示,还有来自GSM8K和MATH训练数据集的提示。
对于每个提示,利用多个随机中级模型生成回应,确保偏好数据集中的回应多样性,供模型学习。我们还构建了更具挑战性的合成偏好示例,这些示例中的回应是我们根据MT-Bench标准,从表现最佳的模型中随机生成的多个回应,以进一步推动模型的自我提升。
真实性作为评判标准。面对每个提示的多个回应,需要评估它们的偏好排名,并选择出选定和拒绝的回应。对于一些可以通过真实性标签(如GSM8K和MATH训练数据集中的答案)或验证器(如指令遵循回应可以通过Python程序验证)来评估的任务,使用这些标准来判断每个回应的正确性,选择正确的回应作为选定的,错误的回应作为拒绝的。
以事实来判定(Ground-Truth-as-a-Judge):面对每个提示下的多种回应,需要评估它们的优劣并做出选择。有些任务可以通过标准答案(如GSM8K和MATH训练集中的问题)或验证工具(比如通过Python程序检验指令遵循的回应)来评定,对于这些任务就直接采用这些标准来判定回应的正确与否。正确的回应被选中,错误的则被排除。
在缺乏客观答案的情况下,尝试了两种评判方式:大型语言模型作为评判者和奖励模型作为评判者(LLM-as-Judge and Reward-Model-as-Judge)。在大型语言模型作为评判者的情况下,将提示和两个回应提交给它,并请求它进行比较。为避免顺序偏见,会以不同的顺序两次询问大型语言模型。当它两次给出一致的评判时,我们便确定了一个有效的(提示,选中,排除)三元组。
评判的提示可在报告原文的补充材料D中找到。尽管大型语言模型作为评判者在早期偏好数据集的构建中发挥了作用,但进一步探索了奖励模型作为评判者,它通过Nemotron-4-340B-Reward预测每对(提示,回应)的得分,并据此确定偏好排名。
奖励基准分数表明:奖励模型作为评判者在准确性上超越了大型语言模型作为评判者。特别是在难以区分的Chat-Hard类别中,奖励模型作为评判者的表现显著优于大型语言模型作为评判者,平均准确度为0.87比0.54。因此,在后续的数据集迭代中,采用奖励模型作为评判者。
3.4 对齐的迭代:由弱到强
优质的数据是确保模型精准对齐的关键。在数据生成过程中,一个经过精确对齐的大型语言模型(LLM)必须能够在整个生成流程中严格遵循指令。这引出了几个关键问题:
- • 哪个模型最适合作为数据生成器;
- • 生成器的性能如何与数据质量挂钩;
- • 如何提升数据生成器的效能。
图片
受到从弱到强的泛化理论的启发,开发了一种创新的迭代方法,旨在逐步提升数据至最优状态。这种方法巧妙地结合了对齐训练与数据合成的优势,使它们能够相互促进,实现持续的改进。
对齐过程与基础模型的预训练是同步进行的。在开始的迭代中,选用了Mixtral-8x7B-Instruct-v0.1作为起始的对齐模型,因为它已被证明是一个拥有宽松许可证的强大模型。利用生成的数据,训练了Nemotron-4-340B-Base的一个中间版本,即340B-Interm-1-Base。340B-Interm-1-Base的表现超越了Mixtral 8x7B基础模型,进而使得340B-Interm-1-Instruct模型也超越了Mixtral-8x7B-Instruct-v0.1模型。这表明,即使在监督较弱的情况下,也能激发出强大的能力。
在第二次迭代中,采用了上一轮迭代中得到的340B-Interm-1-Instruct模型作为新的数据生成器。得益于其相比Mixtral-8x7B-Instruct-v0.1的增强能力,第二轮迭代生成的合成数据质量更高。这些数据随后被用来训练340B-Interm-2-Base,使其进化为340B-Interm-2-Chat。这一迭代过程形成了一个自我加强的循环效应,其改进主要得益于两个方面:
- • 首先,使用相同的数据集时,基础模型的强度直接影响指导模型的性能,基础模型越强,指导模型也越强;
- • 其次,使用相同的基础模型时,数据集的质量对于指导模型的有效性至关重要,数据质量越高,指导模型的性能也越强。
在整个对齐过程中,进行了多轮的数据生成和细化,不断优化模型质量。
4. 对齐算法
遵循Ouyang等人(2022年)提出的标准模型校准协议,该协议分为两个阶段:监督微调和偏好微调。
4.1 分段的监督式微调
监督式微调(Supervised Fine-tuning,SFT)标志着模型校准的起始步骤。传统做法是在一个阶段内完成SFT,使用包含所有任务样本的数据集。然而,实验结果表明,同时学习多种行为有时会引起它们之间的冲突,这会阻碍模型在所有任务上同时实现最佳校准。特别是在编码任务中,发现即便调整数据采样权重,也无法让模型对所有编码任务都达到校准。
为应对这一挑战,提出了一个分两阶段的SFT策略,允许模型按顺序、有计划地学习不同的行为。实践证明,这种方法在所有下游任务中都能取得更佳的表现。
代码SFT(Code SFT):为提升编码和推理能力,同时避免对其他任务造成干扰,首先在编码数据上执行纯粹的SFT。要显著提升模型的编码能力,需要大量的数据。为此,开发了“遗传指令”方法,模仿自然选择过程,利用自我指导和巫师编码者变异(wizard coder mutations)技术,从少量高质量样本中生成大量合成样本。还引入了一个适应度函数,通过LLM评估生成指令及其解决方案的正确性和质量。通过评估的样本将加入种群池,进化过程将持续进行,直至达到预定的种群规模。该流程设计为支持多群体并行执行,以实现按需扩展。经过彻底的去重和筛选,保留了约80万样本的精选数据集,用于代码SFT训练。以固定学习率3e-7和全局批量大小128对模型进行单周期训练。
进入第二阶段,采用通用监督式微调(General SFT),这一阶段使用了包含200K样本的混合数据集,覆盖了多样任务类型。为降低遗忘旧知识的风险,此数据集中特别融入了前一阶段编码SFT中2%的代码生成样本。模型训练周期设定为三轮,全局批量大小设为128,同时在[1e-7, 5e-7]区间内进行学习率的精细搜索。在这两个微调阶段,对用户的回答进行了屏蔽,仅在助手的回答上计算损失,以确保模型专注于提升辅助性能。
4.2 偏好微调
继监督微调之后,通过偏好微调进一步优化模型,让模型学习以(提示,选中的回应,排除的回应)三元组形式呈现的偏好样例。
这一阶段的微调经过多轮迭代,不仅采用了直接偏好优化算法,还融入了我们新研发的奖励感知偏好优化算法。
直接偏好优化(DPO)算法通过优化策略网络,旨在拉大选中与排除回应间的隐性奖励差异。在策略网络学习区分两类回应的过程中,发现无论选中的回应质量如何,随着两者差距的扩大,它们的可能性都在持续降低。实际上,策略网络在长时间训练后往往会出现过拟合现象,一个评测指标(如MT-Bench)的提升往往以牺牲其他指标(如零样本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):Nemotron的大部分的偏好数据属于合成类型,其偏好排序是基于Nemotron-4-340BReward所赋予的奖励来判定的。与仅考虑两个回应间二元顺序的DPO不同,奖励间的差异实际上蕴含了更丰富的信息。
实际上,某些被排除的回应与选中的回应相比,质量差距微乎其微;而有些则明显逊色。DPO由于没有考虑到这种质量差异,一昧地拉大选中与排除回应间的隐含奖励差距,这可能导致过拟合,并可能无端地“丢弃”那些高质量的排除回应。
为解决这一问题,引入了一种新算法——奖励驱动的偏好优化(RPO),该算法旨在利用策略网络所定义的隐含奖励来更准确地估计奖励差距。
相较于DPO,RPO通过学习估计奖励差异,有效避免了过拟合现象。以DPO训练得到的模型检查点作为初始状态和参照策略,继续采用RPO对模型进行训练。采用了一个包含30万个样本的偏好数据集,并对选中的回应实施了较为宽松的质量筛选标准。
尽管仅一轮RPO训练就能全面提升模型在各项任务上的表现,但还是执行了三轮RPO迭代,每轮迭代都以前一轮的检查点作为起点和参照。我们发现,随着RPO迭代次数的增加,模型性能持续获得提升。经过三轮RPO训练后得到的检查点,即为最终版的Nemotron-4-340B-Instruct模型。
• 论文原文: https://d1qx31qr3h6wln.cloudfront.net/publications/Nemotron_4_340B_8T_0.pdf
本文转载自 大语言模型论文跟踪,作者:HuggingAGI