DeepSeek R1:推理模型新纪元与价格战
标题:DeepSeek R1:推理模型新纪元与价格战
文章信息摘要:
DeepSeek R1的发布标志着推理模型研究的重要转折点,其采用四阶段强化学习训练方法,结合监督微调和拒绝采样,显著提升了模型的推理能力。这一进展不仅推动了模型在代码和数学领域的应用,还为其扩展到更具挑战性任务奠定了基础。DeepSeek R1的低价策略可能引发推理模型市场的价格战,加速模型普及并推动行业创新。然而,当前研究仍存在过度依赖人类先验的问题,未来需更多数据集和基础设施支持以推动模型自主性和泛化能力的提升。
==================================================
详细分析:
核心观点:DeepSeek R1的发布标志着推理模型研究的一个重要转折点,未来将会有更多的开放权重模型和快速进展。其训练过程采用了四阶段的强化学习(RL)方法,结合监督微调(SFT)和拒绝采样,显著提升了模型的推理能力。这一进展不仅推动了推理模型在代码和数学领域的应用,还可能扩展到更具挑战性的任务。
详细分析:
DeepSeek R1的发布确实标志着推理模型研究的一个重要转折点。以下是对这一进展的详细展开:
1. 推理模型研究的转折点
- 背景:在DeepSeek R1发布之前,推理模型的研究主要集中在工业界,但缺乏一个明确的、具有里程碑意义的论文或模型。尽管像GPT-2和InstructGPT这样的模型在预训练和后训练方面取得了显著进展,但推理模型的研究仍然处于相对模糊的状态,主要依赖于一些可能具有误导性的博客文章。
- 转折点:DeepSeek R1的发布改变了这一局面。它不仅是第一个完全开放的推理模型,还提供了一个详细的训练方法和技术报告。这使得推理模型的研究和进展变得更加透明和可复制,预计在2025年及以后,推理模型的研究将迎来快速进展。
2. 开放权重模型的趋势
- 开放权重:DeepSeek R1采用了MIT许可证,这意味着公司和研究人员可以自由地在其基础上进行构建和训练。这种开放权重的模式类似于Stable Diffusion的发布,标志着AI模型的开源趋势正在加速。
- 价格竞争:随着开放权重模型的普及,推理模型的价格竞争也将加剧。例如,OpenAI的o1模型的价格相对于DeepSeek R1显得过高,这可能会导致价格战的爆发,类似于2023年Mixtral推理模型的价格战。
3. 四阶段强化学习训练方法
DeepSeek R1的训练过程分为四个阶段,每个阶段都结合了不同的技术手段来提升模型的推理能力:
-
阶段0:R1-Zero模型的冷启动
R1-Zero是第一个完全通过大规模强化学习(RL)训练的开放模型,没有使用监督微调(SFT)作为初步步骤。尽管R1-Zero在推理过程中可能会出现语言切换等可靠性问题,但它为后续的R1模型提供了关键的初始数据。 -
阶段1:推理SFT冷启动
在这一阶段,DeepSeek使用R1-Zero生成的少量合成数据对基础模型进行监督微调(SFT)。这一步骤旨在提高模型的可读性和最终性能,为后续的强化学习训练做好准备。 -
阶段2:大规模强化学习训练
这一阶段的核心是通过强化学习训练模型,使其在推理问题上达到收敛。DeepSeek使用了多种奖励机制,包括准确性奖励、格式奖励和语言一致性奖励,来优化模型的推理能力。 -
阶段3:拒绝采样引入通用能力
拒绝采样是一种通过生成模型的补全结果并对其进行排序的技术,用于提升模型在各种任务上的表现。DeepSeek在这一阶段引入了通用能力,使模型不仅擅长推理任务,还能处理更广泛的对话和任务。 -
阶段4:最终强化学习训练
在最后一个阶段,DeepSeek再次使用强化学习来进一步提升模型的推理能力和通用性。这一阶段的训练结合了可验证领域的提示和标准的RLHF偏好调优,以确保模型在推理和通用任务上都能表现出色。
4. 推理模型的应用前景
- 代码和数学领域:DeepSeek R1的推理能力在代码和数学领域表现出色,这为自动化编程和数学问题求解提供了强大的工具。
- 更具挑战性的任务:尽管目前还不完全清楚这些模型在未来将如何应用于更具挑战性的任务,但已经有迹象表明,像OpenAI的o1-Pro这样的模型在处理复杂任务时表现出色。随着推理模型的进一步发展,它们可能会在更多领域展现出强大的潜力。
5. 未来的研究方向
- 数据集和基础设施:为了进一步推动推理模型的研究,社区需要更多的开放数据集和基础设施支持。特别是强化学习训练需要大量的计算资源和复杂的工具链。
- 蒸馏和小型化:DeepSeek R1的报告中提到,通过蒸馏技术可以将大型模型的推理能力转移到小型模型上。这为未来的研究提供了一个重要的方向,即如何在保持高性能的同时降低模型的计算需求。
6. 总结
DeepSeek R1的发布不仅标志着推理模型研究的一个重要转折点,还为未来的开放权重模型和快速进展铺平了道路。其四阶段的强化学习训练方法结合了监督微调和拒绝采样,显著提升了模型的推理能力。随着推理模型在代码、数学以及其他更具挑战性任务中的应用,未来几年内,推理模型的研究和应用将迎来快速的发展。
==================================================
核心观点:推理SFT的’冷启动’是模型训练的关键起点。通过少量监督微调,模型能够更好地适应后续的强化学习训练,并展现出’自我检查’等涌现行为。大规模RL训练是提升模型推理能力的核心,通过奖励机制(如准确性奖励、格式奖励和语言一致性奖励),模型能够在推理任务中表现更好。
详细分析:
推理SFT的“冷启动”:模型训练的关键起点
在DeepSeek R1的训练过程中,推理SFT(Supervised Fine-Tuning,监督微调)的“冷启动” 是模型训练的关键起点。这一阶段的目的是通过少量的监督微调,为模型提供一个良好的初始状态,使其能够更好地适应后续的强化学习(RL)训练,并展现出一些涌现行为,如“自我检查”或“反思错误”。
1. 冷启动的作用
- 适应后续RL训练:在冷启动阶段,模型通过少量的监督微调,学习如何生成符合特定格式的推理过程(如使用
<think>
和<answer>
标签)。这种格式化的输出不仅提高了模型的可读性,还为后续的RL训练提供了一个稳定的基础。 - 涌现行为的触发:通过冷启动,模型能够更容易地在RL训练中展现出一些涌现行为,如“让我再检查一下”或“这个答案是错误的”。这些行为是模型在推理任务中自我纠正和优化的关键。
2. 冷启动的实现
- 数据来源:冷启动阶段使用的数据来自于R1-Zero模型生成的少量推理轨迹。这些数据经过人工筛选和后期处理,确保其质量和格式的一致性。
- 技巧:DeepSeek在冷启动阶段使用了一些技巧,如:
- Few-shot prompting:通过提供少量带有详细推理过程的示例,引导模型生成类似的详细答案。
- 格式控制:通过系统提示,要求模型生成特定格式的输出(如
<answer>
标签),确保推理过程的清晰和可读性。 - 人工后处理:对生成的推理轨迹进行人工筛选和修正,确保数据的质量。
3. 冷启动的意义
- 优化损失函数:冷启动阶段通过监督微调,优化了模型的损失函数,使其在后续的RL训练中更容易展现出涌现行为。
- 提高模型稳定性:冷启动阶段的监督微调帮助模型避免了RL训练中可能出现的一些问题,如语言切换或生成不连贯的推理过程。
大规模RL训练:提升模型推理能力的核心
在冷启动之后,DeepSeek R1进入了大规模强化学习(RL)训练阶段。这一阶段是提升模型推理能力的核心,通过奖励机制,模型能够在推理任务中表现更好。
1. RL训练的基本原理
- 奖励机制:RL训练的核心思想是通过奖励机制来引导模型生成正确的推理过程。具体来说,模型在生成推理过程后,会根据其答案的正确性、格式的规范性以及语言的连贯性获得相应的奖励。
- 反馈循环:RL训练通过一个反馈循环来优化模型的行为。模型生成推理过程后,系统会验证其答案的正确性,并根据验证结果给予奖励或惩罚。模型通过不断调整其行为,以最大化奖励。
2. 奖励机制的组成
- 准确性奖励:这是最主要的奖励,模型在生成正确答案时会获得正奖励,否则奖励为0。这种奖励机制确保了模型在推理任务中的准确性。
- 格式奖励:模型在生成推理过程时,必须遵循特定的格式(如
<think>
和<answer>
标签)。如果格式正确,模型会获得奖励;否则会受到惩罚。这种奖励机制确保了推理过程的可读性和稳定性。 - 语言一致性奖励:模型在生成答案时,必须使用与问题相同的语言。如果语言一致,模型会获得奖励。这种奖励机制提高了模型的用户体验,尽管可能会略微降低模型的性能。
3. RL训练的意义
- 提升推理能力:通过大规模RL训练,模型能够在推理任务中表现更好,生成更准确、更连贯的推理过程。
- 优化模型行为:RL训练通过奖励机制,优化了模型的行为,使其在生成推理过程时更加稳定和可靠。
总结
推理SFT的“冷启动”和大规模RL训练是DeepSeek R1训练过程中的两个关键阶段。冷启动通过少量的监督微调,为模型提供了一个良好的初始状态,使其能够更好地适应后续的RL训练,并展现出一些涌现行为。大规模RL训练则通过奖励机制,提升了模型在推理任务中的表现,使其生成更准确、更连贯的推理过程。这两个阶段的结合,使得DeepSeek R1在推理任务中表现出色,并为未来的推理模型研究提供了重要的参考。
==================================================
核心观点:拒绝采样是引入通用能力的重要手段。通过生成和筛选高质量数据,模型能够从推理任务扩展到更广泛的领域。最终RL训练旨在提升模型的用户友好性和通用性,通过混合可验证领域和标准RLHF偏好调优的提示,模型在推理能力和用户体验之间取得平衡。
详细分析:
拒绝采样(Rejection Sampling)是一种在模型训练中引入通用能力的重要手段。它的核心思想是通过生成大量的模型输出,然后根据某种标准(如奖励模型或人工筛选)选择高质量的输出,再用这些高质量的输出对模型进行微调。这种方法不仅能够提升模型在特定任务上的表现,还能帮助模型扩展到更广泛的领域,使其具备更强的通用性。
拒绝采样的作用
-
引入通用能力:在推理模型的训练过程中,模型往往专注于特定任务(如数学或代码生成),而忽略了更广泛的通用能力(如对话、文本生成等)。通过拒绝采样,模型可以从推理任务中学习到的能力扩展到更广泛的领域,使其在处理非推理任务时也能表现出色。
-
提升数据质量:拒绝采样的过程中,模型生成的输出会被筛选,只有高质量的样本才会被保留用于微调。这确保了训练数据的质量,避免了低质量数据对模型性能的负面影响。
-
平衡推理与通用性:在推理模型的训练中,模型可能会过度专注于推理任务,导致在其他任务上的表现不佳。通过拒绝采样,模型可以在推理能力和通用能力之间取得平衡,使其既能处理复杂的推理任务,也能在更广泛的场景中表现出色。
拒绝采样的具体应用
在DeepSeek R1的训练过程中,拒绝采样被用于第三阶段,目的是将模型的通用能力重新引入到推理模型中。具体步骤如下:
-
生成大量输出:模型会生成大量的输出,这些输出既包括推理任务的输出,也包括通用任务的输出(如对话、文本生成等)。
-
筛选高质量数据:通过奖励模型或人工筛选,选择高质量的输出。这些高质量的输出会被用于微调模型。
-
微调模型:使用筛选出的高质量数据对模型进行微调,提升模型在推理任务和通用任务上的表现。
最终RL训练的目标
在拒绝采样之后,DeepSeek R1进行了最终的强化学习(RL)训练,目的是进一步提升模型的用户友好性和通用性。这一阶段的训练混合了可验证领域的提示(如数学问题)和标准RLHF(基于人类反馈的强化学习)偏好调优的提示。通过这种方式,模型不仅能够在推理任务上表现出色,还能在处理更广泛的用户需求时提供更好的体验。
混合训练的关键点
-
数据平衡:在混合训练中,如何平衡可验证领域的数据和通用任务的数据是一个关键问题。过多的推理数据可能会导致模型在通用任务上的表现下降,而过多的通用数据则可能会削弱模型的推理能力。
-
奖励模型的选择:在混合训练中,奖励模型的选择至关重要。如果奖励模型没有见过长推理链的数据,可能无法准确评估模型的推理能力。因此,选择合适的奖励模型是确保训练效果的关键。
-
性能保持:在引入通用能力的同时,如何保持模型在推理任务上的性能也是一个挑战。这需要在训练过程中进行精细的调整,确保模型在多个任务上都能表现出色。
总结
拒绝采样和最终的RL训练是DeepSeek R1训练过程中的关键步骤,它们帮助模型从专注于推理任务扩展到具备更强的通用能力。通过生成和筛选高质量数据,模型能够在推理能力和用户体验之间取得平衡,最终成为一个既强大又用户友好的推理语言模型。这种方法不仅适用于DeepSeek R1,也为未来的推理模型训练提供了重要的参考。
==================================================
核心观点:蒸馏推理轨迹(如R1论文中的方法)是目前训练推理模型的重要方法,但并非唯一途径。过程奖励模型(PRMs)和蒙特卡洛树搜索(MCTS)正在逐渐失去其重要性,表明推理模型领域的研究方法正在快速演变。
详细分析:
蒸馏推理轨迹(Distillation of Reasoning Traces)是当前训练推理模型的一种重要方法,尤其是在DeepSeek R1的论文中得到了广泛应用。这种方法的核心思想是通过从大型、高性能的推理模型中提取其推理过程(即“推理轨迹”),并将这些轨迹用于训练较小的模型。通过这种方式,较小的模型可以模仿大型模型的推理行为,从而在不具备同等计算资源的情况下,仍然能够获得较高的推理性能。
蒸馏推理轨迹的优势:
-
计算效率高:蒸馏方法允许较小的模型通过模仿大型模型的推理过程来提升性能,而不需要从头开始进行大规模的训练。这大大减少了计算资源的消耗。
-
性能提升显著:通过蒸馏,较小的模型可以在推理任务上获得接近大型模型的性能,尤其是在复杂的数学和逻辑推理任务中。
-
数据生成:蒸馏还可以用于生成高质量的合成数据,这些数据可以用于进一步训练其他模型,形成一个良性循环。
蒸馏推理轨迹的局限性:
-
依赖大型模型:蒸馏方法的前提是存在一个高性能的大型模型,这意味着如果没有这样的模型,蒸馏方法就无法实施。
-
性能上限:蒸馏模型的性能通常不会超过其“教师模型”(即被蒸馏的大型模型),因此,蒸馏方法在提升模型性能方面存在一定的上限。
过程奖励模型(PRMs)和蒙特卡洛树搜索(MCTS)的衰落:
-
过程奖励模型(PRMs):PRMs是一种通过奖励模型在推理过程中的中间步骤来引导模型进行更准确的推理的方法。然而,随着RL(强化学习)方法的进步,尤其是像DeepSeek R1这样的大规模RL训练,PRMs的复杂性和计算成本使其逐渐失去了吸引力。RL方法可以直接通过最终答案的准确性来训练模型,而不需要复杂的中间步骤奖励机制。
-
蒙特卡洛树搜索(MCTS):MCTS是一种在推理过程中进行搜索和决策的方法,常用于棋类游戏等需要复杂决策的场景。然而,MCTS的计算成本非常高,尤其是在大规模推理模型中,其效率远不如直接通过RL训练模型。随着RL方法的成熟,MCTS在推理模型中的应用逐渐减少。
推理模型研究方法的快速演变:
-
从搜索到RL的转变:早期的推理模型(如OpenAI的o1)曾依赖搜索方法(如MCTS)来提升推理能力,但随着RL方法的进步,尤其是像DeepSeek R1这样的大规模RL训练,推理模型的研究重点已经从搜索转向了直接通过RL训练模型。
-
开放权重模型的崛起:DeepSeek R1的发布标志着开放权重模型在推理模型领域的崛起。与传统的闭源模型相比,开放权重模型允许研究人员和开发者自由地在其基础上进行改进和扩展,这加速了推理模型领域的研究进展。
-
多样化的训练方法:虽然蒸馏推理轨迹是目前的重要方法,但研究人员也在探索其他训练方法,如混合训练(结合RL和SFT)、多任务学习等。这些方法的多样性表明,推理模型领域的研究方法正在快速演变,未来可能会出现更多创新的训练策略。
总结:
蒸馏推理轨迹是目前训练推理模型的重要方法,尤其是在资源有限的情况下,它提供了一种高效的方式来提升模型的推理能力。然而,随着RL方法的进步和开放权重模型的崛起,推理模型领域的研究方法正在快速演变。过程奖励模型(PRMs)和蒙特卡洛树搜索(MCTS)等传统方法正在逐渐失去其重要性,未来的研究可能会更加注重直接通过RL训练模型,以及探索更多创新的训练策略。
==================================================
核心观点:当前一些研究(如DeepSeek论文)存在过度依赖人类先验的问题,这可能限制了模型的创新性。推理模型领域的新研究(如Kimi 1.5和Tülu 3 RLVR的应用)正在快速发展,但仍需更多数据集和基础设施支持。
详细分析:
过度依赖人类先验的问题
在当前的推理模型研究中,尤其是像DeepSeek R1这样的模型,存在一个显著的问题:过度依赖人类先验(human priors)。人类先验指的是在模型训练过程中,研究人员通过人工标注、规则设计或偏好调整等方式,将人类的思维模式、偏好和判断标准注入到模型中。虽然这种方法在短期内可以提升模型的性能和可解释性,但它也可能限制模型的创新性和泛化能力。
1. 限制模型的创新性
- 过度拟合人类偏好:当模型过度依赖人类先验时,它可能会过度拟合人类的偏好和思维方式,导致模型在面对新问题时缺乏创新性。例如,模型可能会倾向于生成符合人类预期的答案,而不是探索更优或更创新的解决方案。
- 抑制模型的自主推理能力:人类先验的引入可能会抑制模型的自主推理能力。模型可能会过于依赖人类的指导,而无法在复杂或未知的情境中自主进行推理和决策。
2. 泛化能力受限
- 领域依赖性:过度依赖人类先验的模型可能在特定领域表现良好,但在其他领域或任务中表现不佳。这是因为人类先验通常是基于特定领域的知识和经验,模型可能难以将这些知识泛化到其他领域。
- 对新问题的适应性差:当面对新问题或新情境时,过度依赖人类先验的模型可能难以适应,因为它们缺乏自主学习和推理的能力。
推理模型领域的新研究
尽管存在上述问题,推理模型领域的研究仍在快速发展。例如,Kimi 1.5和Tülu 3 RLVR等新模型的出现,展示了该领域的潜力和多样性。这些新研究试图通过不同的方法和技术来克服过度依赖人类先验的问题,并推动模型的创新性和泛化能力。
1. Kimi 1.5
- 自主推理能力:Kimi 1.5可能采用了更自主的推理机制,减少了对人类先验的依赖。通过强化学习和自监督学习,模型可以在没有人类干预的情况下进行推理和决策。
- 多模态学习:Kimi 1.5可能还引入了多模态学习,结合文本、图像和其他数据源,以增强模型的泛化能力和创新性。
2. Tülu 3 RLVR的应用
- 强化学习与验证反馈:Tülu 3 RLVR(Reinforcement Learning with Verifiable Rewards)通过强化学习和验证反馈机制,使模型能够在推理过程中自我验证和调整。这种方法减少了对人类先验的依赖,使模型能够自主学习和优化。
- 大规模数据集:Tülu 3 RLVR的应用还依赖于大规模数据集的支持。通过使用多样化的数据集,模型可以在不同领域和任务中进行训练,从而提高其泛化能力。
需要更多数据集和基础设施支持
尽管新研究展示了推理模型的潜力,但要实现这些模型的广泛应用和进一步创新,仍然需要更多的数据集和基础设施支持。
1. 数据集
- 多样性和规模:为了提升模型的泛化能力,需要更多多样化和大规模的数据集。这些数据集应涵盖不同领域、任务和情境,以便模型能够在各种情况下进行训练和测试。
- 开放数据集:开放数据集对于推动研究社区的合作和创新至关重要。通过共享数据集,研究人员可以更好地比较和验证不同模型的性能,从而加速技术进步。
2. 基础设施
- 计算资源:推理模型的训练和推理通常需要大量的计算资源。为了支持这些模型的开发和应用,需要更强大的计算基础设施,包括高性能计算集群和分布式计算平台。
- 工具和框架:开发工具和框架对于简化模型的训练和部署过程至关重要。这些工具和框架应支持多种算法和技术,以便研究人员可以灵活地进行实验和创新。
结论
当前推理模型研究中的过度依赖人类先验问题确实限制了模型的创新性和泛化能力。然而,随着Kimi 1.5和Tülu 3 RLVR等新研究的出现,该领域正在快速发展。为了进一步推动这些模型的创新和应用,需要更多的数据集和基础设施支持。通过多样化的数据集和强大的计算资源,推理模型有望在未来实现更大的突破和进步。
==================================================
核心观点:推理模型的价格战即将到来,DeepSeek R1的低价策略可能会对市场产生重大影响。这一趋势可能加速推理模型的普及和应用,同时也可能推动更多创新和竞争。
详细分析:
DeepSeek R1的低价策略确实可能对推理模型市场产生深远影响,尤其是在价格战即将到来的背景下。以下是对这一趋势的详细分析:
1. 价格战的背景
- OpenAI的定价策略:OpenAI的o1模型定价为每百万输入token 15美元,输出token 60美元。这一价格在市场上相对较高,部分原因是OpenAI在长上下文处理和推理模型领域的垄断地位。
- DeepSeek R1的低价策略:相比之下,DeepSeek R1的定价仅为每百万输入token 0.55美元,输出token 2.19美元。这一价格几乎是o1的十分之一,显著降低了使用推理模型的成本。
2. 价格战的影响
- 加速市场普及:低价策略将使得更多的企业和研究机构能够负担得起推理模型的使用成本,从而加速推理模型在各个领域的普及。无论是学术研究、工业应用还是创业公司,低成本的推理模型都将成为推动创新的重要工具。
- 推动竞争和创新:价格战将迫使其他公司(如OpenAI、Anthropic等)重新评估其定价策略,并可能促使它们推出更具竞争力的产品。这种竞争将推动整个行业的技术进步和创新,尤其是在推理模型的性能、效率和成本效益方面。
- 降低技术门槛:低价策略还将降低进入推理模型领域的门槛,吸引更多的开发者和研究人员参与其中。这将进一步推动开源社区的发展,促进更多开放权重的推理模型的出现。
3. 市场格局的变化
- OpenAI的垄断地位受到挑战:DeepSeek R1的低价策略可能打破OpenAI在推理模型市场的垄断地位。随着更多低成本、高性能的推理模型进入市场,OpenAI将面临更大的竞争压力,可能需要调整其商业模式和技术路线。
- 开源模型的崛起:DeepSeek R1的MIT许可证使得企业和研究人员可以自由地在其基础上进行二次开发和训练。这种开放权重的模式将吸引更多的开发者和企业参与,进一步推动开源推理模型的发展。
4. 未来趋势
- 推理模型的广泛应用:随着价格的下降,推理模型将在更多领域得到应用,如教育、医疗、金融、法律等。推理模型的普及将推动这些领域的自动化和智能化进程。
- 技术进步的加速:价格战将促使企业不断优化其模型架构、训练方法和基础设施,以降低成本并提高性能。这将加速推理模型技术的进步,推动更多创新和突破。
- 生态系统的繁荣:随着推理模型的普及,围绕推理模型的生态系统将逐渐形成,包括工具、框架、数据集、应用等。这将为开发者提供更多的资源和机会,进一步推动推理模型的发展。
5. 潜在挑战
- 质量与成本的平衡:虽然低价策略有助于普及推理模型,但如何在降低成本的同时保持模型的高性能和质量,将是企业面临的主要挑战。
- 数据隐私与安全:随着推理模型的广泛应用,数据隐私和安全问题将变得更加重要。企业需要在推动技术发展的同时,确保用户数据的安全和隐私。
总结
DeepSeek R1的低价策略标志着推理模型市场进入了一个新的竞争阶段。这一趋势将加速推理模型的普及和应用,推动更多创新和竞争。同时,企业需要在降低成本的同时,确保模型的高性能和质量,以应对市场的变化和挑战。
==================================================
相关文章:
DeepSeek R1:推理模型新纪元与价格战
标题:DeepSeek R1:推理模型新纪元与价格战 文章信息摘要: DeepSeek R1的发布标志着推理模型研究的重要转折点,其采用四阶段强化学习训练方法,结合监督微调和拒绝采样,显著提升了模型的推理能力。这一进展不…...
一文简单回顾Java中的String、StringBuilder、StringBuffer
简单说下String、StringBuilder、StringBuffer的区别 String、StringBuffer、StringBuilder在Java中都是用于处理字符串的,它们之间的区别是String是不可变的,平常开发用的最多,当遇到大量字符串连接的时候,就用StringBuilder&am…...
机器学习:支持向量机
支持向量机(Support Vector Machine)是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的广义线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。 假设两类数据可以被 H x : w T x…...
简单的停车场管理系统的C语言实现示例
以下是一个简单的停车场管理系统的C语言实现示例。该示例使用结构体来管理停车场的车位信息,并提供基本车辆进入、离开以及显示停车场状态功能。 #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_SLOTS 10 // 最大车位数…...
网络工程师 (3)指令系统基础
一、寻址方式 (一)指令寻址 顺序寻址:通过程序计数器(PC)加1,自动形成下一条指令的地址。这是计算机中最基本、最常用的寻址方式。 跳跃寻址:通过转移类指令直接或间接给出下一条指令的地址。跳…...
基于Python的智慧物业管理系统
【Python】基于Python的智慧物业管理系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目背景二、研究目的三、项目意义四、项目功能五、项目创新点六、开发技术介绍七、项目界面展示(部分展示,详细看视频)八、项…...
使用 Vue 3 的 watchEffect 和 watch 进行响应式监视
Vue 3 的 Composition API 引入了 <script setup> 语法,这是一种更简洁、更直观的方式来编写组件逻辑。结合 watchEffect 和 watch,我们可以轻松地监视响应式数据的变化。本文将介绍如何使用 <script setup> 语法结合 watchEffect 和 watch&…...
环境变量
目录 一.概念介绍 1.1命令行参数 二.一个例子,一个环境变量 2.1查看环境变量 2.2如何理解环境变量呢?存储的角度 2.3环境变量最开始从哪里来的呢? 概括: 1. 环境变量的存储 2. 命令查找过程 3. 环境变量表和命令行参数…...
Scale AI 创始人兼 CEO采访
Scale AI 创始人兼 CEO 亚历山大王(Alexander Wang)首次亮相节目接受采访。他的公司专注于为人工智能工具提供准确标注的数据。早在 2022 年,王成为世界上最年轻的白手起家亿万富翁。 美国在全球人工智能竞赛中的地位,以及它与中…...
MongoDB中常用的几种高可用技术方案及优缺点
MongoDB 的高可用性方案主要依赖于其内置的 副本集 (Replica Set) 和 Sharding 机制。下面是一些常见的高可用性技术方案: 1. 副本集 (Replica Set) 副本集是 MongoDB 提供的主要高可用性解决方案,确保数据在多个节点之间的冗余存储和自动故障恢复。副…...
【Erdas实验教程】001:Erdas2022下载及安装教程
文章目录 一、Erdas2022安装教程1. 安装主程序2. 拷贝补丁3. 安装LicenseServer4. 运行软件 二、Erdas2022下载地址 一、Erdas2022安装教程 Erdas2022全新界面如下: 1. 安装主程序 下载安装包并解压,以管理员身份运行 “setup.exe” 或 “setup.vbs”&…...
Python3 【函数】水平考试:精选试题和答案
Python3 【函数】水平考试:精选试题和答案 Python 函数考试试卷及答案。共计30题,其中选择题15题、填空题10题、编程题5题,试卷满分为100分。 一、选择题(每题 2 分,共 30 分) 以下哪个关键字用于定义函数…...
stm8s单片机(三)时钟系统与时钟切换
一个单片机系统要正常运行应包括四个部分: 电源,晶振,复位电路,下载电路。 晶振就是时钟。 stm8有四种时钟源 HSE (High Speed External clock signal)HSE user-ext (High Speed External clock signal user external)HSI (High Speed Inter…...
ChatGPT高效处理图片技巧使用详解
ChatGPT,作为OpenAI开发的预训练语言模型,主要用于生成自然语言文本的任务。然而,通过一些技巧和策略,我们可以将ChatGPT与图像处理模型结合,实现一定程度上的图像优化和处理。本文将详细介绍如何使用ChatGPT高效处理图…...
图漾Halcon版本SDK使用教程【V1.1.0新版本】
文章目录 1.下载并安装 Halcon1.1 下载Halcon软件1.2 安装Halcon 2.下载Camport_Halcon_gentl SDK2.1 下载Camport_Halcon_gentl SDK2.2 Camport Halcon SDK介绍2.3 Halcon SDK环境配置与运行2.3.1 SDK环境配置2.3.2 获取相机支持的参数2.3.3 配置相机参数并运行相机 2.4 遍历H…...
C语言二级
//请编写函数fun(),该函数的功能是:计算并输出给定整数n的所有因 //子(不包括1和自身)之和。规定n的值不大于1000。例如,在主函数 //中从键盘给n输入的值为856,则输出为:sum 763。 //注意&…...
软工_软件工程
2025.01.24:软件工程导论学习笔记 第2节 软件工程 2.1 软件发展 - 四个阶段2.1.1 程序设计2.1.2 程序系统2.1.3 软件工程2.1.4 第四阶段 2.2 软件危机2.2.1 软件危机 - 定义2.2.2 软件危机 - 主要表现 2.1 软件发展 - 四个阶段 2.1.1 程序设计 软件生产个体化&…...
【creo】CREO配置快捷键方式和默认单位
了解CREO工作目录设置 设置快捷方式启动目录,就能自动加载其中的配置。 一、通过键盘快捷方式 保存配置 creo_parametric_customization.ui 文件: 二、通过映射键录制 通过这种方式可以监听鼠标的点击事件。使用键盘快捷方式无法找到需要的动作时候可…...
go理论知识——Go Channel 笔记 [特殊字符]
go理论知识——Go Channel 笔记 📝 1. 基本概念 🧠 1.1 Channel 是什么? Channel 是 Go 语言中用于在不同 Goroutine 之间进行通信的机制。Channel 是类型安全的,意味着你只能发送和接收特定类型的数据。 1.2 Channel 的创建 …...
微信小程序压缩图片
由于wx.compressImage(Object object) iOS 仅支持压缩 JPG 格式图片。所以我们需要做一下特殊的处理: 1.获取文件,判断文件是否大于设定的大小 2.如果大于则使用canvas进行绘制,并生成新的图片路径 3.上传图片 async chooseImage() {let …...
第05章 11 动量剖面可视化代码一则
在计算流体力学(CFD)中,动量剖面(Momentum Profiles)通常用于描述流体在流动方向上的动量分布。在 VTK 中,可以通过读取速度场数据,并计算和展示动量剖面来可视化呈现速度场信息。 示例代码 以…...
Android Studio 新版本24.2.2 运行后自动切到 LogCat
最近更新了 Android studio 版本,发现有个问题: 每次 Run app 之后。都会自动切换到 run 标签。这让我非常不习惯。我个人习惯在app 运行后查看Logcat 最后靠 deepSeek 找到一种解决方案: Android Studio 中截图如下:...
使用EVE-NG-锐捷实现OSPF
一、OSPF基础知识 Open shortest Path First(OSPF)开放式最短路径优先协议 1.OSPF的关系状态 (1)邻居关系(TWO-WAY) 只发送hello包不发送LSA包(链路状态通告包) (2)邻接关系(FULL) OSPF设备与设备之间相互建立OSPF关系,初始为邻居关系(TWO-WAY)状态࿰…...
解决使用Selenium时ChromeDriver版本不匹配问题
在学习Python爬虫过程中如果使用Selenium的时候遇到报错如下session not created: This version of ChromeDriver only supports Chrome version 99… 这说明当前你的chrome驱动版本和浏览器版本不匹配。 例如 SessionNotCreatedException: Message: session not created: This…...
景联文科技加入AIIA联盟数据标注分委会
2025年1月16日,中国人工智能产业发展联盟(简称AIIA)数据委员会数据标注分委会(以下简称“分委会”)正式成立。景联文科技成为第一批AIIA联盟数据标注分委会委员单位。 数据标注分委会的成立旨在搭建数据标注领域产学研…...
IoTDB结合Mybatis使用示例(增删查改自定义sql等)
IoTDB时序库是当前越来越流行以及基于其优势各大厂商越来越易接受的国产开源时序数据库,针对IoTDB的内容不做过多介绍,在使用该时序库时,往往有一定入门门槛,不同于关系型数据库或文档型数据库那般方便维护和接入开发,…...
穷举vs暴搜vs深搜vs回溯vs剪枝系列一>解数独
题目: 解析: 部分决策树: 代码设计&剪枝&回溯: 代码: class Solution {private boolean[][] row, col;private boolean[][][] gird; public void solveSudoku(char[][] board) {//下标->数字ÿ…...
C#@符号在string.Format方法中作用
本文详解@符号在string.Format方法中作用。...
mysql 学习2 MYSQL数据模型,mysql内部可以创建多个数据库,一个数据库中有多个表;表是真正放数据的地方,关系型数据库 。
在第一章中安装 ,启动mysql80 服务后,连接上了mysql,那么就要 使用 SQL语句来 操作mysql数据库了。那么在学习 SQL语言操作 mysql 数据库 之前,要对于 mysql数据模型有一个了解。 MYSQL数据模型 在下图中 客户端 将 SQL语言&…...
JVM栈溢出线上环境排查
#查看当前Linux系统进程ID、线程ID、CPU占用率(-eo后面跟想要展示的列) ps H -eo pid,tid,%cpups H -eo pid,tid,%cpu |grep tid #使用java jstack 查看进程id下所有线程id的情况 jstack pid 案例2 通过jstack 排查死锁问题 #启动java代码 jstack 进…...
【vue3组件】【大文件上传】【断点续传】支持文件分块上传,能够在上传过程中暂停、继续上传的组件
一、概述 本示例实现了一个基于 Vue3 和 TypeScript 的断点上传功能。该功能支持文件分块上传,能够在上传过程中暂停、继续上传,并且支持检测已经上传的分块,避免重复上传,提升上传效率。以下是关键的技术点与实现流程࿱…...
Kafka运维宝典 (三)- Kafka 最大连接数超出限制问题、连接超时问题、消费者消费时间超过限制问题详细介绍
Kafka运维宝典 (三) 文章目录 Kafka运维宝典 (三)一、Kafka Broker 配置中的最大连接数超出限制问题1. 错误原因2. 相关 Kafka 配置参数2.1 connections.max2.2 max.connections.per.ip2.3 num.network.threads2.4 connections.ma…...
【135. 分发糖果 困难】
题目: n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计…...
AAAI2024论文解读|HGPROMPT Bridging Homogeneous and Heterogeneous Graphs
论文标题 HGPROMPT: Bridging Homogeneous and Heterogeneous Graphs for Few-shot Prompt Learning 跨同构异构图的小样本提示学习 论文链接 HGPROMPT: Bridging Homogeneous and Heterogeneous Graphs for Few-shot Prompt Learning论文下载 论文作者 Xingtong Yu, Yuan…...
算法题(49):反转链表II
审题: 需要我们对指定范围的链表进行反转,并返回反转后链表的头结点 思路: 方法一:vector法 我们先遍历一次链表,并把数据对应的存在数组中,然后利用数组的reverse方法进行反转数据,最后再遍历一…...
代码随想录day20
235. 利用二叉搜索树的特性即可 /** lc appleetcode.cn id235 langcpp** [235] 二叉搜索树的最近公共祖先*/// lc codestart /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) :…...
文档智能扫描,提升无纸化办公效率
随着无纸化办公的推广和移动设备的普及,用户迫切需要将纸质文档快速、准确地转换成电子格式,以提高工作效率和信息管理的便捷性。同时,用户将文档扫描成电子版后,可以自行通过加密和访问控制提高电子文档的安全性,以满…...
差分等长的原理
差分等长是指在设计差分信号传输线路时,保证两条差分线的长度尽量一致,长度之差在一个合理的范围内。这是为了确保两个差分信号时刻保持相反极性,减少共模分量,从而提高信号传输的质量。 在差分信号传输中,两条差分线…...
“““【运用 R 语言里的“predict”函数针对 Cox 模型展开新数据的预测以及推理。】“““
主题与背景 本文主要介绍了如何在R语言中使用predict函数对已拟合的Cox比例风险模型进行新数据的预测和推理。Cox模型是一种常用的生存分析方法,用于评估多个因素对事件发生时间的影响。文章通过具体的代码示例展示了如何使用predict函数的不同参数来获取生存概率和…...
真正理解std::move
std::move的作用只有一个,那就是把一个左值强制转换为右值,有了这个右值,右值允许的任何操作就可以实施了。比如:1. 这个右值可以赋给一个左值变量,2. 这个右值可以被一个右值引用来引用。 class A {public:A(int n):…...
Vue3.5 企业级管理系统实战(三):页面布局及样式处理 (Scss UnoCSS )
本章主要是关于整体页面布局及样式处理,在进行这一章代码前,先将前两章中的示例代码部分删除(如Home.vue、About.vue、counter.ts、App.vue中引用等) 1 整体页面布局 页面整体布局构成了产品的框架基础,通常涵盖主导…...
Python3 【函数】项目实战:5 个新颖的学习案例
Python3 【函数】项目实战:5 个新颖的学习案例 本文包含5编程学习案例,具体项目如下: 简易聊天机器人待办事项提醒器密码生成器简易文本分析工具简易文件加密解密工具 项目 1:简易聊天机器人 功能描述: 实现一个简易…...
17.Word:李楠-学术期刊❗【29】
目录 题目 NO1.2.3.4.5 NO6.7.8 NO9.10.11 NO12.13.14.15 NO16 题目 NO1.2.3.4.5 另存为手动/F12Fn光标来到开头位置处→插入→封面→选择花丝→根据样例图片,对应位置填入对应文字 (手动调整即可)复制样式:开始→样式对话框→管理…...
基于GS(Gaussian Splatting)的机器人Sim2Real2Sim仿真平台
项目地址:RoboGSim 背景简介 已有的数据采集方法中,遥操作(下左)是数据质量高,但采集成本高、效率低下;传统仿真流程成本低(下右),但真实度(如纹理、物理&…...
基于Django的豆瓣影视剧推荐系统的设计与实现
【Django】基于Django的豆瓣影视剧推荐系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用了Python作为后端开发语言,采用Django作为后端架构,结…...
提升企业内部协作的在线知识库架构与实施策略
内容概要 在当前快速变化的商业环境中,企业对于提升内部协作效率的需求愈显迫切。在线知识库作为信息存储与共享的平台,成为了推动企业数字化转型的重要工具。本文将深入探讨如何有效打造与实施在线知识库,强调架构设计、知识资产分类管理及…...
Vuex中的getter和mutation有什么区别
在现代前端开发中,状态管理是一个不可忽视的话题,而Vuex作为Vue.js的官方状态管理库,在大型应用中扮演着至关重要的角色。当我们使用Vuex进行状态管理时,getter和mutation是两个重要的概念。虽然它们都是用来处理状态的࿰…...
springboot 动态线程池
在Spring Boot中,可以使用ThreadPoolTaskExecutor类来创建动态线程池。以下是一个示例: 首先,需要在配置文件中配置线程池的属性,例如最小线程数、最大线程数、线程存活时间等。可以在application.properties或application.yml中…...
Android - 通过Logcat Manager简单获取Android手机的Log
由于工作需要,经常需要获取Android手机的Log。 平常都是通过adb命令来获取,每次都要写命令。 偶然的一个机会,我从外网发现了一个工具 Logcat Manager,只需要通过简单的双击即可获取Android的Log,这里也分享一下。 目…...
qt-QtQuick笔记之常见项目类简要介绍
qt-QtQuick笔记之常见项目类简要介绍 code review! 文章目录 qt-QtQuick笔记之常见项目类简要介绍1.QQuickItem2.QQuickRectangle3.QQuickImage4.QQuickText5.QQuickBorderImage6.QQuickTextInput7.QQuickButton8.QQuickSwitch9.QQuickListView10.QQuickGridView11.QQuickPopu…...