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

news2024/12/29 10:51:51

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

原文链接:一文详解视觉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!

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

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

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

相关文章

(24)实时采集微信消息(基于独立窗体)-微信UI自动化(.Net+C#)

整理 | 小耕家的喵大仙 出品 | CSDN(ID:lichao19897314) Q Q | 978124155 往期知识回顾 (1)开启探索微信自动化之路-微信UI自动化(.NetC#) (2)初始化微信窗体UI自动化实例-微信UI自动化(.NetC#) (3)采用热键终止微信采集任务-微信UI自动…

Linux网络部分——SSH远程访问及控制

目录 一、配置OpenSSH服务端【☆】 1. ssh服务端配置 vim /etc/ssh/sshd_config 2.客户端连接验证 二、使用SSH客户端程序 1.ssh 远程登录 2.scp 远程复制 3.sftp 安全FTP 三、SSH的验证方式 1. 密钥对验证【☆】 2. 如何实现免密登录 【拓展】免交互创建密钥对和免交…

Docker 安装的MySQL迁移数据库

1. 导出数据库 docker ps :查看数据库对应的 CONTAINER ID docker exec -it id /bin/bash : 进入到mysql的docker实例中 cd /usr/bin : 进入到bin目录 mysqldump -u root -p123456 study > /root/study_backup0509.sql :使用mysqldump备份库,注意密码与-p之间…

Java基于B/S医院绩效考核管理平台系统源码java+springboot+MySQL医院智慧绩效管理系统源码

Java基于B/S医院绩效考核管理平台系统源码javaspringbootMySQL医院智慧绩效管理系统源码 医院绩效考核系统是一个关键的管理工具,旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标,还能提升医疗服…

win10 远程桌面无法连接,解决Win10远程桌面无法连接问题的方法

Windows 10操作系统中,远程桌面是一项非常实用的功能,它允许用户从另一台设备远程访问和控制另一台计算机。然而,有时候用户可能会遇到Win10远程桌面无法连接的问题。本文将探讨可能导致这个问题的原因,并提供相应的解决方案。 确…

为什么需要归档和管理合同

归档和管理合同是非常重要的,主要有以下几个原因: 1. 法律合规性:公司需要遵守法律和监管要求,合同是法律文件,涉及公司的权益和责任。归档和管理合同可以确保公司遵守法律法规,合同的内容和执行过程都符合…

【异常检测】新版异常检测库anomalib的使用

every blog every motto: There’s only one corner of the universe you can be sure of improving, and that’s your own self. https://blog.csdn.net/weixin_39190382?spm1010.2135.3001.5343 0. 前言 异常检测库anomalib的使用 1. 前提 1.1 数据组织形式 说明&#…

Linux|进程地址空间

Linux|内存地址空间 现象基本概念理解如何理解地址空间什么是划分区域&#xff1f;地址空间的理解为什么要有地址空间&#xff1f;如何进一步理解页表和写时拷贝如何理解虚拟地址 Linux真正的进程调度方案 现象 #include <stdio.h> #include <string.h> #include …

AcWing 4993 FEB

4993. FEB - AcWing题库 大佬亲笔 将原串分成三段&#xff1a; FFF|E.....B|FFF 先合并中间段&#xff0c;再合并两边的段 #include <iostream> #include <cstring> #include <algorithm> #include <string> #include <queue&g…

鸿蒙内核源码分析(忍者ninja篇) | 都忍者了能不快吗

ninja | 忍者 ninja是一个叫 Evan Martin的谷歌工程师开源的一个自定义的构建系统,最早是用于 chrome的构建,Martin给它取名 ninja(忍者)的原因是因为它strikes quickly(快速出击).这是忍者的特点,可惜Martin不了解中国文化,不然叫小李飞刀更合适些.究竟有多块呢? 用Martin自…

Fastgpt知识库接入oneapi和自定义大模型

本期教程教大家训练自己的知识库回答chatgpt回答不了的问题 FastGPT 是一个知识库问答系统,可以通过调用大模型和知识库回答特定的问题 可以做成专属 AI 客服集成到现有的APP或者网站内当作智能客服支持网络爬虫学习互联网上的很多知识可以通过flow可视化进行工作流程编排 本期…

Ubuntu20.4中复现Graspness

Ubuntu20.4中复现Graspness 文章目录 Ubuntu20.4中复现Graspness1.安装cuda和cudnn2.安装pytorch3.安装MinkowskiEngine4.编译graspnetAPI5. RuntimeError: "floor" "_vml_cpu" not implemented for IntRefernece &#x1f680;非常重要的环境配置&#x1…

深入理解DNS、ICMP协议与NAT技术:网络世界的三大基石

⭐小白苦学IT的博客主页⭐ ⭐初学者必看&#xff1a;Linux操作系统入门⭐ ⭐代码仓库&#xff1a;Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统❤ 前言 在网络世界中&#xff0c;数据的传输和交互离不开各种协议和技术的支持。其中&#xff0c;DNS&#xff08;域名系统&am…

1068 万绿丛中一点红

solution 找出满足①像素值唯一&②和相邻像素点色差大于tol 的像素点个数 若唯一&#xff0c;则输出该像素点列、行、像素值&#xff1b;若不唯一&#xff0c;则输出"Not Unique"若无&#xff0c;则输出"Not Exist" 题干和输出中&#xff0c;都是先列…

【ACM出版】第四届控制与智能机器人国际学术会议(ICCIR 2024)

第四届控制与智能机器人国际学术会议&#xff08;ICCIR 2024&#xff09; 2024 4th International Conference on Control and Intelligent Robotics 2024年6月21日-23日 | 中国-广州 官网&#xff1a;www.ic-cir.org EI、Scopus双检索 投稿免费参会、口头汇报及海报展示 四…

【MySQL数据库开发设计规范】之基础规范

欢迎点开这篇文章&#xff0c;自我介绍一下哈&#xff0c;本人笔名姑苏老陈&#xff0c;是一个JAVA开发老兵。 本文收录于 《MySQL数据库开发设计规范》专栏中&#xff0c;该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章&#xff0c;定期更新&#xff0c;欢迎关…

Python从0到POC编写--实用小脚本02

爆破脚本&#xff1a; 爆破脚本也是我们经常使用的东西 这里就简单讲讲后台爆破脚本的编写吧 在编写之前&#xff0c;我们先通过访问网站去看看情况 首先我们可以先登录看看 输入账号 admin &#xff0c;密码 12345 后 登录失败&#xff0c;提示 用户名或密码错误 在输入…

水质监测设备预警系统

随着工业化进程的加快和城市化水平的提高&#xff0c;水质安全问题愈发受到社会各界的广泛关注。为了确保水资源的清洁与安全&#xff0c;水质监测设备预警系统成为了不可或缺的利器。在这个背景下&#xff0c;HiWoo Cloud平台凭借其先进的技术和卓越的性能&#xff0c;为水质监…

Centos中将UTC的时区改为CTS时区

date命令可以看到现在的时间以及时区&#xff0c;可以看到现在是UTC时区 而想要更改时区那么就要了解tzselect命令 tzselect 是一个 Linux 命令行工具&#xff0c;用于交互式地帮助用户选择并设置系统的时区。这个程序会通过一系列的问题引导用户&#xff0c;从而确定用户所在的…

小程序如何注销

随着移动互联网的深入发展&#xff0c;管控也越来越严格。现在小程序都要求进行ICP备案&#xff0c;不管是新注册的还是以往注册的。很多商家的小程序本身处于无运营状态&#xff0c;现在要求备案&#xff0c;还不如直接注销。下面&#xff0c;将详细介绍小程序注销的步骤和注意…