DeepSeek-R1:通过强化学习激励大语言模型的推理能力
摘要
本文介绍了我们的第一代推理模型,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 以 及六个稠密模型(1.5B、7B、8B、14B、32B、70B),这六个稠密模型是使用 DeepSeek-R1 对 Qwen 和 Llama 蒸馏而来。
1 简介
近年来,大语言模型(LLMs)正在经历快速的迭代和进化,并正在逼近通用人工智能(AGI)。 最近,后训练已成为完整训练流程中的一个重要组成部分。研究表明,它可以提高推理任务的准确 性,与社会价值观保持对齐,并适应用户偏好,同时相较于预训练所需的计算资源相对较少。在推理能 力方面,OpenAI 的 o1 系列模型通过增加思维链推理过程的长度,首次引入了推理时扩展的方法。这种 方法在数学、编程和科学推理等多种推理任务中,取得了显著的进步。然而,有效的测试时扩展仍然是 社区面临的一个未解问题。之前的一些研究探索了各种方法,包括基于过程的奖励模型、强化学习,以 及蒙特卡罗树搜索和束搜索等搜索算法。
然而,这些方法都未能实现与 OpenAI 的 o1 系列模型相当的通 用推理性能。
在本文中,我们迈出了提升语言模型推理能力的第一步,也就是采用纯粹的强化学习。我们的目标 是探索大语言模型在没有任何监督数据的情况下发展推理能力的潜力,重点关注它们通过纯粹的强化学 习过程的自我进化。具体而言,我们使用 DeepSeek-V3-Base 作为基础模型,并采用 GRPO 作为强化学习 框架,以提高模型在推理方面的性能。在训练过程中,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。在强化学习过程接近收敛时,我们通过对强化学习训练得到的检查 点进行拒绝采样来创建新的监督微调(SFT)数据,并结合来自 DeepSeek-V3 的监督数据,这些数据涉及 写作、事实问答和自我认知等领域,然后重新训练 DeepSeek-V3-Base 模型。在使用新数据对模型进行微 调后,将所有场景的提示词考虑进来,对检查点进行额外的强化学习训练。经过这些步骤,我们获得了 一个称为 DeepSeek-R1 的检查点,其性能与 OpenAI-o1-1217 相当。
我们进一步探索从 DeepSeek-R1 到更小的稠密模型的蒸馏。以 Qwen2.5-32B 作为基础模型,直接使 用 DeepSeek-R1 对 Qwen2.5-32B 进行蒸馏的效果优于使用强化学习对 Qwen2.5-32B 进行训练的效果。这 表明,大型基础模型(DeepSeek-R1)所发现的推理模式对于提高推理能力至关重要。我们已经将蒸馏后 的 Qwen 和 Llama 系列开源。值得注意的是,我们的 14B 蒸馏模型在推理基准测试中大幅超越了最先进 的开源模型 QwQ-32B-Preview ,而蒸馏后的 32B 和 70B 模型则在稠密模型中的推理基准测试中创下了新 纪录。
1.1 贡献
后训练:对基础模型进行大规模强化学习
• 我们直接使用强化学习对基础模型进行训练,而不依赖于监督微调(SFT)作为前置步骤。这种方法 使模型能够探索思维链(CoT)以解决复杂问题,从而发展出了 DeepSeek-R1-Zero。DeepSeek-R1-Zero 展现了自我验证、反思和生成长思维链的能力,标志着研究社区的一个重要里程碑。值得注意的是, 在公开发表的研究中,我们首次验证了大语言模型的推理能力可以仅通过强化学习来激励,而无需 使用监督微调这一手段。这一突破为大语言模型领域未来的进展铺平了道路。
• 我们介绍了开发 DeepSeek-R1 的流程。该流程包含两个强化学习阶段,旨在发现改进的推理模式并 与人类偏好对齐,以及两个监督微调(SFT)阶段,作为模型推理和非推理能力的基础。我们相信, 这一流程将通过创造更好的模型来惠及行业。
蒸馏:小模型也可以很强大
• 我们证明了大型模型的推理模式可以蒸馏到更小的模型中,从而在性能上优于通过强化学习发现的 小模型的推理模式。开源的 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)DeepSeek-R1 在 AIME 2024 中达到了 79.8% 的 Pass@1 分数,稍微超过了 OpenAIo1-1217。在 MATH-500 中,它取得了令人印象深刻的 97.3% 分数,表现与 OpenAI-o1-1217 相当, 并显著优于其他模型。
(2)在与编程相关的任务中,DeepSeek-R1 在代码竞赛任务中表现出专家水 平,获得了 2,029 的 Elo 评级,超过了 96.3% 的人类参与者。在工程相关任务中,DeepSeek-R1 的 表现略优于 DeepSeek-V3,这可能会在实际任务中帮助开发者。
• 知识:在 MMLU、MMLU-Pro 和 GPQA Diamond 等基准测试中,DeepSeek-R1 取得了优秀的结果,得 分分别为 90.8%(MMLU)、84.0%(MMLU-Pro)和 71.5%(GPQA Diamond),显著超越了 DeepSeek-V3。 尽管在这些基准测试中的表现略低于 OpenAI-o1-1217,DeepSeek-R1 仍然超过了其他闭源模型,展 示了其在教育任务中的竞争优势。在事实基准测试 SimpleQA 中,DeepSeek-R1 超越了 DeepSeek-V3, 证明了其处理基于事实查询的能力。在这个基准测试中,OpenAI-o1 也超过了 4o,呈现出类似的趋 势。
• 其它:DeepSeek-R1 在多种任务中表现出色,包括创意写作、一般问答、编辑、摘要等。它在 AlpacaEval 2.0 上取得了 87.6% 的长度控制胜率,在 ArenaHard 上的胜率为 92.3%,展示了其智能处理非考试 导向查询的强大能力。此外,DeepSeek-R1 在需要长上下文理解的任务中表现优异,显著超越了 DeepSeek-V3 在长上下文基准测试中的表现。
2 方法
2.1 概述
以往的研究在很大程度上依赖于大量的监督数据来提升模型性能。在本研究中,我们证明了即使不 使用监督微调(SFT)作为冷启动,推理能力也可以通过大规模的强化学习显著提高。此外,通过加入少 量的冷启动数据,性能还可以进一步提升。在接下来的部分中,我们将介绍:(1)DeepSeek-R1-Zero,它 直接将强化学习应用于基础模型,而不使用任何监督微调数据;(2)DeepSeek-R1,它从一个经过数千个 思维链(CoT)示例微调的检查点开始应用强化学习;(3)将 DeepSeek-R1 的推理能力蒸馏到小型密集模 型中。
2.2 DeepSeek-R1-Zero:在基础模型上进行强化学习
强化学习在推理任务中显示出了显著的有效性,这在我们之前的研究中得到了证明。然而,这些研 究在很大程度上依赖于监督数据,而收集这些数据耗时较长。在本节中,我们探讨了大语言模型在没有 任何监督数据的情况下发展推理能力的潜力,重点关注它们通过纯粹的强化学习过程的自我进化。我们将首先简要概述我们的强化学习算法,然后展示一些令人兴奋的结果,希望这能为社区提供有价值的见 解。
2.2.1 强化学习算法
2.2.2 奖励模型
奖励是训练信号的来源,决定了强化学习的优化方向。为了训练 DeepSeek-R1-Zero,我们采用了一 种基于规则的奖励系统,主要由两种类型的奖励组成:
• 准确性奖励:准确性奖励模型评估响应是否正确。例如,对于具有确定性结果的数学问题,模型需 要以指定格式(例如,放在框内)提供最终答案,从而实现可靠的基于规则的正确性验证。类似地, 对于 LeetCode 问题,可以使用编译器根据预定义的测试用例生成反馈。
• 格式奖励:除了准确性奖励模型,我们还采用格式奖励模型,要求模型将其思考过程放在 ‘’ 和 ‘’ 标签之间。
在开发 DeepSeek-R1-Zero 时,我们没有应用结果或过程神经奖励模型,因为我们发现神经奖励模型 在大规模强化学习过程中可能会遭遇奖励黑客问题,并且重新训练奖励模型需要额外的训练资源,这使 整个训练流程变得更加复杂。
2.2.3 训练模板
为了训练 DeepSeek-R1-Zero,我们首先设计了一个简单的模板,指导基础模型遵循我们指定的指令。 如表 1 所示,该模板要求 DeepSeek-R1-Zero 首先生成推理过程,然后给出最终答案。我们故意将约束限 制在这种结构格式上,避免任何内容特定的偏见——例如,强制要求反思性推理或推广特定的解决问题 策略——以确保我们能够准确观察模型在强化学习过程中的自然进展。
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 相当的性能水平。这一显著的改进突显了我们强化学习算法在优化模型性能方 面的有效性。 表 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 自然获得了解决 日益复杂的推理任务的能力。这种计算范围从生成数百到数千个推理标记,使模型能够更深入地探索和 完善其思考过程。
这一自我进化过程中最显著的一个方面是,随着测试时间计算的增加,复杂行为的出现。例如,反思 行为——模型重新审视和重新评估其之前的步骤——以及探索替代问题解决方法的能力自发地产生。这 些行为并不是显式编程的,而是模型与强化学习环境互动的结果。这种自发的发展显著增强了 DeepSeekR1-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 不同,为了防止基础模型在强化学习训练的早期处于不稳定的冷启动阶段,对 于 DeepSeek-R1,我们构建并收集了一小部分思维链(CoT)数据,来把模型微调成最初的强化学习演员。
为了收集这些数据,我们探索了几种方法:使用长思维链推理作为示例的少量提示,直接提示模型 生成详细的答案并进行反思和验证,以人类可读的格式来收集 DeepSeek-R1-Zero 的输出,以及通过人工 标注者对结果进行后处理和精炼。
在这项工作中,我们收集了数千条冷启动数据,将 DeepSeek-V3-Base 微调成强化学习的起点。与 DeepSeek-R1-Zero 相比,冷启动数据的优势包括:
• 可读性:DeepSeek-R1-Zero 的一个主要限制是其内容通常不适合人类阅读。响应可能混合多种语言, 或者缺乏 markdown 格式来突出显示用户的答案。相比之下,在为 DeepSeek-R1 创建冷启动数据时, 我们设计了一种可读的模式,包括每个响应末尾的摘要,并过滤掉不适合阅读的响应。在这里,我 们将输出格式定义为 |special_token||special_token|,其中推理过程是 针对查询的思维链(CoT),摘要用于总结推理结果。
• 潜力:通过精心设计带有人类先验的冷启动数据模式,我们观察到相较于 DeepSeek-R1-Zero 更好的 性能。我们相信,迭代训练是推理模型更好的方法。
2.3.2 推理导向的强化学习
在使用冷启动数据对 DeepSeek-V3-Base 进行微调后,我们应用与 DeepSeek-R1-Zero 模型相同的大规 模强化学习训练过程。此阶段重点提升模型的推理能力,特别是在编码、数学、科学和逻辑推理等推理密 集型任务中,这些任务涉及明确定义的问题和清晰的解决方案。在训练过程中,我们观察到思维链(CoT) 常常表现出多种语言的混合,尤其是在强化学习提示涉及多种语言时。为了缓解语言混合的问题,我们 在强化学习训练中引入了语言一致性奖励,该奖励计算思维链中目标语言单词的比例。尽管消融实验表 明,这种对齐会导致模型性能的轻微下降,但该奖励与人类偏好一致,使其更具可读性。最后,我们通过 直接相加推理任务的准确性和语言一致性奖励来形成最终奖励。然后,我们在微调后的模型上进行强化 学习训练,直到其在推理任务上达到收敛。
2.3.3 拒绝采样和监督微调
当面向推理的强化学习收敛时,我们利用生成的检查点收集后续轮次的监督微调(SFT)数据。与最 初主要关注推理的冷启动数据不同,此阶段纳入了来自其他领域的数据,以增强模型在写作、角色扮演 和其他通用任务中的能力。具体而言,我们生成数据并按以下方式微调模型。
推理数据 我们策划推理提示,并通过对上述强化学习训练的检查点进行拒绝采样来生成推理轨迹。在前 一个阶段,我们只包含了可以通过基于规则的奖励进行评估的数据。然而,在这一阶段,我们通过纳入额 外的数据来扩展数据集,其中一些数据使用生成奖励模型,通过将真实答案和模型预测输入 DeepSeek-V3 进行判断。
此外,由于模型输出有时混乱且难以阅读,我们过滤掉了包含混合语言、长段落和代码块的链推理。 对于每个提示,我们采样多个响应,仅保留正确的响应。总共,我们收集了大约 60 万个与推理相关的训 练样本。
无推理数据 对于非推理类数据,例如写作、事实问答、自我认知和翻译,我们采用 DeepSeek-V3 的流 程,并复用部分 DeepSeek-V3 的监督微调数据集。对于某些非推理任务,我们会调用 DeepSeek-V3 生成 潜在的思维链,然后再通过提示回答问题。然而,对于较简单的查询,例如“你好”,我们不会在响应中提 供思维链。
最终,我们收集了大约 20 万个与推理无关的训练样本。
我们使用上述约 80 万个样本的数据集对 DeepSeek-V3-Base 进行了两个周期的微调。
2.3.4 针对所有场景的强化学习
为了进一步使模型与人类偏好对齐,我们实施了第二阶段的强化学习,旨在提高模型的有用性和无 害性,同时增强其推理能力。具体来说,我们结合奖励信号和多样化的提示分布来训练模型。
对于推理类数据,我们遵循了 DeepSeek-R1-Zero 中概述的方法,该方法利用基于规则的奖励来指导 数学、代码和逻辑推理领域的学习过程。
对于通用数据,我们采用奖励模型来捕捉复杂和微妙场景中的人类偏好。我们在 DeepSeek-V3 流程 的基础上,采用了类似的偏好对和训练提示分布。在有用性方面,我们专注于最终总结,确保评估强调 响应对用户的实用性和相关性,同时尽量减少对底层推理过程的干扰。在无害性方面,我们评估模型的 整个响应,包括推理过程和总结,以识别并减轻生成过程中可能出现的任何潜在风险、偏见或有害内容。
最终,通过整合奖励信号和多样化的数据分布,我们能够训练出一个在推理方面表现出色,同时优 先考虑有用性和无害性的模型。
2.4 蒸馏:为小模型赋能推理能力
为了让更高效的小模型像 DeepSeek-R1 具备推理能力,我们直接使用 DeepSeek-R1 整理的 80 万个样 本对开源模型(如 Qwen 和 Llama)进行了微调,具体细节见 §2.3.3。
我们的研究结果表明,这种直接的蒸馏方法显著提升了小模型的推理能力。我们使用的基础模型包 括 Qwen2.5-Math-1.5B、Qwen2.5-Math-7B、Qwen2.5-14B、Qwen2.5-32B、Llama-3.1-8B 和 Llama-3.3-70BInstruct。我们选择 Llama-3.3 是因为其推理能力略优于 Llama-3.1。
对于蒸馏后的模型,我们仅使用了监督微调,并未加入强化学习阶段,尽管引入强化学习可以显著 提升模型性能。我们的主要目标是展示蒸馏技术的有效性,而将强化学习阶段的探索留给更广泛的研究 社区。
3 实验
基准测试 我们在以下基准上评估模型:MMLU、MMLU-Redux、MMLU-Pro、C-Eval、CMMLU、IFEval、 FRAMES、GPQA Diamond、SimpleQA、C-SimpleQA、SWE-Bench Veriffed、Aider、LiveCodeBench、Codeforces、 中国高中数学奥林匹克(CNMO 2024)以及美国数学邀请赛 2024(AIME 2024)。
除了标准基准测试外,我们还使用大语言模型作为评判者对开放式生成任务进行评估。具体来说,我 们遵循 AlpacaEval 2.0 和 Arena-Hard 的原始配置,利用 GPT-4-Turbo-1106 作为评判者进行成对比较。在 这里,我们仅将最终总结提供给评估,以避免长度偏差。
对于蒸馏模型,我们报告了在 AIME 2024、MATH-500、GPQA Diamond、Codeforces 和 LiveCodeBench 上的代表性结果。
评估提示 遵循 DeepSeek-V3 的设置,标准基准测试(如 MMLU、DROP、GPQA Diamond 和 SimpleQA) 使用 simple-evals 框架中的提示进行评估。对于 MMLU-Redux,我们采用 Zero-Eval 提示格式,并在零样 本设置下进行评估。对于 MMLU-Pro、C-Eval 和 CLUE-WSC,由于原始提示是少样本的,我们略微修改 了提示以适应零样本设置。少样本中的思维链(CoT)可能会影响 DeepSeek-R1 的性能。
其他数据集遵循其原始评估协议,并使用其创建者提供的默认提示。对于代码和数学基准测试,HumanEvalMul 数据集涵盖了八种主流编程语言(Python、Java、C++、C#、JavaScript、TypeScript、PHP 和 Bash)。 LiveCodeBench 上的模型性能使用思维链(CoT)格式进行评估,数据收集时间为 2024 年 8 月至 2025 年 1 月。Codeforces 数据集使用 10 场 Div.2 比赛的题目以及专家编写的测试用例进行评估,随后计算预期评 分和参赛者百分比。SWE-Bench 的验证结果通过无代理框架获得。AIDER 相关基准测试使用“diff”格式进 行测量。
DeepSeek-R1 的输出在每个基准测试中最多限制为 32,768 个 token。
基线模型 我们对多个强基线模型进行了全面评估,包括 DeepSeek-V3、Claude-Sonnet-3.5-1022、GPT-4o0513、OpenAI-o1-mini 和 OpenAI-o1-1217。由于在中国大陆访问 OpenAI-o1-1217 的 API 较为困难,我们 根据官方报告记录了其性能。
对于蒸馏模型,我们还比较了开源模型 QwQ-32B-Preview。
评估设置 我们将模型的最大生成长度设置为 32,768 个 token。我们发现,使用贪心解码来评估长输出 推理模型会导致更高的重复率,并且不同检查点之间的变异性较大。因此,我们默认使用 pass@?? 评估方 法,并在非零温度下报告 pass@1。具体来说,我们使用采样温度为 0.6,top-?? 值为 0.95,为每个问题生成 k 个响应(通常在 4 到 64 之间,取决于测试集大小)。然后,pass@1 的计算公式为:
3.1 DeepSeek-R1 的评估
对于教育导向的知识基准测试,例如 MMLU、MMLU-Pro 和 GPQA Diamond,DeepSeek-R1 相较于 DeepSeek-V3 展现出更优越的表现。这一改进主要归因于在 STEM 相关问题上的准确性提升,通过大规 模强化学习取得了显著的进展。此外,DeepSeek-R1 在 FRAMES 这一长上下文依赖的问答任务上表现出 色,展现了其强大的文档分析能力。这突显了推理模型在 AI 驱动的搜索和数据分析任务中的潜力。在事 实基准测试 SimpleQA 上,DeepSeek-R1 超越了 DeepSeek-V3,展示了其处理基于事实的查询的能力。在 这一基准测试中,OpenAI-o1 也超越了 GPT-4o。然而,DeepSeek-R1 在中文 SimpleQA 基准测试中的表现 逊色于 DeepSeek-V3,主要是因为其在安全强化学习后倾向于拒绝回答某些查询。如果没有安全强化学习,DeepSeek-R1 的准确率可以超过 70
DeepSeek-R1 在 IF-Eval 上也取得了令人印象深刻的结果,该基准旨在评估模型遵循格式指令的能力。 这些改进与在监督微调(SFT)和强化学习训练的最后阶段纳入指令遵循数据有关。此外,在 AlpacaEval2.0 和 ArenaHard 上也观察到了显著的表现,表明 DeepSeek-R1 在写作任务和开放域问答方面的优势。它显 著超越 DeepSeek-V3 的表现强调了大规模强化学习的泛化优势,这不仅提升了推理能力,还改善了在多 种领域的表现。
此外,DeepSeek-R1 生成的摘要长度简洁,在 ArenaHard 上平均为 689 个 token,在 AlpacaEval 2.0 上 为 2,218 个字符。这表明 DeepSeek-R1 在基于 GPT 的评估中避免了引入长度偏差,进一步巩固了其在多 个任务中的鲁棒性。
在数学任务上,DeepSeek-R1 的表现与 OpenAI-o1-1217 相当,远超其他模型。在编码算法任务上,如 LiveCodeBench 和 Codeforces,也观察到了类似的趋势,推理为重点的模型在这些基准测试中占据主导地 位。在工程导向的编码任务中,OpenAI-o1-1217 在 Aider 上超越了 DeepSeek-R1,但在 SWE Veriffed 上的 表现相当。我们相信,DeepSeek-R1 在下一版本中的工程性能将有所提升,因为目前相关的强化学习训练 数据仍然非常有限。
3.2 蒸馏模型的评估
如表 5 所示,简单地使用 DeepSeek-R1 的输出来蒸馏 DeepSeek-R1-7B ,使得高效的 DeepSeek-R1-7B (即 DeepSeek-R1-Distill-Qwen-7B,以下简写相同)在各方面超越了像 GPT-4o-0513 这样的非推理模型。 DeepSeek-R1-14B 在所有评估指标上超过了 QwQ-32B-Preview,而 DeepSeek-R1-32B 和 DeepSeek-R1-70B 在大多数基准测试中显著超过了 o1-mini。这些结果展示了蒸馏的强大潜力。此外,我们发现将强化学习 应用于这些蒸馏模型可以带来显著的进一步提升。我们认为这值得进一步探索,因此在此仅展示简单的 通过监督微调来蒸馏模型的结果。
4 讨论
4.1 蒸馏 v.s. 强化学习
在第 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 是一种合理的方法,可以引导模型朝着更好的方式解决推理任务。然而,在 实践中,PRM 存在三个主要限制,可能会阻碍其最终成功。
首先,在一般推理中,明确地定义一个细粒度步骤是具有挑战性的。
其次,确定当前中间步骤是否正确是一项艰巨的任务。使用模型进行自动标注可能无法产生令人满 意的结果,而手动标注又不利于规模化。
第三,一旦引入基于模型的 PRM,就不可避免地会导致奖励黑客行为,而重训练奖励模型需要额外 的训练资源,并使整个训练流程变得复杂。总之,虽然 PRM 在重新排序模型生成的前 N 个响应或辅助引 导搜索方面表现出良好的能力,但与其在我们实验中引入的大规模强化学习过程所增加的计算开销相比, 其优势是有限的。
蒙特卡洛树搜索 (MCTS) 受到 AlphaGo 和 AlphaZero 的启发,我们探索了使用蒙特卡罗树搜索(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 时,我们观察到它对提示词非常敏感。少量示例提示会持续降低 其性能。因此,我们建议用户直接描述问题,并在 zero-shot 设置下指定输出格式,以获得最佳结果。
• 软件工程任务:由于评估时间较长,影响了强化学习过程的效率,大规模的强化学习尚未广泛应用 于软件工程任务。因此,DeepSeek-R1 在软件工程基准测试中并未显示出相较于 DeepSeek-V3 的巨 大改进。未来的版本将通过在软件工程数据上实施拒绝采样或在强化学习过程中引入异步评估来提 高效率。
相关文章:
DeepSeek-R1:通过强化学习激励大语言模型的推理能力
摘要 本文介绍了我们的第一代推理模型,DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是通过大规 模强化学习(RL)训练的模型,在没有使用监督微调(SFT)这个前置步骤的情况下,展示了卓越的推…...
hbase笔记总结1
hbase是nosql的一种,非关系型数据库,not only sql,可处理大规模、高并发的数据,是web2.0以后的产物hbase的扩展性和灵活性更好,而且筛选能力相较于MySQL更优nosql的四大特点: 灵活的数据模型 (1…...
关于C++中static_cast、const_cast、dynamic_cast的简单介绍
在C中,static_cast、const_cast 和 dynamic_cast 是用于类型转换的关键字,它们的行为和适用场景有显著区别。以下是它们的核心差异和用法总结: 1. static_cast 用途 用于明确且安全的类型转换,通常用于编译时已知类型关系的场景…...
计算机毕业设计 ——jspssm513Springboot 的小区物业管理系统
作者:程序媛9688 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题)…...
详解Tomcat下载安装以及IDEA配置Tomcat(2023最新)
目录 步骤一:首先确认自己是否已经安装JDK步骤二:下载安装Tomcat步骤三:Tomcat配置环境变量步骤四:验证Tomcat配置是否成功步骤五:为IDEA配置Tomcat 步骤一:首先确认自己是否已经安装JDK jdk各版本通用安…...
端口映射/内网穿透方式及问题解决:warning: remote port forwarding failed for listen port
文章目录 需求:A机器是内网机器,B机器是公网服务器,想要从公网,访问A机器的端口方式:端口映射,内网穿透,使用ssh打洞端口:遇到问题:命令执行成功,但是端口转发…...
2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析
文章目录 试题A: 拼正方形(本题总分:5 分)解析答案试题B: 召唤数学精灵(本题总分:5 分)解析答案试题C: 数字诗意解析答案试题A: 拼正方形(本题总分:5 分) 【问题描述】 小蓝正在玩拼图游戏,他有7385137888721 个2 2 的方块和10470245 个1 1 的方块,他需要从中挑出一些…...
win11编译pytorch cuda128版本流程
Geforce 50xx系显卡最低支持cuda128,torch cu128 release版本目前还没有释放,所以自己基于2.6.0源码自己编译wheel包。 1. 前置条件 1. 使用visual studio installer 安装visual studio 2022,工作负荷选择【使用c的桌面开发】,安装完成后将…...
AI人工智能机器学习之降维和数据压缩
1、概要 本篇学习AI人工智能机器学习之降维和数据压缩,以主成分分析(PCA, Principal Component Analysis)为例,从代码层面讲述机器学习中的降维和数据压缩。 2、降维和数据压缩 - 简介 在机器学习和数据分析中,降维&…...
EasyExcel 使用指南:基础操作与常见问题
文章目录 1. EasyExcel 简介2. 基础操作2.1. 写入 Excel 🔥2.2. 读取 Excel ✅2.3. 使用模板 🎨 3. 常见问题与解决方案3.1. 处理日期格式 📅3.2. 数据写入失败:占位符无法匹配 ❌3.3. 内存溢出:大数据量处理 ⚡3.4. 空…...
本地搭建Koodo Reader书库结合内网穿透打造属于自己的移动图书馆
文章目录 前言1. Koodo Reader 功能特点1.1 开源免费1.2 支持众多格式1.3 多平台兼容1.4 多端数据备份同步1.5 多功能阅读体验1.6 界面简洁直观 2. Koodo Reader安装流程2.1 安装Git2.2 安装Node.js2.3 下载koodo reader 3. 安装Cpolar内网穿透3.1 配置公网地址3.2 配置固定公网…...
Mybatis是如何进行分页的?与Mybatis-plus的区别在哪里?
MyBatis 的分页方式及其与 MyBatis-Plus 的区别可以总结如下: MyBatis 的分页实现 逻辑分页(内存分页) 使用 RowBounds 对象,在查询时传入参数,MyBatis 会在结果集返回后,在内存中手动截取指定范围的数据。…...
MySQL 主从同步配置及操作步骤
主从同步是一种常见的数据复制技术,它通过将主库的数据同步到一个或多个从数据库中来保证数据的一致性。从库通过读取主库的 binlog 文件来获取更新并进行同步。 主从复制的方式有三种: 异步复制:不需要从库确认,主库提交数据后…...
【软考-架构】备战2025软考
新老教材对比 科目1(信息系统综合)考点详解 科目2(系统架构设计案例)考点详解 科目3(系统架构设计论文)考点详解 趋于越来越具体 学习方法推荐 第一阶段 – 基础知识阶段 建议一个半月; 先过…...
基于Spark的电商供应链系统的设计与实现
目录 1.研究背景与意义 2、国内外研究现状 3、相关理论与技术 (一)分布式计算系统Spark (二)数据仓库Hive (三)读取服务器本地磁盘的日志数据Flume (四)分布式消息队列Kafka …...
DaoCloud 亮相 2025 GDC丨开源赋能 AI 更多可能
2025 年 2 月 21 日至 23 日,上海徐汇西岸,2025 全球开发者先锋大会以 “模塑全球,无限可能” 的主题,围绕云计算、机器人、元宇宙等多元领域,探讨前沿技术创新、应用场景拓展和产业生态赋能,各类专业论坛、…...
基于coze+微信小程序实现图片上传并利用大模型解析
项目截图: 实现代码(直接搬去可用) 前提:需要填写你的oss配置coze的api授权配置!!! <template><view class"container"><!-- 高斯模糊背景 --><view class&qu…...
CSS 对齐:深入理解与技巧实践
CSS 对齐:深入理解与技巧实践 引言 在网页设计中,元素的对齐是至关重要的。一个页面中元素的对齐方式直接影响到页面的美观度和用户体验。CSS 提供了丰富的对齐属性,使得开发者可以轻松实现各种对齐效果。本文将深入探讨 CSS 对齐的原理、方法和技巧,帮助开发者更好地掌握…...
Dify部署
Dify部署 安装docker 要在CentOS 7上部署Docker社区版,您可以按照以下步骤进行操作: 卸载旧版本的Docker(如果有): yum remove docker docker-client docker-client-latest docker-common docker-latest docker-l…...
MyBatis-Plus 对比传统 MyBatis 的优势
在现代的 Java 开发中,MyBatis 和 MyBatis-Plus 都是流行的持久层框架。MyBatis 是一个轻量级的 ORM 框架,帮助开发者通过映射文件或注解方式来执行 SQL 操作。MyBatis-Plus 是在 MyBatis 基础上进行的增强,提供了许多简化和优化功能…...
被AWS反撸了,试一下能否申请退还
经过来回几轮沟通,已扣的42美金将退回31美金,未扣的16美金将免除扣款。 31美金的具体计算方法我不知道,对方的回复如下(是了,AWS的客服是用中文回复的): 我理解此结果可能不完全符合您所期望的…...
基于Spring Boot的产业园区智慧公寓管理系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
MySQL 事务笔记
MySQL 事务笔记 目录 事务简介事务操作事务四大特性并发事务问题事务隔离级别总结 事务简介 事务(Transaction)是数据库操作的逻辑单元,由一组不可分割的SQL操作组成。主要用于保证: 多个操作的原子性(要么全部成功…...
SpringBoot 使用 spring.profiles.active 来区分不同环境配置
很多时候,我们项目在开发环境和生产环境的配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境,我们要用生产数据库,这时候,我们可以利用 p…...
# C# 中堆(Heap)与栈(Stack)的区别
在 C# 中,堆和栈是两种不同的内存分配机制,它们在存储位置、生命周期、性能和用途上存在显著差异。理解堆和栈的区别对于优化代码性能和内存管理至关重要。 1. 栈(Stack) 1.1 定义 栈是一种后进先出(LIFO࿰…...
IP---网络类型
这只是IP的其中一块内容-网络类型,IP还有更多内容可以查看IP专栏,前一章内容为访问服务器流程,可通过以下路径查看IP----访问服务器流程-CSDN博客,欢迎指正 2.网络类型 网络类型---根据二层(数据链路层)所…...
jQuery UI API 文档
jQuery UI API 文档 引言 jQuery UI 是一个基于 jQuery 的用户界面库,它提供了丰富的交互式组件和效果,使得网页开发变得更加简单和高效。本文档旨在为开发者提供全面的 jQuery UI API 信息,帮助您更好地理解和应用 jQuery UI。 jQuery UI 简介 什么是 jQuery UI? jQu…...
rust 前端npm依赖工具rsup升级日志
rsup是使用 rust 编写的一个前端 npm 依赖包管理工具,可以获取到项目中依赖包的最新版本信息,并通过 web 服务的形式提供查看、升级操作等一一系列操作。 在前一篇文章中,记录初始的功能设计,自己的想法实现过程。在自己的使用过…...
J-LangChain,用Java实现LangChain编排!轻松加载PDF、切分文档、向量化存储,再到智能问答
Java如何玩转大模型编排、RAG、Agent??? 在自然语言处理(NLP)的浪潮中,LangChain作为一种强大的模型编排框架,已经在Python社区中广受欢迎。然而,对于Java开发者来说,能…...
文档识别-C#中英文文档识别接口-PDF文件内容识别API
文档识别接口可满足用户在数字化转型过程中对文档处理的高效、准确需求。翔云文档识别接口以成熟的文字识别技术、自然语言处理技术、图像识别技术为核心,能够将文档上的非可编辑文本转化为可编辑的数据,从而提升信息处理的速度与实现文档数字化管理的准…...
什么是元数据管理?为什么数据治理的第一步是整理元数据?
什么是元数据管理? 以下是关于元数据管理、数据治理从元数据开始的原因以及数据治理逻辑的简单介绍: 元数据管理 元数据是关于数据的数据,它主要描述了数据的定义、来源、关系、质量、用途等信息。比如在一个学生成绩管理系统中ÿ…...
QSplashScreen --软件启动前的交互
目录 QSplashScreen 类介绍 使用方式 项目中使用 THPrinterSplashScreen头文件 THPrinterSplashScreen实现代码 使用代码 使用效果 QSplashScreen 类介绍 QSplashScreen 是 Qt 中的一个类,用于显示启动画面。它通常在应用程序启动时显示,以向用户显…...
react使用react-quill 富文本插件、加入handlers富文本不显示解决办法
可以调整图片大小 quill-image-resize-module-react 加入插件quill-image-resize-module-reactQuill.register("modules/imageResize", ImageResize); // 注册图片缩放富文本配置中加入如下const quildConfig {toolbar: {container: [["bold", "ital…...
基于vue框架的的银生中学图书管理系统c7b4q(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
系统程序文件列表 项目功能:用户,书籍分类,书籍信息,书籍借阅,书籍归还 开题报告内容 基于Vue框架的的银生中学图书管理系统开题报告 一、项目背景与意义 随着信息技术的飞速发展和教育现代化进程的加快,学校图书管理面临着前所未有的挑战与机遇。银…...
2025年02月27日Github流行趋势
项目名称:aibrix 项目地址url:https://github.com/vllm-project/aibrix 项目语言:Jupyter Notebook 历史star数:2568 今日star数:554 项目维护者:Jeffwan, varungup90, brosoul, nwangfw, kr11 项目简介&am…...
去耦电容的作用详解
在霍尔元件的实际应用过程中,经常会用到去耦电容。去耦电容是电路中装设在元件的电源端的电容,其作用详解如下: 一、基本概念 去耦电容,也称退耦电容,是把输出信号的干扰作为滤除对象。它通常安装在集成电路…...
Vue.js响应式基础
响应式基础 API 参考 本页和后面很多页面中都分别包含了选项式 API 和组合式 API 的示例代码。现在你选择的是 组合式 API。你可以使用左侧侧边栏顶部的“API 风格偏好”开关在 API 风格之间切换。 声明响应式状态 ref() 在组合式 API 中,推荐使用 ref() 函数来声明…...
解决Deepseek“服务器繁忙,请稍后再试”问题,基于硅基流动和chatbox的解决方案
文章目录 前言操作步骤步骤1:注册账号步骤2:在线体验步骤3:获取API密钥步骤4:安装chatbox步骤5:chatbox设置 价格方面 前言 最近在使用DeepSeek时,开启深度思考功能后,频繁遇到“服务器繁忙&am…...
Java SSE流式数据前后端实现
#Java SSE流式数据前后端实现 Java后端实现 RestController public class SSEController {GetMapping(value "/sse/stream", produces MediaType.TEXT_EVENT_STREAM_VALUE)public SseEmitter streamSse() throws InterruptedException, IOException {SseEmitter …...
DeepSeek开源周Day4:三连发!突破 AI 训练瓶颈的立体解决方案,并行计算三剑客DualPipe、EPLB与Profile-data
项目地址: https://github.com/deepseek-ai/DualPipehttps://github.com/deepseek-ai/eplbhttps://github.com/deepseek-ai/profile-data 开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天 (4/5)! 一、背景概述 …...
3-1 WPS JS宏工作簿的新建与保存(批量新建工作簿)学习笔记
************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...
esp8266 rtos sdk开发环境搭建
1. 安装必要的工具 1.1 安装 Git Git 用于从远程仓库克隆代码,你可以从Git 官方网站下载 Windows 版本的安装程序。安装过程中可保持默认设置,安装完成后,在命令提示符(CMD)或 PowerShell 中输入git --version&#…...
Pycharm使用matplotlib出现的问题(1、不能弹出图表 2、图表标题中文不显示)
Pycharm使用matplotlib出现的问题 问题1:Pycharm调试时出现:AttributeError: module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? 排查原因:可能是由于matplotlib后端设置不正确或与运行环境不兼容引…...
【MySql】EXPLAIN执行计划全解析:15个字段深度解读与调优指南
文章目录 一、执行计划核心字段总览二、关键字段深度拆解1. type(访问类型)——查询性能的晴雨表典型场景分析: 2. key_len(索引使用长度)——索引利用率的检测仪计算示例: 3. Extra(附加信息&a…...
学习路程八 langchin核心组件 Models补充 I/O和 Redis Cache
前序 之前了解了Models,Prompt,但有些资料又把这块与输出合称为模型输入输出(Model I/O):这是与各种大语言模型进行交互的基本组件。它允许开发者管理提示(prompt),通过通用接口调…...
Everything——你的文件搜索效率革命
Everything 是一款由 voidtools 开发的文件搜索工具,专为 Windows 系统设计。它以极快的速度和高效的搜索能力著称,能够基于文件名实时定位文件和目录。以下是其主要特点和功能概述: 1. 核心特点 快速搜索:Everything 使用 NTFS…...
【一起学Rust | Tauri2.0框架】单实例应用程序的深入解析:零漏洞实现与优化实战
文章目录 前言一、 单实例应用的意义二、 实现单实例应用的方法1 Windows下的实现1.1 创建命名Mutex1.2 在Tauri应用中集成Mutex检查 2 macOS下的实现2.1 获取Bundle Identifier2.2 检查是否已经有实例在运行 3 Linux下的实现3.1 获取进程列表3.2 检查是否已经有实例在运行 4 在…...
React + TypeScript 数据血缘分析实战
React TypeScript 数据血缘分析实战 目录 技术选型与架构设计核心概念解析基础场景实现 场景一:visx库基础血缘图实现场景二:React-Lineage-DAG企业级方案场景三:动态数据源与复杂交互 TypeScript类型系统深度优化性能优化与工程化实践开源…...
解决 ERROR 1130 (HY000): Host is not allowed to connect to this MySQL server
当使用 MySQL 时,您可能会遇到错误信息“ERROR 1130 (HY000): Host ‘hostname’is not allowed to connect to this MySQL server”这是 MySQL 用于防止未经授权的访问的标准安全特性。实际上,服务器还没有配置为接受来自相关主机的连接。 Common Caus…...
4. 示例:创建带约束的随机地址生成器(范围0x1000-0xFFFF)
文章目录 前言代码示例:运行方法:查看结果:关键功能说明:扩展功能建议: 前言 以下是一个完整的SystemVerilog测试平台示例,包含约束随机地址生成、日志输出和波形生成功能: 代码示例࿱…...