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

CPM:大规模生成式中文预训练语言模型

摘要

预训练语言模型(PLMs)已被证明对各种下游自然语言处理(NLP)任务有益。最近,GPT-3 以 1750 亿参数和 570GB 训练数据引起了广泛关注,因为它具备少样本(甚至零样本)学习的能力。然而,将 GPT-3 应用于中文 NLP 任务仍然具有挑战性,因为 GPT-3 的训练语料主要为英语,并且其参数未公开可用。

在本技术报告中,我们发布了一个基于大规模中文训练数据进行生成式预训练的中文预训练语言模型(CPM)。据我们所知,CPM 具有 26 亿参数和 100GB 中文训练数据,是目前规模最大的中文预训练语言模型,可用于对话、文章生成、完形填空和语言理解等多个下游中文 NLP 任务。大量实验表明,在少样本(甚至零样本)学习环境下,CPM 在许多 NLP 任务中均表现出较强的性能。代码和参数可在 https://github.com/TsinghuaAI/CPM-Generate 获取。

1 引言

预训练语言模型(PLMs)已被广泛应用于各种自然语言处理(NLP)任务,因为它们能够从大规模语料库中学习丰富的语言知识,从而提高下游任务的表现。例如,ELMo 通过双向语言模型学习上下文词向量;GPT 采用基于 Transformer 的生成式预训练,提高了自然语言理解能力;BERT 通过对未标注文本进行双向深度表示学习,增强了对上下文的理解。后续的 RoBERTa 和 ALBERT 通过动态掩码、参数共享和修改预训练任务进一步优化了 BERT。此外,ERNIE、KEPLER 和 SentiLARE 通过辅助预训练任务引入外部知识,以增强语言表示能力。

在这些预训练语言模型中,GPT-3 以 1750 亿参数和 570GB 训练数据成为关注焦点,并在多种 NLP 任务中证明了其有效性,特别是在少样本(甚至零样本)学习环境下。GPT-3 强大的文本生成能力使其可用于多种应用,包括问答、摘要、对话、基本算术计算以及生成各类文本,如文章、小说、代码、电子表格等。然而,将 GPT-3 应用于中文 NLP 任务仍然面临挑战,因为其训练语料主要是英语(据 Brown 等人 2020 年报道,其语料库中 93% 为英文),且其参数未公开可用。尽管已有一些研究提供了强大的中文预训练语言模型,但由于模型规模的限制,它们的能力仍然有限。因此,如何预训练一个大规模的中文语言模型仍需要进一步探索,例如中文词表的构建和训练策略的设计。

在本技术报告中,我们发布了一个基于大规模中文语料进行生成式预训练的中文预训练语言模型(CPM)。CPM 是一个基于 Transformer 的自回归语言模型,具有 26 亿参数,并使用了 100GB 中文训练数据。据我们所知,CPM 是目前规模最大的中文预训练语言模型,可用于对话、文章生成、完形填空和语言理解等多个下游任务。在多个中文 NLP 任务上的实验表明,CPM 在少样本(甚至零样本)环境下表现出较强的性能。随着模型参数的增加,CPM 在大多数数据集上的表现更好,表明更大规模的模型在语言生成和语言理解方面更具优势。
在这里插入图片描述
本技术报告的主要贡献可总结如下:

  • 我们发布了一种基于生成式预训练的中文自回归语言模型 CPM,具有 26 亿参数。
  • 我们基于分词语料构建了新的子词词表,以适应中文语料,并将批量大小增加至 3072,以提高模型训练的稳定性。
  • 大量实验表明,在少样本(甚至零样本)环境下,CPM 在多个 NLP 任务中表现出较强的性能。

2 我们的方法

2.1 中文预训练语言模型(PLM)

我们当前的模型是一个从左到右的 Transformer 解码器,类似于 GPT(Radford et al., 2019)的模型架构。我们预训练了三个不同规模的模型,如表 1 所示。为了使 CPM 适应中文语料,我们构建了新的子词词表,并调整了训练批量大小。

词表构建:以往的中文预训练模型通常采用 BERT-Chinese(Devlin et al., 2019)的子词词表,该方法会将输入文本拆分为字符级序列。然而,中文单词通常由多个字符组成,在字符级序列中可能会丢失一些重要的语义信息。为了解决这一问题,我们构建了一个新的子词词表,其中包含单词和字符。例如,一些常见词会被直接加入到词表中。
在这里插入图片描述

训练策略: 由于中文的词分布稀疏性比英文更严重,我们采用更大的批量大小来使模型训练更加稳定。相比于 GPT-3 2.7B(Brown et al., 2020)使用的批量大小(100 万个 token),我们的批量大小(300 万个 token)增加了两倍。对于无法在单个 GPU 上存储的最大规模模型,我们沿着宽度维度将模型分割到多个 GPU 上,以实现大规模训练,并减少节点之间的数据传输。

2.2 数据处理

具体来说,我们基于分词后的语料使用 unigram 语言模型(Kudo 和 Richardson, 2018)构建新的子词词表。同时,考虑到分词会在单词之间引入额外的分隔符,我们设定了一个特殊的 token 作为分隔符,使子词处理过程可逆。相比之下,BERT-Chinese 的分词器是不可逆的,因为它会在中文字符之间插入额外的空格,并且将这些额外空格与文本中的原始空格视为相同。

我们的预训练语料包含多种不同类型的文本,包括 百科、新闻、小说和问答,训练数据的详细信息见表 2。由于输入序列长度通常大于单个文档的长度,我们在每个文档后添加“文档结束”标记,并将不同的文档拼接在一起,以充分利用输入长度。

2.3 预训练细节

基于对学习率和批量大小的超参数搜索,我们将学习率设定为 1.5 × 10⁻⁴,批量大小设定为3,072,以提高训练的稳定性。在第一版中,我们仍然采用密集注意力(dense attention),最大序列长度为 1,024,未来将实现稀疏注意力(sparse attention)。

我们对模型进行了20,000 步的预训练,其中前 5,000 步用于 warm-up。优化器采用 Adam(Kingma 和 Ba, 2015)。训练我们的最大模型需要64 块 NVIDIA V100 GPU,耗时约 两周。

3 实验

3.1 文本分类

数据集: 我们使用今日头条新闻标题分类(TNEWS)**、**IFLYTEK 应用描述分类(IFLYTEK)和原始中文自然语言推理(OCNLI) 作为文本分类任务的基准数据集(Xu et al., 2020; Hu et al., 2020)。

由于我们旨在评估CPM 在文本分类任务上的零样本(zero-shot)能力,因此直接使用这三个数据集的验证集,而不进行任何训练。TNEWS / IFLYTEK / OCNLI 的验证集样本量分别为10K / 2.6K / 3K。

需要注意的是,我们排除了 OCNLI 数据集中标注为 “-” 的实例。

实现细节: 我们计算 每个候选句子-标签对的困惑度(perplexity),并将困惑度最低的句子-标签对作为最终预测结果。这三个任务的模板格式如下:
在这里插入图片描述
其中,L 代表标签名称,P代表输入文本,S1 和 S2分别表示前提(premise)和假设(hypothesis)。

由于 TNEWS和 IFLYTEK具有超过 10 种标签,我们采用更简化的验证设置,即随机抽取 3 个错误标签,并进行 4 类分类以提高计算效率。为了使结果更稳定,我们重复实验 3 次,并报告平均结果。

对于 OCNLI,由于它本身仅有 3 类标签,我们保留原始验证集。然而,OCNLI 的验证集类别分布不均衡,其中 “蕴含(entailment)”/“中立(neutral)”/“矛盾(contradiction)” 的样本数量分别为 947 / 1103 / 900。如果模型仅预测标签“中立”,则其准确率约为 0.374。

实验结果:如 表 3所示,CPM-large在这些分类任务上取得了良好表现,无需任何训练样本。与随机预测相比,从预训练中学习到的知识显著提升了模型性能。

尽管 CPM-medium的参数量是CPM-small的三倍,但其在 TNEWS 和 OCNLI 上的表现与小模型相近。然而,CPM-large 在所有三个数据集上的表现均显著优于小模型和中等模型,表明模型规模的影响并非线性增长,而是在模型规模超过某个临界值后才会显现。

此外,CPM-small 和 CPM-medium 在 OCNLI 任务上的表现接近“仅预测中立标签”的策略,这表明 自然语言推理(NLI)任务在零样本学习(zero-shot learning)中比其他下游任务更难,这一现象与 Brown et al. 的观察结果一致。

数据集:我们使用中文成语填空测试数据集(ChID)(Zheng et al., 2019)作为基准数据集。数据集中每个段落可能包含多个填空。对于每个填空,提供10个候选成语,其中1个是正确答案。一些错误候选项在意义上与正确答案相似。训练集、验证集和测试集的样本数量分别为520K、20K和20K。

实施细节
监督学习设置:我们使用模板将段落和候选项转换为自然语言问题。给定段落P和10个候选成语I1, I2, …, I10,模板格式如下:

选项1: I1 ::: 选项10: I10 P 答案是: L

然后,我们训练模型预测答案L。需要注意的是,如果一个段落中存在多个成语填空,我们会独立预测每个填空。具体而言,当我们预测某个成语时,我们保留该成语的填空,同时移除段落中其他成语的填空。

无监督学习设置:我们将候选成语填入填空,从而形成一组完整的段落。如果段落中包含多个填空,我们仍然逐个填空独立处理。对于每个填空,我们可以构造10个不同的完整段落(对应10个候选成语)。然后,我们计算每个段落的困惑度(perplexity),并选择困惑度最低的段落对应的成语作为预测答案。

结果:实验结果如表4所示。我们报告了各模型在测试集上的准确率。

在完全监督学习设置下,可以看到CPM能够针对特定的输入模板进行微调,并通过单向自回归语言建模来解决多项选择任务。在实验中,我们未花费大量时间设计该任务的输入模板,因此可能仍存在更优的模板设计,可以进一步提升模型性能,这一部分我们将留作未来工作。

在无监督学习设置下,可以看到CPM取得了良好的表现。CPM-Large的无监督结果甚至优于CPM-Small的监督结果,并且与CPM-Medium的监督结果相当,这体现了CPM在中文语言建模方面的强大能力。

数据集:我们使用短文本对话(STC)(Shang et al., 2015)作为对话生成任务的基准数据集,该数据集包含来自微博的帖子-回复对。我们采用与现有研究(Wang et al., 2020)相同的数据划分方式。训练集、验证集和测试集的样本数量分别为4.4M、20K和20K。帖子和回复的平均长度分别为20.6和15.4。
在这里插入图片描述
基准:我们选择CDial-GPT(Wang et al., 2020)作为我们的基准模型,它是中文对话生成的最先进的预训练模型。我们直接使用原论文发布的代码和预训练模型。

实施细节:在监督实验中,我们采用与预训练相似的超参数设置,并在STC训练集上对CPM进行微调。在几-shot实验中,未包含微调过程,我们遵循现有工作(Radford et al., 2019;Brown et al., 2020),通过以下格式的4对示例句子来设置语言模型的上下文:Context: 句子 Response: 句子。经过最终的提示Context: 句子 Response:,我们使用Top-p采样(Holtzman et al., 2020)获得生成结果,其中p设置为0.9。在几-shot和监督实验中,采样的温度都设置为0.9。
在这里插入图片描述

评估指标:由于BLEU不是对话生成的合适评估指标,我们使用基于嵌入的评估指标(包括贪心匹配、嵌入平均值和向量极值)来评估生成的回答与参考答案之间的相似度(Liu et al., 2016)。对于多样性,我们选择不同n-gram的数量和比例(Li et al., 2016;Xing et al., 2017;Ke et al., 2018)作为我们的评估指标。

结果:我们在表5中展示了几-shot和监督设置下的主要结果。我们可以看到,CPM在几-shot实验中大幅超越了CDial-GPT,展现了我们模型的泛化能力。至于监督实验,我们的模型依然表现更好,特别是在多样性指标上。由于在监督下游任务中微调大型预训练模型通常具有挑战性(Dodge et al., 2020;Mosbach et al., 2020;Lee et al., 2020),因此我们将如何进一步提高监督设置下的性能作为未来工作。表6提供了一些案例,直观展示了我们模型的有效性。

我们还进行了实验,展示了不同参数规模下CPM的几-shot性能,如表7所示。随着参数数量的增加,CPM能够生成更多样化的响应,并且在基于嵌入的评估指标上表现出合理的值。

3.4 问答系统

数据集:我们采用CMRC2018(Cui et al., 2019b)和DuReader(He et al., 2018)作为我们的问答(QA)基准数据集。CMRC2018要求模型从维基百科段落中提取给定问题的答案跨度,类似于SQuAD(Rajpurkar et al., 2016)。DuReader包含来自百度搜索和百度知道的实际用户日志中的问题。
在这里插入图片描述

DuReader中的答案是多样的,比如实体或描述。我们将DuReader视为一个抽取式问答任务,因此在评估时忽略那些是“是”或“否”答案的实例。

实现细节:我们在零-shot(zs)和一-shot(os)设置下评估CPM,并报告CMRC2018和DuReader的F1分数(F1)和精确匹配(EM)。对于零-shot设置,我们将段落和问题拼接在一起作为CPM的输入,然后要求CPM根据观察到的(段落,问题)对生成一个答案。对于一-shot设置,我们从训练集中随机选择一个真实的三元组(段落,问题,答案),并将其插入到实例的前面,作为CPM生成答案的提示。

结果:如表8所示,我们在三个数据集上进行了实验,并比较了不同大小的模型:小(s),中(m)和大(l)。从表中可以看到,随着模型大小的增长,CPM的表现越来越好。在所有模型中,大模型始终表现最佳。此外,一-shot设置下的结果优于零-shot设置。我们推测,CPM能够模仿先前序列的格式,并据此组织语言。我们还分析了生成的答案,发现CPM倾向于生成较长且重复的句子,而不是简短而精确的答案,这导致了较低的得分。我们认为,未来值得探索如何让CPM生成简洁而恰当的答案。总体而言,CPM在任何一个基准测试中都未达到非常高的分数。我们猜测这与预训练数据的格式有关。

3.5 实体生成

数据集:我们使用XLORE作为实体生成的基准数据集,该数据集包括446,236个关系和16,284,901个实体,这些关系和实体来自维基百科和百度百科。
在这里插入图片描述
在这里插入图片描述

实现细节:我们在少样本设置下评估CPM,并报告BLEU-1结果,使用不同参数量的模型。具体来说,我们从XLORE中随机选择相同关系的三元组(头实体、关系、尾实体),将N个三元组和一个不完整的三元组(头实体、关系)组合成一个提示。然后,给定提示后,模型需要预测相应的尾实体。

结果:我们在表9中展示了结果。从表中可以看出,CPM-large在这三种模型中表现最好。令人惊讶的是,给定一个包含两个三元组的提示,CPM能够达到与包含四个三元组的提示相当的结果。这表明,CPM能够模仿格式并挖掘事实知识,在极少样本的场景下生成适当的尾实体。我们还提供了一些案例(表10)来展示CPM的能力。

4. 未来工作

未来,我们将进一步探索大规模预训练模型在中文领域的潜力,通过增加更多的训练数据和扩大模型规模来实现这一目标。由于预训练的成本极为昂贵,我们将尝试优化训练框架,例如不同节点之间的数据传输方案,以加速这一过程。已有一些相关工作,如LAMB(You等,2020)和DeepSpeed(Rasley等,2020)。此外,减少模型大小通过模型压缩(Sanh等,2019;Jiao等,2019;Zhang等,2020)也是很重要的。

同时,我们还将纳入更多样化的数据来提升模型性能。对于文本数据,我们将添加多语言语料库,以训练一个以中文为中心的大规模多语言语言模型。对于结构化数据,如知识图谱,这对预训练语言模型(PLMs)非常重要(Peters等,2019;Xiong等,2020;Su等,2020),我们将探索新的学习算法,训练一个联合模型,能够同时从文本和知识图谱中学习,以实现更好的通用智能。

相关文章:

CPM:大规模生成式中文预训练语言模型

摘要 预训练语言模型(PLMs)已被证明对各种下游自然语言处理(NLP)任务有益。最近,GPT-3 以 1750 亿参数和 570GB 训练数据引起了广泛关注,因为它具备少样本(甚至零样本)学习的能力。…...

k8s scheduler几种扩展方式的关系及区别

网上关于scheduler扩展介绍的文章很多,但都是东说一句西说一嘴,完全没有逻辑性,对于逻辑建构者看着很痛苦,这篇文章不会深入教你怎么扩展,而是教你几种扩展方式的关系和逻辑结构: 目前Kubernetes支持五种方…...

Spring Boot 3.4.3 基于 SpringDoc 2 和 Swagger 3 实现项目接口文档管理

在现代企业级应用开发中,前后端分离已成为主流模式,前端负责界面呈现,后端专注提供 RESTful API 接口。然而,接口文档的编写和维护往往是开发过程中的痛点。Spring Boot 3.4.3 结合 SpringDoc 2 和 Swagger 3,为开发者…...

前端D3.js面试题及参考答案

目录 解释 D3.js 中 enter ()、update ()、exit () 的作用及典型应用场景 描述数据连接(Data Join)的原理,如何通过 data () 方法实现数据集与 DOM 元素的动态绑定? 如何利用 datum () 实现单个元素的数据绑定?与 data () 有何区别? 在动态数据更新时,如何通过 merge…...

Docker实现MySQL主从复制配置【简易版】

Docker实现MySQL主从复制配置 环境准备 安装docker 拉取MySQL 8.0镜像 docker pull mysql:8.0#检查 docker images | grep mysql代码流程 由于Mysql8.0的ssl验证十分繁琐,在创建容器的时候一定要禁掉 创建自定义网络 docker network create mysql-replication-ne…...

IDEA中打开项目Vue+Vue基本语法

一、IDEA中打开项目 1.IDEA中安装Vue基本插件 2.项目结构 项目根目录 node_modules : npm 加载的项目依赖模块 public : 存放静态资源,如图片、视频等。 src : 项目源码目录,包含主要的开发文件。 index.html : 首页入口文件,可以添…...

【深度学习新浪潮】图像修复(Image Inpainting)技术综述:定义、进展与应用展望

本文为精简版,完整技术细节与参考文献可与作者讨论。 1. 图像修复的定义与核心目标 图像修复(Image Inpainting)是一种通过算法手段填补图像中缺失区域或移除不需要对象的技术,其核心目标是利用图像上下文信息生成与周围像素一致且视觉自然的内容。该技术通过计算机视觉和…...

【实战】解决图片 Hover 抖动问题的完整指南

在开发网站时,很多人都会遇到一个常见问题:鼠标移动到图片上,图片放大,结果发生抖动或闪烁。这个问题往往伴随着后端接口请求、JS 动态追加 DOM 等复杂行为。 本文将深入剖析这个问题的成因,并提供一套彻底的解决方案…...

java容器

一、List 接口实现类 1. ​ArrayList 特性:基于动态数组实现,支持快速随机访问(时间复杂度 O(1)),但插入/删除元素时需移动后续元素(时间复杂度 O(n)) 一、核心方法分类 ​添加元素 add(E e):尾部追加元素,均摊时间复杂度O(1)add(int index, E element):指定位置插入…...

arthas之jvm相关命令

文章目录 1. dashboard2. thread线程相关3. jvmTHREAD相关文件描述符相关 4. sysprop5. 小结6. sysenv7. vmoption8. getstatic9. ognl10. 小结 1. dashboard 作用:显示当前系统的实时数据面板,按q或ctrlc退出 数据说明 ID: Java级别的线程ID&#xff…...

UDP视频传输中的丢包和播放花屏处理方法

在处理UDP视频传输中的丢包和花屏问题时,需要结合编码优化、网络传输策略和接收端纠错技术。以下是分步骤的解决方案: 1. 前向纠错(FEC,Forward Error Correction) 原理:在发送数据时附加冗余包,接收方通过冗余信息恢复丢失的数据包。 实现方法: 使用Reed-Solomon、XO…...

蓝桥杯 班级活动

问题描述 小明的老师准备组织一次班级活动。班上一共有 n 名同学(n 为偶数),老师想把所有同学进行分组,每两名同学一组。 为了公平,老师给每名同学随机分配了一个 n 以内的正整数作为 id,第 i 名同学的 i…...

Open webui的使用

问题 之前本地量化模型管理器ollama的文章,我们知道可以通过ollama来管理本地量化模型,也能够在命令行中与相关模型进行对话。现在我们想要在有个web页面通过浏览器来与本地模型对话。这里我们就使用Open webui作为界面来与本地模型对话。 安装启动 这…...

页面重构过程中如何保证良好的跨浏览器一致性?

在页面重构的过程中,为了确保网页能够在不同的浏览器中呈现一致的效果,我们需要采取一系列措施来提高跨浏览器的一致性。以下是几个关键步骤和技术要点: 使用标准化的HTML和CSS:始终遵循最新的Web标准编写代码,例如采用…...

Python库与Excel

目录 一、库 1、Python自带的库 2、第三方库 3、第三方库的安装 二、import的用法 三、datetime库 1、处理日期 2、处理时刻 3、局限性 四、random库 1、函数 2、随机种子 3、发牌模拟器 五、jieba库 六、openpyxl库 1、表格读取 2、表格元素遍历 3、工作表的…...

记录一下最近参与实习 外包 社招流程里的一些感悟

记录一下最近参与实习 外包 社招流程里的一些感悟 1.简历门面要重视 1.简历非常重要,它是你的门面 初步了解到你的一个实习/工作经历,然后掌握的技术栈,是否与当前项目匹配,哪些模块上的设计是我们想要重点关注的,可…...

流动的梦境:GPT-4o 的自回归图像生成深度解析

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

HarmonyOS NEXT开发进阶(十四):HarmonyOS应用开发者基础认证试题集汇总及答案解析

文章目录 一、前言二、判断题(134道)三、单选题(210道)四、多选题(123道)五、拓展阅读 一、前言 鸿蒙原生技能学习阶段,通过官方认证的资格十分有必要,在项目实战前掌握基础开发理论…...

Visual Studio Code(简称 VS Code)下载与使用教程1(新建文件,语法高亮,快捷键,主题,快捷指令)

简介 由 微软(Microsoft) 开发的 免费、开源、跨平台 的 代码编辑器,广泛用于编程开发、文本编辑和调试。 主要功能 代码编辑:支持几乎所有编程语言(Python、JavaScript、Java、C、Go 等),提供…...

3.28前端模拟面试

针对你 1.5 年的前端经验,结合 Vue 3、TypeScript、微前端(qiankun)等背景,我准备了一套模拟面试题,偏向场景化问题,考察你的实战经验和思维能力。 一、工程化 & 架构 你们的前端项目使用 qiankun 做微…...

pip 安装某个包之后,Jupyter Lab仍旧显示包冲突;例如:Numba needs NumPy 2.1 or less. Got NumPy 2.2.

异常提示 Numba needs NumPy 2.1 or less. Got NumPy 2.2. --------------------------------------------------------------------------- ImportError Traceback (most recent call last) Cell In[8], line 53 import pywt4 import matplot…...

Python:爬虫概念与分类

网络请求: https://www.baidu.com url——统一资源定位符 请求过程: 客户端,指web浏览器向服务器发送请求 请求:请求网址(request url);请求方法(request methods);请求头(request header)&…...

flask开发中设置Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数)

如果你想控制一个 Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数),你可以在模型中使用验证来确保这一点。一种常见的方法是使用模型的 validate 方法或者在执行插入或更新操作时进行检查。 以下是实现这一目标的几种方法&…...

从0到1解决项目问题经验-Vue3前端

问题1: 我有文件里面这么一段代码,但是现在有个问题,就是在设备信息详情的抽屉页面中,当我首次点击查看的时候,显示的物流中心名称现在是跟"deviceInfo.logisticsCenterName"做的绑定,于是现在显…...

Vue.js的CSS过渡与动画:常用案例解析

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...

【论文阅读】Co2l: Contrastive continual learning

原文链接:[2106.14413] Co$^2$L: Contrastive Continual Learning 阅读本文前,需要对持续学习的基本概念以及面临的问题有大致了解,可参考综述: Wang L, Zhang X, Su H, et al. A comprehensive survey of continual learning: …...

Python给对象数组排序

文章目录 1. 使用sorted()函数(返回新的排序后的列表)2. 使用list.sort()方法(原地排序,不返回新列表)3. 如果数据结构是集合(set),集合本身是无序的,无法直接排序&#…...

Docker-清理容器空间prune

docker system prune -a 是一个非常有用的命令,用于清理 Docker 系统中未使用的资源,包括停止的容器、未使用的网络、卷以及未被任何容器引用的镜像(悬空镜像和所有未使用的镜像)。以下是关于该命令的详细说明: 命令…...

Kubernetes》》K8S》》Deployment 、Pod、Rs 、部署 nginx

Deployment deployment文档说明 kubectl get rs,deployment,pods 删除pod 、deployment 、service # 如果只删除pod,deployment会自动重建,所以应该先删除deployment。 # 下面演示的是删除所有deployment,可以指定只删除某个 # 删除所有…...

【Zookeeper搭建】Zookeeper分布式集群搭建完整指南

Zookeeper分布式集群搭建 (一)克隆前准备工作 一、时钟同步 步骤: 1、输入date命令可以查看当前系统时间,可以看到此时系统时间为PDT(部分机器或许为EST),并非中国标准时间。我们在中国地区…...

基于YOLO11/WVP的电梯系统开发-模型训练与rk3568移植

1. 环境准备 代码下载: https://github.com/ultralytics/ultralytics.git切换到 8.3.0 以上的分支,yolov11 只在上述分支支持, 下载后在 ultralytics 根目录下安装 yolo 依赖环境: pip install -e . -i https://pypi.tuna.tsinghua.edu.cn…...

[数据结构]并查集(系统整理版)

基础用法 int p[N];//路径压缩 寻找祖宗节点 int find(int x){if(p[x]!x) p[x]find(p[x]);return p[x]; }int main(){ //初始化for(int i1;i<n;i) p[i]i; }合并 void merge(int a,int b){int aafind(a),bbfind(bb);if(aa!bb){p[aa]bb;} }查询是否联通 bool is_connected(…...

人工智能与软件工程结合的发展趋势

AI与软件工程的结合正在深刻改变软件开发的流程、工具和方法&#xff0c;其发展方向涵盖了从代码生成到系统维护的整个生命周期。以下是主要的发展方向和技术趋势&#xff1a; 1. 软件架构体系的重构 从“面向过程”到“面向目标”的架构转型&#xff1a; AI驱动软件设计以目标…...

Compose 实践与探索十七 —— 多指手势与自定义触摸反馈

上一节我们讲了滑动的手势识别以及嵌套滑动&#xff0c;二者都属于触摸反馈这个大的范畴内的知识。本节我们将深入触摸反馈这个话题&#xff0c;讲一讲多指手势的识别与完全自定义的触摸反馈的实现。 1、多指手势 多指手势可以分为两类&#xff1a; 利用 API 处理预设好的手…...

哈希表 - 两个数组的交集(集合、数组) - JS

一、Set基础 在 JavaScript 中&#xff0c;Set 是一种集合&#xff08;Collection&#xff09;​数据结构&#xff0c;用于存储唯一值​&#xff08;不允许重复&#xff09;&#xff0c;并且可以高效地进行添加、删除、查询等操作。它类似于数组&#xff08;Array&#xff09;…...

26_ajax

目录 了解 接口 前后端交互 一、安装服务器环境 nodejs ajax发起请求 渲染响应结果 get方式传递参数 post方式传递参数 封装ajax_上 封装ajax下 了解 清楚前后端交互就可以写一些后端代码了。小项目 现在写项目开发的时候都是前后端分离 之前都没有前端这个东西&a…...

Java面试黄金宝典24

1. 什么是跳表 定义 跳表&#xff08;Skip List&#xff09;是一种随机化的数据结构&#xff0c;它基于有序链表发展而来&#xff0c;通过在每个节点中维护多个指向其他节点的指针&#xff0c;以多层链表的形式组织数据。其核心思想是在链表基础上增加额外层次&#xff0c;每…...

每日c/c++题 备战蓝桥杯(全排列问题)

题目描述 按照字典序输出自然数 1 到 n 所有不重复的排列&#xff0c;即 n 的全排列&#xff0c;要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 n。 输出格式 由 1∼n 组成的所有不重复的数字序列&#xff0c;每行一个序列。 每个数字保留 5 个场…...

Layui实现table动态添加行,可删除、表格可编辑,小数校验

实现如图需求&#xff0c;layui实现的可编辑table&#xff0c;包含B、C、D、E列&#xff0c;A列不用实现出现&#xff0c;A列放在附件就是让你明白&#xff0c;不同的物料名称&#xff0c;行是不一样的。除了头部表头和E列不能编辑&#xff0c;每个表格都可编辑&#xff0c;其中…...

Spring Boot 非web应用程序

​​​​​在 Spring Boot 框架中&#xff0c;要创建一个非Web应用程序&#xff08;纯Java程序&#xff09; main方法运行&#xff0c;不启动tomcat&#xff0c;main方法执行结束&#xff0c;程序就退出了&#xff1b; 方式一 1、SpringBoot开发纯Java程序&#xff0c;应该采…...

数据分析中的基线校正算法全解析:原理、实现与应用

数据分析中的基线校正算法全解析:原理、实现与应用 在数据分析中,基线漂移是一个常见问题,会严重影响数据的解释和分析精度。本文将详细介绍12种主流基线校正方法,包括数学原理、Python实现代码和适用场景分析。 基线漂移问题概述 基线漂移主要由以下因素引起: 仪器强度…...

国外计算机证书推荐(考证)(6 Sigma、AWS、APICS、IIA、Microsoft、Oracle、PMI、Red Hat)

文章目录 证书推荐1. 六西格玛 (6 Sigma)2. 亚马逊网络服务 (AWS)3. 美国生产与库存控制学会 (APICS)4. 内部审计师协会 (IIA)5. 微软 (Microsoft)6. 甲骨文 (Oracle)7. 项目管理协会 (PMI)8. 红帽 (Red Hat) 证书推荐 1. 六西格玛 (6 Sigma) 介绍&#xff1a;六西格玛是一种…...

linux》》docker 、containerd 保存镜像、打包tar、加载tar镜像

Linux》》docker: 默认情况下&#xff0c;Docker镜像保存在/var/lib/docker/目录下。 当您使用docker pull命令从Docker Hub或私有镜像仓库中拉取镜像时&#xff0c;Docker会自动将镜像文件保存在/var/lib/docker/image/目录下。 每个镜像都由一个或多个层组成&#xff0c;这些…...

大数据(2)Hadoop架构深度拆解:HDFS与MapReduce企业级实战与高阶调优

目录 一、分布式系统的设计哲学演进1.1 从Google三驾马车到现代数据湖 二、企业级HDFS架构全景图2.1 联邦架构的深度实践2.2 生产环境容灾设计2.3 性能压测方法论 三、MapReduce引擎内核解密3.1 Shuffle机制全链路优化3.2 资源调度革命&#xff1a;从MRv1到YARN3.3 企业级编码规…...

【数学建模】动态规划算法(Dynamic Programming,简称DP)详解与应用

动态规划算法详解与应用 文章目录 动态规划算法详解与应用引言动态规划的基本概念动态规划的设计步骤经典动态规划问题1. 斐波那契数列2. 背包问题3. 最长公共子序列(LCS) 动态规划的优化技巧动态规划的应用领域总结 引言 动态规划(Dynamic Programming&#xff0c;简称DP)是一…...

UE学习记录part11

第14节 breakable actors 147 destructible meshes a geometry collection is basically a set of static meshes that we get after we fracture a mesh. 几何体集合基本上是我们在断开网格后获得的一组静态网格。 选中要破碎的网格物品&#xff0c;创建集合 可以选择不同的…...

LeetCode知识点整理

1、Scanner 输入&#xff1a; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 读取整数int num scanner.nextInt();// 读取一行字符串String line scanner.nextLine();scanner.close();…...

浅析车规芯片软错误防护加固的重要性

随着汽车电子技术的飞速发展&#xff0c;汽车已经从传统的机械交通工具转变为高度依赖电子系统的智能移动终端。车规芯片作为汽车电子系统的核心部件&#xff0c;其可靠性和安全性直接关系到车辆的正常运行和驾乘人员的安全。然而&#xff0c;车规芯片在复杂的运行环境中面临着…...

Android Jetpack学习总结(源码级理解)

ViewModel 和 LiveData 是 Android Jetpack 组件库中的两个核心组件&#xff0c;它们能帮助开发者更有效地管理 UI 相关的数据&#xff0c;并且能够在配置变更&#xff08;如屏幕旋转&#xff09;时保存和恢复 UI 数据。 ViewModel作用 瞬态数据丢失的恢复&#xff0c;比如横竖…...

Matlab_Simulink中导入CSV数据与仿真实现方法

前言 在Simulink仿真中&#xff0c;常需将外部数据&#xff08;如CSV文件或MATLAB工作空间变量&#xff09;作为输入信号驱动模型。本文介绍如何高效导入CSV数据至MATLAB工作空间&#xff0c;并通过From Workspace模块实现数据到Simulink的精确传输&#xff0c;适用于运动控制…...