【从Qwen2,Apple Intelligence Foundation,Gemma 2,Llama 3.1看大模型的性能提升之路】

news2024/11/29 0:51:47

从早期的 GPT 模型到如今复杂的开放式 LLM,大型语言模型 (LLM) 的发展已经取得了长足的进步。最初,LLM 训练过程仅侧重于预训练,但后来扩展到包括预训练和后训练。后训练通常包括监督指令微调和校准,这是由 ChatGPT 推广的。

自 ChatGPT 首次发布以来,训练方法已不断发展。在本文中,我回顾了训练前和训练后方法的最新进展,特别是最近几个月取得的进展。

概述 LLM 开发和培训流程,重点介绍本文讨论的新的预培训和后培训方法

每个月都有数百篇 LLM 论文提出新技术和新方法。然而,了解哪些方法在实践中真正有效的最佳方法之一是查看最新最先进模型的训练前和训练后流程。幸运的是,过去几个月已经发布了四篇重要的新 LLM,并附有相对详细的技术报告。

在本文中,我重点介绍以下模型的预训练和后训练流程:

  • 阿里巴巴的 Qwen 2

  • Apple Intelligence Foundation 语言模型

  • 谷歌的 Gemma 2

  • Meta AI 的 Llama 3.1

这些模型按照其各自技术论文在 arXiv.org 上的发表日期的顺序呈现,这也与它们的字母顺序一致。

1.阿里巴巴的Qwen 2

让我们从Qwen 2开始,这是一个非常强大的 LLM 模型系列,可以与其他主要 LLM 相媲美。

1.1 Qwen 2 概述

在查看Qwen 2 技术报告中讨论的预训练和后训练方法之前,让我们简单总结一下一些核心规格。

Qwen 2 模型有 5 种类型。有 4 种常规(密集)LLM,大小分别为 5 亿、15 亿、70 亿和 720 亿个参数。此外,还有一个 Mixture-of-Experts 模型,具有 570 亿个参数,其中同时激活了 140 亿个参数。(由于架构细节不是这次的重点,我不会过多地介绍 Mixture-of-Experts 模型;但是,简而言之,这与 Mistral AI 的 Mixtral 类似,只是它有更多活跃的专家。有关高级概述,请参阅我的“模型合并、专家混合和迈向更小的 LLM”文章中的Mixtral 架构部分。)

Qwen 2 LLM 的突出特点之一是其出色的多语言能力,涵盖 30 种语言。它们还拥有惊人的 151,642 个标记词汇表(作为参考,Llama 2 使用 32k 个词汇表,而 Llama 3.1 使用 128k 个标记词汇表);根据经验,将词汇表大小增加 2 倍可将输入标记数量减少 2 倍,因此 LLM 可以将更多标记放入相同的输入中。此外,它特别有助于处理多语言数据和编码,以涵盖标准英语词汇表之外的单词。

以下是 MMLU 基准与后面介绍的其他 LLM 的简要比较。(请注意,MMLU 是一个多项选择基准,因此有其局限性;然而,它仍然是报告 LLM 表现的最流行的方法之一。)

在这里插入图片描述

最新开放权重模型的 MMLU 基准分数(值越高越好)。我从每个模型的官方研究论文中收集了此图的分数。

1.2 Qwen 2 预训练

Qwen 2 团队在 7 万亿个训练 token 上训练了 15 亿、70 亿和 720 亿个参数模型,这是一个合理的规模。作为比较,Llama 2 模型是在 2 万亿个 token 上训练的,而 Llama 3.1 模型是在 15 万亿个 token 上训练的。

有趣的是,5 亿个参数的模型是在 12 万亿个 token 上训练的。然而,研究人员并没有在更大的 12 万亿个 token 数据集上训练其他模型,因为他们在训练过程中没有观察到任何改进,而且额外的计算成本也是不合理的。

重点领域之一是改进数据过滤流程以删除低质量数据并增强数据混合以增加数据多样性——我们稍后在研究其他模型时将重新讨论这个主题。

有趣的是,他们还使用 Qwen 模型(虽然他们没有具体说明细节,但我认为他们指的是上一代 Qwen 模型)来合成额外的预训练数据。

此外,他们分两个阶段进行训练:常规预训练,然后是长上下文训练。后者在预训练的最后阶段使用“高质量、长数据”将上下文长度从 4,096 个 token 增加到 32,768 个 token。
在这里插入图片描述
Qwen 2 预训练技术总结。“持续预训练”是指 2 阶段预训练,研究人员从常规预训练开始,然后进行长上下文持续预训练。

1.3 Qwen 2 后训练

Qwen 2 团队采用了流行的两阶段后训练方法,首先是监督指令微调 (SFT),该方法应用于 2 个时期的 500,000 个示例。此阶段旨在提高模型在预定场景中的响应准确性。
在这里插入图片描述
在 SFT 之后,他们使用直接偏好优化 (DPO) 使 LLM 与人类偏好保持一致。(有趣的是,在他们的术语中将其称为从人类反馈中强化学习,RLHF。)正如我在几周前的 LLM 预训练和评估奖励模型的技巧文章中所讨论的那样,SFT+DPO 方法似乎是目前最流行的偏好调整策略,因为与其他方法(例如带有 PPO 的 RLHF)相比,它易于使用。(如果您想了解 DPO 的工作原理,我最近在这里从头开始实现了它。)

对齐阶段本身也分为两个阶段。首先,在现有数据集上使用 DPO(离线阶段)。其次,使用奖励模型形成偏好对(在线)。在这里,模型在训练期间生成多个响应,奖励模型“实时”(即在训练期间)为优化步骤选择首选响应。这也通常被称为“拒绝抽样”。

在构建数据集时,他们利用现有语料库并辅以人工标注来确定 SFT 的目标响应,并确定 DPO 所必需的首选和拒绝响应。研究人员还合成了人工标注的数据。

此外,该团队还利用 LLM 生成专门针对“高质量文学数据”的指令-响应对,以创建高质量的问答对进行训练。
在这里插入图片描述

1.4 结论

Qwen 2 是一个相对强大的模型,与前几代 Qwen 类似。在参加 2023 年 12 月的 NeurIPS LLM 效率挑战赛时,我记得大多数获胜方法都涉及 Qwen 模型。

关于 Qwen 2 的训练流程,最突出的是合成数据已用于训练前和训练后。此外,专注于数据集过滤(而不是收集尽可能多的数据)是 LLM 培训的显著趋势之一。在这里,我想说,越多越好,但前提是它符合一定的质量标准。

从头开始将 LLM 与直接偏好优化相结合

直接偏好优化 (DPO) 已成为使 LLM 与用户偏好更加紧密结合的首选方法之一,您将在本文中多次看到它。

用于 LLM 对齐的直接偏好优化 (DPO)(从头开始)。
在这里插入图片描述DPO 与 LLM 对齐的概述

2. Apple 的 Apple Intelligence Foundation 语言模型(AFM)

我很高兴在 arXiv.org 上看到 Apple 的另一篇技术论文,其中概述了他们的模型训练。出乎意料但绝对是积极的惊喜!

2.1 AFM 概述
在Apple Intelligence Foundation 语言模型论文(可在此处获取)中,研究团队概述了两种主要模型的开发,这些模型旨在用于 Apple 设备上的“Apple Intelligence”环境。为简便起见,本节中这些模型将简称为 AFM,即“Apple Foundation Models”。

具体来说,该论文描述了 AFM 的两个版本:一个是用于部署在手机、平板电脑或笔记本电脑上的 30 亿参数设备模型,另一个是功能更强大的 30 亿参数服务器模型。

这些模型是为聊天、数学和编码任务而开发的,尽管本文没有讨论任何特定于编码的训练和能力。

与 Qwen 2 一样,AFM 是密集的 LLM,并且不采用混合专家方法。

2.2 AFM 预训练
我想向研究人员致以两点敬意。首先,除了使用公开数据和出版商授权的数据外,他们还尊重网站上的 robots.txt 文件,并避免抓取这些文件。其次,他们还提到他们使用基准数据进行了净化。

为了强调 Qwen 2 论文的要点之一,研究人员提到质量比数量更重要。(设备模型的词汇量为 49k 个标记,服务器模型的词汇量为 100k 个标记,词汇量明显小于使用 150k 个标记词汇的 Qwen 2 模型。)

有趣的是,预训练不是分为 2 个阶段,而是 3 个阶段!

核心(常规)预训练

继续进行预训练,其中网络爬取(低质量)数据的权重降低;数学和代码的权重增加

使用更长的序列数据和合成数据来延长上下文
在这里插入图片描述
AFM 模型经历的 3 步预训练过程概述。
让我们更详细地了解一下这 3 个步骤。

2.2.1预训练I:核心预训练
核心预训练描述了 Apple 预训练流程中的第一个预训练阶段。这类似于常规预训练,其中 AFM 服务器模型在 6.3 万亿个标记、批大小为 4096 的批大小和 4096 个标记序列长度上进行训练。这与在 7 万亿个标记中训练的 Qwen 2 模型非常相似。

然而,对于 AFM-on-device 模型来说,情况变得更有趣了,它是从更大的 64 亿参数模型(像上一段描述的 AFM-server 模型一样从头开始训练)中提炼和修剪出来的。(请注意,AFM-server 和 AFM-on-device 都是 30 亿参数模型。)

除了“通过用真实标签和教师模型的 top-1 预测的凸组合替换目标标签(为教师标签分配 0.9 的权重)”之外,蒸馏损失用于蒸馏过程,没有太多细节。

我觉得知识提炼正变得越来越普遍,并且对 LLM 预训练非常有用(Gemma-2 也使用它)。我计划有一天更详细地介绍它。现在,这里简要概述了这个过程在高层次上是如何工作的。

在这里插入图片描述

知识蒸馏概述,其中一个小型模型(此处为 AFM-device 3B 模型)在原始训练标记和较大的教师模型(此处为 6.4B
模型)的输出上进行训练。请注意,a) 中的交叉熵损失是用于预训练 LLM 的常规训练损失

如上所示,知识提炼仍然涉及对原始数据集的训练。但是,除了数据集中的训练标记之外,要训练的模型(称为学生)还会从更大的(教师)模型中接收信息,与没有知识提炼的训练相比,这提供了更丰富的信号。缺点是您必须:1)首先训练更大的教师模型,2)使用更大的教师模型计算所有训练标记的预测。这些预测可以提前计算(这需要大量存储空间)或在训练期间计算(这可能会减慢训练过程)。

2.2.2预训练二:继续预训练
持续的预训练阶段包括对包含 1 万亿个标记的数据集(核心预训练集大五倍)进行小规模的上下文扩展,从 4,096 个标记增加到 8,192 个标记。不过,主要重点是使用高质量数据组合进行训练,重点是数学和代码。

有趣的是,研究人员发现,在这种情况下,蒸馏损失并无益处。

2.2.3 预训练三:上下文延长
第三个预训练阶段仅涉及 1000 亿个标记(占第二阶段所用标记的 10%),但代表了更为显著的上下文扩展至 32,768 个标记。为了实现这一点,研究人员使用合成的长上下文问答数据扩充了数据集。
在这里插入图片描述
2.3 AFM 后训练
苹果似乎对后训练过程采取了与预训练类似的全面方法。他们利用人工注释和合成数据,强调数据质量优先于数量。有趣的是,他们并不依赖预先确定的数据比例;相反,他们通过多次实验对数据组合进行微调,以达到最佳平衡。

后期训练阶段涉及两个步骤:监督指令微调,然后进行几轮带有人工反馈的强化学习(RLHF)。

此过程中特别值得注意的是苹果为 RLHF 阶段引入了两种新算法:

  • Rejection Sampling Fine-tuning with Teacher Committee (iTeC)

  • RLHF with Mirror Descent Policy Optimization

鉴于本文的篇幅,我不会深入讨论这些方法的技术细节,但这里给出一个简要概述:

iTeC 算法将拒绝抽样与多种偏好调整技术相结合,具体来说,包括 SFT、DPO、IPO 和在线 RL。Apple 并不依赖单一算法,而是使用每种方法独立训练模型。然后,这些模型生成响应,由提供偏好标签的人员进行评估。这些偏好数据用于在 RLHF 框架中迭代训练奖励模型。在拒绝抽样阶段,模型委员会生成多个响应,奖励模型选择最佳响应。

这种基于委员会的方法相当复杂,但应该相对可行,特别是考虑到所涉及的模型规模相对较小(约 30 亿个参数)。使用更大的模型(如 Llama 3.1 中的 70B 或 405B 个参数模型)实施这样的委员会肯定会更具挑战性。

至于第二种算法,即带有镜像下降的 RLHF,之所以选择它,是因为它被证明比常用的 PPO(近端策略优化)更有效。
在这里插入图片描述

2.4 结论
苹果的预训练和后训练方法相对全面,可能是因为风险很高(该模型部署在数百万甚至数十亿台设备上)。然而,考虑到这些模型的规模很小,因此各种技术也变得可行,因为 3B 模型的大小还不到最小的 Llama 3.1 模型的一半。

其中一个亮点是,这不是在 RLHF 和 DPO 之间做出的简单选择;相反,他们以委员会的形式使用了多种偏好调整算法。

同样有趣的是,他们明确地使用问答数据作为预训练的一部分 - 我在上一篇文章《指令预训练 LLM》中讨论过这一点。

总而言之,这是一份令人耳目一新、令人愉快的技术报告。

3. Google 的 Gemma 2

Google 的 Gemma 模型最近在《 Gemma 2: Improving Open Language Models at a Practical Size》中进行了描述。

在讨论训练前和训练后过程之前,我将在下面的概述部分概述一些关键事实。

3.1 Gemma 2 概述
Gemma 2 模型有三种规模:20 亿、90 亿和 270 亿个参数。主要重点是探索不一定需要增加训练数据集大小的技术,而是开发相对较小且高效的 LLM。

值得注意的是,Gemma 2 的词汇量相当大,达到 256k 个词元。相比之下,Llama 2 的词汇量为 32k,而 Llama 3 的词汇量为 128k。

此外,Gemma 2 采用了与 Mistral 早期模型类似的滑动窗口注意机制,有望降低内存成本。有关 Gemma 2 架构的更多详细信息,请参阅我之前文章中的 Gemma 2 部分。

3.2 Gemma 2 预训练
Gemma 的研究人员认为,即使是小型模型也经常训练不足。然而,他们并没有简单地增加训练数据集的大小,而是专注于保持质量,并通过知识提炼等替代方法实现改进,类似于苹果的方法。

虽然 27B Gemma 2 模型是从头开始训练的,但较小的模型是使用类似于 Apple 之前解释过的方法的知识提炼进行训练的。

27B 模型在 13 万亿个 token 上进行训练,9B 模型在 8 万亿个 token 上进行训练,2B 模型在 2 万亿个 token 上进行训练。此外,与苹果的做法类似,Gemma 团队也优化了数据混合以提高性能。
在这里插入图片描述

3.3 Gemma 2 后期训练
Gemma 模型的后期训练过程涉及典型的监督微调 (SFT) 和带人工反馈的强化学习 (RLHF) 步骤。

教学数据涉及使用纯英语提示对,这些提示对是人工生成和合成生成内容的混合。具体而言,有趣的是,这些答案主要由教师模型生成,并且在 SFT 阶段也应用了知识提炼。

继 SFT 之后,他们的 RLHF 方法的一个有趣方面是,用于 RLHF 的奖励模型比策略(目标)模型大十倍。

Gemma 使用的 RLHF 算法相当标准,但有一个独特的变化:它们通过一种称为 WARP 的方法对策略模型进行平均,该方法是 WARM(加权平均奖励模型)的后继者。
在这里插入图片描述

3.4 结论
Gemma 团队似乎真的加倍重视知识提炼,他们在训练前和训练后都使用了这种方法,类似于苹果。有趣的是,他们并没有使用多阶段预训练方法,或者至少他们没有在论文中详细介绍它。

4. Meta AI 的 Llama 3.1

Meta 的 Llama LLM 的新版本发布总是一件大事。这次,发布伴随着一份长达 92 页的技术报告:The Llama 3 Herd of Models 。最后但并非最不重要的是,在本节中,我们将介绍上个月发布的第四篇大型模型论文。

4.1 Lla​​ma 3.1 概述

除了发布庞大的 4050 亿参数模型外,Meta 还更新了之前的 80 亿和 700 亿参数模型,略微提升了 MMLU 性能。

在这里插入图片描述

不同模型的MMLU基准性能。
虽然 Llama 3 像其他近期的 LLM 一样使用了组查询注意,但令人惊讶的是,Meta AI 拒绝了滑动窗口注意和混合专家方法。换句话说,Llama 3.1 看起来非常传统,重点显然是训练前和训练后,而不是架构创新。

与之前的 Llama 版本类似,权重也是公开可用的。此外,Meta 表示他们更新了 Llama 3 许可证,因此现在终于可以(允许)使用 Llama 3 进行合成数据生成或知识提炼,以改进其他模型。

4.2 Llama 3.1 预训练

Llama 3 是在 15.6 万亿个词法单元的海量数据集上进行训练的,这比 Llama 2 的 1.8 万亿个词法单元有了大幅提升。研究人员表示,它至少支持 8 种语言(而 Qwen 2 可以处理 20 种语言)。

Llama 3 的一个有趣方面是其词汇量为 128,000,这是使用 OpenAI 的 tiktoken 分词器开发的。(对于那些对分词器性能感兴趣的人,我在这里做了一个简单的基准比较。)

在训练前数据质量控制方面,Llama 3 采用基于启发式的过滤和基于模型的质量过滤,利用快速分类器(如 Meta AI 的 fastText 和基于 RoBERTa 的分类器)。这些分类器还有助于确定训练期间使用的数据组合的上下文类别。

Llama 3 的预训练分为三个阶段。第一阶段涉及使用 15.6 万亿个标记和 8k 上下文窗口进行标准初始预训练。第二阶段继续进行预训练,但将上下文长度扩展到 128k。最后阶段涉及退火,这进一步增强了模型的性能。让我们在下面更详细地研究这些阶段。

4.2.1预训练 I:标准(初始)预训练

在他们的训练设置中,他们从包含 400 万个标记的批次开始,每个标记的序列长度为 4096。这意味着批次大小约为 1024 个标记,假设 400 万这个数字四舍五入到最接近的数字。在处理完前 2.52 亿个标记后,他们将序列长度加倍至 8192。在进一步的训练过程中,在处理完 2.87 万亿个标记后,他们再次将批次大小加倍。

此外,研究人员并没有在整个训练过程中保持数据组合不变。相反,他们调整了训练过程中使用的数据组合,以优化模型学习和性能。这种动态数据处理方法可能有助于提高模型对不同类型数据进行泛化的能力。

4.2.2预训练 II:继续预训练以延长上下文

与其他一次性增加上下文窗口的模型相比,Llama 3.1 上下文延长采用更渐进的方法:在这里,研究人员通过六个不同的阶段将上下文长度从 8,000 个标记增加到 128,000 个标记。这种逐步增加可能使模型能够更平稳地适应更大的上下文。

此过程所使用的训练集涉及 8000 亿个标记,约占总数据集大小的 5%。

4.2.3预训练三:高质量数据退火

对于第三个预训练阶段,研究人员在少量但高质量的混合数据集上训练了模型,他们发现这有助于提高基准数据集上的性能。例如,对 GSM8K 和 MATH 训练集进行退火可显著提升 GSM8K 和 MATH 验证集的性能。

在论文第 3.1.3 节中,研究人员指出退火数据集的大小为 400 亿个 token(占整个数据集大小的 0.02%)。然而,在第 3.4.3 节中,他们指出退火仅针对 4000 万个 token(占退火数据的 0.1%)进行。

在这里插入图片描述

4.3 Llama 3.1 训练后

对于后期训练过程,Meta AI 团队采用了一种相对简单的方法,包括监督微调(SFT)、拒绝采样和直接偏好优化(DPO)。

他们发现,与这些技术相比,强化学习算法(如带有 PPO 的 RLHF)稳定性较差,扩展难度也更大。值得注意的是,SFT 和 DPO 步骤经过多轮迭代重复,同时结合了人工生成的数据和合成数据。

在描述进一步的细节之前,下图说明了它们的工作流程。
在这里插入图片描述来自 Llama 3.1 论文的注释图,描述了训练后的过程

请注意,尽管他们使用了 DPO,但他们也开发了奖励模型,就像您在 RLHF 中所做的那样。最初,他们使用预训练阶段的检查点训练奖励模型,利用人工注释的数据。然后,该奖励模型用于拒绝采样过程,帮助选择适当的提示进行进一步训练。

在每一轮训练中,他们不仅将模型平均技术应用于奖励模型,还将其应用于 SFT 和 DPO 模型。这种平均技术涉及合并近期和之前模型的参数,以稳定(并提高)随时间推移的性能。

总而言之,从本质上讲,这是一个相对标准的 SFT + DPO 阶段。但是,这个阶段会在多轮中重复。然后,他们加入了一个用于拒绝采样的奖励模型(如 Qwen 2 和 AFM)。他们还使用了 Gemma 等模型平均法;然而,这不仅适用于奖励模型,还适用于所有相关模型。

在这里插入图片描述

Llama 3.1 后期训练技术总结。

4.4 结论

Llama 3 模型保持了相当标准的风格,与早期的 Llama 2 模型类似,但也有一些有趣的方法。值得注意的是,15 万亿个 token 的大型训练集使 Llama 3 有别于其他模型。有趣的是,与 Apple 的 AFM 模型一样,Llama 3 也实现了 3 阶段预训练过程。

与近期其他大型语言模型不同,Llama 3 没有采用知识蒸馏技术,而是选择了更直接的模型开发路径。对于后期训练,该模型采用了直接偏好优化 (DPO),而不是其他模型中流行的更复杂的强化学习策略。总的来说,这种选择很有意思,因为它表明了专注于通过更简单(但经过验证)的方法来改进 LLM 性能。

5. 主要要点

我们可以从本文讨论的四种模型中学到什么:阿里巴巴的 Qwen 2、苹果的基础模型(AFM)、谷歌的 Gemma 2 和 Meta 的Llama 3.1

这四种模型在预训练和后训练方面都采用了略有不同的方法。当然,方法论是重叠的,但没有哪一种训练流程完全相同。对于预训练,一个共同的特点似乎是所有方法都使用多阶段预训练流程,其中一般核心预训练之后是上下文延长步骤,有时是高质量退火步骤。下图再次一目了然地展示了预训练中采用的不同方法。
在这里插入图片描述预训练技术概述

在训练后,也没有一个流程是完全相同的。似乎拒绝采样现在已成为训练后过程中的常见做法。然而,在 DPO 或 RLHF 方面,目前还没有达成共识或偏好(无意双关)。
在这里插入图片描述
后期训练所用技术的概述

因此,总而言之,培养高性能 LLM 并没有单一的秘诀,而是有很多途径。

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

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

相关文章

redis AOF机制

在redis运行期间,不断将redis执行的写命令写到文件中,redis重启之后,只要将这些命令重复执行一遍就可以恢复数据。因为AOF只是将少量的写命令写入AOF文件中,因此其执行效率高于RDB,开启AOF即使Redis发生故障&#xff0…

Redis缓存场景

Redis缓存场景 文章目录 Redis缓存场景Redis做缓存旁路缓存缓存异常缓存穿透缓存击穿缓存雪崩 缓存一致性先写缓存再写数据库先写数据库再写缓存先删除缓存再写数据库先写数据库再删缓存缓存双删Binlog异步更新总结 Redis做缓存 部分图解来自于:https://www.miansh…

微课录制不再难:精选三款录屏软件助你一臂之力

在这个信息爆炸的时代,微课以其短小精悍、易于消化的特点,成为知识传播的新宠。无论是教师备课、企业培训,还是个人知识分享,微课都能以其独特的方式,让学习变得更加高效和便捷。在数字化教学的浪潮中,PPT课…

SAP SUBSCREEN使用

step1:在SELECTION-SCREEN中定义SUBSCREEN SELECTION-SCREEN BEGIN OF SCREEN 0101 AS SUBSCREEN. SELECT-OPTIONS S_XMGS FOR ZTPO0074-XMGS . SELECTION-SCREEN END OF SCREEN 0101.STEP2: 引用SUBSCREEN 关键字 CALL SUBSCREEN SUBSCR_0100 INCLUDING SY-RE…

Java基础核心知识学习笔记

方法重载 请记住下面重载的条件 方法名称必须相同。参数列表必须不同(个数不同、或类型不同、参数类型排列顺序不同等)。方法的返回类型可以相同也可以不相同。仅仅返回类型不同不足以成为方法的重载。重载是发生在编译时的,因为编译器可以根…

结合ChatGPT与Discord,提高团队合作效率

本文将教你如何集成Discord Bot,助力团队在工作中实现更高效的沟通与协作。通过充分发挥ChatGPT的潜力,进一步提升工作效率和团队协作能力。无需编写任何代码即可完成本文所述的操作,进行个性化定制只需对参数进行微调即可。 方案介绍 如果在…

联想闪电鲨移动硬盘文件没删除却消失了怎么办

在日常的数据存储与管理中,移动硬盘作为便携且容量可观的存储设备,深受用户青睐。然而,当您发现联想闪电鲨移动硬盘中的文件突然消失,而您确信并未进行删除操作时,这无疑会令人感到困惑与焦虑。本文旨在为您揭开这一谜…

MySQL各个版本root账号没有最高权限的解决方法

一、详细报错 ERROR 1045 (28000): Access denied for user ‘root’‘localhost’ (using password: YES) 报错原因(分析过程): rootlocalhost用户密码修改导致 解决方法: 跳过权限验证启动数据库,并修改密码。如下…

[028-3].第05节:RabbitMQ中的交换机

1.什么是Exchanges(交换机): 1.RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中2.生产者只能将消息发送到交换机(exchange),交换机工作的内容非常…

C++ TinyWebServer项目总结(7. Linux服务器程序规范)

进程 PID 进程的PID(Process ID)是操作系统中用于唯一标识一个进程的整数值。每个进程在创建时,操作系统都会分配一个唯一的PID,用来区分不同的进程。 PID的特点 唯一性: 在操作系统运行的某一时刻,每个…

江苏省第二中医院案例│“互联网+医疗”下的灾备建设

江苏省第二中医院,成立于1988年12月,是一所融医疗、教学、科研、预防保健为一体的公立省级综合性三级甲等中医院。目前,正对照“大学附属医院”“省级三甲医院”建设标准,全面推进医院建设高质量跨越式发展。 用户需求&#xff1a…

冒 泡 排 序

今天咱们单独拎出一小节来聊一聊冒泡排序昂 冒泡排序的核心思想就是:两两相邻的元素进行比较(理解思路诸君可看下图) 接下来我们上代码演示: 以上就是我们初步完成的冒泡排序,大家不难发现,不管数组中的元…

智能停车计费系统设计与实现_urqs9

TOC springboot552智能停车计费系统设计与实现_urqs9--论文 绪 论 1.1 研究背景 在新世纪的今天,计算机已经发展到一定的规模,带动了国内经济和科学技术的快速发展,科学技术的发展大大提高了生产效率,使人们的物质生活需求得到…

为啥每个语音的printf(“%d%d%d%d“,i,j,i++,j++)不一样

题目来源一位考研同学的题目。 第一眼:小子,这都不会😀 第二眼:wok,咋没有选项😢 作为一个大一学C语音,大二学Java的同学来说,我一看就觉得肯定是11 6 11 6 。 结果很遗憾&#xff0…

微服务开发相关问题

微服务开发相关问题 服务注册nacos 2.X注册问题[Nacos Config] config[dataIddatasource.yml, groupDEFAULT_GROUP] is empty 参考 持续更新… 服务注册 nacos 2.X注册问题 [Nacos Config] config[dataIddatasource.yml, groupDEFAULT_GROUP] is empty 因为:# 由于…

C++第十二弹 -- STL之list模拟实现

文章索引 前言模拟实现list1. ListNode节点类2. list的迭代器封装3. 反向迭代器4. list类的模拟实现测试代码 list的反向迭代器总结 前言 通过模拟实现可以让我们更加深刻的理解C底层STL的实现逻辑, 本篇就对list的底层进行模拟实现. 博客主页: 酷酷学!!! 点击关注 共同进步!…

影响五金精密零件加工价格的因素

在制造业中,五金精密零件的加工价格受到多种因素的影响。了解这些因素,对于企业合理控制成本、选择合适的加工供应商至关重要。 首先,零件的设计复杂度是一个重要因素。复杂的设计通常需要更先进的加工技术和更多的加工工序。例如&#xff0c…

intel ECI作为ACRN VM使用dpdk(vfio和iommu问题)以及img扩容

ACRN虚拟机内IOMMU 对非虚拟机而言,只要在BIOS里开启VT-d就可以用iommu去映射vfio使用DPDK,但是在虚拟机中即便BIOS开启了VT-d,它也传不到VM中。因此这个帖子解决一下这个问题。 在ACRN的launch脚本中需要passthru两个网卡,一个用…

C++ TinyWebServer项目总结(8. 高性能服务器程序框架)

《Linux 高性能服务器编程》一书中,把这一章节作为全书的核心,同时作为后续章节的总览。这也意味着我们在经历了前置知识的学习后,正式进入了 Web 服务器项目的核心部分! 前置内容回顾: 1. C TinyWebServer项目总结&…

《深入浅出多模态》(九)多模态经典模型:MiniGPT-v2、MiniGPT5

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…