EfficientViT: Memory Efficient Vision Transformer withCascaded Group Attention论文阅读

高效的记忆视觉transformer与级联的群体注意

摘要。

视觉transformer由于其高模型能力而取得了巨大的成功。然而,它们卓越的性能伴随着沉重的计算成本,这使得它们不适合实时应用。在这篇论文中,我们提出了一个高速视觉transformer家族,名为EfficientViT。我们发现现有的transformer模型的速度通常受到内存低效操作的限制,特别是在MHSA中的张量重塑和单元函数。因此,我们设计了一种具有三明治布局的新构建块,即在高效FFN层之间使用单个内存绑定的MHSA,从而提高了内存效率,同时增强了信道通信。此外,我们发现注意图在头部之间具有很高的相似性,从而导致计算冗余。为了解决这个问题,我们提出了一个级联的群体注意模块,以不同的完整特征分割来馈送注意头,不仅节省了计算成本,而且提高了注意多样性。综合实验表明,高效vit优于现有的高效模型,在速度和精度之间取得了良好的平衡。例如,我们的EfficientViT-M5在准确率上比MobileNetV3-Large高出1.9%,而在Nvidia V100 GPU和Intel Xeon CPU上的吞吐量分别高出40.4%和45.2%。与最近的高效型号MobileViT-XXS相比,efficientvitt - m2的精度提高了1.8%,同时在GPU/CPU上运行速度提高了5.8 ×/3.7 ×,转换为ONNX格式时速度提高了7.4 ×。代码和模型可在这里获得。

https://github.com/microsoft/Cream/tree/main/EfficientViT

1. 介绍

视觉transformer(Vision transformer, ViTs)由于其高建模能力和优异的性能,在计算机视觉领域受到了广泛的关注[18,44,69]。然而,不断提高的准确性是以增加模型大小和计算开销为代价的。例如,SwinV2[43]使用3.0B参数,而V-MoE[62]使用14.7B参数,在ImageNet上实现了最先进的性能[17]。如此大的模型尺寸和随之而来的沉重的计算成本使得这些模型不适合具有实时性要求的应用[40,78,86]。 最近有一些设计轻便高效的视觉transformer模型的工作[9,19,29,49,50,56,79,81]。不幸的是,大多数这些方法旨在减少模型参数或Flops,这是速度的间接指标,不能反映模型的实际推理吞吐量。例如,在Nvidia V100 GPU上,使用700M Flops的MobileViT-XS[50]比使用1220m Flops的DeiT-T[69]运行速度要慢得多。尽管这些方法在Flops或参数较少的情况下取得了良好的性能,但与标准同构或分层transformer(如DeiT[69]和Swin[44])相比,其中许多方法并没有显示出显著的壁钟加速,也没有得到广泛采用。

为了解决这个问题,在本文中,我们探讨了如何更快地使用视觉transformer,寻求找到设计高效transformer架构的原则。基于目前流行的视觉转换器DeiT[69]和Swin[44],我们系统地分析了影响模型推理速度的三个主要因素,包括内存访问、计算冗余和参数使用。特别是,我们发现transformer模型的速度通常受内存限制。换句话说,内存访问延迟阻碍了GPU/ cpu计算能力的充分利用[21,32,72],从而对transformer的运行速度产生了严重的负面影响[15,31]。在多头自注意(MHSA)中,最低效的操作是频繁的张量重塑和元素函数。我们观察到,通过适当调整MHSA和FFN(前馈网络)层之间的比例,可以在不影响性能的情况下显着减少内存访问时间。此外,我们发现一些注意头倾向于学习类似的线性投影,导致注意图冗余。分析表明,通过向每个头部馈送不同的特征来显式分解每个头部的计算可以缓解这一问题,同时提高计算效率。此外,现有的轻量化模型主要遵循标准transformer模型的配置,往往忽略了不同模块的参数配置[44,69]。为了提高参数效率,我们使用结构化剪枝[45]来识别最重要的网络组件,并总结参数重新分配对模型加速的经验指导。

PAGE 2

基于分析和发现,我们提出了一个新的存储高效transformer系列,命名为EfficientViT。具体来说,我们设计了一个具有三明治布局的新块来构建模型。三明治布局块在FFN层之间应用单个内存绑定的MHSA层。它减少了MHSA中内存受限操作带来的时间成本,并应用了更多的FFN层来允许不同信道之间的通信,从而提高了内存效率。为了提高计算效率,我们提出了一种新的级联群注意(CGA)模块。其核心思想是增强输入注意力头的特征的多样性。与之前对所有头部使用相同特征的自注意相比,CGA为每个头部提供不同的输入分割,并在头部之间级联输出特征。该模块不仅减少了多头关注的计算冗余,而且通过增加网络深度提高了模型容量。最后但并非最不重要的是,我们通过扩大关键网络组件(如值投影)的通道宽度来重新分配参数,同时缩小ffn中重要性较低的组件(如隐藏维度)。这种重新分配最终提高了模型参数的效率。

实验表明,我们的模型在速度和精度上都比现有的高效CNN和ViT模型有了明显的改进,如图1所示。例如,我们的efficientviti - m5在ImageNet上获得77.1%的前1精度,在Nvidia V100 GPU上的吞吐量为10,621图像/s,在Intel Xeon E52690 v4 CPU @ 2.60GHz上的吞吐量为56.8图像/s,在精度上优于MobileNetV3Large [26] 1.9%, GPU推理速度为40.4%,CPU速度为45.2%。此外,EfficientViTM2的准确率达到70.8%,比MobileViT-XXS[50]高出1.8%,同时在GPU/CPU上运行速度提高5.8 ×/3.7 ×,转换为ONNX[3]格式时速度提高7.4 ×。当部署在移动芯片组(即iPhone 11中的Apple A13仿生芯片)上时,使用CoreML[1]时,EfficientViT-M2模型的运行速度比MobileViT-XXS[50]快2.3倍。 总之,这项工作的贡献有两个方面: •我们对影响视觉transformer推理速度的因素进行了系统的分析,得出了一套有效模型设计的指导方针。 •我们设计了一系列新的视觉transformer模型,在效率和精度之间取得了很好的平衡。该模型在多种下游任务上也表现出良好的迁移能力。

2. 用视觉变形金刚走得更快

在本节中,我们将从内存访问、计算冗余和参数使用三个方面探讨如何提高视觉转换器的效率。我们试图通过实证研究来确定潜在的速度瓶颈,并总结有用的设计指南。

2.1. 记忆效率

内存访问开销是影响模型速度的关键因素[15,28,31,65]。transformer[71]中的许多操作,如频繁的重塑、元素加法和归一化,都是内存效率低下的,需要跨不同存储单元进行耗时的访问,如图2所示。虽然有一些方法可以通过简化标准softmax自注意的计算来解决这个问题,例如稀疏注意[34,57,61,75]和低秩近似[11,51,74],但它们往往以精度下降和有限的加速为代价。 在这项工作中,我们转向通过减少内存低效层来节省内存访问成本。最近的研究表明,内存效率低下的操作主要位于MHSA层,而不是FFN层[31,33]。然而,大多数现有的vit[18,44,69]使用的这两层的数量相等,这可能无法达到最佳效率。因此,我们探索了在快速推理的小模型中MHSA和FFN层的最佳分配。具体来说,我们将swwin - t[44]和DeiT-T[69]缩小到具有1.25倍和1.5倍高推理吞吐量的几个小子网,并比较了不同MHSA层比例的子网的性能。如图3所示,20%-40% MHSA层的子网往往获得更好的准确率。这样的比例远小于采用50% MHSA层的典型vit。此外,我们测量内存绑定操作的时间消耗,以比较内存访问效率,包括重塑、元素明智的添加、复制和规范化。在具有20% MHSA层的swing - t -1.25 x中,内存绑定操作减少到总运行时的44.26%。该观察结果也推广到DeiT和更小的1.5倍加速模型。研究表明,适当降低MHSA层的利用率可以在提高模型性能的同时提高存储效率。

2.2. 计算效率

PAGE 3

MHSA将输入序列嵌入到多个子空间(头部)中,并单独计算注意图,这已被证明对提高性能是有效的[18,69,71]。然而,注意图在计算上是昂贵的,并且研究表明,其中一些不是至关重要的[52,73]。为了节省计算成本,我们探索了如何在小型ViT模型中减少冗余关注。我们以1.25倍的推理加速训练宽度缩小的swan - t[44]和DeiT-T[69]模型,并测量每个头部和每个块内剩余头部的最大余弦相似度。从图4中,我们观察到注意头之间存在高度的相似性,特别是在最后的块。这种现象表明,许多头学习相同的完整特征的类似投影,并产生计算冗余。为了明确地鼓励头像学习不同的模式,我们采用了一种直观的解决方案,即只给每个头像提供完整特征的一部分,这类似于[10,87]中的群体卷积的思想。我们使用改进的MHSA训练缩小模型的变体,并计算如图4所示的注意力相似度。研究表明,在不同的头部中使用不同的通道分割特征,而不是像MHSA那样在所有头部中使用相同的完整特征,可以有效地减轻注意计算冗余。

2.3. 参数效率

典型的vit主要继承NLPtransformer的设计策略[71],例如,对Q、K、V投影使用等效宽度,逐级增加磁头,并在FFN中设置扩展比为4。对于轻量化模型,需要仔细重新设计这些组件的配置[7,8,39]。受[45,82]的启发,我们采用Taylor结构化剪枝[53]自动找到Swin-T和DeiT-T中的重要分量,并探索参数分配的基本原理。该方法在一定的资源约束下去除不重要的通道,保留最关键的通道,以最大限度地保持准确性。它使用梯度和权值相乘作为信道重要性,近似于去除信道时的损失波动[38]。 图5绘制了剩余输出通道与输入通道的比值,并给出了未修剪模型中的原始比值,以供参考。结果表明:1)前两个阶段保留的维度较多,最后一个阶段保留的维度较少;2) Q,K和FFN维度被大量修剪,而V的维度几乎被保留,只在最后几个块上减少。这些现象表明,1)典型的信道配置,即在每个阶段后将信道加倍[44]或为所有区块使用等效信道[69],可能会在最后几个区块中产生大量冗余;2)相同维数时,Q、K的冗余度远大于V。V偏好较大的通道,接近输入嵌入维数。

3. 高效视觉transformer

基于上述分析,在本节中,我们提出了一种新的具有快速推理的分层模型,称为EfficientViT。架构概述如图6所示。

3.1. 高效的it构建模块

PAGE 4

我们提出了一种新的高效视觉转换器构建模块,如图6 (b)所示。该模块由内存高效的三明治布局、级联的群体关注模块和参数重分配策略组成,分别从内存、计算和参数三个方面提高模型效率。 三明治的布局。为了构建一个内存高效的块,我们提出了一个三明治布局,它使用更少的内存约束的自关注层和更多的内存高效的FFN层进行信道通信。具体来说,它应用了一个自我关注层ΦA 我 对于空间混合来说 夹在FFN层之间ΦF i。计算公式为: X _ {i + 1} = 2 _{\压裂{1}{2}} _ { ( } ( \ 压裂{一}{2}(我)_{4}^{\保监会}(X _{我 } ) ) ) ( 1) 其中xi是第i块的完整输入特征。块将X i转换为X i+1,在单个自关注层前后分别有N个ffn。该设计减少了模型中自注意层造成的内存时间消耗,并采用了更多的FFN层来实现不同特征通道之间的高效通信。我们还使用深度卷积(DWConv)在每个FFN之前应用了一个额外的令牌交互层[27]。引入局部结构信息的归纳偏置来增强模型能力[14]。 级联组注意。注意头冗余是MHSA中的一个严重问题,它会导致计算效率低下。受高效cnn中的群卷积的启发[10,37,64,87],我们提出了一种新的关注模块,称为级联群关注(CGA)。它为每个头部提供完整特征的不同分割,从而显式地分解跨头部的注意力计算。正式地说,这种注意可以表述为: vec {x} _{我}\ = (W x _ {1} _ {B}, x _ {x} _ {k } ^ { + } , W X _ {X} _{3}) \打翻{X} {z} _ {i + 1} = CanCat (X _}{我)_ {i = 1}, W _ P{我}_{我}(2) 其中第j个头计算X ij上的自关注,这是输入特征X i的第j次分割,即X i = [X i1, X i2,…], X ih], 1≤j≤h, h为正面的总数,wij Q, wij K, wij V是映射将输入特征分割成不同子空间的投影层,wip是将连接的输出特征投影回与输入一致的维度的线性层。 虽然使用特征分割而不是每个头部的完整特征更有效,并且节省了计算开销,但我们通过鼓励Q, K, V层学习具有更丰富信息的特征的投影来继续提高其容量。我们以级联的方式计算每个头部的注意图,如图6 (c)所示,它将每个头部的输出添加到后续头部中,以逐步改进特征表示: X _{我}^ {\ '}_ {2}= X + X _{\λ我}(i - 1)。1 < j \leq h 其中,X ij 0为第j个输入分割X ij与由式(2)计算出的(j−1)-头输出X ei (j−1)的相加。在计算自关注时,它代替X ij作为第j个头的新输入特征。此外,在Q投影之后再加一个令牌交互层,使自关注能够共同捕捉局部和全局关系,进一步增强特征表示。 这种级联设计有两个优点。首先,给每个头部提供不同的特征分割可以提高注意图的多样性,如第2.2节所验证的那样。与群卷积相似[10,87],由于QKV层的输入和输出通道减少了h ×,级联的群注意可以节省h ×的Flops和参数。其次,将注意力头级联可以增加网络深度,从而在不引入任何额外参数的情况下进一步提高模型容量。它只会产生较小的延迟开销,因为每个头部的注意图计算使用较小的QK通道维度。 参数重新分配。为了提高参数效率,我们通过扩大关键模块的信道宽度而缩小不重要模块的信道宽度来重新分配网络中的参数。具体而言,根据第2.3节中的泰勒重要性分析,我们为每个头部的所有阶段的Q和K投影设置了小通道维度。对于V投影,我们允许它与输入嵌入具有相同的维数。由于FFN的参数冗余,其扩展比也从4降低到2。利用该策略,重要模块在高维空间中有更多的通道来学习表征,避免了特征信息的丢失。同时,去除不重要模块中的冗余参数,加快推理速度,提高模型效率。

3.2. 高效的it网络架构

PAGE 5

我们的effentvit的整体架构如图6 (a)所示。具体而言,我们引入了重叠的patch embedding[20,80],将16个×16 patch嵌入到c1维的token中,从而增强了模型在低级视觉表征学习中的能力。该体系结构包含三个阶段。每个阶段堆叠所建议的EfficientViT构建块,令牌的数量在每个子采样层减少4倍(分辨率的2倍子采样)。为了实现高效的子采样,我们提出了一种同样具有三明治布局的EfficientViT子样本块,只不过自关注层被一个倒置的残差块取代,以减少子采样过程中的信息损失[26,63]。值得注意的是,我们在整个模型中采用了BatchNorm (BN)[30]而不是LayerNorm (LN)[2],因为BN可以折叠到前面的卷积层或线性层中,这比LN具有运行时优势。我们还使用ReLU[54]作为激活函数,因为常用的GELU[25]或HardSwish[26]要慢得多,并且有时不被某些推理部署平台很好地支持[1,3]。 我们用六个不同的宽度和深度尺度建立了我们的模型家族,并为每个阶段设置了不同数量的头部。与MobileNetV3[26]和LeViT[20]类似,我们在早期阶段使用的块比后期阶段更少,因为在早期阶段使用更大的分辨率处理更耗时。我们以一个小的因子(≤2)增加各阶段的宽度,以减轻后期阶段的冗余,如第2.3节所分析。表1显示了我们模型族的体系结构细节。C i, L i和H i表示第i阶段的宽度,深度和头的数量。

4. 实验 4.1. 实现细节

我们在ImageNet-1K上进行图像分类实验[17]。模型使用PyTorch 1.11.0[59]和Timm 0.5.4[77]构建,使用AdamW[46]优化器和余弦学习率调度器在8个Nvidia V100 gpu上从头开始训练300次。我们将总批大小设置为2,048。输入图像被调整大小并随机裁剪为224 ×224。初始学习率为1 ×10−3,权值衰减为2.5 ×10−2。我们使用与[69]相同的数据增强方法,包括Mixup[85]、自动增强[13]和随机擦除[88]。此外,我们还提供了不同硬件上的吞吐量评估。对于GPU,我们在Nvidia V100上测量吞吐量,使用最大功率的2批处理大小适合内存[20,69]。对于CPU和ONNX,我们测量了英特尔至强E5-2690 v4 @ 2.60 GHz处理器上的运行时间,批处理大小为16,并在以下单个线程中运行模型[20]。我们还测试了EfficientViT在下游任务上的可移植性。对于下游图像分类的实验,我们在[86]之后对模型进行了300个epoch的微调,使用了batchsize为256,学习率为1 ×10−3,weight-decay为1 ×10−8的AdamW[46]。我们使用retanet[41]对COCO[42]进行目标检测,并使用与mmdetection[6][44]相同的设置对模型进行12个epoch (1 × schedule)的训练。举例分割,请参考附录。

4.2. ImageNet上的结果

我们将EfficientViT与ImageNet上流行的高效CNN和ViT模型进行比较[17],并将结果报告在表2和图1中。结果表明,在大多数情况下,我们的EfficientViT在不同的评估设置中实现了最佳的准确性和速度权衡。 与高效cnn的比较。我们首先将EfficientViT与普通的CNN模型(如MobileNets[26,63]和EfficientNet[67])进行比较。具体而言,与MobileNetV2 1.0 ×[63]相比,efficientviti - m3的top-1准确率提高了1.4%,在V100 GPU和Intel CPU上的运行速度分别提高了2.5倍和3.0倍。与最先进的MobileNetV3-Large[26]相比,efficientviti - m5的准确率提高了1.9%,但运行速度更快,例如,在V100 GPU上提高了40.5%,在英特尔CPU上提高了45.2%,但在ONNX型号上慢了11.5%。这可能是因为重塑在ONNX实现中较慢,这在计算自我关注中是不可避免的。此外,效率网- m5达到了与搜索模型效率网- b0相当的精度[67],而在V100 GPU/Intel CPU上运行速度快2.3倍/1.9倍,在ONNX模型上运行速度快2.1倍。虽然我们的模型使用了更多的参数,但它减少了影响推理速度的内存低效操作,并实现了更高的吞吐量。

PAGE 6

与高效vit的比较。我们还将我们的模型与表2中最近的高效视觉transformer[5,9,50,51,56]进行了比较。特别是,当在ImageNet-1K[17]上获得类似的性能时,我们的efficientviti - m4在测试的CPU和GPU设备上比最近的EdgeViT-XXS[56]运行速度快4.4倍和3.0倍。即使转换为ONNX运行时格式,我们的模型仍然获得3.7倍的速度。与最先进的MobileViTV2-0.5[51]相比,我们的efficientviti - m2在更高的吞吐量下实现了稍好的性能,例如,在GPU和CPU设备上测试的吞吐量分别提高了3.4倍和3.5倍。此外,我们比较了表3中最先进的大型vit的微小变体。PoolFormer-12S[83]具有与efficientviti - m5相当的精度,但在V100 GPU上运行速度慢3.0倍。与swing - t[44]相比,efficientviti - m5的准确率低4.1%,但在Intel CPU上的速度提高了12.3倍,证明了所提出设计的效率。此外,我们在补充材料中给出了移动芯片组的速度评估和比较。 更高分辨率的微调。最近对vit的研究表明,在更高分辨率下进行微调可以进一步提高模型的容量。我们还将最大的型号efficientvi - m5调至更高的分辨率。效率viti - m5↑384在V100 GPU上达到79.8%的top-1精度,吞吐量为3,986张图像/秒,效率viti - m5↑512进一步提高了top-1精度至80.8%,显示了处理更大分辨率图像的效率和良好的模型容量。

4.3. 迁移学习结果

PAGE 7

为了进一步评估传输能力,我们将EfficientViT应用于各种下游任务。 下游图像分类。我们将EfficientViT转移到下游图像分类数据集,测试其泛化能力:1)CIFAR-10和CIFAR100 [36];2)细粒度分类:Flowers [55], Stanford Cars [35], Oxford-IIIT Pets[58]。我们在表4中报告了结果。与现有的高效模型相比[18,26,27,63,89],我们的efficientviti - m5在所有数据集上都具有相当或稍好的准确性,并且具有更高的吞吐量。汽车是一个例外,我们的模型在准确性上略逊一筹。这可能是因为类之间的细微差别更多地存在于局部细节中,因此用卷积捕获更可行。 对象检测。在COCO[42]目标检测任务上,我们将efficientviti - m4与高效模型[12,22,26,63,66,68]进行了比较,结果如表5所示。具体来说,在Flops可比的情况下,EfficientViT-M4比MobileNetV2[63]高出4.4% AP。与搜索方法SPOS[22]相比,我们的efficientviti - m4的Flops减少了18.1%,AP提高了2.0%,显示了它在不同视觉任务中的容量和泛化能力。

4.4. 消融实验。

在本节中,我们将在ImageNet-1K上提出的EfficientViT[17]中删除重要的设计元素。为了放大差异,减少训练时间,所有模型都训练100次[20]。表6报告了结果。 夹心布局块的影响。我们首先提出了一项烧蚀研究,通过将三明治布局块替换为原始的Swin块来验证所提出的三明治布局设计的效率[44]。深度调整为{2,2,3},以保证与EfficientViTM4相似的吞吐量,以进行公平的比较。在类似的速度下,前1的准确率下降了3.0%,验证了应用更多的ffn而不是内存约束的MHSA对小型模型更有效。此外,为了分析自注意前后FFNs N数量的影响,我们将数量从1改为2和3。块的数量相应减少,以保持相似的吞吐量。从表6(#3和#4)中可以看出,由于缺乏远程空间关系,再增加ffn的数量是无效的,N=1的效率最好。 级联群体注意力的影响。为了提高MHSA的计算效率,我们提出了CGA。如表6(#5和#6)所示,用MHSA代替CGA的精度降低了1.1%,ONNX的速度降低了5.9%,这表明寻址头冗余提高了模型效率。对于没有进行级联操作的模型,其性能与MHSA相当,但不如CGA,表明了增强每个头部特征表示的有效性。

参数重新分配的影响。与没有QKV通道尺寸重新分配或FFN比率降低的模型相比,我们的EfficientViTM4的top-1准确率分别提高了1.4%/1.5%,GPU吞吐量分别提高了4.9%/3.8%,这表明参数重新分配的有效性(#1 vs #7, #8)。此外,我们研究了每个头部的QK维的选择以及V维与输入嵌入的比例,如图7所示。结果表明,随着QK维数从4增加到16,性能逐渐提高,再增加则性能下降。当V维与输入嵌入的比值从0.4提高到1.0时,性能从70.3%提高到71.3%。当比率进一步扩大到1.2时,它只得到0.1%的改善。因此,将V的通道设置在靠近输入嵌入的位置可以获得最佳的参数效率,这符合我们在2.3节的分析和设计策略。 其他组件的影响。我们消除了使用DWConv进行令牌交互、规范化层和激活函数的影响,如表6(#9、#10和#11)所示。使用DWConv,准确率提高了1.4%,延迟开销很小,证明了引入局部结构信息的有效性。用LN替换BN会使准确率降低0.9%,GPU速度降低2.9%。使用HardSwish代替ReLU可以提高0.9%的精度,但会导致ONNX速度大幅下降20.0%。激活函数是基于元素的操作,在GPU/CPU上占用了相当多的处理时间[15,48,72],因此使用ReLU代替更复杂的激活函数具有更好的效率。 1000次训练的结果和蒸馏。表7显示了在ImageNet-1K[17]和ImageNet-ReaL[4]上以RegNetY-16GF[60]作为继[20]后的教师模型,1000个训练epoch和知识蒸馏的结果。与levi - 128s相比[20],efficientviti - m4在ImageNet-1K和ImageNetReaL上分别高出0.5%和1.0%。对于推理速度,我们的模型在ONNX上的吞吐量提高了34.2%,并且在其他设置上也显示出优势。结果表明,随着训练时间的延长,有效vit的强大能力和泛化能力可以得到进一步的挖掘。

5. 相关工作

PAGE 8

高效的cnn。随着在资源受限场景下部署cnn的需求,文献[23,24,26,48,63,67,87]对高效cnn进行了深入研究。Xception[10]提出了一种基于深度可分离卷积的架构。MobileNetV2[63]构建了一个反向残差结构,将输入扩展到更高的维度。MobileNetV3[26]和effentnet[67]采用神经结构搜索技术来设计紧凑的模型。为了提高硬件上的实际速度,ShuffleNetV2[48]引入了通道分割和shuffle操作,以改善通道组之间的信息通信。然而,卷积核的空间局部性阻碍了CNN模型捕获远程依赖关系,从而限制了它们的模型容量。 有效的生命。ViT及其变体[18,44,69,76]在各种视觉任务上取得了成功。尽管性能优越,但大多数算法在推理速度上不如典型cnn。最近有人提出了一些高效的transformer,它们可分为两大阵营:1)高效的自我关注;2)高效的建筑设计。高效的自注意方法通过稀疏注意[34,57,61,75]或低秩近似[11,51,74]来降低softmax注意的成本。然而,它们会受到性能下降的影响,在softmax注意力上可以忽略不计或适度的推理加速[71]。另一项工作是将vit与轻量级cnn结合起来构建高效的架构[9,47,49,50,81]。LVT[81]提出了扩展卷积的增强注意机制,以提高模型的性能和效率。Mobile-Former[9]设计了一个并行CNN-transformer块来编码局部特征和全局交互。然而,大多数算法的目标都是最小化Flops和参数[16],这与实际推理延迟的相关性较低[70],并且在速度上仍然不如高效的cnn。与他们不同的是,我们通过直接优化其在不同硬件和部署设置上的吞吐量来探索具有快速推理的模型,并设计了一系列在速度和精度之间取得良好平衡的分层模型。

6. 结论

本文对影响视觉transformer推理速度的因素进行了系统的分析,提出了一种新的具有高效记忆运算和级联群体注意力的快速视觉transformer,命名为EfficientViT。大量的实验证明了高效vit的有效性和高速度,并且在各种下游基准测试中也显示了其优势。 的局限性。effentvit的一个限制是,尽管其推理速度很高,但由于引入的三明治布局中额外的ffn,与最先进的高效CNN相比,模型尺寸略大[26]。此外,我们的模型是基于推导出的构建高效视觉transformer的准则手工设计的。在未来的工作中,我们有兴趣缩小模型尺寸并结合自动搜索技术来进一步提高模型的容量和效率。 确认。袁教授获香港研究资助局(研资局)一般研究基金11211221及创新科技署创新及科技基金ITS/100/20资助。

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

andeyeluguo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值