CN114692820A - 执行神经网络模型的数据处理装置、方法及相关产品 - Google Patents
执行神经网络模型的数据处理装置、方法及相关产品 Download PDFInfo
- Publication number
- CN114692820A CN114692820A CN202011631736.0A CN202011631736A CN114692820A CN 114692820 A CN114692820 A CN 114692820A CN 202011631736 A CN202011631736 A CN 202011631736A CN 114692820 A CN114692820 A CN 114692820A
- Authority
- CN
- China
- Prior art keywords
- filter
- convolution
- convolution kernel
- folding
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Processing (AREA)
Abstract
本披露公开了一种用于执行神经网络模型的数据处理装置、方法及相关产品。该数据处理装置可以作为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案对多维数组的卷积运算进行优化,提高了运算处理效率。
Description
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及一种用于执行神经网络模型的数据处理装置、数据处理方法、芯片和板卡。
背景技术
目前,深度学习(Deep Learning)已经成为机器学习中的重要分支,也大力助推着人工智能(AI)的发展。深度学习的核心技术——深度神经网络(DNN)已在诸多行业有着广泛的应用。
卷积层是神经网络模型中的常用隐含层之一,其通过卷积运算对输入数据进行特征提取。神经网络模型中包含了大量的卷积运算,卷积运算的计算性能极大地影响整个神经网络模型的计算性能。在卷积运算中,对于卷积层的滤波器的各个维度,既存在指令对齐的要求,又存在硬件(例如,并行运算器)对齐的要求。因此,需要对卷积运算进行优化,以提高执行神经网络模型的计算性能。
发明内容
为了至少解决如上所提到的一个或多个技术问题,本披露在多个方面中提出了用于执行神经网络模型的数据处理方案,其通过对卷积层的滤波器进行变换,可以有效提高卷积运算的计算性能。本披露实施例的神经网络模型可以应用于各种领域,诸如图像处理、语音处理、文本处理等等,这些处理例如可以包括但不限于识别和分类。
在第一方面中,本披露提供了一种用于执行神经网络模型的数据处理装置,包括:存储电路,配置用于存储所述神经网络模型的卷积层的折叠滤波器,所述折叠滤波器为原始滤波器经多次卷积步长移动后得到的多个扩展滤波器合成的;以及处理电路,配置用于:利用所述折叠滤波器对输入特征图执行卷积运算以得到中间结果;以及对所述中间结果进行维度重排,以得到输出特征图。
在第二方面中,本披露提供了一种芯片,其包括前述第一方面的任一实施例的数据处理装置。
在第三方面中,本披露提供了一种板卡,其包括前述第二方面的任一实施例的芯片。
在第四方面中,本披露提供了一种由数据处理装置实施的用于执行神经网络模型的方法,所述数据处理装置包括存储电路和处理电路,所述方法包括:所述处理电路利用存储在所述存储电路中的所述神经网络模型的卷积层的折叠滤波器对输入特征图执行卷积运算以得到中间结果,其中所述折叠滤波器为原始滤波器经多次卷积步长移动后得到的多个扩展滤波器合成的;以及所述处理电路对所述中间结果进行维度重排,以得到输出特征图。
通过如上所提供的数据处理装置、芯片、板卡以及由数据处理装置实施的数据处理方法,本披露的方案通过折叠滤波器来优化卷积运算。本披露的实施例尤其适用于原始滤波器的输出通道维度大小较小的情况。在常规卷积运算中,当滤波器的输出通道维度较小时,由于并行运算单元数量对齐的限制,将造成较大的资源浪费。本披露实施例通过将原始滤波器经多次卷积步长移动后得到的多个扩展滤波器合成为一个折叠滤波器,从而可以充分利用可用的并行运算单元,避免造成运算资源的浪费,提高卷积运算在硬件加速时的计算性能。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出本公开实施例的板卡的结构图;
图2是示出本公开实施例的集成电路装置的结构图;
图3是示出本公开实施例的单核计算装置的内部结构示意图;
图4是示出本公开实施例的多核计算装置的内部结构示意图;
图5是示出本公开实施例的处理器核的内部结构示意图;
图6示出了可以应用本披露实施例的示例性卷积运算示例;
图7示出了本披露实施例的数据处理方案的示例性原理图;
图8示出了根据本披露实施例的更详细的滤波器折叠示意图;
图9示出了根据本披露实施例的折叠前后计算过程的示例性比较图;
图10示出了根据本披露实施例的维度转置的示例性示意图;
图11示例性示出了可以实施本披露实施例的数据处理装置的示意性结构图;以及
图12示出了根据本披露实施例的数据处理方法的示例性流程图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能使用的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合附图来详细描述本公开的具体实施方式。
图1示出本公开实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和DRAM 204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本公开的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
DRAM 204用以存储待处理的数据,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核的内部结构示意图。单核计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,单核计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、参数存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责单核计算装置301与DRAM 204间的数据搬运。
图4示出了计算装置201为多核的内部结构示意图。多核计算装置41采用分层结构设计,多核计算装置41作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置41是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图4所示,多核计算装置41包括外部存储控制器401、外设通信模块402、片上互联模块403、同步模块404以及多个集群405。
外部存储控制器401可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块402用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块403将外部存储控制器401、外设通信模块402及多个集群405连接起来,用以在各个模块间传输数据和控制信号。同步模块404是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群405是多核计算装置41的计算核心,在图中示例性地展示4个,随着硬件的发展,本公开的多核计算装置41还可以包括8个、16个、64个、甚至更多的集群405。集群405用以高效地执行深度学习算法。
以集群的层级来看,如图4所示,每个集群405包括多个处理器核(IPU core)406及一个存储核(MEM core)407。
处理器核406在图中示例性地展示4个,本公开不限制处理器核406的数量。其内部架构如图5所示。每个处理器核406类似于图3的单核计算装置301,同样包括三大模块:控制模块51、运算模块52及存储模块53。控制模块51、运算模块52及存储模块53的功用及结构大致与控制模块31、运算模块32及存储模块33相同,不再赘述。需特别说明的是,存储模块53包括输入/输出直接内存访问模块(input/output direct memory access,IODMA)533、搬运直接内存访问模块(move direct memory access,MVDMA)534。IODMA 533通过广播总线409控制NRAM 531/WRAM 532与DRAM 204的访存;MVDMA 534则用以控制NRAM 531/WRAM 532与存储单元(SRAM)408的访存。
回到图4,存储核407主要用以存储和通信,即存储处理器核406间的共享数据或中间结果、以及执行集群405与DRAM 204之间的通信、集群405间彼此的通信、处理器核406间彼此的通信等。在其他实施例中,存储核407具有标量运算的能力,用以执行标量运算。
存储核407包括SRAM 408、广播总线409、集群直接内存访问模块(cluster directmemory access,CDMA)410及全局直接内存访问模块(global direct memory access,GDMA)411。SRAM 408承担高性能数据中转站的角色,在同一个集群405内不同处理器核406之间所复用的数据不需要通过处理器核406各自向DRAM 204获得,而是经SRAM 408在处理器核406间中转,存储核407只需要将复用的数据从SRAM 408迅速分发给多个处理器核406即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线409、CDMA 410及GDMA 411则分别用来执行处理器核406间的通信、集群405间的通信和集群405与DRAM 204的数据传输。以下将分别说明。
广播总线409用以完成集群405内各处理器核406间的高速通信,此实施例的广播总线409支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 408传输到特定几个处理器核406的通信方式,而广播则是将一份数据从SRAM 408传输到所有处理器核406的通信方式,属于多播的一种特例。
CDMA 410用以控制在同一个计算装置201内不同集群405间的SRAM 408的访存。
GDMA 411与外部存储控制器401协同,用以控制集群405的SRAM408到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 408中。从前述可知,DRAM 204与NRAM 431或WRAM432间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 433直接联系DRAM 204与NRAM 431或WRAM 432;第二个渠道是先经由GDMA 411使得数据在DRAM 204与SRAM 408间传输,再经过MVDMA 534使得数据在SRAM 408与NRAM 431或WRAM 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 204与NRAM 431或WRAM432间的通信通过第二个渠道可能更有效率。本公开的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 411的功能和IODMA 533的功能可以整合在同一部件中。本公开为了方便描述,将GDMA 411和IODMA 533视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本公开类似,即属于本公开的保护范围。进一步地,GDMA 411的功能、IODMA 533的功能、CDMA 410的功能、MVDMA 534的功能亦可以由同一部件来实现。
神经网络模型通常包括输入层、卷积层、激活函数、池化层、全连接层等,少则数层,多则上百层,每层执行一个算子,例如卷积层执行卷积算子,有多少层便需要执行多少算子。
神经网络模型的训练是通过输入训练样本来调整各层的参数,使得神经网络模型计算出来的结果与真实结果尽量接近。神经网络模型训练包括正向传播及反向传播,正向传播是基于现有的模型,输入训练样本通过神经网络模型的各层计算,将输入的特征图逐步提取为抽象特征,而反向传播是根据正向传播结果和真实值计算而得的损失函数,采用梯度下降法,通过链式法则计算出损失函数对每个参数的偏导,来更新参数。再利用更新后的参数进行训练,如此重复多次,最终使得正向传播的计算结果符合预期。使用训练好的神经网络模型对真实环境的输入进行正向运算以完成设定任务,则称为神经网络模型的推理。
本披露实施例基于前述的硬件环境,提供一种用于执行神经网络模型的数据处理方案,更具体地是对神经网络模型中的卷积运算进行优化的方案。
图6示出了可以应用本披露实施例的示例性卷积运算示例。如图所示,神经网络模型中的卷积层可以通过对输入特征图应用滤波器做卷积处理,从而进行特征提取。
图中示例性示出了大小为6×6×3的输入特征图,其可以表示3个6×6大小的特征图(即6×6×3的三维矩阵),分别表示三个不同的特征。此示例中特征图的宽度W为6,高度H也为6。输入特征图的数量也可以称为输入通道数Ci。例如图中示例输入有3个特征图,也称为3个特征通道。
图中还示例性示出了大小为2×3×3×3的滤波器,其可以表示2个3×3×3大小的卷积核(即2个3×3×3的三维矩阵),每个卷积核又具有3个不同的3×3大小的卷积核,对应输入的3个不同的特征图。立体卷积核的数量可以称为输出通道数Co,此示例中为2。每个立体卷积核中,二维卷积核的数量可以称为输入通道数Ci,其与输入特征图的通道数一致。每个二维卷积核具有相应的宽度Kw和高度Kh,在此示例中Kw和Kh均为3。
输入特征图与滤波器的卷积结果输出2个4×4大小的特征图。其中,输入特征图与上方的立体卷积核的卷积结果得到上方的1个4×4的输出特征图,输入特征图与下方的立体卷积核的卷积结果得到下方的1个4×4的输出特征图。输出特征图中每个位置上的值由每个输入特征图的对应区块和对应卷积核做二维卷积运算之后再加和得到。例如,图中示出了上方的输出特征图上(0,0)位置的值由输入特征图中黑色立方体框出的区块与上方的立体卷积核进行二维卷积运算得到3个值,再加和得到最终值。为了得到其他位置的输出,可以在输入特征图上移动卷积核的位置。在图中示例中,卷积步长(Sx,Sy)为(1,1),当横向(宽度方向)向右或纵向(高度方向)向下移动一格后做卷积运算,可以分别得到上方的输出特征图上(0,1)或(1,0)位置的值。
从上面的描述可知,在神经网络的一个卷积层中,有一组输入特征图,共包含H×W×Ci个信息,其中H和W分别是输入特征图的高度和宽度,Ci是输入特征图的个数,也称为输入通道数。卷积层有Ci×Co个Kh×Kw大小的卷积核,其中Ci是输入通道数,Co是输出特征图的个数(或输出通道数),Kh和Kw分别是卷积核的高度和宽度。输出特征图包含Ho×Wo×Co个信息,其中Ho和Wo分别是输出特征图的高度和宽度,Co是输出通道数。此外,在卷积运算中,还会涉及到卷积步长(Sx,Sy),卷积步长的大小会影响输出特征图的尺寸。
为了加速神经网络模型的计算,通常会采用多个运算单元进行并行运算。例如,图3中的运算模块32或图5中的运算模块52可以包括多个卷积专用计算单元(或称卷积单元),每个卷积单元上例如能够进行完整的(H,W,Ci)维度的计算。换言之,可以将Co个(H,W,Ci)维度的计算分布在Co个卷积单元上进行并行计算,从而提升计算速度。通常,卷积单元的数量是固定的,如果Co维度的大小较小,则会存在空闲的卷积单元,不能充分利用计算资源。在一些情况下,有可能会要求将Co维度的大小对齐到卷积单元的数量,以便统一调度。然而,当Co维度较小时,这种对齐限制会引入无效计算,造成大量的资源浪费。
鉴于此,本披露实施例基于前述的硬件环境,提供一种用于执行神经网络模型的数据处理方案,其针对卷积层中的Co维度进行优化,在满足上述对齐限制的同时,降低资源浪费。
在本披露实施例中,所涉及的多维数据的维度表征为(N,H,W,C)或(Co,H,W,Ci),其代表了数据在存储器中的存储顺序。可以理解,虽然多维数据具有多个维度,但是因为存储器的布局始终是一维的,因此多维数据与存储器上的存储顺序之间存在对应关系。多维数据通常被分配在连续的存储空间中,也即可以将多维数据进行一维展开,按顺序存储在存储器上。例如,在本披露实施例中,按照低维度(此处Ci为最低维度)优先方式,进行顺序存储。相邻的维度是指多维数据的维度信息表示中相互紧挨着的维度,例如,W和Ci相邻,相邻的维度也可以称为连续的维度。
图7通过一个具体示例示出了本披露实施例的数据处理方案的示例性原理图。假设用于执行卷积运算的卷积单元的数量为Th2。基于不同的硬件设计,Th2可以有不同的数值,例如32、64、128等。在下面的示例中,以Th2=64为例进行描述。根据硬件的对齐要求,需要将滤波器的Co维度对齐到Th2,也即对齐到64。
图中左边示出了卷积层的原始滤波器,其例如表示为4×3×3×64,也即其输出通道数Co为4,输入通道数Ci为64,每个卷积核大小为3×3。此外,原始滤波器的卷积步长为(Sx,Sy)=(1,1)。从图中可以看出,原始滤波器的Co维度远远小于硬件的对齐要求(64)。按照常规的处理方式,将对Co维度进行补零以对齐到64。从4对齐到64,需要增加非常多的冗余计算,造成资源的浪费。
图中右边示出了根据本披露实施例折叠后的折叠滤波器,其例如表示为64×6×6×64,也即其输出通道数Co’为64,输入通道数与原始滤波器相同,均为64,每个卷积核大小为6×6。此外,折叠滤波器的卷积步长变为(Sx’,Sy’)=(4,4)。可以看出,折叠滤波器的输出通道数已经对齐到硬件的对齐要求(64),因此,此时可以充分利用卷积单元进行运算处理。
在上述折叠处理中,折叠滤波器为原始滤波器经多次卷积步长移动后得到的多个扩展滤波器合成的。上述折叠处理基于如下考虑:若按照原始计算方式,单次计算会浪费一些卷积单元,因此可以将下次计算、下下次计算等等挪到单次计算上,从而可以充分利用卷积单元。换个角度,本披露实施例的方案相当于将多次卷积步长移动对应的计算(或者说多个时间上的计算)折叠到一次卷积步长上(或一个时间上)。
在二维卷积中,卷积步长包括卷积核宽度方向上的横向卷积步长Sx,以及卷积核高度方向上的纵向卷积步长Sy。任一方向上移动一次卷积步长,可以得到一次计算,这一次计算对应于一个滤波器。这个滤波器是原始滤波器由于移动一次卷积步长而得到的,为了在后面与其他类似生成的滤波器进行合成,其卷积核的宽度和高度需要根据卷积步长而相应地扩展,在此称为扩展滤波器。
假设将原始滤波器在卷积核宽度方向上移动Nw-1次横向卷积步长,在卷积核高度方向上移动Nh-1次纵向卷积步长,则可以得到N个扩展滤波器,其中N=Nw×Nh,Nw和Nh为自然数。这N个扩展滤波器在输出通道Co维度上可以合成一个折叠滤波器。
仍然以图7中的示例为例,原始滤波器的Co为4,根据硬件对齐要求,需要对齐到64,因此,需要64÷4=16个扩展滤波器来合成一个折叠滤波器。
图8示出了根据本披露实施例的更详细的滤波器折叠示意图。图中示出了前述示例中需要的16个扩展滤波器。图中深色部分示出了原始滤波器的卷积核。从图中可以看出,这16个扩展滤波器是通过在宽度方向上移动3次Sx,在高度方向上移动3次Sy得到的。也即,在宽度方向上翻了4倍,在高度反向上也翻了4倍,由此,总共得到16个扩展滤波器。
为了将这16个扩展滤波器在输出通道Co维度上合成为一个折叠滤波器,需要调整它们的形状。如图所示,对除了原始滤波器占据的深色部分之外的区域可以进行补零,从而使得16个扩展滤波器的宽度和高度一致。每个扩展滤波器(6×6的卷积核)进行卷积计算的值与原始滤波器(3×3的卷积核)进行卷积计算的值是一样的。
接着,就可以将上述16个(4,6,6,64)的扩展滤波器在输出通道Co维度上折叠为一个(16*4,6,6,64)的折叠滤波器。此时,折叠滤波器的输出通道Co’=16*4=64,也即等于卷积单元的数量,从而符合硬件对齐要求,可以实现充分利用卷积单元的目的。
从图8的折叠过程中可以看出,折叠滤波器的输出通道数相对于原始滤波器的输出通道数是成倍数的增长,因此本披露实施例的折叠方案尤其适合于原始滤波器的输出通道数Co较小的情况,例如Co不超过第一阈值Th1,第一阈值Th1小于第二阈值Th2(也即对齐要求)。在一些实施例中,第一阈值Th1≤Th2/2。实践结果表明,Co越小,相较于现有的算法,可提升空间越大。
从图8的折叠过程中还可以看出,基于原始滤波器的各个参数以及硬件对齐要求,可以确定出折叠滤波器的各个参数。
首先,可以基于原始滤波器的输出通道数量Co和对齐要求Th2确定总折叠倍数N。
在一些实施例中,可以按如下确定总折叠倍数N:
N=Th2/Ca (1)
其中Ca是Co对齐到最近的Th2/2n的值,n是自然数。
如前所述,本披露的实施例通过成倍的折叠,将Co对齐到指定数值Th2。当Th2是Co的2n倍时,二者直接相除可以得到需要折叠的总倍数。例如,在前述示例中,Co=4,因此N=64/4=16倍。当Th2不是Co的2n倍时,需要先将Co对齐到最近的Th2/2n的值。例如,若Th2为64,则Th2/2n包括32、16、8、4和2,Co需要对齐到这些数中最近的那个值。例如,Co=3,则需要对齐到4;若Co=5,则需要对齐到8,等等。对齐之后,再去除Th2,则可以得到总折叠倍数N。
接着,在确定了总折叠倍数N之后,可以将其拆分为卷积核宽度方向折叠倍数Nw和卷积核高度方向折叠倍数Nh。可以按照各种不同的规则进行倍数拆分,以实现不同的优势。
在一个实施例中,可以将折叠倍数优先拆分到卷积核宽度方向。如后面将描述的,利用折叠滤波器进行卷积运算得到的是中间结果,其还需要进行维度重排以得到最终结果。当折叠发生在卷积核宽度方向上时,维度重排很简单,只需要调整中间结果的维度表示,或称为维度重组,无需任何其他处理。因此,优先将折叠倍数拆分到卷积核宽度方向,可以简化后面的处理。例如,上述示例中,总折叠倍数16可以拆分为宽度16倍,高度1倍,由此可以简化后面的结果处理。此时,折叠滤波器的卷积核尺寸为3×18。在另一实现中,将上述示例中的总折叠倍数16拆分为宽度8倍,高度2倍,此时折叠滤波器的卷积核尺寸为4×10。可以看出,不同的拆分方式将会影响折叠滤波器的卷积核尺寸。
在另一实施例中,可以将折叠倍数优先拆分到卷积步长更小的方向。从前面的折叠过程可以看出,折叠滤波器的卷积核尺寸与原始滤波器的卷积步长相关,卷积步长越大,折叠滤波器的卷积核膨胀得就越大。因此,将折叠倍数优先拆分到卷积步长更小的方向,有利于减小卷积核的膨胀,从而降低运算量。举个例子,假设原始滤波器的卷积核为3×3,(Sx,Sy)=(1,3),总折叠倍数为16可以拆分为宽度16倍,高度1倍,则折叠滤波器的卷积核尺寸为3×18。如果总折叠倍数16拆分为宽度8倍,高度2倍,此时折叠滤波器的卷积核尺寸为6×10。如果总折叠倍数16拆分为宽度4倍,高度4倍,则折叠滤波器的卷积核尺寸为12×6。
在又一实施例中,可以将折叠倍数平均拆分到卷积核宽度方向和卷积核高度方向。例如,前面参考图7和图8的示例中,将总折叠倍数16平均拆分为宽度4倍,高度4倍。
在再一实施例中,可以将折叠倍数拆分成使得折叠滤波器的卷积核尺寸最小,由此可以最大限度减少增加的冗余运算。
基于上述各种规则,在一些实施例中,可以按如下方式拆分总折叠倍数N:
Nh=N/Nw (3)
确定了卷积核宽度方向折叠倍数Nw和高度方向折叠倍数Nh之后,可以基于Nw、Nh以及原始滤波器的卷积步长,确定折叠滤波器的卷积步长;以及基于Nw、Nh以及原始滤波器的卷积核和卷积步长,确定折叠滤波器的卷积核大小。
在一些实施例中,可以按如下确定折叠滤波器的卷积步长:
S′x=Sx*Nw (4)
Sy′=Sy*Nh (5)
其中,Sx、Sy分别为原始滤波器的横向卷积步长和纵向卷积步长,S′x、Sy′分别为折叠滤波器的横向卷积步长和纵向卷积步长。
在一些实施例中,可以按如下确定折叠滤波器的卷积核大小:
kw′=kw+(Nw-1)*Sx (6)
kh′=kh+(Nh-1)*Sy (7)
其中,kw、kh分别为原始滤波器的卷积核宽度和卷积核高度,kw′、kh′分别为折叠滤波器的卷积核宽度和卷积核高度。
由此,上面描述了如何根据对齐要求来设计折叠滤波器的各个参数。
图9示出了根据本披露实施例的折叠前后计算过程的示例性比较图。
从前面的折叠过程可以看出,折叠滤波器的输入通道维度与原始滤波器的输入通道维度一致,因此,不需要对输入特征图进行任何处理即可直接与折叠滤波器进行卷积运算。
如图所示,假设输入特征图为(1,16,16,64),也即64个16×16的特征图。图中上方示出了采用原始滤波器(4,3,3,64),卷积步长(Sx,Sy)=(1,1)进行卷积运算后得到的结果,输出特征图为(1,14,14,4),也即4个14×14的特征图,图中用深色方块表示的区域。本领域技术人员可以理解,为了图示清楚起见,未画出Ci维度上的数据,仅通过数值示意。
与之相比,图中下方示出了采用折叠滤波器(64,6,6,64),卷积步长(Sx’,Sy’)=(4,4)进行卷积运算后得到的结果,输出特征图为(1,4,4,64),也即64个4×4的特征图。
从图中对比可以看出,尽管每个扩展滤波器(6×6的卷积核)进行卷积计算的值与原始滤波器(3×3的卷积核)进行卷积计算的值是一样的,但是由于将多次卷积步长的运算放到一次进行运算,因此数据值的位置会发生变化,或者说数据值在维度上进行了重排。可以将折叠滤波器对输入特征图执行卷积运算得到的中间结果再次进行维度重排,来得到最终的输出特征图,从而与原始滤波器的运算结果完全一致。中间结果的维度例如可以表示为(N,ceil(Ho/Nh),ceil(Wo/Nw),Nh*Nw*Ca),其中ceil()表示向上取整函数,Ca是Co对齐到最近的Th2/2n的值。例如,对于图中的示例,Ca=Co=4,Nh=Nw=4,ceil(Ho/Nh)=ceil(14/4)=4,ceil(Wo/Nw)=ceil(14/4)=4。由于滤波器折叠导致的卷积核膨胀和卷积步长增大,以及取决于输入特征图的大小,在折叠后的卷积运算中可能会存在一些冗余计算。当将中间结果进行维度重排后,这些冗余计算会出现在真正所需结果的最外侧,具体为最右侧和最下侧。例如,对于图中的示例,中间结果(1,4,4,64)经过维度重排后,可以得到(1,16,16,4),其相比于原始结果(1,14,14,4)多了一些冗余区域,如图中反“L”型的白色方块区域所表示的。此时,只需去除这些冗余区域即可。
从前面的描述可知,折叠可以分布在卷积核的宽度方向上和/或高度方向上。不同方向上的折叠,会带来不同的维度重排结果,因此需要不同的处理方式。在下面的描述中,为了简单起见,在表述上未考虑上面的冗余区域。然而,本领域技术人员根据本文的描述可以理解,对于存在冗余区域的情况,同样可以参考下面的描述进行维度重排,之后再执行冗余去除即可。
在一个实施例中,当在折叠时只进行了卷积核宽度W方向上的折叠时,也即扩展滤波器仅包含由原始滤波器在卷积核宽度W方向上移动得到的扩展滤波器时,可以直接对中间结果进行维度重组,来得到输出特征图。
前面提到在本披露的实施例中,所涉及的多维数据的维度表征为(Co,H,W,Ci),也即数据在存储器中的存储顺序是Co、H、W、Ci,也即以Ci维度为最低维度。本领域技术人还可以理解,多维数据中相邻维度进行拆分或合并,不影响该多维数据的各数据元素在存储器中的位置。
在本披露实施例中,基于卷积运算的特性,W和Ci维度是维度相邻或维度连续的,因此,若只进行了W方向的折叠,则此时可以将中间结果(N,Ho,Wo/Nw,Nw*Co)直接视为(N,Ho,Wo,Co)。也即,可以将W和Ci维度从(Wo/Nw,Nw*Co)重组为(Wo,Co)。这种重组不影响中间结果的各个数据元素在存储器中的存储位置。
在另一个实施例中,当在折叠时只进行了卷积核高度H方向上的折叠时,也即扩展滤波器仅包含由原始滤波器在卷积核高度H方向上移动得到的扩展滤波器时,需要对中间结果进行维度转置,以得到输出特征图。维度转置会改变多维数据的各数据元素在存储器中的位置。
具体地,可以将中间结果(N,Ho/Nh,Wo,Nh*Co)的Co维度上的从(Co,(Nh-1)*Co]的特征转置回H维度,从而得到(N,Ho,Wo,Co)。
图10示出了根据本披露实施例的维度转置的示例性示意图。
如图10所示,假设Nh=4,也即左边的中间结果在Co维度上包括了4倍的H方向上的特征,分别为Co0、Co1、Co2和Co3。此时,可以在Co维度上保留Co0特征,将其余的Co1、Co2和Co3特征通过维度转置,转移到H维度上,如右边的最终结果所示。
在又一个实施例中,当在折叠时同时进行了卷积核宽度W方向上和高度H方向上的折叠时,也即扩展滤波器既包含由原始滤波器在卷积核宽度方向上移动得到的扩展滤波器,又包含由原始滤波器在卷积核高度方向上移动得到的扩展滤波器时,可以综合前述两个实施例对中间结果进行处理。
在一种实现中,可以先对中间结果进行维度重组,再进行维度转置,以得到输出特征图。具体地,可以先将中间结果(N,Ho/Nh,Wo/Nw,Nh*Nw*Co)看做(N,Ho/Nh,Wo,Nh*Co),也即将Co维度上的由W方向折叠过来的特征看成W方向上的特征。接着,再对其进行维度转置操作,将Co维度上的从(Co,(Nh-1)*Co]特征转置到高度H维度上,从而得到(N,Ho,Wo,Co)。
在另一种实现中,可以先对中间结果进行维度转置,再进行维度重组,以得到输出特征图。
具体地,可以先对中间结果(N,Ho/Nh,Wo/Nw,Nh*Nw*Co)进行维度转置操作。例如,仍然参考图10,先将Co维度上的Co1、Co2和Co3通过维度转置转移到H维度上,不过此处Co0=Co1=Co2=Co3=Nw*Co。维度转置后,中间结果变为(N,Ho,Wo/Nw,Nw*Co)。然后,再将每个Co0、Co1、Co2和Co3看做Nw个Co,从而得到(N,Ho,Wo,Co)。
上面描述了根据本披露实施例的生成折叠滤波器的方案。在一些实施例中,该折叠滤波器可以是离线生成的。例如,在利用神经网络模型进行推理的过程中,可以利用预先布置的、离线生成的折叠滤波器与输入特征图执行卷积运算,以进行推理过程。在另一些实施例中,该折叠滤波器可以是在线生成的。例如,在对神经网络模型进行训练的过程中,可以在线对卷积层的滤波器进行折叠,然后与训练数据执行卷积运算,以进行训练过程。
无论在哪个过程中利用本披露实施例的折叠滤波器,通过折叠实现Co维度对齐可以极大地优化卷积运算的计算量。下面针对卷积计算量方面,对本披露实施例的方案与现有卷积运算的性能进行比较。
令P表示卷积计算量,Aci表示Ci对齐后的值,ACO表示Co对齐后的值,
则P=n*Aci*ACO*Ho*Wo*kw*kh (8)
采用NHWC维度摆放顺序的硬件由于Ci维度在最低维,且向量指令对齐的要求,多需要对齐到Aci,故Aci针对的是向量指令对齐的要求;人工智能计算加速硬件通常有多个并行的高性能的卷积计算单元,故ACO针对的是卷积核Co维度对齐的要求,其值为高性能并行计算单元的数目。
优化前,现有卷积运算的计算量为:
Pbefore=n*Aci*ACO*Ho*Wo*kw*kh (9)
采用本披露实施例的方案优化后,卷积运算的计算量为:
则经过Co折叠后性能的优化率为:
以前面参考图7-图8描述的示例为例,
优化前,Pbefore=1*64*64*ho*wo*3*3 (Sx,Sy=1,1)
优化后,Pafter=1*64*64*(ho/4)*(wo/4)*6*6 (Sx,Sy=4,4)
=1*64*64*ho*wo*3*3*(1/4)
减少的卷积计算单元的卷积计算量为75%。
从上面的计算量比较可知,本披露实施例提供的折叠滤波器方案能够有效地节省卷积单元的计算量,从而提高卷积运算的计算性能。
本披露实施例还提供了用于执行神经网络模型的数据处理装置,以及由该数据处理装置实施的用于执行神经网络模型的方法。
图11示例性示出了可以实施本披露实施例的数据处理装置的示意性结构图。如图11所示,数据处理装置1100包括处理电路1110以及存储电路1120。
处理电路1110负责处理数据处理装置1100上的各种功能,包括但不限于控制、解码、运算等。处理电路1110例如可以包括图3中的控制模块31和/或运算模块32。
在一些实施例中,处理电路1110可以配置用于利用本披露实施例的折叠滤波器对输入特征图执行卷积运算以得到中间结果;以及对中间结果进行维度重排,以得到输出特征图。
存储电路1120可以用于存储或搬运相关数据,其例如可以是图3或图5所示的各种RAM,或称片上缓存。在一些实施例中,存储电路1120可以配置用于存储神经网络模型的卷积层的折叠滤波器。该折叠滤波器为原始滤波器经多次卷积步长移动后得到的多个扩展滤波器合成的。
在一些实施例中,数据处理装置1100可以配置用于执行神经网络模型的训练过程。此时,处理电路1110可以配置成在训练时,在线对神经网络模型的卷积层的滤波器进行本披露实施例的折叠处理。然后利用得到的折叠滤波器对训练数据执行卷积运算,以进行训练过程。处理电路1110执行的具体的折叠处理过程可以参考前文的描述,此处不再赘述。
在另一些实施例中,数据处理装置1100可以配置用于执行神经网络模型的推理过程。此时,处理电路1110可以配置成直接利用存储电路1120中已经存储的折叠滤波器来对输入神经元执行卷积运算,以进行推理过程。
利用折叠滤波器执行卷积运算得到的中间结果需要进行一定的维度重排处理,以得到最终的输出特征图。具体的重排处理操作可以参考前文描述,此处不再重复。
图12示出了根据本披露实施例的数据处理方法的示例性流程图。
如图所示,数据处理方法1200包括步骤1210,处理电路利用存储在存储电路中的神经网络模型的卷积层的折叠滤波器对输入特征图执行卷积运算以得到中间结果。其中,折叠滤波器为原始滤波器经多次卷积步长移动后得到的多个扩展滤波器合成的。
接着,在步骤1220,处理电路对中间结果进行维度重排,以得到输出特征图。
本领域技术人员可以理解,前面结合附图描述的本披露实施例的滤波器折叠方法、中间结果的维度重排等处理可以同样应用于图11的数据处理装置和图12的数据处理方法,因此不再进行重复描述。
本披露还提供了一种芯片,其可以包括前面结合附图描述的任一实施例的数据处理装置。进一步地,本披露还提供了一种板卡,该板卡可以包括前述芯片。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
Claims (32)
1.一种用于执行神经网络模型的数据处理装置,包括:
存储电路,配置用于存储所述神经网络模型的卷积层的折叠滤波器,所述折叠滤波器为原始滤波器经多次卷积步长移动后得到的多个扩展滤波器合成的;以及
处理电路,配置用于:
利用所述折叠滤波器对输入特征图执行卷积运算以得到中间结果;以及
对所述中间结果进行维度重排,以得到输出特征图。
2.根据权利要求1所述的数据处理装置,其中所述折叠滤波器由所述处理电路按如下方式生成:
将所述原始滤波器在卷积核宽度方向上移动Nw-1次横向卷积步长,和/或在卷积核高度方向上移动Nh-1次纵向卷积步长,得到N个扩展滤波器,其中N=Nw×Nh,Nw和Nh为自然数;以及
将所述N个扩展滤波器在输出通道维度上合成一个折叠滤波器。
3.根据权利要求2所述的数据处理装置,其中所述原始滤波器的输出通道数量不超过第一阈值Th1,所述折叠滤波器的输出通道数量等于第二阈值Th2,其中第一阈值Th1小于第二阈值Th2。
4.根据权利要求3所述的数据处理装置,其中所述处理电路进一步用于:
基于原始滤波器的输出通道数量Co和所述第二阈值Th2确定总折叠倍数N;
将所述总折叠倍数N拆分成卷积核宽度方向折叠倍数Nw和卷积核高度方向折叠倍数Nh;
基于Nw、Nh以及原始滤波器的卷积步长,确定所述折叠滤波器的卷积步长;以及
基于Nw、Nh以及原始滤波器的卷积核和卷积步长,确定所述折叠滤波器的卷积核大小,所述卷积核大小对应于所述扩展滤波器的卷积核大小。
5.根据权利要求4所述的数据处理装置,其中所述处理电路进一步配置用于按如下确定总折叠倍数N:
N=Th2/Ca,其中Ca是Co对齐到最近的Th2/2n的值,n是自然数。
6.根据权利要求4-5任一所述的数据处理装置,其中所述处理电路进一步配置用于按以下任一规则或规则组合来拆分所述总折叠倍数N:
优先拆分到卷积核宽度方向;
优先拆分到卷积步长更小的方向;
平均拆分到卷积核宽度方向和卷积核高度方向;或
拆分成使得所述折叠滤波器的卷积核尺寸最小。
7.根据权利要求4-6任一所述的数据处理装置,其中所述处理电路进一步配置用于按如下确定所述折叠滤波器的卷积步长:
S′x=Sx*Nw
Sy′=Sy*Nh
其中,Sx、Sy分别为原始滤波器的横向卷积步长和纵向卷积步长,S′x、Sy′分别为折叠滤波器的横向卷积步长和纵向卷积步长。
8.根据权利要求4-7任一所述的数据处理装置,其中所述处理电路进一步配置用于按如下确定所述折叠滤波器的卷积核大小:
kw′=kw+(Nw-1)*Sx
kh′=kh+(Nh-1)*Sy
其中,Sx、Sy分别为原始滤波器的横向卷积步长和纵向卷积步长,kw、kh分别为原始滤波器的卷积核宽度和卷积核高度,kw′、kh′分别为折叠滤波器的卷积核宽度和卷积核高度。
9.根据权利要求1-8任一所述的数据处理装置,其中所述处理电路进一步配置用于:
当所述扩展滤波器仅包含由所述原始滤波器在卷积核宽度方向上移动得到的扩展滤波器时,对所述中间结果进行维度重组,以得到输出特征图。
10.根据权利要求1-8任一所述的数据处理装置,其中所述处理电路进一步配置用于:
当所述扩展滤波器包含由所述原始滤波器在卷积核高度方向上移动得到的扩展滤波器时,对所述中间结果进行维度转置,以得到输出特征图。
11.根据权利要求1-8任一所述的数据处理装置,其中所述处理电路进一步配置用于:
当所述扩展滤波器既包含由所述原始滤波器在卷积核宽度方向上移动得到的扩展滤波器,又包含由所述原始滤波器在卷积核高度方向上移动得到的扩展滤波器时,对所述中间结果进行维度重组和维度转置,以得到输出特征图。
12.根据权利要求10或11所述的数据处理装置,其中所述处理电路进一步配置用于:
将所述中间结果的输出通道维度上的特征转置到高度维度上。
13.根据权利要求3-12任一所述的数据处理装置,其中所述第二阈值Th2基于所述处理电路中的卷积运算单元的数量来确定,并且所述第一阈值Th1≤Th2/2。
14.根据权利要求1-13任一所述的数据处理装置,其中所述原始滤波器的输入通道数量等于所述折叠滤波器的输入通道数量。
15.根据权利要求1-14任一所述的数据处理装置,其中所述折叠滤波器是离线生成的或在线生成的。
16.一种芯片,其特征在于,所述芯片包括如权利要求1-15任一所述的数据处理装置。
17.一种板卡,其特征在于,所述板卡包括权利要求16所述的芯片。
18.一种由数据处理装置实施的用于执行神经网络模型的方法,所述数据处理装置包括存储电路和处理电路,所述方法包括:
所述处理电路利用存储在所述存储电路中的所述神经网络模型的卷积层的折叠滤波器对输入特征图执行卷积运算以得到中间结果,其中所述折叠滤波器为原始滤波器经多次卷积步长移动后得到的多个扩展滤波器合成的;以及
所述处理电路对所述中间结果进行维度重排,以得到输出特征图。
19.根据权利要求18所述的方法,其中所述折叠滤波器由所述处理电路按如下方式生成:
将所述原始滤波器在卷积核宽度方向上移动Nw-1次横向卷积步长,和/或在卷积核高度方向上移动Nh-1次纵向卷积步长,得到N个扩展滤波器,其中N=Nw×Nh,其中Nw和Nh为自然数;以及
将所述N个扩展滤波器在输出通道维度上合成一个折叠滤波器。
20.根据权利要求19所述的方法,其中所述原始滤波器的输出通道数量不超过第一阈值Th1,所述折叠滤波器的输出通道数量等于第二阈值Th2,其中第一阈值Th1小于第二阈值Th2。
21.根据权利要求20所述的方法,进一步包括:
所述处理电路基于原始滤波器的输出通道数量Co和所述第二阈值Th2确定总折叠倍数N;
将所述总折叠倍数N拆分成卷积核宽度方向折叠倍数Nw和卷积核高度方向折叠倍数Nh;
基于Nw、Nh以及原始滤波器的卷积步长,确定所述折叠滤波器的卷积步长;以及
基于Nw、Nh以及原始滤波器的卷积核和卷积步长,确定所述折叠滤波器的卷积核大小,所述卷积核大小对应于所述扩展滤波器的卷积核大小。
22.根据权利要求21所述的方法,进一步包括:
所述处理电路按如下确定总折叠倍数N:
N=Th2/Ca,其中Ca是Co对齐到最近的Th2/2n的值,n是自然数。
23.根据权利要求21-22任一所述的方法,进一步包括:
所述处理电路按以下任一规则或规则组合来拆分所述总折叠倍数N:
优先拆分到卷积核宽度方向;
优先拆分到卷积步长更小的方向;
平均拆分到卷积核宽度方向和卷积核高度方向;或
拆分成使得所述折叠滤波器的卷积核尺寸最小。
24.根据权利要求21-23任一所述的方法,进一步包括:
所述处理电路按如下确定所述折叠滤波器的卷积步长:
S′x=Sx*Nw
Sy′=Sy*Nh
其中,Sx、Sy分别为原始滤波器的横向卷积步长和纵向卷积步长,S′x、Sy′分别为折叠滤波器的横向卷积步长和纵向卷积步长。
25.根据权利要求21-24任一所述的方法,进一步包括:
所述处理电路按如下确定所述折叠滤波器的卷积核大小:
kw′=kw+(Nw-1)*Sx
kh′=kh+(Nh-1)*Sy
其中,Sx、Sy分别为原始滤波器的横向卷积步长和纵向卷积步长,kw、kh分别为原始滤波器的卷积核宽度和卷积核高度,kw′、kh′分别为折叠滤波器的卷积核宽度和卷积核高度。
26.根据权利要求18-25任一所述的方法,其中对所述中间结果进行维度重排包括:
当所述扩展滤波器仅包含由所述原始滤波器在卷积核宽度方向上移动得到的扩展滤波器时,对所述中间结果进行维度重组,以得到输出特征图。
27.根据权利要求18-25任一所述的方法,其中对所述中间结果进行维度重排包括:
当所述扩展滤波器包含由所述原始滤波器在卷积核高度方向上移动得到的扩展滤波器时,对所述中间结果进行维度转置,以得到输出特征图。
28.根据权利要求18-25任一所述的方法,其中对所述中间结果进行维度重排包括:
当所述扩展滤波器既包含由所述原始滤波器在卷积核宽度方向上移动得到的扩展滤波器,又包含由所述原始滤波器在卷积核高度方向上移动得到的扩展滤波器时,对所述中间结果进行维度重组和维度转置,以得到输出特征图。
29.根据权利要求27或28所述的方法,其中对所述中间结果进行维度转置包括:
将所述中间结果的输出通道维度上的特征转置到高度维度上。
30.根据权利要求20-29任一所述的方法,其中所述第二阈值Th2基于所述处理电路中的卷积运算单元的数量来确定,并且所述第一阈值Th1≤Th2/2。
31.根据权利要求18-30任一所述的方法,其中所述原始滤波器的输入通道数量等于所述折叠滤波器的输入通道数量。
32.根据权利要求18-31任一所述的方法,其中所述折叠滤波器是离线生成的或在线生成的。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011631736.0A CN114692820A (zh) | 2020-12-31 | 2020-12-31 | 执行神经网络模型的数据处理装置、方法及相关产品 |
PCT/CN2021/143160 WO2022143916A1 (zh) | 2020-12-31 | 2021-12-30 | 执行神经网络模型的数据处理装置、方法及相关产品 |
EP21914646.1A EP4273751A1 (en) | 2020-12-31 | 2021-12-30 | Data processing apparatus and method for executing neural network model, and related products |
KR1020227046207A KR20230017875A (ko) | 2020-12-31 | 2021-12-30 | 신경망 모델을 수행하는 데이터 처리 장치, 방법 및 관련 제품 |
JP2022581659A JP7495533B2 (ja) | 2020-12-31 | 2021-12-30 | ニューラルネットワークモデルを実行するデータ処理装置、方法及び関連製品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011631736.0A CN114692820A (zh) | 2020-12-31 | 2020-12-31 | 执行神经网络模型的数据处理装置、方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114692820A true CN114692820A (zh) | 2022-07-01 |
Family
ID=82135034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011631736.0A Pending CN114692820A (zh) | 2020-12-31 | 2020-12-31 | 执行神经网络模型的数据处理装置、方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114692820A (zh) |
-
2020
- 2020-12-31 CN CN202011631736.0A patent/CN114692820A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN112416433B (zh) | 一种数据处理装置、数据处理方法及相关产品 | |
WO2023045445A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN115221102B (zh) | 用于优化片上系统的卷积运算操作的方法和相关产品 | |
CN114154112A (zh) | 数据处理装置、芯片和板卡 | |
CN113837922B (zh) | 计算装置、数据处理方法及相关产品 | |
US20230259780A1 (en) | Neural network sparsification apparatus and method and related product | |
CN114692820A (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN113469333A (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
CN114764608A (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN113469337A (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
CN114692819A (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
JP7495533B2 (ja) | ニューラルネットワークモデルを実行するデータ処理装置、方法及び関連製品 | |
CN114358261A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN113837923B (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN116781484B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN113837921B (zh) | 数据处理装置、数据处理方法及相关产品 | |
WO2023087698A1 (zh) | 执行卷积运算的计算装置、方法及相关产品 | |
CN113469365B (zh) | 基于神经网络模型的推理和编译方法及其相关产品 | |
CN114444677A (zh) | 进行稀疏化训练的装置、板卡、方法及可读存储介质 | |
CN116484926A (zh) | 自适应拆分优化的设备及方法 | |
CN116483255A (zh) | 加速搬移数据的设备及方法 | |
CN114330677A (zh) | 动态融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114358262A (zh) | 根据特征图融合网络的装置、板卡、方法及可读存储介质 | |
CN115599738A (zh) | 一种对神经网络模型进行优化的方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |