CN111401539A - 一种数据处理方法、装置、计算机设备及存储介质 - Google Patents

一种数据处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN111401539A
CN111401539A CN201910910171.0A CN201910910171A CN111401539A CN 111401539 A CN111401539 A CN 111401539A CN 201910910171 A CN201910910171 A CN 201910910171A CN 111401539 A CN111401539 A CN 111401539A
Authority
CN
China
Prior art keywords
operator
tensor data
glue
data
operators
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
Application number
CN201910910171.0A
Other languages
English (en)
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201910910171.0A priority Critical patent/CN111401539A/zh
Publication of CN111401539A publication Critical patent/CN111401539A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning 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)
  • Machine Translation (AREA)

Abstract

本申请实施例公开了一种数据处理方法、装置、计算机设备及存储介质,当神经网络模型中存在可以优化的结构时,通过对神经网络模型执行多种优化操作中的至少一个优化操作,可以实现针对神经网络模型的优化,提高神经网络模型的整体性能。当接收到机器学习处理任务的请求时,调用优化后的神经网络模型可以减少冗余计算,继而减少计算机设备的资源消耗。

Description

一种数据处理方法、装置、计算机设备及存储介质
技术领域
本申请涉及信息处理技术领域,尤其涉及一种数据处理方法、装置、计算机设备及存储介质。
背景技术
神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,这种网络由大量的节点(或称神经元)之间星湖连接构成,通过调整内部大量节点之间相互连接的关系,利用输入数据、权值产生输出数据模拟人脑的信息处理过程处理信息并生成模式识别之后的结果。
现有中,算法设计者在对神经网络模型进行设计时,往往出于神经网络模型在描述上的整洁和简洁的目的,在神经网络模型中引入了“胶水”算子。这里,“胶水”算子是指算子本身并不涉及任何计算逻辑,其输入数据和输出数据不管是数的数量,亦或是数值本身都没有发生变化。然而,不合理的“胶水”算子的引入和组合可以导致在更高一级的计算图层面上在神经网络模型的执行过程中加入了一些不必要、不合理的访存行为,影响了人工智能处理器针对神经网络模型的计算部分在硬件结构和指令设计上进行针对优化所带来的优异的性能的提升,降低了神经网络模型的整体性能。那么,当计算机设备在运行上述包含可以优化的“胶水”算子的神经网络模型时,这无疑加大了计算机设备的资源消耗。
发明内容
本申请实施例提供一种数据处理方法、装置、计算机设备及存储介质,可以优化神经网络模型,提高神经网络模型的整体性能。此外,在计算机设备运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
为实现上述目的,第一方面,本申请实施例提供了一种数据处理方法,该方法包括:
通用处理器获取神经网络模型对应的计算图;其中,所述计算图中包含胶水算子;所述胶水算子用于对所述计算图中的张量数据的参数进行调整;
所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,获得优化结果;其中,所述胶水算子的逻辑关系包括transpose算子与其他算子的逻辑关系;所述其他算子包括reshape算子、concat算子、split算子中的任意一种算子;
所述通用处理器根据所述优化结果获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
为实现上述目的,第二方面,本申请实施例提供了一种数据处理装置,该数据处理装置包括用于执行上述第一方面的方法的单元。具体地,该装置可以包括:
获取单元,用于获取神经网络模型对应的计算图;其中,所述计算图中包含胶水算子;所述胶水算子用于对所述计算图中的张量数据的参数进行调整;
优化单元,用于根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,获得优化结果;其中,所述胶水算子的逻辑关系包括transpose算子与其他算子的逻辑关系;所述其他算子包括reshape算子、concat算子、split算子中的任意一种算子;
执行单元,用于根据所述优化结果获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
为实现上述目的,第三方面,本申请实施例提供了一种计算机设备,包括多个异构处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储支持计算机设备执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
第五方面,本申请实施例提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
实施本申请实施例,计算机设备根据神经网络模型中胶水算子的逻辑关系对神经网络模型进行优化,以提高神经网络模型的整体性能。当计算机设备调用优化后的神经网络模型执行机器学习处理任务时,可以减少计算机设备的资源消耗。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1A是本申请实施例提供的一种reshape算子语义的示意图;
图1B是本申请实施例提供的一种transpose算子语义的示意图;
图1C是本申请实施例提供的一种concat算子语义的示意图;
图1D是本申请实施例提供的一种split算子语义的示意图;
图1E是本申请实施例提供的一种张量数据连续存储的示意图;
图1F是本申请实施例提供的一种保证操作的等价性的示意图;
图1G是本申请实施例提供的一种含stride的内存分布的示意图;
图2是本申请实施例提供的一种计算机设备的结构示意图;
图3是本申请实施例提供的一种数据处理方法的流程示意图;
图4A是本申请实施例提供的一种神经网络模型的优化示意图;
图4B是本申请实施例提供的另一种神经网络模型的优化示意图;
图4C是本申请实施例提供的另一种神经网络模型的优化示意图;
图4D是本申请实施例提供的另一种神经网络模型的优化示意图;
图5是本申请实施例提供的一种数据处理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了便于更好的理解本申请所描述的技术方案,下面先解释本申请实施例所涉及的技术术语:
(1)张量(tensor)
在本技术方案中,张量仅仅是对存储的一块数据的特征描述,张量记录了数据的形状、类型等信息。
本申请实施例中,张量应该理解为张量数据,可以包括神经网络模型中输入张量数据、输出张量数据,也可以包括特征张量数据等。
以人工智能深度学习框架TensorFlow为例,一般使用阶(rank),形状(shape)和维数(dimension number)来描述张量的维度,其关系可以表示为表1所示:
表1
Figure BDA0002213619890000041
Figure BDA0002213619890000051
如表1所示,张量A=4,其表示一个数。
如表1所示,张量A=[6,2],其表示二维矩阵,具体地,该矩阵为6行2列的矩阵。
(2)算子的划分
现有中,算法设计者采用算子作为基本单位,辅以与算子关联的张量数据来搭建描述神经网络算法的计算图。在本申请实施例中,按照算子的语义进行划分,可以把目前深度学习中的算子分为两类。下面对其进行详细阐述:
第一类算子负责从输入特征中获取输出特征,他们有着各自特定的计算任务,会对输入数据进行乘法、加法、非线性计算、比较挑选以及其他的数学运算。例如,卷积算子使用卷积核对输入特征图像的局部区域进行卷积计算,通过对输入特征图像里的数据的线性计算得到输出特征;又例如,全连接算子使用矩阵乘法的方式对输入的所有特征进行线性组合;又例如,池化算子对输入数据进行采样得到输出数据,等等。
另一类算子的语义中并不涉及任何计算逻辑,其输入数据和输出数据不管是数值的数量,亦或是数值本身都没有发生任何变化,这类算子通常是用来对神经网络模型的计算图中的张量数据的格式、形状以及内存中的排布进行调整,为的是把神经网络模型上游计算得到的张量数据调整成对下游的计算更好和方便的形式,起到了“粘合”神经网络上下文计算的部分。具体地,这一类算子被称为“胶水”算子。那么,相应地,计算图中由“胶水”算子构成的部分称为“胶水”子图。
(3)“胶水”算子
在本申请实施例中,“胶水”算子有4种,包括reshape算子、transpose算子、concat算子、split算子。接下来对其一一进行介绍:
A、reshape算子
在本申请实施例中,reshape算子,也即,张量重塑算子,是指对张量的形状进行重新诠释。
在实际应用中,reshape算子可以用于对张量数据的形状进行调整。具体地,reshape算子可以表示为:tf.reshape(tensor,shape,name=None),用于将tensor变换为参数shape的形式。
在一种情形中,参数shape=[-1],表示将tensor展开成一个列表。
在一种情形中,参数shape=[a,b,c,...,n],其中,a,b,c,...n均大于0的正整数,表示将tensor变换为多维矩阵。在一种情形中,参数shape=[a,-1,c,...,n],这里,b=-1,a,c,...,n均为大于0的正整数,表示tf根据tensor的原尺寸,自动计算b的值。
以张量A=[3,2,4]为例,当对张量A执行reshape1算子操作之后,得到张量B,其中,张量B=[2,6,2]。具体地,可以参见如图1A所示的reshape算子语义的示意图。
B、transpose算子
在本申请实施例中,transpose算子,也即,张量转置算子,是指对张量进行转置。
在实际应用中,transpose算子可以用于调整张量数据的维度顺序。具体地,transpose算子可以表示为:tf.transpose(a,perm=None,name=’transpose’),用于按照perm参数调换tensor的顺序。这里,perm参数为自然数列[1,2,3,...,n]的一个全排列,不同的全排列表示不同的transpose算子。
一般情况下,多维张量有多个维度且彼此之间存在先后顺序,transpose算子可以改变维度的先后顺序。此外,需要说明的是,在一些场景下,transpose算子又被称为permute算子。
以张量A=[3,2,4]为例,当对张量A执行transpose算子操作之后,得到张量B,其中,张量B=[4,2,3]。具体地,可以参见如图1B所示的transpose算子语义的示意图。
C、concat算子
在本申请实施例中,concat算子,也即,拼接算子,用于将多个张量数据沿着指定的维度拼接成一个张量。除了在指定维度外,输入张量的其他维度应该保持一致。通过concat算子,神经网络将代表来自上游不同位置的特征的多个张量拼接成一个,从而可以在下游计算中对这些特征共同进行处理。具体地,可以参见图1C所示的concat算子语义的示意图。
D、split算子
在本申请实施例中,split算子,也即拆分算子,用于将一个张量在指定维度上拆分成多个张量。拆分后的多个张量除了指定维度之外,在其他维度上保持一致。通过split算子,可以把属于同一张量数据的特征拆成多份,从而在后续计算中分别进行针对性处理。具体地,可以参见图1D所示的split算子语义的示意图。
总的来说,在本申请实施例中,胶水算子用于对神经网络模型对应的计算图中的张量数据的格式、张量数据的形状和张量数据在内存中的排布中的至少一种进行调整。
需要说明的是,在本申请实施例中,胶水算子可以包括但不限于上述4种不同类型的算子,还可以包括其他算子,本申请实实施例不作具体限定。
(4)张量数据在存储中的数据排布
神经网络计算中使用多维张量作为算子间数据传递的基本单位。一般情况下,数据以连续存储的方式在内存中。例如,如图1E所示,数据存储在I0-I15间连续的16个比特位中。
在本申请实施例中,存储数据的顺序与张量由外到内把所有维度一次展开到的一维数据中元素的顺序相同,访问张量中数据根据元素在不同维度的坐标以及维度本身来决定。例如,形状为(D0,D1,D2)的张量,存储在大小为D0×D1×D2的连续内存中,要访问张量中坐标(n0,n1,n2)的数据,可以基于数据在内存中的起始地址和通过计算得到的数据偏移(n0×D1+n1)×D2+n2来确定数据在内存中的地址。
可以理解的是,使用这种紧密连续的存储方式来存储多维张量数据非常直观且方便,元素坐标和其在内存中的偏移的换算也非常简洁。现有中,深度学习框架,例如,以Caffe、MXNet为例,都是使用这种方式来管理神经网络模型中张量数据的内存管理,并在此基础上实现卷积、池化等各种算子在通用处理器、人工智能处理器(例如,GPU)上的核函数。然而,这种内存排布对性能来说却远远不是最优的。为了满足硬件设计、提高性能,硬件厂商设计了不同的数据在内存中的排布,这些与众不同的排布是导致“胶水”子图在神经网络处理上出现性能浪费的主要原因。
(5)维度顺序
以卷积神经网络为例(具体地,该卷积神经网络用语图像分类或物体检测),,神经网络模型的计算图中的张量数据一般有4个维度,分别是表示当前计算所处理的数据的批量大小的N,表示特征图像数量的C,表示特征图像尺寸的H和W。
在本申请实施例中,张量数据的维度顺序可以为NCHW,即N是求解偏移过程中最外侧的维度,而W是最内侧维度。例如,Caffe中默认张量数据使用该维度顺序;MXNet以及TensorFlow可以支持该维度顺序。坐标为(n,c,h,w)的元素在存储中的偏移为((n×C+c)×H+h)×W+w。
在本申请实施例中,张量数据的维度顺序还可以为NHWC(这里,C是最内侧维度),相应的坐标向偏移的换算方法是((n×H+h)×W+w)×C+c。在实际应用中,NHWC相比于NCHW更加接近BMP(全称:Bitmap)的图片数据存储格式,BMP格式的文件中按照一个个像素点来存储数据,每个像素点存储了所有通道的颜色值,这使得在读取输入图像时不需要进行额外的维度转换。此外,从神经网络模型中最常见的卷积算子的最直接的计算逻辑来看,C维度相比H和W维度更加易于使用向量计算指令来做并行化。例如,当卷积核为1×1时,计算输出张量中的一个值只需要输入张量沿着C维度的一组数据,这使得把C维度放在最内侧维度可以更好地利用数据的局部性,并且还可以直接使用优化程度高的矩阵乘法来代替1×1的卷积计算。
在本申请实施例中,张量数据的维度顺序也可以为CHWN(这里,N为最内侧维度),相应的坐标向偏移的换算方式是((c×H+h)×W+w)×N+n。例如,Nervana开发的neon使用该维度顺序的张量进行卷积核池化计算。显然,在具有合适的批量大小的情况下,把N维度放在最内侧是最直观的并行方式,其思想和分布式训练中的数据并行一致。
从人工智能处理器的角度来说,为了最大化性能上的收益,也会结合自身的微结构设计选择最合适的维度顺序来存储张量数据。
在实际应用中,算法设计者往往假定了原始的张量数据在内存中排序时采用了NCHW的维度顺序。例如,一个由transpose和reshape构成的算子序列实现了(N,C,H,W)→(N,H,W,C)→(N,C×W,1,1)的变化过程,其本意是将C,H,W维度上的数据合并到一个维度中,并且保证原始的C维度能够处于合并的维度的最内侧。
在本申请实施例中,对采用了NCHW之外的维度顺序来存储张量数据的人工智能处理器,维度的不同不会导致计算结果的错误,但是会对性能造成影响。当人工智能处理器采用了不同的维度顺序时,只要保证每个算子在执行过程中在实际的维度顺序上实现了与抽象语义意义对等的操作,就可以保证最终结果的正确性。例如,如图1F所示,张量数据在存储中实际采用了NCWH的数据排布,而神经网络模型的定义是基于NCHW给出的。在这种情况下,为了保证每个操作的等价性,实际执行过程中每个算子的结果应该是在输入数据的基础上先经过变换φ变回定义阶段假定的维度顺序,完成指定算子的操作,再通过φ的反变换得到与实际维度顺序NCWH对应的正确的输出张量的排布。因为假定的顺序是NCHW,而实际使用的张量数据的排布顺序是NCWH,所以变换φ和反变换
Figure BDA0002213619890000091
都是参数为(0,1,3,2)的transpose操作。在具体实现中,transpose算子可以把内部的多个transpose过程进行合并,但reshape算子在实现中则多出了一个transpose过程,这种情况是算法设计者在设计算法之初不可能想到的,但又是保证实现和抽象语义的一致性所必需的。因此,在算法设计者缺乏对底层维度顺序了解的前提下,在人工智能处理器上照搬原始的计算图结构会对性能造成影响。
(6)步幅(stride)
如前所述,一般情况下,张量数据是按照连续紧密的方式存储在内存中,但人工智能处理器则可能采取了非连续的数据存储方式。
在本申请实施例中,非连续的存储方式是指:张量数据半身的数学维度大大小小用于计算存储中的偏移的实际维度的大小,其中,计算偏移使用的实际维度被称为stride。例如,如图1G所示,二维张量中的W维度,也是内侧维度本身为4,但实际存储中是按照6来布局的,相应地,当跨W读取同一H维度上的数据时,需要跳过6个数值而不是4个数值。更一般地,用stride_n、stride_c、stride_h和stride_w分别表示沿着N、C、H、W四个维度读取下一个数值需要跳过的偏移量,对于给定元素在张量中的坐标(n,c,h,w),该元素在存储中基于起始地址的偏移为n×stride_n+c×stride_c+h×stride_h+w×stride_w。张量在连续紧密排布下的各种布局NCHW、NHWC、CHWN等可以看作是stride的特殊形式。比如,NCHW的连续布局可以当做是stride布局下stride_n=C×H×W,stride_c=H×W,stride_h=W,stride_w=1。
对人工智能处理器来说,在数据布局中采用stride往往处于数据对齐和访存位宽的考量。把向量计算用于神经网络模型中会遇到的对齐和取整的问题,比如硬件沿着C维度对卷积进行并行计算,向量计算指令以及长位宽寄存器允许一次处理64个浮点数的乘加,相应的就可以一次从存储中读取C维度宽度为64的数据进行计算。但神经网络模型中总是存在在C维度上不是64的整数倍的张量数据和算子。为了处理最尾部的余留部分,就需要单独实现访存和计算指令,这使得指令在设计上十分繁琐。更进一步来说,存储单元可能本身存在访存对齐的限制,即每次访存的起始地址必须是某一常数的倍数,这进一步加大了指令实现的难度。为了避免这种情况,一种更简单的方法是把张量数据的维度直接向上对齐到最接近的整倍数上,补充的部分用0填充。对包括卷积、池化、全连接算子在内的绝大部分算子而言,补充的0即便参与了计算也对最后的计算结果没有任何影响。通过补0使得相应的维度的stride变成了计算及访存位宽的整倍数,因而避免了单独处理尾部数据的麻烦。
在实际应用中,对连续存储的张量数据来说,reshape是一个零开销的操作,只需要修改该张量的形状信息即可,但是当涉及的维度里涉及到了stride对齐的维度,reshape算子所引入的开销就不能被忽视。例如,假设将图1G中的张量的两个维度合并成一个,就需要重新调整绝大部分元素的存储位置,消除W维度最后的两个0。
(7)数据分段(Blocking)
具体来说,向量寄存器和单指令多数据流SIMD(Single Instruction MultipleData,SIMD)可以用来沿某一维度(通常是C)维度对卷积进行并行计算,但其一次能处理的数据位宽是有限的,为了能够保证寄存器内的中间结果可以被尽可能充分利用,输入张量把C维度进一步拆分,依照通用处理器能够处理的数据位宽分成一个个子段,并在内存中连续存储,提高了缓存的利用率。假设人工智能处理器的SIMD指令可以一次完成8个浮点计算,那么N,C,H,W的布局经过分段后会被调整为N,C/8,H,W,8。这种分段思路同样也适用于一些人工智能处理器的计算优化,区别在于后者可以一次处理更宽的向量数据,而分段的方法也能保证计算阶段访存的连续性,这有利于提高访存的效率。
在实际应用中,对采用了分段数据布局的人工智能处理器来说,涉及分段维度的数据布局调整需要考虑分段的影响,相对于前面提及的维度顺序和stride来说,针对分段布局所能使用的性能改进手段较少,但一些特殊情况下不同的神经网络计算图结构还是会对性能有一定的影响。
总的来说,存在各种各样的原因使人工智能处理器选择符合自身特点的存储数据排布方式,而算法设计者又很难知晓这些隐藏在底层中的细节,因此,在人工智能处理器上照搬原有的计算图结构就有可能会造成性能的浪费,而合理调整“胶水”子图(该“胶水”子图由“胶水”算子构成)的结构则可以避免大量的不必要的访存开销,优化整个神经网络模型的执行性能。
在本申请接下来的实施例中,将具体描述如何根据神经网络模型中“胶水”算子的逻辑关系对神经网络模型进行优化的实现方式。
(8)人工智能处理器
人工智能处理器,也称之为专用处理器,在本申请实施例中,人工智能处理器是指针对特定应用或者领域的处理器。例如:图形处理器(GPU,Graphics Processing Unit),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上进行图像运算工作的专用处理器。又例如:神经网络处理器(NPU,Neural Processing Unit),是一种在人工智能领域的应用中针对矩阵乘法运算的专用处理器,采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
参见图2,是本申请实施例提供的一种计算机设备的结构示意图。如图2所示,计算机设备20可以包括通用处理器201、存储器202、通信总线203、通信接口204和至少一个人工智能处理器205,通用处理器201、人工智能处理器205通过所述通信总线连接所述存储器202和所述通信接口203。
通用处理器201可以是中央处理单元(Central Processing Unit,CPU),该通用处理器201还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器201可以是微处理器或者该通用处理器201也可以是任何常规的处理器等。
通用处理器201还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的神经网络剪枝方法的各个步骤可以通过通用处理器201中的硬件的集成逻辑电路或者软件形式的指令完成。
存储器202可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)或其他存储器。本申请实施例中,存储器202用于存储数据以及各种软件程序,例如本申请实施例中根据胶水算子的逻辑关系对神经网络模型进行优化的程序等。
可选的,在本申请实施例中,所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。本实施方式所述的存储器又可以包括:利用电能方式存储信息的装置,如RAM、ROM等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置,如CD或DVD。当然,还有其他方式的存储器,例如量子存储器、石墨烯存储器等等。
通信接口204使用例如但不限于收发器一类的收发装置,来实现计算机设备20与其他设备或通信网络之间的通信。例如,可以通过通信接口204接收其他设备发送的模型文件。
人工智能处理器205可以作为协处理器挂载到主CPU(Host CPU)上,由主CPU为其分配任务。在实际应用中,人工智能处理器205可以实现一种或多种运算。例如,以神经网络处理器(Network Processing Unit,NPU)NPU为例,NPU的核心部分为运算电路,通过控制器控制运算电路提取存储器202中的矩阵数据并进行乘加运算。
可选的,人工智能处理器205可以包括8个集群(cluster),每个cluster中包括4个人工智能处理器核。
可选的,人工智能处理器205可以是可重构体系结构的人工智能处理器。这里,可重构体系结构是指,如果某一人工智能处理器能够利用可重用的硬件资源,根据不同的应用需求,灵活的改变自身的体系结构,以便为每个特定的应用需求提供与之相匹配的体系结构,那么这一人工智能处理器就称为可重构的计算系统,其体系结构称为可重构的体系结构。
应当理解,计算机设备20仅为本申请实施例提供的一个例子,并且,计算机设备20可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
下面结合图3所示的本申请实施例提供的一种数据处理方法的流程示意图,具体说明在本申请实施例中在数据预处理阶段是如何对神经网络模型进行优化的,可以包括但不限于如下步骤:
步骤S300、通用处理器获取神经网络模型对应的计算图;其中,所述计算图中包含胶水算子;所述胶水算子用于对所述计算图中的张量数据的参数进行调整。
在本申请实施例中,“神经网络模型”也称模型,如“第一神经网络模型”、“第二神经网络模型”或“第三神经网络模型”,可以接收输入数据,并根据接收的输入数据和当前的模型参数生成预测输出。在实际应用中,预测输出可以包括图像检测输出结果、语义分析输出结果、图像分类输出结果等等。该神经网络模型可以包括深度学习神经网络模型(deepneural network,DNN)、卷积神经网络模型(Convolutional Neural Network,CNN)、极限学习机模型(extreme learning machine,ELM)或其他的神经网络模型等。
在本申请实施例中,神经网络模型中包含胶水算子。具体地,胶水算子可以包括reshape算子、transpose算子、concat算子、split算子等,还可以包括其他可以用于对神经网络模型中张量数据的格式、张量数据的形状以及张量数据在内存中排布进行调整的胶水算子,本申请实施例不作具体限定。
如前所述,张量数据在内存中的排布可以包括但不限于:张量数据以紧密连续的存储方式存储在内存中,张量数据以合适的维度顺序存储在内存中,张量数据以非连续的存储方式存储在内存中(例如,含stride的内存分布),分段布局等等。
在本申请实施例中,计算图是表示神经网络计算的核心数据结构,它反映了神经网络计算中的数据的规模、计算的类型以及数据和计算之间复杂的依赖关系。具体来说,图的结构的基本元素有两个,分别是节点和边。节点和节点之间通过有向边连接表示一个数据实体经过特定计算得到另一个数据实体。
在本申请实施例中,算子是指,实现某种特定功能的函数。例如,以reshape算子为例,该算子用于对张量数据的形状进行重新诠释。又例如,以transpose算子为例,该算子用于调整张量数据的维度顺序。
在本申请实施例中,有向边可以用于表征算子与算子之间的连接关系,也可以用于表征人工智能处理器执行神经网络模型时的执行顺序。
步骤S302、所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,获得优化结果;其中,所述胶水算子的逻辑关系包括transpose算子与其他算子的逻辑关系;所述其他算子包括reshape算子、concat算子、split算子中的任意一种算子。
在一种可能的实现方式中,胶水算子的逻辑关系包括transpose算子间的逻辑关系,例如,多个连续的transpose算子;在另一种可能的实现方式中,胶水算子的逻辑关系包括transpose算子与其他算子的逻辑关系,例如,transpose算子与reshape算子相邻;又例如,transpose算子与concat算子相邻;又例如,transpose算子与split算子相邻,等等。这里,算子与算子相邻用于表征一个算子的输出数据作为另一个算子的输入数据。
在本申请实施例中,胶水算子的逻辑关系应该理解为计算机设备在执行神经网络模型这一程序代码过程中的执行逻辑。例如,计算机设备在执行某段程序代码过程中,先执行reshape算子,后执行transpose算子,在这种情况下,可以理解为:计算机设备将reshape算子的输出张量数据作为transpose算子的输入张量数据。
具体地,在本申请实施例中,胶水算子的逻辑关系可以包括以下诸多情形,接下来对其进行详细描述:
第一种情形:reshape算子的输出张量数据是transpose算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括reshape算子的输出张量数据是transpose算子的输入张量数据;所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
在所述reshape算子的执行过程中,所述reshape算子在拆分阶段由中间状态的同一维度所拆分出的维度的相对位置在执行所述transpose算子的过程中不发生变化,将transpose算子的输出张量数据作为所述reshape算子的输入张量数据。
在本申请实施例中,维度是指神经网络模型中的计算图中的张量数据的维度。例如,以卷积神经网络为例,卷积神经网络模型中的计算图中的张量数据的维度一般可以包括4个维度,分别为表示当前计算所处理的数据的批量大小的N,表示特征图像数量的C,表示特征图像尺寸的H和W。
在本申请实施例中,如图4A中的(a)所示,神经网络模型对应的计算图中包含reshape算子和transpose算子,其中,reshape算子的输出张量数据是transpose算子的输入张量数据,当reshape算子在拆分阶段由中间状态的同一维度所拆分出的维度的相对位置在执行transpose算子的过程中不发生变化,在一种实现方式中,如图4A中的(b)所示,可以按照优化路径(1)进行优化,将transpose算子的部分输出张量数据作为reshape算子的输入张量数据;在另一种实现方式中,也可以按照优化路径(2)进行优化,将transpose算子的输出张量数据作为reshape算子的输入张量数据。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,4,5],张量A在经过reshape算子之后,可以得到张量B=[4,3,5],与此同时,当张量B在经过transpose算子之后,可以得到张量C=[5,4,3]。由于reshape算子在执行过程中可以认为是:先对维度进行合并,然后,对合并后的维度进行拆分。这里,在执行reshape算子的过程中,先对维度{3,4}进行合并,得到{12},然后对{12}进行拆分,可以得到维度{4,3}。分析张量B=[4,3,5]和张量C=[5,4,3]可以知道的是,在transpose算子的执行过程中,维度{4,3}的相对位置没有发生变化,那么,在这种情况下,可以将transpose算子的输出张量数据作为reshape算子的输入张量数据,从而其实现过程可以描述为:张量A=[3,4,5],张量A在经过transpose算子之后,可以得到张量B’=[5,3,4],与此同时,当张量B’在经过reshape算子之后,可以得到张量C’=[5,4,3]。可以理解的是,由于上述优化操作可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第二种情形:concat算子的输出张量数据是transpose算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括concat算子的输出张量数据是transpose算子的输入张量数据;所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
将所述transpose算子的输出张量数据作为所述concat算子的输入张量数据。
在本申请实施例中,如图4B中的(a)所示,神经网络模型对应的计算图中包含transpose和concat算子,其中,concat算子的输出张量数据是transpose算子的输入张量数据,在这种情况下,如图4B中的(b)所示,将transpose算子的输出张量数据作为concat算子的输入张量数据。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,4,5],张量B=[3,6,5],在张量A和张量B在经过concat算子之后,可以得到张量C=[3,10,5],与此同时,当张量C在经过transpose算子之后,可以得到张量D=[10,3,5]。那么,在这种情况下,可以将transpose算子的输出张量数据作为concat算子的输入张量数据,从而其实现过程可以描述为:张量A=[3,4,5],张量B=[3,6,5],当张量A和张量B经过各自对应的transpose算子之后,可以得到张量C’=[4,3,5]和张量D’=[6,3,5],与此同时,当张量C’和张量D’在经过concat算子之后,可以得到张量E=[10,3,5]。可以理解的是,由于上述优化操作可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第三种情形:split算子的输出张量数据是多个transpose算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括split算子的输出张量数据是多个transpose算子的输入张量数据;所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
在所述多个transpose算子各自对应的perm参数相同时,将所述多个transpose算子的输出张量数据作为所述split算子的输入张量数据。
如前所述,transpose算子可以表示为:tf.transpose(a,perm=None,name=’transpose’),那么,可以知道的是,transpose算子包含有perm参数。在本申请实施例中,perm参数为自然数列[1,2,3,...,n]的一个全排列,不同的全排列表示不同的transpose算子。
具体地,全排队被定义为:从n个不同元素中任意取m(m小于等于n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫做全排列。例如,1,2,3三个元素的全排列可以为:1,2,3;1,3,2;2,1,3;2,3,1;3,1,2;3,2,1。
在本申请实施例中,多个transpose算子各自对应的perm参数相同是指:多个transpose算子各自对应的全排队相同。
在本申请实施例中,如图4C中的(a)所示,神经网络模型对应的计算图中包含多个transpose算子和split算子,其中,split算子的输出张量数据是多个transpose算子的输入张量数据,在多个transpose算子各自对应的perm参数相同时,如图4C中的(b)所示,将多个transpose算子的输出张量数据作为split算子的输入张量数据。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,10,5],张量A在经过split算子之后,可以得到张量B=[3,4,5]和张量C=[3,6,5],与此同时,当张量B和张量C在经过各自对应的transpose算子之后,具体地,transpose算子各自对应的perm参数均为[1,0,2],可以得到张量D=[4,3,5]和张量E=[6,3,5]。那么,在这种情况下,将多个transpose算子的输出张量数据作为split算子的输入张量数据,从而其实现过程可以描述为:张量A=[3,10,5],张量A在经过transpose算子之后,可以得到张量B’=[10,3,5],与此同时,当张量B’经过split算子之后,可以得到张量C’=[4,3,5]和张量D’=[6,3,5]。可以理解的是,由于上述优化操作可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第四种情形:多个连续的transpose算子。
具体实现中,所述胶水算子的逻辑关系包括M个连续的transpose算子;所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
当所述神经网络模型对应的计算图中包含M个连续的transpose算子时,将所述M个transpose算子进行合并,得到一个transpose算子。这里,M为大于等于2的正整数,如M=2。
具体实现中,所述连续M个transpose算子包括第一transpose算子和第二transpose算子;所述将所述连续M个transpose算子合并为一个transpose算子,包括:
确定所述第一transpose算子以及所述第二transpose算子各自对应的perm参数;
根据所述第一transpose算子以及所述第二transpose算子各自对应的perm参数确定第一参数,其中,所述第一参数为合并后的transpose算子对应的perm参数。
具体实现中,所述根据所述第一transpose算子以及所述第二transpose算子各自对应的perm参数确定第一参数,包括:
在确定所述第一参数时,根据以下公式来计算:
perm3[i]=perm1[perm2[i]]
其中,perm3表示所述第一参数,perm1表示所述第一transpose算子对应的perm参数,perm2表示所述第二transpose算子对应的perm参数。
这里,中括号[]表示取数组中的元素。
例如,第一transpose算子对应的perm参数为perm1=[1,2],第二transpose算子对应的perm参数为perm2=[2,1],当i=1时,perm3[1]=perm1[perm2[1]]=2。当i=2时,perm3[2]=perm1[perm2[2]]=1。从而可以得到合并后的transpose算子对应的perm参数perm3=[2,1]。进一步地,合并后的transpose算子在确定好的perm3参数下调换张量数据的顺序。
在本申请实施例中,如图4D中的(a)所示,神经网络模型对应的计算图中包含多个连续的transpose算子,在这种情况下,计算机设备对这M个连续的transpose算子进行合并,可以得到如图4D中的(b)所示的优化结构。
为了便于理解,下面结合具体的实例进行阐述。例如,张量A=[1,4,3,2],经过transpose_1423算子之后,变为张量B=[1,2,4,3],再经过transpose_1243算子之后,变为张量C=[1,2,3,4]。采用本申请所描述的技术方案,对transpose_1423算子以及transpose_1243算子进行合并,可以得到transpose_1432算子,张量A在经过transpose_1432算子之后,直接从张量A=[1,4,3,2]变为张量C=[1,2,3,4]。由于处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行神经网络模型时,无需依次执行两次不同的transpose算子,而是只执行合并后的transpose算子,可以减少冗余计算,以达到减少计算机设备的资源消耗的目的。
需要说明的是,在本申请实施例中,例如,神经网络模型对应的计算图中胶水算子的逻辑关系包括reshape算子与transpose算子间的逻辑关系、transpose算子与concat算子间的逻辑关系、多个transpose算子与split算子间的逻辑关系,当计算机设备根据神经网络模型对应的计算图中胶水算子的逻辑关系对神经网络模型对应的计算图进行优化的过程中,可以执行其中的至少一种优化操作,例如,根据reshape算子与transpose算子间的逻辑关系对神经网络模型对应的计算图进行优化;又例如,根据transpose算子与concat算子间的逻辑关系对神经网络模型对应的计算图进行优化;或者,可以包括其中的一种或几种优化操作的组合实现方式,或者,也可以针对所有可以优化的情形均执行上述优化操作;进一步地,还可以基于可以优化的情形进行组合优化,例如,神经网络模型对应的计算图中包含reshape算子、第一transpose算子和第二transpose算子,其中,未优化之前,reshape算子的输出张量数据是第一transpose算子的输入张量数据,第一transpose算子的输出张量数据是第二transpose算子的输入张量数据,计算机设备可以根据上述描述的优化方式对第一transpose算子和第二transpose算子进行优化,得到优化后的第三transpose算子,那么,在这种情况下,经过上述优化后的算子间的逻辑关系为:reshape算子的输出张量数据是第三transpose算子的输入张量数据,计算机设备确定当前reshape算子与第三transpose算子的逻辑关系属于本申请描述的可以优化的实现方式之一,计算机设备可以根据reshape算子与第三transpose算子的逻辑关系进行优化,具体地,将第三transpose算子的输出张量数据作为reshape算子的输入张量数据,得到最终优化后的计算图,等等。
步骤S304、所述通用处理器根据所述优化结果获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
在本申请实施例中,通用处理器可以根据神经网络模型的优化结果,调用已设置好的人工智能学习库的编译接口来编译,获得对应的二进制指令。该二进制指令经运行时库处理生成机器学习处理任务。在实际应用中,通用处理器可以将机器学习处理任务放入任务队列,最终由驱动器调度任务队列中的机器学习处理任务让人工智能处理器执行,得到运行结果。
本申请实施例中,机器学习处理任务是指,神经网络模型通过获取学习能力,以完成某项任务。这里,机器学习处理任务可以包括图像识别,边缘检测,语义分析,等等。具体地,为了提高神经网络模型的实用性,不同的神经网络模型对应不同的机器学习处理任务。例如,深度学习神经网络模型对应的机器学习处理任务可以为图像分类,文本分类等;卷积神经网络模型对应的机器学习处理任务可以为图像识别,视频分类等;长短时记忆神经网络模型(Long Short Term Memory Network,LSTM)对应的机器学习处理任务可以为语音识别、图片描述、自然语言处理等。
在本申请实施例中,机器学习处理任务的请求可以为用户针对神经网络模型输入的执行指令。当计算机设备在接收到机器学习处理任务的请求时,根据机器学习处理任务的类型获取对应的神经网络模型,并在人工智能处理器上运行神经网络模型,继而可以得到针对机器学习处理任务的运行结果。需要说明的是,处理器(例如,通用处理器,人工智能处理器)运行的神经网络模型为经过优化后的神经网络模型。
在本申请实施例中,机器学习处理任务的运行结果是指,计算机设备执行机器学习处理任务时的结果,可以包括但不限于:执行机器学习处理任务时,神经网络模型的精度;执行机器学习处理任务时,神经网络模型的运行时间等等。进一步可选的,计算机设备可以输出该运行结果,例如,计算机设备通过显示屏显示该运行结果。可以理解的是,由于对神经网络模型对应的计算图执行了至少一种优化操作,可以提高神经网络模型的整体性能,使得人工智能处理器在调用第二神经网络模型执行机器学习处理任务时,可以减少冗余计算,进而可以减少计算机设备的资源消耗。
实施本申请实施例,计算机设备根据神经网络模型中胶水算子的逻辑关系对神经网络模型进行优化,以提高神经网络模型的整体性能。当计算机设备调用优化后的神经网络模型执行机器学习处理任务时,可以减少计算机设备的资源消耗。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关装置。
参见图5,图5是本申请实施例提供的一种数据处理装置的结构示意图,该装置50至少可以包括:
获取单元500,用于获取神经网络模型对应的计算图;其中,所述计算图中包含胶水算子;所述胶水算子用于对所述计算图中的张量数据的参数进行调整;
优化单元502,用于根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,获得优化结果;其中,所述胶水算子的逻辑关系包括transpose算子与其他算子的逻辑关系;所述其他算子包括reshape算子、concat算子、split算子中的任意一种算子;
执行单元504,用于根据所述优化结果获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
在其中一种可能的实现方式中,所述胶水算子的逻辑关系包括reshape算子的输出张量数据是transpose算子的输入张量数据;所述优化单元502具体用于:
在所述reshape算子的执行过程中,所述reshape算子在拆分阶段由中间状态的同一维度所拆分出的维度的相对位置在执行所述transpose算子的过程中不发生变化,将transpose算子的输出张量数据作为所述reshape算子的输入张量数据。
在其中一种可能的实现方式中,所述胶水算子的逻辑关系包括concat算子的输出张量数据是transpose算子的输入张量数据;所述优化单元502具体用于:
将所述transpose算子的输出张量数据作为所述concat算子的输入张量数据。
在其中一种可能的实现方式中,所述胶水算子的逻辑关系包括split算子的输出张量数据是多个transpose算子的输入张量数据;所述优化单元502具体用于:
在所述多个transpose算子各自对应的perm参数相同时,将所述多个transpose算子的输出张量数据作为所述split算子的输入张量数据。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
所述作为分离部件说明的单元或模块可以是物理上分开的,也可以不是物理上分开的。作为单元或模块说明的部件可以是物理单元,也可以不是物理单元,即可以位于一个装置中,或者也可以分布到多个装置上。本披露中实施例的方案可以根据实际的需要选择其中的部分或者全部单元来实现。
此外,这里需要指出的是,本申请实施例还提供了一种计算机存储介质,用于存储为上述图2所示的计算机设备所用的计算机软件指令,其包含用于执行上述方法实施例所涉及的程序。通过执行存储的程序,可以根据神经网络模型中胶水算子的逻辑关系对神经网络模型进行优化,以提高神经网络模型的整体性能。当计算机设备调用优化后的神经网络模型时,由于无需执行多余的冗余操作,可以减少计算机设备的资源消耗。
由上可见,本申请实施例提供的数据处理方法、装置、计算机设备和存储介质,该方法可以根据神经网络模型中胶水算子的逻辑关系对神经网络模型进行优化,以提高神经网络模型的整体性能。当计算机设备调用优化后的神经网络模型时,由于无需执行多余的冗余操作,可以减少计算机设备的资源消耗。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
进一步地,依据以下条款可更好地理解前述内容:
例如,条款A1,一种数据处理方法,包括:
通用处理器获取神经网络模型对应的计算图;其中,所述计算图中包含胶水算子;所述胶水算子用于对所述计算图中的张量数据的参数进行调整;
所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,获得优化结果;其中,所述胶水算子的逻辑关系包括transpose算子与其他算子的逻辑关系;所述其他算子包括reshape算子、concat算子、split算子中的任意一种算子;
所述通用处理器根据所述优化结果获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
A2.根据A1所述的方法,所述胶水算子的逻辑关系包括reshape算子的输出张量数据是transpose算子的输入张量数据。
A3.根据A2所述的方法,所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
在所述reshape算子的执行过程中,所述reshape算子在拆分阶段由中间状态的同一维度所拆分出的维度的相对位置在执行所述transpose算子的过程中不发生变化,将transpose算子的输出张量数据作为所述reshape算子的输入张量数据。
A4.根据A1所述的方法,所述胶水算子的逻辑关系包括concat算子的输出张量数据是transpose算子的输入张量数据。
A5.根据A4所述的方法,所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
将所述transpose算子的输出张量数据作为所述concat算子的输入张量数据。
A6.根据A1所述的方法,所述胶水算子的逻辑关系包括split算子的输出张量数据是多个transpose算子的输入张量数据。
A7.根据权利要求A6所述的方法,所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
在所述多个transpose算子各自对应的perm参数相同时,将所述多个transpose算子的输出张量数据作为所述split算子的输入张量数据。
A8.根据权利要求A1~A7任一项所述的方法,所述张量数据的参数包括所述张量数据的格式、所述张量数据的形状和所述张量数据在内存中的排布中的至少一种。
B1.一种数据处理装置,包括:
获取单元,用于获取神经网络模型对应的计算图;其中,所述计算图中包含胶水算子;所述胶水算子用于对所述计算图中的张量数据的参数进行调整;
优化单元,用于根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,获得优化结果;其中,所述胶水算子的逻辑关系包括transpose算子与其他算子的逻辑关系;所述其他算子包括reshape算子、concat算子、split算子中的任意一种算子;
执行单元,用于根据所述优化结果获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
B2.根据B1所述的装置,所述胶水算子的逻辑关系包括reshape算子的输出张量数据是transpose算子的输入张量数据。
B3.根据B2所述的装置,所述优化单元具体用于:
在所述reshape算子的执行过程中,所述reshape算子在拆分阶段由中间状态的同一维度所拆分出的维度的相对位置在执行所述transpose算子的过程中不发生变化,将transpose算子的输出张量数据作为所述reshape算子的输入张量数据。
B4.根据B1所述的装置,所述胶水算子的逻辑关系包括concat算子的输出张量数据是transpose算子的输入张量数据。
B5.根据B4所述的装置,所述优化单元具体用于:
将所述transpose算子的输出张量数据作为所述concat算子的输入张量数据。
B6.根据B1所述的装置,所述胶水算子的逻辑关系包括split算子的输出张量数据是多个transpose算子的输入张量数据。
B7.根据权利要求B6所述的装置,所述优化单元具体用于:
在所述多个transpose算子各自对应的perm参数相同时,将所述多个transpose算子的输出张量数据作为所述split算子的输入张量数据。
B8.根据权利要求B1~B7任一项所述的装置,所述张量数据的参数包括所述张量数据的格式、所述张量数据的形状和所述张量数据在内存中的排布中的至少一种。
C1.一种计算机设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求A1-A8任一项所述的方法。
D1.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求A1-A8任一项所述的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (11)

1.一种数据处理方法,其特征在于,包括:
通用处理器获取神经网络模型对应的计算图;其中,所述计算图中包含胶水算子;所述胶水算子用于对所述计算图中的张量数据的参数进行调整;
所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,获得优化结果;其中,所述胶水算子的逻辑关系包括transpose算子与其他算子的逻辑关系;所述其他算子包括reshape算子、concat算子、split算子中的任意一种算子;
所述通用处理器根据所述优化结果获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
2.根据权利要求1所述的方法,其特征在于,所述胶水算子的逻辑关系包括reshape算子的输出张量数据是transpose算子的输入张量数据。
3.根据权利要求2所述的方法,其特征在于,所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
在所述reshape算子的执行过程中,所述reshape算子在拆分阶段由中间状态的同一维度所拆分出的维度的相对位置在执行所述transpose算子的过程中不发生变化,将transpose算子的输出张量数据作为所述reshape算子的输入张量数据。
4.根据权利要求1所述的方法,其特征在于,所述胶水算子的逻辑关系包括concat算子的输出张量数据是transpose算子的输入张量数据。
5.根据权利要求4所述的方法,其特征在于,所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
将所述transpose算子的输出张量数据作为所述concat算子的输入张量数据。
6.根据权利要求1所述的方法,其特征在于,所述胶水算子的逻辑关系包括split算子的输出张量数据是多个transpose算子的输入张量数据。
7.根据权利要求6所述的方法,其特征在于,所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,包括:
在所述多个transpose算子各自对应的perm参数相同时,将所述多个transpose算子的输出张量数据作为所述split算子的输入张量数据。
8.根据权利要求1~7任一项所述的方法,其特征在于,所述张量数据的参数包括所述张量数据的格式、所述张量数据的形状和所述张量数据在内存中的排布中的至少一种。
9.一种数据处理装置,其特征在于,包括:
获取单元,用于获取神经网络模型对应的计算图;其中,所述计算图中包含胶水算子;所述胶水算子用于对所述计算图中的张量数据的参数进行调整;
优化单元,用于根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化,获得优化结果;其中,所述胶水算子的逻辑关系包括transpose算子与其他算子的逻辑关系;所述其他算子包括reshape算子、concat算子、split算子中的任意一种算子;
执行单元,用于根据所述优化结果获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
10.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-8任一项所述的方法。
CN201910910171.0A 2019-09-24 2019-09-24 一种数据处理方法、装置、计算机设备及存储介质 Pending CN111401539A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910910171.0A CN111401539A (zh) 2019-09-24 2019-09-24 一种数据处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910910171.0A CN111401539A (zh) 2019-09-24 2019-09-24 一种数据处理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN111401539A true CN111401539A (zh) 2020-07-10

Family

ID=71428393

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910910171.0A Pending CN111401539A (zh) 2019-09-24 2019-09-24 一种数据处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN111401539A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111708641A (zh) * 2020-07-14 2020-09-25 腾讯科技(深圳)有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN115577760A (zh) * 2021-07-14 2023-01-06 华为技术有限公司 一种数据处理方法、系统及相关设备
WO2023093623A1 (zh) * 2021-11-29 2023-06-01 中科寒武纪科技股份有限公司 计算图的优化方法、数据处理方法及相关产品
CN116880995A (zh) * 2023-09-08 2023-10-13 之江实验室 一种模型任务的执行方法、装置、存储介质及电子设备
WO2024000464A1 (zh) * 2022-06-30 2024-01-04 华为技术有限公司 一种张量计算的分块策略生成方法及装置
WO2024012491A1 (zh) * 2022-07-15 2024-01-18 北京有竹居网络技术有限公司 优化神经网络模块算力的方法、芯片、电子设备和介质

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111708641A (zh) * 2020-07-14 2020-09-25 腾讯科技(深圳)有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN111708641B (zh) * 2020-07-14 2024-03-19 腾讯科技(深圳)有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN115577760A (zh) * 2021-07-14 2023-01-06 华为技术有限公司 一种数据处理方法、系统及相关设备
WO2023093623A1 (zh) * 2021-11-29 2023-06-01 中科寒武纪科技股份有限公司 计算图的优化方法、数据处理方法及相关产品
WO2024000464A1 (zh) * 2022-06-30 2024-01-04 华为技术有限公司 一种张量计算的分块策略生成方法及装置
WO2024012491A1 (zh) * 2022-07-15 2024-01-18 北京有竹居网络技术有限公司 优化神经网络模块算力的方法、芯片、电子设备和介质
CN116880995A (zh) * 2023-09-08 2023-10-13 之江实验室 一种模型任务的执行方法、装置、存储介质及电子设备
CN116880995B (zh) * 2023-09-08 2024-01-09 之江实验室 一种模型任务的执行方法、装置、存储介质及电子设备

Similar Documents

Publication Publication Date Title
CN110659728B (zh) 神经网络优化方法、装置、计算机设备及存储介质
CN111401510A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN111401538A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN111401539A (zh) 一种数据处理方法、装置、计算机设备及存储介质
WO2021057746A1 (zh) 神经网络处理方法、装置、计算机设备及存储介质
Lian et al. High-performance FPGA-based CNN accelerator with block-floating-point arithmetic
US20220391665A1 (en) Method for splitting neural network model by using multi-core processor, and related product
Liang et al. Evaluating fast algorithms for convolutional neural networks on FPGAs
CN111401511A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN110689115B (zh) 神经网络模型处理方法、装置、计算机设备及存储介质
WO2021057722A1 (zh) 用多核处理器实现神经网络模型拆分方法及相关产品
US11740870B2 (en) Convolutional network hardware accelerator device, system and method
CN110674936A (zh) 一种神经网络处理方法、装置、计算机设备及存储介质
CN111160551A (zh) 计算图执行方法、计算机设备及存储介质
CN111401537A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN110689116B (zh) 一种神经网络剪枝方法、装置、计算机设备及存储介质
CN112084038A (zh) 神经网络的内存分配方法及装置
Fan et al. Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation
Zhang et al. Exploring HW/SW co-design for video analysis on CPU-FPGA heterogeneous systems
CN116974868A (zh) 芯片功耗估计装置、方法、电子设备及存储介质
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
CN111860825A (zh) 一种数据处理方法及相关产品
Lin Convolutional Layer Implementations in High-Level Synthesis for FPGAs
Kang et al. Tensor virtualization technique to support efficient data reorganization for CNN accelerators
CN116227585B (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