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

Token Compensator:无需重新微调即可改变视觉Transformer的推理成本

Token Compensator: Altering Inference Cost of Vision Transformer without Re-Tuning

https://arxiv.org/pdf/2408.06798

引言

研究背景:

随着ViTs规模的快速增长,其不断增加的计算成本已成为一个紧迫的问题。因此,大量研究正致力于加速ViTs的训练和推理过程。ViTs的一个特点是它们能够容纳可变数量的输入标记(tokens)。因此,除了卷积神经网络中广泛使用的模型剪枝、量化和蒸馏等传统技术外,最近的研究还提出了通过标记压缩来加速ViTs的方法,如剪除不重要的标记或合并相似的标记。

标记压缩技术具有显著的优势。与剪枝和蒸馏等技术相比,一些标记压缩方法(如ToMe[2])可以零样本地应用于现成的模型,或用于加速训练;与量化不同,标记压缩方法不需要低精度操作器的支持。此外,标记压缩方法与上述其他技术正交,使得它们在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还可以应用于不同规模的模型或不同对象预训练的模型,或用于增强包括标记合并和标记剪枝在内的各种标记压缩方法。

Delve into Token Compression

压缩度的影响

首先,对ViT中的Token压缩方法进行公式化。ViT的单层由两个块组成,即多头自注意力(MHSA)和多层感知机(MLP)。该层可以形式化为:

其中 Xl ∈ R^{ N×d }是第 l 层的输入,其长度为N且维度为d,LN 表示层归一化。

本文主要关注一种代表性的、最新的无需训练的Token压缩方法,即ToMe [2],然后将其推广到其他方法。ToMe在MHSA和MLP块之间操作,利用patch tokens的键来评估它们的相似性,并通过二分图软匹配(Bipartite Soft Matching)合并 r 个相似的tokens。

在ToMe中,每层合并的tokens数量被视为超参数,用于调整ViT的吞吐量,这通常根据训练前的推理需求来确定。合并的tokens越多,模型在训练和推理时就越快,如图3所示。

然而,在现实场景中,训练时的压缩度(称为源压缩度)和推理时的压缩度(称为目标压缩度)可能并不相等。即,一个在某个压缩度下训练的现成模型可能会被应用在不同的压缩度下,而无需重新训练。这种场景具有实际意义,例如在利用下载的检查点进行推理时。

压缩度不一致的模型性能差距

当训练和推理的压缩度不匹配时,模型性能会受到显著影响。为了分析这种影响,进行了实验,研究了不同压缩度下模型性能的差距。实验结果表明,即使在源压缩度下训练的模型在源压缩度下表现良好,但当目标压缩度改变时,性能也会大幅下降。这限制了Token压缩方法在实际应用中的灵活性。

压缩度不一致的模型差距可转移性

进一步地,发现不同压缩度下模型之间的性能差距可以在不同的下游数据集之间转移。具体来说,我们在源数据集上训练了不同压缩度的模型,并将这些模型之间的差距应用到另一个目标数据集上。实验结果表明,通过这种差距转移,可以在一定程度上恢复目标数据集上的模型性能。这为提出Token Compensator(ToCom)提供了动机。

Token Compensator的提出

基于上述观察,提出了Token Compensator(ToCom),一个参数高效的插件,用于在训练和推理阶段之间解耦Token压缩度。ToCom通过在不同压缩度之间进行快速自蒸馏训练得到,能够描述不同压缩度模型之间的差距。在推理阶段,ToCom可以直接插入到任何现成的模型中,无需进一步训练,即可在不同压缩度下获得一致的性能。 

Token Compensator

本文提出了一种名为Token Compensator(ToCom)的框架,旨在解决Vision Transformers(ViTs)在训练和推理阶段压缩度不一致时性能下降的问题。ToCom是一个轻量级的插件,能够在不重新训练的情况下,直接插入到任意预训练的下游模型中,以弥补不同压缩度之间的性能差距。

Token Compensator设计

ToCom被设计为一个参数高效的模块,其包含的参数数量极少。它的主要目标是描述具有不同压缩度模型之间的性能差距。为了获得ToCom,在预训练数据集上进行了快速的自蒸馏过程,其中教师模型和学生模型都是相同的预训练模型,但学生模型中集成了ToCom。在每一步中,教师模型和学生模型被随机分配不同的压缩度,而ToCom则通过学习两者之间的差距来进行蒸馏。

进一步地,为不同的压缩度对分配了ToCom参数的不同子集,这使得ToCom能够通过单次训练过程适应各种压缩度对。这样,ToCom就能够在推理阶段被直接插入到任意预训练的下游模型中,以匹配不同的压缩度,而无需重新训练。

训练和推理过程

在训练阶段,我们首先在预训练数据集上使用自蒸馏方法来训练ToCom。在这个过程中,利用冻结的预训练模型作为教师模型,并在其基础上添加ToCom以形成学生模型。通过随机分配不同的压缩度给教师模型和学生模型,ToCom学习到了两者之间的性能差距。

在推理阶段,ToCom被直接插入到预训练的下游模型中,而无需任何额外的训练。通过选择ToCom中对应的参数子集,我们可以使得下游模型能够适应不同的推理压缩度,而无需重新调整其参数。这样,单个预训练模型就能够处理不同的延迟约束,而无需进行参数修改。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++中类和对象(2)
  • python数组和队列
  • leetcode + react学习
  • Kafka系列之:Dead Letter Queue死信队列DLQ
  • webrtc学习笔记1
  • 企业选型指南:8款最佳工资管理系统推荐
  • 使用 Vue 2 搭建大屏可视化系统
  • 安全入门day.02
  • 断言的用途
  • asyncio模块学习
  • webrtc学习笔记2
  • Dubbo服务自动Web化之路
  • CPU的功能和基本结构
  • 优思学院|六西格玛实施关键:如何整合定性与定量数据
  • 10-使用sentinel流控
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Javascript 原型链
  • python 装饰器(一)
  • 编写高质量JavaScript代码之并发
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 构造函数(constructor)与原型链(prototype)关系
  • 机器学习学习笔记一
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 实现菜单下拉伸展折叠效果demo
  • 在Mac OS X上安装 Ruby运行环境
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #pragma once与条件编译
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $.ajax()
  • (19)夹钳(用于送货)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (3)选择元素——(17)练习(Exercises)
  • (编译到47%失败)to be deleted
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三)mysql_MYSQL(三)
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (数据结构)顺序表的定义
  • (学习总结16)C++模版2
  • (一)基于IDEA的JAVA基础1
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转载)Linux 多线程条件变量同步
  • ****三次握手和四次挥手
  • ***检测工具之RKHunter AIDE
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET BackgroundWorker
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Core中如何集成RabbitMQ
  • .Net Remoting常用部署结构
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .Net面试题4