研究背景是传统语言模型预训练受数据量限制,强化学习为人工智能发展带来新方向,但此前相关研究成果不佳。重要意义在于Kimi k1.5探索出了新的训练方式,在多模态推理等任务上取得很好的效果,为大语言模型发展提供了新路径。
文章介绍了多模态大语言模型Kimi k1.5,该模型利用强化学习进行训练。通过长上下文扩展、改进策略优化等技术创新,在多模态数据上训练,并对基础设施进行优化。实验表明,Kimi k1.5在多个基准测试中取得了优异成绩,其长到短方法也有效提升了短思维链模型的性能。
摘要&&解读
通过预测下一个词进行语言模型预训练已被证明在扩展计算规模方面是有效的,但它受到可用训练数据量的限制。扩展强化学习(RL)为人工智能的持续改进开辟了新的维度,有望使大语言模型(LLMs)通过学习基于奖励进行探索来扩展其训练数据。然而,之前已发表的研究并未取得具有竞争力的成果。鉴于此,我们报告Kimi k1.5的训练实践,这是我们最新的通过强化学习训练的多模态大语言模型,包括其强化学习训练技术、多模态数据配方以及基础设施优化。长上下文扩展和改进的策略优化方法是我们方法的关键要素,它们构建了一个简单而有效的强化学习框架,而无需依赖蒙特卡罗树搜索、价值函数和过程奖励模型等更复杂的技术。值得注意的是,我们的系统在多个基准测试和模态中实现了最先进的推理性能,例如在美国数学邀请赛(AIME)中得分为77.5,在MATH 500测试中得分为96.2,在Codeforces竞赛中排名第94百分位,在MathVista测试中得分为74.9,与OpenAI的o1模型相当。此外,我们提出了有效的长到短(long2short)方法,利用长思维链(long-CoT)技术改进短思维链(short-CoT)模型,从而在短思维链推理中取得了最先进的成果,例如在AIME测试中得分为60.8,在MATH500测试中得分为94.6,在LiveCodeBench测试中得分为47.3,大幅超越了现有的短思维链模型,如GPT-4o和Claude Sonnet 3.5(提升幅度高达550%)。
-
研究背景: 语言模型预训练受限于可用的高质量训练数据,强化学习为人工智能的持续改进提供了新方向,但之前已发表的相关研究未取得具有竞争力的成果。
-
创新贡献:
-
提出长上下文扩展和改进的策略优化方法,构建了简单有效的强化学习框架。
-
提出多种长到短方法,提升了短思维链模型的性能。
-
优化了多模态数据处理和RL基础设施,如部分滚动技术和混合部署策略。
-
实现设计:
-
构建高质量RL提示集,进行长CoT监督微调,为模型学习推理策略做准备。
-
采用在线策略镜像下降变体进行策略优化,引入长度惩罚和多种采样策略。
-
设计多种长到短方法,包括模型合并、最短拒绝采样、DPO和长到短RL。
-
对模型进行多阶段训练,包括预训练、普通监督微调、长CoT监督微调及RL训练。
-
优化RL基础设施,包括设计大规模训练系统、部分滚动技术、混合部署策略和代码沙箱。
-
实验结果:
-
Kimi k1.5长CoT模型在多个基准测试和模态中实现了最先进的推理性能。
-
Kimi k1.5短CoT模型在多个任务中,与领先的开源和专有模型相比,表现出具有竞争力或更优的性能。
-
长上下文扩展实验表明模型性能随上下文长度增加而提升。
-
长到短实验显示长到短RL算法在令牌效率上表现最佳。
-
消融实验验证了模型大小和上下文长度扩展、负梯度使用、采样策略等对模型性能的影响。
1 引言
在缩放定律的背景下,研究人员对通过预测下一个词进行语言模型预训练展开了研究,按比例缩放模型参数和数据规模能够不断提升模型的智能水平(Kaplan等人,2020;Hoffmann等人,2022)。然而,这种方法受到可用高质量训练数据量的限制(Villalobos等人,2024;Muennighoff等人,2023)。在本报告中,我们介绍Kimi k1.5的训练方法,这是我们最新的通过强化学习(RL)训练的多模态大语言模型。其目标是探索持续扩展模型能力的新途径。通过在大语言模型中运用强化学习,模型能够基于奖励进行探索学习,因此不受预先存在的静态数据集的限制。
k1.5的设计和训练包含几个关键要素:
-
长上下文扩展:我们将强化学习的上下文窗口扩展到128k,并观察到随着上下文长度的增加,模型性能持续提升。我们这种方法背后的关键思路是使用部分滚动(partial rollouts)来提高训练效率,即通过重用之前轨迹的大部分来采样新的轨迹,避免从头重新生成新轨迹的成本。我们的观察结果表明,上下文长度是利用大语言模型扩展强化学习的关键维度。
-
改进的策略优化:我们推导出了结合长思维链的强化学习公式,并采用了一种在线镜像下降的变体来进行稳健的策略优化。通过有效的采样策略、长度惩罚以及数据配方的优化,该算法得到了进一步改进。
-
简化框架:长上下文扩展与改进的策略优化方法相结合,为大语言模型的学习构建了一个简化的强化学习框架。由于我们能够扩展上下文长度,所学的思维链展现出规划、反思和修正的特性。增加上下文长度会增加搜索步骤的数量。结果表明,无需依赖蒙特卡罗树搜索、价值函数和过程奖励模型等更复杂的技术,我们的模型就能取得强大的性能。
-
多模态:我们的模型在文本和视觉数据上进行联合训练,具备对这两种模态进行联合推理的能力。
此外,我们提出了有效的长到短方法,利用长思维链技术来改进短思维链模型。具体而言,我们的方法包括应用基于长思维链激活的长度惩罚以及模型合并。
我们的长思维链版本在多个基准测试和模态中实现了最先进的推理性能,例如在AIME测试中得分为77.5,在MATH 500测试中得分为96.2,在Codeforces竞赛中排名第94百分位,在MathVista测试中得分为74.9,与OpenAI的o1模型相当。我们的模型在短思维链推理方面也取得了最先进的成果,例如在AIME测试中得分为60.8,在MATH500测试中得分为94.6,在LiveCodeBench测试中得分为47.3,大幅超越了现有的短思维链模型,如GPT-4o和Claude Sonnet 3.5(提升幅度高达550%)。结果如图1和图2所示。
2 方法:基于大语言模型的强化学习
Kimi k1.5的开发包含几个阶段:预训练、普通监督微调(SFT)、长思维链监督微调以及强化学习(RL)。本报告主要聚焦于强化学习,首先在2.1节概述强化学习提示集的整理,在2.2节介绍长思维链监督微调,接着在2.3节深入讨论强化学习训练策略。预训练和普通监督微调的更多细节可在2.5节中找到。
2.1 强化学习提示集整理
通过初步实验,我们发现强化学习提示集的质量和多样性在确保强化学习有效性方面起着至关重要的作用。精心构建的提示集不仅能引导模型进行稳健的推理,还能降低奖励篡改和过度拟合表面模式的风险。具体而言,高质量的强化学习提示集具有三个关键属性:
-
多样覆盖:提示应涵盖广泛的学科领域,如科学、技术、工程和数学(STEM)、编程以及通用推理,以增强模型的适应性,并确保其在不同领域具有广泛的适用性。
-
难度平衡:提示集应包含分布合理的简单、中等和困难问题,以促进逐步学习,并防止模型过度拟合特定复杂度水平的问题。
-
准确可评估性:提示应能够被验证者进行客观可靠的评估,确保基于正确的推理而非表面模式或随机猜测来衡量模型的性能。
为了在提示集中实现多样覆盖,我们采用自动筛选器来选择需要丰富推理且易于评估的问题。我们的数据集包含来自各个领域的问题,如STEM领域、竞赛以及通用推理任务,涵盖纯文本和图文问答数据。此外,我们开发了一个标记系统,按领域和学科对提示进行分类,以确保不同学科领域的代表性均衡(M. Li等人,2023;W. Liu等人,2023)。
我们采用基于模型的方法,利用模型自身的能力自适应地评估每个提示的难度。具体来说,对于每个提示,一个监督微调模型使用相对较高的采样温度生成十次答案。然后计算通过率,并将其作为提示难度的代理指标,通过率越低,难度越高。这种方法使难度评估与模型的内在能力保持一致,对强化学习训练非常有效。通过使用这种方法,我们可以预筛选掉大多数简单的情况,并在强化学习训练过程中轻松探索不同的采样策略。
为了避免潜在的奖励篡改(Everitt等人,2021;Pan等人,2022),我们需要确保每个提示的推理过程和最终答案都能被准确验证。实证观察表明,一些复杂的推理问题可能有相对简单且容易猜测的答案,这可能导致误报验证,即模型通过错误的推理过程得出正确答案。为了解决这个问题,我们排除了容易出现此类错误的问题,如选择题、判断题和证明题。此外,对于通用问答任务,我们提出了一种简单而有效的方法来识别和去除容易被模型“破解”的提示。具体来说,我们让模型在没有任何思维链推理步骤的情况下猜测潜在答案。如果模型在N次尝试内预测出正确答案,则该提示被认为太容易被“破解”,并将其移除。我们发现将N设置为8可以移除大多数容易被“破解”的提示。开发更先进的验证模型仍是未来研究的一个开放方向。
2.2 长思维链监督微调
有了经过优化的强化学习提示集后,我们运用提示工程构建了一个规模较小但质量较高的长思维链热身数据集,其中包含针对文本和图像输入的经过准确验证的推理路径。这种方法类似于拒绝采样(RS),但侧重于通过提示工程生成长思维链推理路径。最终的热身数据集旨在封装类似于人类推理的关键认知过程,如规划(模型在执行前系统地规划步骤)、评估(对中间步骤进行批判性评估)、反思(使模型能够重新考虑并完善其方法)和探索(鼓励考虑替代解决方案)。通过在这个热身数据集上进行轻量级的监督微调,我们有效地引导模型内化这些推理策略。结果,经过微调的长思维链模型在生成更详细、逻辑连贯的响应方面表现出更强的能力,从而在各种推理任务中提升了性能。
2.3 强化学习
2.3.1 问题设定
给定一个训练数据集
,其中是问题,是相应的正确答案,我们的目标是训练一个策略模型,以准确解决测试问题。在复杂推理的情况下,问题到解决方案的映射并非易事。为了应对这一挑战,思维链(CoT)方法建议使用一系列中间步骤来连接和,其中每个都是一个连贯的标记序列,是解决问题的重要中间步骤(J. Wei等人,2022)。在解决问题时,思维以自回归的方式采样,随后最终答案。我们用表示这个采样过程。请注意,思维和最终答案均作为语言序列进行采样。
为了进一步增强模型的推理能力,人们采用规划算法来探索各种思维过程,在推理时生成改进的思维链(Yao等人,2024;Y I Wu等人,2024;Snell等人,2024)。这些方法的核心思想是在价值估计的指导下显式构建思维搜索树。这使得模型能够在遇到死胡同时探索思维过程的不同延续,或回溯以探索新的方向。更详细地说,设是一个搜索树,其中每个节点表示一个部分解决方案。这里,由问题和一系列导致该节点的思维组成,表示序列中思维的数量。规划算法使用一个评判模型来提供反馈,这有助于评估当前解决问题的进展,并识别现有部分解决方案中的任何错误。我们注意到,反馈可以由判别分数或语言序列提供(L. Zhang等人,2024)。在所有的反馈指导下,规划算法选择最有希望的节点进行扩展,从而使搜索树不断生长。上述过程迭代重复,直到得出完整的解决方案。
我们也可以从算法的角度来看待规划算法。在第次迭代时,给定过去的搜索历史,规划算法迭代地确定下一个搜索方向,并为当前搜索进度提供反馈。由于思维和反馈都可以看作是中间推理步骤,并且这些组件都可以表示为语言标记序列,我们用代替,用简化符号表示。因此,我们将规划算法视为一个直接作用于推理步骤序列的映射。在这个框架中,规划算法使用的搜索树中存储的所有信息都被扁平化,作为完整的上下文提供给算法。这为生成高质量的思维链提供了一个有趣的视角:我们无需显式构建搜索树并实现规划算法,而是可以训练一个模型来近似这个过程。在这里,思维的数量(即语言标记的数量)类似于传统上分配给规划算法的计算预算。最近长上下文窗口的进展使得在训练和测试阶段都能实现无缝扩展。如果可行,这种方法使模型能够通过自回归预测直接在推理空间中进行隐式搜索。因此,模型不仅学会解决一组训练问题,还发展了有效处理单个问题的能力,从而提高了对未见测试问题的泛化能力。
因此,我们考虑使用强化学习(RL)训练模型来生成思维链(OpenAI,2024)。设是一个奖励模型,它根据正确答案来判断给定问题的提议答案的正确性,通过分配一个值。对于可验证的问题,奖励由预定义的标准或规则直接确定。例如,在编程问题中,我们评估答案是否通过测试用例。对于具有自由形式正确答案的问题,我们训练一个奖励模型来预测答案是否与正确答案匹配。给定一个问题,模型通过采样过程生成思维链,然后生成最终答案。生成的思维链的质量通过它是否能导致正确的最终答案来评估。总之,我们考虑以下目标来优化策略:通过扩展强化学习训练,我们旨在训练一个模型,充分利用基于简单提示的思维链和规划增强型思维链的优势。模型在推理时仍然以自回归的方式采样语言序列,从而避免了在部署时先进规划算法所需的复杂并行化。然而,与基于简单提示的方法的一个关键区别是,模型不应仅仅遵循一系列推理步骤。相反,它还应该通过利用所有探索的思维作为上下文信息,学习关键的规划技能,包括错误识别、回溯和解决方案优化。
2.3.2 策略优化
我们采用一种在线策略镜像下降的变体作为训练算法(Abbasi-Yadkori等人,2019;Mei等人,2019;Tomar等人,2020)。该算法迭代执行。在第次迭代时,我们使用当前模型作为参考模型,并优化以下相对熵正则化的策略优化问题:其中,是一个控制正则化程度的参数。这个目标有一个封闭形式的解:这里,是归一化因子。对两边取对数,对于任何,满足以下约束,这使我们在优化过程中可以利用离策略数据:这促使我们得到以下代理损失:为了近似,我们使用从采样得到的样本:。我们还发现,使用采样奖励的经验均值在实践中能得到有效的结果。这是合理的,因为当时,接近下的期望奖励。最后,我们通过对代理损失求梯度来完成学习算法。对于每个问题,使用参考策略采样个响应,梯度由下式给出:对于熟悉策略梯度方法的人来说,这个梯度类似于使用采样奖励均值作为基线的公式(2)的策略梯度(Kool等人,2019;Ahmadian等人,2024)。主要区别在于响应是从采样的,而不是在策略上采样的,并且应用了正则化。因此,我们可以将其视为通常的在策略正则化策略梯度算法向离策略情况的自然扩展(Nachum等人,2017)。我们从中采样一批问题,并将参数更新为,随后将作为下一次迭代的参考策略。由于每次迭代由于参考策略的变化而考虑不同的优化问题,我们还在每次迭代开始时重置优化器。
我们在训练系统中排除了价值网络,而之前的研究中曾使用过价值网络(Ahmadian等人,2024)。虽然这个设计选择显著提高了训练效率,但我们也假设在经典强化学习中传统的使用价值函数进行信用分配的方法可能不适合我们的场景。考虑这样一个场景:模型生成了一个部分思维链,并且有两个潜在的下一个推理步骤:和。假设直接导致正确答案,而包含一些错误。如果有一个理想的价值函数可用,它会表明比具有更高的价值。根据标准的信用分配原则,选择会因为其相对于当前策略具有负优势而受到惩罚。
然而,探索对于训练模型生成长思维链非常有价值。通过将从长思维链得出的最终答案的合理性作为奖励信号,只要模型能够成功恢复并得出正确答案,它就可以从选择的尝试和错误模式中学习。这个例子的关键启示是,我们应该鼓励模型探索不同的推理路径,以增强其解决复杂问题的能力。这种探索性方法会产生丰富的经验,有助于培养关键的规划技能。我们的主要目标不仅限于在训练问题上获得高精度,而是专注于为模型配备有效的问题解决策略,最终提高其在测试问题上的性能。
2.3.3 长度惩罚
我们观察到在强化学习训练过程中存在过度思考的现象,即模型的响应长度显著增加。虽然这会带来更好的性能,但过长的推理过程在训练和推理过程中成本较高,而且人类通常也不倾向于过度思考。为了解决这个问题,我们引入了长度奖励来抑制令牌长度的快速增长,从而提高模型的令牌效率。给定问题的个采样响应以及正确答案,设为的长度,,。如果,我们将所有响应的长度奖励设置为零,因为它们长度相同。否则,长度奖励由下式给出:其中,。
本质上,我们鼓励正确答案中较短的响应并惩罚较长的响应,同时明确惩罚错误答案的长响应。然后,这个基于长度的奖励会以一个加权参数添加到原始奖励中。
在我们的初步实验中,长度惩罚在训练初期可能会减缓训练速度。为了缓解这个问题,我们建议在训练过程中逐渐引入长度惩罚。具体来说,我们首先在没有长度惩罚的情况下进行标准的策略优化,然后在训练的剩余阶段应用恒定的长度惩罚。
2.3.4 采样策略
虽然强化学习算法本身具有相对较好的采样特性(更难的问题提供更大的梯度),但其训练效率有限。因此,一些明确的先验采样方法可能会带来更大的性能提升。我们利用多种信号来进一步改进采样策略。首先,我们收集的强化学习训练数据自然带有不同的难度标签。例如,一道数学竞赛题比一道小学数学题更难。其次,由于强化学习训练过程会多次采样同一个问题,我们还可以跟踪每个问题的成功率作为难度的度量。我们提出两种采样方法来利用这些先验信息提高训练效率。
-
课程采样:我们从较容易的任务开始训练,逐渐过渡到更具挑战性的任务。由于初始的强化学习模型性能有限,将有限的计算预算花在非常难的问题上往往只能得到很少的正确样本,导致训练效率较低。同时,我们收集的数据自然包含等级和难度标签,使得基于难度的采样成为一种直观有效的提高训练效率的方法。
-
优先采样:除了课程采样,我们还使用优先采样策略,重点关注模型表现较差的问题。我们跟踪每个问题的成功率,并按照的比例采样问题,这样成功率较低的问题获得更高的采样概率。这将模型的注意力引导到其最薄弱的领域,从而实现更快的学习和更好的整体性能。
2.3.5 更多训练细节
-
编码测试用例生成:由于许多从网络上获取的编码问题没有可用的测试用例,我们设计了一种自动生成测试用例的方法,这些测试用例作为奖励用于通过强化学习训练我们的模型。我们主要关注那些不需要特殊评判的问题。我们还假设这些问题有可用的正确解决方案,以便我们可以利用这些解决方案生成更高质量的测试用例。我们利用广泛认可的测试用例生成库CYaRon来改进我们的方法。我们使用基础的Kimi k1.5根据问题陈述生成测试用例。CYaRon的使用说明和问题描述作为生成器的输入。对于每个问题,我们首先使用生成器生成50个测试用例,并为每个测试用例随机采样10个正确提交。我们使用这些提交来运行测试用例。如果10个提交中至少有7个产生匹配的结果,则该测试用例被视为有效。经过这一轮筛选,我们得到一组选定的测试用例。如果10个提交中至少有9个通过了整个选定测试用例集,则将该问题及其相关的选定测试用例添加到我们的训练集中。从统计数据来看,从1000个在线竞赛问题的样本中,大约614个不需要特殊评判。我们开发了463个测试用例生成器,这些生成器至少产生了40个有效测试用例,最终有323个问题被纳入我们的训练集。
-
数学奖励建模:评估数学解决方案的一个挑战是不同的书写形式可能代表相同的潜在答案。例如,和可能都是同一问题的有效解决方案。我们采用了两种方法来提高奖励模型的评分准确性:
-
经典奖励模型(Classic RM):受InstructGPT(Ouyang等人,2022)方法的启发,我们实现了一个基于价值头的奖励模型,并收集了大约80万个数据点进行微调。该模型最终将“问题”、“参考答案”和“响应”作为输入,并输出一个标量,用于表示响应是否正确。
-
思维链奖励模型(Chain-of-Thought RM):最近的研究(Ankner等人,2024;McAleese等人,2024)表明,结合思维链推理的奖励模型在数学等对正确性标准要求细致的任务上,性能显著优于经典方法。因此,我们收集了同样规模的约80万个带有思维链标注的示例,用于微调Kimi模型。基于与经典奖励模型相同的输入,思维链方法在以JSON格式给出最终正确性判断之前,会显式地生成一个逐步的推理过程,从而实现更稳健且可解释的奖励信号。在我们的人工抽查中,经典奖励模型的准确率约为84.4,而思维链奖励模型的准确率达到了98.5。在强化学习训练过程中,我们采用思维链奖励模型以确保更准确的反馈。
- 视觉数据:为了提高模型在现实世界中的图像推理能力,并实现视觉输入与大语言模型(LLMs)更有效的对齐,我们的视觉强化学习(Vision RL)数据主要来自三个不同的类别:真实世界数据、合成视觉推理数据和文本渲染数据。
-
真实世界数据:涵盖了各种不同年级水平的科学问题,这些问题需要图形理解和推理能力,还有需要视觉感知和推理的位置猜测任务,以及涉及理解复杂图表的数据分析等其他类型的数据。这些数据集提高了模型在现实世界场景中进行视觉推理的能力。
-
合成视觉推理数据:是人工生成的,包括为提高特定视觉推理技能(如理解空间关系、几何图案和物体交互)而程序生成的图像和场景。这些合成数据集为测试模型的视觉推理能力提供了一个可控的环境,并提供了无穷无尽的训练示例。
-
文本渲染数据:是通过将文本内容转换为视觉格式创建的,使模型在处理不同模态的基于文本的查询时能够保持一致性。通过将文本文档、代码片段和结构化数据转换为图像,我们确保无论输入是纯文本还是渲染为图像的文本(如屏幕截图或照片),模型都能提供一致的响应。这也有助于提高模型处理文本密集型图像的能力。每种类型的数据对于构建一个全面的视觉语言模型都至关重要,该模型能够有效地处理广泛的现实世界应用,同时确保在各种输入模态下的一致性能。
2.4 长到短:短思维链模型的上下文压缩
虽然长思维链模型性能强大,但与标准的短思维链大语言模型相比,它在测试时消耗更多的令牌。然而,将长思维链模型的思维先验转移到短思维链模型是可行的,这样即使在测试时令牌预算有限的情况下,也能提高性能。我们针对长到短问题提出了几种方法,包括模型合并(Yang等人,2024)、最短拒绝采样、直接偏好优化(DPO,Rafailov等人,2024)和长到短强化学习。以下是这些方法的详细描述:
-
模型合并:已发现模型合并在保持泛化能力方面很有用。我们还发现,在合并长思维链模型和短思维链模型时,它对提高令牌效率也很有效。这种方法将长思维链模型和较短的模型结合起来,无需训练即可获得一个新模型。具体来说,我们通过简单地平均它们的权重来合并两个模型。
-
最短拒绝采样:我们观察到我们的模型对于同一个问题生成的响应长度差异很大。基于此,我们设计了最短拒绝采样方法。该方法对同一个问题采样次(在我们的实验中,),并选择最短的正确响应进行监督微调。
-
直接偏好优化(DPO):与最短拒绝采样类似,我们利用长思维链模型生成多个响应样本。选择最短的正确解决方案作为正样本,而较长的响应被视为负样本,包括错误的长响应和正确但比所选正样本长1.5倍的响应。这些正负样本对构成了用于DPO训练的成对偏好数据。
-
长到短强化学习(Long2short RL):在标准的强化学习训练阶段之后,我们选择一个在性能和令牌效率之间达到最佳平衡的模型作为基础模型,并进行单独的长到短强化学习训练阶段。在这个第二阶段,我们应用2.3.3节中介绍的长度惩罚,并显著减少最大滚动长度,以进一步惩罚那些可能正确但超出期望长度的响应。
2.5 其他训练细节
2.5.1 预训练
Kimi k1.5的基础模型是在一个多样化、高质量的多模态语料库上进行训练的。语言数据涵盖五个领域:英语、中文、代码、数学推理和知识。多模态数据,包括图像字幕、图文交错、光学字符识别(OCR)、知识和问答数据集,使我们的模型能够获得视觉 - 语言能力。严格的质量控制确保了整个预训练数据集的相关性、多样性和平衡性。我们的预训练分为三个阶段:(1)视觉 - 语言预训练,在这个阶段建立强大的语言基础,然后逐渐进行多模态集成;(2)冷却阶段,使用精心挑选和合成的数据巩固能力,特别是针对推理和基于知识的任务;(3)长上下文激活,将序列处理能力扩展到131,072个令牌。关于我们预训练工作的更多细节可以在附录B中找到。
2.5.2 普通监督微调
我们创建了涵盖多个领域的普通监督微调语料库。对于非推理任务,包括问答、写作和文本处理,我们最初通过人工标注构建一个种子数据集。这个种子数据集用于训练一个种子模型。随后,我们收集各种提示,并使用种子模型为每个提示生成多个响应。注释者然后对这些响应进行排名,并优化排名靠前的响应以生成最终版本。对于推理任务,如数学和编码问题,基于规则和奖励建模的验证比人工判断更准确和高效,我们使用拒绝采样来扩展监督微调数据集。
我们的普通监督微调数据集大约包含100万个文本示例。具体来说,50万个示例用于通用问答,20万个用于编码,20万个用于数学和科学,5千个用于创意写作,2万个用于长上下文任务,如总结、文档问答、翻译和写作。此外,我们构建了100万个图文示例,涵盖各种类别,包括图表解释、OCR、基于图像的对话、视觉编码、视觉推理以及带有视觉辅助的数学/科学问题。
我们首先在序列长度为32k令牌的情况下训练模型1个epoch,然后在序列长度为128k令牌的情况下再训练1个epoch。在第一阶段(32k),学习率从衰减到,然后在第二阶段(128k)重新热身到,最后衰减到。为了提高训练效率,我们将多个训练示例打包到每个单独的训练序列中。
2.6 强化学习基础设施
2.6.1 大语言模型的大规模强化学习训练系统
在人工智能领域,强化学习(RL)已成为大语言模型(LLMs)的关键训练方法(Ouyang等人,2022;Jaech等人,2024),其灵感来源于在围棋、星际争霸II和Dota 2等复杂游戏中通过AlphaGo(Silver等人,2017)、AlphaStar(Vinyals等人,2019)和OpenAI Dota Five(Berner等人,2019)等系统取得的成功。遵循这一传统,Kimi k1.5系统采用迭代同步强化学习框架,经过精心设计,通过持续学习和适应来增强模型的推理能力。该系统的一个关键创新是引入了部分滚动技术,旨在优化对复杂推理轨迹的处理。
如图3a所示,强化学习训练系统通过迭代同步方法运行,每次迭代包括一个滚动阶段和一个训练阶段。在滚动阶段,由中央主节点协调的滚动工作节点通过与模型交互生成滚动轨迹,产生对各种输入的响应序列。这些轨迹随后存储在回放缓冲区中,回放缓冲区通过打破时间相关性,确保为训练提供多样化且无偏差的数据集。在随后的训练阶段,训练工作节点访问这些经验来更新模型的权重。这个循环过程使模型能够不断从其行动中学习,随着时间的推移调整策略以提高性能。
中央主节点充当中央指挥者,管理滚动工作节点、训练工作节点、使用奖励模型进行评估以及回放缓冲区之间的数据流动和通信。它确保系统和谐运行,平衡负载并促进高效的数据处理。
训练工作节点访问这些滚动轨迹(无论是在单个迭代中完成还是跨多个迭代划分),以计算梯度更新,从而优化模型的参数并提高其性能。这个过程由奖励模型监督,奖励模型评估模型输出的质量,并提供关键反馈以指导训练过程。奖励模型的评估对于确定模型策略的有效性以及引导模型达到最佳性能尤为关键。
此外,该系统集成了一个代码执行服务,专门用于处理与代码相关的问题,并且是奖励模型的重要组成部分。该服务在实际编码场景中评估模型的输出,确保模型的学习与现实世界的编程挑战紧密结合。通过根据实际代码执行验证模型的解决方案,这个反馈循环对于优化模型的策略以及提高其在代码相关任务中的性能至关重要。
2.6.2 长思维链强化学习的部分滚动
我们工作的主要思路之一是扩展长上下文强化学习训练。部分滚动是一种关键技术,通过管理长轨迹和短轨迹的滚动,有效地应对处理长思维链特征的挑战。该技术建立了一个固定的输出令牌预算,限制每个滚动轨迹的长度。如果在滚动阶段某个轨迹超过了令牌限制,未完成的部分将保存到回放缓冲区,并在下一次迭代中继续进行。这确保了没有单个冗长的轨迹会独占系统资源。此外,由于滚动工作节点是异步运行的,当一些节点处理长轨迹时,其他节点可以独立处理新的、较短的滚动任务。这种异步操作通过确保所有滚动工作节点都积极参与训练过程,最大化了计算效率,从而优化了系统的整体性能。
如图3b所示,部分滚动系统通过在迭代之间(从迭代n - m到迭代n)将长响应分解为多个段来工作。回放缓冲区作为中央存储机制,保存这些响应段,其中只有当前迭代(迭代n)需要进行在线策略计算。之前的段(迭代n - m到n - 1)可以从缓冲区中高效地重用,无需重复滚动。这种分段方法显著降低了计算开销:系统不是一次性滚动整个响应,而是逐步处理和存储段,使得在保持快速迭代时间的同时能够生成更长的响应。在训练过程中,可以从损失计算中排除某些段,以进一步优化学习过程,使整个系统既高效又可扩展。
部分滚动的实现还提供了重复检测功能。系统会识别生成内容中的重复序列并提前终止它们,在保持输出质量的同时减少不必要的计算。检测到的重复内容可以被赋予额外的惩罚,有效地抑制提示集中冗余内容的生成。
2.6.3 训练和推理的混合部署
强化学习训练过程包括以下阶段:
-
训练阶段:一开始,Megatron(Shoeybi等人,2020)和vLLM(Kwon等人,2023)在单独的容器中执行,由一个名为checkpoint-engine(2.6.3节)的中间进程封装。Megatron开始训练过程。训练完成后,Megatron卸载GPU内存,并准备将当前权重传输给vLLM。
-
推理阶段:在Megatron卸载之后,vLLM使用虚拟模型权重启动,并通过Mooncake(Qin等人,2024)用Megatron传输的最新权重进行更新。滚动完成后,checkpoint-engine停止所有vLLM进程。
-
后续训练阶段:一旦分配给vLLM的内存被释放,Megatron重新加载内存并启动另一轮训练。
我们发现现有工作很难同时支持以下所有特性:
-
复杂的并行策略:Megatron和vLLM可能具有不同的并行策略。Megatron中分布在多个节点上的训练权重可能难以与vLLM共享。
-
最小化空闲GPU资源:对于在线策略强化学习,最近的工作如SGLang(L. Zheng等人,2024)和vLLM在训练过程中可能会保留一些GPU,这反而可能导致训练GPU空闲。在训练和推理之间共享相同的设备会更高效。
-
动态扩展能力:在某些情况下,通过增加推理节点的数量同时保持训练过程不变,可以实现显著的加速。我们的系统能够在需要时高效利用空闲的GPU节点。
如图4所示,我们在Megatron和vLLM之上实现了这种混合部署框架(2.6.3节),实现了从训练到推理阶段不到一分钟,反之约十秒的转换。
- 混合部署策略:我们提出了一种用于训练和推理任务的混合部署策略,利用Kubernetes Sidecar容器共享所有可用的GPU,将这两种工作负载部署在一个Pod中。这种策略的主要优点包括:
-
它促进了高效的资源共享和管理,防止在训练节点和推理节点分别部署时,训练节点在等待推理节点时处于空闲状态。
-
利用不同的部署镜像,训练和推理可以各自独立迭代,以获得更好的性能。
-
该架构不限于vLLM,其他框架也可以方便地集成。
- Checkpoint Engine:Checkpoint Engine负责管理vLLM进程的生命周期,公开HTTP API以触发对vLLM的各种操作。为了确保整体的一致性和可靠性,我们利用由etcd服务管理的全局元数据系统来广播操作和状态。由于CUDA图、NCCL缓冲区和NVIDIA驱动程序的原因,vLLM卸载时可能很难完全释放GPU内存。为了尽量减少对vLLM的修改,我们在必要时终止并重新启动它,以提高GPU利用率和容错能力。Megatron中的工作节点将其拥有的检查点转换为Hugging Face格式,并存储在共享内存中。这种转换还考虑了流水线并行和专家并行,以便这些检查点中只保留张量并行。共享内存中的检查点随后被划分为多个分片,并在全局元数据系统中注册。我们使用Mooncake通过RDMA在对等节点之间传输检查点。为了加载权重文件并进行张量并行转换,需要对vLLM进行一些修改。
2.6.4 代码沙箱
我们开发了沙箱作为执行用户提交代码的安全环境,针对代码执行和代码基准评估进行了优化。通过动态切换容器镜像,沙箱通过MultiPL-E(Cassano, Gouwar, D. Nguyen, S. Nguyen, et al. 2023)、DMOJ Judge Server 2、Lean、Jupyter Notebook和其他镜像支持不同的用例。
对于编码任务中的强化学习,沙箱通过提供一致且可重复的评估机制,确保了训练数据判断的可靠性。其反馈系统支持多阶段评估,如代码执行反馈和仓库级编辑,同时保持统一的上下文,以确保在不同编程语言之间进行公平公正的基准比较。
我们在Kubernetes上部署该服务,以实现可扩展性和弹性,并通过HTTP端点公开它以便外部集成。Kubernetes的自动重启和滚动更新等功能确保了可用性和容错能力。
为了优化性能并支持强化学习环境,我们在代码执行服务中采用了多种技术来提高效率、速度和可靠性,包括:
-
使用Crun:我们使用crun作为容器运行时,而不是Docker,这显著减少了容器启动时间。
-
Cgroup复用:我们预先创建cgroups供容器使用,在高并发场景中,为每个容器创建和销毁cgroups可能会成为瓶颈,因此这种方法至关重要。
-
磁盘使用优化:使用上层挂载为tmpfs的覆盖文件系统来控制磁盘写入,提供固定大小的高速存储空间。这种方法对临时工作负载很有帮助。
这些优化提高了强化学习在代码执行方面的效率,为评估强化学习生成的代码提供了一致且可靠的环境,这对于迭代训练和模型改进至关重要。
3 实验
3.1 评估
由于k1.5是一个多模态模型,我们在不同模态的各种基准测试中进行了全面评估。详细的评估设置可以在附录C中找到。我们的基准测试主要包括以下三类:
-
文本基准测试:MMLU(Hendrycks等人,2020)、IF-Eval(J. Zhou等人,2023)、CLUEWSC(L. Xu等人,2020)、C-EVAL(Y. Huang等人,2023)
-
推理基准测试:HumanEval-Mul、LiveCodeBench(Jain等人,2024)、Codeforces、AIME 2024、MATH500(Lightman等人,2023)
-
视觉基准测试:MMMU(Yue, Ni, et al. 2024)、MATH-Vision(K. Wang等人,2024)、MathVista(Lu等人,2023)
3.2 主要结果
-
K1.5长思维链模型:Kimi k1.5长思维链模型的性能如表2所示。通过长思维链监督微调(在2.2节中描述)和视觉 - 文本联合强化学习(在2.3节中讨论),模型的长期推理能力得到了显著增强。测试时的计算扩展进一步提升了其性能,使模型在一系列模态中都能取得最先进的结果。我们的评估显示,该模型在长时间上下文环境下的推理、理解和信息合成能力有了显著提高,代表了多模态人工智能能力的进步。
-
K1.5短思维链模型:Kimi k1.5短思维链模型的性能如表3所示。该模型集成了多种技术,包括传统的监督微调(在2.5.2节中讨论)、强化学习(在2.3节中探讨)和长到短蒸馏(在2.4节中概述)。结果表明,k1.5短思维链模型在多个任务中,与领先的开源和专有模型相比,表现出具有竞争力或更优的性能。这些任务包括文本、视觉和推理挑战,在自然语言理解、数学、编码和逻辑推理方面具有显著优势。
表2:Kimi k1.5长思维链模型与领先的开源和专有模型的性能对比
表3:Kimi k1.5短思维链模型与领先的开源和专有模型的性能对比。VLM模型性能数据来自OpenCompass基准平台(https://opencompass.org.cn/)。
3.3 长上下文扩展
我们使用一个中等规模的模型来研究基于大语言模型的强化学习的扩展特性。图5展示了在数学提示集上训练的小模型变体在训练迭代过程中训练准确率和响应长度的变化。随着训练的进行,我们观察到响应长度和性能准确率同时增加。值得注意的是,更具挑战性的基准测试中响应长度的增长更为陡峭,这表明模型学会了为复杂问题生成更详细的解决方案。图6显示了模型的输出上下文长度与其解决问题能力之间的强相关性。我们最终运行的k1.5模型将上下文长度扩展到128k,并在困难的推理基准测试中持续表现出性能提升。
3.4 长到短
我们将提出的长到短强化学习算法与2.4节中介绍的直接偏好优化(DPO)、最短拒绝采样和模型合并方法进行了比较,重点关注长到短问题中的令牌效率(X. Chen等人,2024),即获得的长思维链模型如何使短模型受益。在图7中,k1.5 - long代表我们选择用于长到短训练的长思维链模型。k1.5 - short w/ rl指的是通过长到短强化学习训练获得的短模型。k1.5 - short w/ dpo表示通过DPO训练提高了令牌效率的短模型。k1.5 - short w/ merge代表模型合并后的模型,而k1.5 - short w/ merge + rs表示对合并后的模型应用最短拒绝采样得到的短模型。k1.5 - shortest表示我们在长到短训练过程中获得的最短模型。如图7所示,与直接偏好优化(DPO)和模型合并等其他方法相比,我们提出的长到短强化学习算法表现出最高的令牌效率。值得注意的是,所有k1.5系列的模型(橙色标记)与其他模型(蓝色标记)相比,都表现出更优的令牌效率。例如,k1.5 - short w/ rl在AIME2024上(8次运行的平均值)获得了60.8的Pass@1分数,而平均仅使用3272个令牌。同样,k1.5 - shortest在MATH500上获得了88.2的Pass@1分数,同时消耗的令牌数量与其他短模型大致相同。
3.5 消融研究
-
模型大小和上下文长度的扩展:我们的主要贡献是应用强化学习来增强模型生成长思维链的能力,从而提高其推理能力。一个自然的问题是:这与简单地增加模型大小相比如何?为了证明我们方法的有效性,我们使用相同的数据集训练了两个不同大小的模型,并记录了强化学习训练过程中所有检查点的评估结果和平均推理长度。这些结果如图8所示。值得注意的是,虽然较大的模型最初表现优于较小的模型,但较小的模型可以通过利用通过强化学习优化的长思维链达到可比的性能。然而,较大的模型通常比小模型具有更好的令牌效率。这也表明,如果目标是获得最佳性能,扩展较大模型的上下文长度具有更高的上限,并且令牌效率更高。但是,如果测试时的计算资源有限,训练具有较大上下文长度的较小模型可能是可行的解决方案。
-
使用负梯度的效果:我们研究了在我们的设置中使用ReST(Gulcehre等人,2023)作为策略优化算法的有效性。ReST与包括我们的方法在内的其他基于强化学习的方法的主要区别在于,ReST通过拟合从当前模型采样的最佳响应来迭代地改进模型,而不应用负梯度来惩罚错误响应。如图10所示,与ReST相比,我们的方法表现出更好的样本复杂度,这表明纳入负梯度显著提高了模型生成长思维链的效率。我们的方法不仅提高了推理质量,还优化了训练过程,用更少的训练样本实现了稳健的性能。这一发现表明,在我们的设置中,策略优化算法的选择至关重要,因为在其他领域中ReST与其他基于强化学习的方法之间的性能差距并不像在我们的场景中那么明显(Gulcehre等人,2023)。因此,我们的结果强调了选择合适的优化策略以最大化生成长思维链有效性的重要性。
-
采样策略:我们进一步证明了我们在2.3.4节中介绍的课程采样策略的有效性。我们的训练数据集D包含各种难度级别的多样化问题。使用我们的课程采样方法,我们最初使用D进行热身阶段,然后专注于难题来训练模型。这种方法与采用均匀采样策略且不进行课程调整的基线方法进行比较。如图9所示,我们的结果清楚地表明,所提出的课程采样方法显著提高了性能。这种改进可归因于该方法能够逐步挑战模型,使其在处理复杂问题时发展出更强大的理解和能力。通过在初始的通用介绍之后将训练重点放在更困难的问题上,模型可以更好地强化其推理和解决问题的能力。
4 结论
我们介绍了k1.5的训练方法和系统设计,这是我们最新的通过强化学习训练的多模态大语言模型。从实践中我们得出的一个关键认识是,上下文长度的扩展对于大语言模型的持续改进至关重要。我们采用优化的学习算法和如部分滚动这样的基础设施优化技术,来实现高效的长上下文强化学习训练。未来,如何进一步提高长上下文强化学习训练的效率和可扩展性,仍然是一个重要问题。
我们的另一个贡献是一系列能够改进策略优化的技术组合。具体而言,我们制定了结合大语言模型的长思维链强化学习公式,并推导了一种在线镜像下降的变体以进行稳健优化。我们还对采样策略、长度惩罚和数据配方优化进行了实验,以实现强大的强化学习性能。我们展示了通过长上下文扩展和改进的策略优化,即使不使用蒙特卡罗树搜索、价值函数和过程奖励模型等更复杂的技术,也能够取得强大的性能。未来,研究如何在不损害模型探索能力的前提下改进信用分配和减少过度思考,将是一个有趣的方向。
我们还观察到了长到短方法的潜力。这些方法在很大程度上提高了短思维链模型的性能。此外,将长到短方法与长思维链强化学习以迭代的方式结合,进一步提高令牌效率,并在给定的上下文长度预算下发挥出最佳性能,是可行的。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。