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

理解推理型大语言模型

在这里插入图片描述

构建和改进推理模型的方法与策略

本文描述了构建推理模型的四种主要方法,以及我们如何增强大型语言模型(LLM)的推理能力。我希望这能为你提供有价值的见解,并帮助你了解这一领域快速发展的文献和热潮。

在2024年,LLM领域的专业化趋势愈发明显。除了预训练和微调之外,我们见证了从RAG到代码助手等专门应用的发展。我预计这种趋势将在2025年进一步加速,对特定领域和应用程序的优化将更加突出(即“专业化”)。
请添加图片描述

阶段1至3是开发LLM的通用步骤。阶段4则是针对特定应用场景对LLM进行专业化处理。

推理模型的发展就是这一专业化的体现之一。这意味着我们通过改进使LLM在需要中间步骤解决复杂任务(如谜题、高级数学和编程挑战)方面表现得更好。然而,这种专业化并不能取代其他LLM应用。因为将LLM转变为推理模型也会带来一些缺点,我将在后续内容中讨论这些问题。

为了让你对以下内容有一个初步的了解,在本文中将:

1.解释“推理模型”的含义
2.讨论推理模型的优点和缺点
3.概述DeepSeek R1的方法论
4.描述构建和改进推理模型的四种主要方法
5.分享关于DeepSeek V3和R1发布后大语言模型领域的看法
6.提供在预算有限的情况下开发推理模型的建议

希望本文对您有用,随着人工智能在今年继续快速发展!

我们如何定义“推理模型”?

如果您从事AI(或一般机器学习)工作,您可能熟悉模糊且备受争议的定义。术语“推理模型”也不例外。最终,某人会在论文中对其进行正式定义,但在接下来的一篇论文中又会被重新定义。

在这篇文章中,我将“推理”定义为回答需要复杂多步骤生成的问题的过程,并包含中间步骤。例如,“法国的首都是什么?”这样的事实性问题问答并不涉及推理。相反,像“如果火车以每小时60英里的速度行驶3个小时,它走了多远?”这样的一道题则需要一些简单的推理过程。比如,在得出答案之前,必须认识到距离、速度和时间之间的关系。

请添加图片描述

一个普通的LLM可能只会提供简短的答案(如图左所示),而推理模型通常会包含揭示部分思维过程的中间步骤。(请注意,许多未专门开发用于推理任务的大语言模型也可以在答案中提供中间推理步骤。)大多数现代大型语言模型(LLM)能够进行基本的推理,并能回答诸如“如果一列火车以60英里/小时的速度行驶3小时,它会走多远?”这样的问题。因此,今天当我们提到推理模型时,通常指的是那些擅长更复杂的推理任务的LLM,例如解谜题、猜谜语和数学证明。

此外,当今大多数被标榜为推理模型的LLM在其响应中包含一个“思维”或“思考”过程。LLM是否以及如何真正“思考”是另一个讨论的话题。

在推理模型中的中间步骤可以以两种方式出现。首先,它们可能明确地包含在响应中,如前所述图表所示。其次,一些推理LLM(例如OpenAI的o1)会进行多次迭代,并且这些中间步骤不会显示给用户。

“推理”在两个不同的层面使用:
1)通过多个中间步骤处理输入并生成输出;
2)作为对用户响应的一部分提供某种形式的推理。

我们何时应该使用推理模型?

既然我们已经定义了推理模型,我们现在可以进入更有趣的部分:如何构建和改进LLM以进行推理任务。然而,在深入技术细节之前,考虑实际需要推理模型的情况是很重要的。我们何时需要一个推理模型? 推理模型设计用于处理复杂任务,如解谜、高级数学问题和具有挑战性的编码任务。然而,对于摘要生成、翻译或基于知识的问题回答等较为简单的任务而言,并不需要使用推理模型。事实上,为所有任务都使用推理模型可能会导致效率低下且成本高昂。例如,推理模型通常使用起来更昂贵,表述更为冗长,在某些情况下还可能因为“过度思考”而更容易出错。在这里有一个简单的原则适用:为任务选择合适的工具(或类型的大型语言模型)。

推理模型的关键优势和局限性总结如下图所示。

推理模型的关键优势和劣势。

对DeepSeek训练流程的简要概述

在下一节讨论构建和完善推理模型的四种主要方法之前,我想先简要介绍DeepSeek R1管道,这是根据DeepSeek R1技术报告描述的。该报告既是一个有趣的案例研究,也是一个开发推理大型语言模型的设计蓝图。

需要注意的是,DeepSeek并没有发布单一版本的R1推理模型,而是引入了三个不同的变体:DeepSeek-R1-Zero、DeepSeek-R1和DeepSeek-R1-Distill。

根据技术报告中的描述,我总结了这些模型的发展过程如下图所示。
在下面的图中:

DeepSeeks三种不同的推理模型的开发过程,这些模型在DeepSeek R1技术报告中有所讨论。

接下来,让我们简要回顾一下上面图表所示的过程。更多细节将在下一节中介绍,在那里我们将讨论构建和改进推理模型的四种主要方法。

(1) DeepSeek-R1-Zero: 该模型基于2024年12月发布的671B预训练DeepSeek-V3基础模型进行开发,研究团队通过强化学习(RL)对其进行训练,并使用两种类型的奖励。这种方法被称为“冷启动”训练,因为它没有包括通常作为人类反馈强化学习(RLHF)的一部分的监督微调(SFT)步骤。

(2) DeepSeek-R1: 这是DeepSeek的主要推理模型,在DeepSeek-R1-Zero的基础上构建而成。团队进一步通过额外的SFT阶段和更多的RL训练对其进行改进,从而优化了“冷启动”的R1-Zero模型。

(3) DeepSeek-R1-Distill: 利用前一步骤生成的SFT数据,DeepSeek团队对Qwen和Llama模型进行了微调以增强其推理能力。虽然这并非传统意义上的蒸馏过程,但该流程涉及使用较小规模的模型(如8B版、70B版的Llama以及1.5B至30B版的Qwen)来训练大型DeepSeek-R1 671B模型产生的输出。

构建和改进推理模型的主要四种方法

在本节中,我将概述当前用于提升LLM(大语言模型)推理能力并构建类似DeepSeek-R1、OpenAI的o1 & o3等专用推理模型的关键技术。注意:o1 和 o3 的具体运作方式目前外界尚不清楚,但据说它们结合了推理和训练技术。

1) 推理时间扩展

提高大型语言模型(LLM)的推理能力(或一般能力)的一种方法是推理时间扩展。这个术语可以有多种含义,但在这种情况下,它指的是在推理过程中增加计算资源以改善输出质量。

一个粗糙的类比是人类在解决复杂问题时,如果给予更多思考时间,往往会生成更好的回答。同样地,我们可以应用鼓励 LLM 在生成答案时“思考”更多的技术。(虽然LLM是否真的能够“思考”是一个不同的讨论)

推理时间扩展的一个直接方法就是巧妙的提示工程。一个经典例子是_链式思维(CoT)提示法_,其中输入提示中包括诸如 “逐步思考”之类的短语。这鼓励模型在生成最终答案之前产生中间推理步骤,而这通常(但并非总是)会导致更复杂问题上的结果更加准确。(需要注意的是,在处理如“法国的首都是什么”的简单知识性问题时,这种方法是不合适的,这也是一条很好的规则来判断某个推理模型是否适用于您的输入查询。)

请添加图片描述

**来自 2022 年《大型语言模型是零样本推理者》论文
(https://arxiv.org/abs/2205.11916)的经典 CoT 提示法示例。**上述CoT方法可以视为推理时的扩展,因为它通过生成更多的输出令牌使推理变得更昂贵。

另一种推理时扩展的方法是使用投票和搜索策略。一个简单的例子就是多数表决法,即让大模型生成多个答案,并通过多数表决来选择正确的答案。同样地,我们也可以利用束搜索和其他搜索算法生成更好的响应。

我强烈推荐我在《2024年值得关注的AI研究论文(第二部分)》一文中提到的论文——优化LLM推理时计算资源分配的有效性可能超过扩展模型参数,以获取有关这些不同策略的更多细节。

请添加图片描述

《DeepSeek R1技术报告》指出,其模型不使用推理时的扩展。然而,这种技术通常在大模型之上以应用程序层的形式实现,因此DeepSeek有可能在其应用中使用这种方法。我怀疑OpenAI的o1和o3模型使用了推理时间扩展,这可以解释为什么它们相对于像GPT-4o这样的模型来说相对昂贵。除了推理时间扩展外,o1和o3很可能使用类似于DeepSeek R1所使用的强化学习(RL)管道进行训练。更多关于强化学习的内容请参见下面的两个部分。

2) 纯粹的强化学习(RL)

《DeepSeek R1论文》中我个人的一个亮点是,他们发现纯粹的强化学习(RL)可以产生推理行为。让我们更详细地探讨这意味着什么。

如前所述,DeepSeek开发了三种类型的R1模型。第一种是DeepSeek-R1-Zero,它是基于在2024年12月发布的标准预训练大语言模型DeepSeek-V3基础模型构建的。与典型的RL管道不同,在典型的RL管道中监督微调(SFT)会先于RL进行应用,而DeepSeek-R1-Zero完全使用强化学习进行训练,并没有初始的SFT阶段,如下面的图所示。

请添加图片描述

DeepSeek-R1-Zero模型的开发过程。
仍然,这种强化学习(RL)过程与常用的基于人类反馈的强化学习(RLHF)方法类似,通常用于调整大语言模型的偏好。
然而,如上所述,在DeepSeek-R1-Zero 中的关键区别在于他们跳过了用于指令微调的监督微调(SFT)阶段。这就是为什么他们称其为“纯粹”的RL。

对于奖励机制,他们没有使用基于人类偏好的训练奖励模型,而是采用了两种类型的奖励:准确性奖励和格式化奖励。

准确性奖励 使用LeetCode编译器来验证编程答案,并采用确定性系统评估数学回答。

格式化奖励 依赖于大型语言模型裁判确保回复遵循预期的格式,例如将推理步骤放在标签中。

令人惊讶的是,这种方法足以使大型语言模型发展出基本的推理能力。研究人员观察到了一个“啊哈!”时刻,在这个时刻,尽管没有被明确训练过这样做,该模型开始在其响应中生成推理痕迹,如下面的图所示。

来自DeepSeek R1技术报告(https://arxiv.org/abs/2501.12948)显示“啊哈”时刻出现的图表。

A figure from the DeepSeek R1 technical report (https://arxiv.org/abs/2501.12948) showing the emergence of the “Aha” moment.
虽然R1-Zero不是一款高性能的推理模型,但它确实展示了通过生成中间“思考”步骤来体现推理能力,如上图所示。这证实了仅使用纯粹的强化学习(RL)方法也可以开发出一个推理模型,并且DeepSeek团队是第一个展示这种方法(或至少公开发表这种方法)的团队。

3) 监督微调与强化学习(SFT + RL)

接下来,让我们看看DeepSeek-R1的发展历程,这是DeepSeek旗舰级推理模型,为构建推理模型提供了蓝图。该模型在DeepSeek-R1-Zero的基础上通过加入额外的监督微调(SFT)和强化学习(RL)来提升其推理性能。

需要注意的是,在标准的RLHF管道中,通常会在强化学习之前包含一个监督微调阶段。OpenAI的o1可能也是使用类似的方法开发出来的。

请添加图片描述

DeepSeek-R1模型的发展过程。

如上图所示,DeepSeek团队使用DeepSeek-R1-Zero生成了他们所谓的“冷启动”SFT数据。“冷启动”是指这些数据是由未经过任何监督微调(SFT)训练的DeepSeek-R1-Zero产生的。使用这些冷启动SFT数据,DeepSeek然后通过指令微调训练模型,并随后进入另一个强化学习(RL)阶段。这一RL阶段保留了在DeepSeek-R1-Zero的RL过程中使用的相同准确性和格式奖励。然而,他们添加了一致性奖励以防止语言混用现象的发生,即当模型在一个回复中切换使用多种语言时的情况。

在完成RL阶段后,又进行了一轮SFT数据收集。在此阶段,使用最新的模型检查点生成了60万条链式思考(CoT)SFT示例,而额外的20万个基于知识的SFT示例则是利用DeepSeek-V3基础模型创建的。

这些共计60万加20万的SFT样本随后被用于另一轮RL。在这个阶段,他们再次采用规则方法为数学和编程问题提供准确性奖励,而对于其他类型的问题,则使用人类偏好标签进行训练。

最终的模型DeepSeek-R1相较于DeepSeek-R1-Zero有了显著的性能提升,这得益于额外的SFT和RL阶段,如下面的表格所示。

请添加图片描述

4) 纯监督微调(SFT)和蒸馏

到目前为止,我们已经介绍了构建和完善推理模型的三种关键方法:

1.推理时间扩展,一种在不训练或修改底层模型的情况下提高推理能力的技术。
2.纯粹的强化学习(RL),如DeepSeek-R1-Zero所示,证明了在没有监督微调的情况下推理可以作为学习行为出现。
3.监督微调(SFT)加上RL,这导致了DeepSeek旗舰推理模型DeepSeek-R1的诞生。

那么还剩下什么呢?就是“蒸馏”模型。

令人惊讶的是,DeepSeek也发布了通过他们称之为“蒸馏”的过程训练的小型模型。然而,在大型语言模型(LLM)的背景下,“蒸馏”并不一定遵循深度学习中传统的知识蒸馏方法。

相反,在这里“蒸馏”指的是对较小的语言模型(例如Llama 8B、70B以及Qwen 2.5等模型[0.5B到32B])进行指令微调,这些小型语言模型由更大的LLM生成的SFT数据集进行训练。具体来说,这里的大型LLM包括DeepSeek-V3和DeepSeek-R1的一个中间检查点。事实上,在这个蒸馏过程中使用的SFT数据是与之前描述中用于训练DeepSeek-R1的数据相同的。

为了更清晰地解释这一过程,我在下面的图表中标明了“蒸馏”部分。

请添加图片描述

DeepSeek-R1-Distill模型的发展过程。

他们为什么要开发这些蒸馏后的模型呢?在我看来,主要有两个关键原因:
1.较小的模型更加高效。这意味着它们运行成本更低,而且可以在低端硬件上运行,这对于许多研究人员和爱好者来说尤其有吸引力。

2.一个纯粹监督微调(SFT)的案例研究。这些蒸馏后的模型作为有趣的基准,展示了在没有强化学习的情况下纯监督微调可以将模型提升到什么程度。

下表比较了这些蒸馏后模型与其他流行模型以及DeepSeek-R1-Zero和DeepSeek-R1的性能表现。

请添加图片描述

蒸馏模型与非蒸馏模型的基准对比。DeepSeek-R1 技术报告中的注释图表(https://arxiv.org/abs/2501.12948)。

从上图可以看出,蒸馏后的模型明显弱于 DeepSeek-R1,但相对于 DeepSeek-R1-Zero 而言却相当强大,尽管其大小要小得多。此外值得一提的是,这些模型与 o1 mini 的性能对比也非常出色(我怀疑 o1-mini 本身可能也是一个类似的蒸馏版本)。

在本节的结论部分结束之前,还有一个有趣的比较值得提及。DeepSeek 团队测试了 DeepSeek-R1-Zero 中出现的突发推理行为是否也存在于较小规模的模型中。为此,他们直接将与 DeepSeek-R1-Zero 相同的纯 RL 方法应用于 Qwen-32B 进行探究。该实验的结果总结如下表所示,其中QwQ-32B-Preview是基于Qwen团队开发的Qwen 2.5 32B模型的一个参考推理模型(我认为训练细节从未披露过)。这种比较提供了一些额外的见解,即纯RL是否足以在比DeepSeek-R1-Zero小得多的模型中诱导出推理能力。

图片

在较小的32B模型上进行基准测试比较蒸馏和RL。来自DeepSeek-R1技术报告中的注释图表(https://arxiv.org/abs/2501.12948)。

有趣的是,结果显示对于较小的模型来说,蒸馏比纯RL更有效。这与这样一种观点一致,即仅靠RL可能不足以在这一规模的模型中诱导出强大的推理能力,而基于高质量推理数据的SFT策略可能会对小模型更为有效。

为了完整性,在表格中看到以下额外比较会很有用:

1.使用SFT+RL训练Qwen-32B(类似于DeepSeek-R1的开发方式)。这将有助于确定与纯RL和纯SFT相比,当结合使用SFT时可以取得多少改进。

2.仅通过SFT训练DeepSeek-V3(类似于蒸馏模型的创建方法),这样可以直接比较RL+SFT与纯SFT的效果。

结论

在本节中,我们探讨了四种不同的策略用于构建和改善推理模型:
1.推理时间缩放不需要额外的训练,但会增加推理成本,在用户数量或查询量增长时使得大规模部署更加昂贵。然而,它仍然是改进已经强大的模型性能的一种明智选择。我强烈怀疑o1利用了推理时间缩放,这有助于解释为什么与DeepSeek-R1相比,它的每令牌费用更高。
2.从研究角度来看,纯强化学习(RL)很有意思,因为它能提供关于作为涌现行为的推理的一些见解。然而,在实际模型开发中,RL+SFT是更受欢迎的方法,因为这种方法可以生成更强的推理模型。我强烈怀疑o1也是使用了RL+SFT进行训练。更加精确地说,我认为o1从一个比DeepSeek-R1弱小的基础模型开始,但通过RL+SFT和推理时间缩放来进行弥补。

3.如上所述,RL+SFT是构建高性能推理模型的关键方法。DeepSeek-R1是一个很好的蓝本,展示了如何做到这一点。

4.蒸馏是一种很有吸引力的方法,尤其是在创建更小、更高效的模型时尤为如此。然而,其限制在于蒸馏不能驱动创新或产生下一代的推理模型。例如,蒸馏总是依赖于一个现有的更强模型来生成监督微调(SFT)数据。

我期待接下来看到的一个有趣方面是将RL+SFT(方法3)与推理时间缩放(方法1)结合使用。这很可能就是OpenAI o1正在做的事情,除了它可能是基于比DeepSeek-R1更弱的基础模型,这也解释了为什么DeepSeek-R1在性能上如此出色而同时保持相对较低的推理成本。

关于DeepSeek R1 的思考

令人着迷的一个收获是纯粹基于强化学习(RL)的行为推理是如何出现的。并且令人大为赞赏的是,DeepSeek在其模型下使用了一个宽松的开源MIT许可证进行开源,这甚至比Meta的Llama模型的限制还要少。

与o1相比如何?

DeepSeek-R1是否优于o1?我认为两者大致处于同一水平线上。然而,显而易见的是,DeepSeek-R1在推理阶段更加高效。这意味着DeepSeek可能更多地投入到了训练过程中,而OpenAI则可能更依赖于o1的推理时间扩展。

话虽如此,由于OpenAI对o1披露的信息不多,因此直接比较两者存在困难。例如:

  • o1是否也是一个专家混合模型(MoE)?

  • o1有多大?

  • o1仅仅是GPT-4o的一个稍微改进版本,并且仅通过最小限度的强化学习和大量推理时间扩展得到吗?

在不了解这些细节的情况下,这种对比犹如将苹果与橙子相比。

训练DeepSeek-R1的成本

另一个讨论的话题是开发DeepSeek-R1所需的成本。有些人提到了大约600万美元的培训成本,但他们可能混淆了DeepSeek-V3(去年十二月发布的基础模型)和DeepSeek-R1之间的区别。

该估计值基于每GPU小时2美元以及完成DeepSeek-V3最终训练所需的GPU小时数,这一数据最初是在2024年十二月讨论的。

然而,DeepSeek团队从未公开过R1的确切GPU时长或开发成本,因此任何成本估算都只是纯粹的猜测。无论如何,最终DeepSeek-R1是开放权重推理模型中的一个重要里程碑,其在推断时的效率使其成为OpenAI的o1的一个有趣的替代选择。

在有限预算下开发推理模型

开发一个像DeepSeek-R1这样的推理模型可能需要数十万到数百万美元的资金,即使是从像DeepSeek-V3这样的开源基础模型开始。这可能会让资金有限的研究人员或工程师感到沮丧。

好消息:蒸馏可以带来很大的帮助

幸运的是,模型蒸馏提供了一种更具成本效益的替代方案。DeepSeek团队通过他们的R1蒸馏模型展示了这一点,这些模型虽然比DeepSeek-R1小得多,但推理性能却非常强。然而,即使这种方法也不是完全便宜的。他们的蒸馏过程使用了80万条SFT样本,这需要大量的计算资源。

有趣的是,在DeepSeek-R1发布前几天,我遇到了一篇关于Sky-T1的文章(https://novasky-ai.github.io/posts/sky-t1/),这是一个令人惊叹的项目,一个小型团队仅使用17,000个SFT样本就训练了一个开放权重的32B模型。总成本是多少?只有450美元,这比大多数AI会议的注册费还要低。

这个例子表明,虽然大规模训练仍然很昂贵,但较小、有针对性的微调工作仍可以在极低的成本下取得令人印象深刻的结果。

来自"Sky-T1:在450美元内训练自己的O1预览模型"文章的图表

图片来自“Sky-T1:在450美元内训练自己的O1预览模型”文章,https://novasky-ai.github.io/posts/sky-t1/根据他们的基准测试,Sky-T1 的性能大致与 o1 相当,这在考虑到其低训练成本的情况下令人印象深刻。

预算有限的纯粹强化学习:TinyZero

虽然 Sky-T1 专注于模型蒸馏,我也发现了一些有趣的“纯 RL”领域的工作。一个值得注意的例子是 TinyZero,这是一个参数量为30亿的小型模型,它复制了 DeepSeek-R1-Zero 的方法(顺便说一下,它的训练成本不到 30 美元)。

令人惊讶的是,即使只有 30 亿个参数,TinyZero 也展现了一些自发的自我验证能力,这支持了纯粹通过 RL 方式在小模型中也可以产生推理这一观点。

TinyZero 存储库提到,一份研究报告仍在进行中,我肯定会密切关注进一步的细节更新。

请添加图片描述

来自 TinyZero 存储库 (https://github.com/Jiayi-Pan/TinyZero) 的一个图表,显示模型具备自我验证的能力。(与基础模型相比其反应将会更有趣。)

上述两个项目表明,即使在有限的预算下,研究推理模型也是可能的。虽然两种方法都复制了 DeepSeek-R1 的方法,一种专注于纯 RL(TinyZero),另一种则专注纯 SFT(Sky-T1),探索这些想法如何进一步拓展会非常令人着迷。

相关文章:

理解推理型大语言模型

构建和改进推理模型的方法与策略 本文描述了构建推理模型的四种主要方法,以及我们如何增强大型语言模型(LLM)的推理能力。我希望这能为你提供有价值的见解,并帮助你了解这一领域快速发展的文献和热潮。 在2024年,LLM…...

告别人工检测!casaim自动化三维激光扫描

在工业制造和工程领域,传统的质量检测方法主要依赖人工操作,不仅效率低下,而且容易受到人为因素的影响,导致检测结果的不一致性和重复性差。 传统人工检测的局限性: 传统的人工检测方法,如使用卡尺、千分…...

使用云效解决docker官方镜像拉取不到的问题

目录 前言原文地址测试jenkins构建结果:后续使用说明 前言 最近经常出现docker镜像进行拉取不了,流水线挂掉的问题,看到一个解决方案: 《借助阿里个人版镜像仓库云效实现全免费同步docker官方镜像到国内》 原文地址 https://developer.aliyun.com/artic…...

Linux TCP 编程详解与实例

一、引言 在网络编程的领域中,TCP(Transmission Control Protocol)协议因其可靠的数据传输特性而被广泛应用。在 Linux 环境下,使用 C 或 C 进行 TCP 编程可以实现各种强大的网络应用。本文将深入探讨 Linux TCP 编程的各个方面&…...

认识O(NlogN)的排序

归并排序 归并排序(任何一个递归)如果不懂可以画一个树状结构去帮助自己去理解。 核心排序方法为Merger public class 归并排序 {public static void main(String[] args) {int[] arr1 {3, 1, 2, 2, 5, 6};int[] arr2 Arrays.copyOf(arr1, arr1.len…...

[手机Linux] onepluse6T 系统重新分区

一,刷入TWRP 1. 电脑下载 Fastboot 工具(解压备用)和对应机型 TWRP(.img 后缀文件,将其放入前面解压的文件夹里) 或者直接这里下载:TWRP 2. 将手机关机,长按音量上和下键 开机键 进入 fastbo…...

对ReentrantLock的公平性进行测试

ReentrantLock公平性实现原理 在ReentrantLock类内部定义了一个内部类Sync以及两个实现NonfairSync和FairSync,它们内部定义了锁获取和释放的逻辑,下面我列出了两种同步类的代码,通过观察两个代码的差异就可以看到公平性是如何实现的。 Nonf…...

LabVIEW之TDMS文件

在很多场合,早期的LabVIEW版本不得不借助常规的数据库来做一些数据管理工作,但常规数据库对于中高速数据采集显然是不合适的,因为高速数据采集的数据量非常大,用一般的数据库无法满足存储数据的要求。 直到TDM(Technical Data Ma…...

DeepSeek 实现原理探析

DeepSeek 实现原理探析 引言 DeepSeek 是一种基于深度学习的智能搜索技术,它通过结合自然语言处理(NLP)、信息检索(IR)和机器学习(ML)等多领域的技术,旨在提供更加精准、智能的搜索…...

2021 年 9 月青少年软编等考 C 语言五级真题解析

目录 T1. 问题求解思路分析T2. 抓牛思路分析T3. 交易市场思路分析T4. 泳池思路分析T1. 问题求解 给定一个正整数 N N N,求最小的 M M M 满足比 N N N 大且 M M M 与 N N N 的二进制表示中有相同数目的 1 1 1。 举个例子,假如给定 N N N 为 78 78 78,二进制表示为 …...

洛谷网站: P3029 [USACO11NOV] Cow Lineup S 题解

题目传送门: P3029 [USACO11NOV] Cow Lineup S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言: 这道题的核心问题是在一条直线上分布着不同品种的牛,要找出一个连续区间,使得这个区间内包含所有不同品种的牛,…...

编程领域的IO模型(BIO,NIO,AIO)

目前对于市面上绝大多数的应用来说,不能实现的业务功能太少了。更多的是对底层细节,性能优化的追求。其中IO就是性能优化中很重要的一环。Redis快,mysql缓冲区存在的意义。都跟IO有着密切关系。IO其实我们都在用,输入输出流这块。…...

DeepSeek和ChatGPT的对比

最近DeepSeek大放异彩,两者之间有什么差异呢?根据了解到的信息,简单做了一个对比。 DeepSeek 和 ChatGPT 是两种不同的自然语言处理(NLP)模型架构,尽管它们都基于 Transformer 架构,但在设计目标…...

Pyqt 的QTableWidget组件

QTableWidget 是 PyQt6 中的一个表格控件,用于显示和编辑二维表格数据。它继承自 QTableView,提供了更简单的方式来处理表格数据,适合用于需要展示结构化数据的场景。 1. 常用方法 1.1 构造函数 QTableWidget(parent: QWidget None)&#x…...

4. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--什么是微服务--微服务设计原则与最佳实践

相比传统的单体应用,微服务架构通过将大型系统拆分成多个独立的小服务,不仅提升了系统的灵活性和扩展性,也带来了许多设计和运维上的挑战。如何在设计和实现微服务的过程中遵循一系列原则和最佳实践,从而构建一个稳定、高效、易维…...

网络安全威胁框架与入侵分析模型概述

引言 “网络安全攻防的本质是人与人之间的对抗,每一次入侵背后都有一个实体(个人或组织)”。这一经典观点概括了网络攻防的深层本质。无论是APT(高级持续性威胁)攻击、零日漏洞利用,还是简单的钓鱼攻击&am…...

树和二叉树_7

树和二叉树_7 一、leetcode-102二、题解1.引库2.代码 一、leetcode-102 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 样例输入:root [3,9,20,null,nu…...

不同标签页、iframe或者worker之间的广播通信——BroadcastChannel

BroadcastChannel是一个现代浏览器提供的 API,用于在同一浏览器的不同浏览上下文(如不同的标签页、iframe 或者 worker)之间进行消息传递。它允许你创建一个广播频道,通过该频道可以在不同的浏览上下文之间发送和接收消息。 Broa…...

开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具

开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具 背景与研究目的 在快速发展的软件开发领域,代码辅助工具已成为提高开发效率和质量的关键。然而,商业付费工具如通义灵码和腾讯AI代码助手,尽管功能强大,但其高昂的成本和许可证限制,使得许多企业寻求更具吸…...

AUTOSAR汽车电子嵌入式编程精讲300篇-基于FPGA的CAN FD汽车总线数据交互系统设计

目录 前言 汽车总线以及发展趋势 汽车总线技术 汽车总线发展趋势 CAN FD总线国内外研究现状 2 系统方案及CAN FD协议分析 2.1系统控制方案设计 2.2 CAN FD总线帧结构分析 2.2.1数据帧分析 2.2.2远程帧分析 2.2.3过载帧分析 2.2.4错误帧分析 2.2.5帧间隔分析 2.3位…...

STC51案例操作

案例 1&#xff1a;LED 闪烁 功能描述&#xff1a;通过操作 P1 口寄存器&#xff0c;让连接在 P1.0 引脚的 LED 以一定间隔闪烁。 #include <reg51.h>// 延时函数 void delay(unsigned int time) {unsigned int i, j;for (i 0; i < time; i)for (j 0; j < 123; …...

多光谱技术在华为手机上的应用发展历史

2018 年&#xff0c;华为 P20 系列首次搭载 5 通道色温传感器&#xff0c;可帮助手机在不同光照条件下保持画面色彩一致性。 2020 年&#xff0c;华为 P40 系列搭载 8 通道多光谱色温传感器&#xff08;实际为 11 通道&#xff0c;当时只用 8 个通道检测可见光&#xff09;&am…...

C语言:函数栈帧的创建和销毁

目录 1.什么是函数栈帧2.理解函数栈帧能解决什么问题3.函数栈帧的创建和销毁的过程解析3.1 什么是栈3.2 认识相关寄存器和汇编指令3.3 解析函数栈帧的创建和销毁过程3.3.1 准备环境3.3.2 函数的调用堆栈3.3.3 转到反汇编3.3.4 函数栈帧的创建和销毁 1.什么是函数栈帧 在写C语言…...

NLP_[2]_文本预处理-文本数据分析

文章目录 4 文本数据分析1 文件数据分析介绍2 数据集说明3 获取标签数量分布4 获取句子长度分布5 获取正负样本长度散点分布6 获取不同词汇总数统计7 获取训练集高频形容词词云8 小结 4 文本数据分析 学习目标 了解文本数据分析的作用.掌握常用的几种文本数据分析方法. 1 文…...

【工具篇】深度揭秘 Midjourney:开启 AI 图像创作新时代

家人们,今天咱必须好好唠唠 Midjourney 这个在 AI 图像生成领域超火的工具!现在 AI 技术发展得那叫一个快,各种工具层出不穷,Midjourney 绝对是其中的明星产品。不管你是专业的设计师、插画师,还是像咱这种对艺术创作有点小兴趣的小白,Midjourney 都能给你带来超多惊喜,…...

从O(k*n)到O(1):如何用哈希表终结多层if判断的性能困局

【前言】   本文将以哈希表重构实战为核心&#xff0c;完整展示如何将传统条件匹配逻辑(上千层if-else判断)转化为O(1)的哈希表高效实现。通过指纹验证场景的代码级解剖&#xff0c;您将深入理解&#xff1a;   1.哈希函数设计如何规避冲突陷阱   2.链式寻址法的工程实现…...

视频采集卡接口

采集卡的正面有MIC IN、LINE IN以及AUDIO OUT三个接口&#xff0c; MIC IN为麦克风输入&#xff0c;我们如果要给采集到的视频实时配音或者是在直播的时候进行讲解&#xff0c;就可以在这里插入一个麦克风&#xff0c; LINE IN为音频线路输入&#xff0c;可以外接播放背景音乐…...

蓝桥杯真题 - 像素放置 - 题解

题目链接&#xff1a;https://www.lanqiao.cn/problems/3508/learning/ 个人评价&#xff1a;难度 3 星&#xff08;满星&#xff1a;5&#xff09; 前置知识&#xff1a;深度优先搜索 整体思路 深搜&#xff0c;在搜索过程中进行剪枝&#xff0c;剪枝有以下限制条件&#xf…...

vue基础(三)

常用指令 1. v-bind 固定绑定与动态绑定&#xff1a; 语法&#xff1a; 标准语法&#xff1a;v-bind:属性"动态数据" 简写语法&#xff1a;:属性"动态数拓" <!DOCTYPE html> <html lang"en"><head><me…...

使用Python开发PPTX压缩工具

引言 在日常办公中&#xff0c;PPT文件往往因为图片过大而导致文件体积过大&#xff0c;不便于传输和存储。为了应对这一问题&#xff0c;我们可以使用Python的wxPython图形界面库结合python-pptx和Pillow&#xff0c;开发一个简单的PPTX压缩工具。本文将详细介绍如何实现这一…...