《论文翻译》KIMI K1.5:用大语言模型扩展强化学习

news2025/2/28 21:51:14

文章目录

    • KIMI K1.5技术报告
      • 摘要
    • 1. 引言
    • 2. 方法:基于大语言模型的强化学习
      • 2.1 强化学习提示集整理
      • 2.2 长思维链监督微调
      • 2.3 强化学习
        • 2.3.1 问题设定
        • 2.3.2 策略优化
        • 2.3.3 长度惩罚
        • 2.3.4 采样策略
        • 2.3.5 训练方法的更多细节
      • 2.4 长到短:短思维链模型的上下文压缩
      • 2.5 其他训练细节
        • 2.5.1 预训练
        • 2.5.2 普通监督微调
      • 2.6 强化学习基础设施
        • 2.6.1 大语言模型的大规模强化学习训练系统
        • 2.6.2 长思维链强化学习的部分滚动
        • 2.6.3 训练和推理的混合部署
        • 2.6.4 代码沙箱
    • 3. 实验
      • 3.1 评估
      • 3.2 主要结果
      • 3.3 长上下文扩展
      • 3.4 长到短
      • 3.5 消融研究
    • 4. 结论

KIMI K1.5技术报告

来自Kimi团队

摘要

通过预测下一个标记进行语言模型预训练,已被证明在扩展计算规模方面是有效的,但它受限于可用训练数据的数量。扩展强化学习(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%)。

image.png

image.png

1. 引言

基于缩放定律研究了通过预测下一个标记进行语言模型预训练,按比例缩放模型参数和数据规模,能够持续提升模型的智能水平(Kaplan等人,2020;Hoffmann等人,2022)。然而,这种方法受限于可用的高质量训练数据的数量(Villalobos等人,2024;Muennighoff等人,2023)。在本报告中,我们介绍Kimi k1.5的训练方法,这是我们最新的通过强化学习(RL)训练的多模态大语言模型。其目标是探索一种可能的新途径,以实现持续的扩展。通过在大语言模型中运用强化学习,模型能够利用奖励进行探索,因此不受限于预先存在的静态数据集。

k1.5的设计和训练包含几个关键要素:

  • 长上下文扩展:我们将强化学习的上下文窗口扩展到128k,并观察到随着上下文长度的增加,模型性能持续提升。我们方法背后的一个关键思想是,使用部分滚动(partial rollouts)来提高训练效率,即通过重用之前轨迹的大部分内容来采样新的轨迹,避免从头重新生成新轨迹的成本。我们的观察表明,上下文长度是大语言模型强化学习持续扩展的一个关键维度。
  • 改进的策略优化:我们推导了基于长思维链的强化学习公式,并采用了一种在线镜像下降(online mirror descent)的变体,来进行稳健的策略优化。通过有效的采样策略、长度惩罚和数据方法的优化,进一步改进了该算法。
  • 简单框架:长上下文扩展与改进的策略优化方法相结合,为大语言模型的学习构建了一个简单的强化学习框架。由于我们能够扩展上下文长度,学习到的思维链展现出规划、反思和修正的特性。增加上下文长度,具有增加搜索步骤数量的效果。结果表明,无需依赖蒙特卡洛树搜索、价值函数和过程奖励模型等更复杂的技术,就能实现强大的性能。
  • 多模态:我们的模型在文本和视觉数据上进行联合训练,具备对这两种模态进行联合推理的能力。

此外,我们提出了有效的长到短方法,利用长思维链技术来改进短思维链模型。具体而言,我们的方法包括应用基于长思维链激活的长度惩罚和模型合并。

我们的长思维链版本,在多个基准测试和模态中,均取得了最先进的推理性能,例如在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 问题设定

给定一个训练数据集 D = ( x i , y i ∗ ) i = 1 n D={(x_{i}, y_{i}^{*})}_{i=1}^{n} D=(xi,yi)i=1n,其中包含问题 x i x_{i} xi 和相应的正确答案 y i ∗ y_{i}^{*} yi,我们的目标是训练一个策略模型 π θ \pi_{\theta} πθ,以准确解决测试问题。在复杂推理的情境下,从问题 x x x 到解决方案 y y y 的映射并不简单。为了应对这一挑战,思维链(CoT)方法提议使用一系列中间步骤 z = ( z 1 , z 2 , . . . , z m ) z=(z_{1}, z_{2}, ..., z_{m}) z=(z1,z2,...,zm) 来连接 x x x y y y,其中每个 z i z_{i} zi 都是一个连贯的标记序列,是解决问题的重要中间步骤(J. Wei等人,2022)。在解决问题 x x x 时,思维 z t   π θ ( ⋅ ∣ x , z 1 , . . . , z t − 1 ) z_{t} ~ \pi_{\theta}(\cdot | x, z_{1}, ..., z_{t-1}) zt πθ(x,z1,...,zt1) 以自回归的方式进行采样,随后是最终答案 y   π θ ( ⋅ ∣ x , z 1 , . . . , z m ) y ~ \pi_{\theta}(\cdot | x, z_{1}, ..., z_{m}) y πθ(x,z1,...,zm)。我们用 y , z   π θ y,z ~ \pi_{\theta} y,z πθ 来表示这个采样过程。需要注意的是,思维和最终答案均作为语言序列进行采样。

为了进一步增强模型的推理能力,人们采用规划算法来探索各种思维过程,在推理时生成改进的思维链(Yao等人,2024;Y I Wu等人,2024;Snell等人,2024)。这些方法的核心思想是,在价值估计的指导下,显式地构建一个思维搜索树。这使得模型能够探索思维过程的不同延续方式,或者在遇到死胡同时回溯,以探索新的方向。更详细地说,设 T T T 为一个搜索树,其中每个节点代表一个部分解 s = ( x , z 1 : ∣ s ∣ ) s=(x, z_{1:|s|}) s=(x,z1:s) 。这里 s s s 由问题 x x x 和一系列通向该节点的思维 z 1 : ∣ s ∣ = ( z 1 , . . . , z ∣ s ∣ ) z_{1:|s|}=(z_{1}, ..., z_{|s|}) z1:s=(z1,...,zs) 组成, ∣ s ∣ |s| s 表示序列中思维的数量。规划算法使用一个评判模型 KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲## 来提供反馈 v ( x , z 1 : ∣ s ∣ ) v(x, z_{1:|s|}) v(x,z1:s),这有助于评估当前解决问题的进展情况,并识别现有部分解中的任何错误。我们注意到,反馈可以由判别分数或语言序列提供(L. Zhang等人,2024)。在所有 s ∈ T s \in T sT 的反馈指导下,规划算法选择最有希望的节点进行扩展,从而使搜索树不断生长。上述过程不断迭代,直到得出完整的解决方案。

我们也可以从算法的角度来看待规划算法。在第 t t t 次迭代时,根据过去的搜索历史 ( s 1 , v ( s 1 ) , . . . , s t − 1 , v ( s t − 1 ) ) (s_{1}, v(s_{1}), ..., s_{t-1}, v(s_{t-1})) (s1,v(s1),...,st1,v(st1)),规划算法 A A A 迭代地确定下一个搜索方向 A ( s t ∣ s 1 , v ( s 1 ) , . . . , s t − 1 , v ( s t − 1 ) ) A(s_{t} | s_{1}, v(s_{1}), ..., s_{t-1}, v(s_{t-1})) A(sts1,v(s1),...,st1,v(st1)),并为当前的搜索进展提供反馈 A ( v ( s t ) ∣ s 1 , v ( s 1 ) , . . . , s t ) A(v(s_{t}) | s_{1}, v(s_{1}), ..., s_{t}) A(v(st)s1,v(s1),...,st) 。由于思维和反馈都可以被视为中间推理步骤,并且这些组件都可以表示为语言标记序列,我们用 z z z 代替 s s s,用 v v v 简化符号。因此,我们将规划算法视为一个直接作用于推理步骤序列的映射 A ( ⋅ ∣ z 1 , z 2 , . . . ) A(\cdot | z_{1}, z_{2}, ...) A(z1,z2,...) 。在这个框架中,规划算法使用的搜索树中存储的所有信息,都被扁平化,成为提供给算法的完整上下文。这为生成高质量的思维链,提供了一个有趣的视角:我们无需显式地构建搜索树并实施规划算法,而是有可能训练一个模型来近似这个过程。在这里,思维的数量(即语言标记的数量),类似于传统上分配给规划算法的计算预算。最近长上下文窗口的进展,为训练和测试阶段的无缝扩展提供了便利。如果可行的话,这种方法能使模型通过自回归预测,直接在推理空间中进行隐式搜索。因此,模型不仅学习解决一组训练问题,还能培养有效解决单个问题的能力,从而提高对未见过的测试问题的泛化能力。

因此,我们考虑使用强化学习(RL)来训练模型生成思维链(OpenAI,2024)。设 r r r 为一个奖励模型,它根据正确答案 y ∗ y^{*} y,判断针对给定问题 x x x 提出的答案 y y y 的正确性,分配一个值 r ( x , y , y ∗ ) ∈ 0 , 1 r(x, y, y^{*}) \in{0,1} r(x,y,y)0,1 。对于可验证的问题,奖励直接由预定义的标准或规则确定。例如,在编程问题中,我们评估答案是否通过测试用例。对于具有自由形式正确答案的问题,我们训练一个奖励模型 r ( x , y , y ∗ ) r(x, y, y^{*}) r(x,y,y),来预测答案是否与正确答案匹配。给定一个问题 x x x,模型 π θ \pi_{\theta} πθ 通过采样过程 z   π θ ( ⋅ ∣ x ) z ~ \pi_{\theta}(\cdot | x) z πθ(x) y   π θ ( ⋅ ∣ x , z ) y ~ \pi_{\theta}(\cdot | x, z) y πθ(x,z) 生成一个思维链和最终答案。生成的思维链的质量,通过它是否能得出正确的最终答案来评估。总之,我们考虑通过优化以下目标来优化策略:
m a x θ E ( x , y ∗ ) ∼ D , ( y , z ) ∼ π θ [ r ( x , y , y ∗ ) ] max _{\theta} \mathbb{E}_{\left(x, y^{*}\right) \sim \mathcal{D},(y, z) \sim \pi_{\theta}}\left[r\left(x, y, y^{*}\right)\right] maxθE(x,y)D,(y,z)πθ[r(x,y,y)]

通过扩大强化学习训练规模,我们旨在训练一个既能利用基于简单提示的思维链的优势,又能利用规划增强型思维链优势的模型。该模型在推理时,仍然以自回归方式采样语言序列,从而避免了在部署时,先进规划算法所需的复杂并行化。然而,与基于简单提示的方法的一个关键区别是,该模型不应仅仅遵循一系列推理步骤。相反,它还应该通过利用所有探索过的思维作为上下文信息,学习关键的规划技能,包括错误识别、回溯和解决方案优化。

2.3.2 策略优化

我们采用一种在线策略镜像下降的变体,作为我们的训练算法(Abbasi-Yadkori等人,2019;Mei等人,2019;Tomar等人,2020)。该算法是迭代进行的。在第 i ˉ \bar{i} iˉ 次迭代时,我们使用当前模型 π θ i \pi_{\theta_{i}} πθi 作为参考模型,并优化以下相对熵正则化的策略优化问题:
m a x θ E ( x , y ∗ ) ∼ D [ E ( y , z ) ∼ π θ [ r ( x , y , y ∗ ) ] − τ K L ( π θ ( x ) ∥ π θ i ( x ) ) ] max _{\theta} \mathbb{E}_{\left(x, y^{*}\right) \sim \mathcal{D}}\left[\mathbb{E}_{(y, z) \sim \pi_{\theta}}\left[r\left(x, y, y^{*}\right)\right]-\tau KL\left(\pi_{\theta}(x) \| \pi_{\theta_{i}}(x)\right)\right] maxθE(x,y)D[E(y,z)πθ[r(x,y,y)]τKL(πθ(x)πθi(x))]
其中 τ > 0 \tau>0 τ>0 是一个控制正则化程度的参数。这个目标有一个封闭形式的解:
π ∗ ( y , z ∣ x ) = π θ i ( y , z ∣ x ) e x p ( r ( x , y , y ∗ ) / τ ) / Z \pi^{*}(y, z | x)=\pi_{\theta_{i}}(y, z | x) exp \left(r\left(x, y, y^{*}\right) / \tau\right) / Z π(y,zx)=πθi(y,zx)exp(r(x,y,y)/τ)/Z
这里 Z = ∑ y ′ , z ′ π θ i ( y ′ , z ′ ∣ x ) exp ⁡ ( r ( x , y ′ , y ∗ ) / τ ) Z=\sum_{y', z'} \pi_{\theta_{i}}(y', z' | x) \exp (r(x, y', y^{*}) / \tau) Z=y,zπθi(y,zx)exp(r(x,y,y)/τ) 是归一化因子。对两边取对数,我们得到对于任何 ( y , z ) (y, z) (y,z) 都满足以下约束,这使得我们在优化过程中可以利用离策略数据:
r ( x , y , y ∗ ) − τ l o g Z = τ l o g π ∗ ( y , z ∣ x ) π θ i ( y , z ∣ x ) r\left(x, y, y^{*}\right)-\tau log Z=\tau log \frac{\pi^{*}(y, z | x)}{\pi_{\theta_{i}}(y, z | x)} r(x,y,y)τlogZ=τlogπθi(y,zx)π(y,zx)
这启发我们得到以下替代损失:
L ( θ ) = E ( x , y ∗ ) ∼ D [ E ( y , z ) ∼ π θ i [ ( r ( x , y , y ∗ ) − τ l o g Z − τ l o g π θ ( y , z ∣ x ) π θ i ( y , z ∣ x ) ) 2 ] ] L(\theta)=\mathbb{E}_{\left(x, y^{*}\right) \sim \mathcal{D}}\left[\mathbb{E}_{(y, z) \sim \pi_{\theta_{i}}}\left[\left(r\left(x, y, y^{*}\right)-\tau log Z-\tau log \frac{\pi_{\theta}(y, z | x)}{\pi_{\theta_{i}}(y, z | x)}\right)^{2}\right]\right] L(θ)=E(x,y)D[E(y,z)πθi[(r(x,y,y)τlogZτlogπθi(y,zx)πθ(y,zx))2]]
为了近似(\tau \log Z),我们使用从(\pi_{\theta_{i}})采样得到的样本((y_{1}, z_{1}), \ldots,(y_{k}, z_{k})):(\tau \log Z \approx\tau \log \frac{1}{k} \sum_{j = 1}^{k} \exp (r(x, y_{j}, y^{}) / \tau))。我们还发现,使用采样奖励的经验均值(\bar{r}=\text{mean}(r(x, y_{1}, y^{}), \ldots, r(x, y_{k}, y^{*})))能产生有效的实际结果。这是合理的,因为当(\tau \to \infty)时,(\tau \log Z)趋近于(\pi_{\theta})下的预期奖励。最后,我们通过对替代损失求梯度来得出学习算法。对于每个问题(x),使用参考策略(\pi_{\theta_{i}})采样(k)个响应,梯度由下式给出:

[
\frac{1}{k} \sum_{j = 1}^{k}\left(\nabla_{\theta} \log \pi_{\theta}(y_{j}, z_{j} | x)\left(r(x, y_{j}, y^{*})-\overline{r}\right)-\frac{\tau}{2} \nabla_{\theta}\left(\log \frac{\pi_{\theta}(y_{j}, z_{j} | x)}{\pi_{\theta_{i}}(y_{j}, z_{j} | x)}\right)^{2}\right)
]

对于熟悉策略梯度方法的人来说,这个梯度类似于使用采样奖励均值作为基线的策略梯度(Kool等人,2019;Ahmadian等人,2024)。主要区别在于响应是从(\pi_{\theta})采样而不是在策略上采样,并且应用了(l_{2})正则化。因此,我们可以将其视为通常的在策略正则化策略梯度算法到离策略情况的自然扩展(Nachum等人,2017)。我们从(D)中采样一批问题,并将参数更新为(\theta_{i + 1}),它随后作为下一次迭代的参考策略。由于每次迭代由于参考策略的变化而考虑不同的优化问题,我们也在每次迭代开始时重置优化器。

我们在训练系统中排除了价值网络,这在以前的研究中也有应用(Ahmadian等人,2024)。虽然这种设计选择显著提高了训练效率,但我们也假设在经典强化学习中使用价值函数进行信用分配可能不适合我们的情况。考虑这样一个场景:模型已经生成了部分思维链((z_{1}, z_{2}, \ldots, z_{t})),并且有两个潜在的下一个推理步骤:(z_{t + 1})和(z_{t + 1}’)。假设(z_{t + 1})直接导致正确答案,而(z_{t + 1}’)包含一些错误。如果有一个神谕价值函数可用,它会表明(z_{t + 1})比(z_{t + 1}’)具有更高的价值。根据标准的信用分配原则,选择(z_{t + 1}’)会受到惩罚,因为它相对于当前策略具有负优势。

然而,探索(z_{t + 1}’)对于训练模型生成长思维链是非常有价值的。通过使用从长思维链得出的最终答案的合理性作为奖励信号,只要模型成功恢复并得出正确答案,它就可以从选择(z_{t + 1}’)中学习到试错模式。这个例子的关键要点是,我们应该鼓励模型探索不同的推理路径,以增强其解决复杂问题的能力。这种探索性方法产生了丰富的经验,支持关键规划技能的发展。我们的主要目标不限于在训练问题上获得高精度,而是专注于为模型配备有效的问题解决策略,最终提高其在测试问题上的性能。

2.3.3 长度惩罚

我们观察到一种过度思考的现象,即在强化学习训练期间,模型的响应长度显著增加。虽然这会带来更好的性能,但过长的推理过程在训练和推理过程中成本高昂,而且过度思考通常不是人们所期望的。为了解决这个问题,我们引入了长度奖励来抑制标记长度的快速增长,从而提高模型的标记效率。给定问题(x)的(k)个采样响应((y_{1}, z_{1}), \ldots,(y_{k}, z_{k})),其真实答案为(y^{*}),设(\text{len}(i))为((y_{i}, z_{i}))的长度,(\text{min_len}=\min_{i} \text{len}(i)),(\text{max_len}=\max_{i} \text{len}(i))。如果(\text{max_len}=\text{min_len}),我们将所有响应的长度奖励设置为零,因为它们长度相同。否则,长度奖励由下式给出:

[
\text{len_reward}(i)=\left{\begin{array}{ll}
\lambda & \text { If } r\left(x, y_{i}, y^{}\right)=1 \
\min (0, \lambda) & \text { If } r\left(x, y_{i}, y^{
}\right)=0
\end{array}, \text { where } \lambda = 0.5-\frac{\text{len}(i)-\text{min_len}}{\text{max_len}-\text{min_len}}\right.
]

本质上,我们在正确答案中鼓励较短的响应并惩罚较长的响应,同时明确惩罚错误答案的长响应。然后将这个基于长度的奖励与原始奖励相加,使用一个加权参数。

在我们的初步实验中,长度惩罚在初始阶段可能会减缓训练速度。为了缓解这个问题,我们建议在训练期间逐渐增加长度惩罚。具体来说,我们首先使用标准策略优化而不进行长度惩罚,然后在训练的剩余部分使用恒定的长度惩罚。

2.3.4 采样策略

虽然强化学习算法本身具有相对较好的采样特性(更困难的问题提供更大的梯度),但它们的训练效率有限。因此,一些定义明确的先验采样方法可以带来更大的性能提升。我们利用多个信号来进一步改进采样策略。首先,我们收集的强化学习训练数据自然带有不同的难度标签。例如,数学竞赛问题比小学数学问题更难。其次,由于强化学习训练过程会对同一个问题进行多次采样,我们也可以跟踪每个问题的成功率作为难度指标。我们提出了两种采样方法来利用这些先验信息来提高训练效率。

  • 课程采样:我们从较容易的任务开始训练,逐渐过渡到更具挑战性的任务。由于初始的强化学习模型性能有限,在非常困难的问题上花费有限的计算预算往往只能得到很少的正确样本,导致训练效率较低。同时,我们收集的数据自然包括年级和难度标签,使得基于难度的采样成为提高训练效率的一种直观有效的方法。
  • 优先采样:除了课程采样,我们还使用优先采样策略来关注模型表现不佳的问题。我们跟踪每个问题(i)的成功率(s_{i}),并按照(1 - s_{i})的比例采样问题,使得成功率较低的问题有更高的采样概率。这引导模型关注其最薄弱的领域,从而实现更快的学习和更好的整体性能。
2.3.5 训练方法的更多细节
  • 编码测试用例生成:由于许多来自网络的编码问题没有可用的测试用例,我们设计了一种自动生成测试用例的方法,作为强化学习训练模型的奖励。我们主要关注那些不需要特殊评判器的问题。我们还假设这些问题有可用的正确答案,以便我们可以利用这些答案来生成更高质量的测试用例。

我们利用广泛认可的测试用例生成库(CYaRon)来增强我们的方法。我们使用基础的Kimi k1.5模型根据问题陈述生成测试用例。将(CYaRon)的使用说明和问题描述作为生成器的输入。对于每个问题,我们首先使用生成器生成50个测试用例,并为每个测试用例随机采样10个正确提交。我们针对这些提交运行测试用例。如果至少7个提交产生匹配结果,则认为测试用例有效。经过这一轮筛选,我们得到一组选定的测试用例。如果至少9个提交通过整个选定测试用例集,则将问题及其相关选定测试用例添加到我们的训练集中。

从1000个在线竞赛问题的样本来看,大约614个问题不需要特殊评判器。我们开发了463个测试用例生成器,产生了至少40个有效测试用例,导致323个问题被纳入我们的训练集。

  • 数学奖励建模:评估数学解决方案的一个挑战是,不同的书面形式可能代表相同的潜在答案。例如,(a^{2}-4)和((a + 2)(a - 2))可能都是同一个问题的有效解决方案。我们采用了两种方法来提高奖励模型的评分准确性:
    • 经典RM:借鉴InstructGPT(Ouyang等人,2022)的方法,我们实现了一个基于价值头的奖励模型,并收集了大约800k个数据点进行微调。该模型最终以“问题”、“参考答案”和“响应”作为输入,并输出一个标量,指示响应是否正确。
    • 思维链RM:最近的研究(Ankner等人,2024;McAleese等人,2024)表明,通过思维链(CoT)推理增强的奖励模型可以显著优于经典方法,特别是在需要微妙正确性标准的任务上,如数学。因此,我们收集了同样大小的约800k个带有思维链标记的示例数据集,来微调Kimi模型。基于与经典RM相同的输入,思维链方法在以JSON格式提供最终正确性判断之前,显式地生成逐步推理过程,从而实现更稳健和可解释的奖励信号。

在我们的手动抽查中,经典RM的准确率约为84.4,而思维链RM达到了98.5的准确率。在强化学习训练过程中,我们采用思维链RM以确保更正确的反馈。

  • 视觉数据:为了提高模型的现实世界图像推理能力,并实现视觉输入和大语言模型(LLMs)之间更有效的对齐,我们的视觉强化学习(Vision RL)数据主要来自三个不同类别:现实世界数据、合成视觉推理数据和文本渲染数据。
    • 现实世界数据包括一系列跨不同年级的科学问题,这些问题需要图形理解和推理、位置猜测任务(需要视觉感知和推断)以及数据分析(涉及理解复杂图表)等类型的数据。这些数据集提高了模型在现实世界场景中进行视觉推理的能力。
    • 合成视觉推理数据是人工生成的,包括程序创建的图像和场景,旨在提高特定的视觉推理技能,如理解空间关系、几何图案和对象交互。这些合成数据集为测试模型的视觉推理能力提供了一个受控环境,并提供了无穷无尽的训练示例。
    • 文本渲染数据是通过将文本内容转换为视觉格式创建的,使模型在处理不同模态的基于文本的查询时保持一致性。通过将文本文档、代码片段和结构化数据转换为图像,我们确保模型无论输入是纯文本还是渲染为图像的文本(如屏幕截图或照片)都能提供一致的响应。这也有助于增强模型处理文本密集型图像的能力。

每种类型的数据在构建一个全面的视觉语言模型中都至关重要,该模型可以有效地处理广泛的现实世界应用,同时确保在各种输入模态下的一致性能。

2.4 长到短:短思维链模型的上下文压缩

虽然长思维链模型性能强大,但与标准的短思维链大语言模型相比,它在测试时消耗更多的标记。然而,可以将长思维链模型的思维先验转移到短思维链模型中,以便在有限的测试时标记预算下提高性能。我们提出了几种解决长到短问题的方法,包括模型合并(Yang等人,2024)、最短拒绝采样、直接偏好优化(DPO)(Rafailov等人,2024)和长到短强化学习。以下是这些方法的详细描述:

  • 模型合并:已经发现模型合并在保持泛化能力方面是有用的。我们还发现,在合并长思维链模型和短思维链模型时,它在提高标记效率方面是有效的。这种方法将一个长思维链模型和一个较短的模型组合成一个新模型,而无需训练。具体来说,我们通过简单地平均它们的权重来合并两个模型。
  • 最短拒绝采样:我们观察到我们的模型对于同一个问题生成的响应长度变化很大。基于此,我们设计了最短拒绝采样方法。该方法对同一个问题采样(n)次(在我们的实验中,(n = 8)),并选择最短的正确响应进行监督微调。
  • DPO:与最短拒绝采样类似,我们利用长思维链模型生成多个响应样本。选择最短的正确解决方案作为正样本,而较长的响应作为负样本,包括错误的较长响应和比选定正样本长1.5倍的正确较长响应。这些正负对形成了用于DPO训练的成对偏好数据。
  • 长到短强化学习:在标准强化学习训练阶段之后,我们选择一个在性能和标记效率之间达到最佳平衡的模型作为基础模型,并进行单独的长到短强化学习训练阶段。在这个第二阶段,我们应用2.3.3节中介绍的长度惩罚,并显著降低最大滚动长度,以进一步惩罚可能正确但超过期望长度的响应。

2.5 其他训练细节

2.5.1 预训练

Kimi k1.5的基础模型在一个多样化、高质量的多模态语料库上进行训练。语言数据涵盖五个领域:英语、中文、代码、数学推理和知识。多模态数据,包括字幕、图文交错、光学字符识别(OCR)、知识和问答数据集,使我们的模型能够获得视觉 - 语言能力。严格的质量控制确保了整个预训练数据集的相关性、多样性和平衡性。我们的预训练分三个阶段进行:(1)视觉 - 语言预训练,在此阶段建立强大的语言基础,然后逐渐进行多模态集成;(2)冷却阶段,使用精心策划和合成的数据巩固能力,特别是在推理和基于知识的任务方面;(3)长上下文激活,将序列处理扩展到131,072个标记。关于我们预训练工作的更多细节,可以在附录B中找到。

2.5.2 普通监督微调

我们创建了涵盖多个领域的普通监督微调(SFT)语料库。对于非推理任务,包括问答、写作和文本处理,我们首先通过人工注释构建一个种子数据集。这个种子数据集用于训练一个种子模型。随后,我们收集各种提示,并使用种子模型为每个提示生成多个响应。注释者然后对这些响应进行排名,并完善排名最高的响应以生成最终版本。对于推理任务,如数学和编程问题,基于规则和奖励建模的验证比人工判断更准确和高效,我们利用拒绝采样来扩展SFT数据集。

我们的普通SFT数据集大约包含100万个文本示例。具体来说,50万个示例用于一般问答,20万个用于编程,20万个用于数学和科学,5千个用于创意写作,2万个用于长上下文任务,如总结、文档问答、翻译和写作。此外,我们构建了100万个文本 - 视觉示例,涵盖各种类别,包括图表解释、OCR、基于图像的对话、视觉编程、视觉推理以及带有视觉辅助的数学/科学问题。

我们首先在序列长度为32k个标记的情况下训练模型1个epoch,然后在序列长度为128k个标记的情况下再训练1个epoch。在第一阶段(32k),学习率从(2×10{-5})衰减到(2×10{-6}),然后在第二阶段(128k)重新预热到(1×10{-5}),最后衰减到(1×10{-6})。为了提高训练效率,我们将多个训练示例打包到每个单个训练序列中。

2.6 强化学习基础设施

image.png

2.6.1 大语言模型的大规模强化学习训练系统

在人工智能领域,强化学习(RL)已成为训练大语言模型(LLMs)的关键方法(Ouyang等人,2022;Jaech等人,2024),这得益于其在通过AlphaGo(Silver等人,2017)、AlphaStar(Vinyals等人,2019)和OpenAI Dota Five(Berner等人,2019)等系统掌握围棋、星际争霸II和Dota 2等复杂游戏方面的成功。遵循这一传统,Kimi k1.5系统采用迭代同步强化学习框架,精心设计以通过持续学习和适应来增强模型的推理能力。该系统的一个关键创新是引入了部分滚动(Partial Rollout)技术,旨在优化对复杂推理轨迹的处理。

如图3a所示,强化学习训练系统通过迭代同步方法运行,每次迭代包括一个滚动阶段和一个训练阶段。在滚动阶段,由中央主节点协调的滚动工作者通过与模型交互生成滚动轨迹,产生对各种输入的响应序列。这些轨迹随后存储在重放缓冲区中,通过打乱时间相关性,确保训练数据集的多样性和无偏性。在随后的训练阶段,训练工作者访问这些经验来更新模型的权重。这个循环过程使模型能够不断从其行动中学习,随着时间的推移调整其策略以提高性能。

中央主节点充当中央协调器,管理滚动工作者、训练工作者、奖励模型评估和重放缓冲区之间的数据流动和通信。它确保系统和谐运行,平衡负载并促进高效的数据处理。

训练工作者访问这些滚动轨迹,无论是在一次迭代中完成的还是跨多次迭代的,以计算梯度更新来优化模型的参数并提升其性能。这个过程由奖励模型监督,奖励模型评估模型输出的质量,并提供关键反馈以指导训练过程。奖励模型的评估在确定模型策略的有效性以及引导模型达到最佳性能方面尤为关键。

此外,系统集成了一个代码执行服务,专门用于处理与代码相关的问题,并且是奖励模型的重要组成部分。该服务在实际编码场景中评估模型的输出,确保模型的学习与现实世界的编程挑战紧密结合。通过针对实际代码执行验证模型的解决方案,这个反馈回路对于优化模型策略和提升其在代码相关任务中的性能至关重要。

2.6.2 长思维链强化学习的部分滚动

我们工作的主要思想之一是扩展长上下文强化学习训练。部分滚动是一种关键技术,通过管理长和短轨迹的滚动,有效解决了处理长思维链特征的挑战。该技术设定了一个固定的输出标记预算,限制了每个滚动轨迹的长度。如果在滚动阶段轨迹超过标记限制,未完成的部分将保存到重放缓冲区,并在下一次迭代中继续。这确保了没有单个冗长的轨迹会垄断系统资源。此外,由于滚动工作者异步操作,当一些工作者处理长轨迹时,其他工作者可以独立处理新的、较短的滚动任务。异步操作通过确保所有滚动工作者积极为训练过程做出贡献,最大化了计算效率,从而优化了系统的整体性能。

如图 3b 所示,部分滚动系统通过在迭代中(从迭代 n - m 到迭代 n)将长响应分解为片段来工作。重放缓冲区充当中央存储机制,维护这些响应片段,其中只有当前迭代(迭代 n)需要在线策略计算。先前的片段(迭代 n - m 到 n - 1)可以从重放缓冲区高效地重用,无需重复滚动。这种分段方法显著降低了计算开销:不是一次性滚动整个响应,系统增量地处理和存储片段,允许生成更长的响应,同时保持快速的迭代时间。在训练过程中,可以从损失计算中排除某些片段,以进一步优化学习过程,使整个系统既高效又可扩展。

部分滚动的实现还提供了重复检测功能。系统识别生成内容中的重复序列,并提前终止它们,减少不必要的计算,同时保持输出质量。检测到的重复可以被分配额外的惩罚,有效地阻止在提示集中生成冗余内容。

2.6.3 训练和推理的混合部署

强化学习训练过程包括以下阶段:

image.png

  • 训练阶段:首先,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 等人,2023)、DMOJ Judge Server 2、Lean、Jupyter Notebook 和其他映像支持不同的用例。

对于编码任务中的强化学习,沙箱通过提供一致且可重复的评估机制,确保了训练数据判断的可靠性。其反馈系统支持多阶段评估,如代码执行反馈和代码库级编辑,同时保持统一的上下文,以确保跨编程语言的公平和公正的基准比较。

我们在 Kubernetes 上部署该服务以实现可扩展性和弹性,并通过 HTTP 端点公开它以进行外部集成。Kubernetes 的自动重启和滚动更新等功能确保了可用性和容错能力。

为了优化性能并支持强化学习环境,我们在代码执行服务中采用了几种技术来提高效率、速度和可靠性。这些包括:

  • 使用 Crun:我们利用 crun 作为容器运行时,而不是 Docker,显著减少了容器启动时间。
  • Cgroup 重用:我们预先创建 cgroups 供容器使用,这在高并发场景中至关重要,因为为每个容器创建和销毁 cgroups 可能成为瓶颈。
  • 磁盘使用优化:使用上层挂载为 tmpfs 的覆盖文件系统来控制磁盘写入,提供一个固定大小的高速存储空间。这种方法对临时工作负载有益。

image.png

这些优化提高了强化学习在代码执行中的效率,为评估强化学习生成的代码提供了一致且可靠的环境,这对于迭代训练和模型改进至关重要。

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 等人,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 短思维链模型在多个任务上与领先的开源和专有模型相比,具有竞争力或更优的性能。这些任务包括文本、视觉和推理挑战,在自然语言理解、数学、编码和逻辑推理方面具有显著优势。
Benchmark (Metric)Language-only ModelVision-Language Model
QwQ-32B PreviewOpenAI 01-miniQVQ-72B PreviewOpenAI 01Kimi k1.5
ReasoningMATH-500(EM)90.690.094.896.2
AIME 2024 (Pass@1)50.063.674.477.5
Codeforces (Percentile)62889494
LiveCodeBench (Pass@1)40.653.167.262.5
VisionMath Vista-Test (Pass@ 1)71.471.074.9
MMMU-Val (Pass@1)70.377.370.0
Math Vision-Full (Pass@1)35.938.6

表 2:Kimi k1.5 长思维链模型与旗舰开源和专有模型的性能比较

Benchmark (Metric)Language-only Model Qwen2.5 LLaMA-3.1 DeepSeekVision-Language Model Qwen2-VL Claude-3.5-
72B-Inst. 405B-Inst.V3Sonnet-1022GPT-4o 0513Kimi k1.5
TextMMLU (EM)85.388.688.588.3
IF-Eval (Prompt Surict)84.186.086.186.587.2
CLUEWSC (EM)91.484.790.985.491.7
C-Eval (EM)86.161.586.576.788.3
ReasoningMATH-500 (EM)80.073.890.278.3
AIME 2024 (Pass@1)23.323.339.216.060.8
HumanEval-Mul (Pass@1)77.377.282.681.781.5
LiveCodeBench (Pass@1)31.128.440.536.347.3
VisionMath Vista- Test (Pass@1)69.765.3
MMMU-Val (Pass@1)64.566.468.0
Math Vision-Full (Pass@1)26.635.631.0

表 3:Kimi k1.5 短思维链模型与旗舰开源和专有模型的性能比较。VLM 模型性能来自 OpenCompass 基准测试平台(https://opencompass.org.cn/)

3.3 长上下文扩展

我们使用一个中型模型来研究大语言模型强化学习的扩展特性。图 5 展示了在数学提示集上训练的小模型变体,在训练迭代过程中训练准确率和响应长度的演变。随着训练的进行,我们观察到响应长度和性能准确率同时增加。值得注意的是,更具挑战性的基准测试中响应长度的增加更为陡峭,这表明模型学会了为复杂问题生成更详细的解决方案。图 6 表明模型的输出上下文长度与其解决问题的能力之间存在很强的相关性。我们最终运行的 k1.5 模型扩展到 128k 上下文长度,并在困难的推理基准测试中观察到持续的性能提升。

image.png

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 上平均仅使用 3,272 个标记就达到了 60.8 的 Pass@1 分数(8 次运行的平均值)。同样,k1.5-shortest 在 MATH500 上达到 88.2 的 Pass@1 分数,同时消耗的标记数量与其他短模型大致相同。

image.png

image.png

3.5 消融研究

  • 模型大小和上下文长度的扩展:我们的主要贡献是应用强化学习来增强模型生成扩展思维链的能力,从而提高其推理能力。一个自然的问题是:这与简单地增加模型大小相比如何?为了证明我们方法的有效性,我们使用相同的数据集训练了两个不同大小的模型,并记录了强化学习训练过程中所有检查点的评估结果和平均推理长度。这些结果如图 8 所示。值得注意的是,虽然较大的模型最初在性能上优于较小的模型,但较小的模型通过利用强化学习优化的更长思维链,可以实现相当的性能。然而,一般来说,较大的模型在标记效率方面表现更好。这也表明,如果目标是获得最佳性能,扩展较大模型的上下文长度具有更高的上限并且更具标记效率。但是,如果测试时的计算有预算限制,训练具有较大上下文长度的较小模型可能是可行的解决方案。
  • 使用负梯度的效果:我们研究了在我们的设置中使用 ReST(Gulcehre 等人,2023)作为策略优化算法的有效性。ReST 与包括我们的方法在内的其他基于强化学习的方法的主要区别在于,ReST 通过拟合从当前模型采样的最佳响应来迭代地优化模型,而不应用负梯度来惩罚错误响应。如图 10 所示,我们的方法与 ReST 相比,展现出更优的样本复杂度,这表明纳入负梯度显著提高了模型生成长思维链的效率。我们的方法不仅提升了推理质量,还优化了训练过程,能够用更少的训练样本实现稳健的性能。这一发现表明,在我们的设定中,策略优化算法的选择至关重要,因为在其他领域中,ReST 与其他基于强化学习的方法之间的性能差距并不像在我们这里这么明显(Gulcehre 等人,2023)。因此,我们的结果凸显了选择合适优化策略以最大化长思维链生成效果的重要性。
  • 采样策略:我们进一步证明了在 2.3.4 节中介绍的课程采样策略的有效性。我们的训练数据集 D 包含了难度各异的多种问题。利用课程采样方法,我们首先使用 D 进行热身阶段,然后专注于难题来训练模型。将这种方法与采用均匀采样策略且不进行课程调整的基线方法进行比较。如图 9 所示,我们的结果清楚地表明,所提出的课程采样方法显著提高了性能。这种改进可归因于该方法能够逐步挑战模型,使其在处理复杂问题时能够发展出更强大的理解和能力。通过在初步介绍后将训练重点放在更困难的问题上,模型能够更好地增强其推理和解决问题的能力。

image.png

4. 结论

我们介绍了 k1.5 的训练方法和系统设计,这是我们最新的通过强化学习训练的多模态大语言模型。从我们的实践中得出的一个关键见解是,上下文长度的扩展对于大语言模型的持续改进至关重要。我们采用优化的学习算法和基础设施优化,如部分滚动,实现了高效的长上下文强化学习训练。如何进一步提高长上下文强化学习训练的效率和可扩展性,仍然是未来的一个重要问题。

image.png

我们的另一个贡献是结合了多种技术,实现了改进的策略优化。具体而言,我们制定了基于大语言模型的长思维链强化学习,并推导了一种在线镜像下降的变体,用于稳健优化。我们还通过实验验证了采样策略、长度惩罚和优化数据方法,以实现强大的强化学习性能。我们表明,通过长上下文扩展和改进的策略优化,即使不使用蒙特卡洛树搜索、价值函数和过程奖励模型等更复杂的技术,也能实现强大的性能。在未来,研究如何在不损害模型探索能力的情况下改进信用分配和减少过度思考,也将是很有趣的方向。

我们还观察到了长到短方法的潜力。这些方法在很大程度上提高了短思维链模型的性能。此外,有可能以迭代的方式将长到短方法与长思维链强化学习相结合,以进一步提高标记效率,并在给定的上下文长度预算下提取最佳性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2282997.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP8266 NodeMCU与WS2812灯带:实现多种花样变换

在现代电子创意项目中,LED灯带的应用已经变得极为广泛。通过结合ESP8266 NodeMCU的强大处理能力和FastLED库的高效功能,我们可以轻松实现多达100种灯带变换效果。本文将详细介绍如何使用Arduino IDE编程,实现从基础到高级的灯光效果&#xff…

一组开源、免费、Metro风格的 WPF UI 控件库

前言 今天大姚给大家分享一个开源、免费、Metro风格的 WPF UI 控件库:MahApps.Metro。 项目介绍 MahApps.Metro 是一个开源、免费、Metro风格的 WPF UI 控件库,提供了现代化、平滑和美观的控件和样式,帮助开发人员轻松创建具有现代感的 Win…

Batch Normalization学习笔记

文章目录 一、为何引入 Batch Normalization二、具体步骤1、训练阶段2、预测阶段 三、关键代码实现四、补充五、参考文献 一、为何引入 Batch Normalization 现在主流的卷积神经网络几乎都使用了批量归一化(Batch Normalization,BN)1&#xf…

高等数学学习笔记 ☞ 微分方程

1. 微分方程的基本概念 1. 微分方程的基本概念: (1)微分方程:含有未知函数及其导数或微分的方程。 举例说明微分方程:;。 (2)微分方程的阶:指微分方程中未知函数的导数…

第19个项目:蛇年特别版贪吃蛇H5小游戏

下载地址:https://download.csdn.net/download/mosquito_lover1/90308956 游戏玩法: 点击"开始游戏"按钮开始 使用键盘方向键控制蛇的移动 吃到红色食物可以得分 撞到墙壁或自己会结束游戏 核心源码: class SnakeGame { constructor() { this.canvas = docum…

Tensor 基本操作4 理解 indexing,加减乘除和 broadcasting 运算 | PyTorch 深度学习实战

前一篇文章,Tensor 基本操作3 理解 shape, stride, storage, view,is_contiguous 和 reshape 操作 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started Tensor 基本使用 索引 indexing示例代码 加减…

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧,主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口,可以在一维数组或字符串上维护一个固定或可变长度的窗口,逐步移动窗口,避免重复计算,从而提升效率。常…

技术总结:FPGA基于GTX+RIFFA架构实现多功能SDI视频转PCIE采集卡设计方案

目录 1、前言工程概述免责声明 3、详细设计方案设计框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGBFDMA图像缓存RIFFA用户数据控制RIFFA架构详解Xilinx 7 Series Integrated Block for PCI ExpressRIFFA驱动及其安装QT上位机HDMI输出RGB转BT…

二叉树的最大深度(C语言详解版)

一、摘要 嗨喽呀大家,leetcode每日一题又和大家见面啦,今天要讲的是104.二叉树的最大深度,思路互相学习,有什么不足的地方欢迎指正!好啦让我们开始吧!!! 二、题目简介 给定一个二…

知识图谱抽取三元组技术介绍

知识图谱三元组抽取是知识图谱构建的重要步骤之一,其目的是从文本或数据中提取出结构化的信息,以形成实体、属性和关系之间的联系。这些三元组(Subject-Predicate-Object)是知识图谱的基本单元,用于描述实体之间的语义…

矩阵的秩在机器学习中具有广泛的应用

矩阵的秩在机器学习中具有广泛的应用,主要体现在以下几个方面: 一、数据降维与特征提取 主成分分析(PCA): PCA是一种常用的数据降维技术,它通过寻找数据中的主成分(即最大方差方向&#xff09…

【以音频软件FFmpeg为例】通过Python脚本将软件路径添加到Windows系统环境变量中的实现与原理分析

在Windows系统中,你可以通过修改环境变量 PATH 来使得 ffmpeg.exe 可在任意路径下直接使用。要通过Python修改环境变量并立即生效,如图: 你可以使用以下代码: import os import winreg as reg# ffmpeg.exe的路径 ffmpeg_path …

Linux-rt下卡死之hrtimer分析

Linux-rt下卡死之hrtimer分析 日志 超时读过程分析 #define readl_poll_timeout(addr, val, cond, delay_us, timeout_us) \readx_poll_timeout(readl, addr, val, cond, delay_us, timeout_us)34 #define readx_poll_timeout(op, addr, val, cond, sleep_us, timeout_us) \…

PHP防伪溯源一体化管理系统小程序

🔍 防伪溯源一体化管理系统,品质之光,根源之锁 🚀 引领防伪技术革命,重塑品牌信任基石 我们自豪地站在防伪技术的前沿,为您呈现基于ThinkPHP和Uniapp精心锻造的多平台(微信小程序、H5网页&…

WPF2-在xaml为对象的属性赋值

1. AttributeValue方式 1.1. 简单属性赋值1.2. 对象属性赋值 2. 属性标签的方式给属性赋值3. 标签扩展 (Markup Extensions) 3.1. StaticResource3.2. Binding 3.2.1. 普通 Binding3.2.2. ElementName Binding3.2.3. RelativeSource Binding3.2.4. StaticResource Binding (带参…

uart iic spi三种总线的用法

1、uart串口通信 这种连接方式抗干扰能力弱,旁边有干扰源就会对收发的电平数据造成干扰,进而导致数据失真 这种连接方式一般适用于一块板子上面的两个芯片之间进行数据传输 ,属于异步全双工模式。 1.空闲位:当不进行数据收发时&am…

Java 高级工程师面试高频题:JVM+Redis+ 并发 + 算法 + 框架

前言 在过 2 个月即将进入 3 月了,然而面对今年的大环境而言,跳槽成功的难度比往年高了很多,很明显的感受就是:对于今年的 java 开发朋友跳槽面试,无论一面还是二面,都开始考验一个 Java 程序员的技术功底…

【图文详解】lnmp架构搭建Discuz论坛

安装部署LNMP 系统及软件版本信息 软件名称版本nginx1.24.0mysql5.7.41php5.6.27安装nginx 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 关闭防火墙 systemctl stop firewalld &&a…

【番外篇】排列组合实现算法2(Java版)

一、说明 在牛客网的很多算法试题中,很多试题底层都是基于排列组合算法实现的,比如动态规划、最优解、最大值等常见问题。排列组合算法有一定的难度,并不能用一般的多重嵌套循环解决,没有提前做针对性的学习和研究,考…

PAT甲级-1020 Tree Traversals

题目 题目大意 给出一棵树的后序遍历和中序遍历,要求输出该树的层序遍历。 思路 非常典型的树的构建与遍历问题。后序遍历和中序遍历可以得出一个树的结构,用递归锁定根节点,然后再遍历左右子树,我之前发过类似题目的博客&…