ToCom作为一个即插即用的模块,能够有效地解耦训练和推理过程中的标记压缩程度。在VTAB-1k基准测试中,ToCom在DeiT-B的平均性能上比ToMe最高可提升2.0%。
标记压缩通过减少冗余标记的数量(例如,修剪不重要的标记或合并相似的标记)来加快视觉变换器(
ViTs
)的训练和推理。然而,当这些方法应用于下游任务时,如果训练和推理阶段的压缩程度不匹配,会导致显著的性能下降,这限制了标记压缩在现成训练模型上的应用。因此提出了标记补偿器(ToCom
),以解耦两个阶段之间的压缩程度。该插件通过在预训练模型上额外执行了一个快速参数高效的自蒸馏阶段获得一个小型插件,描述了不同压缩程度下模型之间的差距。在推理过程中,ToCom
可以直接插入到任何下游现成模型中,无论训练和推理的压缩程度是否匹配,都能获得通用的性能提升,而无需进一步训练。
论文地址:https://arxiv.org/abs/2408.06798
论文代码:https://github.com/JieShibo/ToCom
Introduction
视觉变换器(ViTs
)在计算机视觉的多个领域取得了显著成功,包括图像分类、目标检测、语义分割等。然而,随着ViTs
规模的快速增长,计算成本的增加已成为一个迫切问题。因此,大量研究工作集中在加速ViTs
的训练和推理上。ViTs
的特点在于能够处理可变数量的输入标记,除了卷积神经网络中广泛使用的传统技术,如模型剪枝、量化和蒸馏,近期的研究通过标记压缩来加速ViTs
,例如修剪不重要的标记或合并相似的标记。
与剪枝和蒸馏等技术相比,标记压缩技术具有明显的优势。一些标记压缩方法(例如,ToMe
)可以以零样本的方式应用于现成模型或用于加速训练。与量化不同,标记压缩方法不需要对低精度操作符的支持。此外,标记压缩方法与上述其他技术在操作上是正交的,使其在ViTs
中具有广泛的适用性。
然而,当标记压缩应用于下游任务时,论文观察到如图1
所示的以下缺点:
-
尽管一些标记压缩技术可以应用于现成模型,但通常会导致显著的性能下降。
-
即使标记压缩仅在训练期间应用以加速过程,而在推理期间不进行压缩,模型的性能仍然低于未经标记压缩训练的模型。
-
总之,当训练和推理阶段的标记压缩程度不一致时,模型的性能表现不佳。
论文指出,经过不同标记压缩程度微调的模型在参数层面存在一定的差距,这导致在推理过程中改变压缩程度时性能下降。此外,这一差距可以在不同的下游数据集之间转移。基于此,论文提出标记补偿器(Token Compensator
,简称ToCom
),这是一种旨在解耦训练和推理过程中的标记压缩程度的预训练插件。ToCom
是一个参数高效的模块,仅包含少量参数,用于描述具有不同压缩程度的模型之间的差距。为了获得ToCom
,在预训练数据集上通过不同压缩程度之间的快速自蒸馏过程进行训练。具体来说,教师模型和学生模型都是相同的冻结预训练模型,其中学生模型包括ToCom
。在每一步中,教师模型和学生模型被随机分配不同的压缩程度,同时ToCom
通过蒸馏学习它们之间的差距。此外,为不同的压缩程度设置分配不同ToCom
参数的子集,使ToCom
能够通过单一的训练过程适应各种压缩程度对。
在推理过程中,将ToCom
直接集成到在下游任务上进行微调的现成模型中,而无需进一步训练。通过选择ToCom
参数的子集,微调后的模型可以直接应用于各种标记压缩程度,并达到与训练和推理压缩程度一致时相当的性能。重要的是,ToCom
只需预训练一次,即可应用于在任意下游数据集上经过微调的模型,不论其标记压缩程度如何,从而使任何单一的现成模型能够处理动态延迟约束,而无需修改参数。
论文在超过20
个数据集上进行了实验,涵盖了各种压缩程度设置。实验结果表明,ToCom
作为一个即插即用的模块,能够有效地解耦训练和推理过程中的标记压缩程度。例如,在VTAB-1k
基准测试中,ToCom
在DeiT-B
的平均性能上比ToMe
最高可提升2.0%
,如图1
所示。ToCom
还可以应用于不同规模的模型或在不同对象上预训练的模型,或者用于增强各种标记压缩方法,包括标记合并和标记剪枝。
Related Work
Token Compression
标记压缩旨在通过减少标记数量来消除冗余,从而加速视觉变换器(ViTs
)。它主要包括两个方向:标记剪枝和标记合并。标记剪枝涉及通过定义的指标评估标记的重要性,并相应地移除不重要的标记。PS-ViT
提出了一个自上而下的范式来估计每个标记的重要性。DynamicViT
对轻量级子网络进行微调以评估标记。EViT
和Evo-ViT
使用 [CLS
] 标记的注意力分数作为关注度的指标,并可以选择将所有剪枝后的标记汇总为一个。A-ViT
和ATS
也根据输入图像的复杂性调整剪枝率,但其动态标记长度目前尚未得到现有计算框架的良好支持。SuperViT
训练一个单一的ViT
以支持不同的标记保留率。
另一方面,标记合并通过合并相似的标记来减少标记数量。标记池化使用 -means 进行标记聚类。ToMe
提出了一个双分图软匹配(BSM
)算法来逐步合并相似的标记。TPS
通过先进行剪枝,然后融合保留的标记和剪枝的标记来实现标记合并。CrossGET
提出了完整图软匹配和交叉引导匹配用于标记合并。还有一些方法将剪枝和合并结合在一起,例如DiffRate
和PPT
。
在上述方法中,一些方法是无参数的,如ToMe
、ATS
、CrossGET
和EViT
,因此可以直接在推理阶段应用于现成的模型。此外,由于这些方法在训练过程中也减少了标记数量,它们可以用来加速训练阶段。然而,当前的研究尚未全面探索标记压缩方法在这些方面的潜力。
Parameter-Efficient Tuning
参数高效调优(PET
)旨在通过仅调整小部分参数来微调预训练的视觉主干网络,以适应下游任务,同时保持主干网络冻结。这包括基于提示的方法,即将可训练的标记附加到变换器的序列输入中作为提示;基于适配器的方法,即将小型适配器嵌入到预训练模型中;仅调整偏置参数;使用仿射变换改变中间特征;以及在微调过程中通过小型副网络匹配特征变化。
以往的PET
方法侧重于适配,换句话说,使用小型PET
模块来表征预训练模型与微调模型之间的差距。相比之下,本文采取了不同的视角,使用PET
模块来描述具有不同压缩程度的模型之间的差距,作为一种通用补偿器。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
Model Arithmetic
模型算术涉及通过模型级的加法或减法,合并、增强或去除不同模型之间的特定能力。研究表明,模型算术可以实现分布泛化、多任务学习、去学习和领域迁移。一些关于扩散模型的工作也利用模型算术来减少迭代步骤或将风格和对象结合进行生成。然而,模型算术在标记压缩中的应用尚未被探索。
Delve into Token Compression
Impact of Compression Degrees
首先,对ViTs
中的标记压缩方法进行公式化。ViTs
的单层由两个模块组成,即多头自注意力(MHSA
)和多层感知机(MLP
)。该层可以被形式化为
其中, 是第 层的输入, 具有长度 和维度 表示层归一化。
论文主要关注一种具有代表性且最先进的无训练标记压缩方法ToMe
,并进一步推广到其他方法。ToMe
在MHSA
和MLP
模块之间操作,利用图像块标记的键来评估它们的相似性,并通过二分软匹配将个相似的标记进行合并。
在ToMe
中,每层合并的标记数量被视为超参数,以调整ViTs
的吞吐量,这通常在训练之前根据推理需求来确定。合并的标记越多,模型在训练和推理时的速度就越快,如图3
所示。然而,在实际场景中,训练期间的压缩程度(称为源压缩程度)和推理期间的压缩程度(称为目标压缩程度)可能不一定相等。也就是说,一个在某一压缩程度下训练好的现成模型,可能会在没重新训练的情况下进行不同的压缩程度下的应用。这种情况具有实际意义,例如,使用下载的checkpoint
而无法访问训练数据或重新训练资源时,或根据服务器负载动态调整推理期间的压缩程度。此外,在现有计算资源有限的情况下,可能需要在训练期间使用较高的压缩程度以减少内存和时间开销,但在推理期间恢复到较低的压缩程度以确保性能。
为了研究标记压缩方法在源压缩程度与目标压缩程度不一致时的性能, 论文在五个下游数据集上进行了实验。如图 2 所示, 论文对 DeiT-B 进行了 ToMe 的 和 16 的微调, 并报告了在推理期间使用 的性能。可以看到, 对于特定的目标压缩程度, 当源压缩程度与其匹配时, 模型的表现更好。源压缩程度与目标压缩程度之间的差距越大, 性能下降的程度就越显著。
然而,由于在较低压缩程度下训练的模型在训练期间接触到了更多的标记,这意味着它们遇到的信息范围比在较高压缩程度下训练的模型更广泛,因此,前者在各种目标压缩程度下理应优于后者。这表明,不同源压缩程度下训练的模型之间存在差距,使得在不同压缩程度之间的迁移效果较差。
Transfer across Tasks
对于具有不同源压缩程度的模型之间的差距, 是否可以在不同任务之间转移? 更具体地说,令 和 表示在数据集 上以压缩程度 和 训练的模型, 和 表示在数据集 上训练的模型。如果这种差距是可转移的, 应该有
这意味着 在以目标压缩程度 对数据集 进行评估时, 应当比 的表现更好。换句话说, 在数据集 上的差距可以转移到 ,并有助于缩小 和 之间的差距。
在 ToMe 上进行初步实验,使用 CIFAR100 作为 。在表 1 中,展示了使用不同 FGVC 数据集作为 时的结果。通过添加 在 下的表现明显提高,验证了在不同任务中存在源压缩程度之间的模型差距的正向迁移,这表明可以使用通用插件来建模这种差距,从而在各种下游任务中提高具有不等源和目标压缩程度的标记压缩性能。
Token Compensator
Arithmetic of Parameter-Efficient Modules
当训练和推理过程中的压缩程度不相等时, 由于不同压缩程度的模型在行为上存在差异,导致其参数空间中出现不同的局部最小值, 从而使模型性能下降。为了在这种情况下提升标记压缩的性能,尤其是在现成模型上,论文打算寻找一个通用插件以弥补具有不同压缩程度的模型之间的差距, 假设两个特定压缩程度的模型在不同数据集上表现出类似的差距。假设有一个插件 ,可以弥补在 ToMe 训练下的模型 (压缩程度 )和模型 (压缩程度 ) 之间的差距。如果 是现成模型, 可以期望
其中 表示架构层面的聚合, 是用于以 进行推理的合成模型。
然而, 由于压缩程度选择的范围广(例如, DeiT-B 在 ToMe 中的 ),为所有可能的压缩程度对(即 种 组合)训练和存储这些插件会导致显著的训练和存储开销。为此, 论文从三个方面解决这个问题。
首先,受到参数高效微调的启发,该方法使用轻量级模块来描述预训练模型与微调模型之间的差距,论文也采用了参数高效模块来描述具有不同压缩程度的模型之间的差距。具体来说,使用 LORA 作为 , 即对 的所有权重矩阵 ,有
其中, 和 是查询和值变换的权重矩阵, 是一个超参数, 和 是 LoRA 模块。LoRA 模块仅占模型参数的约 , 并且在推理时不会增加额外的计算。
其次, 使用 LoRA 来估计仅相邻压缩程度之间的差距, 即 。对于 的情况, 简单地累积 和 之间的所有插件, 即
第三,假设模型之间的差距是可逆的,即。当 n < m n<m n<m 时,插件被“减去”,即<=“” p=“”>
其中, 是 的逆运算。为了实现 , 我们从权重中减去 LoRA 乘积 , 而不是加上它。
现在,只需训练和存储16
组LoRA
插件,以支持所有压缩程度对,这些插件的大小仍然相对于ViT
主干来说微不足道,这些插件的集合称为Token Compensator
(ToCom
)。由于ToCom
的轻量特性,它可以以最小的开销加载到RAM
中,从而实现实时推理吞吐量切换。
Training ToCom
如前所述,ToCom
应该是一个适用于任何下游数据集的通用插件。为了增强ToCom
的泛化能力,将ToCom
的训练整合为ViT
主干的预训练阶段的扩展。具体而言,利用预训练数据(例如ImageNet
)来训练ToCom
。
为了获得支持任意压缩程度对的 ToCom, 论文提出了一种自蒸馏方法来训练它。以 ToMe 为例, 使用 来表示通过在现成的预训练模型上直接应用 ToMe 得到的模型。训练损失的构造如下,
其中 和 在每次训练步骤中随机抽取, 且满足 是带有软目标的知识蒸馏损失, 即,
其中 KL 表示 Kullback - Leibler 散度, 是输入。
如图4
所示,在蒸馏过程中,冻结所有预训练的参数,包括分类头,只更新参数高效的ToCom
。值得注意的是,虽然ToCom
需要在大规模数据集上进行训练,但它的模型较轻量且收敛迅速。因此,与主干网络的预训练相比,它的训练开销可以忽略不计。
在训练完成ToCom
后,可以直接将其部署到任何在下游任务上微调的现成模型上,进行任何源度数到目标度数的转换。将ToCom
的LoRA
产物加到或减去现成模型的权重上,用于推理而无需进一步训练。
Experiments
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓