E2VPT: An Effective and Efficient Approach for Visual Prompt Tuning

news2024/9/24 15:07:23

论文汇总

存在的问题

1.以前的提示微调方法那样只关注修改输入,而应该明确地研究在微调过程中改进自注意机制的潜力,并探索参数效率的极限。

2.探索参数效率的极值来减少可调参数的数量?

解决办法

提示嵌入进行transformer中

提示剪枝

Token-wise Pruning

Token-wise Pruning对prompt生成一个mask, ρ = { ρ 1 , ρ 2 , … , ρ M } , ρ k ∈ { 0 , 1 } \rho=\{\rho_1,\rho_2,\ldots,\rho_M\},\rho_k\in \{0,1\} ρ={ρ1,ρ2,,ρM},ρk{0,1} ( M M M为可视提示符的长度)。 ρ k ∈ { 0 , 1 } \rho_k\in \{0,1\} ρk{0,1} 代表第 i i i 个token的重要程度,0代表这个token被丢弃, P ~ k = ρ k ⋅ P k \tilde{P}_k=\rho_k\cdot {P}_k P~k=ρkPk

Segment-wise修剪

Segment-wise修剪对Token-wise Pruning之后的Token做进一步的剪枝,具体来说就讲Token-wise Pruning之后的Token分为 R R R 个part,将每个part视为一个整体。每一个part也有一个类似于Token-wise Pruning的 ρ \rho ρ 变量,表示每一个part的Token是否需要被抛弃。

摘要

随着基于transformer的模型的规模不断增长,为新任务微调这些大规模预训练的视觉模型已经变得越来越参数密集。参数高效学习是为了减少微调过程中可调参数的数量。尽管这些方法显示出很好的结果,但与完全微调相比,仍然存在显着的性能差距。为了解决这一挑战,我们提出了一种有效和高效的视觉提示调谐(E2VPT)方法,用于大规模基于变压器的模型自适应。具体来说,我们在自注意层和输入层分别引入了一组可学习的键值提示和视觉提示,以提高模型微调的有效性。此外,我们设计了一个提示剪枝程序,在保持模型性能的同时系统地修剪低重要性提示,大大提高了模型的效率。实证结果表明,我们的方法在两个基准上优于几个最先进的基线,参数使用率相当低(例如,VTAB-1k上的模型参数使用率为0.32%)。我们的代码可在https://github.com/ChengHan111/E2VPT上获得。

1. 介绍

人工智能(AI)的发展不仅应优先考虑性能进步,还应强调可持续部署[64,78,80,87]。尽管人们对视觉相关任务的性能改进有着迷人的追求,但目前模型的规模一直在迅速增加,这导致了能量密集型和计算成本高昂的训练[31,73,92]。基于transformer的架构目前主导着视觉相关模型,如ViT-Huge [12] (632M)和Swin-Large [54] (197M),它们的参数明显多于卷积神经网络(CNN)像ResNet [26] (25M)。从头开始训练如此大的模型存在着数据有限[5,20,75]和低精度下缓慢收敛[37,47]等挑战。克服这些挑战的一个常见范例是预训练-然后微调,它减少了对大量训练数据的需求,并加快了各种视觉任务的处理速度。然而,传统的全调优涉及到为每一个任务存储和部署backbone参数的完整副本[34],计算成本很高,不适合快速模型部署。

图1所示。在预训练之后微调的范式下,$ \text{E}^2 \text{VPT} $(我们的)与其他工作(即部分调谐[91],额外模块[6]和提示调谐[34]方法)。与最先进的微调方法相比,我们的方法获得了可靠的性能提升,并且在采用预训练的ViT-Base/16[12]作为主干的广泛分类任务上具有完全微调的竞争力,参数使用量相当低(见表1)。颜色分别表示VTAB-1k[96]上的结果:Specialized, Natural和Structure。

为了解决这个问题,已经开发了各种方法,可分为三大类(见图1):部分调优、额外模块和提示调优方法。部分调优方法[10,35,58]只对骨干的一部分进行微调,如分类器头部或最后几层,而冻结其他部分。额外的模块方法将可学习的偏置项[6]或额外的适配器[70,98]插入网络以进行适应。提示调谐方法在变压器的输入层添加提示令牌[34,36,94],而不改变或微调主干本身。所有这些方法都是在预训练后微调的模式下运行的,与完全微调相比,这减少了可学习参数的数量[10,35,58,70,98]。

然而,尽管取得了令人鼓舞的结果,但现有的参数高效方法存在两个主要局限性。首先,他们没有仔细检查transformer自关注机制的核心架构,导致完全微调的性能差距很大。其次,它们通常需要对相对大量的参数进行微调以达到合理的性能,而无法探索参数效率的极值。

以上概述的观点引出了两个基本问题:

1:我们如何才能为大规模基于transformer的视觉模型建立快速调整的有效性?

2:我们如何探索参数效率的极值来减少可调参数的数量?

这两个问题是我们工作的基础。直觉是,我们不应该像以前的提示调整方法那样只关注修改输入,而应该明确地研究在微调过程中改进自注意机制的潜力,并探索参数效率的极限

为了回答问题1,我们讨论并分析了transformer的自关注机制,该机制对于在全局上下文中捕获远程令牌依赖关系至关重要[21,38,49]。除了输入视觉提示外,我们还引入了可学习的键值提示,并将它们集成到自注意层的键值矩阵中。在微调期间,键值提示与输入可视提示一起学习。这种方法有效地利用了设计良好的transformer提示体系结构,从而显著提高了性能。此外,它为电流互感器架构提供了一个通用的即插即用提示模块,其微调解决方案在概念上不同于前面提到的视觉领域的所有技术。

在问题2的激励下,我们提出了一种修剪策略,在保持模型性能的同时进一步减少参数的数量。我们的方法从彩票假设(LTH)中获得灵感[16,102],它假设对于给定的任务,存在一个子网络,该子网络可以匹配原始过参数化网络的测试精度,而不需要不必要的权重[22,23,41,43,44]。在此范例的基础上,我们重新审视了提示调优方法的核心设计,并进一步减少了可学习参数的数量。具体来说,我们的目标是保留对性能有重大贡献的提示令牌,同时在微调期间修剪冗余或不必要的提示令牌。通过修剪这些不必要的提示,我们可以在保持性能的同时显著提高提示调优效率。

为了回答问题1-2,我们提出$ \text{E}^2 \text{VPT} $,即Effective and Efficient Visual Prompt Tuning。e2vpt是一种新颖的提示调优框架,它既具有架构意识,又具有修剪锚定(见图1)。在§2中,我们进行了文献综述并讨论了相关工作。我们提出的方法在§3中提出,在那里我们详细描述了我们如何设计视觉和键值提示,以更少的参数实现卓越的性能。在§4中,我们在各种基准、主干和不同的预训练目标上提出了令人信服的实验结果。具体来说,我们的方法在VTAB-1k上的准确率比完全调优平均提高了5.85%,比VPT平均提高了1.99%[34]。此外,我们的方法使用的可学习参数比现有方法少得多,平均只占VTAB-1k主干参数的0.32%,而VPT平均需要0.68%(见图1)。我们进一步证明并解释了我们的方法比双曲可视化的VPT的优越性。最后,我们在附录中展示了我们的方法在语言领域的强大算法泛化。我们相信这项工作能为相关领域提供有价值的见解。

2. 相关工作

2.1. 视觉Transformers

受transformer在自然语言处理(NLP)中取得的巨大成功的启发[5,11,52,69,79,83],研究人员将transformer架构扩展到各种监督视觉任务,包括图像分类[12,53,54,56],图像分割[46,51,74,82,84,86,100],目标检测[4,7,50,66,93,101]和姿态估计[29,30,48,90])。自监督预训练范式[3,10,24]也得到了探索,并得到了最先进的结果。与卷积神经网络(cnn)相比,transformer因其优越的性能和可扩展性而在视觉相关学科中占据主导地位[27,34]。然而,使transformer适应各种视觉任务所需的大量计算和参数开销也不容忽视[15,33,97]。例如,最近基于transformer的模型,如MViTv2Large [45] (218M)、vitg [95] (1.8B)、SwinV2-G [53] (3.0B)和V-MoE [72] (14.7B),会产生大量的计算成本。因此,我们提出$ \text{E}^2 \text{VPT} $,旨在降低基于transformer的架构的计算成本,同时在预训练-然后微调范式中保持高性能。

2.2. 参数高效微调

高效的模型训练已经引起了视觉界的广泛关注,尤其是随着视觉transformer的兴起[1,8,12,54,85]。然而,尽管这些模型非常有效并被广泛使用,但它们对于实际部署和调整来说往往过于庞大。因此,通常采用预训练-然后微调范式。虽然完全微调确保了强大的性能,但这是一种涉及更新所有网络参数的昂贵方法[27,75]。为了克服这一挑战,研究人员正在探索平衡参数效率和鲁棒性能的替代方案,可大致分为三组:部分调优、额外模块和提示调优方法。

部分调优方法被广泛用于参数高效的微调。这些方法包括冻结大部分主干,只微调一小部分参数,如线性[32]或MLP磁头[9],或主干的几个块/层[24,65,91,99]。虽然这些方法直接且易于实现[10,35,58],但与完全微调相比,它们通常存在很大的性能差距。额外的模块方法设计了额外的可学习的插件架构进行微调。例如,[98]中的工作在冻结原始网络的同时交替引入了一个侧结构。[6,70]中的作品将额外的残余单元插入主干。然而,这些方法的一个缺点是插入的模块通常是针对特定的体系结构定制的,可能无法推广到其他体系结构。

此外,与部分调优方法相比,这些模块通常消耗更多的参数。提示调整或提示[28,42,57,89]最初被提出用于语言领域的快速模型自适应。这些方法将一组可学习的向量添加到主干的输入中,并且仅在微调期间更新这些特定于任务的提示。最近,在视觉领域引入了视觉相关提示[18,34,88],它在输入序列中设计视觉提示,并在完全微调的情况下显示出具有竞争力的性能。然而,目前的方法没有考虑基于transformer的体系结构的内部设计,导致不太有效的提示解决方案。相比之下,我们的方法注意到架构并锚定在修剪上,这在概念上将其与上述方法区分开来。

3. 我们的E2VPT方法

在本节中,我们将介绍E2VPT,这是一种新颖的视觉提示调谐方法,用于有效和高效的大规模基于transformer的模型微调。我们首先在§3.1中定义这个问题和记号。在§3.2中介绍了通过设计视觉和键值提示符进行有效的提示调优,然后在§3.3中介绍了有效的提示修剪。总体框架如图2所示。

3.1. 问题定义

在本节中,我们定义了 E 2 VPT \text{E}^2 \text{VPT} E2VPT 问题并提供了相关符号。假设我们有一个主干视觉transformer器模型 T \textbf{T} T,它在大量数据和任务上进行了预训练。视觉transformer的输入是一系列图像补丁 I = { I 1 , I 2 , … , I m } I=\{I_1,I_2,\ldots,I_m\} I={I1,I2,,Im},其中 m m m为图像补丁总数。然后用位置编码将每个patch投影到 d d d维嵌入中,即 E = { E j ∣ 1 ≤ j ≤ m } E=\{E_j|1\le j\le m\} E={Ej∣1jm},其中 E j = Emb ( I j ) E_j=\text{Emb}(I_j) Ej=Emb(Ij)。视觉transformer T \textbf{T} T N N N 个相同的transformer层组成,表示为:

这里的每个transformer层都是多头自关注(MSA)和前馈网络(FFN)的堆栈:

给定一个新的视觉任务,目标是微调一个模型 T ^ \hat{\textbf{T}} T^,在只调整少量参数的情况下,在任务上提供良好的性能。在视觉提示调优的上下文中, T ^ = { T , P } \hat{\textbf{T}}=\{\textbf{T},\textbf{P}\} T^={T,P},其中包括一个冻结的主干 T \textbf{T} T,以及具有很少可调参数的可训练提示 P \textbf{P} P

3.2. 有效的提示

图2。E2VPT框架概述。在预训练-然后微调范式下,只有transformer输入和主干(§3.2)中的提示在微调过程中更新,而所有其他组件保持冻结。在(d)中,我们进一步在两个粒度级别(即,标记明智和分段明智)上引入修剪(§3.3),以消除倒带期间不利的输入提示。

大多数现有的提示调优方法侧重于通过将一组视觉提示添加到transformer层的输入序列来调优,而没有考虑变压器体系结构的内部设计。然而,为了提高提示调优的有效性并实现最佳的微调性能,我们提出了一种新的方法,在我们的视觉提示调优框架中,除了输入视觉提示( P I \textbf{P}_I PI )外,还包含一组键值提示( P K \textbf{P}_K PK P V \textbf{P}_V PV )。直观地,输入视觉提示被插入到每个编码器层的输入序列中,这些编码器层学习表示新任务。键值提示与自注意模块中的键和值参数矩阵连接在一起,该模块学习从数据中捕获新的注意模式。

视觉提示。视觉提示是一组与输入视觉标记具有相同维度的 d d d 维嵌入向量。它们被附加到每个transformer编码器层的输入序列中,并与所有输入令牌交互。视觉提示的作用与传统提示调优方法中的提示符号类似[34,42],它们学习特定于任务的嵌入,以指导模型在新任务上执行。

正式地,这些视觉提示被定义为 P I = { P I 1 , P I 2 , … , P I N } P_I=\{P^1_I,P^2_I,\ldots,P^N_I\} PI={PI1,PI2,,PIN},其中 P I i P^i_I PIi 为可学习视觉在第i层编码器中提示, N N N为总层数。然后编码器层表示为:

其中 Z i Z^i Zi 表示由第 i i i层编码器计算的上下文嵌入。不同的颜色分别表示可训练参数和固定参数。对于输入图像patch E E E的嵌入,它们是用主干的冻结Emb投影进行初始化的。

键-值提示。视觉提示对于学习新任务的知识很有用。然而,它们在指导transformer编码器层之间的信息交互方面存在不足。原因是当对新数据进行微调时,图像分布可能与用于预训练骨干模型的图像示例中的图像分布有很大不同。因此,增强模型从微调数据中捕获新信息的能力以及在输入令牌之间进行更有效的关注以学习新模式是至关重要的。

为此,我们提出了一种新的方法,通过引入一组新的键值提示, P K P_K PK P V P_V PV,它们被合并到每个编码器层的注意力模块中(如图2(a)所示)。这些键-值提示是只有几列的小矩阵,但与原始注意力模块中的键和值矩阵共享相同的行数。为了执行新的注意力计算,键和值矩阵分别与相应的 P K P_K PK P V P_V PV 提示符相连接。这个过程定义如下:

其中FFN为前馈网络,MSA为编码器层内的多头注意。 h h h 表示第 h h h 个头。 K ′ K' K V ′ V' V 是新的键和值嵌入矩阵,定义为:

其中, K K K V V V 表示主干中的原始键矩阵和值矩阵。通过这种方式,键值提示可以帮助指导模型适应新数据。在我们的实现中,我们更进一步,在每个transformer层中启用 P K P_K PK P V P_V PV 提示的参数共享,而不是调整单独的可学习向量。我们的动机是双重的:首先,我们的实验结果表明,在共享提示的情况下,跨实例的微调性能持续提高;其次,使用共享提示向量将可学习transformer部分的参数使用减少了一半,使其更具参数效率。我们在§4.3中提供了关于探索提示位置(即,在 K K K V V V 之前或之后)的讨论。

值得注意的是,查询矩阵 Q Q Q 是自注意机制中的另一个关键元素。然而,不需要对 Q Q Q 进行额外的提示,原因有二:首先,对 Q Q Q 进行提示类似于对 K K K 进行前置以计算每对 Q Q Q K K K 之间的注意分数,因此,对 Q Q Q K K K 都进行提示是不必要的;其次, Q Q Q 的变化会影响注意力图的输出形状,需要对下一层不匹配的维度进行额外的线性投影。在参数高效设计下,这是无法承受的。更多的实验和讨论将在附录中提供。

3.3. 有效的促使

我们的有效提示方法旨在提高微调模型的性能。然而,一个自然的问题出现了:我们能否在不牺牲模型性能的情况下减少可调提示的数量?彩票假设(lottery ticket hypothesis, LTH)[16,102]指出,对于给定的任务,存在一个子网络,在不需要不必要的权重的情况下,可以达到与原始过参数化网络相同的测试性能。在这一假设的推动下,我们进行了一个实验,我们掩盖了不同的视觉提示,发现不同的提示对模型的性能有不同的影响,有些甚至有负面影响。这一观察结果与以往的研究一致[43,57]

基于我们的发现,我们提出了一种对视觉提示进行快速修剪的方法。这种方法的主要目标是保留最有影响的提示,同时消除冗余或不必要的提示。通过删除不太重要的提示,我们可以在保持性能的同时显著提高提示调优的效率。

为了实现这一目标,我们设计了一个级联修剪策略,该策略在两个粒度级别上运行,即令牌修剪和分段修剪,如图2(d)所示。标记智能修剪最初识别并删除最不重要的视觉提示。在此步骤之后,分段式修剪将每个剩余提示划分为多个片段并过滤掉负面片段。通过共同减少可学习视觉提示中的参数使用,我们的两级修剪方法创建了软过滤提示,可以在倒带阶段重新训练。

Token-wise修剪。我们引入一个可学习掩模变量 ρ = { ρ 1 , ρ 2 , … , ρ M } \rho=\{\rho_1,\rho_2,\ldots,\rho_M\} ρ={ρ1,ρ2,,ρM} ( M M M为可视提示符的长度),并将其与各transformer层的输入可视提示符相关联。式中 ρ k ∈ { 0 , 1 } \rho_k\in \{0,1\} ρk{0,1},其中0表示对相应的可学习输入提示进行剪枝。然后,屏蔽版本的视觉提示变成 P ~ k = ρ k ⋅ P k \tilde{P}_k=\rho_k\cdot {P}_k P~k=ρkPk 。为了确定修剪位置,我们计算每个提示符号的重要性分数[16,57],并消除得分最低的位置。重要性分数定义为模型对掩模变量 ρ k \rho_k ρk 的期望灵敏度[60]:

式中, L \mathcal{L} L 为损失函数, D x \mathcal{D}_x Dx 为训练数据分布[60]。分配给每个视觉提示的重要性分数反映了它对微调性能的贡献。低重要性分数表明提示对微调过程的贡献很小,甚至是负的。相反,高重要性分数表明提示是有意义和有用的,对微调过程有重大贡献。

Segment-wise修剪。我们进一步研究了分段修剪,以排除每个提示内的负面提示段。每个提示令牌的嵌入首先平均分成$ R $部分。每个部分作为一个独立的单元,可以共同优化。类似于标记式修剪,然后我们为提示标记内的每个片段分配一个掩码变量,并过滤掉那些重要性分数低的片段。

Rewinding。在执行两级级剪枝之后,权值倒卷阶段的重点是重新训练软过滤的提示令牌。这个过程包括在修剪阶段对每个层的重要性评分进行排序,当其重要性评分相对较低时,将相应的掩码变量设置为0。接下来,在微调过程中,使用学习率和权重衰减的原始组合,将软过滤输入提示与其他可学习参数一起重新训练。

4. 实验

参考资料

论文下载(ICCV 2023)

https://arxiv.org/abs/2307.13770

代码地址

https://github.com/ChengHan111/E2VPT

参考资料

https://zhuanlan.zhihu.com/p/671299605

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

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

相关文章

学生网上选课系统设计与实现

学生网上选课系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装学生网上选课系统软件来发挥其…

托盘检测系统源码分享

托盘检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

两数之和、三数之和、四数之和

目录 两数之和 题目链接 题目描述 思路分析 代码实现 三数之和 题目链接 题目描述 思路分析 代码实现 四数之和 题目链接 题目描述 思路分析 代码实现 两数之和 题目链接 LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode) 题目…

牛客周赛 Round 61 (C++实现)

比赛链接:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com) 文章目录 1.致十年后的我们1.1 题目描述1.2 思路1.3 代码 2.简单图形问题2.1 题目描述2.2 思路2.3 代码 3. 小红的机器人构造3.1 题目描述3.2 思路3.2.1 问题13.2.2 问题23…

力扣 中等 1901.寻找峰值II

文章目录 题目介绍题解 题目介绍 题解 需要明白一个事实:从任意一个点出发,可以经过一个递增路径,找到一个极大值点。 求出一行的最大值,如果这行最大值比上面的要小,那峰值(之一)就会在上面 …

最具成长潜力奖!2024中国互联网发展创新与投资大赛(深圳)落幕,爱加密载誉而归!

近日,由中央网信办信息化发展局、广东省委网信办指导,中国互联网发展基金会、中国互联网投资基金、深圳市委网信办联合主办的2024中国互联网发展创新与投资大赛(深圳)正式落幕。 本次大赛共有508个项目报名参赛,经过4个…

springboot中的异步任务

在springboot项目中可以通过EnableAsyncAsync的方式简化异步操作,下文使用springboot:3.2.1 源码分析 若一个bean中的公共方法上标注了Async,在系统启动时,会给这个类创建一个代理对象,并将该代理对象作为bean注册到spring容器中 …

PyTorch 模型调试与故障排除指南

在当代深度学习领域,PyTorch 已成为开发和训练神经网络的主要框架之一。然而随着模型复杂度的增加和数据规模的扩大,开发者常常面临各种调试和优化挑战。本文旨在为 PyTorch 开发者提供一个全面的调试指南,涵盖从基础概念到高级技术的广泛内容…

2024双11买什么东西比较好?2024双十一好物推荐

双十一各种爆款商品,打折商品非常多,容易让人挑花眼也容易落入消费主义的陷阱,买回家后发现并不实用,甚至可能是自己平常生活中根本用不上的东西!即使是打折活动也要在购买前考虑一下自己是否需要,在日常生…

DAMODEL——创建云实例与部署深度学习模型的详细指南

使用 DAMODEL 控制台创建云实例与部署深度学习模型的详细指南 本文将逐步介绍如何使用 DAMODEL 控制台创建云实例、配置 SSH 密钥、上传与下载数据集、以及基于 UNet 网络进行眼底血管分割的完整流程。此指南适用于需要在云端进行深度学习训练的用户,提供详细的操作…

YOLOv10改进,YOLOv10主干网络替换为FasterNet(全网独发手把手教学,助力涨点)

摘要 近年来,许多研究致力于减少浮点运算(FLOPs)以加速神经网络。然而,我们观察到这种FLOPs的减少并不一定能带来相应的延迟减少。这主要是由于运算每秒浮点运算数(FLOPS)效率低下,尤其是在频繁的内存访问(如深度卷积)时。为了解决这一问题,提出了一种新的部分卷积(…

如何快速上手一个Github的开源项目

程序研发领域正是有一些热衷开源的小伙伴,技能迭代才能如此的迅速,因此,快速上手一个GitHub上的开源项目,基本上已经变成很个程序员小伙伴必须掌握的技能,因为终究你会应用到其中的一个或多个项目,帮助自己…

<刷题笔记> 二叉搜索树与双向链表注意事项

二叉搜索树与双向链表_牛客题霸_牛客网 (nowcoder.com) 根据题意,我们需要将搜索二叉树转换成有序的形式。 重点一:BST的中序遍历一定是有序的 因此,此题无论如何都需要使用中序。 又因为要求原地算法,所以: 重点二&a…

Oracle AI理论与实践,企业落地篇干货满满

最近也是看到了圈子里的一位DBA好友,领导安排的工作是让负责AI的落地,而且也作为他业绩考核的指标,作为1名15年的DBA老兵来说,让AI落地面临的困难重重。 AI已经逐渐侵入到实际的生活中,最近我也是参加了Oracle官方在中…

大模型下载、本地部署和调用攻略

零、下载大模型——以Qwen/Qwen2.5-7B为例 1、下载前的准备工作 1.1 仔细阅读模型的Model card介绍 里面会有支持的上下文长度、模型结构、参数量等基本信息 1.2 查看模型文件 Tokenizer相关的文件: merges.txt:这是用于Byte Pair Encoding&#xff…

git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样

git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样 code review! 文章目录 git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样1.实现该功能的 Bash 脚本示例2.改进版:增加了gi…

【第十八章:Sentosa_DSML社区版-机器学习之协同过滤】

【第十八章:Sentosa_DSML社区版-机器学习之协同过滤】 1.算子介绍 协同过滤是推荐系统中常用的一种方法。该算法旨在填补用户-产品关联矩阵中缺少的项。在算法中,用户和产品都是通过一组少量的潜在因素描述,这些潜在因素可以用于预测用户-产…

彻底掌握Android中的ViewModel

彻底掌握Android中的ViewModel ViewModel 属于Android Jetpack库的一部分,是一种业务逻辑或屏幕状态容器。它提供了在配置更改(如屏幕旋转)后依旧保留相应状态的特性,帮助开发者以更加清晰和可维护的方式处理UI相关的数据&#x…

MySQL安装文档-Windows

文章目录 MySQL安装1. 安装2. 配置 MySQL安装 1. 安装 1). 双击官方下来的安装包文件 2). 根据安装提示进行安装 安装MySQL的相关组件,这个过程可能需要耗时几分钟,耐心等待。 输入MySQL中root用户的密码,一定记得记住该密码 2. 配置 安装好MySQL之后…

从零开始构建GPT风格的LLM分类器 微调GPT模型进行垃圾邮件分类

在这篇文章中,我想向您展示如何将预训练的大型语言模型(LLM)转变为强大的文本分类器。 为什么专注于分类? 首先,将预训练模型微调为分类器提供了一种温和而有效的微调入门方式。其次,许多现实世界和商业挑…