一文详解视觉Transformer模型压缩和加速策略(量化/低秩近似/蒸馏/剪枝)

news2024/10/7 10:22:33

视觉Transformer(ViT)在计算机视觉领域标志性地实现了一次革命,超越了各种任务的最先进模型。然而,它们的实际应用受到高计算和内存需求的限制。本研究通过评估四种主要的模型压缩技术:量化、低秩近似、知识蒸馏和剪枝,来解决这一挑战。系统地分析和比较了这些技术及其组合在优化ViT以适应资源受限环境方面的效果。全面实验评估表明,这些方法在模型准确性和计算效率之间实现了平衡的折中,为在边缘计算设备上的更广泛应用铺平了道路。

论文如下:需要原件可评论区留言

介绍

Transformer,由Vaswani等人引入,以其强大的数据建模能力、可伸缩性以及出色的捕捉长距离依赖性的能力,彻底改变了机器学习。起源于自然语言处理(NLP)领域,取得了机器翻译和文本摘要等方面的成功,Transformer现在将其实用性扩展到计算机视觉任务,如图像分类和目标检测。

最近,它们的能力已经在多模态情感分析领域得到了利用,其中它们整合和解释多样的数据流——文字、视觉和声音——以评估情感反应。Transformer的应用还扩展到了医疗保健领域,促进了疾病检测、医学影像分析以及电子健康记录的处理等领域的进步。这些技术在开发预测模型、提高诊断准确性和个性化治疗策略方面至关重要,展示了Transformer对影响患者护理的巨大潜力。

与之前NLP领域的研究不同,该领域的研究人员在长序列中处理softmax-attention的二次复杂度,正如Child等人所指出的,而Vision Transformers(ViTs)处理较短的、固定长度的输入序列。因此,在ViTs中,softmax-attention在总浮点运算(FLOPs)中占比较小,提出了一套独特的优化挑战,并强调了对专门的模型压缩策略的需求。

Vision Transformer(ViT),这是一种源自NLP方法学的创新架构,已经证明了将图像 patch转换为由Transformer块处理的 token 序列可以实现,有时甚至超越传统的CNN架构的准确性。这一突破已经催生了图像处理领域的一次范式转变。

然而,ViT的高性能伴随着数量庞大的参数集,数量达到数亿个,在推理过程中会产生相当大的内存和计算开销。因此,对于ViTs的模型压缩技术的开发和改进已经变得至关重要,尤其是在工业应用中,效率和资源管理至关重要。

与深度学习模型的研究相比,Vision Transformers的模型压缩领域仍然相对未被开发。本文系统地探讨了ViTs的模型压缩策略,重点关注量化、低秩近似、知识蒸馏和剪枝。通过深入的比较分析,评估了这些技术对模型效率的个体和集体影响。研究还探讨了结合不同方法的潜在协同效应,旨在提高性能。广泛的实验结果证实,本文提出的方法有助于在维持准确性和提高计算效率之间取得良好的平衡,这对于实际部署至关重要。

相关工作

量化

量化已经成为促进神经网络高效推理的基石技术。这个过程涉及将网络转换为低比特表示,从而减少计算需求和内存占用,并最小化对模型性能的影响。这项技术的关键方面是确定权重的适当裁剪范围。Krishnamoorthi建议通过评估层的卷积滤波器内的所有权重来确定这个范围,而Shen等人则采用了一种分组量化方法来处理Transformer。为了减轻量化可能引入的精度损失,提出了量化感知训练(QAT)。QAT包括使用量化模型的浮点表示进行标准的前向和反向传递,然后在每次梯度更新后重新量化模型参数,从而在保留精度的同时利用量化的好处。

低秩近似

Vision Transformer(ViT)利用了自注意力机制,这本质上涉及到二次计算复杂度,这对可扩展性构成了重大挑战。Chen等人指出ViT内部的注意力矩阵本质上具有低秩特性,为复杂度降低提供了机会。在这些注意力矩阵上利用低秩矩阵逼近出现为减少计算成本的有前途的方法。

已经为此目的开发了各种方法,包括基于Nyström的方法、Performer和Linformer,每种方法都具有独特的实现方式,并适用于在微调和验证阶段与预训练的ViT模型进行集成。此外,如Chen等人所建议的,将低秩近似与稀疏注意力机制结合起来,已被证明能产生更精细的逼近,增强了ViT的效率和有效性。

知识蒸馏

知识蒸馏是一种精细的模型压缩技术,其中通过利用教师模型的软标签,训练一个紧凑的“学生”模型来模拟一个更复杂的“教师”模型。这些软标签因其丰富的信息内容而被认为在学生模型中的表现通常优于使用硬标签进行训练的情况。软标签在增强学生学习方面的有效性已被Yuan等人和Wei等人证实。

在这个领域的一个新进展是由Touvron等人引入的Vision Transformers中的蒸馏 token 。这个 token 类似于类 token ,但专门用于捕捉教师的预测,通过自注意机制参与优化蒸馏过程。这些定制的方法已经证明在传统的蒸馏技术上取得了相当大的收益,突显了针对Transformer的优化策略的潜力。

剪枝

剪枝是一种被广泛认可的方法,通过减少Vision Transformers的维度复杂性来简化它们的架构。这项技术的核心是为每个模型维度分配一个重要性分数,允许基于这些分数对被认为不太关键的维度进行选择性消除。这种有针对性的减少旨在在保持模型准确性的同时保持稳健的剪枝比例。杨等人提出的维度重分配策略可能被整合到剪枝过程中,进一步提高模型的性能。

有趣的是,研究表明,经过剪枝的模型有时可能会在性能上超过原始模型,这表明剪枝不仅可以简化模型,还可以增强模型的功能。

方法论

量化

基本概念

量化的总体目标是将模型参数(θ)和中间激活图的精度降低到较低的精度格式,例如8位整数,同时最小化对模型泛化性能的影响。这个过程的初始步骤涉及定义一个量化函数,能够将权重和激活图映射到一组离散值。用于此目的的常用函数如下所示:

图片

其中,代表量化映射函数,r表示实值输入(例如,权重、激活),是一个缩放因子,是一个整数零点。这种机制被称为均匀量化,确保了结果值的等距间隔。值得注意的是,还存在替代的非均匀量化策略。此外,原始实值r可以通过一种称为反量化的过程从其量化对应项近似得出:

图片

在量化中,由于量化本身固有的舍入误差,近似值r ̃可能与r不同。量化的一个关键方面是确定最佳的缩放因子,它有效地将实值r分成离散的段落:

图片

其中,表示裁剪范围,b表示量化的比特位宽度。裁剪范围的选择,即称为校准的过程,至关重要。一个直接的方法是使用输入的最小值和最大值作为裁剪范围,即和,对应着一个非对称量化方案,其中。另外,也可以采用对称量化方法,其中。在这种情况下,方程1中的量化函数可以通过设置来简化。

后训练量化

后训练量化(PTQ)通过直接调整权重来简化量化过程,而无需进一步进行微调。然而,这种效率可能会导致显著的精度下降,因为量化本身固有的精度损失。

Liu等人观察到,在Transformer架构中将量化应用于LayerNorm和Softmax层时,存在显著的精度下降。Lin等人将这些差异归因于LayerNorm层和注意力映射值中激活值的极化分布。具体来说,LayerNorm层输入中存在显著的通道间变异性(如下图1左侧所示),当采用逐层量化方法时,会产生相当大的量化误差。此外,注意力图中存在大量小值分布,只有稀疏的异常值接近1,这进一步加剧了在均匀量化策略下性能下降的问题。

图片

为了解决这些挑战,Lin等人提出了一种新颖的量化方法,利用LayerNorm的二次幂尺度和Softmax层的对数整数Softmax,旨在减轻传统量化方法带来的不利影响。

量化感知训练

直接将量化应用于完全训练好的模型可能会无意中扰动模型参数,导致显著的性能下降。一种有效的策略是使用量化参数重新训练模型,从而引导模型走向更有利的损失。量化感知训练(QAT)是一个突出的技术,可用于此目的。在QAT中,标准的前向和后向过程在浮点表示的模型上执行,但在每次梯度更新后重新量化参数,确保模型适应量化引起的变化。

学习步长量化(LSQ)是该领域的一个进步,它改进了量化器的配置过程,并通过优化量化间隔在量化性能方面设定了新的基准。类似地,DIFFQ引入了一种可微分的模型压缩技术,避免了需要像直通估计器(STE)这样的梯度近似方法。通过使用伪量化噪声,DIFFQ在训练期间实现了量化过程的近似,这是完全可微的,从而更容易地调整权重和量化比特深度。

知识蒸馏

知识蒸馏技术,如软蒸馏和硬蒸馏,促进了复杂的“教师”模型向简单的“学生”模型的知识传输。软蒸馏侧重于最小化教师模型和学生模型的软化对数输出之间的Kullback-Leibler(KL)散度。这正式由蒸馏目标所捕捉:

图片

其中,表示交叉熵损失,ψ代表softmax函数,和分别是教师模型和学生模型的logits,τ是增强分布软化的温度参数,λ平衡了KL散度和交叉熵损失的贡献。相反,硬蒸馏使用教师的预测作为确定性标签来训练学生,通过直接将学生的预测与这些标签进行比较来简化该过程。

图片

其中,表示教师模型的硬标签决策。DeiT 方法引入了一种针对Transformer的新方法,将一个“蒸馏 token ”(distillation token)引入了架构中,类似于类 token ,但专注于模仿教师的预测。这种机制允许通过自注意力层直接与蒸馏 token 和其他组件进行交互,展示了在蒸馏中的优越性能。我们的实验设置涉及在CIFAR数据集上应用DeiT框架进行知识蒸馏,同时考虑计算资源约束。

剪枝

Vision Transformers中的剪枝主要集中于通过减少模型的复杂性来减少参数的数量,具体来说是通过调整隐藏层之间的权重核的维度。这个目标可以形式化为:

图片

其中,a、b表示的原始维度,、表示剪枝后的减少维度。目标是确保由此减少引起的增量损失保持在预定义的阈值δ以下,以保持模型的完整性用于后续任务。确定要剪枝哪些维度涉及使用重要性分数,这是在预训练或微调期间学习到的概念。Zhu等人和Yang等人从每个权重的梯度幅度中推导出这些分数,并建议在剪枝后集成一个“软门控”层,该层在推理过程中硬化以将不太关键的维度清零:

图片

另外,Yu等人采用KL散度来计算重要性分数,重点关注在数据集Ω上具有特定模块和没有特定模块时模型性能之间的差异。这种方法既可以进行层内剪枝,也可以进行跨模块剪枝:

图片

其中,对应于完整模型的损失,对应于去除剪枝权重后的损失。近期的创新引入了更加微妙的重要性评分系统。Tang等人设计了一种评分,反映了每个图像块对最终误差的理论影响,提高了图像块精简的效率。Rao等人结合了局部和全局特征,对 token 的重要性进行了更全面的评估。同样,Yi等人将各种评分综合到一个统一的损失函数中,进一步完善了剪枝过程。

低秩近似

在Vision Transformers(ViTs)中,如下图2所示,每个自注意力块最初使用权重、和对输入序列进行投影,以获得特征表示。自注意力机制计算为,引入了计算和空间复杂度为O(n^2)的问题,其中n是序列长度。

图片

鉴于自注意力的低秩性质的正式证明,利用这一属性进行低秩近似成为提高计算效率的战略选择。这种近似旨在保持准确性,同时显著降低时间和空间复杂度,近似为O(n),即使是在与预先存在的或新训练的模型集成时。

值得注意的是,低秩近似并不会固有地减少模型大小,因为原始权重、和被保留。然而,它确实在计算时间和内存使用方面提供了显著的减少,特别是在对预训练模型进行微调或验证阶段时。

这是因为近似计算是在接收到输入后进行的。存在各种低秩近似的方法,包括基于Nyström的方法,如Nyströmformer和SOFT,它们通过Nyström方法线性化了自注意力。替代的线性化技术,如Linformer 和Performer,以及结合低秩和稀疏注意力机制的策略,进一步提高了近似的准确性。

我们的实验重点是基于Nyströmformer的ViT,将softmax注意力矩阵计算调整为在所有自注意力块中使用Nyström方法。这允许使用预训练的原生 ViT权重,从而便于在性能方面进行直接比较。Nyströmformer技术利用地标点进行高效的近似,避免了完全的计算的需求。评估了这种方法的有效性,其中landmark数量(m)设置为24、32和64,并评估其对模型性能的影响。

实验

本节详细比较了应用于Vision Transformers的各种模型压缩技术,包括量化、知识蒸馏、剪枝和低秩近似。此外,还调查了结合这些方法以确定性能指标改善的协同潜力。

实验设置

实验框架建立在Tesla V100-SXM2 16GB GPU上,PyTorch作为主要的代码实现平台。我们的数据集使用范围限于CIFAR-10和CIFAR-100,这是由于计算资源的限制。感兴趣的主要指标包括模型大小和推理速度,承认了准确性和这些效率参数之间的固有权衡。因此,最佳的压缩技术应该在准确性上对模型几乎没有影响,同时在模型大小上有显著的降低,并且在推理速度上有提升。将跨CIFAR-10和CIFAR-100数据集的比较分析结果系统地呈现在下表1和表2中。

图片

图片

不同模型压缩方法的比较

在评估模型大小对模型压缩的影响时,我们发现量化和剪枝策略能够在几乎不损失准确性的情况下显著减小模型大小。值得注意的是,量化技术,特别是动态量化,表现出了较高的有效性,将模型大小减小至25倍。

相反,权重剪枝,特别是采用简单的重要性评分,不能实现模型大小和准确性之间的最佳平衡。剪枝率为0.1(表示剪枝了10%的参数)导致与未剪枝的ViT相比,CIFAR-10和CIFAR-100数据集的显著准确性降低。进一步的调查显示,如下图3所示,大多数参数被认为是非常重要的(评分高于0.99),这表明了对于权重剪枝而言,简单形式的重要性评分存在固有的局限性。改进可能来自于整合更复杂的重要性评分或采用像减少输入图像块或精简之类的策略,而不是直接的权重剪枝。

图片

在推理速度方面,不同模型压缩策略表现出一系列的改进,以知识蒸馏为中心的方法尤为突出,因其在效率方面的收益。值得注意的是,尽管DeiT基础模型并没有经历显著的尺寸缩减,但其推理速度几乎是标准Vision Transformer(ViT)的两倍,同时几乎保持了准确性。在CIFAR-10数据集上观察到了一个有趣的案例,即DeiT微型配置实现了95.43%的准确率,这个数字与原生 ViT非常接近,但其速度增加了四倍,仅压缩到了原始模型大小的6%。

此外,将Nyströmformer技术应用于ViT展示了准确性和速度之间微妙的平衡,特别受到landmark数量(m)的选择的影响。选择较大的m值会提高近似精度,但会以处理速度为代价。此外,动态量化在CPU平台上对推理速度的改进范围为10-20%,强调了模型压缩在实际应用中的好处,不仅仅是尺寸的缩减。

混合方法的探索

对单个模型压缩技术的考察表明,一种混合方法,结合量化和知识蒸馏的优势,值得进一步研究。特别是当可以接受轻微的准确性降低时,这种组合策略似乎有望优化模型的紧凑性和处理效率。正如表1和表2所示,采用复合方法——将DeiT基础模型与动态量化相结合——显著提高了推理速度,达到了两倍以上的增长,同时将模型的大小减小到原始尺寸的四分之一。在准确性上有可控的权衡,突显了混合方法在速度、大小和性能之间取得平衡的潜力。

结论

本研究致力于对模型压缩技术进行实证调查,旨在增强Vision Transformers(ViTs)的效率和部署可行性。我们对四种主要的压缩方法——量化、低秩近似、知识蒸馏和剪枝——进行了细致的考察,同时回顾了该领域的前沿研究。

通过对CIFAR-10和CIFAR-100数据集进行的比较分析,我们的发现强调了后训练量化和知识蒸馏作为突出策略的有效性。这些方法不仅显著减小了模型大小,还加快了推理时间,同时保持了可接受水平的性能降低。对结合量化和知识蒸馏的协同潜力进行进一步探索揭示了优化的引人注目途径。特别是在CIFAR-10数据集中,这种混合方法显著加快了推理速度——超过基准速度两倍以上——同时将模型大小降低到原始占用空间的四分之一。

从这次全面调查中获得的见解倡导了对模型压缩采取综合多方面的方法。整合不同的压缩方法对于提高Vision Transformers的操作效率具有重大的潜力,为该领域未来研究指明了坚实的方向。此外,本文还可以在交通工程、机器学习、生物工程等领域进一步研究。

参考文献

[1] Comprehensive Survey of Model Compression and Speed up for Vision Transformers

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

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

相关文章

【基础】gcc-动态库和静态库的创建和使用-命令

目录 1 动态库的建立使用2 动态库封装过程2.1 编译动态库2.2 使用动态库2.3 命令参数说明 3 静态库封装过程3.1 静态库的封装3.2 静态库的使用 1 动态库的建立使用 首先建立一个头文件,和三个.cpp文件,目的是要把这些文件链接成动态库: 其中…

C++数组的创建、初始化、传参

C数组创建 静态数组:填入具体的大小 type arrayName [arraySize];动态数组:在运行时分配内存。 int* arrnew int[5]; //当程序使用完new分配的内存时,应使用delete释放他们 delete []arr;用标准库容器:std::vector 可以动态增长…

Python 异常处理深度解析:掌握健壮代码的关键

文章目录 1. 异常处理的基础1.1 使用 try 和 except1.2 捕获多种异常 2. 高级异常处理2.1 捕获所有异常2.2 使用 else 和 finally 3. 异常链与自定义异常3.1 异常链3.2 自定义异常 有效管理和处理异常是构建健壮、可靠和用户友好应用程序的基石。异常处理不仅有助于防止程序意外…

衣康酸(ITA)应用领域广泛 工业发酵法为其主流制备方法

衣康酸(ITA)应用领域广泛 工业发酵法为其主流制备方法 衣康酸(ITA)又称亚甲基丁二酸、甲叉琥珀酸,化学式为C5H6O4,是一种不饱和二元有机酸。衣康酸外观呈白色结晶粉末,含强烈刺激性气味&#xf…

Spring Boot 框架集成Knife4j

本次示例使用 Spring Boot 作为脚手架来快速集成 Knife4j,Spring Boot 版本2.3.5.RELEASE,Knife4j 版本2.0.7&#xff0c;完整代码可以去参考 knife4j-spring-boot-fast-demo pom.xml 完整文件代码如下 <?xml version"1.0" encoding"UTF-8"?> &l…

看现货白银平台测评要注意的几个事项

在网上我们会看到很多现货白银平台测评的文章或短视频&#xff0c;我们要注意&#xff0c;这些测评内容包括本文在内&#xff0c;多少都会存在着一些主观性的东西&#xff0c;这是无可避免的。不过在看现货白银平台测评时&#xff0c;有一些客观的东西&#xff0c;是需要我们留…

专注底层技术创新,超高性能公链新星 Sui Network 有何独特优势?

近年来&#xff0c;Sui Network 为了能够打造让开发者低成本实现广泛应用开发的公链环境付诸实际行动。其建立了以对象为中心的数据模型、在交易签名和 PTB 中实现精细化权限、优化用户友好功能&#xff0c;逐步为开发者和用户提供了一个更为灵活、安全的链上运行环境。在优越技…

【吊打面试官系列】Java高并发篇 -为什么使用 Executor 框架比使用应用创建和管理线程好?

大家好&#xff0c;我是锋哥。今天分享关于 【为什么使用 Executor 框架比使用应用创建和管理线程好&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 为什么使用 Executor 框架比使用应用创建和管理线程好&#xff1f; 为什么要使用 Executor 线程池框架 1、每…

springboot 载入自定义的yml文件转DTO

改进方法&#xff0c;直接spring注入 import cn.hutool.json.JSONUtil; import org.springframework.beans.factory.config.YamlMapFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import …

开抖音小店需要用到哪些软件?全部都给大家整理好了,快来看看!

哈喽~我是电商月月 在抖音小店的运营过程中&#xff0c;选品上架&#xff0c;售后客服都是要靠软件辅助进行的 那开抖音小店到底会用到哪些软件&#xff1f;这些平台都叫什么&#xff1f; 今天我就给大家介绍一下抖音小店运营过程中会使用到的软件&#xff0c;干货满满&…

图片/视频上传(超简单教程)

#应用场景# 该后端开发接口适用 图片/视频上传&#xff0c;返回路径名称场景 1.视频上传 写在Controller层 这里只是一个接收&#xff0c;调用uploadObject方法上传oss public OmsResult<FileUploadDto> goodsUploadVideo(RequestParam(value "file") Mu…

SQL优化——执行计划

文章目录 1、获取执行计划常用方法1.1、使用AUTOTRACE查看执行计划1.2、使用EXPLAIN PLAN FOR查看执行计划1.3、查看带有A-TIME的执行计划1.4、查看正在执行的SQL的执行计划 2、定制执行计划3、怎么通过查看执行计划建立索引4、运用光标移动大法阅读执行计划 SQL执行缓慢有很多…

ubuntu环境下使用g++把c++编译成汇编语言(暂时)

1. 引言 为了深入理解c&#xff0c;决定学习一些简单的汇编语言。使用ubuntu系统下g很容易将一个c的文件编译成汇编语言。本文使用此方法&#xff0c;对一个简单的c文件编译成汇编语言进行理解。 2.示例 文件名&#xff1a;reorder_demo.cpp #include<stdio.h>typede…

【网络运维知识】—路由器与交换机区别

【网络运维知识】—路由器与交换机区别 一、路由器&#xff08;Router&#xff09;和交换机&#xff08;Switch&#xff09;对比1.1 功能1.2 转发方式1.3 范围1.4 处理方式 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 路由器&#xff08…

MySQL8.0 一主二从

1. 系统环境 cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)192.168.183.137 mysql-master 192.168.183.153 mysql-slave-1 192.168.183.154 mysql-slave-2# 关闭SELINUX sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config seten…

基于SpringBoot的幼儿园管理系统 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库&#xff1a;Mysql5.7 数据表&#xff1a;16张 开发语言&#xff1a;Java(jdk1.8) 开发工具&#xff1a;idea 前端技术&#xff1a;html 后端技术&#xff1a;SpringBoot 功能简介 项目获取关键字&#xff1a;幼儿园 该…

React-css-in-js技术

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;React篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-css-in-js技术 目录 1、简介 2、定义样式与使用 3、样式继承 4、属性传递 1、简介 …

买婴儿洗衣机怎么选择?四大绝佳好用婴儿洗衣机分享

幼龄时期的宝宝的衣物&#xff0c;是比较需要注意的时候。可能一不注意宝宝穿在身上就会有不适宜症状发生。所以宝妈们真的要随时观察&#xff0c;然后在宝宝洗衣服的这上面多下点功夫&#xff0c;不要让宝宝受到这种无谓的伤害。小婴儿的抵抗力比我们差很多。有些细菌、病毒可…

IP地址怎么实现https

IP可以申请SSL证书。可以解决企业需要对IP实现https加密的需求&#xff0c;一张证书可以支持同时绑定多个IP。 IP证书有两种级别&#xff1a;基础级IP SSL证书和标准企业级IP SSL证书。 基础型SSL证书只需要10-30分钟即可颁发&#xff0c;企业型需要1-3个工作日即可颁发。 企…

Suno,属于音乐的ChatGPT时刻来临

AI绘画 AI视频我们见过了&#xff0c;现如今AI都能生成一首音乐&#xff0c;包括编曲&#xff0c;演唱&#xff0c;而且仅需几秒的时间便可创作出两分钟的完整歌曲 相信关注苏音的很大一部分都是从获取编曲或者混音插件来的&#xff0c;现如今AI却能帮你几秒生成曲子 今天就带…