这是自动驾驶中基于 Transformer的模型和硬件加速分析
题目:Transformer-based models and hardware acceleration analysis in autonomous driving: A survey
名称:自动驾驶中基于 Transformer 的模型和硬件加速分析:一项调查
论文:https://arxiv.org/abs/2304.10891
近年来,Transformer架构在各种自动驾驶应用中表现出了良好的性能。另一方面,它在便携式计算平台上的专用硬件加速已成为真正自动驾驶汽车实际部署的下一个关键步骤。这份调查报告提供了一个全面的概述,基准,并分析了基于Transformer的模型,专门为自动驾驶任务量身定制,如车道检测,分割,跟踪,规划和决策。我们回顾了用于组织Transformer输入和输出的不同架构,例如编码器-解码器和仅编码器结构,并探讨了它们各自的优点和缺点。此外,考虑到量化和运行时间等关键因素,我们深入讨论了Transformer相关算子及其硬件加速方案。我们具体说明了卷积神经网络、Swin -Transformer和Transformer具有4D编码器的层之间的算子级比较。本文还重点介绍了基于Transformer模型的挑战、趋势和当前见解,并在长期自动驾驶应用的背景下解决了其硬件部署和加速问题。
索引术语:Transformer,硬件加速,自动驾驶,深度学习
近年来,自动驾驶已经成为一个快速发展的领域,旨在通过自动化和智能系统辅助人类驾驶员。自动驾驶技术的成功部署有望显著提高交通系统的安全性和效率。在过去的二十年里,一系列数据驱动技术已经被开发出来用于自动驾驶,从传统的基于规则的方法[1]、[2]到先进的机器学习方法[3]。传统的自动驾驶方法主要依靠解析表达式和二进制编码交通规则的算法来感知环境、规划轨迹和控制车辆;详见2010年代早期到中期的综述文章,例如,城市场景的方法[4],运动规划和控制[5],[6],以及即时定位及建图(SLAM)任务[7]。
然而,这些传统方法在处理复杂的现实场景时经常面临挑战,例如动态对象、遮挡和不确定环境。相比之下,深度学习方法[8],特别是深度神经网络(DNN),在从数据中学习复杂模式和做出预测方面表现出色。例如,卷积神经网络(CNN)[9]是一种使用卷积层检测局部空间特征并分层组合以识别复杂模式的DNN,已广泛应用于自动驾驶应用。在之前的调查中,已经对不同自动驾驶任务的深度学习方法进行了回顾和讨论,包括一般性讨论[3],[10],[11],[12],[13];使用强化学习的模型[14];目标检测模型[15]、轨迹与行为预测模型[16]、[17]、多模态融合模型[18]、规划与决策模型[19]、[20]、[21]、可解释性人工智能模型[22]、场景生成模型[23]。
最近,Transformer架构[24]在各种自动驾驶任务中比传统CNN模型表现出了令人印象深刻的性能。因此,人们对在便携式硬件上部署Transformer模型和开发操作员级加速方案越来越感兴趣。本文旨在对基于Transformer的模型的最新研究进行全面深入的概述,特别强调自动驾驶的算子级加速技术。
为了进一步提高基于CNN的方法在自动驾驶中的性能,引入了注意机制[25]。注意机制背后的主要思想是允许模型根据输入的不同部分与当前上下文的相关性来权衡它们。例如,在序列到序列模型的情况下,注意机制使解码器能够在生成目标序列时专注于源序列的特定部分。这种选择性聚焦使模型能够比传统的循环神经网络更有效地捕获更长期的依赖关系和关系。如图1所示,注意力机制可以被描述为一个函数,该函数根据与给定查询(Q)的兼容性计算一组输入值(也称为“值”(V))的加权和。注意机制使用注意评分函数计算每个键查询对的注意分数,然后使用Softmax函数对这些分数进行规范化以产生注意权重。这些权重用于计算值的加权和,这代表了注意力机制的输出。注意机制通过选择性地关注相关信息,提高了学习过程的效率和鲁棒性。
图1:左图描绘了Self-Attention(或缩放点积注意),右图显示了包含几个注意层的Multi-Head-Attention,如图[24]所示。
Transformer架构[24]最初是基于自然语言处理(NLP)任务的注意机制开发的,但它们模拟长期依赖关系和捕捉全局环境的能力,使它们在自动驾驶的感知任务中具有吸引力。它旨在处理和捕获输入数据中的依赖关系,从而消除了对循环或卷积层的需求,从而实现高度并行计算。典型的Transformer由编码器-解码器结构组成。编码器由一堆相同的层组成,每个层包含两个主要组件:Multi-Head-Attention机制(如图1所示)和位置编码前馈神经网络。Multi-Head-Attention模块使模型能够同时权衡输入序列中不同部分相对于彼此的重要性,从而捕获长期依赖关系。Transformer架构包含位置编码,它注入有关输入元素的相对或绝对位置的信息,因为Attention机制本身并不捕获位置信息。
因此,Transformer架构的硬件加速成为实现实际自动驾驶场景模型的一个重要领域。人工智能芯片上的硬件加速涉及使用专用处理器或专用硬件单元来比通用CPU或GPU更有效地执行特定操作。另一方面,Transformer算子是Transformer体系结构的基本构建块,用于执行基本的数学运算,例如矩阵乘法、注意力计算和前馈神经网络计算。Transformer算子的优化对于充分利用硬件加速器的功能并实现基于Transformer的模型的快速、高效部署和执行至关重要。通过定制这些运算符来利用AI芯片的优势,如并行性、低精度算法和专门的功能单元,Transformer模型的整体性能可以显著提高。人工智能加速器通常采用低精度算术、数据压缩和并行处理等技术来加快计算速度并降低功耗。
本文的其余部分组织如下。第二节介绍了基本的Transformer模型以及不同自动驾驶任务中的各种Transformer变体。第三节介绍了便携式AI设备中不同的Transformer编码器-解码器结构、操作符和硬件加速进展。第四节讨论了基于Transformer的深度学习实现的挑战和趋势,并给出了结论。
Transformer模型和任务
注意机制和Transformer架构的发展历史可以通过一系列关键的发展和里程碑式的论文来追溯,如图2所示。[25]首先在神经机器翻译的背景下引入了注意机制,提出了一种源序列和目标序列之间的动态对齐方法。这种方法克服了早期序列到序列模型中固定长度上下文向量的局限性。Luong等人[26]通过提出局部关注和全局关注进一步改进了注意机制,前者关注较小的源序列子集,后者考虑所有源词进行变长对齐上下文计算。
图2:一个时间轴图,说明了Attention机制和Transformer架构研究的历史和关键里程碑。
这条路线的一个里程碑是由Vaswani等人提出的,他们首次引入了Transformer体系结构。这一创新显著提高了各种NLP任务的性能。随后,Devlin等人提出了BERT(来自Transformer的双向编码器表示),这是一个使用Transformer架构进行双向表示的预训练模型。当对下游任务进行微调时,BERT在NLP任务中取得了前所未有的性能。
在另一项研究中,Radford等人提出了GPT(生成预训练Transformer)模型,该模型采用单向Transformer架构进行语言模型预训练。在特定任务上对GPT进行微调产生了实质性的性能改进,随后的迭代(GPT-2、GPT-3和GPT-4)继续推进最先进的技术。
最近,Dosovitskiy等人用vision Transformer (ViT)模型证明了Transformer架构对计算机视觉任务的适用性。通过将图像划分为不重叠的小块并使用线性嵌入,作者在图像分类任务中取得了与传统CNN模型相比具有竞争力的结果。ViT也是后续图像处理任务中基于transformer的模型的基本架构之一。
针对图像处理的基础模型
作为基于Transformer的图像处理模型的先驱架构,ViT[29]用self-attention取代了传统CNN的卷积层。如图3所示,它将图像划分为一系列不重叠的patchs,然后将其输入Transformer编码器以学习图像的表示。Transformer编码器由几个自关注层组成,然后是前馈层。自注意机制允许网络关注图像中相关的patchs,而忽略无关的patchs。为了使ViT适用于更大的图像,作者引入了一种混合方法,将卷积层与self-attention层结合起来。卷积层用于降低图像的空间分辨率,而自关注层用于捕获patchs之间的远程依赖关系。
图3:ViT架构,左图为图像分割和位置嵌入过程,右图为包含多头关注层的标准编码器架构,如图[29]所示。
受ViT的启发,Swin-Transformer[30]引入了一种新的分层体系结构,将self-attention机制组织成多层次的层次结构,其中每一层由一组不重叠的patch组成。这种方法的动机是观察到由于self-attention的二次复杂性,视觉Transformer具有有限的可扩展性。Swin-Transformer的主要创新之处在于使用了可移动的窗口,这使得patchs能够关注相邻的patchs,同时避免与相邻的patchs重叠。这减少了计算自关注所需的计算次数,并使体系结构能够扩展到更大的图像尺寸。它还引入了一种新的标记化方案,将图像划分为固定大小的非重叠patchs,然后在层次结构的每个级别将补丁递归分组为更大的“宏patchs”。这种方法有助于保存空间信息,并允许模型捕捉本地和全局背景。许多感知模型使用SwinTransformer作为主干来获取图像特征,如BEVFusion[31]、[32]和BEVerse[33]。
在自动驾驶应用中,基于Transformer的架构已被广泛应用于各种子任务,包括物体检测、车道检测和分割、跟踪和定位、路径规划和决策。此外,最近的研究还探索了Transformer在构建自动驾驶端到端深度学习模型中的应用。这些模型利用注意力机制进一步提高其专注于相关信息的能力,并在复杂的真实驾驶场景中有效执行。在本节的其余部分中,我们将根据它们的任务回顾基于Transformer的模型,如表1所示。我们主要将任务分为三类:3D和一般感知任务(包括目标检测,跟踪和3D分割);2D和平面任务(包括车道检测、分割和高清地图生成);以及其他任务(包括轨迹预测、行为预测和端到端任务)。
表1:各类Transformer在标准nvidia gtx3090 gpu上的基准性能。backbone描述每个模型的主干架构,parameter表示模型参数的大小。Gflops代表每秒千兆浮点运算,fps表示帧数每秒,map表示模型的平均精度。最后一列表示每个模型使用的基准数据集。
3D通用感知任务
第一类任务是3D和一般感知,包括目标检测,跟踪和3D分割任务。这是近年来基于Transformer的模型研究的热门领域之一。这种类型的任务旨在分割、识别和跟踪物体,如车辆、行人和环境中的其他元素。在各种基于transformer的模型中,DETR[67]是一个早期的重要模型,它启发了许多后续作品,尽管它最初是为2D检测而设计的。
DETR将目标检测视为使用预生成框的预测问题,并消除了传统的锚点。采用基于匈牙利算法的二分匹配方法直接预测一对一的目标集。已经提出了变形DETR[68]等变体模型,通过引入变形注意来提高模型的收敛速度并解决查询歧义问题。在DETR架构的基础上,DETR3D[34]将Transformer应用于多个摄像机,用于鸟瞰(BEV)空间的3D物体检测。它首先将点云数据(来自激光雷达)转换为3D体素表示,然后将其输入到改进的DETR架构中,该架构使用多尺度特征融合来捕获全局和局部上下文信息。
FUTR[69]在架构上也与DETR相似,但使用了多传感器(图像+激光雷达+雷达)。将多模态输入融合成BEV特征,然后提升以实现3D BBOX。在FUTR的基础上,FUTR3D[35]将3D目标检测扩展到多模态融合。它在结构上与DETR3D类似,但增加了一个模态不可知特征采样器(maffs),能够处理各种传感器配置并融合不同的模态,包括2D相机、3D激光雷达、3D雷达和4D成像雷达。
PETR[36],[37]是另一个最近的发展,使用位置嵌入变换进行多视图3D物体检测。将三维坐标位置信息编码为图像特征,生成三维位置感知特征。在推理过程中,可以离线生成三维位置坐标,并将其用作额外的输入位置嵌入。
CrossDTR[38]结合了PETR和DETR3D的优势,创建了一个横向视图和深度引导框架,实现了与其他方法相当的精度,同时由于解码器层数较少,提供了快速的处理时间。
BEVFormer[39]、[40]采用了不同的方法,采用时空Transfomer架构实现统一的BEV表示,从而在不依赖多模态输入的情况下提高性能。它结合了空间和时间融合,利用历史信息来增强性能。BEVFormer利用时间自注意模块从历史BEV特征中提取特征,用于运动目标速度估计和遮挡目标检测,并在垂直方向上扩展空间交叉注意,用于BEV Z方向的柱状查询。
相比之下,UVTR[41]侧重于利用图像和LiDAR输入之间的跨模态交互来增强深度推断,在没有高度压缩的情况下,在BEV中为每个模态生成单独的体素空间,然后通过知识转移和模态融合来融合多模态信息。该方法为扩大三维占位研究提供了有希望的方向。
在3D分割任务中,TPVFormer[42]通过将体积转换为三个BEV平面,解决了基于Transformer的方法的效率问题,大大减少了计算负担,同时有效地预测空间中所有体素的语义占用。VoxFormer[43]利用2D图像通过深度预测生成3D体素查询建议,然后基于这些建议的2D图像特征的3D体素查询进行可变形的交叉注意查询。然后,利用掩码自编码器自关注传播信息,利用上样本网络对体素进行细化,生成语义占用结果。
SurroundOcc[44]从多视角和多尺度2D图像特征中执行了3D BEV特征查询,并为其添加了3D卷积。Transformer层,并逐步上采样的体积特征。当生成多级BEV特征时,其三维卷积网络可以将这些特征组合在一起,生成密集的空间占用。
在三维目标跟踪任务中,大多数现有方法依赖于利用空间和外观相似性的启发式策略。然而,它们往往不能有效地模拟时间信息。最近基于Transformer的模型旨在缓解这个问题。例如,MOTR[45]扩展了DETR模型,构建了一个多目标跟踪(MOT)框架。它引入了一个“跟踪查询”来模拟整个视频中的跟踪实例,旨在利用视频序列中的时间变化,并隐式地学习目标的长期时间变化,避免了对显式启发式策略的需要。与依赖基于运动和基于外观的相似性启发式和后处理技术的传统方法不同,MOTR处理对象跟踪时不需要跟踪NMS或IoU匹配。
MUTR3D[46]通过基于空间和外观相似性的跨相机和跨帧目标关联,同时进行检测和跟踪。这种方法利用3D轨迹查询直接建模对象的3D状态和外观特征,随着时间的推移和跨多个相机。在每一帧中,3D轨迹查询从所有可见摄像机采样特征,并学会启动,跟踪或终止轨迹。
基于Transformer的方法在3D和一般感知任务中取得了令人印象深刻的进展,强调了在更复杂和现实自治的更广泛的感知任务中开发专门注意机制的潜力驾驶场景。
2D和平面任务
与3D任务类别相反,我们将第二个任务类别分类为2D和平面任务,其中模型主要处理车道检测,分割和高清地图生成等任务。对于车道检测任务,我们进一步将模型分为两组。第一组模型生成BEV特征,然后是CNN语义分割和检测头。
例如,BEVSegFormer[47]使用了交叉注意机制来查询多视图2D图像特征。在Transformer之后添加语义解码器,将查询解码为BEV道路语义分割结果。
PersFormer[48]使用CNN提取图像特征,并将其分成两条路径。第一个路径连接到基于CNN的二维车道检测头,第二个路径使用逆透视映射(IPM)方法将透视图(PV)视图特征转换为BEV视图特征,连接到Transformer网络进行BEV特征查询和增强。第二组模型使用多项式、关键点、向量和折线等各种表示直接查询和生成道路结构。
例如,LSTR[49]用二阶或三阶多项式逼近平坦的单车道道路标记。使用Transformer查询更新多项式的参数,匈牙利匹配损失优化了路径相关的回归损失。LSTR采用了轻量级的Transformer体系结构,以实现更高效的查询。
CurveFormer[50]通过直接从2D图像中生成车道线,而不需要特征视图变换,加快了推理速度。采用Transformer解码器,利用曲线查询将三维车道检测公式转化为曲线传播问题,利用曲线相交关注模块计算曲线查询与图像特征的相似度。
除了车道检测之外,Transformer架构还用于分割任务。例如,TIiM[51]提供了一个用于瞬时映射的序列到序列模型,该模型将图像和视频转换为开销映射或BEV表示。通过假设图像中的垂直扫描线与架空地图中的射线之间存在一对一的对应关系,TIiM被认为是一种数据高效和空间感知的方法。
Panoptic SegFormer[52]提出了一种结合语义分割和实例分割的Panoptic分割框架。提出了监督掩码解码器和查询解耦策略,实现了有效的分割。
对于高清地图生成任务,STSU[53]将车道表示为BEV坐标下的有向图,并基于简单多层感知器(MLP)学习Bezier控制点和图连通性。采用DETR型查询方法将前视摄像头图像转换为BEV道路结构。
VectorMapNet[54]是第一个实现高精度地图端到端矢量化的Transformer网络[70],使用BEV视图中的稀疏折线原语建模几何形状。它采用两阶段的流水线,包括集合预测(用于检测粗糙关键点)和序列生成(用于预测映射元素的下一个点)。
MapTR[55]开发了一个用于在线矢量化高精度地图生成的框架,该框架将地图元素建模为具有一组等效包络的点集。引入分层查询嵌入方案,灵活编码实例级和点级信息,学习映射元素的结构化二部匹配。
这些模型已被证明可以有效地将多视图特征合并为统一的BEV视图,从而促进端到端在线高精度地图构建,这对其他下游任务至关重要。
预测和决策
除了2D/3D感知任务外,Transformer架构还用于预测、规划和决策等其他任务。此外,最近的研究探索了使用Transformer构建整个自动驾驶端到端深度神经网络模型,旨在将感知、规划和控制统一到一个集成系统中。对于轨迹或行为预测,标准CNN模型的特征提取存在实际挑战,特别是其模拟远程相互作用的能力有限。然后开发基于Transformer的模型来解决这个问题。
VectorNet[56]的开发是为了将这些几何形状(从道路标记或车辆轨迹)转换为矢量格式输入。它引入了一个分层图神经网络,该网络使用矢量表示对高清地图和代理轨迹进行编码,并利用单个道路组件的空间局部性并对其相互作用进行建模。
TNT[78]根据每条轨迹的端点定义车辆模式,将轨迹预测转化为端点预测问题,简化了轨迹预测。然而,作为一种基于锚点的技术,TNT在预测端点之前需要启发式锚点定义。
DenseTNT[57]通过直接预测端点的概率分布来克服这一限制,从而实现无锚点预测。mmTransformer[58]提出了一个堆叠的Transformer架构,通过一组固定的独立提案在功能级别对多模态进行建模。然后制定了一项基于区域的培训战略,以诱导所产生的建议的多模态。该策略在保证多模态行为输出的同时降低了运动预测的复杂性。
AgentFormer[59]允许代理在特定时间的状态直接影响另一个代理的未来状态,消除了在单一维度中编码的中间特征的需要。这种方法可以同时学习时间信息和交互关系。它还确保代理的当前关系通过不同时间的关系得到反映,从而减轻了在传统Transformer注意机制中通常在相同输入元素状态下发生的时间和代理信息损失。对于更复杂的情况,其中输入包含静态和动态数据(例如,道路几何形状,车道连接,交通灯等),由于自关注和昂贵的位置前馈网络对输入序列长度的二次依赖,标准Transformer对广泛的多维序列进行建模是具有挑战性的。
WayFormer[60]通过分析输入的融合前、融合后和分层融合来缓解这一问题,并在效率和质量之间保持平衡。该方法避免了设计模态特定模块的复杂过程,使模型更容易扩展和扩展。
最后,端到端模型被广泛地归类为规划和决策任务,因为端到端任务的最终目标是输出决策信号。过去几年出现了一些工作,例如,Transferuser[61]使用多个Transformer模块进行数据处理、中间数据融合和特征图生成。在整个特征提取器中应用了多个分辨率(64×64, 32×32, 16×16和8×8)的数据融合,从而从图像和LiDAR BEV流中输出512维特征向量,然后通过元素求和将其组合在一起。该方法考虑了自驾车前方32米内和两侧16米内的传感区域,从而包含了一个32m × 32m的BEV网格。网格被划分为0.125m × 0.125m的块,得到256 × 256像素的分辨率。
NEAT[62]提出了一种对场景的语义、空间和时间结构进行有效推理的表示。它构建了一个连续函数,将BEV场景坐标中的位置映射到路点和语义,使用中间注意映射迭代压缩高维二维图像特征为紧凑的表示。
在Transferuser架构的基础上,Interuser[63]提出了一种单阶段架构来融合来自多模态多视图传感器的信息,获得了更好的性能。该框架通过开发安全控制过滤器来约束Transformer输出操作,从而增强了端到端模型的安全性。模型的安全敏感输出包括10个路点路径,而安全敏感输出包括交通规则信息和具有7个特征的物体密度图,如车辆、行人和自行车。些输出是通过融合多视图图像输入和激光雷达点云数据产生的,该数据覆盖了自动驾驶汽车前方28米和两侧14米的区域。分析的区域尺寸为20m × 20m,划分为1m × 1m的网格。除了Camera和LiDAR信号外,MMFN[64]还在端到端任务中使用了矢量化的高清地图和雷达。探索了高清地图作为网络输入的不同表示形式,并提出了融合四种类型数据的框架。另一项名为STP3的研究[65]提出了一种以自我为中心的对齐积累方案,该方案将2D转换为3D并对齐目标特征。其预测模块综合了时刻t的障碍物信息和时刻tn的障碍物位置信息。
与上述主要为端到端任务设计的作品不同,UniAD[66]提出了一个面向规划的框架。
本论文认为,以前的作品没有考虑到规划所需的某些组件,新的设计可以适当地组织之前的任务,以方便规划。
Transformer模型基准
我们在NVIDIA GPU 3090上对主要基于Transformer的模型进行基准测试,考虑输入大小、运行时间、准确性和数据集等指标。如表2所示,对于使用Nuscenes数据集的3D物体检测任务[73],由于结构相似,DETR3D和FUTR3D表现出相当的性能。BEVFormer通过生成BEV特征和从这些特征查询3D对象来优于DETR3D。
PETR和CrossDTR使用CNN网络将2D特征转换为3D特征,加速了查询过程,性能优于DETR3D。与ResNet50相比,ResNet101的更高精度可归因于其可变形卷积机制和增加的卷积深度,尽管以较慢的运行速度为代价[79]。另一方面,基于transformer的道路要素检测研究呈现出更大的差异,对于2D车道(TuSimple)、3D车道(OpenLane)和局部地图(Nuscenes)等任务,存在不同的模型和评估标准。
Lane和local map Transformer查询比目标检测更快,因为关键点查询更少,CNN骨干网更小,利用了更浅的层特征。如表底部所示,端到端Transformer是一个新兴的研究领域。然而,它主要依赖于CARLA等非现实模拟器平台中的模拟数据[77],这限制了它在现实场景和实际实现中的适用性。
Transformer架构、算子和硬件加速
本节重点介绍Transformer组件、操作符和硬件加速分析。我们首先分析编码器-解码器结构,强调其在处理输入数据和生成输出预测中的作用。讨论了关键组件,包括层归一化,矩阵乘法和softmax。然后,我们探讨了提高Transformer模型计算效率的方法,详细介绍了应用于算子(如softmax、层归一化、激活函数和矩阵乘法)的定点算法的硬件加速技术。
编码器-解码器设计
尽管Transformer模型在自动驾驶应用中实现了最先进的性能,但它们相当大的存储和计算开销对便携式或边缘设备的部署和高效推理构成了挑战。
用于感知任务的Transformer模型主要利用BEV特征,而Encoder负责生成这些特征(图4(b)和(d))。编码器将BEV特征扩展成长度为信道的H * W矩阵,作为Transformer中的查询。这些特征是利用相机外部矩阵从多视图相机的二维特征中导出的。为了保留二维空间信息,将位置嵌入添加到Query中,然后将其作为Encoder的输入(图4(b))。为了更快的收敛,编码器迭代之前的BEV特征,并将当前查询作为自关注的输入。此外,车辆的位置姿态信息在像素级匹配前、后帧(图4(d))。
在感知任务中,用Transformer块替换CNN头部,生成障碍物的3D边界框,以及使用查询生成2D/3D车道线和局部地图(图4(a)、(c)、(e)、(f))。对于3D障碍物感知任务有两种类型的查询:显式和隐式。显式查询依赖于BEV特征(图4(e)),而**隐式查询直接使用来自多视图相机的2D特征(**图4(a))。隐式查询减少了编码器的计算需求。为了进一步减少Transformer的计算负荷,可以使用CNN架构将摄像机视角视图转换为2D/3D BEV后查询转换后的BEV特征(图4(c))。
车道和局部地图任务主要利用BEV功能进行查询,将车道和局部地图的物理关键点作为查询对象,并将其特征(xyz属性)作为向量。与障碍物任务相比,道路信息查询需要对BEV特征进行更高程度的网格细化;然而,BEV功能所需的距离范围较低。车辆既要关注周围的道路信息(通常为60米× 30米),也要关注障碍物(通常为100米× 100米),以及高速行驶时远处的障碍物。由于道路信息是静态的,因此可以使用具有历史信息的前视摄像头来构建道路信息,而动态障碍物则需要侧面摄像头的参与。因此,Transformer的交叉注意机制可以根据这些需求灵活地设计和优化不同的应用程序。
不同架构的算子
在上一节中,分析了Transformer用于感知任务的编码器和解码器的一般框架,其中最复杂的组件是编码器结构(图4(d))。BEVformer采用这种结构,分别在空间和时间上融合多视角相机和历史信息,使其成为自动驾驶应用的复杂开源Transformer。我们现在根据运算符对编码器进行拆解,以获得后续硬件加速参考的详细模型。
在本节中,我们特别比较了操作员级别的三种主要架构层:ResNet [80], SwinTransformer和BEVFormer的编码器。如图5(a)所示,ResNet具有一个称为瓶颈的基本单元,由包含类似瓶颈网络的多个阶段组成。这些网络包括3x3卷积,1x1卷积,批归一化(BN)和激活函数(ReLU,整流线性单元),要求适度的计算并行性和片上存储器。在自动驾驶任务中,ResNet通常用于2D相机图像特征提取,作为骨干网络。
图5:ResNet和SwinTransformer中的图层:(a) ResNet基本单元,称为瓶颈,由1x1和3x3卷积、批归一化(BN)和ReLU激活函数组成。(b)SwinTransformer的第一阶段包括层归一化、多头自关注和前馈网络(FFN)。自注意机制包括矩阵乘法、软最大化、换位、连接和重塑操作。FFN包括一个全连接层和GELU激活函数。此外,SwinTransformer涉及额外的数据重组操作,如窗口分区和展开,使其结构比ResNet更复杂。
图5(b)显示了由多个级单元组成的SwinTransformer,包括数据重排、层归一化(LN)、矩阵乘法(32x32)、Softmax、完全连接(FC)层和激活函数(GELU,高斯误差线性单元)。与ResNet相比,SwinTransformer具有更大的运算符多样性和更大的矩阵乘法维度。在CNN网络中,Softmax和FC层通常作为最后一层出现在每个SwinTransformer阶段,因此需要在单元内加速。虽然SwinTransformer可以取代ResNet作为自动驾驶任务的骨干组件,但由于增益和加速性能之间的权衡,CNN网络仍然是已部署产品的主流。作为基本的Transformer网络,Swin-Transformer作为各种NPU制造商硬件加速的初始参考,实现3 FPS/TOPS或更高的性能水平。
加速用于自动驾驶的Transformer的主要挑战来自包含自注意和交叉注意模块的编码器和解码器模型。
交叉注意是将向量从一个空间(PV)变换到另一个空间(BEV)的过程,它比自注意更为复杂。
如图7所示,我们以BEVFormer的编码器为例,它由时间自注意、空间交叉注意、LN和FFN组成。LN和FFN结构类似于SwinTransformer,但具有更大的输入和输出特征尺寸,需要更大的计算能力。可变形自注意模块中的变形注意采用可学习的注意像素地址,需要从数据缓存中的相应位置获取数据。这个过程涉及大型矩阵乘法(512* 128)和对大量矩阵的操作,使其比SwinTransformer的自我关注更为复杂。
图7:Transformer4D编码器结构:BEVformer编码器结构编码器层,与SwinTransformer相同,BEVformer编码器具有层归一化,FFN。
时间自我注意和空间交叉注意是两种复杂的注意机制。时间自注意对由前一个BEV特征和当前BEV特征初始化的BEV查询进行变形注意,并进行自我信息校准。与SwinTransformer不同的是,有一个网格样本会从相关位置收集特征,这些位置可以从特征和矩阵变换中学习。空间交叉注意将有助于从2D环绕相机特征中查询BEV特征,并采用可变形注意机制。该查询是一个多级多摄像机查询,因此增加了2个模块,一个是摄像机掩模模块,它将在BEV空间中生成每个摄像机掩模,一个是多级偏移模块,它将获得4级参考点偏移。除了图层归一化、激活、Softmax、矩阵乘法,BEVFormre编码器还有很多数据重组过程,如重塑、分割、连接、排列等。BEVformer的结构比SwinTransformer更复杂,加速也更困难。
时间自关注模块使用自关注机制融合当前和历史的BEV特征。空间交叉注意模块与时间交叉注意模块有相似之处,但由于数据操作操作较多,矩阵乘法维度较大(512* 256),多相机和多尺度特征的注意力像素地址检索更为复杂。自动驾驶中感知任务的模型复杂度明显高于SwinTransformer和传统CNN骨干网,导致对操作员加速和片上存储的需求增加。
此外,在图6中,我们展示了在可移植硬件上实现Transformer体系结构的操作符列表示例。整个过程分为26个操作步骤,每个步骤都有各种指标报告,如操作类型、多头次数、重复次数和操作时间(以微秒为单位)。可以看到,第2-5项(Q、K、V和注意矩阵计算)、第11项(注意求解头矩阵计算)、第21项(求解ffn矩阵计算)和第23项(线性矩阵计算)占据了大部分操作计数。
图6:表格列出了将示例Transformer模型部署到可移植硬件的主要操作符。参数类别:
N表示输入序列长度,也称token长度,表示图像中特征映射的HxW, C表示通道维数,h表示Multi-head被分割成h个head, N encode表示encode重复的次数,N decode表示decode重复的次数。我们将该过程分为26个操作员明智的步骤,并报告指标,包括操作类型,多头数量,重复计数和操作员时间(微秒)。右边较小的表显示了主表的摘要。
算子加速分析
Transformer架构包含大量的矩阵乘法算子和相应的数据承载算子、Softmax算子、激活函数、LN算子。量化权重和输入可以通过将浮点运算调优为整数来加快推理速度[81],[82],[83]。我们设计了这些算子的定点硬件加速。
Softmax
Softmax函数在深度学习中应用广泛,经常出现在输出层。先前的工作[84],[85],[86]研究了DNN应用中softmax的硬件加速,而一些研究也探索了基于vision transformer的softmax的量化和加速[87],[81]。给定x = [x0;x1;:::;xN 1],标准的softmax激活可以定义为:
在在线运行过程中,我们重点关注并行化和存储优化,观察到整个过程的时间复杂度为30 (n),空间复杂度为S(n + 1)。该方法需要三个循环并存储N + 1个中间结果。为了进一步优化过程,将全局最大值替换为局部最大值,使计算分两次循环完成[87]。这将时间复杂度降低到20 (n),并减少了中间结果的存储。
在定点测试中,输入使用带符号的S6.9和S5.2,而输出使用无符号的U1.15和U1.7。中间累积结果∑j=0,N-1:2(xj-M),使用U10.10。试验结果见表三。我们可以看到16位输入和输出的精度大约是1%。然而,8位输入的精度明显较低,8位输出导致大量量化误差。因此,作者建议使用16位量化输入和输出,以确保Softmax功能硬件加速的准确性。
层归一化
层归一化(LN)[88]、[89]与批归一化的不同之处在于,它是跨通道而不是批量进行归一化的,解决了Transformer模型在通道方向上的大量计算。归一化技术有效地缓解了Transformer模型训练过程中的梯度消失和爆炸问题。此外,层归一化涉及除法、平方、平方根等操作,层归一化的替换以及Integer Transformer中的注意完全支持INT8推理[90]。
层归一化的原始计算公式[91]为:
针对给定的公式,设计并测试了一个定点硬件加速器。测试使用8位U8和S7输入,16位S8:7输出,以及具有不同量化精度的中间结果。均值采用S8:7,标准差采用U8:6。我们在两个不同的测试数据集(称为case1和case2)上评估了性能,并在表iii(第4到第5行)中报告了结果。测试结果显示S7和U8的输出结果相当。最大错误率主要发生在序列的最小值处。虽然绝对误差值保持较小,但由于Golden相对较小,误差百分比显得较大价值。单独地评估层规范化操作符表明,使用8位输入可能会带来一些风险。但是,必须综合评估对整个模型的影响,以确定其整体效果。
激活函数
激活函数调节神经网络中神经元之间的信号传递,包括线性函数(如x = f(x))和非线性函数(如Sigmoid, Tanh, Relu)。非线性函数对于解决复杂问题至关重要,因为单独的线性函数只会产生输入的线性组合。因此,神经网络采用非线性函数来更有效地建模和解决复杂的非线性问题。本研究开发了各种激活函数的不动点表示,如GELU[92]、Relu[93]、Leaky Relu[94]、ELU[95]、SELU[96]、Sigmoid[97]和Tanh。GELU作为讨论激活函数的硬件定点设计的一个说明性示例。
原GELU计算公式[98]定义为:
我们基于近似公式开发了GELU函数的定点实现。我们对实现进行了测试,使用带签名的S6:9和S3:4作为输入,使用带签名的S5:10和S3:4作为输出。
测试结果显示在表III中(最后三行)。对于16位输入和输出,平均误差低于1%。然而,由于一些值接近于零,最大误差不适用。
当我们将输入改为8位时,平均误差增加到5%。进一步将输出减小到8位导致平均误差约为28%,表明输出位宽度显著影响结果的准确性。
表3:对Softmax、层归一化(LN)和GELU操作符采用不同量化的定点,分别采用8位和16位的位宽I/O组合。分析与32位fp32 I/O结果相比的平均误差和最大误差。
矩阵乘法
矩阵乘法是Transformer的重要组成部分,占其计算负荷的80%以上。我们分析了各种公开可用的感知算法模型,发现这个比例很高[99]、[100]、[101]、[102]、[103]、[104]、[105]、[106]。
在Transformer中,乘法累加运算发生在通道方向上,每个通道都需要完成。通道长度可以达到256,需要在设计时考虑定点计算和溢出问题。我们的电路设计适用于INT4、INT8和INT16的定点算法,使用INT4乘法累加作为基本单元。通过使用移位操作,我们为INT8使用2个INT4单元,为INT16实现使用4个INT4单元。此外,我们实现FP8,包括E4M3和E5M2格式的乘法累加操作,使用2个INT4单元和旁路设计。FP8是一种IEEE浮点格式,已经证明了与16位精度相当的训练精度,同时为Transformer和计算机视觉应用提供了显着的加速。中间结果采用FP16/FP32或Int32格式,部分和使用结合比例因子的Float格式。
矩阵乘法加速不仅需要定点设计,还需要精确的量化设计。为了解决这个问题,我们尝试将量化设计剪裁为特定的数据和模型,作为它们对应的量化值范围和范围不同。这种方法有助于防止溢出,这种溢出很容易由于乘-累加操作的大维度而发生。
章节小结
采用各种优化技术改进基于Transformer的模型。数据重组算子,如重塑、排列、分割、连接和转置,用于处理不规则数据,依赖于片上存储器作为中间结果存储。软件编译优化,包括操作符合并和操作符映射,来优化这些操作符。模型量化是加速模型推理的关键技术,用整数多项式近似方法或函数近似方法代替Transformer网络中的非线性算子。替代量化方法,如指数量化,也考虑了矩阵乘法加速。模型结构的改进,如使用有效的注意力机制[107]、[108]或轻量化结构**,有助于进一步优化。
研究了模型压缩方法,如剪枝和知识蒸馏。修剪涉及从训练良好的模型中删除不重要的参数或连接[109],[110],[111],各种方法侧重于多头自注意(MHSA),通道,token或整个Transformer结构[112],[113],[114],[115],[116]。知识蒸馏将知识从大的教师模型转移到小的学生模型[117],[118],[119]。将模型量化与知识蒸馏相结合可以减少内存开销,提高性能[120],[121],[122]。VisionTransformer蒸馏技术检查了特征图和注意力,其中**特征图蒸馏将地图划分为小块,并使用用于知识转移的额外蒸馏令牌进行注意力蒸馏[**123],[124],[122]。
对Transformer硬件加速的研究主要集中在NLP模型,如BERT和视觉Transformer模型,如ViT。Transformer在自动驾驶领域的应用在2022年迅速发展,这导致人们对其实施的兴趣增加。然而,用于自动驾驶Transformer模型的硬件加速仍处于起步阶段。
NPU制造商的现有基准测试显示了SwinTransformer和VisionTransformer型号的加速性能,但关于DETR3D、PETR和BEVFormer等最新型号的加速性能的公开信息有限。随着Transformer车型在自动驾驶领域的持续发展,主要NPU制造商和研究机构正在积极探索这些车型的加速技术,旨在将其部署到量产车辆中。在这项工作中,我们剖析了典型的自动驾驶模型,并为由此产生的操作员开发了定点实现。
挑战和趋势
基于Transformer的深度学习方法已经显示出改善自动驾驶系统的潜力,但它们面临着收集高质量训练数据、确保安全性和提供可解释性等挑战。多模态融合和可解释性是该领域的发展趋势,而基于Transformer的模型已经成功地完成了感知和预测任务。前景包括优化实时处理和开发端到端学习模型。然而,应对挑战和利用趋势和前景需要持续的研究工作。
Transformer模型从最初的3D障碍物感知任务发展到现在的各种感知任务。未来的自动驾驶需要更高的系统安全性和确定性,单模态视觉感知在边际增益方面已经达到饱和。为了提高边际增益,需要多模态融合,这对高级自动驾驶至关重要。为了满足这一需求,未来可能会产生更大尺寸、多模态、多任务、4D时空输入输出的Transformer模型。这对模型训练和加速提出了新的挑战,需要在算法设计、硬件架构和系统集成方面取得进展。
自动驾驶中的跟踪、规划和决策任务也开始从传统的DNN模型过渡到基于Transformer的模型。考虑到Transformer模型日益复杂,这可能需要更好的硬件加速方案来提高硬件部署中的模型推理效率。一种有希望的方法是将多个级别和类型的Transformer模型级联到端到端系统中。然而,这在加速整个系列模型方面提出了一个挑战,因为每个模型可能有独特的硬件要求。
在基于感知的模型中,主要输入是图像或雷达数据,通过CNN对其进行处理以提取特征。然后将这些特征输入到BEV感知Transformer模型中,用于从BEV角度检测障碍物和静态地面标记。将BEV感知结果与高精度地图结合,进一步编码为网格格式,输入到类似NLP的Transformer模型中,完成预测和规划任务。
自动驾驶任务中的Transformer模型除了具有基本模型的激活函数、LN、Softmax和大矩阵乘法加速度外,还具有一个特殊的Deformable Attention算子。其可学习的位置参数导致每次查询相关数据存在一定的不规则性,增加了图像数据对硬件的缓存压力,使并行加速变得困难。除了优化软件编译器调度外,还需要针对这些模型专门设计硬件。
Transformer模型的混合精度量化是加速模型的重要任务,它直接影响到计算能力和存储能力,是未来的主要研究方向之一。高比特量化保证了高精度,但需要更多的内存和计算资源,而低比特量化精度较低,但减少了内存和计算需求。
固定位量化无法在精度和计算能力之间实现细粒度的权衡,因此需要使用混合精度量化(MPQ)来实现有效的模型压缩。MPQ采用了各种量化比特宽度,包括8位、16位、32位,甚至4位和2位。除了成熟的线性量化方法外,还考虑了基于FP8的对数量化等替代方法,其中基于FP8的量化和加速是一个突出的研究领域。
Transformer的注意机制在将一个空间序列转换为另一个空间序列方面具有优势,我们知道矩阵乘法可以将一个向量从一个空间变换到另一个空间,大矩阵可以进行多维空间变换,这些矩阵中的参数是可学习的。经过空间变换后,信息关系查询变得更加容易。
注意中的网格样本可以从相关像素中收集到需要的特征,并且网格样本的位置也是可学习的。矩阵变换和网格采样使Transformer非常适合需要将多视图数据转换为BEV格式的自动驾驶任务。Transformer模型的参数和计算能力远远超过CNN网络,可以更好地泛化各种角落案例和对大型数据集的过拟合。然而,这也增加了模型的复杂性,需要仔细优化以确保高效的性能。因此,有必要为自动驾驶中的Transformer模型开发更好的可解释和可解释的技术,因为这些对于确保安全性和建立系统信任至关重要。例如,基于注意力的显著性映射可以用来在视觉上突出显示输入数据中最重要的区域,例如摄像头或激光雷达馈送,模型使用这些数据来做出驾驶决策。这将提供对模型决策过程的洞察,使工程师和用户更好地理解和信任系统。
总结
本文全面概述了专为自动驾驶任务量身定制的基于Transformer的模型。我们研究了用于组织Transformer输入和输出的不同架构,并评估了它们各自的优点和缺点。深入探讨Transformer相关算子及其硬件加速分析,考虑量化、定点运行等关键因素。对任务级和操作员级定点测试进行了基准比较。最后,我们强调了基于Transformer的模型中的挑战、趋势和当前见解,并在实际应用程序中长期Transformer部署的背景下讨论了它们的硬件部署和加速问题。