论文阅读:LM-Cocktail: Resilient Tuning of Language Models via Model Merging

news2024/11/17 9:58:27

论文链接
代码链接

Abstract

预训练的语言模型不断进行微调,以更好地支持下游应用。然而,此操作可能会导致目标领域之外的通用任务的性能显著下降。为了克服这个问题,我们提出了LM Cocktail,它使微调后的模型在总体上保持弹性。我们的方法以模型合并(Model Merging)的形式进行,其中微调的语言模型通过加权平均与预训练的基础模型或其他领域的对等模型合并。尽管简单,LM Cocktail却出奇地有效:由此产生的模型在整个通用任务领域内拥有强大的性能,同时在其目标领域保持卓越的能力。我们在流行的基准测试(包括FLAN、MMLU、MTEB)上使用LLama和BGE模型进行了全面的实验,其结果验证了我们提出的方法的有效性。

1. Introduction

语言模型(LM)是人工智能和自然语言处理的基石。得益于训练规模和模型尺寸的大规模扩张,语言模型在各种NLP任务上取得了显著突破,包括表示(representation),理解(understanding),推理(reasoning)和生成( generation)。近年来语言模型已经被用作许多应用的关键构件,比如信息检索(information retrieval),对话系统(conversational systems)以及自主AI agents。在许多应用中语言模型经常通过pre-training+fine-tuning的范式来被使用。具体来说,一第一步得进行无监督或者监督方式的pre-train训练出一个通用模型,然后是将这个pre-train出来的通用模型用一个特定的领域的数据进行fine-tune让它变成一个针对特定下游任务的专用模型。

尽管每个特定领域的性能都有所增强,但是经过fine-tune操作之后语言模型在目标领域之外的通用领域的性能会下降。这种现象通常被称作灾难性遗忘。如Figure1所示,在目标任务上fine-tune Llama模型能明显提高其在这个任务上的性能,但是在其他无关的任务上性能就下降了。在许多真实场景中灾难性遗忘是不被欢迎的,因为语言模型需要在通用领域和专用领域上同时展现出良好的性能。

在这里插入图片描述
与灾难性遗忘的斗争代表了机器学习社区内的一场持续运动,近年来不断提出了许多方法。有两种具有代表性的策略被许多现有方法广泛采用作为设计逻辑。一种策略是依靠经验回放(experience replay),在这种情况下,模型是用新任务和先前任务的混合训练数据学习的;另一种策略是利用正则化,在新的微调模型和历史预训练模型之间对预测结果或权重的变化进行正则化。考虑到现有方法的实际限制,我们仍然需要探索在微调语言模型背景下更有效的方法。一方面,不可能完全收集所有先前任务的训练样本,并在出现新任务后在历史数据以及新数据上重新训练模型。另一方面,正则化(regularization)可能导致对现有微调操作(fine-tuning operations)的重大改变,这些改变可能与已经确立的微调流程(fine-tuning pipeline)不兼容。

在这项工作中,我们的目标是设计一个有效的框架来应对灾难性遗忘,这将使微调的语言模型在通用任务中保持弹性。此外,我们还希望新框架更实用,这意味着它必须易于操作,并与通用模型训练工作流程完全兼容。考虑到这些因素,我们提出了一种新的方法,称为LM Cocktail,这个方法的主要特点是,它能够在模型合并的基础上,不断地适应已经经过精细微调(well-fine-tuned)的语言模型。LMCocktail是一种通用的范式,可以在几种不同的条件下工作。在最简单的形式中,它直接将微调模型与预训练的基础模型合并,以提高微调模型的通用能力。它能够进一步融合更多针对其他通用领域进行微调(fine-tuned)的同类模型,并通过few-shot验证样本估计的权重进行合并,从而产生更强的实际表现。最后,即使没有微调数据,合并策略仍然可以应用于预训练基础模型和其他通用领域的微调模型,以获得竞争弹性。

鉴于其工作机制,我们提出的方法有几个直接的优点。首先,LM Cocktail非常简单:混合权重可以直接从验证样本中得出,而不需要昂贵的训练操作。其次,LM Cocktail与现有的训练流程完全兼容,因为它只作为微调过程后的改进步骤。最重要的是,LM Cocktail在经验上具有竞争力。根据我们对三个代表性基准的评估,包括FLAN、MMLU和MTEB,LM Cocktail在通用领域任务中实现了很强的弹性,同时在其目标领域保持了卓越的微调性能。最后,LM Cocktail被证明是普遍适用的:它可以为语言生成任务中基于解码器的LM和语言表示任务中基于编码器的LM做出重大贡献。

2. LM-Cocktail

2.1 通用范式

作为先决条件,我们给出了一个基础语言模型,表示为 M b M_b Mb,它已经为通用应用进行了良好的预训练。基础模型(base model)的典型例子,包括Llama-Chat和FLAN-PaLM。这两个模型都是大型语言模型(LLMs),它们是通过大规模的无监督学习(unsupervised learning)和通用(general-purpose,原文用的是general-purse,应该是拼写错误)有监督微调学习得到的。基础语言模型通过针对特定领域的训练样本 X t X_t Xt 进行持续的微调,以支持一个特定的下游任务 t a s k ( t ) task(t) task(t) 。这个过程的结果是得到一个针对该任务微调后的模型,记作 M t M_t Mt

尽管模型 M t M_t Mt 已经针对特定任务 t t t 进行了微调,但它在处理其他非目标领域的通用任务时,其实际表现可能会退化,这种现象被称为“灾难性遗忘”(catastrophic forgetting)。LM Cocktail的目标是在对目标任务进行微调时保持通用能力。LM Cocktail的核心是通过聚合不同模型的权重,将多个模型(具有相同的架构但权重不同)组合成一个统一的模型。通过这种方式,弹性微调模型可以整合多个单独模型的优势。

为了推导出LM Cocktail的适当模型合并策略,有两个基本问题需要解决:1)合并哪组候选模型,2)如何确定合并权重。知道弹性微调LM是为了恢复通用领域的退化性能,有两个候选模型来源需要考虑。一个来源是预训练的基础模型 M b M_b Mb,另一个来源则是其他领域中的整组微调模型 ( { M d } D ) (\{M_d\}_D) ({Md}D) 。在不失一般性的情况下,我们推导出以下形式的合并函数:
在这里插入图片描述
其中 M r M_r Mr 是弹性调优模型(resilient-tuned model ), α \alpha α 是一个默认值为0.5的超参数, w i w_i wi 表示已归一化的合并权重: ∑ i ω i = 1 \sum_i \omega_i=1 iωi=1

“resilient-tuned model”指的是经过调优以恢复在一般领域中的退化性能的模型,同时要求在目标领域中保持与直接调优模型相同的强大能力。这里,“resilient”意味着模型具有恢复力或韧性,能够在多种场景下保持良好的性能。因此,在选择合并权重时,候选模型在目标领域中的性能是关键指标。在选择合并权重时,候选模型在目标领域中的性能是关键指标。这意味着,如果一个模型在目标领域中表现良好,那么它在合并时应该被赋予更高的权重。基于这种直觉,我们介绍以下形式的权重计算:

在这里插入图片描述
在这个函数中, − L ( M i , E t ) -\mathcal{L}(\mathcal{M_i}, E_t) L(Mi,Et)代表候选模型 M i M_i Mi 在目标域 t t t 的few-shot 样本 E t E_t Et上的预测损失, τ \tau τ 是控制平滑度的温度系数。也就是说,目标域上的损失越大,分配给候选模型的权重就越小。因此,我们可以为在目标任务中表现非常糟糕的模型提供较低的系数。few-shot 样本是来自目标域的一小部分保留样本。根据我们的实证研究,5-shot 样本在不同的集合中都具有足够的竞争力。

2.2 变体

如上面的Eq 1所示,一般形式的LM Cocktail需要三个要素:基础模型 M b \mathcal M_b Mb、目标域的微调模型 M t \mathcal M_t Mt 和其他域中的微调模型 ( { M d } D ) (\{M_d\}_D) ({Md}D)

实际上要求可以大大放宽,以适应不同的现实环境。这里介绍两种常见的变体形式,以应对缺少多样化通用领域专家模型或无法进行目标领域微调的情况。

  • Mono Specialist:在缺乏多样化的、在通用领域微调过的模型时采用的一种策略,具体来说,就是将基础模型(base model) M b \mathcal M_b Mb 和目标领域中的单一专家模型(mono-specialist model) M t \mathcal M_t Mt进行组合。这里的重点是除了目标领域外没有其他的专用领域fine-tune出的模型。

在这里插入图片描述
鉴于与其他模型相比,微调模型 M t \mathcal M_t Mt 通常表现出显著较低的损失,我们没有使用Eq 2来计算权重;相反,我们引入了一个超参数 α \alpha α。实验结果表明,简单地将 α \alpha α 设置为0.5就会产生良好的结果。

  • Without finetune:由于缺乏目标领域的数据或计算资源,目标领域中的微调可能会受到限制。在这种情况下,合并函数转换为基本模型和用通用领域数据fine-tune过的模型的组合。
    在这里插入图片描述

在这个场景中,我们假设用于合并权重(即公式2中提到的)的少量样本(few-shot) E t E_t Et 总是可用的,这在实际操作中是一个相对温和的条件。通过这种方式,我们不需要训练任何新模型,可以直接通过最小的成本无缝集成现有模型,以获得为下游任务量身定制的模型。解决了在没有针对特定领域进行微调(fine-tuning)的情况下,如何通过整合现有模型来获得一个适用于下游任务模型的问题。

3. 实验设置

我们使用两种模型进行了实验:基于解码器的LM和基于编码器的LM。我们分别对9个基于编码器的模型和9个基于解码器的模型进行了微调,然后评估了微调模型和弹性调优模型(resilient-tuned models)的性能。以下是详细的实验设置。

3.1 基于解码器的语言模型

  • Base model:使用Llama-2-chat-7b作为base-model,这个基础模型在各种任务上展现出了令人印象深刻的“zero-shot ability”(零样本能力)。
  • Fine-tune:我们使用(Cheng等人,2023;Wang等人,2023)收集的数据集,其中包括来自FLAN的30个任务。其中选取9个不同的任务来对 base-model 进行 fine-tune , 包括 NQ, SQuAD, Hellaswag, SST2, Winogrande, CommonGen, MRPC, AG News, and MNLI. 有关训练数据的更多信息,请参阅附录A。微调后的代码基于FastChat包。学习率为2e-5,批大小为128,最大迭代次数为3。
  • Evaluation:我们评估了(Cheng等人,2023;Wang等人,2023)收集的30个任务的测试集的性能。此集合中还包括微调任务(NQ、SQuAD、Hellaswag、SST2、Winogrande、CommonGen、MRPC、AG News和MNLI)的测试数据。每个任务的详细指标可以参考(Wang等人,2023)。此外,我们还对MMLU数据集中的其他任务进行了实验,MMLU数据集是LLM广泛使用的基准。

3.2 基于编码器的语言模型

  • Base Model:我们针对 embedding 任务选择了 bge-base-v1.5 作为 base-model ,它可以将文本映射成 embedding 表示。

  • Fine-tune:我们选择来自 sentence transformer repo 的9个数据集,包括GooAQ, Yahoo Answers, MSMarco, Stack Exchange, ELI5, SQuAD, AmazonQA, Quora, HotpotQA

    附录A显示了训练数据的详细信息。我们使用FlagEmbedding工具在这些数据集上微调BGE模型。我们使用学习率为2e-5的AdamW优化器。批量大小为256,对比学习的温度系数为0.02。

  • Evaluation:我们使用mteb基准测试中的15个检索任务来评估模型,并使用NDCG@10作为评价指标。3个微调任务的测试数据:MSMarco、HotpotQA和Quora都包含在这个基准中。为了便于跨各种任务进行训练和测试,我们没有添加来自(Xiao等人,2023)的默认查询指令(query instruction)。

4. 实验结果

在本节中,我们将展示实验结果并呈现关键发现。首先,我们比较了微调模型和弹性调优模型(resilient-tuned models)的性能。接下来,我们评估LM Cocktail在无法对目标任务进行微调时的性能。最后我们探索了权重 α \alpha α 和样本数量的影响。

4.1 总体比较

我们的实验比较了基础模型、相应的微调模型和通过 LM Cocktail 弹性调优模型(resilient-tuned models)的性能。对于每个微调的模型,我们衡量其在特定目标任务上的性能以及在其他任务上的表现。我们还测试了使用我们的方法进行弹性调优的模型,其中包括两个变体:(1)LM-Cocketail2:将微调模型与基础模型合并;(2) LM-Cocketail10:合并10个模型,包括在目标任务上微调的模型、基础模型,以及第3.1节中剩余的8个微调模型。我们在Table 1和Table 2中总结了结果。有关每个测试任务的详细结果,请参阅附录B.1。

在这里插入图片描述

4.1.1 基于解码器的语言模型的分析

从表1中,我们可以观察到:

(1)在相应的任务中,微调后的模型比基础模型有了显著的改进。例如,在AG News上微调的模型在相应任务中的准确率为94.42%,而基础模型在同一任务上的准确率仅为40.9%。

(2) 然而,这种收益是有代价的:在其他任务中,微调后的模型往往落后于基础模型的性能。例如,微调模型在其他任务上的准确率仅为38.58%,远低于基础模型的46.8%。

(3) 相比之下,LMCocktail 2在相应任务中保持了有效性(在AG News任务中为94.46%),同时在其他任务中也表现出了竞争力(47.73%)。LM-Cocketail10进一步提高了其他任务的性能(合并后的准确率从38.58%提高到48.32%)。在大多数情况下,LM-Cocketail2和LM-CockeTail10在其他任务上甚至优于基础模型。这一发现表明,我们的方法可以整合要合并的模型的优势,甚至在性能上超越它们。

(4) 此外,对某些任务(如NQ)进行微调不仅可以提高相应任务的性能,还可以提高其他任务的性能;我们提出的方法在这些任务上仍然有效:LMCocktail在目标任务和其他任务中都达到了更高的精度。这些发现证明了我们方法的多功能性。

4.1.2 基于编码器的语言模型的分析

在这里插入图片描述

编码器模型的结果如 Table 2 所示。我们可以在第4.1.1节中观察到同样的趋势:微调模型在相应任务中比基础模型有了显著改进,但在其他无关任务上的准确性较低。LM-Cocktail2显著提高了下游任务的性能,同时保持了其他无关任务的性能。LM-Cocketail10通过合并在不同任务上微调的模型,进一步提高了通用能力。这些结果表明了LM Cocktail对生成模型和表示模型的适用性,验证了我们提出的方法的普遍性。

4.2 不进行fine-tune 的 LM-Cocktail

在许多情况下,目标领域的微调并不总是可用的。例如,如果没有足够的训练数据集来执行新任务,那么对特定于此任务的专用模型进行微调是不可行的。此外,为每个任务微调单独的模型是昂贵且不灵活的,尤其是在微调大型语言模型时。我们在 Table 3 和 Table 4 中报告了 LM-Cocktail 的性能,没有进行微调。

4.2.1 基于解码器的语言模型的分析

为了评估在微调中未看到的任务的性能,我们从 MMLU 基准中引入了了一些额外的任务,MMLU中有57个任务,与第3.1节中的微调任务不同。我们使用广泛使用的 EleutherAI框架中的评估脚本和 five-shot 样本。

Table 3 总结了结果。“LlamaICL”通过五个样本表明了情境学习(in-context learning)的结果。对于多任务学习,我们合并了9个微调任务的所有训练数据(见第3.1节),并在此多任务数据集上微调Llama。对于LM Cocktail,我们使用官方的5个样本来计算权重,并通过合并9个微调模型和基础模型来为每个任务调整一个新模型。受LoraHub(Huang等人,2023)的启发,我们还比较了一种计算权重的替代方法:使用(Huang等,2023)中的黑盒优化找到最优的权重分配。我们使用 L M C o c k t a i l b l a c k b o x LMCocktail_{blackbox} LMCocktailblackbox 来表示这种变体。此外,我们聚合每个任务中的所有示例以计算合并权重,并为所有任务生成一个名为LM Cocktail的统一模型,而不是为每个任务分别生成模型。

有一些关键发现:

  • 多任务学习的性能不如原始的Llama模型。这表明微调将损害原始模型的整体通用性,也表明这些微调数据集与MMLU上列出的任务之间没有直接相关性。
  • LM Cocktail的精度高于Llama和Llama ICL。尽管没有与MMLU任务相关的微调数据集,但我们的方法通过合并微调模型显示了性能的显著提高。LM Cocktail仅涉及重组现有模型,而不需要额外的模型训练。此外,它不会给推理过程带来任何延迟,而Llama ICL需要处理更多的令牌,因为添加了fewshot提示。LM Cocktail仅涉及重组现有模型,而不需要额外的模型训练。此外,它不会给推理过程带来任何延迟,而Llama ICL需要处理更多的token,因为添加了few-shot prompt。
  • 与黑盒优化相比,我们计算权重的方法更简单,但效率更高。我们观察到,黑盒优化方法难以确保权重之和等于1,从而导致次优性能。
  • 统一模型 L M C o c k t a i l u LM Cocktail^u LMCocktailu 也显示出卓越的性能,这表明所提出的方法能够同时处理多个新任务。此外,我们在4.4节中进一步研究了样本数量的影响。

4.2.2 基于编码器的语言模型的分析

根据第4.2.1节中的设置,我们比较了原始BGE模型、多任务学习模型和LM Cocktail与不同混合模型方法的性能。我们从第3.2节中收集了9个微调模型。为了进行评估,我们排除了在第3.2节中进行了微调的任务(即HotpotQA、MSMATCO和Quora)。如 Table 4 所示,LM Cocktail的精度高于其他模型。它表明,我们可以通过只混合现有的语言模型来提高在新任务上的准确性。

在这里插入图片描述

4.3 权重 α \alpha α 的影响

在本节中,我们对不同权重 α \alpha α 下的性能进行了比较。为了消除其他因素的影响,我们以最简单的配置进行了实验:基于权重 α \alpha α 合并微调模型和基础模型。

解码器的结果如 Figure 2 所示,编码器模型的结果见附录B.2。我们逐步将超参数 α \alpha α 从0变为1,并评估了模型在目标任务和其他无关任务上的性能。可以观察到,通过改变微调模型的权重,我们可以显著提高其他任务的准确性,甚至超过基础模型的准确性,同时确保目标任务的准确性不会下降。

在这里插入图片描述

4.4 样本数量的分析

此外,我们还研究了样本数量的影响。鉴于其他任务中的一些专用模型,LM Cocktail 需要一些新任务的样本来计算合并权重,并通过加权求和合并这些专用模型。然后,合并后的模型可用于在新任务上对模型进行微调或直接执行新任务。在本节中,我们将根据第4.2节中的设置评估合并模型在新任务上的性能。对于基于解码的模型,MMLU数据集中总共提供了285个样本,我们从整个数据集中随机抽取5、50和100个样本,以合并专用模型并测试其性能。对于基于编码器的模型,总共有115个样本,我们还对一个子集进行采样以评估其性能。平均指标如 Table 5 所示。

在这里插入图片描述
如 Table 5 所示,我们的方法仅使用五个样本就实现了令人满意的性能,并且随着样本数量的增加,性能进一步提高。然而,超过五十个样本后,性能改进变得非常有限。

5. 相关工作

5.1 语言模型的 Fine-tune

使用任务特定的标记过的数据对大规模预训练语言模型进行微调可以进一步增强其相应的能力,这在自然语言处理中变得司空见惯。然而,灾难性遗忘问题通常存在于不同语言模型的不断微调中:微调可以提高目标领域的性能,但会严重破坏语言模型在目标领域之外的通用功能。一种解决方案是添加以前任务的数据,以保持以前的能力。还提出了一些基于正则化的方法来缓解这个问题,其中对模型参数的更新进行正则化,以保持预训练模型的通用能力。与添加以前的数据不同,我们的方法没有额外的训练成本。此外,与基于正则化的方法不同,我们提出的方法不需要对标准的微调过程进行修改。

5.2 模型合并

整合许多模型的输出是提高深度学习模型准确性的一种流行技术。然而,这种方法要求每个模型进行单独的推理,这大大增加了计算成本。模型合并不是整合模型的输出,而是对多个模型的权重进行平均,以提高单个模型的性能,这在推理时不需要额外的计算。Wortsman等人发现,对用不同超参数配置微调的模型的权重进行平均通常可以提高准确性。一些研究人员提出了更复杂的方法来对齐不同模型的参数并将其合并。Prateek等人和Yu等人建议在模型合并之前删除delta参数中的冗余值。这些方法也可能对 LM-Cocktail 会有所帮助,我们将其留给未来的工作。

与我们的工作相关的一个方向是在稳健的微调中应用模型合并。Wortsman等人和Ilharco都发现微调CLIP模型大大提高了给定目标分布的准确性,但降低了对分布变化的鲁棒性。为了解决这个问题,他们使用手动设置的系数来合并微调模型和基础模型。与这些方法不同,我们建议不仅利用基础预训练模型,还利用其他任务中的专家模型。通过这种方式,我们提出的方法进一步提高了一般能力,甚至可以在无法进行微调的情况下发挥作用。此外,我们利用一种简单的方法自动计算不同模型的合并权重。

  • 模型合并(Model Merging):这是一种技术,旨在通过平均多个模型的权重来提高单个模型的性能。这种方法不需要在推理时进行额外的计算。
  • 稳健微调(Robust Fine-tuning):指的是在微调过程中,不仅关注模型在目标分布上的准确性,还关注模型对分布变化的鲁棒性。即模型能够在不同或变化的数据分布上保持稳定的性能。
  • CLIP模型(CLIP Model):由Radford等人于2021年提出,是一个多模态视觉和语言模型,能够理解和生成涉及图像和文本的丰富表示。

另一个相关方向是利用模型合并进行跨任务泛化。这些方法中的大多数侧重于合并参数更高效的模块。Ponti等人引入了一种潜在技能模型(latent-skill model),在该模型中,他们将二进制向量训练为路由器函数,为每个任务选择技能模块,然后对模块的参数进行平均。对于目标任务,Wu等人和Lv等人汇总了从类似任务中学习到的轻量级任务特定专家的参数。还提出了一些将大量源任务的提示嵌入合并到目标域的工作。最近的工作是LoRAHub。举几个例子,它使用黑盒优化工具Shiwa来组合多个现有的微调LoRA模块,并为目标任务生成一个新的LoRA模块。与上述方法相反,我们将微调模型和基础模型合并,目的是在微调后保持通用功能。同时,为了确保目标任务的性能,我们使用一小部分样本的损失来筛选出在目标任务上表现不佳的模型。此外,我们合并了整个模型,而不是参数高效模块。

6. 总结

在这项工作中,我们介绍了 LM-Cocktail,这是一种简单的方法,可以在不降低其他无关任务准确性的情况下提高目标任务的性能。LM Cocktail 通过对不同模型的参数进行加权平均来生成一个弹性调优模型(resilient-tuned model ):该模型在目标任务上进行了微调,预训练的基础模型,以及来自其他领域的对等模型。解码器和编码器模型的实证结果表明,LM Cocktail 可以在整个一般任务范围内实现强大的性能,同时在其目标领域保持卓越的性能。我们进一步证明了LM Cocktail 在无法对特定领域的数据进行微调时的有效性。在这种情况下,我们的方法可以基于很少的样本合并现有的模型,以提高目标任务的准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2173271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Mac 默认设置 wps不能双面打印的问题

目录 问题描述: 问题解决: 问题描述: 使用mac电脑的时候,发现wps找不到双面打印的按钮,导致使用wps打开的所有文件都不能自动双面打印 问题解决: mac的wps也是有双面打印的选项,只是默认被关…

双指针算法【算法 18】

双指针算法 在算法设计与实现中,双指针算法是一种非常高效且常用的技术,尤其适用于处理数组和字符串相关的问题。通过维护两个指针(通常称为“快指针”和“慢指针”),双指针算法能够在对数组或字符串进行单次遍历的同时…

VSCode rust文件中的api点击无法跳转问题

如果配置了vscode的setting.json windows端的话 "settings": { "typescript.tsc.autoDetect": "off","rust-analyzer.linkedProjects": [".\\gui-btn\\Cargo.toml",".\\temp\\Cargo.toml", ],其他端类似 能不…

电脑怎么进行网页限制操作?

1、修改Hosts文件: 打开文件资源管理器,导航至C:\Windows\System32\drivers\etc\目录(注意,修改前最好备份原文件)。 找到并打开hosts文件,以管理员身份运行文本编辑器进行编辑。 在文件末尾添加一行&am…

基于Springboot投稿和稿件处理系统设计与实现

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

Java | Leetcode Java题解之第441题排列硬币

题目: 题解: class Solution {public int arrangeCoins(int n) {return (int) ((Math.sqrt((long) 8 * n 1) - 1) / 2);} }

【STM32开发环境搭建】-2-安装STM32CubeMX

目录 1 下载STM32CubeMX 2 使用STM32CubeMX 2.1 设置Embedded software Package存放路径 2.2 下载并安装STM32的Embedded software Package 结尾 1 下载STM32CubeMX 注册一个ST的账号,单击STM32CubeMX - STM32Cube初始化代码生成器 - 意法半导体STMicroelectr…

《 C++ 修炼全景指南:十三 》为什么你的代码不够快?全面掌控 unordered_set 和 unordered_map 的哈希性能飙升魔法

摘要 本文深入探讨了 C 标准库中的两大无序容器——unordered_set 和 unordered_map,从底层实现、核心操作、性能优化、实际应用等多个方面进行了全面分析。首先,文章介绍了这两种容器的基本概念,说明了它们基于哈希表实现的特点&#xff0c…

AMD ROCm™ 安装指南

AMD ROCm™ installation — ROCm Blogs 注意: 本文之前是 AMD 实验笔记博客系列的一部分。 AMD ROCm™ 是第一个面向 HPC/超大规模级 GPU 计算的开源软件开发平台。AMD ROCm™ 将 UNIX 的选择权、极简主义和模块化软件开发哲学引入 GPU 计算领域。有关更多信息,请参…

华为OD机试 - 小明的幸运数(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

modelsim仿真出现的问题

问题:仿真波形没有结果 解决 点击Optimization Options 选第二个 右键testbench,Add Wave,快速添加 如何更改字体大小 Tools Edit Preference

latex设置背景颜色

\documentclass{article} \usepackage{xcolor} % 定义颜色,将#FCF9EA转换为LaTeX的颜色定义 \definecolor{mycolor}{HTML}{FCF9EA} % 设置页面颜色 \pagecolor{mycolor} \begin{document} This is a test page with the background color set to \# FCF9E…

如何巧妙运用Shell变量:掌握脚本编程的核心技巧

目录 前言一、Shell变量——变量类型1、用户自定义变量2、环境变量用./ 启动脚本文件记得加权限哦 二、Shell变量——变量赋值和访问(一)变量定义(二)变量的使用(三)删除变量(四)添加环境变量(五)内部变量(六&#xff…

Karmada新版本发布,支持联邦应用跨集群滚动升级

摘要:本次升级支持联邦应用跨集群滚动升级,使用户版本发布流程更加灵活可控;透明同事karmadactl 新增了多项运维能力,提供独特的多集群运维体验。 本文分享自华为云社区 《Karmada v1.11 版本发布!新增应用跨集群滚动升…

cve 漏洞排查流程

1、打开CVE连接 确认漏洞jar包以及版本信息 https://gitee.com/opengauss/security/issues/IASNOA?fromproject-issue 2、通过命令导出对应jar包的依赖树 并导出到目标结果文件中 mvn dependency:tree -Dincludes:gson > gson.result.txt 3、过滤test引用…

Linux之实战命令17:nl应用实例(五十一)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

成都睿明智科技有限公司抖音电商服务靠谱吗?

在这个电商风起云涌的时代,抖音作为短视频直播的超级流量池,正深刻改变着人们的购物习惯。无数商家蜂拥而至,渴望在这片蓝海中找到属于自己的岛屿。而提及抖音电商服务,成都睿明智科技有限公司无疑是一个备受瞩目的名字。那么&…

2024年7月大众点评餐饮比较北上广深成渝

在做一些城市分析、学术研究分析、商业选址、商业布局分析等数据分析挖掘时,大众点评的数据参考价值非常大,截至2024年7月,大众点评美食店铺剔除了暂停营业、停止营业后的最新数据情况分析如下。 分析研究的字段维度包括大众点评数字id、字母…

10分钟读懂,ITIL4为什么它是IT服务管理的未来?

点击进入ITIL资料库 在当今数字化时代,IT服务管理(ITSM)对于企业的重要性不言而喻。而作为ITSM领域最广泛采用的最佳实践框架,ITIL(Information Technology Infrastructure Library)一直在引领着行业的发展。2019年,AXELOS发布了ITIL 4&#…

突发:OpenAI o1颠覆了人类,o1为什么超越了人类,sam万字长文解读

要点速读 2024 年 9 月 12 日,OpenAI 发布了其最新的人工智能模型——o1(Learning to Reason with LLMs[1]),这是一款经过强化学习训练的大型语言模型,能够执行复杂的推理任务。相比于此前的 GPT-4o(GPT-4…