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

本文来源公众号“极市平台,仅用于学术分享,侵权删,干货满满。

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

作者丨Feiyang Chen等

来源丨AI生成未来

编辑丨极市平台

0 极市导读

本研究通过评估四种主要的模型压缩技术:量化、低秩近似、知识蒸馏和剪枝,来解决这一挑战。系统地分析和比较了这些技术及其组合在优化ViT以适应资源受限环境方面的效果。

论文链接 : https://arxiv.org/pdf/2404.10407

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

1 介绍

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的模型压缩策略,重点关注量化、低秩近似、知识蒸馏和剪枝。通过深入的比较分析,评估了这些技术对模型效率的个体和集体影响。研究还探讨了结合不同方法的潜在协同效应,旨在提高性能。广泛的实验结果证实,本文提出的方法有助于在维持准确性和提高计算效率之间取得良好的平衡,这对于实际部署至关重要。

2 相关工作

2.1 量化

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

2.2 低秩近似

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

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

2.3 知识蒸馏

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

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

2.4 剪枝

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

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

3 方法论

3.1 量化

3.1.1 基本概念

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

3.1.2 后训练量化

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

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

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

3.1.3 量化感知训练

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

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

3.2 知识蒸馏

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

3.3 剪枝

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

3.4 低秩近似

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

4 实验

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

4.1 实验设置

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

4.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%,强调了模型压缩在实际应用中的好处,不仅仅是尺寸的缩减。

4.3 混合方法的探索

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

5 结论

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

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

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

6 参考文献

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

THE END!

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C/C++ 初级球球大作战练手

效果演示&#xff1a; https://live.csdn.net/v/385490 游戏初始化 #include <stdbool.h> #include<stdio.h> #include<stdlib.h> #include<time.h> #include<graphics.h> #include <algorithm> #include<math.h> #include<mmsy…

【全开源】Java俱乐部系统社区论坛商城系统源码-奔驰奥迪保时捷大众宝马等汽车俱乐部

特色功能&#xff1a; 会员管理与服务&#xff1a;系统支持多种会员身份以及优惠政策的制定&#xff0c;如普通会员、VIP会员、黄金会员等&#xff0c;且可以根据会员等级不同&#xff0c;进行不同的营销策略。此外&#xff0c;还提供了会员信息录入、会员积分管理、消费记录管…

算法学习:递归

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、什么是递归&#xff1f;三、两大基本要素&#x1f3c1; 基线条件&#xff08;Base Case&#xff09;&#x1f501; 递归条件&#xff08;Recursive Case&#xff09;&#x1f4c3; 代码示例&#xff1a;计算斐波…

【PyTorch实战演练】使用CelebA数据集训练DCGAN(深度卷积生成对抗网络)并生成人脸(附完整代码)

文章目录 0. 前言1. CelebA数据集1.1 核心特性与规模1.2 应用与用途1.3 获取方式1.4 数据预处理 2. DCGAN的模型构建2.1 生成器模型2.2 判别器模型 3. DCGAN的模型训练&#xff08;重点&#xff09;3.1 训练参数3.2 模型参数初始化3.3 训练过程 4. 结果展示4.1 loss值变化过程4…

从零开始!学习绘制3D表情的详细指南

在2020 年的苹果全球开发者大会(WWDC)&#xff0c;苹果发布了新的 macOS 11(又名 Big Sur)。其中在UI视觉方面macOS Big Sur 系统最大的变化就是图标上&#xff0c; Big Sur更新了很多新设计风格的 3D应用图标&#xff0c;3D设计的确可以提升UI整体的视觉氛围&#xff0c;并且现…

Linux——socket编程之tcp通信

前言 前面我们学习socket的udp通信&#xff0c;了解到了socket的概念与udp的实现方法&#xff0c;今天我们来学习一下面向连接的tcp通信。 一、tcp套接字创建 UDP和TCP都是通过套接字&#xff08;socket&#xff09;来实现通信的&#xff0c;因此TCP也得使用socket()接口创建…

企业架构领域的天花板——TOGAF证书

TOGAF证书是一项重要的企业架构认证&#xff0c;为专业人士提供了广泛的知识和技能&#xff0c;帮助他们在企业架构领域取得突破。 一、TOGAF证书的重要 提升专业知识和技能&#xff1a;TOGAF证书提供了广泛的企业架构知识和最佳实践&#xff0c;使专业人士能够更好地理解和应…

ESD静电问题 | 电容谐振频率点及选择

静电枪放出的静电属于共模干扰 针对静电整改加电容的时候选择频率在17.5MHz~350MHz区间的电容 【转自微信公众号&#xff1a;韬略科技EMC】

漫画对话 ai翻译

復讐の教科書ーー81 81-1 いい加減吐け&#xff01;&#xff01;冴木&#xff01;&#xff01; 快说吧&#xff01;&#xff01;冴木&#xff01;&#xff01; お前が一連の事件の犯人なんだろ&#xff01;&#xff1f; 你就是连续事件的犯人吧&#xff01;&#xff1f; だか…

elementUI表格table文字不换行

在对应不需要换行的列加上属性&#xff1a;:show-overflow-tooltip"true" 即可

leetcode 1235

leetcode 1235 代码 class Solution { public:int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {int n startTime.size();vector<vector<int>> jobs(n);for(int i0; i<n; i){jobs[i] …

CMakeLists.txt语法规则:数学运算 math

一. 简介 前面几篇文章学习了 CMakeLists.txt语法中的一些常用变量&#xff0c;常用命令&#xff0c;双引号的作用。条件判断语句&#xff0c;循环语句等等。 本文简单学习一下 CMakeLists.txt语法中数学运算 match。 二. CMakeLists.txt语法规则&#xff1a;数学运算 math 在…

【动态规划】子数组、子串系列I|最大子数组和|环形子数组的最大和|乘积最大子数组|乘积为正数的最长子数组长度

一、最大子数组和 最大子数组和 算法原理&#xff1a; &#x1f4a1;细节&#xff1a; 1.返回值为dp表每个位置的最大值&#xff0c;而不是只看最后一个位置&#xff0c;因为可能最后一个位置都不选 2.可以直接在填dp表的时候就进行返回值的比较 3.如果初始化选择多开一个位…

Apifox 教程:如何实现跨语言调用(Java、PHP、Python、Go 等)

在一些特定场景下&#xff0c;比如需要在 Apifox 中对文件进行读写、加密、转换格式或者进行其它业务的操作时&#xff0c;仅使用 Apifox 内置的 JS 类库可能无法满足业务需求&#xff0c;这时&#xff0c;就可以借助「外部程序」作为解决方案。 外部程序是保存在「外部程序目…

Tower for Mac:Git管理的新境界

Tower for Mac&#xff0c;让您的Git管理进入新境界&#xff01;这款专为Mac用户打造的Git客户端&#xff0c;凭借其出色的性能和丰富的功能&#xff0c;成为众多开发者的首选工具。 Tower不仅支持常规的Git操作&#xff0c;如提交、推送和拉取&#xff0c;还提供了许多高级功能…

AR人脸美妆SDK解决方案,让妆容更加贴合个人风格

美妆行业正迎来前所未有的变革&#xff0c;为满足企业对高效、精准、创新的美妆技术需求&#xff0c;美摄科技倾力打造了一款企业级AR人脸美妆SDK解决方案&#xff0c;为企业打开美妆领域的新世界大门。 革命性的人脸美妆技术 美摄科技的AR人脸美妆SDK解决方案&#xff0c;不…

攻略:ChatGPT3.5~4.0(中文版)国内无限制免费版(附网址)【2024年5月最新更新】

一、什么是ChatGPT&#xff1f; 1、ChatGPT的全名是Chat Generative Pre-trained Transformer&#xff0c;其中"chat"表示聊天。"GPT"则是由三部分组成&#xff1a;生成式&#xff08;generative&#xff09;意味着具有创造力&#xff1b;预训练&#xff0…

计算机毕业设计 | vue+springboot图书借阅 书籍管理系统(附源码)

1. 开发目的 实现图书的智能化、信息化和简单化&#xff1b;实现图书信息的增加、删除、修改、查找、借阅、还书、收藏的显示操作及实时数据库的提交和更改和对普通用户的增、删、改、查&#xff1b;提高图书管理员工作信息报送及反馈的工作效率&#xff0c;减轻管理员的劳动负…

基于Spring Boot框架实现大学生选课管理系统

文章目录 源代码下载地址项目介绍项目功能界面预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 项目功能 教务处管理 开课、开班审批&#xff0c;排课处理&#xff0c;班级操作&#xff0c;选课时间段管理** 使用了sql解决了开课开班的时间段的冲突…

Python的Web框架Flask+Vue生成漂亮的词云图

生成效果图 输入待生成词云图的文本&#xff0c;点击生成词云即可&#xff0c;在词云图生成之后&#xff0c;可以点击下载图片保存词云图。 运行步骤 分别用前端和后端编译器&#xff0c;打开backend和frontend文件夹。前端运行 npm install &#xff0c;安装相应的包。后端…