DeepSeek新作原生稀疏注意力

摘要 长上下文建模对于下一代语言模型至关重要,然而标准注意力机制的高计算成本带来了显著的计算挑战。稀疏注意力为提高效率同时保持模型能力提供了有前景的方向。我们提出了NSA(可原生训练的稀疏注意力机制),通过算法创新与硬件特性对齐的优化相结合,实现了高效的长上下文建模。NSA采用动态分层稀疏策略,结合粗粒度Token压缩与细粒度Token选择,在保持全局上下文感知能力的同时确保局部精度。该方法通过两大关键创新推进稀疏注意力设计:(1)通过算术强度平衡的算法设计实现显著加速,并针对现代硬件进行实现优化;(2)支持端到端训练,在保持模型性能的前提下减少预训练计算量。如图1所示,实验表明采用NSA预训练的模型在通用基准测试、长上下文任务和基于指令的推理中均保持或超越全注意力模型。与此同时,NSA在处理64k长度序列时,在解码、前向传播和后向传播阶段相较全注意力机制均实现了显著加速,有效验证了该方案在整个模型生命周期中的效率优势。 介绍 一种实现高效长文本建模的自然方法是利用 softmax 注意力的固有稀疏性。通过选择性地计算关键的查询-键对,可以在保持性能的同时显著降低计算开销。最近的进展通过各种策略展示了这种潜力,包括:KV-cache 驱逐方法、分块 KV-cache 选择方法,以及基于采样、聚类或哈希的选择方法。尽管这些策略很有前景,但现有的稀疏注意力方法在实际部署中往往表现不足。许多方法未能实现与其理论收益相当的加速;此外,大多数方法主要关注推理阶段,缺乏有效的训练时支持来充分利用注意力的稀疏模式,从而无法充分挖掘注意力的稀疏模式。为了解决这些局限性,有效部署稀疏注意力必须应对两个关键挑战:(1)硬件对齐的推理加速:将理论计算量的减少转化为实际的速度提升,需要在预填充和解码阶段进行硬件友好的算法设计,以缓解内存访问和硬件调度瓶颈;(2)训练感知的算法设计:通过可训练的算子实现端到端计算,以降低训练成本,同时保持模型性能。这些要求对于实际应用至关重要,以实现快速的长文本推理或训练。综合考虑这两个方面,现有方法仍然存在明显的差距。 为了实现更有效和高效的稀疏注意力机制,我们提出了 NSA,一种原生可训练的稀疏注意力架构,它集成了分层 Token 建模。如图2 所示,NSA 通过将键 (key) 和值 (value) 组织成时间块,并通过三个注意力路径处理它们来减少每个查询的计算量:压缩的粗粒度 Token、选择性保留的细粒度 Token 和用于局部上下文信息的滑动窗口。然后,我们实现专门的内核以最大限度地提高其实际效率。NSA 引入了两个与上述关键要求相对应的核心创新:(1)硬件对齐系统:优化块状稀疏注意力,以充分利用 Tensor Core 并优化内存访问,确保平衡的算术强度。(2)训练感知设计:通过高效的算法和反向算子实现稳定的端到端训练。这种优化使 NSA 能够支持高效部署和端到端训练。我们通过对真实世界语言语料库的综合实验来评估 NSA。在使用 260B Token 的 27B 参数 Transformer 主干上进行预训练后,我们评估了 NSA 在通用语言评估、长上下文评估和思维链推理评估中的性能。我们进一步比较了 A100 GPU 上内核速度与优化的 Triton 实现。实验结果表明,NSA 实现了与完整注意力基线相当或更优越的性能,同时优于现有的稀疏注意力方法。此外,与完整注意力相比,NSA 在解码、前向和后向阶段都提供了显著的加速,并且加速比随着序列长度的增加而增加。这些结果验证了我们的分层稀疏注意力设计有效地平衡了模型能力和计算效率。 重新思考稀疏注意力方法 大多数方法主要在推理过程中应用稀疏性,同时保留预训练的完整注意力骨干网络,这可能会引入架构偏差,从而限制它们充分利用稀疏注意力的优势。在介绍我们原生的稀疏架构之前,我们通过两个关键视角系统地分析这些局限性。 高效推理的错觉 尽管在注意力计算中实现了稀疏性,但许多方法未能实现相应的推理延迟降低,这主要是由于两个挑战:阶段性稀疏。诸如 H2O 之类的方法在自回归解码期间应用稀疏性,同时在预填充期间需要计算密集型预处理(例如,注意力图计算、索引构建)。相比之下,像 MInference 这样的方法仅专注于预填充稀疏性。这些方法未能实现跨所有推理阶段的加速,因为至少一个阶段的计算成本与完整注意力机制相当。这种阶段专业化降低了这些方法在以预填充为主的工作负载(如书籍摘要和代码补全)或以解码为主的工作负载(如长链式思维推理)中的加速能力。 与高级注意力架构的不兼容。 一些稀疏注意力方法无法很好地适配现代高效解码架构,例如多查询注意力(MQA)和分组查询注意力(GQA)。这些架构通过在多个查询头之间共享 KV,显著降低了解码过程中的内存访问瓶颈。 例如,像 Quest 这样的方法中,每个注意力头独立地选择其 KV-cache 子集。 虽然这种方法在多头注意力(MHA)模型中表现出一致的计算稀疏性和内存访问稀疏性,但在基于 GQA 等架构的模型中,情况则有所不同。在 GQA 架构中,KV-cache 的内存访问量取决于同一 GQA 组内所有查询头选择的并集。 这种架构特性意味着,虽然这些方法可以减少计算操作,但所需的 KV-cache 内存访问量仍然相对较高。 这种限制迫使我们面临一个关键选择:虽然一些稀疏注意力方法减少了计算量,但它们分散的内存访问模式与高级架构中高效的内存访问设计相冲突。 这些限制的出现是因为许多现有的稀疏注意力方法侧重于 KV-cache 减少或理论计算减少,但难以在高级框架或后端中实现显著的延迟降低。 这促使我们开发算法,将先进的架构和硬件高效的实现相结合,从而充分利用稀疏性来提高模型效率。 ...

February 18, 2025 · 小茄墩

MOE是一个免费的嵌入模型

ICLR2025 oral 摘要 虽然大语言模型 (LLM) 在生成任务中表现出色,但如果未应用进一步的representation finetuning,其仅解码器架构通常会限制它们作为嵌入模型的潜力。这是否与它们作为通用模型的声明相矛盾?为了回答这个问题,我们仔细研究了混合专家模型 (MoE) LLM。我们的研究表明,MoE LLM 中的专家路由器可以作为开箱即用的嵌入模型,在各种以嵌入为中心的任务中表现出良好的性能,而无需任何微调。此外,我们广泛的分析表明,MoE 路由权重 (RW) 与 LLM 的隐藏状态 (HS) 互补,而隐藏状态是一种广泛使用的嵌入。与 HS 相比,我们发现 RW 对提示词的选择更具鲁棒性,并且侧重于高级语义。受此分析的启发,我们提出了 [MoEE],它结合了 RW 和 HS,与单独使用两者相比,实现了更好的性能。我们对它们的组合和提示策略的探索揭示了一些新的见解,例如,RW 和 HS 相似度的加权和优于它们连接后的相似度。我们的实验在来自大规模文本嵌入基准 (MTEB) 的 6 个嵌入任务和 20 个数据集上进行。结果表明,[MoEE] 在不进行进一步微调的情况下,为基于 LLM 的嵌入带来了显着改进。 介绍 混合专家模型 (MoE) 作为一种多功能的架构,最初在 1990 年代开发,可以通过将任务分配给专门的专家来提高模型泛化能力并降低推理成本。 随着时间的推移,MoE 在自然语言处理和计算机视觉等领域越来越突出,尤其是在大语言模型 (LLM) 的开发中越来越受到关注。 MoE 的一个关键组成部分是动态路由器,它可以智能地将每个输入分配给最相关的专家。 这使得 MoE 能够根据每个输入的独特特征来定制其计算,从而优化效率和准确性。 然而,最近的大多数 LLM 和 MoE LLM 都是建立在仅解码器架构之上的,该架构经过训练用于自回归的下一个 Token 预测。 虽然在生成任务方面表现出色,但它们的最终或中间隐藏状态 (HS) 并非旨在捕获输入 Token 的关键特征并涵盖其所有信息。 相反,HS 可能会偏向于下一个输出 Token 的信息。 尽管提取最后一个 Token 的隐藏状态 (HS) 作为嵌入是一种常见的经验做法,但它甚至可能比专门为嵌入任务训练的较小编码器模型表现得更差。 以分类为例,语义略有不同的输入可能与相同的标签相关联,因此旨在预测标签的最后一个 HS 可能会忽略输入差异。 尽管专门针对表征学习的额外微调可以大大增强 LLM 作为嵌入模型的能力,但考虑到嵌入任务的广泛应用,这提出了预训练的 LLM 是否可以被称为通用人工智能的问题。 ...

February 15, 2025 · 小茄墩

蒸馏scaling law

摘要 我们提出了一种==蒸馏缩放定律,该定律基于计算预算及其在学生模型和教师模型之间的分配,来估计蒸馏模型的性能==。 我们的发现降低了大规模使用蒸馏的风险;现在可以进行教师模型和学生模型的计算分配,以最大限度地提高学生模型的性能。 我们提供了计算最优的蒸馏方案,适用于以下两种情况:1) 教师模型已存在;2) 教师模型需要训练。 如果需要蒸馏多个学生模型,或者已经存在教师模型,那么在计算量达到一定水平之前,蒸馏的表现优于监督预训练,而该计算水平会随着学生模型大小的增长而可预测地增长。 如果只需要蒸馏一个学生模型,并且教师模型也需要训练,那么应该改为进行监督学习。 此外,我们还提供了对大规模蒸馏研究的见解,这些见解加深了我们对蒸馏的理解,并为实验设计提供了信息。 介绍 对缩放定律的研究表明,如果先前训练的[lms]遵循计算最优的训练范式,它们可以表现得更加出色。这种范式旨在确定在给定的计算预算下,能够产生最佳性能模型的模型大小和训练 Token 数量。 许多后续研究都遵循了计算最优训练方法。 计算最优模型的大小随着计算量的增长而增长,这导致推理成本增加,从而使得它们更难被有效利用。 实际上,这意味着计算最优模型速度慢、服务成本高昂、消耗更多电池电量、提高了学术研究的门槛,并且会产生显著的碳排放。 随着推理量高达每天数十亿 Token,lm的推理成本通常远高于其预训练成本,并且在测试时计算量扩展的时代,这一成本还将进一步增加。 不可持续的推理成本催生了一种替代的训练范式,即过拟合训练,在这种范式中,所使用的训练数据量远超计算最优状态下的数据量,从而能够训练出小型且性能强大的模型。当以模型的整个生命周期而非仅仅预训练成本来衡量计算量时,过拟合训练的模型能更好地满足计算最优性。由于监督学习的扩展法则遵循模型大小和训练数据的幂律关系,因此性能的边际效益递减出现得比计算最优情况下要早得多。为了达到合理的性能水平,这些模型需要在数万亿的 Token 上进行训练,这既昂贵又耗时。我们力求找到一种模型,它能在更低的训练成本下达到小型过拟合训练模型的性能水平。一个常用的备选方案是知识蒸馏,即由一个性能强大的教师 [lm]为一个较小的学生 [lm]模型生成训练目标。当知识蒸馏被用于 [lm]预训练时,我们称之为知识蒸馏预训练。关于为什么知识蒸馏有效,存在多种解释,从暗知识迁移(即信息蕴含在不正确类别的概率比率中),到作为一种正则化手段,或是降低学习过程中的噪声等等。尽管对于知识蒸馏有效的原因尚未达成共识,但在 Gemma 和 Gemini、Minitron 和 AFM 系列的 [lms]模型中,知识蒸馏预训练在预训练损失和下游评估方面,都产生了比监督预训练更强大的模型。然而,与此同时,@DBLP:conf/icml/Liu0ILTFXCSKLC24 报告称,知识蒸馏产生的模型比监督预训练产生的模型能力更弱。 鉴于大量计算资源正被用于 [lms]的蒸馏预训练,至关重要的是要了解如何合理分配这些资源,以尽可能地训练出性能最佳的模型。同时,我们也需要了解,在相同资源条件下,蒸馏预训练相比于监督预训练是否具有优势。为了填补这一知识空白,我们对蒸馏方法进行了广泛的对照研究,学生模型和教师模型的参数规模从 1.43 亿到 126 亿不等,训练数据量从数十亿 Token 扩展到最多 5120 亿 Token。通过这些实验,我们得出了蒸馏缩放定律,该定律将学生模型的性能估计为关于资源的函数(包括教师模型、学生模型的大小以及用于蒸馏的数据量)。该定律解决了在特定资源约束下,蒸馏方法在生成具有期望能力的模型时,是否有效的问题。我们的研究发现: 大小为 $N_S$ 的学生模型,在从大小为 $N_T$ 的教师模型蒸馏得到的 $D_S$ 个 Token 上进行蒸馏时,其交叉熵可以使用我们的蒸馏缩放定律进行预测。 教师模型的大小 $N_T$ 和教师模型训练所用的 Token 数量 $D_T$,仅通过它们所决定的教师模型交叉熵 $L_T=L_T(N_T,D_T)$ 来影响学生模型的交叉熵。 教师交叉熵对学生损失的影响遵循幂律,该幂律根据学生和教师的相对学习能力在两种行为之间转换,反映了知识蒸馏中的一种称为能力差距的现象,即更强的教师模型反而会产生更差的学生模型。我们的参数化解决了关于能力差距的悬而未决的问题,表明它是教师模型和学生模型之间学习能力(包括假设空间和优化能力)的差距,而不仅仅是它们相对大小的差距,后者只是一种特殊情况。我们的结果表明,当两个学习过程都获得足够的数据或计算资源时,知识蒸馏无法产生比监督学习更低的模型的交叉熵。然而,如果以下两个条件都成立,则知识蒸馏比监督学习更有效: 用于学生的总计算量或 Token 数量不大于我们的缩放定律给出的取决于学生模型规模的阈值。 教师模型已经存在,或者要训练的教师模型除了单一知识蒸馏之外还有其他用途。 我们希望我们提供的定律和分析将指导社区生产出更强大的模型,并降低推理成本和生命周期计算成本。 背景 在模型扩展时,预测模型性能至关重要,因为它使我们能够理解:i) 增加可用计算资源 ($C$) 的价值;以及 ii) 如何分配这些计算资源,通常是在模型参数 ($N$) 和数据 ($D$) 之间,以实现具有所需属性的模型。这些属性可能包括充分预测数据分布(以交叉熵 ($L$) 衡量),或者在感兴趣的下游任务上达到一定水平的性能。幸运的是,交叉熵 是可预测的,大量的经验和理论证据表明,$L$ 遵循参数 $N$ 和数据 $D$(以 Token 衡量)的幂律: ...

February 14, 2025 · 小茄墩

On the Emergence of Thinking in LLMs I: Searching for the Right Intuition

摘要 人工智能的最新进展,例如 OpenAI 的新型 o 模型、谷歌的 Gemini Thinking 模型和 Deepseek R1,正在将大语言模型 (LLM) 转化为大型推理模型 (LRM)。与大语言模型不同,大型推理模型在推理过程中执行思考或推理,需要额外的时间和计算来产生更高质量的输出。这项工作旨在发现训练大型推理模型背后的算法框架。基于自洽性、过程奖励建模、AlphaZero 的方法表明,==推理是一种引导搜索的形式==。基于这一原则,我们提出以下问题:==在大型语言模型的背景下,实现搜索的最简单和最具可扩展性的方法是什么?== 为了回答这些问题,我们提出了一个名为“通过自我博弈进行强化学习”(RLSP)的后训练框架。RLSP 涉及三个步骤:(1)使用人类或合成的推理过程演示进行监督微调;(2)使用探索奖励信号来鼓励多样化和高效的推理行为;(3)使用结果验证器进行强化学习训练,以确保正确性,同时防止奖励黑客行为。我们的主要创新是在 PPO 训练期间解耦探索和正确性信号,仔细平衡它们以提高性能和效率。 我们对数学领域的 RLSP 框架进行了实证研究,结果表明,使用 RLSP 框架训练的模型表现出改进的推理能力。在 Llama-3.1-8B-Instruct 模型上,RLSP 框架可以将 MATH-500 测试集中的性能提高 23%;在 AIME 2024 数学问题上,Qwen2.5-32B-Instruct 由于 RLSP 技术提高了 10%。然而,这项工作更重要的发现是,使用 RLSP 技术训练的模型,即使使用最简单的探索奖励(鼓励模型采取更多中间步骤),也表现出几种涌现行为,例如回溯、探索想法和验证。这些发现表明,当适当扩展时,RLSP 框架可能足以使大语言模型 (LLM) 涌现出复杂的推理能力。 最后,我们提出了一个理论,解释为什么 RLSP 搜索策略比文献中先前考虑的方法更适合大语言模型,这受到最近一项引人注目的结果的启发,该结果表明 CoT 可证明地 提高了大语言模型的计算能力,从而提高了推理能力,并且这些能力随着 CoT 中的步骤数量而增长。 参考文献: 介绍 随着 OpenAI 的 o 系列模型、Google 的 Gemini Thinking 模型以及 Deepseek R1 的发布,大语言模型 (LLM) 正在迅速演变为思考机器,现在被称为大型推理模型 (LRM)。==LLM 和 LRM 之间的关键技术区别在于 LRM 在推理过程中进行思考的能力==,我们将其定义为在(推理)过程中花费更多时间和计算资源,以期为给定的输入产生更高质量的输出,这对于所有能够进行推理的人工和生物系统来说,都是一个合理的思考过程定义。 ...

February 13, 2025 · 小茄墩

LLM中的深度诅咒现象

我们都认识到 DeepSeek模型的优势,但您是否知道,其近一半的图层的贡献低于预期? 我们可以移除近一半的后置图层,而对性能的影响微乎其微,对于大型模型而言影响甚至更大。这意味着浪费了大量用于训练 LLM 的资源。 在本文中,我们将介绍深度诅咒(Curse of Depth)这一概念,它强调、解释并解决了最近在现代 LLM 中观察到的近一半层的有效性低于预期的问题。 摘要 我们提出了一种新颖的深度神经网络训练方法,该方法结合了监督学习和无监督学习的优势。我们的方法,我们称之为“半监督对比学习”(SSCL),利用带标签的数据学习判别性特征,同时利用未标签的数据来提高模型的鲁棒性和泛化能力。SSCL 基于对比学习的原则,即训练模型将相似样本的表示聚集在一起,同时将不相似样本的表示推开。然而,与传统的对比学习方法不同,SSCL 通过使用带标签数据的标签来指导对比学习过程,从而整合了监督信息。具体来说,我们引入了一种新的损失函数,该函数将监督对比损失与无监督对比损失相结合。监督对比损失鼓励模型学习相对于带标签类别具有判别性的特征,而无监督对比损失鼓励模型学习对未标签数据中的变化具有鲁棒性的特征。我们在各种图像分类任务上评估了 SSCL,结果表明,尤其是在带标签数据的数量有限时,它优于监督学习和无监督学习方法。此外,我们证明了 SSCL 可用于学习对对抗攻击不太敏感的鲁棒特征。 在本文中,我们介绍了深度诅咒,这一概念旨在强调、解释并解决现代大语言模型 (LLM) 中最近观察到的现象:近一半的层其效果不如预期。我们首先确认了这种现象在最流行的 LLM 家族中广泛存在,例如 Llama、Mistral、DeepSeek 和 Qwen。我们的分析,从理论和经验两方面出发,都表明 LLM 中深层效果不佳的根本原因是 Pre-Layer Normalization (Pre-LN,预层归一化) 的广泛使用。虽然 Pre-LN 能够稳定 Transformer 大语言模型的训练过程,但其输出方差会随着模型深度的增加呈指数级增长,这导致深层 Transformer 模块的导数趋近于单位矩阵,因此几乎无法对训练做出有效贡献。为了解决这个训练难题,我们提出了 LayerNorm Scaling(层归一化缩放),它通过层归一化深度的平方根倒数来缩放输出方差。这种简单的修改能够有效缓解更深层 Transformer 层的输出方差爆炸问题,从而提高它们的贡献。我们的实验结果涵盖了从 1.3 亿到 10 亿参数规模的模型,结果表明,与 Pre-LN 相比,LayerNorm Scaling 能够显著提升 LLM 预训练的性能。此外,这种性能提升也能无缝延续到监督微调阶段。所有这些增益都可以归因于 LayerNorm Scaling 使得更深层能够在训练过程中更有效地发挥作用。我们的代码已在 LayerNorm-Scaling 开源。 介绍 最近的研究表明,大语言模型(LLM)中较深的层(Transformer blocks)往往不如较早的层有效。一方面,这个有趣的观察结果为大语言模型压缩提供了一个有效的指标。例如,我们可以更大幅度地压缩较深的层,以实现更高的压缩率。更激进的做法是,为了获得更经济实惠的大语言模型,可以完全剪枝整个深层,而不会影响性能。另一方面,拥有许多无效层是不可取的,因为大语言模型在训练时极其耗费资源,通常需要数千个GPU训练数月,更不用说用于数据整理和管理的劳动力。理想情况下,我们希望模型中的所有层都经过良好训练,层与层之间的特征具有足够的差异性,以最大限度地提高资源的利用率。无效层的存在表明,当前的大语言模型范式必然存在问题。解决这些局限性是社区的迫切需求,以避免浪费宝贵的资源,因为新版本的大语言模型通常沿用之前的计算范式进行训练,这会导致无效层的产生。 为了立即引起社区的关注,我们引入了深度诅咒(CoD)的概念,以系统地呈现各种大语言模型(LLM)家族中无效深层现象,从而识别其背后的根本原因,并通过提出层归一化缩放(LayerNorm Scaling)来纠正它。我们首先陈述下面的深度诅咒。 深度诅咒。 ==深度诅咒指的是观察到的现象,即与早期层相比,LLM中更深层对学习和表示的贡献明显更少。这些更深层通常表现出对模型剪枝和扰动攻击的显着鲁棒性,这意味着它们无法执行有意义的转换。这种行为阻止了这些层有效地促进训练和表示学习,从而导致资源利用率低。== CoD 的经验证据。@yin2023outlier 发现,与较浅的层相比,大语言模型的较深层可以容忍显著更高程度的剪枝,从而实现高稀疏性。类似地,@gromov2024unreasonable 和 @men2024shortgpt 证明,移除早期层会导致模型性能急剧下降,而移除深层则不会。@lad2024remarkable 表明,GPT-2 和 Pythia 的中间层和深层对诸如层交换和层丢弃之类的扰动表现出显著的鲁棒性。最近,@li2024owlore 强调,早期层包含更多的异常值,因此对于微调更为关键。虽然这些研究有效地突出了大语言模型中深层的局限性,但它们未能确定此问题的根本原因或提出可行的解决方案来解决它。为了证明深度诅咒在流行的 LLM 系列中普遍存在,我们对各种模型(包括 LLaMA2-7/13B、Mistral-7B、DeepSeek-7B 和 Qwen-7B)进行了层剪枝实验。我们通过一次剪除每个模型的整个层,并直接在 MMLU 上评估生成的剪枝模型,来衡量大规模多任务语言理解 (MMLU) 基准上的性能下降,如图1所示,无需进行任何微调。 ...

February 12, 2025 · 小茄墩

OpenAI:Competitive Programming with Large Reasoning Models

摘要 我们展示了应用于大语言模型(LLM)的强化学习能够显著提升在复杂编码和推理任务上的性能。此外,我们将两个通用推理模型——OpenAI o1 和 o3 的早期检查点——与一个特定领域的系统 o1-ioi 进行比较,后者使用为参加 2024 年国际信息学奥林匹克竞赛(IOI)而手工设计的推理策略。我们使用 o1-ioi 参加了 2024 年 IOI 的现场比赛,并使用手工制作的测试时策略,placed in the 49th percentile。在放宽比赛限制的条件下,o1-ioi 获得了金牌。然而,在评估像 o3 这样的后期模型时,我们发现 o3 在没有手工制作的特定领域策略或放宽限制的条件下获得了金牌。我们的研究结果表明,尽管像 o1-ioi 这样的专门流程产生了可靠的改进,但扩展的通用 o3 模型超越了这些结果,而无需依赖手工制作的推理启发式方法。值得注意的是,o3 在 2024 年 IOI 上获得了金牌,并在 [CodeForces]上获得了与精英人类竞争者相当的评分。总的来说,这些结果表明,扩展通用强化学习,而不是依赖于特定领域的技术,为在推理领域(如Competitive Programming)中实现最先进的 AI 提供了一条稳健的道路。 介绍 Competitive Programming被广泛认为是评估推理和编码能力的一个极具挑战性的基准。解决复杂的算法问题需要高级的计算思维和问题解决技能。此外,这些问题也是可以客观评分的,使其成为评估 AI 系统推理能力的理想试验平台。最近关于使用大语言模型进行程序合成的研究表明,即使是参数规模从 2.44 亿到 1370 亿的相对通用的模型,也可以从自然语言指令生成简短的 Python 脚本。重要的是,性能随着模型规模的增加呈对数线性增长,并且微调可以显著提高准确性。与此同时,Codex,一个早期以代码为中心的大语言模型,擅长 Python 程序生成,并为 GitHub Copilot 提供支持。进一步的进展来自 AlphaCode,它使用大规模代码生成和推理时的启发式方法来解决Competitive Programming任务,以及随后的 AlphaCode2,其改进使 AlphaCode 解决的问题数量几乎翻倍,并使其在 [CodeForces]平台上达到第 85 个百分位。在选择前 10 个提交的解决方案之前,两个 AlphaCode 系统都使用了大规模采样,每个问题最多生成一百万个候选解决方案,并采用手工设计的测试时策略。 自那以后,在利用强化学习来提高大语言模型(LLM)的推理能力方面取得了显著进展。这促使了大型推理模型(LRM)的出现:这些语言模型通过强化学习进行训练,以“推理”和“思考”延长的思维链。特别是,OpenAI 的 o1 及其即将发布的继任者 o3 使用思维链推理来处理复杂的任务,如数学和编码。 ...

February 12, 2025 · 小茄墩

Open R1 项目 第二周总结与展望

摘要 我们现在已经进入了 Open R1 项目 的第二周,该项目旨在重建 DeepSeek R1 缺失的部分——特别是训练管道和合成数据。 分享 OpenR1-Math-220k 的构建:这是我们首个用于数学推理的大规模数据集! 介绍社区在策划用于微调的小型、高质量数据集方面取得的一些令人兴奋的进展,以及关于如何在训练和推理阶段控制推理模型的思维链长度的见解。 OpenR1-Math-220k 数据集 DeepSeek R1 的主要优势之一是它能够通过知识蒸馏将高级推理能力迁移到较小的模型。 DeepSeek 团队通过生成 60 万个推理轨迹并微调一系列 Qwen 和 Llama 模型证明了这一点,表明直接从 R1 进行知识蒸馏可以在无需强化学习的情况下实现具有竞争力的推理性能。 值得注意的是,DeepSeek-R1-Distill-Qwen-7B 在 AIME 2024 上取得了 55.5% 的成绩,超过了像 QwQ-32B-Preview 这样更大的模型。 然而,用于蒸馏的推理轨迹尚未公开,这促使社区独立地重新创建类似的数据集。到目前为止,社区已经发布了多个开放数据集,包括 OpenThoughts-114k、Bespoke-Stratos-17k、Dolphin-R1 和 LIMO。 🐳 隆重推出 OpenR1-Math-220k,这是一个大规模的数学推理数据集,它利用 512 个 H100 在本地生成,且每个问题都对应多个答案。为了创建 OpenR1-Math-220k,我们与 Numina 展开合作,他们开发了广受欢迎的 NuminaMath-CoT 数据集的全新版本。 与现有数据集相比,OpenR1 数据集的新特性:80 万条 R1 推理轨迹:我们使用 DeepSeek R1 为 40 万道问题生成了两个答案。经过筛选的数据集包含 22 万道问题,并带有正确的推理轨迹。 本地运行 512 个 H100: 我们没有依赖 API,而是利用 vLLM 和 SGLang 在我们的科学集群上本地运行生成,每天生成 18 万条推理过程。 基于 NuminaMath 1.5: 我们专注于数学推理过程,并为 NuminaMath 1.5 中的问题生成答案,NuminaMath 1.5 是 NuminaMath-CoT 数据集的改进版本。 自动过滤: 我们应用 Math Verify 来仅保留至少有一个正确答案的问题。我们还利用 Llama3.3-70B-Instruct 作为一个判断器,以检索更多正确的例子(例如,对于答案格式错误,无法使用基于规则的解析器验证的情况)。 我们通过在我们的数据集上微调 Qwen-7B-Math-Instruct 来匹配 DeepSeek-Distill-Qwen-7B 的性能。 通过展示可扩展的、高质量的推理数据生成,我们希望这个流程可以扩展到数学以外的领域,例如代码生成。 ...

February 11, 2025 · 小茄墩

PPO训练技巧总览

Jian Hu’s Blogpost 以下所有实例均可在Jian Hu开发的OpenRLHF 0 - 引言 基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)结合近端策略优化(Proximal Policy Optimization, PPO)[1]是一种用于微调大语言模型(Large Language Models, LLMs)的强大方法。该方法使用可靠且高效的PPO算法,结合人类评估者的反馈来提高模型生成响应的质量。然而,使用PPO训练LLMs存在几个挑战。这些包括维持稳定的训练过程,以及实现比直接偏好优化(Direct Preference Optimization, DPO)[2]更好的性能。因此,我们总结了RLHF与PPO的实用训练技巧,以帮助研究人员更轻松地微调LLMs,确保训练稳定性和高性能。 1 - 使用PPO训练LLM的高级技巧 我们介绍三类PPO训练技巧:1) LLM特定技巧,2) PPO特定技巧,以及3)来自最新研究的创新策略。LLM特定和PPO特定的技巧已在各种RL框架[3, 4]中实现并证明有效。然而,最近论文中提出的创新策略在特定任务上的适用性仍有待验证。 1.1 - LLM特定技巧 Token级KL惩罚:计算强化学习(RL)模型和监督微调(SFT)模型的响应分布之间的每个token的KL散度[11]。这种散度在训练过程中作为惩罚项被纳入奖励函数。具体来说,每个token的奖励表示如下: $$ r(s_t, a_t) = \textbf{I}(s_t =[\text{EOS}])r(x,y)-\beta \text{KL}(t) $$$$ \text{KL}(t) = \log({\pi_{\theta_{\text{old}}}(a_t|s_t)^{\text{RL}}}/{\pi^{\text{SFT}}(a_t|s_t)} $$​ $$t$$ 是否为最后一个token的标识函数。 ​ 代码链接:utils.py 广义优势估计(Generalized Advantage Estimation, GAE):GAE[10]是一种TD(λ)回报估计方法,用于估计PPO中的token级奖励。在实践中,我们通常设置$λ=1$,将GAE方法转换为蒙特卡洛估计方法。 代码链接:experience_maker.py 将GAE的λ和折扣因子$γ$都设为1,这可以减少值网络引入的偏差。 代码链接:OpenRLHF/openrlhf/cli/train_ppo_ray.py 添加SFT损失:在PPO中加入额外的监督下一个token预测损失,与KL散度一起,可以保持SFT模型的预存能力。 代码链接:ppo_trainer.py 1.2 - PPO特定技巧 模型初始化:在使用PPO训练LLMs时,必须初始化两个模型:演员模型(actor model)和评论家模型(critic model)[6, 7]。具体来说,使用监督微调(SFT)模型初始化演员模型,使用奖励模型初始化评论家模型可以确保PPO训练的效率。 代码链接:examples/train_ppo.py Adam学习率:演员模型的Adam学习率大约是SFT模型使用的十分之一。例如,在OpenRLHF中,SFT模型的Adam学习率为5e-6,而演员模型为5e-7。此外,评论家模型的Adam学习率约为SFT模型的两倍,示例率为9e-6。 代码链接:train_ppo_llama.sh ...

February 9, 2025 · 小茄墩

使用 Unsloth 训练您自己的 R1 推理模型

今天,我们很高兴地介绍 Unsloth 中的推理功能!DeepSeek 的 R1 研究揭示了一个“顿悟时刻”,在这个时刻,R1-Zero 通过使用群体相对策略优化(GRPO)自主学习分配更多的思考时间,而无需人类反馈。 我们增强了整个 GRPO 过程,使其使用的 VRAM 比 Hugging Face + FA2 少 80%。这使您能够仅使用 7GB 的 VRAM 和 Qwen2.5(1.5B)重现 R1-Zero 的“顿悟时刻”。 尝试我们的免费 GRPO notebook:Colab 上的 Llama 3.1(8B) 有关其他模型(如 Phi-4)的 GRPO 笔记本,请访问我们的文档 💡 主要细节 使用 15GB VRAM,Unsloth 允许您将任何模型(最多 15B 参数)转换为推理模型,例如 Llama 3.1(8B)、Phi-4(14B)、Mistral(7B)或 Qwen2.5(7B) 最低要求:仅需 7GB VRAM 即可在本地训练您自己的推理模型。 Tiny-Zero 的出色团队展示了您可以使用 Qwen2.5(1.5B)实现自己的“顿悟时刻——但这需要 2xA100 GPU(160GB VRAM)。现在,使用 Unsloth,您只需一台 7GB VRAM 的 GPU 就可以实现同样的“顿悟时刻”。 之前,GRPO 仅支持完全微调,但我们已使其与 QLoRA 和 LoRA 一起工作。 请注意,这并不是微调 DeepSeek 的 R1 蒸馏模型或使用 R1 的蒸馏数据进行微调,Unsloth 已经支持。这是将标准模型转换为完整的推理模型,使用 GRPO。 ...

February 8, 2025 · 小茄墩

R1-Zero类训练中可能没有顿悟时刻 —— 一项初步研究

DeepSeek-R1-Zero最鼓舞人心的结果之一是通过纯强化学习(RL)出现的“顿悟时刻”。在顿悟时刻,模型学习到自我反思等新兴技能,这有助于它进行上下文搜索以解决复杂的推理问题。 在R1-Zero发布后的几天内,几个项目独立地在较小的规模(例如,1B到7B)上“再现”了R1-Zero类训练,并且都观察到了顿悟时刻,这通常伴随着响应长度的增加。我们遵循他们的设置来仔细审查R1-Zero类训练过程,并在本博客中分享以下发现: 💡 a) R1-Zero类训练中可能没有顿悟时刻。 相反,我们发现顿悟时刻(例如自我反思模式)出现在第0个周期,即基础模型。 b) 我们发现基础模型的响应中存在表面自我反思(SSR),在这种情况下,自我反思不一定导致正确的最终答案。 c) 我们通过RL对R1-Zero类训练进行了更深入的观察,发现响应长度增加的现象并不是由于自我反思的出现,而是RL优化良好设计的基于规则的奖励函数的结果。 1. 顿悟时刻出现在第0个周期 1.1 实验设置 基础模型。我们调查了由不同组织开发的广泛的基础模型系列,包括Qwen-2.5, Qwen-2.5-Math, DeepSeek-Math, Rho-Math, 和 Llama-3.x。 提示模板。我们直接使用在R1-Zero和SimpleRL-Zero中应用的模板来提示基础模型: 模板1(与R1-Zero相同) A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within <think> </think> and <answer> </answer> tags, respectively, i.e., <think> reasoning process here </think> <answer> answer here </answer>. User: {Question} Assistant: ...

February 7, 2025 · 小茄墩