EfficientViT:让ViT更高效部署实现实时推理(附源码)

EfficientViT是一个新的高速VisionTransformers家族,通过优化内存低效操作和减少计算冗余来提高效率。研究者提出三明治布局的新构建块和级联组注意力模块,增强信道通信并节省计算成本。实验显示,EfficientViT在速度和准确性之间取得良好平衡,超越了现有高效模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击蓝字 关注我们

关注并星标

从此不迷路

计算机视觉研究院

10442ddf2c5cf6e7a2cef27e2e3a12b4.gif

2e35ee9d265478aca29ac0e1f3bc2a09.gif

公众号ID计算机视觉研究院

学习群扫码在主页获取加入方式

a21a385c6fd87bbbd5d996ea16ceb966.png

论文地址:https://arxiv.org/pdf/2305.07027.pdf

项目代码:https://github.com/microsoft/Cream/tree/main/EfficientViT

计算机视觉研究院专栏

Column of Computer Vision Institute

Vision transformers由于其高建模能力而取得了巨大成功。然而,它们显著的性能伴随着沉重的计算成本,这使得它们不适合实时应用。

2f06a5b2c988e2d62632790d6a2b9018.gif

01

总  述

在今天分享中,研究者提出了一个名为EfficientViT的高速Vision transformers家族。我们发现,现有transformer模型的速度通常受到内存低效操作的限制,特别是MHSA中的张量整形和逐元函数。因此,研究者设计了一种具有三明治布局的新构建块,即在有效的FFN层之间使用单个存储器绑定的MHSA,这在增强信道通信的同时提高了存储器效率。

09954e63aecbf771f01e0385f16c1b77.png

此外,研究者发现注意力图在头部之间具有高度相似性,导致计算冗余。为了解决这一问题,提出了一种级联的组注意力模块,该模块为具有不同全特征分割的注意力头提供反馈,这不仅节省了计算成本,而且提高了注意力的多样性。

综合实验表明,EfficientViT优于现有的高效模型,在速度和准确性之间取得了良好的平衡。例如,EfficientViT-M5在精度上超过MobileNetV3 Large 1.9%,而在Nvidia V100 GPU和Intel Xeon CPU上的吞吐量分别高出40.4%和45.2%。与最近的高效型号MobileViT XXS相比,EfficientViT-M2实现了1.8%的卓越精度,同时在GPU/CPU上运行速度快5.8倍/3.7倍,转换为ONNX格式时速度快7.4倍。

07bb8e5df046a63e3198d301fb9def8a.gif

02

 背景

最近有几项工作设计了轻便高效的Vision transformers模型。不幸的是,这些方法大多旨在减少模型参数或Flops,这是速度的间接指标,不能反映模型的实际推理吞吐量。例如,在Nvidia V100 GPU上,使用700M浮点的MobileViT XS比使用1220M浮点的DeiT-T运行得慢得多。尽管这些方法以较少的Flops或参数获得了良好的性能,但与标准同构或分级transformer(例如DeiT和Swin)相比,它们中的许多方法并没有显示出显著的壁时钟加速,并且没有得到广泛采用。

d299ada1cdce5c013abae34d966c7f6c.png

为了解决这个问题,研究者探讨了如何更快地使用Vision transformers,试图找到设计高效transformer架构的原则。基于主流的Vision transformers DeiT和Swin,系统地分析了影响模型推理速度的三个主要因素,包括内存访问、计算冗余和参数使用。特别是,发现transformer模型的速度通常是内存限制的。

基于这些分析和发现,研究者提出了一个新的存储器高效transformer模型家族,命名为EfficientViT。具体来说,设计了一个带有三明治布局的新块来构建模型。三明治布局块在FFN层之间应用单个存储器绑定的MHSA层。它减少了MHSA中内存绑定操作造成的时间成本,并应用了更多的FFN层来允许不同信道之间的通信,这更具内存效率。然后,提出了一种新的级联群注意力(CGA)模块来提高计算效率。其核心思想是增强输入注意力头部的特征的多样性。与之前对所有头部使用相同特征的自我注意不同,CGA为每个头部提供不同的输入分割,并将输出特征级联到头部之间。该模块不仅减少了多头关注中的计算冗余,而且通过增加网络深度来提高模型容量。

1be8b21c6833c484f67bec6930d54f66.png

轻量级CNN和ViT模型吞吐量和精度对比的展示

最后但同样重要的是,通过扩大关键网络组件(如价值预测)的通道宽度来重新分配参数,同时缩小重要性较低的组件(如FFN中的隐藏维度)。这种重新分配最终提高了模型参数的效率。

b088f20969ea8f48c2d72cc6fee37549.gif

03

 动机

Vision transformers加速

  • Memory Efficiency

414d114a9c9ca13bb9caf864a122eb86.png

内存访问开销是影响模型速度的一个关键因素。Transformer中的许多运算符,如频繁的整形、元素相加和归一化,都是内存效率低下的,需要跨不同内存单元进行耗时的访问,如上图,尽管有一些方法通过简化标准softmax自注意的计算来解决这个问题,例如稀疏注意和低秩近似,但它们往往是以精度下降和加速度有限为代价的。

8a6437842425484e1eff9b2313d301d0.png

在这项工作中,研究者转而通过减少内存低效层来节省内存访问成本。最近的研究表明,内存低效操作主要位于MHSA层,而不是FFN层。然而,大多数现有的ViT使用相等数量的这两层,这可能无法实现最佳效率。因此,研究者探索了在具有快速推理的小模型中MHSA和FFN层的最优分配。具体而言,将Swin-T和DeiT-T缩减为几个推理吞吐量分别高1.25倍和1.5倍的小型子网络,并比较不同MHSA层比例的子网络的性能。

  • Computation Efficiency

MHSA将输入序列嵌入到多个子空间(头)中,并分别计算注意力图,这已被证明在提高性能方面是有效的。然而,注意力图的计算成本很高,研究表明,其中一些并不重要。

为了节省计算成本,探讨如何减少小型ViT模型中的冗余注意力。以1.25×推理加速训练宽度缩小的Swin-T和DeiT-T模型,并测量每个头部和每个块内剩余头部的最大余弦相似性。从下图中,观察到注意力头部之间存在高度相似性,尤其是在最后一个块中。

6046f8edac81e461cb201c28dca6eaf5.png

这一现象表明,许多头部学习相同完整特征的相似投影,并产生计算冗余。为了明确鼓励头部学习不同的模式,应用了一种直观的解决方案,即只向每个头部提供完整特征的一部分,这类似于DeiT-T中的组卷积思想。用改进的MHSA训练缩小模型的变体,并计算图中的保持相似性。研究表明,在不同的头部中使用不同的通道分割特征,而不是像MHSA那样对所有头部使用相同的完整特征,可以有效地减少注意力计算冗余。

  • Parameter Efficiency

典型的ViT主要继承了NLP transformer的设计策略,例如,使用Q、K、V投影的等效宽度,在阶段上增加水头,以及在FFN中将膨胀比设置为4。对于轻型车型,这些部件的配置需要仔细重新设计。受[Rethinking the value of network pruning]的启发,采用Taylor结构修剪来自动查找Swin-T和DeiT-T中的重要成分,并探索参数分配的基本原理。修剪方法在一定的重新源约束下去除不重要的通道,并保留最关键的通道以最好地保持准确性。它使用梯度和权重的乘积作为信道重要性,近似于去除信道时的损耗波动。

825880caeb0cb40f824224397a9a571c.gif

04

新框架

f2f7af1bf1ec273e2c2e9c860fe04dc1.png

实验可视化

b8a7f55a9e24b7304ba6849ee7cf5498.png

b6e387116e122895d0f8c40d6ead0c2f.png

43a08319f445ba7de05a3575694de434.gif

© THE END 

转载请联系本公众号获得授权

ef75ec1eb39364fc66a2ec68114a39da.gif

计算机视觉研究院学习群等你加入!

ABOUT

计算机视觉研究院

计算机视觉研究院主要涉及深度学习领域,主要致力于目标检测、目标跟踪、图像分割、OCR、模型量化、模型部署等研究方向。研究院每日分享最新的论文算法新框架,提供论文一键下载,并分享实战项目。研究院主要着重”技术研究“和“实践落地”。研究院会针对不同领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

99af789dfc70ecf3080544fd21477db2.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉研究院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值