CN111915002B - 运算方法、装置及相关产品 - Google Patents
运算方法、装置及相关产品 Download PDFInfo
- Publication number
- CN111915002B CN111915002B CN201910385775.8A CN201910385775A CN111915002B CN 111915002 B CN111915002 B CN 111915002B CN 201910385775 A CN201910385775 A CN 201910385775A CN 111915002 B CN111915002 B CN 111915002B
- Authority
- CN
- China
- Prior art keywords
- tensor
- nodes
- tensor operation
- node
- continuous
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000004364 calculation method Methods 0.000 claims abstract description 109
- 238000003860 storage Methods 0.000 claims abstract description 21
- 238000006243 chemical reaction Methods 0.000 claims description 70
- 230000009466 transformation Effects 0.000 claims description 39
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013519 translation Methods 0.000 claims description 2
- 238000013528 artificial neural network Methods 0.000 abstract description 19
- 238000012545 processing Methods 0.000 abstract description 14
- 238000003062 neural network model Methods 0.000 abstract description 3
- 238000012546 transfer Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 20
- 230000004044 response Effects 0.000 description 18
- 238000013135 deep learning Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 8
- 230000007704 transition Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 238000011426 transformation method Methods 0.000 description 4
- 230000001131 transforming effect Effects 0.000 description 4
- 230000017105 transposition Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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
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)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及运算方法、装置及相关产品,所述产品包括控制器单元,所述控制器单元包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。
Description
技术领域
本公开涉及信息处理技术领域,尤其涉及一种运算方法、装置及相关产品。
背景技术
在人工智能技术领域,神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。
发明内容
根据本公开的第一方面,提供了一种运算方法,所述方法包括:
接收第一计算图;
识别所述第一计算图内的张量操作节点;
在所述张量操作节点内包含连续张量操作节点时,对所述连续张量操作节点进行合并操作,得到第二计算图;
其中,所述连续张量操作节点包括至少2个连续相邻的张量操作节点。
在一种可能的实现方式中,所述张量操作节点包括:张量形状变换节点或张量转置变换节点。
在一种可能的实现方式中,在所述张量操作节点内包含连续张量操作节点时,对所述连续张量操作节点进行合并操作,得到第二计算图,包括:
重复执行以下操作,直到在所述张量操作节点内,不包含能够进行合并操作或类型转换操作的连续张量操作节点,得到所述第二计算图;其中,所述执行以下操作,包括:
在所述连续张量操作节点包含同类型连续张量操作节点时,对所述同类型连续张量操作节点进行合并操作,其中,同类型连续张量操作节点中,张量操作节点执行的张量操作类型相同;
在所述连续张量操作节点包含非同类型连续张量操作节点时,对所述非同类型连续张量操作节点进行类型转换操作,使所述非同类型连续张量操作节点转换为同类型连续张量操作节点,其中,非同类型连续张量操作节点中,相邻张量操作节点执行的张量操作类型互不相同。
在一种可能的实现方式中,在所述连续张量操作节点包含同类型连续张量操作节点时,对所述同类型连续张量操作节点进行合并操作,包括:
在所述连续张量操作节点包含同类型连续张量操作节点时,将所述同类型连续张量操作节点合并为一个张量操作节点,合并后的张量操作节点与所述同类型连续张量操作节点中的任一张量操作节点执行的张量操作类型相同。
在一种可能的实现方式中,在所述连续张量操作节点包含非同类型连续张量操作节点时,对所述非同类型连续张量操作节点进行类型转换操作,使所述非同类型连续张量操作节点转换为同类型连续张量操作节点,包括:
对所述非同类型连续张量操作节点中的每个张量操作节点进行判断,确定是否为等价张量操作节点;
对所述非同类型连续张量操作节点中的等价张量操作节点进行类型转换,转换后的等价张量操作节点与相邻的张量操作节点执行的张量操作类型相同;
其中,所述等价张量操作节点在执行张量操作时,能够在执行张量转置变换与执行张量形状变换时得到相同的结果。
在一种可能的实现方式中,所述方法还包括:
在所述张量形状变换节点的输入张量与输出张量的最内维度参数相同时,将所述输出张量与所述输入张量的内存地址进行统一。
根据本公开的第二方面,提供了一种运算装置,包括:
接收单元,用于接收第一计算图;
识别单元,用于识别所述第一计算图内的张量操作节点;
计算图生成单元,用于在所述张量操作节点内包含连续张量操作节点时,对所述连续张量操作节点进行合并操作,得到第二计算图;
其中,所述连续张量操作节点包括至少2个连续相邻的张量操作节点。
在一种可能的实现方式中,所述张量操作节点包括:张量形状变换节点或张量转置变换节点。
在一种可能的实现方式中,所述计算图生成单元用于:
重复执行以下操作,直到在所述张量操作节点内,不包含能够进行合并操作或类型转换操作的连续张量操作节点,得到所述第二计算图;其中,所述执行以下操作,包括:
在所述连续张量操作节点包含同类型连续张量操作节点时,对所述同类型连续张量操作节点进行合并操作,其中,同类型连续张量操作节点中,张量操作节点执行的张量操作类型相同;
在所述连续张量操作节点包含非同类型连续张量操作节点时,对所述非同类型连续张量操作节点进行类型转换操作,使所述非同类型连续张量操作节点转换为同类型连续张量操作节点,其中,非同类型连续张量操作节点中,相邻张量操作节点执行的张量操作类型互不相同。
在一种可能的实现方式中,所述计算图生成单元进一步用于:
在所述连续张量操作节点包含同类型连续张量操作节点时,将所述同类型连续张量操作节点合并为一个张量操作节点,合并后的张量操作节点与所述同类型连续张量操作节点中的任一张量操作节点执行的张量操作类型相同。
在一种可能的实现方式中,所述计算图生成单元进一步用于:
对所述非同类型连续张量操作节点中的每个张量操作节点进行判断,确定是否为等价张量操作节点;
对所述非同类型连续张量操作节点中的等价张量操作节点进行类型转换,转换后的等价张量操作节点与相邻的张量操作节点执行的张量操作类型相同;
其中,所述等价张量操作节点在执行张量操作时,能够在执行张量转置变换与执行张量形状变换时得到相同的结果。
在一种可能的实现方式中,所述装置还包括地址变换单元,所述地址变换单元用于:
根据所述张量形状变换节点的输入张量与输出张量的最内维度参数,将所述输出张量与所述输入张量的内存地址进行统一。
根据本公开的第三方面,提供了一种运算装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述第一方面所述的方法。
根据本公开的第四方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第一方面所述的方法。
通过将第一计算图内的连续张量操作节点进行合并操作,来得到第二计算图,根据本公开的各方面实施例的运算方法、装置及相关产品,能够减少硬件设备在通过计算图进行神经网络运算时所发生的冗余计算,降低计算资源的消耗,从而降低硬件设备的计算延时,提升硬件设备的运算速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的运算方法的流程图。
图2示出根据本公开一实施例的运算方法的流程图。
图3示出根据本公开一实施例的运算装置的框图。
图4示出根据本公开一实施例的运算装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
为了便于更好的理解本申请所描述的技术方案,下面先解释本申请实施例所涉及的技术术语:
张量(tensor):在本技术方案中,张量仅仅是对存储的一块数据的特征描述,张量记录了数据的形状、类型等信息。
本申请实施例中,张量应该理解为张量数据,可以包括神经网络模型中输入张量数据、输出张量数据,也可以包括特征张量数据等。
深度学习框架(如TensorFlow等)中通常用张量(tensor)这种数据结构来表示所有的数据。张量可以表示成一个n维的数组或列表。一个张量有一个静态类型和动态类型的维数。张量可以在图中的节点之间流通。张量是所有深度学习框架中最核心的组件,因为后续的所有运算和优化算法都是基于张量进行的。
深度学习算法的主体是神经网络,神经网络可以由一系列的基本操作按一定的拓扑结构连接组成,每个基本操作可以包含一个或多个输入、输出神经元,同时,神经元可以在操作之间共享。因此,在一种可能的实现方式中,可以将深度学习算法的执行过程表示为计算图。计算图中可以包括节点和连接节点的边,节点的数量和节点的边的数量均不受限定,根据深度学习算法的具体过程来确定。节点可以用于表示深度学习过程中执行的操作,例如卷积运算操作或批量标准化操作等。节点间的边可以用于表示神经元,可以用于表明节点间数据的走向。对于深度学习来说,经过训练的模型数据,也是深度学习所在神经网络的重要组成部分,例如卷积操作的权值等。将深度学习算法的输入数据输入计算图的起始节点,根据各节点间的边经过计算图中的节点完成运算,计算图可以输出深度学习的最终结果。
硬件设备在利用神经网络对张量进行运算时,由于硬件设备可能需要对输入的张量进行拷贝、读取等多次的输入和输出过程,在进行拷贝之前,需要对数据进行预处理。就是将数据在人工智能处理器的相应存储区域上重新排列,利于人工智能处理器更快的处理数据,数据预处理的基本操作包括:维度转换、对齐、分段和数据类型转换。比如:有多张图片作为一块数据存在内存上,可以认为这块数据是四维的。图片个数是N,图片高是H,图片宽是W,图片的RGB三个通道是C,就有NCHW四个维度。因为人工智能处理器处理NHWC维度的数据更方便,所以需要将NCHW维度转换成NHWC维度。人工智能处理器的向量指令需要数据的地址是对齐大小的倍数,对齐大小是由人工智能处理器芯片本身决定的,比如32字节,如果最内维度(对应NHWC中的C维度)所占的字节数不是对齐大小的倍数的话需要补0补到对齐大小的倍数。分段操作是为了增加数据局部性,将优先处理的数据先移动到一起。对于数据类型转换,可以把一个高精度数据格式转换成低精度数据格式,比如4字节的浮点型转换成2字节的半精度浮点,以损失一定精度的代价来加快运算速度。
如果计算图中存在一些冗余操作,则此时在硬件设备的运算过程中,待运算的张量可能会被执行多次冗余的拷贝、读取或运算等操作,这可能会导致硬件设备的运算过程具有较高的时间消耗和空间消耗,同时吞吐量可能会很低,因此在运算的过程中极有可能会造成程序崩溃,导致硬件设备无法有效的利用神经网络模型来进行张量的计算,继而降低神经网络运算的效率,从而降低整个硬件设备的计算和工作效率。
为了提升硬件设备的工作效率,本实施例公开了一种运算方法的应用示例,在本示例中,可以对第一计算图中的连续张量操作节点进行合并,得到第二计算图,然后基于合并后的第二计算图进行运算。在本公开示例中,合并的过程可以为:将连续相邻的张量形状变换(reshape)节点,根据输入与输出张量的关系,合并为一个reshape节点;将连续相邻的张量转置变换(transpose)节点,根据输入与输出张量的关系,合并为一个transpose节点;同时如果在第一计算图中存在相邻的reshape节点和transpose节点,且其中的transpose节点可以等价转换为reshape节点,则先将transpose节点根据输入与输出张量的关系等价转换为reshape节点,然后再将等价转换后的reshape节点与相邻的reshape节点根据输入与输出张量的关系,合并为一个reshape节点,通过上述过程,可以将第一计算图进行有效的简化,得到第二计算图。对于本技术方案来说,硬件设备可以基于第二计算图进行运算,则此时由于第二计算图中不再存在连续张量操作节点,因此可以大大降低运算过程中的冗余操作,从而降低硬件设备运算过程的时间消耗和空间消耗,提升吞吐量,继而提升神经网络运算的效率,从而提升整个硬件设备的计算和工作效率。
图1示出根据本公开一实施例的运算方法的流程图。该运算方法可以由终端设备或其它处理设备执行,其中,终端设备可以为用户设备(UserEquipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(PersonalDigital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该运算方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图所示,该方法可以包括:
步骤S11,接收第一计算图。
步骤S12,识别第一计算图内的张量操作节点。
步骤S13,在张量操作节点内包含连续张量操作节点时,对连续张量操作节点进行合并操作,得到第二计算图。其中,连续张量操作节点包括至少2个连续相邻的张量操作节点。
上述步骤中,连续张量操作节点包含的连续相邻的张量操作节点的个数不受限定,任何不小于2的整数均可作为连续张量操作节点所包含的张量操作节点的个数。在一个示例中,连续张量操作节点可以是2个连续相邻的张量操作节点;在一个示例中,连续张量操作节点可以是5个连续相邻的张量操作节点等。在此不对连续张量操作节点包含的张量操作节点的个数作数量上的限定。
在一种可能的实现方式中,合并操作可以是使得在输入张量相同的情况下,合并后得到的张量操作节点的输出张量与合并前的多个张量操作节点共同作用下得到的输出张量相同。例如,合并前的张量操作节点为节点1、节点2、节点3,输入张量A经过节点1、节点2、节点3后得到输出张量B,那么节点1、节点2、节点3合并后得到节点4,输入张量A经过节点4之后,得到相同的输出张量B。
通过将第一计算图中的连续张量操作节点进行合并操作,得到第二计算图,可以使得硬件设备在运算时,降低了原有需连续多次执行的张量运算操作的实际执行次数,从而有效减少硬件设备在通过计算图进行神经网络运算时所发生的冗余计算,降低计算资源的消耗,继而提升硬件设备的计算延时,提升硬件设备的运算速度。
张量操作节点的实现方式同样不受限定,即张量操作节点所包含的张量操作节点类型不受限定。在一种可能的实现方式中,张量操作节点可以包括张量形状变换节点或张量转置变换节点。由于张量操作节点的类型可能存在多种实现方式,因此在实际操作中,第一计算图所包含的张量操作节点的类型情况可能存在多种形式。在一种可能的实现方式中,对于第一计算图,其包含的张量操作节点可以仅包含张量形状变换节点,即reshape节点。reshape节点所执行的张量操作可以认为是对张量的形状进行重新诠释,在一个示例中,reshape节点的输入张量可以记为张量A,其形状为(A1,A2,…,An),输出张量可以记为张量B,其形状为(B1,B2,…,Bm),则reshape节点所执行的操作可以看作为改变张量A的形状,将其的形状改变为张量B,由于m和n的取值可能相同也可能不同,因此通过张量A和张量B的形状,可以看出reshape操作可能改变张量的维度,此时张量A和张量B满足约束A1*A2*…*An==B1*B2*…*Bm,且若a1*A2*…*An+a2*A3*…*An+…+an-1*An==b1*B2*…*Bn+b2*B3*…*Bn+…+bn-1*Bn,则A[a1,a2,…,an]==B[b1,b2,…,bm]。在一种可能的实现方式中,对于第一计算图,其包含的张量操作节点可以仅包含张量转置变换节点,即transpose节点。transpose节点所执行的张量操作可以认为是对张量进行转置,在一个示例中,transpose节点的输入张量可以记为张量A,其形状为(A1,A2,…,An),输出张量可以记为张量B,其形状为(B1,B2,…,Bn),通过张量A和张量B的形状,可以看出transpose不会改变张量的维度,transpose的参数可以记为perm,perm可以看作是(1,2,…,n)的一个全排列,因此经过对张量A进行transpose操作得到的张量B,其形状(B1,B2,…,Bn)可以看作是张量A的形状(A1,A2,…,An)的一个全排列,即B[i]==A[perm[i]],因此张量A和张量B满足约束A[a[1],a[2],…a[n]]==B[a[perm[1]],a[perm[2]],…,a[perm[n]]]。在一种可能的实现方式中,对于第一计算图,其包含的张量操作节点可以同时包含reshape节点和transpose节点。因此,第一计算图包含的张量操作节点的类型和情况,根据第一计算图的实际情况所决定,在此不受限定。
由于张量操作节点的实现方式不受限定,因此步骤S13的实现方式同样不受限定,图2示出根据本公开一实施例的运算方法的流程图,如图所示,在一种可能的实现方式中,步骤S13可以包括:
步骤S131,重复执行以下操作,直到在张量操作节点内,不包含能够进行合并操作或类型转换操作的连续张量操作节点,得到第二计算图。其中,执行以下操作,包括:
步骤S132,在连续张量操作节点包含同类型连续张量操作节点时,对同类型连续张量操作节点进行合并操作。其中,同类型连续张量操作节点中,张量操作节点执行的张量操作类型相同。
步骤S133,在连续张量操作节点包含非同类型连续张量操作节点时,对非同类型连续张量操作节点进行类型转换操作,使非同类型连续张量操作节点转换为同类型连续张量操作节点。其中,非同类型连续张量操作节点中,相邻张量操作节点执行的张量操作类型互不相同。
其中,步骤S132中的同类型连续张量操作节点,其实现方式不受限定。在一种可能的实现方式中,同类型连续张量操作节点,其包含的张量操作节点的类型不受限定。通过上述各公开实施例可以看出,张量操作节点可以是reshape节点或是transpose节点,因此,在一个示例中,同类型连续张量操作节点,可以是连续的reshape节点,也可以是transpose节点。通过上述各公开实施例还可以看出,连续张量操作节点包含的张量操作节点的数量不受限定,因此,在一种可能的实现方式中,同类型连续张量操作节点,其包含的张量操作节点的数量同样不受限定。综上所述,在一种可能的实现方式中,同类型连续张量操作节点可以包含任意数量个连续的reshape节点,也可以包含任意数量个连续的transpose节点,在一个示例中,同类型连续张量操作节点可以包含2个连续相邻的reshape节点;在一个示例中,同类型连续张量操作节点可以包含3个连续相邻的reshape节点;在一个示例中,同类型连续张量操作节点可以包含2个连续相邻的transpose节点;在一个示例中,同类型连续张量操作节点可以包含3个连续相邻的transpose节点。
同理,步骤S133中的非同类型连续张量操作节点,其实现方式不受限定。在一种可能的实现方式中,非同类型连续张量操作节点,其包含的张量操作节点的类型不受限定。通过上述各公开实施例可以看出,张量操作节点可以是reshape节点或是transpose节点,因此,在一个示例中,非同类型连续张量操作节点,可以是连续相邻的reshape节点和transpose节点,也可以是连续相邻的transpose节点和reshape节点。通过上述各公开实施例还可以看出,连续张量操作节点包含的张量操作节点的数量不受限定,因此,在一种可能的实现方式中,非同类型连续张量操作节点,其包含的张量操作节点的数量同样不受限定。综上所述,在一种可能的实现方式中,非同类型连续张量操作节点可以包含任意数量个连续间隔相邻的reshape节点和transpose节点,也可以包含任意数量个连续间隔相邻的transpose节点和reshape节点,在一个示例中,非同类型连续张量操作节点包含的张量操作节点的数量可以为2个,其实现形式可以为依次连接的一个reshape节点和一个transpose节点;在一个示例中,非同类型连续张量操作节点包含的张量操作节点的数量可以为3个,其实现形式可以为依次连接的一个reshape节点、一个transpose节点和另一个reshape节点;在一个示例中,非同类型连续张量操作节点包含的张量操作节点的数量可以为2个,其实现形式可以为依次连接的一个transpose节点和一个reshape节点;在一个示例中,非同类型连续张量操作节点包含的张量操作节点的数量可以为3个,其实现形式可以为依次连接的一个transpose节点、一个reshape节点和另一个transpose节点。需要注意的是,在本公开实施例中,在非同类型连续张量操作节点中,其任意两个相邻的张量操作节点,其类型均不相同,即本公开实施例中的非同类连续张量操作节点中,不包含相邻的同类型连续张量操作节点,在一个示例中,如果连续张量操作节点的数量为4个,且其形式为依次相邻的reshape节点、transpose节点、transpose节点和reshape节点,由于中间存在两个同类型的transpose节点相邻,因此此时可以将前两个张量操作节点看作一个非同类型连续张量操作节点,后两个张量操作节点看作一个非同类型连续张量操作节点,而不可将这四个张量操作节点看作一个非同类型连续张量操作节点。
除此之外,在上述公开实施例中,步骤S132和步骤S133的执行顺序不受限定,即在一种可能的实现方式中,可以是重复地依次执行步骤S132和步骤S133过程,直至达到步骤S131的终止条件。在一种可能的实现方式中,也可以是重复地依次执行步骤S133和步骤S132过程,直至达到步骤S131的终止条件。在一种可能的实现方式中,也可以是根据实际情况灵活的决定步骤S132和步骤S133的执行顺序,直至达到步骤S131的终止条件。
在一种可能的实现方式中,重复地依次执行步骤S132和步骤S133,直至达到步骤S131的终止条件,其具体的过程可以是:首先对第一计算图中所有同类型连续张量操作节点进行合并,直至第一计算图中不存在连续相邻的同类型张量操作节点,然后再对第一计算图中所有非同类型连续张量操作节点中可以执行类型转换的操作节点执行类型转换操作,使得第一计算图中不存在连续相邻的非同类型张量操作节点,由于执行了类型转换操作后,可能导致第一计算图中又出现了连续相邻的同类型张量操作节点,因此此时可以再次执行步骤S132,在再次执行了步骤S132后,可能使得第一计算图中又出现了连续相邻的非同类型的张量操作节点,因此此时可以再次执行步骤S133,不断重复执行步骤S132和S133,直至达到步骤S131的终止条件,即第一计算图中不包含能够进行合并操作或类型转换操作的连续张量操作节点,则此时的计算图则可以作为第二计算图用于硬件设备的运算。
在一种可能的实现方式中,重复地依次执行步骤S133和步骤S132,直至达到步骤S131的终止条件,其具体的过程可以是:首先对第一计算图中所有非同类型连续张量操作节点中可以执行类型转换的操作节点执行类型转换操作,使得第一计算图中不存在连续相邻的非同类型张量操作节点,然后再对第一计算图中所有同类型连续张量操作节点进行合并,直至第一计算图中不存在连续相邻的同类型张量操作节点,由于执行了合并操作后,可能导致第一计算图中又出现了连续相邻的非同类型张量操作节点,因此此时可以再次执行步骤S133,在再次执行了步骤S133后,可能使得第一计算图中又出现了连续相邻的同类型的张量操作节点,因此此时可以再次执行步骤S132,不断重复执行步骤S133和S132,直至达到步骤S131的终止条件,即第一计算图中不包含能够进行合并操作或类型转换操作的连续张量操作节点,则此时的计算图则可以作为第二计算图用于硬件设备的运算。
在一个示例中,第一计算图内存在4个连续张量操作节点,且其形式为依次相邻的reshape节点、transpose节点、transpose节点和reshape节点,此时重复地依次执行步骤S132和步骤S133,直至达到步骤S131的终止条件,其具体的过程可以是:首先将两个相邻的transpose节点作为同类型连续张量操作节点,通过步骤S132进行合并,得到一个transpose节点,则此时第一计算图内的连续张量操作节点数量为3个,其形式为依次相邻的reshape节点、transpose节点和reshape节点,则这3个连续张量操作节点可以看作非同类型连续张量操作节点,此时如果中间的transpose节点可以执行类型转换操作,则可以通过步骤S133将这个transpose节点转换为reshape节点,则此时第一计算图内的连续张量操作节点数量为3个,其形式为依次相邻的3个reshape节点,此时可以再通过步骤S132将这3个reshape节点合并为1个reshape节点,此时第一计算图内不存在可以进行合并或是类型转换操作的连续张量操作节点,因此得到的计算图可以作为第二计算图,从本公开实施例中可以看出,通过上述过程得到的第二计算图,相对于第一计算图来说,张量操作节点的数量从4个变为1个,大大缩短了运算步骤,降低了时空消耗,提升了运算效率。
在一个示例中,第一计算图内存在4个连续张量操作节点,且其形式为依次相邻的reshape节点、transpose节点、transpose节点和reshape节点,此时重复地依次执行步骤S133和步骤S132,直至达到步骤S131的终止条件,其具体的过程可以是:首先可以将前2个张量操作节点,即依次相邻的reshape节点和transpose节点看作非同类型连续张量操作节点,如果其中的transpose节点可以进行类型转换,则可以通过步骤S133将其转换为reshape节点,同理,如果后2个张量操作节点中的transpose节点也可以进行类型转换,则同样可以通过步骤S133将其转换为reshape节点,则此时第一计算图内的连续张量操作节点数量为4个,其形式为依次相邻的4个reshape节点,则这4个连续张量操作节点可以看作同类型连续张量操作节点,通过步骤S132可以将其合并为一个reshape节点,此时第一计算图内不存在可以进行合并操作或类型转换操作的连续张量操作节点,因此得到的计算图可以作为第二计算图,从本公开实施例中可以看出,通过上述过程得到的第二计算图,相对于第一计算图来说,张量操作节点的数量从4个变为1个,大大缩短了运算步骤,降低了时空消耗,提升了运算效率。
通过不断将同类型连续张量操作节点合并,并对非同类型连续张量操作节点进行类型转换操作,直至第一计算图中不包含能够进行合并操作或类型转换操作的连续张量操作节点,来得到第二计算图,可以使得硬件设备在基于第二计算图中进行运算时,将非同类型的张量操作尽量转换为同类型的张量操作,而同类型的连续张量操作尽量通过合并操作来减少运算次数,从而使得相关的张量的运算达到尽可能的简化,从而大大提升了运算速度和效率,降低运算的时空消耗。
上述公开实施例中,步骤S132的具体实现形式不受限定。在一种可能的实现方式中,步骤S132可以包括:在连续张量操作节点包含同类型连续张量操作节点时,将同类型连续张量操作节点合并为一个张量操作节点,合并后的张量操作节点与同类型连续张量操作节点中的任一张量操作节点执行的张量操作类型相同。
通过上述各公开实施例可知,同类型连续张量操作节点的实现形式不受限制,因此将其合并为一个张量操作节点的过程可以根据其实现形式不同存在相应的变化,但是其核心的思想是一致的,即将同类型连续张量操作节点包含的所有张量操作节点合并为一个张量操作节点,且合并前后张量操作节点的类型不变。
在一个示例中,连续张量操作节点可以是2个连续的transpose节点,在本公开实施例中,可以将这两个连续的transpose节点分别记为transpose1和transpose2,其中,transpose1节点的参数可以记为perm1,transpose2节点的参数可以记为perm2,则将transpose1和transpose2合并后得到的张量操作节点,同样为一个transpose节点,在此可以记为transpose3节点,其参数可以记为perm3,且perm3满足perm3[i]==perm1[perm2[i]]。
在一个示例中,连续张量操作节点可以是2个连续的reshape节点,在本公开实施例中,可以将这两个连续的reshape节点分别记为reshape1和reshape2,其中,reshape1节点的输入张量可以记为张量A,其形状记为(A1,A2,…,An),输出张量可以记为张量B,其形状记为(B1,B2,…,Bm),则张量B同样是reshape2节点的输入张量,同时将reshape节点2的输出张量记为张量C,其形状记为(C1,C2,…,Co)。则将reshape1和reshape2合并后得到的张量操作节点,同样为一个reshape节点,在此可以记为reshape3节点,则reshape3节点应满足其输入张量为张量A,输出张量为张量C。
在一个示例中,连续张量操作节点可以是3个连续的transpose节点,此时,其合并过程可以是直接将这3个连续的transpose节点,通过如上述公开实施例的参数变换方式进行类推,直接合并为1个transpose节点;也可以是首先将前2个连续的transpose节点通过与上述公开实施例相同的参数变换方式合并为1个transpose节点,再将这个合并后的transpose节点再与剩余的第3个transpose节点通过与上述公开实施例相同的参数变换方式合并为1个transpose节点,则此transpose节点为最终得到的合并完成后的transpose节点。在连续transpose节点的数量更多时,其合并方式可以根据上述公开实施例进行类推,在此不再赘述。
在一个示例中,连续张量操作节点可以是3个连续的reshape节点,此时,其合并过程可以是直接将这3个连续的reshape节点,通过如上述公开实施例的合并方式进行类推,直接合并为1个reshape节点;也可以是首先将前2个连续的reshape节点通过与上述公开实施例相同的合并方式合并为1个reshape节点,再将这个合并后的reshape节点再与剩余的第3个reshape节点通过与上述公开实施例相同的参数变换方式合并为1个reshape节点,则此reshape节点为最终得到的合并完成后的reshape节点。在连续reshape节点的数量更多时,其合并方式可以根据上述公开实施例进行类推,在此不再赘述。
同样的,上述公开实施例中,步骤S133的具体实现形式也不受限定。在一种可能的实现方式中,步骤S133可以包括:
对非同类型连续张量操作节点中的每个张量操作节点进行判断,确定是否为等价张量操作节点;
对非同类型连续张量操作节点中的等价张量操作节点进行类型转换,转换后的等价张量操作节点与相邻的张量操作节点执行的张量操作类型相同。
其中,等价张量操作节点在执行张量操作时,能够在执行张量转置变换与执行张量形状变换时得到相同的结果。。
对于本技术方案来说,判断一个张量操作节点是否为等价张量操作节点的方式可以为:以transpose节点为例,参数记为perm,且其输入张量记为形状为(A1,A2,…,An)的张量A,如果存在一个perm与自然数列(1,2,…,n)的一个公共子序列U,将自然数列(1,2,…,n)–U记为序列X,对于X中的每个元素X[i],A[X[i]]==1,则这种情况下的transpose节点可以看作为等价张量操作节点,即可以在保证节点的输入张量和输出张量不变的情况下,将这个transpose节点转换为reshape节点,反之亦然。
进一步地,在实际中,判断一个张量操作节点是否为等价张量操作节点的方式的另一种实现方式可以为:以reshape节点为例,如果reshape节点的输入张量与输出张量的维度相同,枚举出reshape节点的各种可能性的输入张量,对每一种可能性的输入张量经张量转置变换的方式得到对应的输出张量,对获得的输出张量的数据块形状与对应的输入张量的数据块形状进行匹配。在匹配的情况,进一步根据输出张量对应的perm参数以及自然数列确定至少一个公共子序列U,将自然数列–U记为序列X,对于X中的每个元素X[i],A[X[i]]==1。则这种情况下的reshape节点可以看作为等价张量操作节点,即可以在保证节点的输入张量和输出张量不变的情况下,将这个reshape节点转换为transpose节点。
因此,在非同类型连续张量操作节点中存在等价张量操作节点时,可以对该等价张量操作节点进行类型转换,从而通过类型转换来得到同类型连续张量操作节点,继而可以对第一计算图进行进一步简化。
在进行类型转换的过程中,可以将transpose节点转换为reshape节点,也可以将reshape节点转换为transpose节点,可以根据计算图中reshape节点和transpose节点的实际运算效率,以及节点的相邻情况进行灵活选择。在一个示例中,连续张量操作节点可以是2个依次连接的reshape节点和transpose节点,且reshape节点可以等价为transpose节点,transpose节点可以等价为reshape节点,在本公开实施例中,硬件设备在对计算图进行运算时,针对相同的计算规模,计算库内reshape节点的计算效率高于transpose节点的计算效率,因此此时可以将transpose节点转换为reshape节点。反之,计算库内transpose节点的计算效率高于reshape节点的计算效率时,此时可以将节点reshape转换为transpose节点。
在一个示例中,连续张量操作节点可以为3个依次连接的reshape节点、transpose节点和reshape节点,且两个reshape节点均可以等价为transpose节点,transpose节点可以等价为reshape节点,根据实际运算效率的评判,将transpose节点转换为reshape节点,可以在后续直接将3个reshape节点合并为一个reshape节点,这样的计算效率远远高于将两个reshape节点转换为transpose节点后再合并,因此此时可以将transpose节点转换为reshape节点。
通过上述各公开实施例中灵活的张量操作节点的合并操作和类型转换操作,可以根据实际情况灵活选择将第一计算图转换为第二计算图的实现过程,提升运算的灵活性。
对于本技术方案来说,硬件设备对第二计算图进行运算时,如果第二计算图中存在reshape节点,可以根据reshape节点的输入张量与输出张量的最内维度,在运算前将该reshape节点的输入张量和输出张量的内存地址进行统一,即指向同一运算数据块。在完成这一地址统一后,可以将神经网络中使用输入张量的操作,替换为使用输出张量。
基于上述描述,在一种可能的实现方式中,本公开实施例中提出的运算方法还可以包括:根据张量形状变换节点的输入张量与输出张量的最内维度参数,将输出张量与输入张量的内存地址进行统一。
上述公开实施例中,根据张量形状变换节点的输入张量与输出张量的最内维度参数,将输出张量与输入张量的内存地址进行统一(即张量形状变换节点的输入张量对应的数据块,与输出张量对应的数据块,二者应该是统一数据块)需满足的条件为:所述输入张量的最内维度(对应上述公开实施例中张量的C方向)所占的字节数和所述输出张量的最内维度(对应上述公开实施例中张量的C方向)所占的字节数均是16的倍数,且最内维度(对应上述公开实施例中张量的C方向)所占的字节数小于等于256;或者所述输入张量的最内维度(对应上述公开实施例中张量的C方向)所占的字节数和所述输出张量的最内维度(对应上述公开实施例中张量的C方向)所占的字节数均是16的倍数,且输入张量除了最内维度(对应上述公开实施例中张量的C方向)之外的其他维度以及输出张量除了最内维度(对应上述公开实施例中张量的C方向)之外的其他维度的均为1;或者所述输入张量的最内维度(对应上述公开实施例中张量的C方向)和所述输出张量的最内维度(对应上述公开实施例中张量的C方向)均相同。
具体地,在硬件设备的内存上,在进行张量形状变换时,如果输入张量A,其形状可以记为(A1,A2,…,An),与输出张量B,其形状可以记为(B1,B2,…,Bm),二者的最内维度参数不同,即An!=Bm,则需要在内存上对输入张量描述的数据和输出张量描述的数据进行最内维度对齐,即需要对数据进行重新排布操作,这个操作是需要消耗计算资源的,然而,若二者的最内维度参数满足上述条件,比如:An==Bm,则此时的张量形状变换只是对张量A的形状进行了改变,而无需将输入张量A描述的数据和输出张量B描述的数据执行最内维度对齐,此时输出张量B描述的数据块可以看作是输入张量A描述的数据块的拷贝,如果将输出张量B与输入张量的内存地址进行统一,此时则无需通过将输入张量A描述的数据块进行拷贝来得到输出张量B描述的数据块,即节省了拷贝的过程,从而提高运算效率。将满足条件的张量形状变换节点的输入张量与输出张量的内存地址进行统一的方式不受限定,在一种可能的实现方式中,可以将输出张量指向数据块的指针所指向的位置与输入张量指向数据块的指针所指向的位置二者进行统一。
这样,通过将第一计算图中的连续张量操作节点,通过不断地合并操作,可以减少运算过程中连续的张量形状变换操作的实际运算次数以及连续的张量转置操作的实际运算次数,可以大大简化运算过程,提高运算效率,降低运算的时间消耗和空间消耗;通过类型转换操作,可以将张量形状变换操作和张量转置操作进行类型统一,从而为合并操作提供更多的依据,进一步提升运算效率;通过根据最内维度参数,对张量形状变换节点的输入张量和输出张量的内存地址进行统一,可以节省硬件设备在运算时可能会发生的数据拷贝过程,从而进一步提升运算效率,同时节省内存空间。
在实际中,通用处理器(比如CPU)的操作系统基于本技术方案生成指令,将生成的指令发送至人工智能处理器芯片(比如GPU)上,由人工智能处理器芯片去执行指令操作实现神经网络的计算图优化。还有一种应用情况,通用处理器基于本技术方案直接对神经网络的计算图优化。更甚者,通用处理器和人工智能处理器芯片协同作业,共同基于本技术方案对神经网络的计算图优化操作。
在一个神经网络运算的示例中,初始的神经网络所对应的运算图中存在大量reshape节点和transpose节点相邻的情形,利用硬件设备对这一初始的神经网络所对应的运算图进行运算,单核运行时间大概在2s左右;通过上述各公开实施例中提出的运算方法,对初始的神经网络所对应的运算图进行简化,对其中的冗余计算进行合并操作和类型转换操作,得到简化后的运算图,利用同一硬件设备对这一简化后的运算图进行运算,单核运行时间缩短至200ms,由此可见,通过上述各公开实施例中提出的运算方法,可以有效的提高运算效率,缩短运算时间。
图3示出根据本公开一实施例的运算装置的框图,如图所示,该装置20包括:
接收单元21,用于接收第一计算图。
识别单元22,用于识别第一计算图内的张量操作节点。
计算图生成单元23,用于在张量操作节点内包含连续张量操作节点时,对连续张量操作节点进行合并操作,得到第二计算图;其中,连续张量操作节点包括至少2个连续相邻的张量操作节点。
在一种可能的实现方式中,张量操作节点包括:张量形状变换节点或张量转置变换节点。
在一种可能的实现方式中,计算图生成单元用于:重复执行以下操作,直到在张量操作节点内,不包含能够进行合并操作或类型转换操作的连续张量操作节点,得到第二计算图;其中,执行以下操作,包括:在连续张量操作节点包含同类型连续张量操作节点时,对同类型连续张量操作节点进行合并操作,其中,同类型连续张量操作节点中,张量操作节点执行的张量操作类型相同;在连续张量操作节点包含非同类型连续张量操作节点时,对非同类型连续张量操作节点进行类型转换操作,使非同类型连续张量操作节点转换为同类型连续张量操作节点,其中,非同类型连续张量操作节点中,相邻张量操作节点执行的张量操作类型互不相同。
在一种可能的实现方式中,计算图生成单元进一步用于:在连续张量操作节点包含同类型连续张量操作节点时,将同类型连续张量操作节点合并为一个张量操作节点,合并后的张量操作节点与同类型连续张量操作节点中的任一张量操作节点执行的张量操作类型相同。
在一种可能的实现方式中,计算图生成单元进一步用于:对非同类型连续张量操作节点中的每个张量操作节点进行判断,确定是否为等价张量操作节点;对非同类型连续张量操作节点中的等价张量操作节点进行类型转换,转换后的等价张量操作节点与相邻的张量操作节点执行的张量操作类型相同;其中,等价张量操作节点在执行张量操作时,能够在执行张量转置变换与执行张量形状变换时得到相同的结果。
在一种可能的实现方式中,装置还包括地址变换单元,地址变换单元用于:根据张量形状变换节点的输入张量与输出张量的最内维度参数,将输出张量与输入张量的内存地址进行统一。
图4是根据一示例性实施例示出的一种运算装置1300的框图。例如,装置1300可以被提供为一服务器。参照图4,装置1300包括处理组件1322,其进一步包括一个或多个处理器,以及由存储器1332所代表的存储器资源,用于存储可由处理组件1322的执行的指令,例如应用程序。存储器1332中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1322被配置为执行指令,以执行上述方法。
装置1300还可以包括一个电源组件1326被配置为执行装置1300的电源管理,一个有线或无线网络接口1350被配置为将装置1300连接到网络,和一个输入输出(I/O)接口1358。装置1300可以操作基于存储在存储器1332的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1332,上述计算机程序指令可由装置1300的处理组件1322执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
依据以下条款可更好地理解前述内容:
条款A1、一种运算方法,所述方法包括:
接收第一计算图;
识别所述第一计算图内的张量操作节点;
在所述张量操作节点内包含连续张量操作节点时,对所述连续张量操作节点进行合并操作,得到第二计算图;
其中,所述连续张量操作节点包括至少2个连续相邻的张量操作节点。
条款A2、根据条款A1所述的运算方法,所述张量操作节点包括:张量形状变换节点或张量转置变换节点。
条款A3、根据条款A1或条款A2所述的运算方法,在所述张量操作节点内包含连续张量操作节点时,对所述连续张量操作节点进行合并操作,得到第二计算图,包括:
重复执行以下操作,直到在所述张量操作节点内,不包含能够进行合并操作或类型转换操作的连续张量操作节点,得到所述第二计算图;其中,所述执行以下操作,包括:
在所述连续张量操作节点包含同类型连续张量操作节点时,对所述同类型连续张量操作节点进行合并操作,其中,同类型连续张量操作节点中,张量操作节点执行的张量操作类型相同;
在所述连续张量操作节点包含非同类型连续张量操作节点时,对所述非同类型连续张量操作节点进行类型转换操作,使所述非同类型连续张量操作节点转换为同类型连续张量操作节点,其中,非同类型连续张量操作节点中,相邻张量操作节点执行的张量操作类型互不相同。
条款A4、根据条款A3所述的运算方法,在所述连续张量操作节点包含同类型连续张量操作节点时,对所述同类型连续张量操作节点进行合并操作,包括:
在所述连续张量操作节点包含同类型连续张量操作节点时,将所述同类型连续张量操作节点合并为一个张量操作节点,合并后的张量操作节点与所述同类型连续张量操作节点中的任一张量操作节点执行的张量操作类型相同。
条款A5、根据条款A3所述的运算方法,在所述连续张量操作节点包含非同类型连续张量操作节点时,对所述非同类型连续张量操作节点进行类型转换操作,使所述非同类型连续张量操作节点转换为同类型连续张量操作节点,包括:
对所述非同类型连续张量操作节点中的每个张量操作节点进行判断,确定是否为等价张量操作节点;
对所述非同类型连续张量操作节点中的等价张量操作节点进行类型转换,转换后的等价张量操作节点与相邻的张量操作节点执行的张量操作类型相同;
其中,所述等价张量操作节点在执行张量操作时,能够在执行张量转置变换与执行张量形状变换时得到相同的结果。
条款A6、根据条款A2所述的运算方法,所述方法还包括:
根据所述张量形状变换节点的输入张量与输出张量的最内维度参数,将所述输出张量与所述输入张量的内存地址进行统一。
条款B7、一种运算装置,包括:
接收单元,用于接收第一计算图;
识别单元,用于识别所述第一计算图内的张量操作节点;
计算图生成单元,用于在所述张量操作节点内包含连续张量操作节点时,对所述连续张量操作节点进行合并操作,得到第二计算图;
其中,所述连续张量操作节点包括至少2个连续相邻的张量操作节点。
条款B8、根据条款B7所述的运算装置,其特征在于,所述张量操作节点包括:张量形状变换节点或张量转置变换节点。
条款B9、根据条款B7或条款B8所述的运算装置,所述计算图生成单元用于:
重复执行以下操作,直到在所述张量操作节点内,不包含能够进行合并操作或类型转换操作的连续张量操作节点,得到所述第二计算图;其中,所述执行以下操作,包括:
在所述连续张量操作节点包含同类型连续张量操作节点时,对所述同类型连续张量操作节点进行合并操作,其中,同类型连续张量操作节点中,张量操作节点执行的张量操作类型相同;
在所述连续张量操作节点包含非同类型连续张量操作节点时,对所述非同类型连续张量操作节点进行类型转换操作,使所述非同类型连续张量操作节点转换为同类型连续张量操作节点,其中,非同类型连续张量操作节点中,相邻张量操作节点执行的张量操作类型互不相同。
条款B10、根据条款B9所述的运算装置,所述计算图生成单元进一步用于:
在所述连续张量操作节点包含同类型连续张量操作节点时,将所述同类型连续张量操作节点合并为一个张量操作节点,合并后的张量操作节点与所述同类型连续张量操作节点中的任一张量操作节点执行的张量操作类型相同。
条款B11、根据条款B9所述的运算装置,所述计算图生成单元进一步用于:
对所述非同类型连续张量操作节点中的每个张量操作节点进行判断,确定是否为等价张量操作节点;
对所述非同类型连续张量操作节点中的等价张量操作节点进行类型转换,转换后的等价张量操作节点与相邻的张量操作节点执行的张量操作类型相同;
其中,所述等价张量操作节点在执行张量操作时,能够在执行张量转置变换与执行张量形状变换时得到相同的结果。
条款B12、根据条款B8所述的运算装置,所述装置还包括地址变换单元,所述地址变换单元用于:
根据所述张量形状变换节点的输入张量与输出张量的最内维度参数,将所述输出张量与所述输入张量的内存地址进行统一。
条款C13、一种运算装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行条款A1-条款A6任一项所述的方法。
条款D14、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款A1至条款A6中任意一项所述的方法。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种运算方法,其特征在于,所述方法包括:
接收第一计算图;
识别所述第一计算图内的张量操作节点;
在所述张量操作节点内包含连续张量操作节点时,对所述连续张量操作节点进行合并操作,得到第二计算图;
其中,所述连续张量操作节点包括至少2个连续相邻的张量操作节点;
所述张量操作节点包括:张量形状变换节点或张量转置变换节点;
其中,所述方法还包括:根据所述张量形状变换节点的输入张量与输出张量的最内维度参数,将所述输出张量与所述输入张量的内存地址进行统一。
2.根据权利要求1所述的运算方法,其特征在于,在所述张量操作节点内包含连续张量操作节点时,对所述连续张量操作节点进行合并操作,得到第二计算图,包括:
重复执行以下操作,直到在所述张量操作节点内,不包含能够进行合并操作或类型转换操作的连续张量操作节点,得到所述第二计算图;其中,所述执行以下操作,包括:
在所述连续张量操作节点包含同类型连续张量操作节点时,对所述同类型连续张量操作节点进行合并操作,其中,同类型连续张量操作节点中,张量操作节点执行的张量操作类型相同;
在所述连续张量操作节点包含非同类型连续张量操作节点时,对所述非同类型连续张量操作节点进行类型转换操作,使所述非同类型连续张量操作节点转换为同类型连续张量操作节点,其中,非同类型连续张量操作节点中,相邻张量操作节点执行的张量操作类型互不相同。
3.根据权利要求2所述的运算方法,其特征在于,在所述连续张量操作节点包含同类型连续张量操作节点时,对所述同类型连续张量操作节点进行合并操作,包括:
在所述连续张量操作节点包含同类型连续张量操作节点时,将所述同类型连续张量操作节点合并为一个张量操作节点,合并后的张量操作节点与所述同类型连续张量操作节点中的任一张量操作节点执行的张量操作类型相同。
4.根据权利要求2所述的运算方法,其特征在于,在所述连续张量操作节点包含非同类型连续张量操作节点时,对所述非同类型连续张量操作节点进行类型转换操作,使所述非同类型连续张量操作节点转换为同类型连续张量操作节点,包括:
对所述非同类型连续张量操作节点中的每个张量操作节点进行判断,确定是否为等价张量操作节点;
对所述非同类型连续张量操作节点中的等价张量操作节点进行类型转换,转换后的等价张量操作节点与相邻的张量操作节点执行的张量操作类型相同;
其中,所述等价张量操作节点在执行张量操作时,能够在执行张量转置变换与执行张量形状变换时得到相同的结果。
5.一种运算装置,其特征在于,包括:
接收单元,用于接收第一计算图;
识别单元,用于识别所述第一计算图内的张量操作节点;
计算图生成单元,用于在所述张量操作节点内包含连续张量操作节点时,对所述连续张量操作节点进行合并操作,得到第二计算图;
其中,所述连续张量操作节点包括至少2个连续相邻的张量操作节点;
所述张量操作节点包括:张量形状变换节点或张量转置变换节点;
其中,所述装置还包括地址变换单元,所述地址变换单元用于:根据所述张量形状变换节点的输入张量与输出张量的最内维度参数,将所述输出张量与所述输入张量的内存地址进行统一。
6.根据权利要求5所述的运算装置,其特征在于,所述计算图生成单元用于:
重复执行以下操作,直到在所述张量操作节点内,不包含能够进行合并操作或类型转换操作的连续张量操作节点,得到所述第二计算图;其中,所述执行以下操作,包括:
在所述连续张量操作节点包含同类型连续张量操作节点时,对所述同类型连续张量操作节点进行合并操作,其中,同类型连续张量操作节点中,张量操作节点执行的张量操作类型相同;
在所述连续张量操作节点包含非同类型连续张量操作节点时,对所述非同类型连续张量操作节点进行类型转换操作,使所述非同类型连续张量操作节点转换为同类型连续张量操作节点,其中,非同类型连续张量操作节点中,相邻张量操作节点执行的张量操作类型互不相同。
7.根据权利要求6所述的运算装置,其特征在于,所述计算图生成单元进一步用于:
在所述连续张量操作节点包含同类型连续张量操作节点时,将所述同类型连续张量操作节点合并为一个张量操作节点,合并后的张量操作节点与所述同类型连续张量操作节点中的任一张量操作节点执行的张量操作类型相同。
8.根据权利要求6所述的运算装置,其特征在于,所述计算图生成单元进一步用于:
对所述非同类型连续张量操作节点中的每个张量操作节点进行判断,确定是否为等价张量操作节点;
对所述非同类型连续张量操作节点中的等价张量操作节点进行类型转换,转换后的等价张量操作节点与相邻的张量操作节点执行的张量操作类型相同;
其中,所述等价张量操作节点在执行张量操作时,能够在执行张量转置变换与执行张量形状变换时得到相同的结果。
9.一种运算装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-4任一项所述的方法。
10.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至4中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910385775.8A CN111915002B (zh) | 2019-05-09 | 2019-05-09 | 运算方法、装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910385775.8A CN111915002B (zh) | 2019-05-09 | 2019-05-09 | 运算方法、装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111915002A CN111915002A (zh) | 2020-11-10 |
CN111915002B true CN111915002B (zh) | 2023-12-19 |
Family
ID=73242562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910385775.8A Active CN111915002B (zh) | 2019-05-09 | 2019-05-09 | 运算方法、装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111915002B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017075360A1 (en) * | 2015-10-28 | 2017-05-04 | Google Inc. | Stream-based accelerator processing of computational graphs |
CN108292374A (zh) * | 2015-11-09 | 2018-07-17 | 谷歌有限责任公司 | 训练表示为计算图的神经网络 |
CN109104876A (zh) * | 2017-04-20 | 2018-12-28 | 上海寒武纪信息科技有限公司 | 一种运算装置及相关产品 |
CN109117950A (zh) * | 2018-08-01 | 2019-01-01 | 南京天数智芯科技有限公司 | 基于人工智能设备的分层稀疏张量压缩方法 |
CN109325589A (zh) * | 2017-07-31 | 2019-02-12 | 华为技术有限公司 | 卷积计算方法及装置 |
CN109491784A (zh) * | 2018-10-18 | 2019-03-19 | 北京旷视科技有限公司 | 降低内存占用量的方法、装置、电子设备、可读存储介质 |
CN109543825A (zh) * | 2018-11-30 | 2019-03-29 | 上海寒武纪信息科技有限公司 | 神经网络模型算法编译方法、装置及相关产品 |
CN109684087A (zh) * | 2018-12-17 | 2019-04-26 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
-
2019
- 2019-05-09 CN CN201910385775.8A patent/CN111915002B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017075360A1 (en) * | 2015-10-28 | 2017-05-04 | Google Inc. | Stream-based accelerator processing of computational graphs |
CN108351805A (zh) * | 2015-10-28 | 2018-07-31 | 谷歌有限责任公司 | 计算图的基于流的加速器处理 |
CN108292374A (zh) * | 2015-11-09 | 2018-07-17 | 谷歌有限责任公司 | 训练表示为计算图的神经网络 |
CN109104876A (zh) * | 2017-04-20 | 2018-12-28 | 上海寒武纪信息科技有限公司 | 一种运算装置及相关产品 |
CN109325589A (zh) * | 2017-07-31 | 2019-02-12 | 华为技术有限公司 | 卷积计算方法及装置 |
CN109117950A (zh) * | 2018-08-01 | 2019-01-01 | 南京天数智芯科技有限公司 | 基于人工智能设备的分层稀疏张量压缩方法 |
CN109491784A (zh) * | 2018-10-18 | 2019-03-19 | 北京旷视科技有限公司 | 降低内存占用量的方法、装置、电子设备、可读存储介质 |
CN109543825A (zh) * | 2018-11-30 | 2019-03-29 | 上海寒武纪信息科技有限公司 | 神经网络模型算法编译方法、装置及相关产品 |
CN109684087A (zh) * | 2018-12-17 | 2019-04-26 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
Non-Patent Citations (2)
Title |
---|
Neural Networks for Modeling and Control of Particle Accelerators;A. L. Edelen 等;IEEE Transactions on Nuclear Science ( Volume: 63, Issue: 2, April 2016);全文 * |
可扩展机器学习的并行与分布式优化算法综述;亢良伊;软件学报;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111915002A (zh) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107944545B (zh) | 应用于神经网络的计算方法及计算装置 | |
CN111915480B (zh) | 生成特征提取网络的方法、装置、设备和计算机可读介质 | |
US20160210718A1 (en) | Data-parallel parameter estimation of the latent dirichlet allocation model by greedy gibbs sampling | |
CN110377340B (zh) | 运算方法、装置及相关产品 | |
WO2023082644A1 (zh) | 网络模型处理方法、装置、设备、存储介质及计算机程序产品 | |
CN114503125A (zh) | 结构化剪枝方法、系统和计算机可读介质 | |
CN113327599B (zh) | 语音识别方法、装置、介质及电子设备 | |
CN115034358A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN115081616A (zh) | 一种数据的去噪方法以及相关设备 | |
CN112785493A (zh) | 模型的训练方法、风格迁移方法、装置、设备及存储介质 | |
CN112463160A (zh) | 编译方法、装置、电子设备和存储介质 | |
CN111898338B (zh) | 文本生成方法、装置和电子设备 | |
US11935271B2 (en) | Neural network model compression with selective structured weight unification | |
US11496775B2 (en) | Neural network model compression with selective structured weight unification | |
WO2024001653A1 (zh) | 特征提取方法、装置、存储介质及电子设备 | |
US20210279594A1 (en) | Method and apparatus for video coding | |
CN111915689B (zh) | 用于生成目标函数的方法、装置、电子设备和计算机可读介质 | |
US10013644B2 (en) | Statistical max pooling with deep learning | |
CN110717405B (zh) | 人脸特征点定位方法、装置、介质及电子设备 | |
CN111915002B (zh) | 运算方法、装置及相关产品 | |
JP2020021208A (ja) | ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム | |
CN115828992A (zh) | 处理神经网络模型的方法 | |
CN112101511A (zh) | 稀疏卷积神经网络 | |
CN112132272B (zh) | 神经网络的计算装置、处理器和电子设备 | |
CN114972775A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |