CN114692837A - 融合分支结构的装置、板卡、方法及可读存储介质 - Google Patents
融合分支结构的装置、板卡、方法及可读存储介质 Download PDFInfo
- Publication number
- CN114692837A CN114692837A CN202011561973.4A CN202011561973A CN114692837A CN 114692837 A CN114692837 A CN 114692837A CN 202011561973 A CN202011561973 A CN 202011561973A CN 114692837 A CN114692837 A CN 114692837A
- Authority
- CN
- China
- Prior art keywords
- layer
- layers
- branch structure
- branch
- template
- 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/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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明涉及根据融合策略动态融合神经网络的分支结构的装置、板卡、方法及可读存储介质,其中本发明的计算装置包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。
Description
技术领域
本发明一般地涉及神经网络领域。更具体地,本发明涉及根据融合策略动态融合神经网络的分支结构的装置、板卡、方法及可读存储介质。
背景技术
神经网络是按照一定规则连接起来的多个神经元系统,大致上是由以下四种层结构所组成:输入层、卷积层(convolution layer)、池化层(pooling layer)、全连接层(fully connected layer)。
输入层是自输入数据中截取部分信息,转化成特征矩阵方式呈现,其中载有对应该部分信息的特征。卷积层配置成接收来自输入层的特征矩阵,通过卷积操作对输入数据进行特征抽取。卷积层在实际运用时可以建制多层卷积层。池化层配置成对数据的某一个区域用一个值代替,这值通常是该区域所有数值里的最大值或平均值。通过池化,在不至于损失过多信息的前提下,可以缩减模型大小、提高计算速度。全连接层在整个卷积神经网络中起到分类器的作用,相当于特征空间变换,把前面所有有用的信息提取整合,基于不同的分类做信息比对,借以判断输入数据是否相似于比对的标的。
随着科技的发展,神经网络的层数越来越多,结构也越来越复杂,现今已经开发出许多带有分支结构的神经网络模型,例如ResNet模型。具有分支结构的模型在计算时会耗去大量资源,同时延迟运算时间。
因此,一种减少神经网络模型分支结构的输入/输出访问的机制是人工智能领域中迫切需要的。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种根据融合策略动态融合神经网络的分支结构的装置、板卡、方法及可读存储介质。
在一个方面中,本发明揭露一种根据融合策略动态融合神经网络的分支结构的集成电路装置,包括处理装置及计算装置。处理装置用以根据所述分支结构,建立拓扑序列,以所述拓扑序列的起始层为基准进行融合,排查所述融合策略内的规则,以建立模板融合单元。计算装置用以根据所述模板融合单元执行神经网络计算。
在另一个方面,本发明揭露一种板卡,包括根据前述的集成电路装置。
在另一个方面,本发明揭露一种根据融合策略动态融合神经网络的分支结构的方法,包括:根据所述分支结构,建立拓扑序列;以所述拓扑序列的起始层为基准进行融合,排查所述融合策略内的规则,以建立模板融合单元;以及根据所述模板融合单元执行神经网络计算。
另一个方面,本发明揭露一种计算机可读存储介质,其上存储有根据融合策略动态融合神经网络的分支结构的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行前述的方法。
本发明对分支结构进行融合以产生模板融合单元,模板融合单元中首层的输入和末层的输出作为模板融合单元与片外内存的交互数据,期间各层的计算皆不需要访问片外内存,大大减少片上片外的输入/输出访问频率。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出本发明实施例的板卡的结构图;
图2是示出本发明实施例的集成电路装置的结构图;
图3是示出本发明实施例的计算装置的内部结构示意图;
图4是示出本发明实施例的处理器核的内部结构示意图;
图5是示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图;
图6是示出AlexNet模型的示意图;
图7是示出一种示例性地神经网络模型的示意图;
图8是示出本发明实施例的两个卷积层融合在一起的示意图;
图9是示出NCHW与NHWC的格式示意图;
图10是示出本发明实施例利用模板融合单元执行神经网络计算的流程图;
图11是示出本发明实施例根据融合策略动态融合神经网络的流程图;
图12是示出本发明实施例利用模板融合单元执行神经网络计算的流程图;
图13是示出示例性的神经网络模型片段;
图14是示出本发明实施例分支结构的拓扑序列的示意图;
图15是示出本发明实施例的长链结构还原成分支结构的示意图;
图16是示出另一种示例性的神经网络模型片段;
图17是示出本发明另一个实施例分支结构的拓扑序列的示意图;以及
图18是示出本发明另一个实施例融合神经网络的分支结构的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
神经网络是由输入层、卷积层、激活函数、池化层、全连接层所组成,少则数层,多则上百层,每层执行一个算子,例如卷积层执行卷积算子,有多少层便需要执行多少算子。在本发明中,当提及特定层时,便表示该层相对应的算子。
在进行神经网络计算时,输入信息和模型各层的输出结果在每次推理计算时是不同的,它们被视为变量数据,变量数据一般都是以特征图(矩阵)来表现的,在本发明中,整个神经网络模型的输入信息和模型各层的输入图统称为特征图,一旦特征图加载到片上存储器部件上,在本发明中称为片上单元图。训练网络模型的参数在训练稳定之后通常不会频繁改动,或是网络拓扑结构和硬件参数确定后就可以编译生成,在计算过程中不会变更,因此它们可以被视为常量数据,常量数据包括但不限于权值、偏置、设备硬件指令、批标准化(batchnorm)的均值和方差等,在本发明中统一以权值代表所有的常量数据。而本发明中提及“数据”时,泛指根据融合策略使得神经网络模型中允许对应算子的运算操作融合在一起的图结构,该图结构所涉及变量数据和常量数据,也就是特征图加上相应的权值。
图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的内部结构示意图。计算装置201用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置201采用多核分层结构设计,计算装置201作为一个片上系统,其包括多个集群(cluster),每个集群又包括多个处理器核,换言之,计算装置201是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图3所示,计算装置201包括外部存储控制器301、外设通信模块302、片上互联模块303、同步模块304以及多个集群305。
外部存储控制器301可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块302用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块303将外部存储控制器301、外设通信模块302及多个集群305连接起来,用以在各个模块间传输数据和控制信号。同步模块304是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群305是计算装置201的计算核心,在图中示例性地展示4个,随着硬件的发展,本发明的计算装置201还可以包括8个、16个、64个、甚至更多的集群305。集群305用以高效地执行深度学习算法。
以集群的层级来看,如图3所示,每个集群305包括多个处理器核(IPU core)306及一个存储核(MEM core)307。
处理器核306在图中示例性地展示4个,本发明不限制处理器核306的数量。其内部架构如图4所示。每个处理器核306包括三大模块:控制模块41、运算模块42及存储模块43。
控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)411及指令译码单元(instructiondecode unit,IDU)412。取指单元411用以获取来自处理装置203的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。
运算模块42包括向量运算单元421及矩阵运算单元422。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元422负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块43用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)431、权值存储单元(weight RAM,WRAM)432、输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)433、搬运直接内存访问模块(move direct memoryaccess,MVDMA)434。NRAM 431用以存储供处理器核306计算的特征图及计算后的中间结果;WRAM 432则用以存储深度学习网络的权值;IODMA 433通过广播总线309控制NRAM 431/WRAM 432与DRAM 204的访存;MVDMA 434则用以控制NRAM 431/WRAM 432与SRAM 308的访存。
回到图3,存储核307主要用以存储和通信,即存储处理器核306间的共享数据或中间结果、以及执行集群305与DRAM 204之间的通信、集群305间彼此的通信、处理器核306间彼此的通信等。在其他实施例中,存储核307具有标量运算的能力,用以执行标量运算。
存储核307包括共享存储单元(SRAM)308、广播总线309、集群直接内存访问模块(cluster direct memory access,CDMA)310及全局直接内存访问模块(global directmemory access,GDMA)311。SRAM 308承担高性能数据中转站的角色,在同一个集群305内不同处理器核306之间所复用的数据不需要通过处理器核306各自向DRAM 204获得,而是经SRAM 308在处理器核306间中转,存储核307只需要将复用的数据从SRAM 308迅速分发给多个处理器核306即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线309、CDMA 310及GDMA 311则分别用来执行处理器核306间的通信、集群305间的通信和集群305与DRAM 204的数据传输。以下将分别说明。
广播总线309用以完成集群305内各处理器核306间的高速通信,此实施例的广播总线309支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 308传输到特定几个处理器核306的通信方式,而广播则是将一份数据从SRAM 308传输到所有处理器核306的通信方式,属于多播的一种特例。
CDMA 310用以控制在同一个计算装置201内不同集群305间的SRAM 308的访存。图5示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图,以说明CDMA310的工作原理。在此应用场景中,同一个计算装置包括多个集群,为方便说明,图中仅展示集群0与集群1,集群0与集群1分别包括多个处理器核,同样为了说明方便,图中的集群0仅展示处理器核0,集群1仅展示处理器核1。处理器核0欲将数据写入至处理器核1。
首先,处理器核0发送单播写请求将数据写入本地的SRAM 0中,CDMA 0作为主(master)端,CDMA 1作为从(slave)端,主端向从端推送写请求,即主端发送写地址AW和写数据W,将数据传送到集群1的SRAM 1中,接着从端发送写响应B作为回应,最后集群1的处理器核1发送单播读请求将数据从SRAM 1中读取出来。
回到图3,GDMA 311与外部存储控制器301协同,用以控制集群305的SRAM 308到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 308中。从前述可知,DRAM 204与NRAM431或WRAM 432间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 433直接联系DRAM 204与NRAM 431或WRAM 432;第二个渠道是先经由GDMA 311使得数据在DRAM 204与SRAM 308间传输,再经过MVDMA 434使得数据在SRAM 308与NRAM 431或WRAM 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 204与NRAM 431或WRAM 432间的通信通过第二个渠道可能更有效率。本发明的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 311的功能和IODMA 433的功能可以整合在同一部件中。本发明为了方便描述,将GDMA 311和IODMA 433视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本发明类似,即属于本发明的保护范围。进一步地,GDMA 311的功能、IODMA 433的功能、CDMA 310的功能、MVDMA 434的功能亦可以由同一部件来实现,同样地,只要其实现的功能以及达到的技术效果与本发明类似,均属于本发明的保护范围。
神经网络模型的结构主要分为两类:长链结构与分支结构。长链结构指的是神经网络模型为单链条串接的层所组成,每层只有一个输入及一个输出,整体属于单支,例如VGG16模型或是图6所示的AlexNet模型。分支结构指的是神经网络中的子网络仅有一个输入及一个输出,但子网络内存在多分支,即子网络的部分层具有多个输入或输出,例如resnet50的resblock结构、inception_v3的block结构等。分支结构如图7所示,是一种示例性地神经网络模型,该示例性神经网络模型包括子网络701及子网络702。子网络701仅有一个输入及一个输出,其包括第一层到第六层,第一层具有2个输出,第六层具有2个输入,因此子网络701包括2个分支,一个分支为第一层→第二层→第三层→第六层,而另一个分支为第一层→第四层→第五层→第六层,子网络701构成一个分支结构。同样地,子网络702亦构成一个分支结构。
在执行深度学习的各层计算时,需要大量的片外片上访问,特别是将输入数据自DRAM 204读取至计算装置201中,再将计算装置201的计算结果存储至DRAM 204。这种频繁的访问会耗去极大的硬件资源。为了解决这个问题,本发明通过融合神经网络的相邻层,在很大程度上减少了片外片上的数据传输。
图8示出将两个卷积层融合在一起的示意图。第一层卷积层810的输入为7×7的特征图801,该层将特征图801与3×3的内核(未示出)进行卷积后,得到第一层卷积层810的特征图802。其中,5×5特征子图804的数值会影响3×3特征子图805。假设步长(stride)为1,在计算完5×5特征子图804后,第一层卷积层810会接着计算5×5特征子图806,而5×5特征子图806的数值会影响3×3特征子图807。
在进行第二层卷积层811的计算时,特征图802成为第二层卷积层811的输入,同样与3×3的内核进行卷积,得到第二层卷积层811的特征图803。其中,3×3特征子图805的数值会影响特征图803中的1×1特征子图808。在计算完3×3特征子图805后,第二层卷积层811会接着计算3×3特征子图807,而3×3特征子图807的数值会影响特征图803中的1×1特征子图809。
如果未融合,计算装置201在进行第一层卷积810时,自DRAM 204读取5×5特征子图804,计算完后将3×3特征子图805存储回DRAM 204,接着再从DRAM 204读取5×5特征子图806,计算完后将3×3特征子图807存储至DRAM 204。在进行第二层卷积811时,同样需要自DRAM 204读取3×3特征子图805,计算完后将1×1特征子图808存储至DRAM 204,接着自DRAM 204读取3×3特征子图807,计算完后将1×1特征子图809存储至DRAM 204。通过上述说明可知,特征图802作为中间数据反复在片外片上被读取存储,相当占用系统资源。
如果将第一层卷积层810与第二层卷积层811进行融合,也就是把特征图802存储在NRAM 431中(第一层卷积层810与第二层卷积层811的权值亦可存储在WRAM 432中),如此便可减少计算装置201与DRAM 204间的访问次数,进而提高整体神经网络的执行效率。
神经网络融合通常是基于神经网络中的特定卷积层和池化层向后进行融合,亦即融合的起始层为卷积层或池化层,根据其本身硬件条件向后融合了多层,其间可能包含多个卷积层和池化层。但随着深度学习及神经网络的发展,层的排序变得复杂,例如在卷积层前面设置有激活层,则此激活层应该也要被考虑如何与其后的卷积层进行融合。因此,除了单纯以卷积层和池化层为核心进行融合之外,本发明提供多样的融合方式,不必然以卷积层和池化层为核心,而采取特定的策略,弹性地选择神经网络的各层进行融合,即便是用户自定义的层,只要符合融合策略便可被融合,使得整体效能最佳化。
本发明的另一个实施例是一种新式的融合方法,通过利用前述图1、图2、图3及图4的硬件结构来实施的,这种融合称为模板融合单元(template fuse unit,TFU)。模板融合单元主要是通过一定的融合策略弹性地将多个层融合成一个层,来减少网络的输入/输出开销,其包括前述的神经网络融合及其他融合方式,这些被融合的层的集合即为模板融合单元,可以视为是新的层或是自定义的层。
此实施例一次性将模板融合单元所需的特征图、权值等自DRAM 204载入至片上的SRAM 308,特征图载入至SRAM 308后称为片上单元图,片上单元图会被切割成子图,每次自SRAM 308载入一份子图到被指派计算该子图的处理器核306的NRAM 431,且计算该子图所需的权值亦会自SRAM 308被载入至WRAM 432上,每个子图计算完成后获得对应的中间结果,中间结果被存回SRAM 308,所有子图都完成计算后再一次性地将计算结果存回DRAM204。
更详细来说,SRAM 308是融合策略的重要参考指标之一,其空间大小决定了模板融合单元为大图模式或是小图模式。小图模式与大图模式是指存储在DRAM 204的一张特征图是否能一次性地搬到SRAM 308进行处理,处理装置203会将该特征图所需存储空间与SRAM 308可用空间进行比较。如果SRAM 308空间不足,特征图摆不下,则为大图模式;如果SRAM 308足以容纳整张特征图,就是小图模式。需特别注意的是,在大图模式下,片上单元图只是特征图的一部分;在小图模式下,如果SRAM 308的可用空间足够大,或是特征图足够小,SRAM 308或许可以一次性地容纳多张特征图,即片上单元图可以包括多张特征图。
如是大图模式,则必须拆分该特征图方能载入计算装置201中。处理装置203会在DRAM 204上将该特征图进行拆分,直到产生足够小的片上单元图能够满足SRAM 308的空间需求,使得该片上单元图可以一次性地搬到SRAM 308进行处理。而特征图在进行拆分时,可能会产生输入依赖运算和输出依赖运算。
输入依赖运算是指拆分后的各片上单元图至少部分重叠,每个子集都需要一些输入的额外副本,以进行完整的运算,从而导致拆分操作中的数据冗余,所谓的数据冗余是指同一段数据在系统中被复用。当模板融合单元包括卷积、池化或矩阵乘等层时都会导致输入依赖运算。
输出依赖运算是指每个子图产出中间结果后,还需要进行归约(reduce),才能得到计算结果。归约是指在基于对片上单元图本身内容理解的基础上,拆分成子图后分别计算,以缩减计算规模,从而在尽可能保持原片上单元图原貌的前提下,最大限度地精简数据量,再以子图为基础还原或整合计算结果。进行归约时计算结果是互为依赖的。当模板融合单元包括内积、卷积、矩阵乘、排序、计数等层时都会导致输出依赖运算。
此实施例可以处理的特征图的数据格式包括N、H、W、C维度,其中N代表批处理(batch)、H代表高度(height)、W代表宽度(width)、C代表通道(channel)。以图像数据为例,N表示这批图像共有几张,H表示图像在竖直方向有多少像素,W表示水平方向像素数,C表示通道数(例如黑白图像的通道数C为1,而RGB彩色图像的通道数C为3)。
这些维度的排序决定了数据的组成方式,常见的组成方式有NHWC和NCHW两种,图9示出NCHW与NHWC的格式区别,此图是以RGB彩色图像为例,图中R表示红色像素、G表示绿色像素、B表示蓝色像素。数列91为NCHW格式,N排列在外层,每个通道内像素紧挨在一起,再依RGB的顺序排列,坐标为(n,c,h,w)的元素在存储中的偏移为((n×C+c)×H+h)×W+w。数列92是NHWC格式,C排列在最内层,多个通道对应空间位置的RGB像素紧挨在一起。图中亦显示出输入像素901、输入像素902、输入像素903在不同排列方式下所处的位置,而这三个输入像素901、输入像素902、输入像素903合起来便是图像中一个点的颜色。坐标为(n,c,h,w)的元素相应的坐标向偏移的换算方法是((n×H+h)×W+w)×C+c。NHWC首先相比NCHW更加接近BMP的图片数据存储格式,BMP格式的文件中按照一个个像素点来存储数据,每个像素点存储了所有通道的颜色值,这使得在读取输入图片时不需要进行额外的维度转换。因此,NHWC的访存局部性较佳,每三个输入像素即可得到一个输出像素,NCHW则必须等所有通道输入准备好才能得到最终输出结果,需要占用较大的缓存空间。
此实施例可以根据数据融合神经网络各层为模板融合单元,图10示出相应的流程图。
在步骤1001中,处理装置203判断特征图所需存储空间是否大于SRAM 308的可用空间。如是,表示该特征图无法一次性地载入至SRAM308中,因此执行步骤1002,拆分特征图。在此实施例中,处理装置203选择在任何维度上进行拆分。处理装置203拆分特征图后,回到步骤1001,处理装置203判断拆分后的特征图所需存储空间是否还大于SRAM 308的可用空间,如是,则再次执行步骤1002,继续往下拆分。
如处理装置203判断拆分后的特征图所需存储空间不大于SRAM 308的可用空间时,表示SRAM 308可以一次性地载入拆分后的特征图,则执行步骤1003,处理装置203设定拆分后的特征图为片上单元图。
最后执行步骤1004,处理装置203根据片上单元图的尺寸决定模板融合单元。此步骤是根据融合策略动态融合神经网络,图11示出此实施例根据融合策略动态融合神经网络的方法。
在步骤1101中,根据融合策略的起始规则,选择模板融合单元的起始层。处理装置203根据融合策略的起始规则,选择模板融合单元的起始层,也就是在神经网络里尚未融合的层中选择开始融合的层。
在一种应用场景下,所述起始规则可以是起始层为神经网络中最前未被融合的层,处理装置203会搜索出最前未被融合的层。以图6的AlexNet神经网络模型为例,共有23层,假设第1层至第5层已融合,则当起始规则是起始层为神经网络中最前未被融合的层时,处理装置203会选择第6层的ReLU激活层为起始层,向后融合(即向第7层的方向融合)。需注意的是,在此起始规则下,起始层不必然为卷积层或池化层。
在另一种应用场景下,考虑到卷积和池化层最消耗输入/输出资源,因此起始规则为起始层为最前未被融合的卷积或池化层,处理装置203会先找出神经网络模型中未融合层的所有卷积和池化层,从最前未被融合的卷积或池化层开始向后融合。同样以图6的AlexNet神经网络模型为例,假设第1层至第9层已融合,处理装置203会找出神经网络模型中未融合层的所有卷积和池化层,即第11层、第13层、第15层,接着从最前未被融合的卷积或池化层开始融合,也就是起始层为第11层。
在步骤1102中,以起始层为基准进行融合,逐一排查融合策略的所有规则,以建立模板融合单元。处理装置203以起始层为基准进行融合,逐一排查融合策略的所有规则,以建立模板融合单元。在满足所有规则的前提下,计算装置201的硬件资源足以支撑一次性地载入计算模板融合单元所需的数据,进而根据模板融合单元执行神经网络计算。除了前述的起始规则外,融合策略示例性地还可以包括以下规则:
规则一:向后融合
所谓的向后融合指的是自起始层往神经网络模型推理的方向融合,以图6为例,即是按着第一层→第二层→第三层的方向融合。如果起始层之前还有未融合层,则在此规则下这些未融合层将不被考虑纳入模板融合单元中。
规则二:优先向前融合
所谓的向前融合指的是自起始层往神经网络推理的反方向融合,以图6为例,则是按着第三层→第二层→第一层的方向融合。此规则通常与前述起始层为最前未被融合的卷积或池化层的起始规则搭配,原因在于所述的卷积或池化层前可能还有未被融合的层。在选定起始层后,处理装置203优先向前融合,试图把起始层前尚未被融合的层纳入模板融合单元中。同样以图6的AlexNet神经网络模型为例,假设第1层至第2层已融合,处理装置203发现最前未被融合的卷积或池化层是第5层,故起始层为第5层,优先向前融合第4层、第3层,如果还能继续融合,则接着向后融合第6层、第7层等。
规则三:优先以分支结构为单位
当神经网络模型具有分支结构时,此规则要求处理装置203优先以分支结构而不是以层为单位增删模板融合单元,如果一整个块的运算逻辑融合不成功,才考虑从各个分支上的层进行融合。以图7的神经网络模型为例,处理装置203会优先考虑子网络701或子网络702为单位进行融合。
当神经网络为长链结构时,由于不存在分支结构,故直接以层为单位增删模板融合单元。此规则不适用于长链结构的神经网络模型。
规则四:单分支输出
此实施例的融合策略不支持模板融合单元为多输出网络,其原因在于模板融合单元内部实现的形状推导主要采用从后向前推导的形式,多输出网络意味着需要从不同的输出分别向前推导,推导的结果不必然会归结到同一个特征图上,以至于无法收敛。
换言之,模板融合单元的输出需为单分支输出,也就是模板融合单元的最后一层只能具有一个输出。图7标示了子网络701的二种融合方式,第一种是将第一层至第五层融合成一个模板融合单元703,第二种是将第一层至第六层融合成一个模板融合单元704。由于第三层及第五层的输出都是模板融合单元703的输出,故模板融合单元703属于多输出网络,即多分支输出。而第六层的输出是模板融合单元704的输出,只产生一个输出数据,故模板融合单元704属于单输出网络,即单分支输出。处理单元203会判断模板融合单元的输出是否为单分支输出,如果此规则未被满足时,处理装置203增删模板融合单元内的层直到此规则被满足。
规则五:包括至少2个主层
当层逻辑过于简单时,模板融合单元的性能还不如未融合的层的性能,故以层逻辑作为融合策略时,处理装置203会评估所融合的各层的运算是否足够复杂,使得融合产生效益。欲产生效益,就需要尽量将主层纳入模板融合单元,主层指的是矩阵乘、池化或卷积等耗费大量输入/输出资源的层,此处的池化包括各类池化,像是最大池化(maxpool)或均值池化(avgpool),卷积也包括各类卷积,像是普通卷积、带均值的卷积、分通道卷积(depthwise conv)等。此规则为模板融合单元包括至少2个主层。当处理单元203判断此规则未被满足时,处理装置203会调整模板融合单元直到此规则被满足。
规则六:包括主层、主层、非主层依次相邻的连续结构
此规则为模板融合单元需包括主层、主层及非主层的连续结构,即:主层、主层以及非主层依次相邻的连续结构。这样的运算足够复杂,使得融合具有效益。参阅图6中的第4层-第5层-第6层,其中第4层为最大池化层,第5层为卷积层,第6层为ReLU激活层,符合主层、主层、非主层依次相邻的连续结构,因此包括第4层、第5层、第6层的模板融合单元便可满足此规则。当处理单元203判断此规则未被满足时,处理装置203会调整模板融合单元直到此规则被满足。
规则七:包括标量计算层以及向量计算层相邻的连续结构
此规则为模板融合单元包括标量计算层以及向量计算层的连续结构,即:标量计算层、向量计算层依次相邻的连续结构。所述标量计算层指的是加法层、减法层或乘法层,所述向量计算层指的是激活层、批标准化层或缩放层。当处理单元203判断此规则未被满足时,处理装置203会调整模板融合单元直到此规则被满足。
规则八:卷积层的权值不为某个层的输出
此规则为模板融合单元中的卷积层的权值不为神经网络的任一层的输出,不论该层是否被纳入在模板融合单元。当处理单元203判断此规则未被满足时,处理装置203会将此卷积层自模板融合单元中移除。
规则九:卷积层的权值不与神经网络的任一层共用
由于模板融合单元涉及的神经网络模型中算子的权值具有特别的摆放形式,当被融合的卷积算子与其他算子共用权值时,权值的摆放逻辑会发生冲突,此规则为模板融合单元中的卷积算子的权值不与神经网络的任一层共用。当处理单元203判断此规则未被满足时,处理装置203会将此卷积算子自模板融合单元中移除。
规则十:权值不大于WRAM的可用空间
大图模式对于WRAM 432的限制较少,原因在于载入SRAM 308的片上单元图只是特征图的一部分,在计算模板融合单元时,WRAM 432只需要存放该特征图的所有权值即可。但由于小图模式可能会将多张特征图加载至SRAM 308,在这种情况下所需的权值会变多,便要谨慎评估WRAM 432的可用空间是否足够。此规则为片上单元图中的权值所需存储空间不大于WRAM 432的可用空间,当处理装置203判断此规则未被满足时,处理装置203会减少片上单元图的大小。
如果权值是基于C维度的输出通道参数Cout进行拆分,由于权值会被平均分配到多个处理器核306中,则本规则调整为:
其中,Wj为片上单元图j涉及的权值所需存储空间,n为集群中处理器核的数量,W为WRAM 432的可用空间。
规则十一:冗余百分比
冗余百分比为当输入依赖运算与输出依赖运算所产生的冗余总和与模板融合单元正常输入/输出量的比例,此处正常输入/输出量指的是片上单元图在未被拆分前没有冗余的数据量。处理装置203会计算模板融合单元将当前层融合进来后,片上单元图从DRAM204至SRAM 308的访存量sizeTFU,与正常输入/输出量(不含冗余)sizeori的百分比,其中访存量sizeTFU指的是理论的访存量sizeori加上冗余总和。其公式如下:
处理装置203会将模板融合单元的拆分信息和形状推导计算在内,并设定百分比阈值为50%、75%、100%、125%或160%,较佳为100%。以百分比阈值为100%为例,表示当冗余总和大于模板融合单元正常输入/输出量的2倍时,便不再融合。此规则为拆分片上单元图所产生的冗余总和不超出与百分比阈值相关的特定比例,一旦超过,表示冗余部分过多,大量的资源将耗费在计算冗余上,效能下降,因此当处理装置203判断此规则未被满足时,处理装置203会停止融合。
需要注意的是,在小图模式下,由于从DRAM 204至SRAM 308过程一次加载至少一整张完整的特征图,故不会产生冗余。此规则不适用于小图模式。
规则十二:片上单元图输入输出尺寸
假设SRAM 308的空间尺寸为S,片上单元图所需存储空间为IN,片上单元图的计算结果所需存储空间为OUT,则此规则为SRAM 308的空间尺寸需要满足以下条件:
如果IN和OUT不能复用存储空间的话,IN+OUT<S
如果IN和OUT可以复用存储空间的话,MAX(IN,OUT)<S
即如果IN和OUT不能复用存储空间的话,片上单元图的存储空间与计算结果的存储空间之和小于SRAM 308的可用空间;如果IN和OUT可复用存储空间的话,片上单元图的存储空间与计算结果的存储空间较大者小于SRAM 308的可用空间。
规则十三:Wi+IN1+IN2≤S
在小图模式下,此规则为SRAM 308的空间尺寸需要满足以下条件:
Wi+IN1+IN2≤S
即子图i的权值所需存储空间Wi、片上单元图所需存储空间IN1、缓存空间IN2的总和不大于SRAM 308的可用空间。当处理装置203判断此规则未被满足时,处理装置203减少片上单元图的数量直到此规则被满足。
规则十四:SubINi+Wi+IN2≤S
在小图模式下,此规则为SRAM 308的空间尺寸需要满足以下条件:
SubINi+Wi+IN2≤S
即子图i的所需存储空间SubINi、子图i的权值所需存储空间Wi、缓存空间IN2的总和不大于SRAM 308的可用空间。当处理装置203判断此规则未被满足时,处理装置203减少片上单元图的数量直到所述规则被满足。
规则十五:SubOUTi+Wi+1+IN2≤S
在小图模式下,此规则为SRAM 308的空间尺寸需要满足以下条件:
SubOUTi+Wi+1+IN2≤S
即子图i的中间结果所需存储空间SubOUTi、下一个子图的权值所需存储空间Wi+1、缓存空间IN2的总和不大于SRAM 308的可用空间。当处理装置203判断此规则未被满足时,处理装置203减少片上单元图的数量直到所述规则被满足。
规则十六:Wi+Wi+1≤W
模板融合单元中参与卷积运算的权值会被独立搬运并驻留在WRAM 432上。在小图模式下,如果子图包括多张特征图,考虑到子图间的流水,WRAM 432最多同时存储相邻两个子图的权值。假设每个子图i的所需存储空间为Wi,且WRAM 432的总空间为W,此规则为WRAM432的空间尺寸需要满足以下条件:
Wi+Wi+1≤W
即子图i的权值所需存储空间Wi、下一个子图的权值所需存储空间Wi+1总和不大于WRAM 432的可用空间。当处理装置203判断此规则未被满足时,处理装置203减少片上单元图的数量直到所述规则被满足。
规则十七:子图所需存储空间不大于NRAM的可用空间
此规则为子图所需存储空间不大于NRAM 431的可用空间。当SRAM 308上的片上单元图要被拆分成子图搬运至NRAM 431时,处理装置203可以在N、H、W维度上进行细粒度拆分。如果NRAM 431的空间不足,处理装置203会把片上单元图拆分得更细,直到此规则被满足。一般来说,NRAM 431都会具有合理的可用空间,使得片上单元图被拆分到合理的程度便可一次性地被载入,就融合策略的角度来看,模板融合单元不会受到批处理数目的影响。然而,片上单元图被拆分的越小(即子图越多),处理速度会下降,故处理装置203需要评估NRAM 431的空间。
在一些实施例中,SRAM 308的空间与集群305内的处理器核306的NRAM 431的个数相对应,例如集群305包括4个处理器核306,则SRAM 308的空间为NRAM 431的空间的4倍。换言之,大图模式下的片上单元图一般能分配给4个处理器核306处理,这种架构设计已考虑载入SRAM 308的数据能一次性地分配给所有NRAM 431。因此在大图模式下不需要考虑此规则。
规则十八:特征图的数量不大于特征图阈值
在小图模式下,片上单元图可能会包括多张特征图,特征图越多,SRAM 308与NRAM431间的子图传输次数就越多,效率便会下降,因此并非片上单元图包括的特征图越多越好,处理装置203会根据片上单元图中特征图的数量来计算合适的融合层数,使其效益最大化。此规则为片上单元图中的特征图的数量不大于特征图阈值,当处理装置203判断此规则未被满足时,处理装置203减少片上数据中特征图的数量直到所述规则被满足。
规则十九:步长冗余
步长冗余指的是:当模板融合单元融合层数太多,再加上卷积和池化的内核的长宽大于步长时,每个输出点需要的输入数据存在重叠部分,也就是前述的输入依赖运算,该重叠部分即为步长冗余。步长冗余使得每个处理器核306需要多读取一些数据,但是这一部分复用的数据会占去片上片外的访问资源,模板融合单元包括的层数越多,步长冗余越严重。此规则为卷积层或池化层的内核的边长与步长的差值总和不大于冗余阈值。
在此实施例中,冗余阈值的定义如下。假设卷积和池化层的内核的长和宽为kx和ky,长和宽方向的步长分别为sx和sy,则长方向的步长冗余为模板融合单元内所有卷积及池化层的kx-sx的总和;同理,宽方向的步长冗余为模板融合单元内所有卷积及池化层的ky-sy的总和。此实施例的冗余阈值可以为3、4、5或6,较佳为4。只要长方向或宽方向任一方向的步长冗余大于冗余阈值,此规则便不被满足。处理装置203调整模板融合单元,通常为减少被融合的层数,直到此规则被满足。
融合策略对于步长冗余设定了例外规则。如欲融合的层里存在多分支且模板融合单元能融合整个多分支的前提下,模板融合单元的性能会表现的更为优异,在这种情况下,处理装置203会忽略步长冗余的规则,亦即步长冗余不会限制模板融合单元融合多分支,即在此实施例的融合策略中,融合多分支优先于步长冗余的限制。也就是说,步长冗余只有在单分支的情况下才会被考虑。
以上的规则仅为示例,本发明并不限制各规则执行的顺序,亦不限制这些规则需同时被考虑,本领域技术人员在不同的应用场景下可以根据实际情况增删规则,以实现符合当下应用场景的融合策略。
回到图11,在步骤1103中,根据建立后的模板融合单元执行神经网络计算。计算装置201基于片上系统-集群-处理器核的三级运算层次,搭配DRAM-SRAM-NRAM/WRAM这样的三层内存设计,将模板融合单元视为神经网络中一个自定义的层,一次性地自DRAM 204载入计算模板融合单元所需的数据至SRAM 308,使得数据能够在适当的层级里缓存并计算,形成充分的流水,计算完成后再将计算结果自SRAM 308传送至DRAM 204,大大减少神经网络计算中的输入/输出开销。
当计算机视觉、语音、自然语言处理、数据挖掘等领域的输入数据欲进行各类深度学习和机器学习算法时,本发明基于模板融合单元,可以减少神经网络计算中的输入/输出开销。本发明的另一个实施例是一种利用模板融合单元执行神经网络计算的方法。图12示出其流程。
在步骤1201中,根据融合策略决定模板融合单元。处理装置203根据融合策略的起始规则,选择模板融合单元的起始层;并以起始层为基准进行融合,逐一排查融合策略的所有规则,以建立模板融合单元。前一个实施例已详细示例说明融合策略的各种规则,不再赘述。
在此步骤中,模板融合单元会以源代码的方式展现,接下来需要通过编译器将源代码转换成机器语言的目标代码(object code),又称作机器代码。以下多个步骤即为编译器将模板融合单元的源代码转换成机器语言的目标代码的过程。
在步骤1202中,推导模板融合单元的形状。对于模板融合单元需要处理的数据,此实施例采用的是逆推的方式,编译器从输出向前逆推出需要多少尺寸的输入,以图8为例,便是从特征图803逆向推导至特征图802,再逆向推导至特征图801。在此步骤中,编译器不仅根据模板融合单元推导所需输入数据,还会进一步推导冗余。
接下来执行步骤1203,推导地址。根据模板融合单元的形状,编译器对整个控制流图进行片上存储空间地址的推导,并且实现通用地址的访问,以达到精简计算资源、缩短计算时间的目的。控制流图是用在编译器中的一种抽象数据结构,代表了一个程序可能会执行的所有路径,以流程图的形式反映过程内所有节点的可能流向。控制流图是由节点和节点间的关系所组成的。节点又称为基本块(basic block,BB),是程序中最大限度顺序执行的语句序列,每个基本块只有一个入口和出口,执行时从其入口进入,自其出口退出。基本块的特点是只要第一条指令被执行了,那么基本块内所有指令都会按照顺序被执行。
每个基本块包含至少一条指令,基本块中的指令可能使用指针指向特定的片上存储空间。指针是一种变量,用以保存特定地址空间的地址。通过指针,处理器核306可以将数据载入到指针指向的特定地址的空间中,或是从指针指向的特定地址中的数据取出。
编译器根据模板融合单元的划分情况,初始划分基本块,再经过迭代运算后,确认基本块及相互关系,至此完成实现模板融合单元的目标代码。
不仅如此,编译器还会针对神经网络中前后两个模板融合单元的复用数据进行分析,判断前一次模板融合单元中有多少数据可以留在片上供下一个模板融合单元使用,并根据判断结果规划各数据的存储地址。
在此步骤中,编译器完成控制流图中地址的推导。
在步骤1204中,分配片上存储空间。处理装置203基于模板融合单元地址的推导,分配SRAM 308、NRAM 431及WRAM 432的物理空间。在此步骤中,编译器完成控制流图中指针的指向。
最后执行步骤1205,生成可执行指令。在此步骤中,链接器(linker)将编译器所生成的目标代码外加库链接,使其成为一个可执行文件。更详细来说,目标代码是包括机器码和链接器可用信息的程序模块,链接器的工作是解析未定义的符号引用,将目标代码中的占位符替换为符号的地址,进而生成可执行指令。可执行指令可直接被计算装置201执行,以完成神经网络的计算。
以前述融合策略的规则来决定模板融合单元时,不必然要以卷积层或是池化层为起始展开融合。前述实施例提及在一种应用场景下,起始规则可以是起始层为神经网络中最前未被融合的层,这层可以是卷积层或池化层以外的层。这样的起始规则使得模板融合单元的建立更为弹性,能够针对不同的神经网络,基于各层的排序,适当地选择起始层开始融合,不受卷积层或是池化层在神经网络模型中的位置和数量所限,进而适应各种网络模型,让融合更加全面,提升整体效益。
举例来说,以图6的神经网络模型为例,假设第1层至第5层已融合完毕,在建立下一个模板融合单元时,如果起始规则采用起始层为最前未被融合的卷积或池化层,则下一个卷积或池化层为第8层,换言之,第6层及第7层可能不会被融合,影响整体效益。
本发明的另一个实施例为一种融合神经网络的方案,其起始层为除卷积层及池化层之外的层,即非卷积层和非池化层。此实施例同样基于图1至图4的框架来实现。此实施例同样执行如图11所示的流程图。
在步骤1101中,根据融合策略选择起始层。处理装置203根据融合策略选择起始层,例如融合策略的起始规则是起始层为神经网络中最前未被融合的层,这层是卷积层或池化层以外的层。起始层可以为元素对元素(element-wise)层、添加填充(addpadding)层或是自定义层。
需注意的是,此步骤不采用起始规则为起始层为最前未被融合的卷积或池化层,如果按此起始规则选择起始层,便会限制起始层必须为卷积或是池化层,此实施例不受卷积层或是池化层在神经网络模型中的位置和数量所限的优势便不存在了。
如果神经网络包括分支结构,根据前述规则三,优先以分支结构为单位进行融合。然而,有时候分支结构太过复杂,无法将整个分支结构整合至模板融合单元中,基于前述的规则只能放弃融合分支结构。不仅如此,规则四要求模板融合单元的输出需为单分支输出,亦反映了必须以分支结构为单位进行融合。换言之,规则三和四的融合策略对具有分支结构的神经网络模型并不友善,融合效果不佳。
本发明的另一个实施例是一种根据融合策略动态融合神经网络的分支结构的装置,该装置同样具有图1至图4的结构。此实施例不必然一定要以完整的分支结构进行融合。图13示出一种示例性的神经网络模型片段,其包括分支结构1300,分支结构1300的始点是T1层,终点是T10层,由T1层展开有第一分支1301与第二分支1302,第一分支1301包括T2层与T3层,第二分支1302包括T4层至T9层。
在融合分支结构1300时,处理装置203先为分支结构1300建立起拓扑序列。拓扑序列指的是对一个有向无环图中的所有节点排成一个线性序列,且必须满足以下两个条件:每个节点必须出现且只出现一次;若存在一条从节点A到节点B的路径,那么在序列中节点A出现在节点B的前面。简单的说,就是由某个集合上的一个偏序得到该集合上的一个全序的过程。基于前述原则,处理装置203在建立拓扑序列时,先识别分支结构1300的始点与终点,即始点为T1层和终点为T10层。处理装置203设定分支结构1300的始点为拓扑序列的始点,该始点亦被设定为模板融合单元的起始层,并设定分支结构1300的终点为拓扑序列的终点,再依拓扑排列分支结构1300中的中间各层,排列的方式有以下2种。
第一种排列方式是比较各分支的层数,依层数数量由多至少排列子分支的各层;第二种排列方式是比较各分支上的层数,依层数数量由少至多排列子分支的各层。此实施例采第二种排列方式。第一分支1301有2层,第二分支1302有6层,第一分支1301的层数较少,因此第一分支1301中的各层排在第二分支1302中的各层之前。基于这种排列方式,如图14所示,形成具有T1层→T2层→T3层→T4层→T5层→T6层→T7层→T8层→T9层→T10层的拓扑序列。经过转换,分支结构1300的拓扑序列形成一个长链结构1400。
此实施例是以拓扑序列中的层为单位,而不是以整个分支结构为单位来增删模板融合单元,处理装置203以长链结构1400来取代分支结构1300,排查融合策略内的规则,以建立模板融合单元。换言之,处理装置203将带有分支结构1300的神经网络模型视为是具有一个长链结构1400的神经网络模型,以长链结构1400的起始层(T1层)作为基准进行融合,如此便可以选用前述融合策略内的任何规则(除了规则三和规则四),来建立模板融合单元。
在此实施例中,不必然模板融合单元需要包括整个分支结构1300。举例来说,假设长链结构1400可以生成2个模板融合单元:第一模板融合单元1401包括T1层至T5层,第二模板融合单元1402包括T6层至T10层。当长链结构1400还原成分支结构1300时,第一模板融合单元1401与第二模板融合单元1402的形状如图15所示,第一模板融合单元1401具有2个分支输出,分别连接至第二模板融合单元1402的T10层与T6层,也就是说,第一模板融合单元1401具有2个输出端,第二模板融合单元1402具有2个输入端。
为了让数据的搬运更有效率,在推导第一模板融合单元1401的形状时,处理装置203接着判断第一模板融合单元1401是否包括分支结构1300的终点。第一模板融合单元1401并未包括T10层,处理装置203进一步判断NRAM 431的可用空间是否足够大,如是,则处理装置203在步骤1203中推导地址时,使得计算装置201将第一模板融合单元1401产出的2个计算结果(也就是最末层T3层与T5层的中间结果)存储在NRAM 431中,原因是第二模板融合单元1402可以直接自NRAM 431取值计算。如果NRAM 431的可用空间不够大,处理装置203进一步判断SRAM 308的可用空间是否足够大。如果SRAM 308的可用空间足够大,这2个计算结果便会存储在SRAM 308中,在计算第二模板融合单元1402时可以直接自SRAM 308取值计算。
由于这2个计算结果就是第二模板融合单元1402的片上单元图,因此计算装置201在计算第二模板融合单元1402时,不需要从DRAM 204载入片上单元图,直接从NRAM 431或SRAM 308读取计算,减少了片上片外的访问。
如果NRAM 431及SRAM 308的可用空间都不够大,计算装置201才会将第一模板融合单元1401产出的2个计算结果存回至DRAM 204中,当计算装置201计算第二模板融合单元1402时,将从DRAM 204载入这2个计算结果进行计算。
在推导第二模板融合单元1402的形状时,处理装置203判断第二模板融合单元1402是否包括分支结构1300的终点。第二模板融合单元1402确实包括T10层,则处理装置203在步骤1203中推导地址时,使得计算装置201将第二模板融合单元1402产出的计算结果存回至DRAM 204中。
综上所述,此实施例的处理装置203将分支结构转换成长链结构,长链结构简单,容易生成模板融合单元,再将长链结构还原成分支结构进行形状和地址的推导,不再需要以整个分支结构为单位进行融合。计算装置201根据模板融合单元来执行神经网络计算。
本发明的另一个实施例同样是融合分支结构的装置,该装置亦具有图1至图4的结构。与图15的分支结构不同处在于,此实施例可融合具有子分支的分支结构。图16示出一种示例性的神经网络模型片段,其包括分支结构1600,分支结构1600的始点是T1层,终点是T11层,由T1层展开有第一分支1601与第二分支1602,第一分支1601包括T2层至T7层,第二分支1602包括T8层至T10层。而第一分支1601包括子分支结构,子分支结构的始点是T3层,终点是T7层,第一子分支1603包括T4层及T5层,第二子分支1604包括T6层。
在融合分支结构1600时,处理装置203先为分支结构1600建立起拓扑序列。首先识别分支结构1600的始点与终点,即始点为T1层,终点为T11层,处理装置203设定分支结构1600的始点为拓扑序列的始点,该始点亦被设定为模板融合单元的起始层,并设定分支结构1600的终点为拓扑序列的终点。处理装置203进一步判断分支结构1600是否存在子分支结构,分支结构1600确实存在子分支结构,处理装置203先识别子分支结构的始点与终点,即T3层与T7层,再依拓扑排列子分支结构中的始点、终点及中间各层,排列的方式有以下2种。
第一种排列方式是比较子分支结构中的子分支上的层数,依层数数量由多至少排列子分支的各层。第一子分支1603有2层,第二子分支1604有1层,第一子分支1603的层数较多,因此第一子分支1603中的各层排在第二子分支1604中的各层之前。基于这种排列方式,子分支结构的拓扑排序为T3层→T4层→T5层→T6层→T7层。
第二种排列方式是比较子分支结构中的子分支上的层数,依层数数量由少至多排列子分支的各层。第二子分支1604的层数较少,因此第二子分支1604中的各层排在第一子分支1603中的各层之前。基于这种排列方式,子分支结构的拓扑排序为T3层→T6层→T4层→T5层→T7层。
在处理完子分支结构的拓扑排序后,处理装置203继续对分支结构1600进行排序。在此实施例中,分支结构1600的排序方式与子分支结构相同,换言之,如果子分支采第一种排列方式(以层数数量由多至少来排列)则分支结构1600亦以层数数量由多至少来排列,第一分支1601的层数多于第二分支1602,因此第一分支1601的各层排在第二分支1602的各层之前,即生成图17所示的长链结构1701;如果子分支采第二种排列方式(以层数数量由少至多来排列)则分支结构1600的第二分支1602的各层排在第一分支1601的各层之前,即生成图17所示的长链结构1702。
接着处理装置203以长链结构1701或1702来取代分支结构1600,以拓扑序列中的层为单位来增删模板融合单元,排查融合策略内的规则,以建立模板融合单元。同样地,在此实施例中,不必然模板融合单元需要包括整个分支结构1601或1602。
为了让数据的搬运更有效率,在推导分支结构1601或1602的模板融合单元的形状时,处理装置203会判断模板融合单元是否包括分支结构或子分支结构的终点,如果未包括,处理装置203进一步判断NRAM 431的可用空间是否足够大,如是,则处理装置203在步骤1203中推导地址时,使得计算装置201将该模板融合单元产出的最末层的中间结果存储在NRAM 431中。如果NRAM 431的可用空间不够大,处理装置203进一步判断SRAM 308的可用空间是否足够大。如果SRAM 308的可用空间足够大,则最末层的中间结果便会存储在SRAM308中,在计算该模板融合单元时可以直接自SRAM 308取值计算。
如果模板融合单元未包括分支结构或子分支的终点,表示其输出(最末层的中间结果)是下一个模板融合单元的片上单元图,因此计算装置201在计算下一个模板融合单元时,不需要从DRAM 204载入片上单元图,直接从NRAM 431或SRAM 308读取计算,减少了片上片外的访问。
但如果NRAM 431及SRAM 308的可用空间都不够大,模板融合单元的最末层的中间结果会被存回至DRAM 204中,当计算装置201计算下一个模板融合单元时,从DRAM 204载入进行计算。
如果处理装置203判断该模板融合单元包括分支结构1600或子分支的终点,则处理装置203在步骤1203中推导地址时,使得计算装置201将该模板融合单元产出的最末层的中间结果存回至DRAM 204中。
此实施例虽然以分支结构包括一个子分支结构进行说明,本领域技术人员可以容易的推及多个子分支的情况,故不再细化。此实施例的处理装置203将分支/子分支结构转换成长链结构,长链结构简单,容易生成模板融合单元,再将长链结构还原成分支结构进行形状和地址的推导。计算装置201根据模板融合单元来执行神经网络计算。
本发明的另一个实施例是根据融合策略动态融合神经网络的分支结构的方法,此实施例由具有图1至图4的结构的装置来融合具有子分支的分支结构。图18示出此实施例的流程图。
在步骤1801中,为分支结构建立起拓扑序列。此步骤又分为以下多个步骤。
在步骤1802中,识别分支结构的始点与终点。在步骤1803中,设定分支结构的始点为拓扑序列的始点。在步骤1804中,设定该始点为模板融合单元的起始层。在步骤1805中,设定分支结构的终点为拓扑序列的终点。在步骤1806中,判断分支结构是否存在子分支结构,如是,执行步骤1807,识别子分支结构的始点与终点。在步骤1808中,依特定顺序排列子分支结构中的始点、终点及中间各层,排列的方式有以下2种:比较子分支结构中的子分支上的层数,依层数数量由多至少排列子分支的各层,以及比较子分支结构中的子分支上的层数,依层数数量由少至多排列子分支的各层。在处理完子分支结构的拓扑排序后,或是在步骤1806中判断分支结构不存在子分支结构,则执行步骤1809,依特定顺序对分支结构的各层进行排序。在此实施例中,分支结构的排序方式与子分支结构相同。至此,此实施例将分支结构转换成长链结构。
接着执行步骤1810,以长链结构来取代分支结构,用拓扑序列中的层为单位来增删模板融合单元,基于在步骤1804中设定的起始层,排查融合策略内的规则,以建立模板融合单元。此步骤即是以长链结构来取代分支结构,执行步骤1102,技术细节不再赘述。
在推导分支结构或子分支结构的模板融合单元的形状时,此实施例会判断模板融合单元是否包括分支结构或子分支结构的终点,如果未包括,进一步判断NRAM 431的可用空间是否足够大,如是,则在推导地址时使得计算装置201将该模板融合单元产出的最末层的中间结果存储在NRAM 431中。如果NRAM 431的可用空间不够大,进一步判断SRAM 308的可用空间是否足够大。如果SRAM 308的可用空间足够大,则最末层的中间结果便会存储在SRAM 308中,在计算该模板融合单元时可以直接自SRAM 308取值计算。
但如果NRAM 431及SRAM 308的可用空间都不够大,此实施例才会将模板融合单元的最末层的中间结果存回至DRAM 204中,在计算下一个模板融合单元时,将从DRAM 204载入进行计算。
如果模板融合单元包括分支结构或子分支结构的终点,则此实施例在推导地址时使得计算装置201将该模板融合单元产出的最末层的中间结果存回至DRAM 204中。
最后执行步骤1811,根据模板融合单元来执行神经网络计算。
本发明另一个实施例为一种计算机可读存储介质,其上存储有根据融合策略动态融合神经网络的分支结构的计算机程序代码,当所述计算机程序代码由处理器运行时,执行前述实施例所述的方法。
本发明通过设定融合策略,动态地决定模板融合单元,融合神经网络中的分支结构,以形成新的自定义的层,一次性载入计算模板融合单元所需的数据,以减少输入/输出开销。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本发明的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本发明实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、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 (21)
1.一种根据融合策略动态融合神经网络的分支结构的集成电路装置,包括:
处理装置,用以:
根据所述分支结构,建立拓扑序列;以及
以所述拓扑序列的起始层为基准进行融合,排查所述融合策略内的规则,以建立模板融合单元;以及
计算装置,用以根据所述模板融合单元执行神经网络计算。
2.根据权利要求1所述的集成电路装置,其中所述处理装置在建立所述拓扑序列时,用以识别所述分支结构的始点与终点,所述处理装置设定所述始点为所述起始层。
3.根据权利要求2所述的集成电路装置,其中所述处理装置在建立所述拓扑序列时,还用以:
设定所述分支结构的始点为所述拓扑序列的始点;
设定所述分支结构的终点为所述拓扑序列的终点。
4.根据权利要求3所述的集成电路装置,其中所述处理装置在建立所述拓扑序列时,还用以:
判断所述分支结构是否存在子分支结构,如是,则:
识别所述子分支结构的始点与终点;
依特定顺序排列所述子分支结构中的始点、终点及层。
5.根据权利要求4所述的集成电路装置,其中所述处理装置在依特定顺序排列所述子分支结构中的始点、终点及层时,还用以:
比较所述子分支结构中的子分支上的层数;以及
依层数数量由多至少排列所述子分支的层。
6.根据权利要求4所述的集成电路装置,其中所述处理装置在依特定顺序排列所述子分支结构中的始点、终点及层时,还用以:
比较所述子分支结构中的子分支上的层数;以及
依层数数量由少至多排列所述子分支的层。
7.根据权利要求4所述的集成电路装置,其中所述计算装置包括多个集群,每个集群包括共享存储单元,所述处理装置还用以判断所述模板融合单元是否包括所述子分支结构的终点;如否,所述计算装置将所述模板融合单元中,所述子分支结构中各子分支最末层的中间结果存储在所述共享存储单元中。
8.根据权利要求4所述的集成电路装置,其中所述计算装置包括多个集群,每个集群包括多个处理器核,每个处理器核包括神经元存储单元,所述处理装置还用以判断所述模板融合单元是否包括所述子分支结构的终点;如否,所述计算装置将所述模板融合单元中,所述子分支结构中各子分支最末层的中间结果存储在所述神经元存储单元中。
9.根据权利要求2所述的集成电路装置,其中所述计算装置包括多个集群,每个集群包括共享存储单元,所述处理装置还用以判断所述模板融合单元是否包括所述分支结构的终点;如否,所述计算装置将所述模板融合单元中,所述分支结构中各分支最末层的中间结果存储在所述共享存储单元中。
10.根据权利要求2所述的集成电路装置,其中所述计算装置包括多个集群,每个集群包括多个处理器核,每个处理器核包括神经元存储单元,所述处理装置还用以判断所述模板融合单元是否包括所述分支结构的终点;如否,所述计算装置将所述模板融合单元中,所述分支结构中各分支最末层的中间结果存储在所述神经元存储单元中。
11.根据权利要求1所述的集成电路装置,其中所述起始层为除卷积层及池化层之外的层。
12.根据权利要求1所述的集成电路装置,其中所述起始层为所述神经网络中最前未被融合的层。
13.根据权利要求1所述的集成电路装置,其中所述融合策略为以所述拓扑序列中的层为单位增删所述模板融合单元。
14.一种板卡,包括根据权利要求1至13任一项所述的集成电路装置。
15.一种根据融合策略动态融合神经网络的分支结构的方法,包括:
根据所述分支结构,建立拓扑序列;
以所述拓扑序列的起始层为基准进行融合,排查所述融合策略内的规则,以建立模板融合单元;以及
根据所述模板融合单元执行神经网络计算。
16.根据权利要求15所述的方法,其中所述建立步骤包括:
识别所述分支结构的始点与终点;以及
设定所述始点为所述起始层。
17.根据权利要求16所述的方法,其中所述建立步骤还包括:
设定所述分支结构的始点为所述拓扑序列的始点;以及
设定所述分支结构的终点为所述拓扑序列的终点。
18.根据权利要求17所述的方法,其中所述建立步骤还包括:
判断所述分支结构是否存在子分支结构,如是,则:
识别所述子分支结构的始点与终点;以及
依特定顺序排列所述子分支结构中的始点、终点及层。
19.根据权利要求18所述的方法,其中所述排列步骤包括:
比较所述子分支结构中的子分支上的层数;以及
依层数数量由多至少排列所述子分支的层。
20.根据权利要求18所述的方法,其中所述排列步骤包括:
比较所述子分支结构中的子分支上的层数;以及
依层数数量由少至多排列所述子分支的层。
21.一种计算机可读存储介质,其上存储有根据融合策略动态融合神经网络的分支结构的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求15-20任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011561973.4A CN114692837A (zh) | 2020-12-25 | 2020-12-25 | 融合分支结构的装置、板卡、方法及可读存储介质 |
PCT/CN2021/141393 WO2022135599A1 (zh) | 2020-12-25 | 2021-12-25 | 融合分支结构的装置、板卡、方法及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011561973.4A CN114692837A (zh) | 2020-12-25 | 2020-12-25 | 融合分支结构的装置、板卡、方法及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114692837A true CN114692837A (zh) | 2022-07-01 |
Family
ID=82129924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011561973.4A Pending CN114692837A (zh) | 2020-12-25 | 2020-12-25 | 融合分支结构的装置、板卡、方法及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114692837A (zh) |
-
2020
- 2020-12-25 CN CN202011561973.4A patent/CN114692837A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112799726A (zh) | 数据处理装置、方法及相关产品 | |
CN113837922A (zh) | 计算装置、数据处理方法及相关产品 | |
CN114358261A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114692837A (zh) | 融合分支结构的装置、板卡、方法及可读存储介质 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN114330679A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114330678A (zh) | 向前融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114330676A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114330680A (zh) | 根据特征图融合网络的装置、板卡、方法及可读存储介质 | |
CN114330677A (zh) | 动态融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114358262A (zh) | 根据特征图融合网络的装置、板卡、方法及可读存储介质 | |
CN114282659A (zh) | 计算神经网络的装置、板卡、方法及可读存储介质 | |
CN114692843A (zh) | 计算神经网络的装置、板卡、方法及可读存储介质 | |
CN114282642A (zh) | 计算神经网络的计算装置、板卡、方法及可读存储介质 | |
CN114358264A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN113469337A (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
CN114757327A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
WO2022135599A1 (zh) | 融合分支结构的装置、板卡、方法及可读存储介质 | |
CN114358263A (zh) | 执行神经网络计算的装置、板卡、方法及可读存储介质 | |
WO2022063217A1 (zh) | 向前融合神经网络的装置、板卡、方法及可读存储介质 | |
WO2022063183A1 (zh) | 执行神经网络计算的装置、板卡、方法及可读存储介质 | |
CN115221103A (zh) | 计算装置、数据处理方法及相关产品 | |
CN114692844A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
CN113469365B (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 |