Vis-TOP:视觉Transformer叠加处理器

摘要

近年来,Transformer[23]在自然语言处理(NLP)领域取得了良好的效果,并开始向计算机视觉(CV)领域拓展。优秀的型号如Vision Transformer[5]和Swin Transformer[17]已经出现。同时,Transformer模型平台扩展到嵌入式设备,以满足一些对资源敏感的应用场景。但是,由于Transformer模型参数多、计算流程复杂、结构变体繁多,在硬件设计中存在许多问题需要解决。这既是一个机会,也是一个挑战。我们提出了Vis-TOP (Visual Transformer Overlay Processor),一种适用于各种可视化Transformer模型的覆盖处理器。它不同于CPU、GPU、NPE等粗粒度覆盖处理器,也不同于针对特定模型的细粒度定制设计。Vis-TOP总结了所有可视化Transformer模型的特点,并实现了一个三层和两层的转换结构,允许在不改变硬件体系结构的情况下自由切换或更改模型。同时,采用三层和两层转换结构设计了相应的指令集和硬件结构。采用8位固定点(fix_8)对Swin Transformer微型模型进行量化后,在ZCU102上实现了一个覆盖处理器。与GPU相比,TOP吞吐量高出1.5倍。与现有的Transformer加速器相比,我们的每个DSP的吞吐量比其他公司高出2.2 - 11.7倍。总之,本文方法在资源消耗和推理速度方面都满足了实时人工智能的要求。Vis-TOP提供了一种基于可重构设备的经济有效的计算机视觉解决方案。

1 介绍

近年来,Transformer已经开始扩展到计算机视觉领域。Vision Transformer[5]是第一个提出用Transformer完全替代CNN结构的网络模型,并取得了很好的效果。因此,越来越多的可视化Transformer模型出现了。

另一方面,随着对网络模型研究的深入,研究者开始关注模型精度,也开始关注在现实应用场景中至关重要的指标,如资源利用率、运行效率、资源消耗和延迟。

与gpu等通用处理器相比,可重构设备提供了更好的运行效率和更低的功耗。基于可重构器件的解决方案如下:

  1. 分析神经网络的结构和核心算法。
  2. 设计定制的硬件架构。
  3. 基于整个模型流程实现具有较强并行性和流水线化的数据和计算流程。
  4. 根据报告对原有方案进行优化和迭代。

CNN、RNN或LSTM有许多伟大的作品。但是针对Transformer模型的工作相对较少。

在目前的研究中,算法的进化主要是由计算能力支撑的,计算能力包括两个方面的支持,即

  1. 通过为特定算法设计特定的硬件架构或协处理器
  2. 通过GPU的叠加和加速来获得较高的计算能力

GPU堆叠存在的问题是通用架构难以适应不同算法的特点,而定制硬件架构只能支持特定算法,无法扩展。本文提出了一种基于软硬件协同进化的可视化Transformer叠加处理器设计方案,本文的主要贡献如下:

  • 提出了一种模型转换和计算体系结构。它是一个完整的体系结构,由模型层、容器层和组件层组成,具有模型-容器层和容器-组件层之间的两层转换关系。本文还设计了一个支持两级转换关系的指令集。三层架构和两层转换关系建立了从算法核心到硬件的透明映射,允许神经网络的部署,同时屏蔽底层硬件,实现不同神经网络的定制。这在神经网络和硬件结构之间产生了协同作用,提供了很大的灵活性,提高了计算率
  • 我们提出并设计了一个兼容三层和两层转换结构的硬件架构。该体系结构首先从硬件角度对神经网络模型进行切片,在底层以“通用模块化+可重构”的形式为上层提供基本支持。它不考虑神经网络模型的特点和逻辑意义,而是以批量可重构的固定模块和结构可重构的可变模块的形式为上层提供基本支持。在这种情况下,这些模块是在对神经网络进行切片后,由普通模块派生出来的。上层可根据神经网络和算法本身的特点,通过指令集对两类模块进行配置,并进行参数化配置。因此,上层可以确定这些模块的执行顺序,以便更快地实现网络模型的整体流程。
  • 我们提出并设计了一个兼容三层和两层转换结构的硬件架构。该体系结构首先从硬件角度对神经网络模型进行切片,在底层以“通用模块化+可重构”的形式为上层提供基本支持。它不考虑神经网络模型的特点和逻辑意义,而是以批量可重构的固定模块和结构可重构的可变模块的形式为上层提供基本支持。在这种情况下,这些模块是在对神经网络进行切片后,由普通模块派生出来的。上层可根据神经网络和算法本身的特点,通过指令集对两类模块进行配置,并进行参数化配置。因此,上层可以确定这些模块的执行顺序,以便更快地实现网络模型的整体流程。

 2 背景

2.1 视觉 Transformer

Vis-TOP:视觉Transformer叠加处理器_第1张图片

 自从[5]引入以来,各种用于机器视觉的Transformer模型开始大量出现,Swin Transformer[17]就是其中最好的模型之一。我们以它为例来介绍可视化的Transformer。如图1所示,它是CNN的结构,将整个模型分为4个不同的阶段。在每个阶段对输入特征图进行下采样(减少图像的高度和宽度,增加通道数量),在每个阶段的块中只建模局部区域,而不是全局区域。基于窗口的多头注意(W-MSA)只对一个窗口(本文为7x7)中的相互关系进行建模,这有助于降低整体的计算复杂度,类似于从完全连通到卷积的思想。除了思想的相似性,W-MSA也有相同的内核大小和步幅参数卷积操作,但不同的是,W-MSA有相同的内核在舞台的大小和进步,导致这一问题的接受域W-MSAs一样在每一个阶段。CNN和MSA都没有这个问题:CNN的kernel size比stride大,所以它的接受域随着卷积叠加而逐渐增大;MSA具有全局接受域,因为核大小完全覆盖了特征图。为了缓解这一问题,作者提出了SW-MSA(移位窗口的多头自我注意)。SW-MSA和W-MSA的唯一区别是窗移到人工改变感受野。通过在同一块中交替使用SW-MSA和W-WSA来解决这一问题。

3 相关工作

本章将从定制加速器和覆盖处理器两个方面对相关工作进行总结和介绍。本文将首先介绍嵌入式设备(asic和fpga)上Transformer模型的定制硬件加速器。然后,本文将介绍目前叠加处理器的相关工作。虽然Transformer在各个领域的应用和研究都很丰富,但Transformer模型的覆盖处理器甚至只有NPE[11],所以我们将比较一些cnn覆盖处理器的设计。

3.1 定制加速器

A3[8]设计了一个定制的硬件加速器来加速单轮注意机制。它通过获取固定排序的最大和最小元素作为候选元素来近似实际值。OPTIMUS[20]提出在解码器和集关联RCSC (SA-RCSC)格式中跳过冗余运算,通过允许多个pe处理单个矩阵行来提高MAC利用率。提出了一种硬件加速器[18]来加速Transformer中MHA ResBlock和FFN ResBlock。对于Softmax和LayerNorm等非线性函数,分析和设计了详细的计算流程和硬件结构。[16]研究了fpga上BERT的加速度。为了减少内存占用,作者对BERT的所有参数进行了完全量化,包括权重、激活、比例因子、SoftMax、层归一化等中间结果。FTRANS[13]是一个也适用于BERT的FPGA加速器。提出了一种基于改进的块循环矩阵(BCM)的前馈运算方法。将原有的权值矩阵替换为一个或多个圆形矩阵块,以减少权值存储。它提出了一个支持模型压缩技术的体系结构,并为设计自动化和并行性探索开发了优化算法。

3.2 覆盖处理器

DLA[1]实现了一种特定领域的方法,通过一个轻量级的非常长的指令字网络来覆盖,作者用可参数化互连连接神经网络的核心功能,以实现不同的模型配置。OPU[26]提出了一种基于fpga的通用卷积神经网络覆盖处理器系统。作者提出将卷积运算分解为卷积平坦(CF)和内积(IP)。由于这种分解,处理器可以在同一组模块中实现不同的卷积操作(例如不同的卷积内核大小)。同时,作者定义了细粒度的OPU指令和自动编译器来研究并行化。而Light-OPU[27]和Uni-OPU[28]则在OPU的基础上扩展了架构,分别增加了轻量级cnn和转置cnn。NPE[11]是第一个在可重构设备上专用于自然语言处理(NLP)的覆盖处理器。作者提出了一个可以处理任何非线性函数的系统,通过分段多项式逼近和简单的向量运算。该系统可以适用于所有类型的模型,留下了巨大的设计空间。

4 三层和两层转换结构

从叠加加速器的传统设计步骤中汲取灵感,我们是否有可能在屏蔽底层硬件设计的同时部署神经网络,从而显著减少开发周期和需求?本文基于硬件Vision Transformer模型固定模块模型层变量模块容器层组件层可重构模块和软件的协同优化思想,设计了一个由模型层、容器层和组件层三层组成的架构。以及基于三个级别的2级转换关系。总体结构如图2所示。

Vis-TOP:视觉Transformer叠加处理器_第2张图片

 模型:在这一层,我们将目标网络模型分解为模块,这些模块通常按照软件层实现的功能进行划分。例如,ConVit[3]将自身分为GPSA、FFN和SA模块;SwinTransformer[17]分成分区合并、残差前馈、残差注意模块;可扩展可视化Transformer[19]进一步分为线性投影、Transformer块、最大池等模块。每个模块都有一些超参数来控制这些模块的属性,例如在所有Transformer模型中都存在的位置前馈维数、隐含层维数、词嵌入维数和线性层中的层数等。这些属性极大地影响了相应模块的资源消耗和计算时间。

容器:传统的研究进展实际上是通过“算法”和“计算能力”来实现的。这是一种软硬件分离的系统构建方法,很难直观地体现软硬件协同设计的概念。这也使得实现最佳的操作效率变得困难,因为整体设计的硬方面和软方面是分离的。因此,为了更好地反映软件到硬件以及硬件到软件的转换和兼容性过程,增加了容器层。在这一层,我们提出了指令束,这是一种逻辑结构。它本质上是软件和硬件之间的转换层,主要反映了我们从模型到组件的软硬件转换思想。在这一层中,软件级结构的转换关系位于指令束之上,而硬件级组件的转换关系位于指令束之下。指令包提供了公共和私有扩展,以满足某些特定模型的算法需求。公共指令包提供了一个用于通用操作的计算模块接口;私有指令包为算法特征提供了一个与计算模块的接口。

组件:这一层由固化为硬件逻辑的所有固定尺寸模块组成。要处理的数据维是在设计时定义的,并且具有与网络模型无关的性质。对于一个具体的模型,可以分为两部分,即固定模块和可变模块。固定模块是通用操作模块。这些模块每次都需要固定的时间。通过设置不同的批处理值,可以实现不同规模的计算。变量模块是一个算法计算功能模块。它由非线性功能模块、数据选择模块和数据整理模块组成。这些模块的运行时间与输入数据或参数的大小有关。非线性功能模块需要针对具体的非线性功能进行定制,数据选择模块和数据排列模块需要根据数据块的大小和形状为后续模块设计。

5 硬件体系结构

5.1 总体结构

该硬件结构如图3所示。主要有指令、参数、输入图像三个主要数据及其总线,以及两个主要模块,分别是计算模块、数据选择模块和数据整理模块。

指令有两种类型:模块执行指令和参数设置指令。当模块执行指令发送到指令束表时,指令束表根据模型结构和指令束之间的对应关系选择要执行的低级指令束。尽管相关信息(如维度和通道)由前面的参数设置指令设置,指令束表计算执行次数、数据移动次数和指令束中每个底层模块的存储地址。最后,在寄存器中临时存储控制信号,以控制顺序执行。由于输入图像的大小为224,如果一次性全部取出,效率会受到总线转接率的限制。因此,我们设计了数据选择和数据整理模块来缓解这一现象。该模块对输入图像进行选择和排列,然后通过参数设置指令将输入图像顺序传输到数据总线。通过这种方式,计算和数据传输并行运行。参数通过参数流总线以流的形式到达计算模块。从底层计算的角度来看,所有参数只使用一次,因此参数流法更快。

计算模块是硬件体系结构的核心。根据输入数据传输的特点分为两类,即块模块和流模块。块模块中底层模块的数据之间存在位置关系,如输入特征图中的每个像素都有一定的位置信息。这种对应关系导致计算过程中存在大量的数据依赖和一定的随机访问。相反,来自流模块的底层模块会逐个元素地参与计算,数据总线指令总线内存缓存单元主存指令图像数据寄存器指令束表可配置模块参数参数流总线矩阵乘Softmax层标准化数据选择和数据排列块模块流模块GELU基本矢量操作无位置所有数据之间的关系,在计算中没有计算依赖。换句话说,在计算过程中,数据是按顺序检索的,而不是随机访问。因此,可以以流的形式来执行它们的计算。

Vis-TOP:视觉Transformer叠加处理器_第3张图片

 5.2 存储结构

基于Transformer的可视化模型倾向于通过多维张量来传输和计算输入数据。这种方法存在两个问题。一方面,这种描述方法使不同尺度和维度的数据具有不同的结构。因此,该描述方法在硬件实现上具有模糊性,因为在数据选择时维之间的优先级不统一,例如在进行通道维的操作时,模型会用[, ,] 来描述数据以简化计算。它与[, , ]的描述不一致,这显然与通用设计的概念不一致。另一方面,存在随机读操作和转置操作,导致无法计算的延迟。因此,我们设计了一种新的存储结构来描述数据和参数,以解决第一个问题。在下一节中,我们用数据选择和数据安排来解决第二个问题。这种新的存储结构的整体思想是将高维数据展开,以适应硬件存储的连续存储特性。我们把× × W顺序的数据块并将它们映射到硬件存储结构。数据选择模块沿W维度读取数据,然后沿H和C维度依次读取数据,如图4所示。这种描述方法的转换在解决了硬件实现中的问题的同时保留了软件描述方法的特点。新的存储结构符合我们的三层和两层转换结构的思想,它不改变软件层的数据结构,也不会造成额外的理解负担。在硬件层面上,更符合可重构设备存储结构的特点。

Vis-TOP:视觉Transformer叠加处理器_第4张图片


 5.3 数据选择和数据整理方法

本设计通过向数据选择模块传递9个参数来进行数据选择:

  • 大立方体的长、宽、高(, , )
  • 小立方体的长、宽、高(, , )
  • 小立方体长、宽、高的偏移量(, , )

 此表单也可支持单通道或多通道、单维度或多维选择。通过这些参数,该模块可以查询后续模块所需的数据块。具体请参见算法1。

Vis-TOP:视觉Transformer叠加处理器_第5张图片

5.4 计算模块设计

图5是流模块的硬件实现原理图。该模块的PE设计比块模块简单,因为该模块中的输入数据没有位置关系,我们可以直接根据前面提到的顺序存储结构获取输入数据和参数。输入数据进入矩阵乘法模块,赋值给PE单位的C,其中C为Batch的大小。由于原始参数是多维度,不利于数据存取,我们对参数进行重新排列,通过参数流总线将其依次转换为矩阵乘模块。计算所需的参数以流的形式读取并分配给PEs。每个PE单元得到相应的参数C。最后,将计算结果汇总输出。

Vis-TOP:视觉Transformer叠加处理器_第6张图片

6 实验结果 

6.1 推理时间

在实验中,我们复制了官方的Swin Transformer Tiny模型,patch size为4,window size为7,image size为3×224×224。.对于非线性函数,我们参照pytorch的官方实现实现了SoftMax;利用拟合函数实现Gelu函数 0.5 \times\left(1+\tanh \left(\sqrt{\frac{2}{\pi}}\left(x+0.044715 \times x^{3}\right)\right)\right)减少计算压力;Layer Normalization函数的方差计算部分采用公式 = (2 ) − ()2,尽量避免使用除法。

如表1所示,实验计算了输入为3×224×224图像时的推理时间和各模块的比例。矩阵乘法模块占用了大部分的推理时间,高达70.6%。这反映了Transformer模型的计算密集性,而数据选择和数据整理模块的整体比例达到29.2%,对比这一点,我们的参数流设计大大减少了数据传输过程中的等待时间。在其他三个非线性函数中,Gelu的时间几乎为零,证明了[9]中提出的Gelu函数的有效性。层归一化功能耗时最长。虽然我们使用了一个尽量避免使用除法的方案,但是层归一化的计算复杂度仍然很大,并且仍然有一些情况下除法是不可避免的。本实验的最终推断时间为11.8ms。

表1 每个模块的推理时间

Vis-TOP:视觉Transformer叠加处理器_第7张图片

 6.2 与CPU、GPU、FPGA的比较

我们分别在GPU、CPU和FPGA上做了对比实验。在本次实验中,CPU是Intel(R) Xeon(R) CPU E5-2695 v3 @ 2.30GHz, GPU是Tesla T4,这两个结果都是使用pytorch框架在谷歌的colab上运行得到的。

通过与其他基于可重构器件的工作的对比实验,我们知道,目前还没有研究者将基于Transformer的可视化模型应用到可重构计算领域,因此本文将我们的设计与NLP中的其他Transformer模型进行了比较。FQ-BERT是[16]提出的完全量化BERT。NVU-1024[23]的8位NPE是基于BERT模型的覆盖处理器。基于fpga的FTRANS通过运行RoBERTa提供了一个高效的Transformer模型加速器示例,RoBERTa是经过良好训练的BERT的优化版本,具有相同的模型架构。所有这些都是为BERT或其变体而设计的,BERT具有与Swin Transformer类似的底层算法。考虑到模型的大小和结构,延迟等指标很难横向比较,因此本次实验选择的硬件测量参数为Throughput、DSP Slices utilization和Throughput per DSP。它们的比较效果不受模型大小和结构的影响。

实验结果如表2所示。相比CPU和GPU,我们的吞吐量是CPU的16倍,GPU的1.5倍。这是因为我们对模型的所有操作进行了分类,并为每一种不同类型的操作实现了相应的底层模块。多亏了这一点,我们的设计实现了高度的并行化和一定的定制化。我们的吞吐量是FQ-BERT的3.71倍,但低于FTRANS。由于我们的设计是三层两层的转换结构,相对于定制加速器,Vis-TOP以更细粒度的方式划分模型,底层模块更加通用。这个功能使我们的DSP片利用率比FTRANS低得多。由于独特的软硬件协同设计,资源利用率非常高。从表中可以看出,我们每个DSP的吞吐量是非覆盖处理器设计的10倍以上。这进一步说明了覆盖处理器在资源利用方面的优势。与NPE相比,NPE也是一个覆盖处理器设计,我们展示了更高的模块重用性,在没有任何非线性函数的特殊操作的情况下,每个DSP的吞吐量仍是NPE的2倍。总之,Vis-TOP实现了资源消耗和吞吐量的平衡。

  表2 vis-TOP与CPU、GPU和FPGA相比的吞吐量(推理/秒)。我们还给出了相对于FTRANS的吞吐量,相对于FTRANS的每个DSP片的吞吐量,NPE和FQ-BERT

Vis-TOP:视觉Transformer叠加处理器_第8张图片

7 结论与未来工作

本文提出了一种基于软硬件协同设计的可重构设备覆盖处理器Vis-TOP。除了处理现有基于transformer的可视化模型的部署之外,Vis-TOP不需要重新配置底层硬件体系结构,如果将来出现新的基于transformer的可视化模型,则只需要修改指令或添加私有模块接口。Vis-TOP具有三层两层的转换结构和相应的硬件体系结构。实现了软件对硬件、软件对硬件的转换和兼容性。由于其结构,Vis-TOP具有软件的可编程性和硬件的高并行性,存在较大的扩展空间。同时,Vis-TOP还能满足图像识别环境中的推理延迟和资源消耗需求。通常,vis-TOP是在可重构设备上部署基于transformer的可视化模型的有效解决方案。

在Vis-TOP中,SoftMax、Gelu等非线性功能的设计只是定制模块接口。在今后的工作中,我们将重点研究非线性函数。我们将探索函数拟合的方法,以减少非线性函数的计算成本。

你可能感兴趣的:(论文,Transformer,人工智能,机器学习,transformer,深度学习,计算机视觉)