当前位置: 首页 > news >正文

【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品
【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1
【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型
【DeepSeek论文精读】3. DeepSeekMoE:迈向混合专家语言模型的终极专业化
【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力

【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力

    • 0. 论文简介与摘要
      • 0.1 论文简介
      • 0.2 摘要
      • 0.3 主要贡献
      • 0.4 DeepSeek-R1 的训练流程
    • 1. 引言
      • 1.1 贡献
      • 1.2 评估结果总结
    • 2. 方法
      • 2.1 概述
      • 2.2 DeepSeek-R1-Zero:基础模型上的强化学习
        • 2.2.1 强化学习算法
        • 2.2.2 奖励模型
        • 2.2.3 训练模板
        • 2.2.4 DeepSeek-R1-Zero 的性能、自我进化过程与顿悟时刻
      • 2.3 DeepSeek-R1:结合冷启动的强化学习
        • 2.3.1 冷启动
        • 2.3.2 面向推理的强化学习
        • 2.3.3 拒绝采样与监督微调
        • 2.3.4 面向所有场景的强化学习
      • 2.4 蒸馏:赋能小型模型推理能力
    • 3. 试验
      • 3.1 DeepSeek-R1 的评估结果
      • 3.2 蒸馏模型 的评估结果
    • 4. 讨论
      • 4.1 蒸馏与强化学习的对比
      • 4.2 不成功的尝试
    • 5. 结论、局限性与未来工作


0. 论文简介与摘要

0.1 论文简介

  • 论文标题:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
  • 发布时间:2025 年 1 月 [2501.12948]
  • 论文地址:https://arxiv.org/pdf/2501.12948v1
  • Github 地址:https://github.com/deepseek-ai/DeepSeek-R1
  • Huggingface 地址:https://huggingface.co/deepseek-ai/DeepSeek-R1
  • 主要贡献:
    • 基于 DeepSeek-V3-Base,通过强化学习(RL)提升推理能力,而不使用任何SFT数据。
    • 引入冷启动数据和多阶段训练流程,优化模型的可读性和性能。

在这里插入图片描述


0.2 摘要

本文介绍了我们的 第一代推理模型 DeepSeek-R1-Zero 和 DeepSeek-R1。论文展示了一种前沿的开源推理模型,以及使用大规模强化学习技术训练此类模型的详细方法。
DeepSeek-R1-Zero 是通过大规模强化学习(RL)训练的模型,没有经过监督微调(SFT)作为初步步骤,展示了显著的推理能力。通过强化学习,DeepSeek-R1-Zero自然地展现出许多强大且有趣的推理行为。然而,它也遇到了一些挑战,如可读性差和语言混用问题。
为了解决这些问题并进一步提升推理性能,我们推出了 DeepSeek-R1,该模型在强化学习之前融入了多阶段训练和冷启动数据。DeepSeek-R1 在推理任务上的表现与 OpenAI-o1-1217 相当。
为了支持研究社区,我们开源了 DeepSeek-R1-Zero、DeepSeek-R1 以及从 6个从 DeepSeek-R1
蒸馏出的稠密模型(1.5B、7B、8B、14B、32B、70B),这些模型基于 Qwen 和 Llama 构建。

在这里插入图片描述


0.3 主要贡献

  1. DeepSeek-R1-Zero 的构建过程展示了如何通过纯强化学习激励大型语言模型自我进化,从而提升推理能力。尽管它面临可读性和语言混合等挑战,但其在多个推理任务上的表现证明了RL在提升模型推理能力方面的巨大潜力。DeepSeek-R1-Zero 的成功为未来的研究提供了新的方向,尤其是在无需监督数据的情况下,如何通过RL进一步优化模型的推理能力。

  2. DeepSeek-R1 通过引入冷启动数据和多阶段训练管道,显著提升了模型的推理能力和可读性。它在多个推理任务上的表现与 OpenAI 的 o1-1217 相当,甚至在某些任务上超越了它。通过蒸馏技术,DeepSeek-R1 的推理能力还被成功迁移到更小的模型上,展示了其在推理任务中的强大潜力。DeepSeek-R1 的成功为未来的研究提供了新的方向,尤其是在如何通过冷启动和多阶段训练进一步提升模型性能方面。

  3. 通过蒸馏技术,作者成功地将 DeepSeek-R1 的强大推理能力迁移到了多个小型密集模型上。蒸馏后的模型在多个基准测试中表现优异,展示了知识迁移的有效性。蒸馏技术不仅降低了计算成本,还为在资源受限环境中部署高性能推理模型提供了新的可能性。


0.4 DeepSeek-R1 的训练流程

DeepSeek-R1 采用四阶段流程进行训练:

  • 冷启动(阶段 1):从预训练模型 DeepSeek-V3-Base 开始,模型在从 DeepSeek-R1-Zero 收集的少量结果数据集上进行监督微调。这些结果经过验证,质量高且可读性强。这个数据集包含数千个样本,规模相对较小。在这个小规模高质量数据集上进行监督微调,有助于 DeepSeek-R1 缓解初始模型中存在的可读性问题。
  • 推理强化学习(阶段 2):这个阶段应用与前一个模型相同的大规模强化学习方法,以提升模型的推理能力。具体来说,在编程、数学、科学和逻辑推理等任务中,这些任务有明确的解决方案,可为强化学习过程定义奖励规则。
  • 拒绝采样和监督微调(阶段 3):在这个阶段,使用阶段 2 的模型检查点生成大量样本。通过拒绝采样,只保留正确且可读的样本。此外,使用生成式奖励模型 DeepSeek-V3 来决定保留哪些样本。这个阶段还包含了部分 DeepSeek-V3 的训练数据。然后,模型在这个数据集上进行监督微调。这个数据集不仅包含推理相关的问题,还提升了模型在更多领域的能力。
  • 多样化强化学习阶段(阶段 4):这是最后一个阶段,包含多样化的任务。对于像数学这样适用的任务,使用基于规则的奖励。对于其他任务,由大语言模型提供反馈,使模型符合人类偏好。
    此外,利用阶段 3 构建的数据集对各种较小的开源模型进行了蒸馏,提供了具有高推理能力的较小规模替代模型。

1. 引言

近年来,大型语言模型(LLMs)正经历着快速的迭代和演变(Anthropic,2024;Google,2024;OpenAI,2024a),逐渐缩小与通用人工智能(AGI)之间的差距。

最近,后训练(post-training)作为完整训练流程的重要组成部分,已经被提出并取得了显著进展。研究表明,后训练可以提升推理任务的准确性,符合社会价值观,并适应用户偏好,同时相比于预训练,所需的计算资源相对较少。在推理能力方面,OpenAI 的 o1(OpenAI,2024b)系列模型率先通过增加推理过程中的 Chain-of-Thought 过程的长度,实现了推理时扩展。这种方法在数学、编程和科学推理等多个推理任务上取得了显著的改进。然而,如何有效地进行测试时扩展仍然是研究界的一个未解问题。先前的几项研究探讨了多种方法,包括基于过程的奖励模型(Lightman 等,2023;Uesato 等,2022;Wang 等,2023)、强化学习(Kumar 等,2024)以及搜索算法,如蒙特卡洛树搜索和束搜索(Feng 等,2024;Trinh 等,2024;Xin 等,2024)。然而,这些方法都未能在推理表现上达到与 OpenAI o1 系列模型相当的水平。

在本文中,我们迈出了提升语言模型推理能力的第一步,采用纯强化学习(RL)进行探索。我们的目标是探索在没有任何监督数据的情况下,大型语言模型如何通过纯粹的强化学习过程自我演化并发展推理能力。具体来说,我们使用 DeepSeek-V3-Base 作为基础模型,并采用 GRPO(Shao 等,2024)作为 RL 框架,以提升模型在推理方面的表现。

在训练过程中,DeepSeek-R1-Zero 自然展现了许多强大且有趣的推理行为。经过数千步的强化学习训练,DeepSeek-R1-Zero 在推理基准测试中表现出了超凡的性能。例如,在 AIME 2024 上,pass@1 的得分从 15.6% 提升至 71.0%,并且通过多数投票,得分进一步提高到 86.7%,与 OpenAI-o1-0912 的表现相匹配。

然而,DeepSeek-R1-Zero 遇到了一些挑战,例如可读性差和语言混合。为了应对这些问题并进一步提升推理性能,我们推出了 DeepSeek-R1,该模型结合了少量冷启动数据和多阶段训练流程。具体来说,我们首先收集了数千条冷启动数据,以微调 DeepSeek-V3-Base 模型。随后,我们像 DeepSeek-R1-Zero 一样进行面向推理的强化学习。接近强化学习过程收敛时,我们通过对 RL 检查点进行拒绝采样,结合来自 DeepSeek-V3 的监督数据(涵盖写作、事实问答和自我认知等领域),生成新的 SFT 数据,并重新训练 DeepSeek-V3-Base 模型。经过新的数据微调后,检查点将进行额外的强化学习过程,考虑到所有场景中的提示。经过这些步骤后,我们得到了一个称为 DeepSeek-R1 的检查点,其推理性能与 OpenAI-o1-1217 相当。

我们进一步探索了从 DeepSeek-R1 蒸馏到更小的稠密模型。以 Qwen2.5-32B(Qwen,2024b)为基础模型,从 DeepSeek-R1 直接蒸馏的结果优于对其应用强化学习的结果。这表明,较大基础模型发现的推理模式对于提升推理能力至关重要。我们开源了蒸馏后的 Qwen 和 Llama(Dubey 等,2024)系列。值得注意的是,我们的 14B 蒸馏模型在推理基准测试中大幅超越了最先进的开源模型 QwQ-32B-Preview(Qwen,2024a),而蒸馏后的 32B 和 70B 模型在稠密模型中创下了推理基准的新纪录。


1.1 贡献

1. 后训练:基于基础模型的大规模强化学习

  • 我们直接将强化学习(RL)应用于基础模型,而不依赖于监督微调(SFT)作为初步步骤。这种方法使模型能够探索链式推理(CoT)来解决复杂问题,从而发展出 DeepSeek-R1-Zero。DeepSeek-R1-Zero 展现了自我验证、反思和生成长链式推理等能力,为研究社区带来了重大突破。值得注意的是,这是首个通过纯强化学习验证大语言模型(LLMs)推理能力可以被激励的开放研究,无需依赖 SFT。这一突破为未来该领域的进展铺平了道路。
  • 我们介绍了开发 DeepSeek-R1 的流程。该流程包含两个强化学习阶段,旨在发现改进的推理模式并与人类偏好对齐,同时包含两个监督微调阶段,作为模型推理和非推理能力的种子。我们相信这一流程将通过创造更好的模型,推动行业发展。

2. 蒸馏:更小的模型也能强大

  • 我们证明了较大模型的推理模式可以被蒸馏到更小的模型中,从而在推理性能上超越了通过强化学习发现的较小模型的推理模式。开源的 DeepSeek-R1 及其 API 将为研究社区未来蒸馏出更好的小型模型提供帮助。
  • 使用 DeepSeek-R1 生成的推理数据,我们对多个在研究社区广泛使用的稠密模型进行了微调。评估结果表明,蒸馏后的更小稠密模型在基准测试中表现异常出色。DeepSeek-R1-Distill-Qwen-7B 在 AIME 2024 上得分 55.5%,超越了 QwQ-32B-Preview。此外,DeepSeek-R1-Distill-Qwen-32B 在 AIME 2024 上得分 72.6%,在 MATH-500 上得分 94.3%,在 LiveCodeBench 上得分 57.2%。这些结果大大超越了之前的开源模型,并与 o1-mini 的表现相当。我们将基于 Qwen2.5 和 Llama3 系列的 1.5B、7B、8B、14B、32B 和 70B 蒸馏模型检查点开源给社区。

1.2 评估结果总结

  1. 推理任务
    (1) DeepSeek-R1 在 AIME 2024 上达到了 79.8% 的 Pass@1,略微超越了 OpenAI-o1-1217。在 MATH-500 上,它取得了 97.3% 的优异成绩,与 OpenAI-o1-1217 相当,并显著超越了其他模型。
    (2) 在与编程相关的任务中,DeepSeek-R1 在代码竞赛任务中表现出专家水平,Codeforces 上的 Elo 等级为 2,029,超越了 96.3% 的人类参赛者。在与工程相关的任务中,DeepSeek-R1 的表现稍好于 DeepSeek-V3,这对开发人员在现实任务中具有一定帮助。

  2. 知识:
    在 MMLU、MMLU-Pro 和 GPQA Diamond 等基准测试中,DeepSeek-R1 取得了杰出的成绩,显著超越了 DeepSeek-V3,分别在 MMLU 上得分 90.8%,MMLU-Pro 上得分 84.0%,GPQA Diamond 上得分 71.5%。虽然在这些基准测试中的表现略低于 OpenAI-o1-1217,DeepSeek-R1 依然超越了其他闭源模型,展示了其在教育任务中的竞争优势。在事实性基准测试 SimpleQA 上,DeepSeek-R1 超越了 DeepSeek-V3,证明了其处理基于事实查询的能力。在这一基准测试中,OpenAI-o1 也超越了 4o,呈现出相似的趋势。

  3. 其它:
    DeepSeek-R1 在广泛的任务中也表现出色,包括创意写作、一般问答、编辑、摘要等。它在 AlpacaEval 2.0 上取得了令人印象深刻的长度控制胜率 87.6%,在 ArenaHard 上的胜率为 92.3%,展示了其强大的智能处理非考试导向查询的能力。此外,DeepSeek-R1 在需要长上下文理解的任务上表现突出,显著超越了 DeepSeek-V3 在长上下文基准测试中的表现。


2. 方法

2.1 概述

先前的研究在很大程度上依赖大量的监督数据来提高模型性能。在本研究中,我们展示了推理能力可以通过大规模强化学习(RL)显著提升,即使不使用监督微调(SFT)作为冷启动。此外,性能还可以通过加入少量冷启动数据进一步增强。
在接下来的章节中,我们将介绍:
(1)DeepSeek-R1-Zero,它直接将强化学习应用于基础模型,无需任何 SFT 数据;
(2)DeepSeek-R1,它从经过数千条长链式推理(CoT)示例微调的检查点开始应用强化学习;
(3)从 DeepSeek-R1 蒸馏推理能力到小型稠密模型。


2.2 DeepSeek-R1-Zero:基础模型上的强化学习

强化学习在推理任务中已展现出显著的效果,正如我们之前的研究所证明的那样(Shao 等,2024;Wang 等,2023)。然而,这些研究都在很大程度上依赖监督数据,而这些数据的收集过程非常耗时。在本节中,我们探讨了在没有任何监督数据的情况下,LLMs 如何通过纯强化学习过程自我演化并发展推理能力。我们首先简要概述了我们的 RL 算法,然后呈现一些令人兴奋的结果,希望能为社区提供有价值的见解。


2.2.1 强化学习算法

组内相对策略优化(Group Relative Policy Optimization)

为了节省强化学习的训练成本,我们采用了 Group Relative Policy Optimization (GRPO)(Shao 等,2024),它不依赖于通常与策略模型大小相同的评价模型,而是通过从组得分中估计基线。具体而言,对于每个问题 ,GRPO 从旧的策略 中采样一组输出 { 1, 2, ···, },然后通过最大化以下目标来优化策略模型:

在这里插入图片描述
其中,𝜀 和 𝛽 是超参数, A i A_i Ai 是优势,使用一组与每组内的产出相对应的奖励 { r 1 , r 2 , ⋅ ⋅ ⋅ , r G } \{ r_1, r_2, ···, r_G \} {r1,r2,⋅⋅⋅,rG} 计算得到:

在这里插入图片描述


2.2.2 奖励模型

奖励是训练信号的来源,决定了强化学习(RL)的优化方向。
为了训练 DeepSeek-R1-Zero,我们采用了一种基于规则的奖励系统,主要由两种类型的奖励组成:

  • 准确度奖励(Accuracy rewards):准确度奖励模型用于评估响应是否正确。例如,在具有确定性结果的数学问题中,要求模型以指定的格式(例如,在框中)提供最终答案,从而可以通过规则进行可靠的正确性验证。同样,对于 LeetCode 问题,可以使用编译器基于预定义的测试用例生成反馈。
  • 格式奖励(Format rewards):除了准确度奖励模型外,我们还使用了格式奖励模型,强制模型将其思维过程放置在 <think> 和 </think>标签之间。

我们在开发 DeepSeek-R1-Zero 时没有应用基于结果或过程的神经奖励模型,因为我们发现,在大规模强化学习过程中,神经奖励模型可能会遭遇奖励操控问题,并且重新训练奖励模型需要额外的训练资源,这会使整个训练流程变得更加复杂。


2.2.3 训练模板

为了训练 DeepSeek-R1-Zero,我们首先设计了一个简单的模板,指导基础模型遵循我们指定的指令。
如表 1 所示,该模板要求 DeepSeek-R1-Zero 首先生成推理过程,然后给出最终答案。


表1:用户(User)和助手(Assistant)之间的对话。

用户提出了一个问题,助手解决了这个问题。
助手首先在脑海中思考推理过程,然后向用户提供答案。推理过程和答案分别包含在标签 <think> </think>和 <answer> </answer> 中,即 <think> reasoning process here </think>, <answer> answer here </answer>。
User: prompt.
Assistant:


我们有意将约束限制在这种结构格式上,避免任何内容特定的偏见,例如强制要求反思性推理或推广特定的解题策略——以确保我们能够准确观察模型在强化学习过程中的自然进展。


2.2.4 DeepSeek-R1-Zero 的性能、自我进化过程与顿悟时刻

DeepSeek-R1-Zero 的性能

图 2 展示了 DeepSeek-R1-Zero 在 AIME 2024 基准测试中的性能轨迹,贯穿整个强化学习训练过程。如图所示,随着强化学习训练的推进,DeepSeek-R1-Zero 的性能稳定且持续地提升。值得注意的是,AIME 2024 上的平均 pass@1 得分显著上升,从最初的 15.6% 跃升至令人印象深刻的 71.0%,达到了与 OpenAI-o1-0912 相媲美的性能水平。这一显著提升突显了我们 RL 算法在优化模型性能方面的有效性。

在这里插入图片描述

表 2 提供了 DeepSeek-R1-Zero 与 OpenAI 的 o1-0912 模型在多种推理相关基准测试中的比较分析。研究结果显示,强化学习赋予 DeepSeek-R1-Zero 强大的推理能力,而无需任何监督微调数据。这是一个值得注意的成就,因为它突显了模型仅通过强化学习就能有效地学习和泛化。此外,通过应用多数投票,DeepSeek-R1-Zero 的性能可以进一步提升。例如,当在 AIME 基准测试中使用多数投票时,DeepSeek-R1-Zero 的性能从 71.0% 提升至 86.7%,超越了 OpenAI-o1-0912 的表现。DeepSeek-R1-Zero 在有无多数投票的情况下都能达到如此具有竞争力的表现,突显了其强大的基础能力,并展示了在推理任务中进一步提升的潜力。

在这里插入图片描述

DeepSeek-R1-Zero 的自我进化过程

DeepSeek-R1-Zero 的自我进化过程是一个引人注目的示范,展示了强化学习如何驱动模型自主提升其推理能力。通过直接从基础模型开始强化学习,我们可以在没有监督微调阶段影响的情况下,密切监控模型的进展。这种方法清晰地展示了模型如何随着时间的推移不断进化,特别是在处理复杂推理任务的能力方面。

如图3所示,DeepSeek-R1-Zero的思维时间在整个训练过程中持续改进。这种改进不是外部调整的结果,而是模型内部的自我发展。DeepSeek-R1-Zero通过利用扩展的测试时间计算,自然获得了解决越来越复杂推理任务的能力。这些计算从生成数百个到数千个推理标记不等,使得模型能够更深入地探索和完善其思维过程。

这种自我进化的一个最显著的方面是随着测试时间计算的增加,复杂行为的出现。比如反思行为——模型回顾并重新评估之前的步骤——以及探索问题解决替代方法的行为,都是自发产生的。这些行为并非显式编程所致,而是模型与强化学习环境互动的结果。这种自发的发展显著增强了DeepSeek-R1-Zero的推理能力,使其能够以更高的效率和准确性应对更具挑战性的任务。

在这里插入图片描述

DeepSeek-R1-Zero 的 “顿悟” 时刻

在DeepSeek-R1-Zero的训练过程中,观察到一个特别有趣的现象,即发生了“顿悟”时刻。如表3所示,这一时刻出现在模型的一个中间版本中。在此阶段,DeepSeek-R1-Zero通过重新评估其初始方法,学会了为一个问题分配更多的思考时间。这种行为不仅证明了模型推理能力的提升,而且是强化学习如何导致意外且复杂结果的迷人示例。

在这里插入图片描述

这个时刻不仅是模型的“顿悟”,也是观察其行为的研究人员的“顿悟”。
它强调了强化学习的力量与美妙:我们并没有显式地教模型如何解决问题,而是为其提供了正确的激励,模型自主发展出先进的问题解决策略。这个“顿悟”时刻有力地提醒我们,强化学习能够解锁人工系统中智能的新层次,为未来更具自主性和适应性的模型铺平道路。


DeepSeek-R1-Zero 的缺点

尽管 DeepSeek-R1-Zero 展现了强大的推理能力,并能自主发展出意想不到且强大的推理行为,但它仍然面临一些问题。例如,DeepSeek-R1-Zero 在可读性差和语言混杂等问题上存在困难。为了使推理过程更加易读并与开放社区分享,我们探索了DeepSeek-R1,一种结合了强化学习与人性化冷启动数据的方法。


2.3 DeepSeek-R1:结合冷启动的强化学习

受到DeepSeek-R1-Zero取得的良好结果的启发,产生了两个自然的问题:
(1)通过引入少量高质量数据作为冷启动,是否能够进一步提高推理性能或加速收敛?
(2)如何训练一个既能生成清晰连贯的推理链(CoT),又能展现出强大通用能力的用户友好型模型?

为了解决这些问题,我们设计了一个训练DeepSeek-R1的管道。该管道由四个阶段组成,具体如下:


2.3.1 冷启动

与 DeepSeek-R1-Zero 不同,为了防止RL训练的早期冷启动阶段在基础模型上出现不稳定现象,在 DeepSeek-R1 中,我们构建并收集了少量的长推理链(CoT)数据,用以微调模型,作为初始的 RL 行为体。

为了收集这些数据,我们探索了几种方法:使用少量示例提示与长推理链的结合,直接提示模型生成带有反思和验证的详细回答,收集DeepSeek-R1-Zero输出的可读格式,并通过人工注释员后处理来精炼结果。

在本研究中,我们收集了数千条冷启动数据,用于微调 DeepSeek-V3-Base,作为强化学习的起点。与DeepSeek-R1-Zero相比,冷启动数据的优势包括:

  • 可读性:DeepSeek-R1-Zero的一个关键限制是其内容通常不适合阅读。回答可能会混合多种语言,或者缺乏标记格式来突出显示给用户的答案。相比之下,在为DeepSeek-R1创建冷启动数据时,我们设计了一个可读的模式,其中每个回答末尾都有一个总结,并且过滤掉不适合阅读的回答。这里,我们定义输出格式为 |special_token| <reasoning_process>|special_token| <summary>,其中推理过程是针对查询的CoT,而总结则用于概括推理结果。
  • 潜力:通过精心设计带有人工先验的冷启动数据模式,我们观察到DeepSeek-R1在性能上优于DeepSeek-R1-Zero。我们认为,迭代训练是推理模型的一种更好的方法。

2.3.2 面向推理的强化学习

在对DeepSeek-V3-Base进行冷启动数据微调后,我们采用与DeepSeek-R1-Zero相同的大规模强化学习训练过程。
这个阶段重点提升模型的推理能力,特别是在推理密集型任务中,如编码、数学、科学和逻辑推理等,这些任务涉及明确定义的问题和清晰的解决方案。在训练过程中,我们观察到CoT经常出现语言混合,尤其是在强化学习提示涉及多种语言时。为了缓解语言混合的问题,我们在强化学习训练中引入了语言一致性奖励,这一奖励是根据推理链中目标语言词汇的比例计算的。尽管消融实验表明,这种对齐会导致模型性能略微下降,但这一奖励与人类偏好一致,使得模型输出更具可读性。
最终,我们通过直接将推理任务的准确性和语言一致性奖励相加,形成最终的奖励。然后,我们对微调后的模型进行强化学习训练,直到其在推理任务上收敛。


2.3.3 拒绝采样与监督微调

当面向推理的强化学习收敛后,我们利用得到的检查点收集监督微调(SFT)数据用于下一轮训练。与最初的冷启动数据主要关注推理不同,这一阶段将涉及其他领域的数据,以增强模型在写作、角色扮演和其他通用任务中的能力。具体来说,我们生成数据并对模型进行微调,如下所述。

推理数据
我们整理推理提示,并通过从上述强化学习训练的检查点执行拒绝采样来生成推理轨迹。在前一个阶段,我们只包含了可以通过基于规则的奖励进行评估的数据。然而,在这一阶段,我们通过加入额外的数据来扩展数据集,其中一些数据使用生成奖励模型,通过将真实标签和模型预测输入DeepSeek-V3进行判断。此外,由于模型输出有时混乱且难以阅读,我们过滤掉了含有混合语言、长段落和代码块的推理链。对于每个提示,我们采样多个响应,并只保留正确的响应。最终,我们收集了约60万个与推理相关的训练样本。

非推理数据
对于非推理数据,如写作、事实问答、自我认知和翻译,我们采用DeepSeek-V3流程并重复使用部分DeepSeek-V3的SFT数据集。对于某些非推理任务,我们通过提示调用DeepSeek-V3生成潜在的推理链,以便在回答问题前使用。然而,对于更简单的查询,例如“你好”,我们不会提供推理链作为回应。最终,我们收集了大约20万个与推理无关的训练样本。

我们使用上述整理好的大约80万个样本数据集对DeepSeek-V3-Base进行两轮微调。


2.3.4 面向所有场景的强化学习

为了进一步使模型与人类偏好对齐,我们实施了一个二次强化学习阶段,旨在提高模型的有用性和无害性,同时精炼其推理能力。具体而言,我们使用奖励信号和多样化的提示分布来训练模型。对于推理数据,我们遵循DeepSeek-R1-Zero中概述的方法,利用基于规则的奖励来引导数学、代码和逻辑推理领域的学习过程。对于一般数据,我们依赖奖励模型来捕捉人类偏好,以应对复杂和微妙的场景。我们在DeepSeek-V3流程的基础上,采用类似的偏好对分布和训练提示。

在有用性方面,我们专注于最终的总结,确保评估重点强调响应对用户的实用性和相关性,同时尽量减少对基础推理过程的干扰。在无害性方面,我们评估模型的整个响应,包括推理过程和总结,以识别并减少生成过程中可能出现的任何潜在风险、偏见或有害内容。最终,奖励信号和多样化数据分布的整合使我们能够训练一个既在推理上表现优异,又优先考虑有用性和无害性的模型。


2.4 蒸馏:赋能小型模型推理能力

为了赋予更高效的小型模型推理能力,例如DeepSeek-R1,我们直接使用 DeepSeek-R1 整理的80万个样本(如 2.3.3 所述)对开源模型进行微调,具体包括 Qwen(Qwen, 2024b)和Llama(AI@Meta, 2024)。我们的研究发现,这种简单的蒸馏方法显著提升了小型模型的推理能力。我们使用的基础模型包括Qwen2.5-Math-1.5B、Qwen2.5-Math-7B、Qwen2.5-14B、Qwen2.5-32B、Llama-3.1-8B和Llama-3.3-70B-Instruct。我们选择Llama-3.3,因为它的推理能力略优于Llama-3.1。

对于蒸馏后的模型,我们仅应用了SFT(监督微调),没有包括RL(强化学习)阶段,尽管加入RL可能会显著提升模型性能。我们的主要目标是展示蒸馏技术的有效性,将RL阶段的探索留给更广泛的研究社区。


3. 试验

基准测试(Benchmarks)
我们在多个基准测试上评估模型的表现,包括MMLU (Hendrycks等, 2020),MMLU-Redux (Gema等, 2024),MMLU-Pro (Wang等, 2024),C-Eval (Huang等, 2023),CMMLU (Li等, 2023),IFEval (Zhou等, 2023),FRAMES (Krishna等, 2024),GPQA Diamond (Rein等, 2023),SimpleQA (OpenAI, 2024c),C-SimpleQA (He等, 2024),SWE-Bench Verified (OpenAI, 2024d),Aider,LiveCodeBench (Jain等, 2024)(2024年8月至2025年1月),Codeforces,中国全国中学生数学奥林匹克竞赛(CNMO 2024)3,以及美国邀请数学竞赛(AIME 2024)(MAA, 2024)。
除了标准基准测试外,我们还使用 LLM 作为评估者,评估模型在开放式生成任务上的表现。具体而言,我们遵循 AlpacaEval 2.0(Dubois等, 2024)和Arena-Hard(Li等, 2024)的原始配置,这些配置利用GPT-4-Turbo-1106作为评估者进行成对比较。在评估中,我们只提供最终总结以避免长度偏差。对于蒸馏模型,我们在AIME 2024,MATH-500,GPQA Diamond,Codeforces和LiveCodeBench上报告具有代表性的结果。

评估提示(Evaluation Prompts)
按照DeepSeek-V3的设置,标准基准测试如MMLU、DROP、GPQA Diamond和SimpleQA使用simpleevals框架中的提示进行评估。对于MMLU-Redux,我们在零样本设置下采用Zero-Eval提示格式(Lin, 2024)。在MMLU-Pro、C-Eval和CLUE-WSC的评估中,由于原始提示是少量样本,我们稍微修改了提示,采用零样本设置。少量样本中的Chain-of-Thought(CoT)可能会影响DeepSeek-R1的性能。其他数据集遵循其原始评估协议,并使用创作者提供的默认提示。在代码和数学基准测试方面,HumanEval-Mul数据集涵盖了八种主流编程语言(Python、Java、C++、C#、JavaScript、TypeScript、PHP和Bash)。在LiveCodeBench上的模型表现通过CoT格式进行评估,数据收集时间为2024年8月至2025年1月。Codeforces数据集则使用10场Div.2竞赛的问题和专家设计的测试用例进行评估,随后计算预期评级和竞争者的百分比。SWE-Bench验证结果通过无代理框架(Xia等, 2024)获得。AIDER相关基准使用“diff”格式进行测量。DeepSeek-R1的输出在每个基准测试中限制为最多32,768个标记。

基线(Baselines)
我们针对几个强基准模型进行全面评估,包括DeepSeek-V3、Claude-Sonnet-3.5-1022、GPT-4o-0513、OpenAI-o1-mini和OpenAI-o1-1217。由于在中国大陆访问 OpenAI-o1-1217 的API存在困难,我们基于官方报告评价其性能。对于蒸馏模型,我们还与开源模型QwQ-32B-Preview(Qwen, 2024a)进行了比较。

评估设置(Evaluation Setup)
我们将模型的最大生成长度设置为 32,768 个标记(tokens)。我们发现,使用贪婪解码来评估长输出推理模型会导致更高的重复率,并且不同检查点之间的表现存在显著波动。因此,我们默认使用 pass@ k 评估(Chen等, 2021),并报告pass@1结果,使用非零温度。具体而言,我们使用采样温度 0.6 和 top-p 值 0.95 来为每个问题生成 k 个响应(通常在4~64之间,具体取决于测试集的大小)。然后,pass@1 的计算公式为:

在这里插入图片描述

其中, p i p_i pi 表示第 i 个响应的正确性。该方法提供了更可靠的性能估计。对于AIME 2024,我们还报告了共识(多数投票)结果(Wang等, 2022),使用64个样本,记作 cons@64。


3.1 DeepSeek-R1 的评估结果

对于MMLU、MMLU Pro和GPQA Diamond等面向教育的知识基准测试,DeepSeek-R1的性能优于DeepSeek-V3。这一改进主要归因于STEM相关问题的准确性提高,通过大规模强化学习取得了显著成果。此外,DeepSeek-R1在FRAMES方面表现出色,FRAMES是一项依赖于上下文的长期QA任务,展示了其强大的文档分析能力。这突显了推理模型在人工智能驱动的搜索和数据分析任务中的潜力。在事实基准SimpleQA上,DeepSeek-R1的表现优于DeepSeek-V3,展示了其处理基于事实的查询的能力。在OpenAI-o1超过GPT-4o的情况下,也观察到了类似的趋势。然而,在中国SimpleQA基准测试中,DeepSeek-R1的表现不如DeepSeek-V3,主要是因为它倾向于在安全RL后拒绝回答某些查询。如果没有安全RL,DeepSeek-R1的准确率可以达到70%以上。

DeepSeek-R1在IF Eval上也取得了令人印象深刻的结果,IF Eval是一个旨在评估模型遵循格式说明能力的基准。这些改进可能与在监督微调(SFT)和强化学习训练的最后阶段纳入指令跟踪数据有关。此外,在AlpacaEval2.0和ArenaHard上观察到了显著的性能,表明了DeepSeek-R1在编写任务和开放域问答方面的优势。它在DeepSeek-V3上的显著表现突显了大规模RL的泛化优势,这不仅提高了推理能力,还提高了跨不同领域的性能。此外,DeepSeek-R1生成的摘要长度简洁明了,ArenaHard上平均有689个令牌,AlpacaEval 2.0上平均有2218个字符。这表明DeepSeek-R1避免了在基于GPT的评估过程中引入长度偏差,进一步巩固了其在多个任务中的稳健性。

在数学任务方面,DeepSeek-R1的性能与OpenAI-o1-1217相当,远远超过了其他模型。在编码算法任务上也观察到了类似的趋势,例如LiveCodeBench和Codeforce,其中以推理为中心的模型主导了这些基准测试。在面向工程的编码任务中,OpenAI-o1-1217在Aider上的表现优于DeepSeek-R1,但在SWE Verified上的表现相当。我们相信DeepSeek-R1的工程性能将在下一个版本中得到改善,因为目前相关的RL训练数据量仍然非常有限。

在这里插入图片描述


3.2 蒸馏模型 的评估结果

如表5所示,简单地蒸馏DeepSeek-R1的输出使得高效的DeepSeek-R1-7B(即DeepSeek-R1-Distill-Qwen-7B,以下简写)在各项评估指标上超过了非推理模型,如GPT-4o-0513。DeepSeek-R1-14B在所有评估指标上都超越了QwQ-32B-Preview,而DeepSeek-R1-32B和DeepSeek-R1-70B在大多数基准测试中显著超越了o1-minion。这些结果展示了蒸馏技术的强大潜力。此外,我们还发现,将RL应用于这些蒸馏模型能够带来显著的进一步提升。我们认为这一发现值得进一步探索,因此在此仅展示简单SFT蒸馏模型的结果。

在这里插入图片描述


4. 讨论

4.1 蒸馏与强化学习的对比

在第3.2节中,我们可以看到通过蒸馏DeepSeek-R1,小模型能够取得令人印象深刻的结果。然而,仍然有一个问题需要解答:是否可以通过本文讨论的大规模强化学习训练,而不通过蒸馏,来实现相当的性能?

为了解答这个问题,我们在Qwen-32B-Base上进行了大规模的强化学习训练,使用了数学、代码和STEM数据,训练超过10K步,最终得到了DeepSeek-R1-Zero-Qwen-32B。实验结果,如表6所示,表明经过大规模强化学习训练后的32B基模型,在性能上与QwQ-32B-Preview相当。然而,从DeepSeek-R1蒸馏出来的DeepSeek-R1-Distill-Qwen-32B,在所有基准测试中表现明显优于DeepSeek-R1-Zero-Qwen-32B。

因此,我们可以得出两个结论:
首先,将更强大的模型蒸馏为更小的模型可以获得出色的结果,而依赖本文中提到的大规模强化学习的小模型则需要巨大的计算能力,甚至可能无法达到蒸馏模型的性能。
其次,虽然蒸馏策略既经济又有效,但要突破智能的边界,仍然可能需要更强大的基础模型和更大规模的强化学习。

在这里插入图片描述


4.2 不成功的尝试

在开发DeepSeek-R1的早期阶段,我们也遇到了一些失败和挫折。我们在这里分享这些失败经验,以提供一些启示,但这并不意味着这些方法无法开发有效的推理模型。

过程奖励模型(PRM)

PRM是一种合理的方法,可以引导模型朝着更好的方式解决推理任务(Lightman et al., 2023;Uesato et al., 2022;Wang et al., 2023)。然而,实际上,PRM有三个主要限制,可能会妨碍其最终成功。首先,很难明确地定义一般推理中的细粒度步骤。其次,判断当前的中间步骤是否正确是一个具有挑战性的任务。使用模型进行自动标注可能不会产生令人满意的结果,而人工标注又不利于规模化。第三,一旦引入基于模型的PRM,它不可避免地会导致奖励作弊(Gao et al., 2022),并且重新训练奖励模型需要额外的训练资源,复杂化了整个训练流程。总的来说,虽然PRM在重新排序模型生成的前N个响应或辅助引导搜索(Snell et al., 2024)方面表现出色,但与它在大规模强化学习过程中引入的额外计算开销相比,其优势是有限的。

蒙特卡洛树搜索(MCTS)

受AlphaGo(Silver et al., 2017b)和AlphaZero(Silver et al., 2017a)的启发,我们探索了使用蒙特卡洛树搜索(MCTS)来增强测试时的计算可扩展性。该方法涉及将答案拆分成更小的部分,以便模型能够系统地探索解空间。为此,我们提示模型生成多个标签,这些标签对应于搜索所需的特定推理步骤。在训练时,我们首先使用收集的提示,通过一个预训练的价值模型指导MCTS来寻找答案。随后,我们使用得到的问答对来训练演员模型和价值模型,迭代地优化这个过程。

然而,这种方法在扩展训练时遇到了几个挑战。首先,与象棋等搜索空间相对明确的情况不同,令牌生成呈现出指数级增长的搜索空间。为了解决这个问题,我们为每个节点设置了最大扩展限制,但这可能导致模型陷入局部最优解。其次,价值模型直接影响生成的质量,因为它指导了搜索过程的每一步。训练一个细粒度的价值模型本身就很困难,这使得模型在迭代改进时面临挑战。虽然AlphaGo的核心成功依赖于训练一个价值模型来逐步提高其性能,但由于令牌生成的复杂性,这一原则在我们的设置中很难复制。

总之,尽管在推理过程中,MCTS与预训练价值模型配合可以提高性能,但通过自我搜索迭代提升模型性能仍然是一个重大挑战。


5. 结论、局限性与未来工作

在这项工作中,我们分享了通过强化学习提升模型推理能力的过程。DeepSeek-R1-Zero代表了一种纯强化学习方法,无需依赖冷启动数据,在多项任务上实现了强大的性能。而DeepSeek-R1则更加强大,结合了冷启动数据和迭代的强化学习微调。最终,DeepSeek-R1在多项任务中实现了与OpenAI-o1-1217相当的表现。

我们进一步探索了将推理能力蒸馏到小型密集模型中的方法。我们使用DeepSeek-R1作为教师模型,生成了80万个训练样本,并微调了多个小型密集模型。结果令人鼓舞:DeepSeek-R1-Distill-Qwen-1.5B在数学基准测试中超越了GPT-4o和Claude-3.5-Sonnet,在AIME上的得分为28.9%,在MATH上的得分为83.9%。其他密集模型也取得了显著成绩,显著超越了基于相同基础检查点的其他指令调优模型。

在未来,我们计划在以下方向进行DeepSeek-R1的研究和发展:

  • 通用能力:目前,DeepSeek-R1在函数调用、多轮对话、复杂角色扮演和JSON输出等任务上的能力仍不及DeepSeek-V3。未来,我们计划探索如何利用长链推理(CoT)来增强这些领域的任务能力。
  • 语言混合:DeepSeek-R1目前优化了中文和英文,因此在处理其他语言的查询时可能会出现语言混用的问题。例如,DeepSeek-R1可能会使用英文进行推理和回答,即使查询本身是其他语言。我们计划在未来的更新中解决这一局限性。
  • 提示工程:在评估DeepSeek-R1时,我们观察到它对提示非常敏感。少量示例提示会持续降低其性能。因此,我们建议用户直接描述问题并使用零-shot设置指定输出格式,以获得最佳结果。
  • 软件工程任务:由于评估时间较长,影响了强化学习过程的效率,大规模强化学习尚未在软件工程任务中广泛应用。因此,DeepSeek-R1在软件工程基准测试上未能相较于DeepSeek-V3表现出显著提升。未来版本将通过在软件工程数据上实施拒绝采样或在强化学习过程中引入异步评估来提高效率。

参考文献和链接


版权声明:
本文由 youcans@xidian 对论文 DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 进行摘编和翻译。该论文版权属于原文期刊和作者,本译文只供研究学习使用。

youcans@xidian 作品,转载必须标注原文链接:
【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力
Copyright 2024 youcans, XIDIAN
Crated:2025-02

相关文章:

【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html&#xff09;原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】2. DeepSeek LLM&#xff1a;以长期主义扩展开源语言模型 【DeepSeek论文精读】…...

顺丰大数据开发面试题及参考答案

Flink 的提交过程是怎样的? Flink 的提交过程通常包含以下步骤: 代码编写与打包:开发人员首先使用 Flink 提供的 API 编写数据处理逻辑,包括定义数据源、转换操作和数据 sink 等。完成代码编写后,将项目打包成可执行的 JAR 文件,其中包含了所有依赖的库和资源。选择提交方…...

C# 函数多个返回值

有时候需要从C#函数中返回多个返回值&#xff0c;而且返回值的类型又不一样&#xff0c;这个时候又不能用数组或者list。 其实C#函数是支持多个不同类型的返回值的&#xff0c;请参看下面的code. //多返回值函数定义 (string name, int age) GetNameAge(int id) {return (&qu…...

Deepseek 接入Word处理对话框(隐藏密钥)

硅基流动邀请码&#xff1a;1zNe93Cp 邀请链接&#xff1a;网页链接 亲测deepseek接入word&#xff0c;自由调用对话&#xff0c;看截图有兴趣的复用代码&#xff08;当然也可以自己向deepseek提问&#xff0c;帮助你完成接入&#xff0c;但是提问逻辑不一样给出的答案是千差万…...

RabbitMQ深度探索:简单实现 MQ

基于多线程队列实现 MQ &#xff1a; 实现类&#xff1a; public class ThreadMQ {private static LinkedBlockingDeque<JSONObject> broker new LinkedBlockingDeque<JSONObject>();public static void main(String[] args) {//创建生产者线程Thread producer n…...

Baklib赋能数字内容体验个性化推荐提升用户体验的未来之路

内容概要 随着数字化时代的不断发展&#xff0c;用户对内容消费的需求日益多样化&#xff0c;个性化推荐成为提升用户体验的重要手段。Baklib以其先进的技术手段&#xff0c;在数字内容领域内积极推动个性化推荐的实施&#xff0c;从而满足用户在信息获取和内容消费中的独特需…...

使用 TensorRT 和 Python 实现高性能图像推理服务器

在现代深度学习和计算机视觉应用中&#xff0c;高性能推理是关键。本文将介绍如何使用 TensorRT 和 Python 构建一个高性能的图像推理服务器。该服务器能够接收客户端发送的图像数据&#xff0c;使用 TensorRT 进行推理&#xff0c;并将结果返回给客户端。 1. 概述 1.1 项目目…...

[MySQL#1] database概述 常见的操作指令 MySQL架构 存储引擎

#1024程序员节&#xff5c;征文# 目录 一. 数据库概念 0.连接服务器 1. 什么是数据库 口语中的数据库 为什么数据不直接以文件形式存储&#xff0c;而需要使用数据库呢&#xff1f; 总结 二. ??基础操作 三. 主流数据库 四. 基础知识 服务器&#xff0c;数据库&…...

WebAssembly:前后端开发的未来利器

引言 在互联网的世界里&#xff0c;前端和后端开发一直是两块重要的领域。而 JavaScript 长期以来是前端的霸主&#xff0c;后端则有各种语言诸如 Java、Python、Node.js、Go 等等。然而&#xff0c;近年来一个名为 WebAssembly (Wasm) 的技术正在逐渐改变这一格局。它的高性能…...

Spring Task之Cron表达式

&#x1f31f; Spring Task高能预警&#xff1a;你以为的Cron表达式可能都是错的&#xff01;【附实战避坑指南】 开篇暴击&#xff1a;为什么你的定时任务总在凌晨3点翻车&#xff1f; “明明设置了0 0 2 * * ?&#xff0c;为什么任务每天凌晨3点执行&#xff1f;” —— 来…...

deepseek API 调用-python

【1】创建 API keys 【2】安装openai SDK pip3 install openai 【3】代码&#xff1a; https://download.csdn.net/download/notfindjob/90343352...

数字滤波器的分类

数字滤波器可以根据不同的标准进行分类&#xff0c;以下是几种常见的分类方式&#xff1a; 1. 按实现结构分类 FIR滤波器&#xff08;有限脉冲响应滤波器&#xff09; - 特点&#xff1a;系统的脉冲响应在有限时间内衰减到零。 - 优点&#xff1a;线性相位特性&#xff08;保…...

iOS 老项目适配 #Preview 预览功能

前言 iOS 开发者 最憋屈的就是UI 布局慢,一直以来没有实时预览功能,虽然swiftUI 早就支持了,但是目前主流还是使用UIKit在布局,iOS 17 苹果推出了 #Preview 可以支持UIKit 实时预览,但是仅仅是 iOS 17,老项目怎么办呢?于是就有了这篇 老项目适配 #Preview 预览 的文章,…...

高等代数笔记—域与一元多项式

域与环 数域 F F F&#xff1a;至少包含两个元素且对加减乘除运算封闭的复数集合 F F F&#xff0c;其中作除运算时除数不为0。 封闭&#xff1a;集合 F F F中的两个元素作某一运算的结果仍属于集合 F F F&#xff0c;则称 F F F对该运算封闭。 Q , R , C \mathbb{Q}, \mathbb…...

【C语言设计模式学习笔记1】面向接口编程/简单工厂模式/多态

面向接口编程可以提供更高级的抽象&#xff0c;实现的时候&#xff0c;外部不需要知道内部的具体实现&#xff0c;最简单的是使用简单工厂模式来进行实现&#xff0c;比如一个Sensor具有多种表示形式&#xff0c;这时候可以在给Sensor结构体添加一个enum类型的type&#xff0c;…...

2.Python基础知识:注释、变量以及数据类型、标识符和关键字、输入函数、输出函数、运算符、程序类型转换

1. 注释 注释是用来解释代码&#xff0c;增强代码可读性的部分。在 Python 中&#xff0c;注释分为单行注释和多行注释。 单行注释&#xff1a;以 # 开头&#xff0c;后面的内容都被视为注释。 # 这是一个单行注释 print("Hello, World!") # 输出 "Hello, Wor…...

介绍10个比较优秀好用的Qt相关的开源库

记录下比较好用的一些开源库 1. Qt中的日志库“log4qt” log4qt 是一个基于 Apache Log4j 设计理念的 Qt 日志记录库&#xff0c;它为 Qt 应用程序提供了强大而灵活的日志记录功能。Log4j 是 Java 领域广泛使用的日志框架&#xff0c;log4qt 借鉴了其优秀的设计思想&#xff…...

利用Muduo库实现简单且健壮的Echo服务器

一、muduo网络库主要提供了两个类&#xff1a; TcpServer&#xff1a;用于编写服务器程序 TcpClient&#xff1a;用于编写客户端程序 二、三个重要的链接库&#xff1a; libmuduo_net、libmuduo_base、libpthread 三、muduo库底层就是epoll线程池&#xff0c;其好处是…...

渗透测试之文件包含漏洞 超详细的文件包含漏洞文章

目录 说明 通常分为两种类型&#xff1a; 本地文件包含 典型的攻击方式1&#xff1a; 影响&#xff1a; 典型的攻击方式2&#xff1a; 包含路径解释&#xff1a; 日志包含漏洞&#xff1a; 操作原理 包含漏洞读取文件 文件包含漏洞远程代码执行漏洞: 远程文件包含…...

高性能 :DeepSeek-V3 inference 推理时反量化实现 fp8_cast_bf16

FP8 (8 bits) & FP16 (16 bits) FP8 和 BF16 都是浮点数格式&#xff08;floating-point formats&#xff09;&#xff0c;float通过科学计数法表示数据&#xff0c;float [符号位指数位系数位] FP8 (8 bits)&#xff1a;SEEEMMMMFP16 (16 bits)&#xff1a;SEEEEEMMMMM…...

kakailio官网推荐的安装流程ubuntu 22.04

https://kamailio.org/docs/tutorials/6.0.x/kamailio-install-guide-git/ # 非必须项 wget -O- https://deb.kamailio.org/kamailiodebkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/kamailio.gpg在/etc/apt/sources.list文件追加以下内容 deb [signed-by/usr/sh…...

能否通过蓝牙建立TCP/IP连接来传输数据

前言&#xff1a; 最近在做一个项目时&#xff0c;产生了一个疑问&#xff1a;能否通过蓝牙建立TCP/IP连接来传输数据 查阅了一些文章&#xff0c;可以得出结论&#xff1a;不行 下面是我截取的两篇个人认可的文章的回答&#xff1a; 文章一&#xff1a; 蓝牙是一种短距离无…...

git基础使用--1--版本控制的基本概念

文章目录 git基础使用--1--版本控制的基本概念1.版本控制的需求背景&#xff0c;即为啥需要版本控制2. 集中式版本控制SVN3. 分布式版本控制 Git4. SVN和Git的比较 git基础使用–1–版本控制的基本概念 1.版本控制的需求背景&#xff0c;即为啥需要版本控制 先说啥叫版本&…...

高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案

目录 一、Ollama 介绍 二、Ollama下载 2.1 官网下载 2.2 GitHub下载 三、模型库 四、Ollmal 使用 4.1 模型运行&#xff08;下载&#xff09; 4.2 模型提问 五、Ollama 常用命令 相关推荐 一、Ollama 介绍 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&…...

高级java每日一道面试题-2025年01月30日-框架篇[SpringBoot篇]-如何理解 Spring Boot 配置加载顺序 ?

如果有遗漏,评论区告诉我进行补充 面试官: 如何理解 Spring Boot 配置加载顺序 ? 我回答: 在 Java 高级面试中讨论 Spring Boot 配置加载顺序时&#xff0c;理解其机制对于有效管理和调试应用程序配置至关重要。Spring Boot 通过一系列预定义的规则来确定如何加载和覆盖配置…...

代码随想录day06

242.有效的字母异位词 刚学哈希表想着使用unordered_set来实现&#xff0c;结果无法通过&#xff0c;原因是对字母异位词理解有问题&#xff0c;字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语&#xff0c;并使用所有原字母一次。对字母出现的次数有要求&am…...

C#常用744单词

1.visual 可见的 2.studio 工作室 3.dot 点 4.net 网 5.harp 尖端的&#xff0c;锋利的。 6.amework 骨架&#xff0c;构架&#xff0c;框架 7.beta 测试版&#xff0c;试用版 8.XML&#xff08;全称&#xff1a;eXtensible Markup Language&#xff09…...

14.PPT:中国注册税务师协会宣传【26】

目录 NO12 NO3/4/5​ NO678​ 【文本框水平/垂直居中】【文本框内容水平/垂直居中】 NO12 坑&#xff1a;注意❗Word文档的PPt素材.docx的标题大纲是混乱的&#xff0c;虽然他设置了&#xff0c;所以我们需要重新设置 设计→主题视图→幻灯片母版→删除版式插入logo NO3/4…...

Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 比赛信息管理 看板展示 系统管理 摘要 本文使用Python与…...

简单3步部署本地国产大模型DeepSeek大模型

简单3步部署本地国产大模型DeepSeek大模型 DeepSeek是最近非常火的开源大模型&#xff0c;国产大模型 DeepSeek 凭借其优异的性能和对硬件资源的友好性&#xff0c;受到了众多开发者的关注。 无奈&#xff0c;在使用时候deepseek总是提示服务器繁忙&#xff0c;请稍后再试。 …...

Redis常见数据类型与编码方式

⭐️前言⭐️ 本小节围绕Redis中常见的数据类型与编码方式展开。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码及博主日常练习代码均已上传GitHu…...

利用matlab寻找矩阵中最大值及其位置

目录 一、问题描述1.1 max函数用法1.2 MATLAB中 : : :的作用1.3 ind2sub函数用法 二、实现方法2.1 方法一&#xff1a;max和find2.2 方法二&#xff1a;max和ind2sub2.3 方法对比 三、参考文献 一、问题描述 matlab中求最大值可使用函数max&#xff0c;对于一维向量&#xff0…...

解锁云电脑爽玩TGA游戏,ToDesk、海马云等多款云电脑游戏横测

作为一名游戏爱好者&#xff0c;我深入研究了云电脑技术在游戏娱乐中的应用。通过对比传统游戏机与云电脑的成本效益&#xff0c;我发现云电脑以其低成本和灵活性脱颖而出。我以自身为例&#xff0c;分析了云电脑如何满足对游戏体验的高要求。在测评中&#xff0c;我选择了ToDe…...

蓝桥杯思维训练(五)

文章目录 子集II1191.K次串联后最大子数组之和 子集II 子集II 思路分析&#xff1a; 求解子集的问题的关键就是&#xff0c;通过递归与回溯&#xff0c;我们就是得确定以某个元素开始的子集&#xff0c;对于这个题目来说&#xff0c;比较麻烦的一点就是&#xff0c;存在重复的…...

kaggle视频行为分析1st and Future - Player Contact Detection

这次比赛的目标是检测美式橄榄球NFL比赛中球员经历的外部接触。您将使用视频和球员追踪数据来识别发生接触的时刻&#xff0c;以帮助提高球员的安全。两种接触&#xff0c;一种是人与人的&#xff0c;另一种是人与地面&#xff0c;不包括脚底和地面的&#xff0c;跟我之前做的这…...

2025 CCF BDCI|“基于TPU平台的OCR模型性能优化”一等奖作品

2024年12月&#xff0c;中国计算机学会在海南博鳌成功举办了第十二届CCF大数据与计算智能大赛&#xff08;简称2024 CCF BDCI&#xff09;。本届比赛的算能赛道吸引了1748名选手报名&#xff0c;经过激烈角逐&#xff0c;北京航空航天大学的“常务副SOTA”团队脱颖而出&#xf…...

结合深度学习、自然语言处理(NLP)与多准则决策的三阶段技术框架,旨在实现从消费者情感分析到个性化决策

针对电商个性化推荐场景的集成机器学习和稳健优化三阶段方案。 第一阶段:在线评论数据处理&#xff0c;利用深度学习和自然语言处理技术进行特征挖掘&#xff0c;进而进行消费者情感分析&#xff0c;得到消费者偏好 在第一阶段&#xff0c;我们主要关注如何通过深度学习和自然语…...

Linux系统安装Nginx详解(适用于CentOS 7)

目录 1. 更新系统包 2. 安装EPEL仓库 3. 安装Nginx 4. 启动Nginx服务 5. 设置Nginx开机自启 6. 检查Nginx状态 7. 配置防火墙 8. 访问Nginx默认页面 9. 配置Nginx&#xff08;可选&#xff09; 10. 重启Nginx 解决步骤 1. 检查系统版本 2. 移除错误的 Nginx 仓库 …...

Qt常用控件 输入类控件

文章目录 1.QLineEdit1.1 常用属性1.2 常用信号1.3 例子1&#xff0c;录入用户信息1.4 例子2&#xff0c;正则验证手机号1.5 例子3&#xff0c;验证输入的密码1.6 例子4&#xff0c;显示密码 2. QTextEdit2.1 常用属性2.2 常用信号2.3 例子1&#xff0c;获取输入框的内容2.4 例…...

[LeetCode]全排列I,II

全排列I 给定一个不含重复数字的整数数组 nums &#xff0c;返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2&#xff1a; 输入&#xff1…...

力扣.270. 最接近的二叉搜索树值(中序遍历思想)

文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的中序遍历) 本题的难点在于可能存在多个答案&#xff0c;并且要返回最小的那一个&#xff0c;为了解决这个问题&#xff0c;我门则要利用上二叉搜索树中序遍历为有序序列的特性&#xff0c;具体到代码中&a…...

Spring 核心技术解析【纯干货版】- VIII:Spring 数据访问模块 Spring-Tx 模块精讲

在企业级开发中&#xff0c;事务管理是保障数据一致性和完整性的重要手段。Spring 作为 Java 生态中广泛使用的框架&#xff0c;其事务管理模块&#xff08;Spring-Tx&#xff09;不仅提供了强大的功能&#xff0c;还极大地简化了开发者在不同技术栈中的事务处理工作。无论是编…...

Vue混入(Mixins)与插件开发深度解析

Vue混入&#xff08;Mixins&#xff09;与插件开发深度解析 Vue混入&#xff08;Mixins&#xff09;与插件开发深度解析1. Vue混入&#xff08;Mixins&#xff09;核心概念1.1 什么是混入1.1.1 本质定义与技术定位1.1.2 混入与相关概念的对比1.1.3 适用场景分析1.1.4 设计哲学与…...

Linux里的容器被OOM killed的两种情况

生产上遇到过几次容器实例被OOM的现象&#xff0c;总结一下LInux OOM的两种触发条件。我的虚拟机是ubuntu 24.0.4版本&#xff0c;分配4G内存&#xff0c;在我的虚拟机上复现这两种case。 一 宿主机物理内存不够 当linux上所有应用程序的内存需求加起来超出了物理内存&#x…...

十一、CentOS Stream 9 安装 Docker

一、Docker 环境安装 1、软件源(仓库)信息 使用如下命令可列出当前系统配置的所有软件源(仓库)信息 # 列出所有软件源 dnf repolist 这表明系统有三个仓库 AppStream 、 BaseOS、Extras-Common 被启用 2、配置软件源镜像 使用如下命令可配置 Docker 软件包下载的镜像地址 …...

【数据结构】链表应用-链表重新排序

重新排序 反转链表预期实现思路解题过程code力扣代码核心代码完整代码 总结 删除链表中间节点代码解惑 链表重新排序题目描述解题思路解题过程复杂度代码力扣代码完整代码 反转链表 预期实现 思路 你选用何种方法解题&#xff1f; 我选用了迭代法来反转链表。这是一种经典且高…...

e2studio开发RA2E1(9)----定时器GPT配置输入捕获

e2studio开发RA2E1.9--定时器GPT配置输入捕获 概述视频教学样品申请硬件准备参考程序源码下载选择计时器时钟源UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()printf输出重定向到串口定时器输入捕获配…...

qt使用MQTT协议连接阿里云demo

qt使用Mqtt协议连接阿里云。 在配置好qt关于MQTT的环境之后&#xff0c;主要就是根据MQTT的连接参数进行连接即可。 环境配置推荐链接QT编译并部署QtMqtt相关环境跑测demo【超详细教程】_mqtt qt开发教程-CSDN博客 连接核心代码,主要就是根据阿里云的MQTT相关参数进行配置实现连…...

Python分享20个Excel自动化脚本

在数据处理和分析的过程中&#xff0c;Excel文件是我们日常工作中常见的格式。通过Python&#xff0c;我们可以实现对Excel文件的各种自动化操作&#xff0c;提高工作效率。 本文将分享20个实用的Excel自动化脚本&#xff0c;以帮助新手小白更轻松地掌握这些技能。 1. Excel单…...

DNN(深度神经网络)近似 Lyapunov 函数

import torch import torch.nn as nn import torch.optim as optim import matplotlib.pyplot as plt # from torchviz import make_dot import torchviz# 1. Lyapunov 函数近似器&#xff08;MLP 结构&#xff09; class LyapunovNet(nn.Module):def __init__(self, input_dim…...