CN110490309A - 一种用于神经网络的算子融合方法及其相关产品 - Google Patents

一种用于神经网络的算子融合方法及其相关产品 Download PDF

Info

Publication number
CN110490309A
CN110490309A CN201910750140.3A CN201910750140A CN110490309A CN 110490309 A CN110490309 A CN 110490309A CN 201910750140 A CN201910750140 A CN 201910750140A CN 110490309 A CN110490309 A CN 110490309A
Authority
CN
China
Prior art keywords
operator
fused
size
block
data
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.)
Granted
Application number
CN201910750140.3A
Other languages
English (en)
Other versions
CN110490309B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN201910750140.3A priority Critical patent/CN110490309B/zh
Publication of CN110490309A publication Critical patent/CN110490309A/zh
Application granted granted Critical
Publication of CN110490309B publication Critical patent/CN110490309B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • Neurology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Analysis (AREA)

Abstract

本公开涉及一种可用于神经网络的算子融合方法及相关产品,其中,所述算子融合方法包括:遍历所述神经网络对应的计算图中的算子,从所述计算图中选择当前算子和待融合算子;按照一拆分尺寸,将所述待融合算子的输出数据拆分成多个输出块;基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸;基于所述拆分尺寸、所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,判断是否将所述当前算子与待融合算子融合在一起。

Description

一种用于神经网络的算子融合方法及其相关产品
技术领域
本公开涉及人工智能技术领域,尤其涉及一种可用于神经网络的算子融合方法和计算机可读存储介质。
背景技术
神经网络(DNNs)被越来越多的用在各种应用场合中,例如语音识别、目标检测、语义分割等。随着神经网络技术的持续发展,神经元以及突触(synapsis)的数目都在成指数级地增加。因此,运算操作量以及内存访问量也随之快速地增加,远远超出了硬件处理的能力,尤其对于嵌入式系统来说,问题尤为严重。业界已经提出了一些解决方案,例如:剪枝(pruning)、数据压缩、低精度量化等。但是,现有的通用处理器平台(例如CPU、FPGA、DSP等)仍然难以充分满足实际应用的要求。
一些研究人员考虑了神经网络的通用特征,并且设计出神经网络加速器。神经网络加速器一般增加了专用的片上存储器以提高性能。数据从外部的存储器(DRAM)被加载到片上存储器,完成计算之后,计算结果被存储回外部存储器中。然而,对于大部分神经网络加速器来说,计算资源的大量增加将会使得内存带宽的短缺以及片上网络的资源竞争的问题更加严重。内部存储和外部存储之间的数据传输延迟占据了程序执行时间中的一大部分。神经网络加速器的发展,使得神经网络的运行越来越快,但是,外部存储器DRAM的带宽的缓慢发展,使得内存访问称为加速器发展的一个瓶颈问题。亟需解决这个问题,才能更有效地利用加速器。
大部分神经网络模型需要大量的运算以及内存访问。一些神经网络加速器可以提供较高的计算性能。然而,目前主流的神经网络加速器的运算能力,远远超出了目前外部存储器的带宽。下面以ResNet-18神经网络中各层的计算量以及内存访问量为例,进行说明。
在ResNet-18神经网络中,每一层中的运算量与内存访问量的比率是不同的,因而对于带宽和计算能力具有不同的要求。以逐元素层(element-wise layer)为例,如果计算能力为1GFLOPS(Giga Floating-point Operations Per Second每秒所执行的浮点运算次数)的话,那么所需要的带宽是12GB/s。同时,对于卷积层来说,对于相同的1GFLOPS的计算能力,对带宽的要求仅为10MB/s。虽然神经网络加速器的硬件已经经过了优化设计,试图尽量在内存带宽与计算能力之间取得平衡,但是尚无法达到最佳的性能。在caffe框架下,本申请的发明人进一步统计了整个ResNet-18神经网络中每一层的计算能力与内存访问的比例,并且发现,95%以上的数据传输量是在某些层中(包括卷积层,BatchNorm层,Scale层,ReLU层以及逐元素层)。然而,除了卷积层之外,这些层中的计算量非常小,小于整个神经网络中的1%。因此,内存访问目前是人工智能处理器执行神经网络过程中的一个严重的瓶颈。
背景技术部分的内容仅仅是发明人所知晓的技术,并不当然代表本领域的现有技术。
发明内容
针对现有技术中的至少一个,本申请通过利用数据传输的单向性以及局部数据依赖性,提出了一种通用的调度方法,用于优化内存访问。
本发明提供了一种可用于神经网络的算子融合方法,所述算子融合方法包括:
遍历所述神经网络对应的计算图中的算子,从所述计算图中选择当前算子和待融合算子;
按照一拆分尺寸,将所述待融合算子的输出数据拆分成多个输出块;
基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸;
基于所述拆分尺寸、所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,判断是否将所述当前算子与待融合算子融合在一起。
根据本发明的一个方面,所述判断是否可将所述当前算子与待融合算子融合在一起的步骤包括:如果所述拆分尺寸、与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸之和大于一阈值,判断可将所述当前算子与待融合算子融合;否则,判断不可将所述当前算子与待融合算子融合在一起。
根据本发明的一个方面,所述映射得到与所述输出块对应的所述当前算子的输入数据块的尺寸、以及所述当前算子与待融合算子之间的中间数据块的尺寸的步骤包括:基于所述输出块,通过形状推导和/或形状传递,得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸的大小、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸的大小。
根据本发明的一个方面,所述判断不可将所述当前算子与待融合算子融合在一起的步骤还包括:调整所述拆分尺寸,根据调整后的所述拆尺寸将所述待融合算子的输出数据拆分成对应的输出块;基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸;基于调整后的所述拆分尺寸、所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,进一步判断是否可将所述当前算子与待融合算子融合在一起。
根据本发明的一个方面,所述算子之间的数据流向为单向的。
本发明还涉及一种计算机可读存储介质,包括存储于其上的计算机可执行指令,所述可执行指令在被处理器执行时实施如上所述的算子融合方法。
本发明还涉及一种可用于神经网络的算子融合装置,所述算子融合装置包括:
选择单元,遍历所述神经网络对应的计算图中的算子,从所述计算图中选择当前算子和待融合算子;
拆分单元,配置成按照一拆分尺寸,将所述待融合层的输出数据拆分成多个输出块;
映射单元,配置成基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸;和
判断单元,配置成基于所述拆分尺寸、所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,判断是否将所述当前算子与待融合算子融合在一起。
本发明还涉及一种计算设备,包括:
一个或多个处理器;和
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上所述的方法。
经过测试,与未优化的情形相比,本发明的技术方案能够显著地降低内存访问量,减少执行的时间。
附图说明
图1示出了根据本申请一个实施例的算子融合方法;
图2示出了根据本申请一个实施例的待融合层的输出数据的划分方式;
图3示出了根据本申请一个实施例基于所述输出块映射得到与所述输出块对应的所述当前层的输入数据的数据块尺寸、以及所述当前层与待融合层之间的中间数据的数据块尺寸的示意图;
图4示出了根据本申请另一个实施例的算子融合方法;
图5示出了根据本申请一个实施例的计算机程序产品的框图;
图6示出了根据本申请一个实施例的一种可用于神经网络的算子融合装置;
图7示出了根据本申请一个实施例的一种计算设备;
图8示出了根据本申请进行算子融合后内存访问量与未进行优化时的内存访问量的对比示意图;和
图9示出了根据本申请进行算子融合后的神经网络加速与未进行优化时的神经网络加速的对比示意图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本公开的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
以下结合附图对本公开的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本公开,并不用于限定本公开。
深度学习框架是整个深度学习生态体系中的第一层。早期在Caffe中,Layer被当做是构建神经网络的基本元素,而在之后的深度学习框架,例如TensorFlow、MXNet中,虽然采用了不同的称呼,例如Operator,但与Caffe的layer在核心思想上依旧是相似的,都是将神经网络计算进一步拆分为各类常见的面向张量数据的算子,深度学习框架需要将神经网络映射的计算图结构所表达的深度学习任务具体化成可以在CPU或者人工智能处理器执行的指令和数据。在这个过程中,深度学习框架采用算子作为落实计算任务的具体元素,为每个算子都提供了在CPU或者人工智能处理器上执行的核函数(Kernel),根据计算图,深度学习框架调度执行计算图中每个算子对应的核函数,完成整个神经网络的计算。
为了解决背景技术部分提到的内存访问的瓶颈问题,本申请的发明人分析了神经网络的特性。发明人发现,神经网络所映射的计算图中的算子在CPU和人工智能处理器上通过核函数实现,是一种“片外存储→片上计算→片外存储”的模式,即神经网络中的算子的输入数据和输出数存于全局存储中,核函数需要由全局存储中读取输入数据,完成计算,将结果存回全局存储中。这带来了两个问题:首先,每个算子关于输入数据和输出数据的访存无法通过算子内的优化来避免;其次,每个算子都需要启动开销,对CPU之外的异构计算设备来说更是如此。为了解决这些问题,将神经网络对应的计算图中的两个或者更多连续的算子的核函数合并为一个新的核函数,使得所述的这些算子对应的计算任务只需要一次调度开销。因而,可以消除大量的从外部存储器(DRAM)到片上存储器的数据传输、以及从片上存储器到外部存储器的数据传输。经过测试,发明人发现,在ResNet-18神经网络中,如果所有的算子可以融合在一起的话,可以减少99.6%的数据传输。
然而,很难将实际的神经网络中的所有算子都融合在一起。其中的原因包括:在实际中,片上存储器的大小与神经网络处理的数据规模之间的不匹配,因为人工智能处理器的面积开销不可能太大,相应地,对人工智能处理器的片上存储器的面积开销也有限制。并且,人工智能处理器的片上存储器所需的功耗开销也应在合理范围之内。这些原因导致人工智能处理器的片上存储的数据规模有一定的限制。因而,假如把神经网络中的所有算子都融合在一起,那些被融合算子的中间数据的数据规模与片上存储器的实际存储的数据规模不相匹配。为了缓解这个矛盾,进一步分析可知,这些算子之间的中间结果被纳入了融合后的核函数的优化范围中,部分中间结果的访存因此存在可以被优化的可能,这种对中间结果的优化通常是基于计算过程中可以利用的数据局部独立性。基于这一工作原理,在一算子中,输出数据集合中的每一个点仅依赖于输入数据集合内的一个限定的区域。因此,输入数据和输出数据均可以被分隔或拆分成多个块,可以单独地计算每一个块,实现将神经网络对应的计算图中更多的算子融合在一起。
图1示出了根据本申请一个实施例的算子融合方法100。算子融合方法100可用于神经网络,以caffe为例,神经网络包括多个处理层,包括但不限于卷积层、BatchNorm层、Scale层、ReLU层、池化层(Pooling layer)、逐元素层、内积层(InnerProduct layer)、SoftMax层等。在人工智能处理器的设计和构建阶段,算子融合方法可协助规划和调度,将多个算子融合在一起,以减少片上存储器与片外存储器之间的数据交换量,解决或者缓解背景技术部分所提及的内存数据交换的技术瓶颈问题。以下以caffe为例,参考图1详细描述算子融合方法100。用于神经网络的算子融合方法包括:
S101:遍历所述神经网络对应的计算图中的算子,从所述计算图中选择当前算子和待融合算子。
,待融合算子对应层称谓待融合层,当前算子对应层称谓当前层,待融合层位于当前层的下游。但本领域技术人员容易理解,待融合算子对应层也可以位于当前算子对应层的上游。以卷积层和BatchNorm层为例,如果卷积层作为当前层,BatchNorm层作为待融合层,则BatchNorm层可以位于卷积层的上游,即BatchNorm层的输出数据是卷积层的输入数据。BatchNorm层也可以位于卷积层的下游,即卷积层的输出数据是BatchNorm层的输入数据。
另外根据本申请的一个优选实施例,选择所述神经网络的第一层作为当前层,选择与其紧密相邻的下一层为待融合层,逐层进行融合判断。
步骤S102:按照一拆分尺寸,将所述待融合算子的输出数据拆分成多个输出块。
图2示出了待融合层的输出数据OD2,其例如为M*N维的数据。按照预设的拆分尺寸,待融合层的输出数据OD2被拆分成m*n个输出块,其中m小于或等于M,n小于或等于N,分别为OD2(1,1)、OD2(1,2)、一直到OD2(m,n)。根据本申请的一个优选实施例,所述拆分尺寸选择成使得所述待融合层L2的输出数据OD2能够被均匀地拆分成m*n份。但本申请不限于此,也可以实现非均匀地拆分,例如图2中,第m行的输出块与第n列的输出块的尺寸,可以小于其余输出块的尺寸,这些都在本申请的保护范围内。
S103:基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸。
图3示出了步骤S103的一个实施例。如图3所示,其中将当前层L1和待融合层L2以数据变换的方式示出,而未示出实体的层结构。对于当前层L1,其输入数据为ID1,当前层L1对输入数据ID1进行预设的变换处理后,得到输出数据OD1,输出数据OD1将作为输入数据,提供给待融合层L2,输出数据OD1也可称为当前层L1与待融合层L2之间的中间数据。待融合层L2对该中间数据OD1进行预设的变换处理后,得到输出数据OD2。
由于当前层L1和待融合层L2中的每一层所执行的数据变换处理都可以是预先设定的,因此根据输出数据的输出块,可以反向推导出该层的输入数据的数据块。例如在图3中,以输出数据的输出块OD2(m,1)为例,根据待融合层L2所执行的变换处理,可以推导得到中间数据OD1中的数据块OD1(m,1)的数据块尺寸,数据块OD1(m,1)的数据块尺寸可以比输出块OD2(m,1)的尺寸更大、更小、或者二者相同,这些都在本申请的保护范围内。类似的,根据中间数据OD1中的数据块OD1(m,1)的数据块尺寸,并根据所述当前层L1所执行的变换处理,可以得到所述当前层L1的输入数据ID1的数据块ID1(m,1)的尺寸。换句话说,上述过程,是根据待融合层的输出数据块尺寸,反向推导得到当前层中所需要的输入数据的数据块尺寸、以及中间数据的数据块尺寸。
图3中示出了待融合层L2是位于当前层L1下游,并且二者紧密相邻,当前层L1的输出即为待融合层L2的输入。本申请的保护范围不限于此,待融合层L2与当前层L1之间也可以相隔更多的层。在此情况下,也可以应用本申请上述的教示,通过反向推导,得到当前层中所需要的输入数据的数据块尺寸、以及中间数据的数据块尺寸,当然在此情况下,具有多层的中间数据,这些都在本申请的保护范围内。
S104:基于所述拆分尺寸、所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,判断是否将所述当前算子与待融合算子融合在一起。
在S103中,反向得到当前算子中所需要的输入数据的数据块尺寸、以及中间数据的数据块尺寸之后,就可以判断是否将所述当前算子与待融合算子二者融合在一起。例如,根据本申请的一个优选实施例,将所述待融合算子的输出数据拆分后的输出块的尺寸(即所述拆分尺寸),与所述当前算子的输入数据的数据块尺寸以及所述当前算子与待融合算子之间的中间数据的数据块尺寸进行相加,求和结果与一阈值进行比较,如果大于该阈值,判断可将所述当前算子与待融合层算子融合,这样可以根据;否则,判断不可将所述当前算子与待融合算子融合在一起。
在本实施例中,所述阈值例如是人工智能芯片的片上存储器的存储容量,或者是片上存储器中可供分配的存储容量。
如果可以将所述当前算子与所述待融合算子融合在一起,那么在融合之后,所述当前算子与待融合算子可作为一个集成的算子来进行运算操作,当前算子与待融合算子之间的中间运算数据(如图3中所示的OD1),将可以存储在人工智能芯片的片上存储器上,而无需存储到外部的存储器上,因而节省了大量的存储器带宽。
在图3中,基于现有技术的人工智能处理器,当前层L1处理后得到的中间数据OD1,会首先被存储到外部存储器中,然后当待融合层L2需要进行处理时,人工智能处理器再从外部存储器中加载该中间数据。因而同一组数据OD1,需要进行写出和读入两次操作,每次操作都会占用有限的存储器带宽。而根据本申请的上述技术方案,当前算子与待融合算子在满足一定条件的情况下可以融合在一起,使得中间数据无需被连续地写出和读入,因而能够极大地节省存储器的带宽。
根据本申请的一个优选实施例,S103包括:基于所述输出块,通过形状推导和/或形状传递,得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸的大小、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸的大小。形状推导例如是对于一个指定的算子所对应的运算操作,根据给定的输出(输入)数据的坐标位置范围,给出对应的输入(输出)数据的坐标位置范围。将计算图中的算子经融合处理后,获得融合图。形状传递例如是对于一个融合图来说,根据融合图中算子之间的连接关系,由输出(输入)数据的坐标位置范围,给出对应的输入(输出)数据的坐标位置范围。形状推导关注于运算操作本身,与当前运算操作的上下游无关,形状传递关注融合图中算子之间的连接关系,并不提供运算操作的输入(输出)数据的坐标映射关系。
图4示出了根据本申请一个优选实施例的算子融合方法200。下面参考图4进行详细描述。
S201:遍历所述神经网络对应的计算图中的算子,从计算图中选择当前算子和待融合算子。与图1所示的算子融合方法100中的S101类似。
S202:按照一拆分尺寸,将待融合算子的输出数据拆分成多个输出块。与图1所示的算子融合方法100中的S102类似。
S203:基于输出块,通过形状传递,得到与输出块对应的当前算子的输入数据的数据块尺寸、以及当前算子与待融合算子之间的中间数据的数据块尺寸。与图1所示的算子融合方法100中的S103类似。此处不再赘述。
S204:进行内存分配。在实际应用中,将人工智能处理的片上内存或者片上内存的规定部分分配给所述输出块、输入数据的数据块、以及中间数据的数据块。
S205,判断内存分配是否成功。例如可以将所述输出块的尺寸(即拆分尺寸)、输入数据的数据块尺寸、以及中间数据的数据块尺寸之和与可供分配的片上存储器的存储空间进行比较,如果未超出该存储空间,则分配成功,进行到步骤S206;如果超出该存储空间,则分配失败,进行到步骤S207。
在步骤S205中如果判断内存分配成功,则表明当前算子与待融合算子可以融合在一起,那么接下来在步骤S206中,将下一算子作为待融合算子,返回步骤S202,继续判断是否可以进一步融合,也就是将当前算子、待融合算子、下一算子均融合在一起。
如果在步骤S205中判断内存分配失败,则进行到步骤S207,判断拆分尺寸是否可以减小。本领域技术人员容易理解,拆分尺寸可以是动态变化的,例如在刚开始判断一个待融合算子是否可与当前算子融合的阶段,可以将拆分尺寸设定为较大的值。如果在该拆分尺寸下,判断的结论为不可融合,那么可以尝试减小拆分尺寸,如步骤S208所示的。拆分尺寸减小的幅度,可以根据需要来设定。当然,本领域技术人员容易理解,拆分尺寸不能无限制减小,可设置其下限阈值。在步骤S207,当判断拆分尺寸尚未达到其下限阈值时,进行到步骤S208,减小拆分尺寸,回到步骤S202,根据减小后的拆分尺寸,将所述待融合算子的输出数据重新拆分成对应的输出块,并进行后续的处理和判断;当判断拆分尺寸已经达到其下限阈值时,则判断不可进一步融合,进行到步骤S209,返回可融合的算子的列表,方法200结束。
在实际应用中,以caffe为例,,所述神经处理网络具有多个处理层,处理层包括Convolution层、BatchNorm层、Scale层、ReLU层、Pooling层、Eltwise层、InnerProduct层、和SoftMax层中的一个或多个。
根据本申请的一个实施例,其中所述计算图中的算子之间的数据流向为单向的,以caffe为例,例如在相连接的两层之间,数据只能够从其中一层流向另一层,而不能从另一层流向所述的一层。
图5示出了根据本申请一个实施例的一种计算机程序产品500的框图。信号承载介质502可以被实现为或者包括计算机可读介质506、计算机可记录介质508、计算机通信介质510或者它们的组合,其存储可配置处理单元以执行先前描述的过程中的全部或一些的编程指令504。这些指令可以包括例如用于使一个或多个处理器执行如下处理的一个或多个可执行指令:从所述计算图的算子中选择当前算子和待融合算子;按照一拆分尺寸,将所述待融合算子的输出数据拆分成多个输出块;基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸;基于所述拆分尺寸、所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,判断是否将所述当前算子与待融合算子融合在一起。
图6示出了根据本申请一个实施例的一种可用于神经网络的算子融合装置600,如图6所示,所述层融合装置600包括:
选择单元601,配置成从所述计算图中的算子中选择当前层和待融合层;
拆分单元602,配置成按照一拆分尺寸,将所述待融合层的输出数据拆分成多个输出块;
映射单元603,配置成基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸;和
判断单元604,配置成基于所述拆分尺寸、所述当前层的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,判断是否将所述当前算子与待融合算子融合在一起。
图7示出了根据本申请一个实施例的一种计算设备700。如图7所示,计算设备700包括:
一个或多个处理器701;和
存储装置702,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上所述的方法100和200。
本发明的发明人设计了一个原型加速器作为实验平台,来测试本申请上述方法能够带来的效果。该原型加速器采用寒武纪的DaDianNao的设计。在实验平台上,外部存储器DRAM和片上存储器之间的带宽被限制为1.5GB/S,加速器的计算能力为200GFLOPS,片上存储器为768KB。
选择五种典型的神经网络模型来来评估本申请的方法,分别为VGG-19,GoogleNet,InceptionV3,ResNet-18,以及ResNet-50,比较在没有优化情况下与根据本申请进行算子融合的情况下的内存访问量的降低以及执行时间的减少。
比较的结果在图8和图9中清楚示出。图8中显示出与未优化情形相比,内存访问量的降低,在测试例中,获得了超过15%的内存访问量的降低,尤其是对于ResNet-50,获得了54%的降低。执行时间的性能提升在图9中具有类似的趋势。如图9所示,在VGG-19中,获得了至少1.26倍的性能提升,在ResNet-50中,获得了最多2.62倍的性能提升。
另外,若无特别说明,在本披露各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
根据本公开的实施例,一个子处理单元可具有多个输入,意味着有多个数据队列的尾部附着在该子处理单元的输入连接点上。该子处理单元无需知道这些数据队列的头部附着在其他哪个子处理连接点的输出上,因为系统会自动地完成输入和输出的匹配。对于子处理单元的输出也是同样的。这样,每个子处理单元只需要关注自身的输入输出连接点与哪个数据队列连接,而不需要关注它的任何一个前向节点,达到了插件间解耦的效果。子处理单元只需要考虑自身的输入输出,关注点的确定使子处理单元的实现变得简单,可复用性提高。考虑流水线的灵活性,每个子处理单元的连接点(无论是输入输出连接点)的数量不作任何限制,可根据需求进行配置。连接点的个数通过软件或硬件的参数进行配置,甚至可以实现连接点个数动态可变的子处理单元。
同时,处理逻辑的动态耦合的结构意味着对于同一深度的不同分支上的子处理单元可以并行的处理同一帧图像数据。可最大化资源利用率,解决了现有技术的缺陷。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。
技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。最后应说明的是:以上所述仅为本公开的优选实施例而已,并不用于限制本公开,尽管参照前述实施例对本公开进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (8)

1.一种可用于神经网络的算子融合方法,其特征在于,所述算子融合方法包括:
遍历所述神经网络对应的计算图中的算子,从所述计算图中选择当前算子和待融合算子;
按照一拆分尺寸,将所述待融合算子的输出数据拆分成多个输出块;
基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸;
基于所述拆分尺寸、所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,判断是否将所述当前算子与待融合算子融合在一起。
2.如权利要求1所述的算子融合方法,其特征在于,所述判断是否可将所述当前算子与待融合算子融合在一起的步骤包括:
如果所述拆分尺寸、与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸之和大于一阈值,将所述当前算子与待融合算子融合;否则,不将所述当前算子与待融合层融合在一起。
3.如权利要求2所述的算子融合方法,其特征在于,所述映射得到与所述输出块对应的所述当前算子的输入数据块的尺寸、以及所述当前算子与待融合算子之间的中间数据块的尺寸的步骤包括:
基于所述输出块,通过形状推导和/或形状传递,得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸的大小、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸的大小。
4.如权利要求2-3中任一项所述的算子融合方法,其特征在于,所述判断不可将所述当前算子与待融合算子融合在一起的步骤还包括:
调整所述拆分尺寸,根据调整后的所述拆尺寸将所述待融合算子的输出数据拆分成对应的输出块;
基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸;
基于调整后的所述拆分尺寸、所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,进一步判断是否可将所述当前算子与待融合算子融合在一起。
5.如权利要求1-3中任一项所述的算子融合方法,其特征在于,所述算子之间的数据流向为单向的。
6.一种计算机可读存储介质,其特征在于,包括存储于其上的计算机可执行指令,所述可执行指令在被处理器执行时实施如权利要求1-5中任一项所述的算子融合方法。
7.一种可用于神经网络的算子融合装置,其特征在于,所述算子融合装置包括:
选择单元,遍历所述神经网络对应的计算图中的算子,从所述计算图中选择当前算子和待融合算子;
拆分单元,配置成按照一拆分尺寸,将所述待融合算子的输出数据拆分成多个输出块;
映射单元,配置成基于所述输出块,映射得到与所述输出块对应的所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸;和
判断单元,配置成基于所述拆分尺寸、所述当前算子的输入数据的数据块尺寸、以及所述当前算子与待融合算子之间的中间数据的数据块尺寸,判断是否将所述当前算子与待融合算子融合在一起。
8.一种计算设备,其特征在于,包括:
一个或多个处理器;和
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-5中任一项所述的方法。
CN201910750140.3A 2019-08-14 2019-08-14 一种用于神经网络的算子融合方法及其相关产品 Active CN110490309B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910750140.3A CN110490309B (zh) 2019-08-14 2019-08-14 一种用于神经网络的算子融合方法及其相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910750140.3A CN110490309B (zh) 2019-08-14 2019-08-14 一种用于神经网络的算子融合方法及其相关产品

Publications (2)

Publication Number Publication Date
CN110490309A true CN110490309A (zh) 2019-11-22
CN110490309B CN110490309B (zh) 2022-06-07

Family

ID=68549919

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910750140.3A Active CN110490309B (zh) 2019-08-14 2019-08-14 一种用于神经网络的算子融合方法及其相关产品

Country Status (1)

Country Link
CN (1) CN110490309B (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111160551A (zh) * 2019-12-04 2020-05-15 上海寒武纪信息科技有限公司 计算图执行方法、计算机设备及存储介质
CN111723935A (zh) * 2020-06-24 2020-09-29 湖北亿咖通科技有限公司 神经网络计算图的处理方法、计算机存储介质及电子设备
CN112579063A (zh) * 2021-03-01 2021-03-30 之江实验室 一种用于深度学习编译器中探索优化空间的加速方法
CN112884123A (zh) * 2021-02-23 2021-06-01 杭州海康威视数字技术股份有限公司 神经网络优化方法、装置、电子设备及可读存储介质
CN112947997A (zh) * 2019-12-11 2021-06-11 阿里巴巴集团控股有限公司 数据处理方法、装置以及指令融合方法、代码生成方法
CN112965710A (zh) * 2019-12-13 2021-06-15 阿里巴巴集团控股有限公司 计算图的处理方法、装置和系统
CN113065639A (zh) * 2021-03-08 2021-07-02 深圳云天励飞技术股份有限公司 算子融合方法、系统、设备及存储介质
WO2021139633A1 (zh) * 2020-01-07 2021-07-15 深圳鲲云信息科技有限公司 深度学习模型的转化方法、装置、服务器及存储介质
CN113297860A (zh) * 2021-06-24 2021-08-24 上海携旅信息技术有限公司 机器翻译模型的优化方法、系统、电子设备和存储介质
CN113449859A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种数据处理方法及其装置
WO2021190127A1 (zh) * 2020-03-27 2021-09-30 华为技术有限公司 一种数据处理方法和数据处理设备
WO2022016860A1 (zh) * 2020-07-21 2022-01-27 苏州浪潮智能科技有限公司 一种基于tvm的并行卷积融合的方法和设备
WO2022063217A1 (zh) * 2020-09-28 2022-03-31 中科寒武纪科技股份有限公司 向前融合神经网络的装置、板卡、方法及可读存储介质
WO2022109779A1 (zh) * 2020-11-24 2022-06-02 华为技术有限公司 一种数据处理的方法以及相关设备
CN115147314A (zh) * 2022-09-02 2022-10-04 腾讯科技(深圳)有限公司 图像处理方法、装置、设备以及存储介质
CN115408568A (zh) * 2021-05-26 2022-11-29 中科寒武纪科技股份有限公司 一种对神经网络的算子进行融合的方法和相关产品
WO2022261928A1 (zh) * 2021-06-18 2022-12-22 华为技术有限公司 运算加速方法及运算加速器
CN115659281A (zh) * 2022-11-16 2023-01-31 之江实验室 一种自适应加速算子融合的方法及装置
CN116501509A (zh) * 2023-06-29 2023-07-28 南京邮电大学 一种面向微控制器的深度学习内存优化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109684087A (zh) * 2018-12-17 2019-04-26 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN109726800A (zh) * 2018-12-29 2019-05-07 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN109754073A (zh) * 2018-12-29 2019-05-14 北京中科寒武纪科技有限公司 数据处理方法、装置、电子设备和可读存储介质
CN112085186A (zh) * 2019-06-12 2020-12-15 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109684087A (zh) * 2018-12-17 2019-04-26 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN109726800A (zh) * 2018-12-29 2019-05-07 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN109754073A (zh) * 2018-12-29 2019-05-14 北京中科寒武纪科技有限公司 数据处理方法、装置、电子设备和可读存储介质
CN112085186A (zh) * 2019-06-12 2020-12-15 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李宗凌 等: "基于多并行计算和存储的CNN加速器", 《计算机技术与发展》 *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111160551B (zh) * 2019-12-04 2023-09-29 上海寒武纪信息科技有限公司 计算图执行方法、计算机设备及存储介质
CN111160551A (zh) * 2019-12-04 2020-05-15 上海寒武纪信息科技有限公司 计算图执行方法、计算机设备及存储介质
CN112947997A (zh) * 2019-12-11 2021-06-11 阿里巴巴集团控股有限公司 数据处理方法、装置以及指令融合方法、代码生成方法
CN112965710A (zh) * 2019-12-13 2021-06-15 阿里巴巴集团控股有限公司 计算图的处理方法、装置和系统
WO2021139633A1 (zh) * 2020-01-07 2021-07-15 深圳鲲云信息科技有限公司 深度学习模型的转化方法、装置、服务器及存储介质
CN113449859A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种数据处理方法及其装置
WO2021190127A1 (zh) * 2020-03-27 2021-09-30 华为技术有限公司 一种数据处理方法和数据处理设备
CN111723935A (zh) * 2020-06-24 2020-09-29 湖北亿咖通科技有限公司 神经网络计算图的处理方法、计算机存储介质及电子设备
WO2022016860A1 (zh) * 2020-07-21 2022-01-27 苏州浪潮智能科技有限公司 一种基于tvm的并行卷积融合的方法和设备
WO2022063217A1 (zh) * 2020-09-28 2022-03-31 中科寒武纪科技股份有限公司 向前融合神经网络的装置、板卡、方法及可读存储介质
WO2022109779A1 (zh) * 2020-11-24 2022-06-02 华为技术有限公司 一种数据处理的方法以及相关设备
CN112884123A (zh) * 2021-02-23 2021-06-01 杭州海康威视数字技术股份有限公司 神经网络优化方法、装置、电子设备及可读存储介质
CN112884123B (zh) * 2021-02-23 2024-03-01 杭州海康威视数字技术股份有限公司 神经网络优化方法、装置、电子设备及可读存储介质
CN112579063A (zh) * 2021-03-01 2021-03-30 之江实验室 一种用于深度学习编译器中探索优化空间的加速方法
CN113065639A (zh) * 2021-03-08 2021-07-02 深圳云天励飞技术股份有限公司 算子融合方法、系统、设备及存储介质
CN113065639B (zh) * 2021-03-08 2023-06-13 深圳云天励飞技术股份有限公司 算子融合方法、系统、设备及存储介质
CN115408568A (zh) * 2021-05-26 2022-11-29 中科寒武纪科技股份有限公司 一种对神经网络的算子进行融合的方法和相关产品
WO2022247880A1 (zh) * 2021-05-26 2022-12-01 中科寒武纪科技股份有限公司 一种对神经网络的算子进行融合的方法和相关产品
CN115408568B (zh) * 2021-05-26 2024-04-05 中科寒武纪科技股份有限公司 一种对神经网络的算子进行融合的方法和相关产品
WO2022261928A1 (zh) * 2021-06-18 2022-12-22 华为技术有限公司 运算加速方法及运算加速器
CN113297860A (zh) * 2021-06-24 2021-08-24 上海携旅信息技术有限公司 机器翻译模型的优化方法、系统、电子设备和存储介质
CN115147314B (zh) * 2022-09-02 2022-11-29 腾讯科技(深圳)有限公司 图像处理方法、装置、设备以及存储介质
CN115147314A (zh) * 2022-09-02 2022-10-04 腾讯科技(深圳)有限公司 图像处理方法、装置、设备以及存储介质
CN115659281A (zh) * 2022-11-16 2023-01-31 之江实验室 一种自适应加速算子融合的方法及装置
CN115659281B (zh) * 2022-11-16 2023-10-27 之江实验室 一种自适应加速算子融合的方法及装置
CN116501509A (zh) * 2023-06-29 2023-07-28 南京邮电大学 一种面向微控制器的深度学习内存优化方法
CN116501509B (zh) * 2023-06-29 2023-09-08 南京邮电大学 一种面向微控制器的深度学习内存优化方法

Also Published As

Publication number Publication date
CN110490309B (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
CN110490309A (zh) 一种用于神经网络的算子融合方法及其相关产品
WO2021190127A1 (zh) 一种数据处理方法和数据处理设备
Huynh et al. Deepsense: A gpu-based deep convolutional neural network framework on commodity mobile devices
CN114721833B (zh) 一种基于平台业务类型的智能云端协调方法和装置
CN110175671A (zh) 神经网络的构建方法、图像处理方法及装置
CN110674936A (zh) 一种神经网络处理方法、装置、计算机设备及存储介质
CN104809498A (zh) 一种基于神经形态电路的类脑协处理器
CN108256636A (zh) 一种基于异构计算的卷积神经网络算法设计实现方法
CN104657133B (zh) 移动群智感知中一种用于单时间窗口任务的激励方法
CN109754068A (zh) 基于深度学习预训练模型的迁移学习方法及终端设备
CN112163601A (zh) 图像分类方法、系统、计算机设备及存储介质
CN106682702A (zh) 深度学习方法和系统
CN115860081B (zh) 一种芯粒算法调度方法、系统、电子设备及存储介质
CN109496319A (zh) 人工智能处理装置硬件优化方法、系统、存储介质、终端
CN106547854B (zh) 基于贪心萤火虫算法的分布式文件系统存储优化节能方法
Xue Intelligent system for products personalization and design using genetic algorithm
CN110503199A (zh) 运算节点的拆分方法和装置、电子设备和存储介质
CN109643336A (zh) 人工智能处理装置设计模型建立方法、系统、存储介质、终端
Zhang et al. Hybrid feature CNN model for point cloud classification and segmentation
CN109416688A (zh) 用于灵活的高性能结构化数据处理的方法和系统
CN113158970A (zh) 一种基于快慢双流图卷积神经网络的动作识别方法与系统
CN207976876U (zh) 多核心传感器数据处理芯片
CN110019952A (zh) 视频描述方法、系统及装置
CN110442753A (zh) 一种基于opc ua的图数据库自动建立方法及装置
Zhang et al. Fast contour detection with supervised attention learning

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 644, scientific research complex building, No. 6, South Road, Academy of Sciences, Haidian District, Beijing 100086

Applicant after: Zhongke Cambrian Technology Co.,Ltd.

Address before: Room 644, scientific research complex building, No. 6, South Road, Academy of Sciences, Haidian District, Beijing 100086

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant