理解推理型大语言模型
构建和改进推理模型的方法与策略
本文描述了构建推理模型的四种主要方法,以及我们如何增强大型语言模型(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编译器来验证编程答案,并采用确定性系统评估数学回答。
格式化奖励 依赖于大型语言模型裁判确保回复遵循预期的格式,例如将推理步骤放在标签中。
令人惊讶的是,这种方法足以使大型语言模型发展出基本的推理能力。研究人员观察到了一个“啊哈!”时刻,在这个时刻,尽管没有被明确训练过这样做,该模型开始在其响应中生成推理痕迹,如下面的图所示。
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预览模型”文章,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…...
【Brinson 绩效归因模型】
Brinson 绩效归因模型 1、前言2、Brinson模型介绍2.1 归因方式2.1.1 BHB 超额收益分解方案2.1.2 BF 超额收益分解方案 2.2 多期 Brinson 模型 1、前言 如此之多的基金,收益率各有不同,即使同等收益率的基金也各有不同的成因。在这种形势下,广…...
如何轻松将Matlab生成的图表嵌入PowerPoint演示文稿
文章目录 Matlab将生成的图添加PPT中一、Matlab脚本1.添加图片函数2.使用示例 总结 Matlab将生成的图添加PPT中 在许多科学、工程和商业领域,Matlab作为一款强大的数值计算和可视化工具,被广泛应用于数据分析和模型构建。然而,当涉及到分享这…...
组合(力扣77)
从这道题开始,我们正式进入回溯算法的学习。之前在二叉树中只是接触到了一丢丢,而这里我们将使用回溯算法解决很多经典问题。 那么这道题是如何使用回溯算法的呢?在讲回溯之前,先说明一下此题是如何递归的。毕竟回溯递归不分家&a…...
2.7学习
crypto buu-还原大师 仔细阅读题目,这里有一段字符串,但是其中有四个大写字母被替换成了‘?’,那么我们写脚本:首先将四个问号均换成26个大写字母并且组成不同的组合, 所以有四个循环让四个问号都遍历26个…...
[开源/教程]使用Ollama+ESP32实现本地对话助手(可接入deepseek等模型)
[开源/视频教程]使用OllamaESP32实现本地对话助手(可接入deepseek等模型) 简介 使用ollama实现本地模型的定制, 可以做到数据不泄露以及绕开检测的效果, 之后使用嘉立创的esp32开发板实现简单的对话助手 同时接入本文档, 可以直接使用AI对话的方式进行文档处理 XuSenfeng/ai…...
Swagger2 自定义排序
分享一下SpringSwagger2在线文档自定义排序的代码。 这里参考swagger2 接口排序_swagger接口排序-CSDN博客提供的思路,并在此基础上做了优化。 1、引用pom信息 <!--swagger依赖(pojo注解)--><dependency><groupId>io.swagger</groupId>&l…...
sentinel的限流原理
Sentinel 的限流原理基于 流量统计 和 流量控制策略,通过动态规则对系统资源进行保护。其核心设计包括以下几个关键点: 流量统计模型:滑动时间窗口 Sentinel 使用 滑动时间窗口算法 统计单位时间内的请求量,相比传统的固定时间窗…...
Mac 部署Ollama + OpenWebUI完全指南
文章目录 💻 环境说明🛠️ Ollama安装配置1. 安装[Ollama](https://github.com/ollama/ollama)2. 启动Ollama3. 模型存储位置4. 配置 Ollama 🌐 OpenWebUI部署1. 安装Docker2. 部署[OpenWebUI](https://www.openwebui.com/)(可视化…...
C/C++ 面试智能指针
说下你对智能指针的理解 回答1: 因为C使用内存的时候很容易出现野指针、悬空指针、内存泄露的问题。所以C11引入了智能指针来管理内存。有四种: auto_ptr:已经不用了unique_ptr:独占式指针,同一时刻只能有一个指针指向同一个对…...
Halcon缓存?内存泄漏?
目录 1、前言 2、图片缓存 3、全局内存缓存 4、临时内存缓存 5、处理 HALCON 中的疑似内存泄漏 6、其他 1、前言 除⾮必要,否则不建议修改 HALCON 自带的缓存设置。 2、图片缓存 图像通常需要大量内存,而分配大块内存的过程较慢。因此,当释放图像时,HALCON并…...
升级 SpringBoot3 全项目讲解 — 周边店铺展示功能如何实现
学会这款 🔥全新设计的 Java 脚手架 ,从此面试不再怕! 1. 升级 Spring Boot 到 3.x 在升级 Spring Boot 之前,我们需要确保项目的依赖和配置与新版本兼容。以下是升级的主要步骤: 1.1 更新 pom.xml 文件 首先&#…...
Git(分布式版本控制系统)系统学习笔记【并利用腾讯云的CODING和Windows上的Git工具来实操】
Git的概要介绍 1️⃣ Git 是什么? Git 是一个 分布式版本控制系统(DVCS),用于跟踪代码的变更、协作开发和管理项目历史。 由 Linus Torvalds(Linux 之父)在 2005 年开发,主要用于 代码管理。…...
光学和光子学模拟工具在 AR/VR 中的作用
AR/VR 中的光学和光子学 增强现实 (AR) 和虚拟现实 (VR) 站在数字进化的前沿。光学和光子学这一复杂的科学深入研究了光的产生、检测和操控,在这一转变中发挥着至关重要的作用。 图 1 (a) 展示了 AR 系统的设计,强调了光学的关键作用。该图描绘了光的旅…...
大模型产品Deepseek(四)、本地安装部署(Ollama方式)
Ollama与DeepSeek的本地安装与部署教程(Windows/MacOS) 在许多AI应用场景中,您可能希望将智能模型本地化,以便更高效地处理数据并减少对外部云服务的依赖。本文将介绍如何在Windows和macOS上直接安装和配置Ollama,以及如何基于Ollama平台部署DeepSeek模型并进行本地交互。…...
visual studio安装
一、下载Visual Studio 访问Visual Studio官方网站。下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 在主页上找到并点击“下载 Visual Studio”按钮。 选择适合需求的版本,例如“Visual Studio Community”(免费版本)&#x…...
AI大模型——DeepSeek模型部署实战
摘要 文章主要介绍了DeepSeek大模型的本地部署方法、使用方式以及API接入相关内容。首先指出可通过下载Ollama来部署DeepSeek-R1模型,并给出了模型不同参数版本及存储信息。接着说明了如何通过Chatbox官网下载并接入DeepSeek API,以及如何接入本地部署模…...
音视频的文件封装——AVI、MP4、MKV
3.MKV (Matroska Video File) Matroska (俄语: матроска )是一种多媒体封装格式,可把多种不同编码的影像、不同格式的音频、不同语言的字幕封装到一个文件内。也是一种开放源代码的多媒体封装格式。 Matroska 支持多种文件…...
讯飞绘镜(ai生成视频)技术浅析(五):视频生成
讯飞绘镜(AI生成视频)是一种先进的AI视频生成技术,能够将静态的分镜画面转换为动态视频,并使画面中的元素按照一定的逻辑和动作进行动态展示。 一、讯飞绘镜视频生成技术概述 讯飞绘镜的视频生成技术主要包含以下几个核心模块: 1.视频生成模型:包括生成对抗网络(GAN)…...
【FPGA】 MIPS 12条整数指令 【3】
实现乘除 修改框架 EX:实现带符号乘除法和无符号乘除法 HiLo寄存器:用于存放乘法和除法的运算结果。Hi、Lo为32bit寄存器。电路描述与实现RegFile思想一致 仿真 代码 DataMem.v include "define.v"; module DataMem(input wire clk,input…...
【补充】RustDesk一键部署及账号登录配置
前言 之前分享的配置rustdesk的帖子只是搭建了一个简易服务器,仅能实现简单的远程桌面功能。在后续的使用中切换设备使用时无法看到之前连接的设备,必须知道每个设备的id号,才能在新设备上连接。数据无法在设备间迁移,感觉很麻烦…...
2025.2.6 数模AI智能体大更新,更专业的比赛辅导,同提示词效果优于gpt-o1/o3mini、deepseek-r1满血
本次更新重新梳理了回复逻辑规则,无任何工作流,一共3.2k字细节描述。具体效果可以看视频,同时也比对了gpt-o1、gpt-o3mini、deepseek-r1-67BI,从数学建模题目解答上来看,目前我的数模AI智能体具有明显优势。 AI智能体优…...
昇腾,Ascend,NPU,mindie,镜像,部署vllm:第3篇,补档,没事可以看看这个readme
文章目录 前言文件位置已改变atb model和mindie的关系前言 在之前的版本中,我们提到了一个帮助文档(Readme),这个文档告诉我们,当时的mindie版本不支持0.5b版本的通义千问2.5 我现在就很好奇,新版的mindie,是否支持0.5b的版本呢? 文件位置已改变 之前的文件位置: …...
PbootCMS 修改跳转提示,修改笑脸时间
在使用时,每次都提示这个: 修改方法: 修改跳转时间:找到 handle.php 文件编辑 ,调整 setTimeout 函数的时间参数。 修改提示文字:编辑 handle.php 文件,修改提示文字的内容。 隐藏提示页面&am…...
Python办公笔记——将csv文件转Json
目录 专栏导读1、背景2、库的安装3、代码1—自定义表头4、代码2—全字段5、代码3—全字段总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——> 一晌…...
25/2/7 <机器人基础>雅可比矩阵计算 雅可比伪逆
雅可比矩阵计算 雅可比矩阵的定义 假设我们有一个简单的两个关节的平面机器人臂,其末端执行器的位置可以表示为: 其中: L1 和 L2 是机器人臂的长度。θ1 和 θ2是关节的角度。 计算雅可比矩阵 雅可比矩阵 JJ 的定义是将关节速度与末…...
流媒体缓存管理策略
缓存管理策略是指为了优化性能、资源使用和用户体验而对缓存数据进行管理的方法和规则。以下是一些常见的缓存管理策略: 1. LRU(Least Recently Used,最近最少使用) 原理:当缓存满了,需要腾出空间时&…...
【Sql Server】sql server 2019设置远程访问,外网服务器需要设置好安全组入方向规则
大家好,我是,欢迎来到《小5讲堂》。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言1、无法链接2、数…...
阿里云 | DeepSeek人工智能大模型安装部署
ModelScope是阿里云人工智能大模型开源社区 ModelScope网络链接地址 https://www.modelscope.cn DeepSeek模型库网络链接地址 https://www.modelscope.cn/organization/deepseek-ai 如上所示,在阿里云人工智能大模型开源社区ModelScope中,使用阿里云…...
Spring Test 教程大纲
Spring Test 教程大纲 目标:基于 JUnit 5,系统学习 Spring Test 的核心原理、注解使用、测试框架集成及扩展开发。 第 1 章:Spring Test 简介与核心原理 1.1 Spring Test 的作用与优势 简化 Spring 应用的单元测试与集成测试。核心目标&am…...
MySQL数据库基础(创建/删除 数据库/表)
一、数据库的操作 1.1 显示当前数据库 语法:show databases; <1>show 是一个关键字,表示要执行的操作类型 <2>databases 是复数,表示显示所有数据库 上面的数据库中,除了java113,其它的数据库…...
Llama最新开源大模型Llama3.1
Meta公司于2024年7月23日发布了最新的开源大模型Llama 3.1,这是其在大语言模型领域的重要进展。以下是关于Llama 3.1的详细介绍: 参数规模与训练数据 Llama 3.1拥有4050亿(405B)参数,是目前开源领域中参数规模最大的…...
PHP 面向对象编程详解
PHP 面向对象编程详解 引言 PHP 作为一种广泛使用的服务器端脚本语言,自诞生以来就以其简洁、易学、高效的特点受到开发者的喜爱。随着互联网技术的不断发展,PHP 也在不断地进化,其中面向对象编程(OOP)已经成为 PHP …...
YOLOv11-ultralytics-8.3.67部分代码阅读笔记-files.py
files.py ultralytics\utils\files.py 目录 files.py 1.所需的库和模块 2.class WorkingDirectory(contextlib.ContextDecorator): 3.def spaces_in_path(path): 4.def increment_path(path, exist_okFalse, sep"", mkdirFalse): 5.def file_age(path__fi…...
安卓开发,打开PDF文件
1、把PDF文件复制到raw目录下 (1)新建一个Android Resource Directory (2)Resource type 改成 raw (3) 把PDF文件复制到raw目录下 2、activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayoutxmlns:and…...
标准模版——添加蜂鸣器及继电器功能模块
一、peripheral.h代码 #include "STC15F2K60S2.H"void Set_Peripheral(unsigned char Buzzer_Status,unsigned char Relay_Status); 二、peripheral.c代码 #include "peripheral.h"void Set_Peripheral(unsigned char Buzzer_Status,unsigned char Rela…...
嵌入式工程师面试经验分享与案例解析
嵌入式工程师岗位受到众多求职者的关注。面试流程严格,技术要求全面,涵盖C/C编程、数据结构与算法、操作系统、嵌入式系统开发、硬件驱动等多个方向。本文将结合真实案例,深入剖析嵌入式工程师的面试流程、常见问题及应对策略,帮助…...
《云夹:高效便捷的书签管理利器》
在信息爆炸的时代,我们每天都会浏览大量的网页,遇到许多有价值的内容。如何高效地管理这些网页书签,以便随时快速访问,成为了一个重要的问题。云夹作为一款出色的书签管理工具,为我们提供了完美的解决方案。 强大的功能…...
ASP.NET Core标识框架Identity
目录 Authentication与Authorization 标识框架(Identity) Identity框架的使用 初始化 自定义属性 案例一:添加用户、角色 案例二:检查登录用户信息 案例三:实现密码的重置 步骤 Authentication与Authorizatio…...
Web - CSS3过渡与动画
过渡 基本使用 transition过渡属性是css3浓墨重彩的特性,过渡可以为一个元素在不同样式之间变化自动添加补间动画。 过渡从kIE10开始兼容,移动端兼容良好,网页上的动画特效基本都是由JavaScript定时器实现的,现在逐步改为css3过…...
css-根据不同后端返回值返回渲染不同的div样式以及公共组件设定
1.动态绑定 Vue: 使用计算属性 getClassName 来动态计算样式类名,并通过 :class 绑定到 div 元素上。 <template><div :class"getClassName">这是一个根据后端值动态设置样式的 div 元素。</div> </template><script> exp…...
ES6 Set 数据结构用法总结
1. Set 基本概念 Set 是 ES6 提供的新的数据结构,类似于数组,但成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。 1.1 基本用法 // 创建一个空Set const set new Set();// 创建一个带有初始…...
Celery任务阻塞问题排查
笔者在工作中经常用到Celery,遇到了2个任务阻塞的问题,分享经验如下。 1 Celery原理 Celery是基于Python开发的分布式任务调度框架,可以将任务发送到若干台机器上,实现多并发调度和计算。Celery的架构主要包含生产者(…...
巧用DeepSeek,编写CAPL自动化测试脚本
文章目录 前言提问及回答小结 前言 蛇年伊始,火出圈的除了《哪吒2》登顶中国影史票房第一外,科技圈的DeepSeek国产大模型引爆全球,关于在DeepSeek上的提问无奇不有。就车载通信自动化测试,本文也来蹭蹭热度。作为CAN/LIN协议一致…...
【信息系统项目管理师】第21章:项目管理科学基础 详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 21.1 工程经济学21.2 运筹学1.线性规划2.一般的运输问题3.指派问题4.动态规划法5.最小生成树6.博弈论7.决策每年管理科学在综合题里固定是5分,案例分析和论文不考。主要是科学管理相关内容,包括工程经济学、运…...
webpack配置语言之---ts
由于webpack本身不支持ts,如果需要编译ts文件,需要下载相应的loader对ts文件进行编译,以及配置tsconfig.json文件,配置ts的编译选项 1. 安装必要的依赖 首先,确保你已经安装了 Webpack 和 TypeScript。如果还没有安装…...
WPF 进度条(ProgressBar)示例一
本文讲述:WPF 进度条(ProgressBar)简单的样式修改和使用。 进度显示界面:使用UserControl把ProgressBar和进度值以及要显示的内容全部组装在UserControl界面中,方便其他界面直接进行使用。 <UserControl x:Class"DefProcessBarDemo…...
金蛇祈福,鸿运开年!广州白云皮具城2025开市大吉!
锣鼓一响,黄金万两!2月6日大年初九,广州白云皮具城举行盛大的醒狮开市仪式!象征吉祥如意的醒狮,将好运、财运传递给全体商户和八方来客。 醒狮点睛 金鼓一响黄金万两,十头醒狮登台,董事总经理刘…...
centos虚拟机迁移没有ip的问题
故事背景,我们的centos虚拟机本来是好好的,但是拷贝到其他电脑上就不能分配ip,我个人觉得这个vmware他们软件应该搞定这个啊,因为这个问题是每次都会出现的。 网络选桥接 网络启动失败 service network restart Restarting netw…...
【ESP32cam人脸识别开门及服务器端实战源码】
本项目实现了一个基于ESP32-CAM的实时人脸识别系统,能够通过WiFi进行视频流传输,并在检测到人脸时触发开门指令。系统由两个主要部分组成:video.py(后端服务器)和 ESP32-CAM.ino(ESP32-CAM固件)…...