建议背诵 | 字节用4大准则教你设计一个拥有CNN的速度,Transformer精度的模型!

简介: 建议背诵 | 字节用4大准则教你设计一个拥有CNN的速度,Transformer精度的模型!

本文作者从实际应用的角度重新审视现有的Transformer。它们中的大多数甚至不如基本的ResNets系列高效,并且偏离了现实的部署场景。这可能是由于当前衡量计算效率的标准,例如FLOP参数是片面的、次优的同时对硬件也不敏感的。

因此,本文直接将特定硬件上的TensorRT延迟作为效率指标,提供了更全面的计算能力内存成本带宽反馈。在一系列对照实验的基础上,本文得出了TensorRT的4个设计指南,例如Stage-levelEarly CNNLate TransformerBlock-levelEarly TransformerLate CNN

据此,作者提出了一个面向TensorRTTransformer家族,简称TRT-ViT。大量实验表明,TRT-ViT在各种视觉任务(例如图像分类、目标检测和语义分割)的延迟/准确性权衡方面明显优于现有的 ConvNet和视觉Transformer

例如,在ImageNet-1k top-1 准确率为82.7% 时,TRT-ViTCSWin快2.7倍,比Twins快2.0倍。

MS-COCO目标检测任务上,TRT-ViT实现了与Twins相当的性能,同时推理速度提高了2.8倍。


1简介


最近,Vision Transformer在图像分类、语义分割和目标检测等各种计算机视觉任务中取得了显著的成功,并取得了明显优于CNN的性能提升。然而,从真实场景的角度来看,CNN仍然主导着视觉架构 部署。

当深入挖掘背后的实质性性能改进时现有的Transformer,观察到这些收益是以大量资源开销为代价的。此外,当Transformer部署在资源受限的设备上时,它已成为一个障碍。为了减轻Transformer笨重的计算成本,一系列工作重点开发了高效的Vision Transformer,如Swin TransformerPVTTwinsCoAtNetMobileViT

尽管上述工作从不同的角度展示了ViT的效率,但关键设计主要由计算效率的间接标准指导,例如FLOP参数。这种迂回的标准是片面的、次优的,并且偏离了真实场景的部署。事实上,该模型必须应对部署过程中的环境不确定性,这涉及到硬件感知特性,例如内存访问成本I/O吞吐量

具体来说,正如许多论文中所述,计算复杂度的间接度量在神经网络架构设计中被广泛使用,FLOPs和参数是近似的,但通常不能真实反映直接度量。真正关心的是速度或延迟。

image.png图 1

在本文中,为了解决这种差异,作者提供了一种观点,将特定硬件上的TensorRT延迟视为直接的效率反馈。TensorRT在实际场景中已成为通用且易于部署的解决方案,有助于提供令人信服的面向硬件的解决方案指导。在这种直接准确的指导下,重新绘制了图1中几种现有竞争模型的准确性和效率权衡图。

如图1所示,Transformer具有性能良好的优势,而CNN则成功地实现了高效率。尽管ResNet在性能上不如竞争对手的Transformers令人印象深刻,但它仍然是准确率-延迟权衡下的最佳架构。

例如,ResNet使用 11.7毫秒(batch size = 8)来达到81.7%的准确率。虽然twins-pcpvt-sImagenet-1k分类中达到了令人印象深刻的准确率,达到83.4%,但实现这一目标需要39.8毫秒。这些观察促使提出一个问题:如何设计一个性能与Transformer一样好、预测与ResNet一样快的模型?

为了回答这个问题,作者系统地探索了CNNTransformer的混合设计。遵循Stage到Block的分层路线图来研究面向TensorRT的架构。通过广泛的实验,总结了在TensorRT上设计高效网络的4个设计准则:

  1. Stage-Level:在后期Stage使用Transformer Block可以最大化效率和性能;
  2. Stage-Level:由浅入深的Stage模式可以提升性能;
  3. Block-LevelTransformerBottleNeck混合BlockTransformer效率更高;
  4. Block-Level:先全局后局部的模式有助于弥补性能问题。

基于上述准则设计了一系列面向TensorRTTransformer(缩写为TRT-ViT),由具有ConvNetsTransformers的混合网络组成。CNNTransformerTRT-ViT的Stage和Block位置互补。

此外,提出了各种TRT-ViT Block以将CNNTransformer组合成一个串行方案,以解耦异构概念并提高信息流的效率。所提出的TRT-ViT在延迟准确度交易方面优于现有的ConvNetsVision Transformer, 例如,在ImageNet-1k top-1 准确率为 82.7% 时,TRT-ViTCSWin快2.7倍,比Twins快2.0倍。

更重要的是,TRT-ViT在下游任务上表现出更显着的延迟/准确性权衡增益。如图1所示,TRT-ViT 实现了与Twins相当的性能,而推理速度在MS-COCO目标检测上提高了2.8倍,在ADE20K语义分割任务上提高了4.4倍。在相似的TensorRT延迟下,TRT-ViT在COCO检测上的性能比ResNet高3.2AP(40.4到43.6),在ADE20K分割上比ResNet高6.6%(38.86%到45.4%)。


2TRT-ViT


2.1 基于TensorRT的设计指南

为了研究分析了2个SOTA网络 ResNetViT 的运行性能。它们在 ImageNet1K 分类任务上都非常准确,并且在业界很流行。虽然只分析了这2个网络,但它们代表了目前的趋势。它们的核心是 BottleNeck BlockTransformer Block ,它们也是其他最先进网络的关键组件,例如 ConvNextSwin

为了更好地说明经验结果,遵循 RepLKNet,使用操作或块的计算密度(以每秒 Tera 浮点操作数,TeraFLOPS 衡量)来量化其在硬件上的效率,描述如下

image.png

从图 1(a) 和表 1 可以看出,BottleNeck Block 更高效,具有更高的 TeraFLOPS,而 Transformer Block更强大,在 ImageNet 上具有更好的精度。

在本文中,目标是设计一个实现类似 ResNet 的效率和类似 Transformer 的性能的网络。设计一个混合了 BottleNeckTransformer Block的网络很简单,例如 MobileViT。然而,这些论文要么专注于优化 FLOP,这是衡量效率的间接标准,要么将大量精力放在移动设备上。

image.png表 1

Transformer 简单地应用于 CNN 通常会导致性能和速度下降。因此,总结了在 TensorRT 上有效设计高效网络的4个实用准则。

准则1:Transformer Block在后期使用可以最大限度地提高效率和性能之间的平衡

人们认为Transformer块比卷积块更强大但效率更低,因为Transformer旨在建立特征之间的全局连接。相比之下,卷积只捕获局部信息。在这里,提供了配备TensorRT的详细分析。如图1所示,堆叠Transformer块(PVT-Medium)在ImageNet1K分类任务上的 Top-1 准确率为 81.2%,而BottleNeck块(ResNet50)的相应准确率仅为 79.0%。然而,如表1所示,在效率方面,BottleNeck模块在各种输入分辨率下的TeraFLOPS始终优于Transformer 模块。

此外,当输入分辨率降低时,TransformerBottleNeck之间的效率差距会缩小。具体来说,当输入分辨率为56×56时,TransformerTeraFLOPS 值只有81,不到BottleNeckTeraFLOPS值378的4分之1。但是,当分辨率降低到7×7时,TransformerTeraFLOPS值几乎等于BottleNeck,分别为599和670。这一观察促使在TensorRT上设计高效网络时将Transformer模块置于后期阶段以平衡性能和效率。CoATNet也遵循类似的规则并提出混合了TransformerCNN 模块的网络。

遵循准则1,原生解决方案是在后期将BottleNeck块替换为Transformer块,在表 1 中称为 MixNetVMixNet Valilla)。可以看到MixNetVViT更快,比ResNet更准确。

准则2:从浅到深的Stage模式可以提高性能

作者研究了各种 SOTA 网络(例如 RestNetViT)中 TeraParams 的属性,并在表 1 中展示了发现。BottleNeckTeraParams 在后期变得更加突出,这表明在后期堆叠更多的 BottleNeck 块将与早期相比,模型容量更大。

ViTTransformer 块中也可以找到类似的趋势。这一观察启发使早期阶段更浅,晚期阶段更深。假设这种由浅入深的阶段模式将带来更多参数,提高模型容量并在不降低效率的情况下获得更好的性能。

image.png

为了验证这一点,对ResNet50进行了相应的修改,并提供了表2中的经验结果。将第1阶段和第2阶段的Stage深度分别从3、4减少到2、3,同时增加最后阶段的Stage深度从3到5。从表2中可以看到Refined-ResNet50ImageNet1K上的Top-1准确率比ResNet50高0.3%,同时在TensorRT上稍快。此外,将这种由浅入深的阶段模式应用到PvT-Small上,得到Refined-PvT-Small,更好更快。最后,在MixNetV上也可以得出类似的结论,这并不奇怪。

准则3:BottleNeck BlockTransformer Block混合使用比Transformer更有效

虽然按照准则 1 和 2 取得了显着的改进,但Refined-MixNetV在效率上无法达到ResNet的效率。为此,设计一个利用TransformerBottleNeck两者的优点的混合模块。

在图3(a)和(b)中提供了2个混合块,其中首先使用1×1 Conv层来投影输入通道的数量,最后使用Concat层来合并全局和局部特征。引入收缩率R来控制Transformer块在混合块中的比例,定义为Transformer块的输出通道除以混合块的输出通道。如图3(a)所示,在MixBlockA中,创建了2个分支,一个用于Transformer,另一个用于BottleNeck

图 3

此外,通道拆分层用于进一步提高效率,其中Transformer块的输出通道为,而对应的通道为。在MixBlockB中,Transformer块和BottleNeck块是顺序堆叠的,Transformer块和BottleNeck块的输出通道相等,即此处R=0.5。从表1可以看出,与Transformer块相比,2个混合块的TeraFLOPS都显着增加,这表明混合块比Transformer块更有效。而且,它们对应的TeraParams也更好,这表明它们具有实现更好性能的潜力。

MixBlockAMixBlockB替换MixNetV中的Transformer块,构建了MixNetAMixNetB。如表3所示,其中C、T和M分别表示ConvolutionTransformerMixBlock,可以看到MixNetAMixNetB都优于ResNet50。但是,在准确性方面,它们都无法击败MixNetV。此外,PVT-Medium和2种混合网络之间的性能差距也不容忽视。

准则4:Global-then-Local Block有助于弥补性能问题

正如许多论文中所描述的,感受野通常很大的Transformer从输入特征中提取全局信息,并在每个条目内实现信息交换。相比之下,卷积的小感受野只挖掘局部信息。首先获取全局信息并在局部进行提炼,而不是先提取局部信息并在全局范围内提炼更有意义。此外,MixBlockB中的收缩率R必须为0.5,失去了进一步调整的灵活性。global-then-local块模式解决了这个问题,其中R可以是0到1之间的任何值。

按照这个准则,在MixBlockB中转换Transformer操作和Convolution操作的顺序,得到MixBlockC,如图3(c)所示。MixBlockCTeraFLOPS分数与MixBlockB相当。然后,用MixBlockC代替MixBlockB,得到MixNetC。与直觉一致,如表3所示,MixNetC的性能优于MixNetB,而不会牺牲任何效率。此外,MixNetC在准确性和TRT延迟方面都超过了MixNetV

此外,MixNetCPVT-Medium之间的差距得到了弥补,MixNetC实现了类似ResNet的效率和类似Transformer的性能。

2.2 TRT-ViT: An Efficient Network on TensorRT

按照ResNet的基本配置构建了TRT-ViT 架构,其中采用特征金字塔结构,特征图的分辨率随着网络深度而降低,而通道数增加。

接下来,应用提出的设计准则来构建TRT-ViT。整个架构分为5个阶段,后期Stage只使用MixBlockC,而卷积层用于早期Stage。此外,使用了由浅入深的Stage模式,与ResNet中的Stage模式相比,早期Stage更浅,后期Stage更深。

image.png表4

为了与其他SOTA网络进行公平比较,提出了4种变体,TRT-ViT-A/B/C/D,其配置列于表4。3×3表示卷积核大小=3,C表示一个阶段的输出通道。R、S、K是所提出的MixBlockC中的内部参数,其中S代表Transformer Block中的空间缩减率,K表示MixBlockCBottleNeck的kernel-size大小,R 表示收缩率。

为简单起见,设置R=0.5。TRT-ViT-A/B/C/D的Stage深度分别为2-4-5-43-4-7-43-4-9-64-5-9-5。对于所有变体,在最后阶段使用MixBlockC,即stage5

对于更大的型号,TRT-ViT-C/D,另外在stage4使用2个MixBlcokC。另外,每个MLP层的扩展率设置为3,Transformer中的head dim设置为32。对于标准化和激活函数,BottleNeck块使用BatchNormReLUTransformer块使用LayerNormGeLU


3实验


3.1 ImageNet-1K

3.2 语义分割

3.3 目标检测与实例分割


4参考


[1].TRT-ViT: TensorRT-oriented Vision Transformer


5推荐阅读


分割冠军 | 超越Swin v2、PvT v2等模型,ViT-Adaptiver实现ADE20K冠军60.5mIoU

DAFormer | 使用Transformer进行语义分割无监督域自适应的开篇之作

全新Backbone | 模拟CNN创造更具效率的Self-Attention

相关文章
|
4月前
|
机器学习/深度学习 自然语言处理 异构计算
Python深度学习面试:CNN、RNN与Transformer详解
【4月更文挑战第16天】本文介绍了深度学习面试中关于CNN、RNN和Transformer的常见问题和易错点,并提供了Python代码示例。理解这三种模型的基本组成、工作原理及其在图像识别、文本处理等任务中的应用是评估技术实力的关键。注意点包括:模型结构的混淆、过拟合的防治、输入序列长度处理、并行化训练以及模型解释性。掌握这些知识和技巧,将有助于在面试中展现优秀的深度学习能力。
160 11
|
5天前
|
机器学习/深度学习
ACM MM24:复旦提出首个基于扩散模型的视频非限制性对抗攻击框架,主流CNN和ViT架构都防不住它
【9月更文挑战第23天】复旦大学研究团队提出了ReToMe-VA,一种基于扩散模型的视频非限制性对抗攻击框架,通过时间步长对抗性潜在优化(TALO)与递归令牌合并(ReToMe)策略,实现了高转移性且难以察觉的对抗性视频生成。TALO优化去噪步骤扰动,提升空间难以察觉性及计算效率;ReToMe则确保时间一致性,增强帧间交互。实验表明,ReToMe-VA在攻击转移性上超越现有方法,但面临计算成本高、实时应用受限及隐私安全等挑战。[论文链接](http://arxiv.org/abs/2408.05479)
17 3
|
1月前
|
机器学习/深度学习
CNN模型验证和CNN模型保存
【8月更文挑战第10天】CNN模型验证和CNN模型保存。
59 27
|
1月前
|
机器学习/深度学习
加载CNN保存模型
【8月更文挑战第10天】加载CNN保存模型。
39 12
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
122 9
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。
【7月更文挑战第2天】计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。AlexNet开启新时代,后续模型不断优化,推动对象检测、语义分割、图像生成等领域发展。尽管面临数据隐私、模型解释性等挑战,深度学习已广泛应用于安防、医疗、零售和农业,预示着更智能、高效的未来,同时也强调了技术创新、伦理考量的重要性。
50 1
|
2月前
|
机器学习/深度学习 数据采集 算法
Python基于卷积神经网络CNN模型和VGG16模型进行图片识别项目实战
Python基于卷积神经网络CNN模型和VGG16模型进行图片识别项目实战
|
3月前
|
机器学习/深度学习 JSON 测试技术
CNN依旧能战:nnU-Net团队新研究揭示医学图像分割的验证误区,设定先进的验证标准与基线模型
在3D医学图像分割领域,尽管出现了多种新架构和方法,但大多未能超越2018年nnU-Net基准。研究发现,许多新方法的优越性未经严格验证,揭示了验证方法的不严谨性。作者通过系统基准测试评估了CNN、Transformer和Mamba等方法,强调了配置和硬件资源的重要性,并更新了nnU-Net基线以适应不同条件。论文呼吁加强科学验证,以确保真实性能提升。通过nnU-Net的变体和新方法的比较,显示经典CNN方法在某些情况下仍优于理论上的先进方法。研究提供了新的标准化基线模型,以促进更严谨的性能评估。
121 0
|
3月前
|
机器学习/深度学习 自然语言处理 PyTorch
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
86 0

热门文章

最新文章