CN110659728A - 神经网络优化方法、装置、计算机设备及存储介质 - Google Patents

神经网络优化方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN110659728A
CN110659728A CN201910910118.0A CN201910910118A CN110659728A CN 110659728 A CN110659728 A CN 110659728A CN 201910910118 A CN201910910118 A CN 201910910118A CN 110659728 A CN110659728 A CN 110659728A
Authority
CN
China
Prior art keywords
glue
operator
subgraph
tensor
tensor 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
CN201910910118.0A
Other languages
English (en)
Other versions
CN110659728B (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.)
Anhui 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 CN201910910118.0A priority Critical patent/CN110659728B/zh
Publication of CN110659728A publication Critical patent/CN110659728A/zh
Priority to US17/622,702 priority patent/US20220383082A1/en
Priority to PCT/CN2020/116933 priority patent/WO2021057746A1/zh
Priority to EP20869294.7A priority patent/EP4036810A4/en
Application granted granted Critical
Publication of CN110659728B publication Critical patent/CN110659728B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/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)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Machine Translation (AREA)

Abstract

本申请实施例公开了一种神经网络优化方法、装置、计算机设备及存储介质,通过重构子图的方式获取胶水子图对应的优化结构,并根据重构后的子图对神经网络模型进行优化,可以提高神经网络模型的整体性能。当接收到机器学习处理任务的请求时,调用优化后的神经网络模型可以减少冗余计算,继而减少计算机设备的资源消耗。

Description

神经网络优化方法、装置、计算机设备及存储介质
技术领域
本发明涉及信息处理技术领域,尤其涉及一种神经网络优化方法、装置、计算机设备及存储介质。
背景技术
神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,这种网络由大量的节点(或称神经元)之间星湖连接构成,通过调整内部大量节点之间相互连接的关系,利用输入数据、权值产生输出数据模拟人脑的信息处理过程处理信息并生成模式识别之后的结果。
现有中,算法设计者在对神经网络模型进行设计时,往往出于神经网络模型在描述上的整洁和简洁的目的,在神经网络模型中引入了“胶水”算子。这里,“胶水”算子是指算子本身并不涉及任何计算逻辑,其输入数据和输出数据不管是数的数量,亦或是数值本身都没有发生变化。然而,不合理的“胶水”算子的引入和组合可以导致在更高一级的计算图层面上在神经网络模型的执行过程中加入了一些不必要、不合理的访存行为,影响了人工智能处理器针对神经网络模型的计算部分在硬件结构和指令设计上进行针对优化所带来的优异的性能的提升,降低了神经网络模型的整体性能。那么,当计算机设备在运行上述包含可以优化的“胶水”算子的神经网络模型时,这无疑加大了计算机设备的资源消耗。
发明内容
本发明实施例提供一种神经网络优化方法、装置、计算机设备及存储介质,对包含多个胶水算子的胶水子图,通过重构子图的方式获取胶水子图对应的优化结构,并根据重构后的子图对神经网络模型进行优化,这一实现方式可以提高神经网络模型的整体性能。此外,当在计算机设备运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
为实现上述目的,第一方面,本发明实施例提供了一种神经网络优化方法,该方法包括:
在神经网络模型对应的计算图中提取胶水子图;其中,所述胶水子图是包含胶水算子的子图;所述胶水算子用于对所述计算图的张量数据进行调整;
在确保所述胶水子图的输入张量数据、输出张量数据不变的情况下,对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合;其中,所述重构结果子图集合中的任意一个重构结果子图的输入张量数据和输出张量数据分别与所述胶水子图的输入张量数据和输出张量数据相同;
从所述重构结果子图集合中确定目标子图;
将所述目标子图替换所述计算图中对应的胶水子图,获取优化后的计算图;
根据所述优化后的计算图获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
为实现上述目的,第二方面,本发明实施例提供了一种神经网络优化装置,该装置包括用于执行上述第一方面的方法的单元。具体地,该装置包括:
提取单元,用于在神经网络模型对应的计算图中提取胶水子图;其中,所述胶水子图是包含胶水算子的子图;所述胶水算子用于对所述计算图的张量数据进行调整;
处理单元,用于在确保所述胶水子图的输入张量数据、输出张量数据不变的情况下,对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合;其中,所述重构结果子图集合中的任意一个重构结果子图的输入张量数据和输出张量数据分别与所述胶水子图的输入张量数据和输出张量数据相同;
确定单元,用于从所述重构结果子图集合中确定目标子图;
优化单元,用于将所述目标子图替换所述计算图中对应的胶水子图,获取优化后的计算图;
执行单元,用于根据所述优化后的计算图获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
为实现上述目的,第三方面,本申请实施例提供了一种计算机设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储支持计算机设备执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
第五方面,本申请实施例提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
实施本申请实施例,计算机设备对包含多个胶水算子的胶水子图,通过重构子图的方式获取胶水子图对应的优化结构,并根据重构后的子图对神经网络模型进行优化,这一实现方式可以提高神经网络模型的整体性能。此外,当在计算机设备运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1A是本申请实施例提供的一种reshape算子语义的示意图;
图1B是本申请实施例提供的一种transpose算子语义的示意图;
图1C是本申请实施例提供的一种concat算子语义的示意图;
图1D是本申请实施例提供的一种split算子语义的示意图;
图1E是本申请实施例提供的一种张量数据连续存储的示意图;
图1F是本申请实施例提供的一种保证操作的等价性的示意图;
图1G是本申请实施例提供的一种含stride的内存分布的示意图;
图2是本申请实施例提供的一种计算机设备的结构示意图;
图3A是本申请实施例提供的一种神经网络优化方法的流程示意图;
图3B是本申请实施例提供的一种在原始计算图中提取的胶水算子的结构示意图;
图4A是本申请实施例提供的一种神经网络模型的优化示意图;
图4B是本申请实施例提供的另一种神经网络模型的优化示意图;
图4C是本申请实施例提供的另一种神经网络模型的优化示意图;
图4D是本申请实施例提供的另一种神经网络模型的优化示意图;
图4E是本申请实施例提供的另一种神经网络模型的优化示意图;
图4F是本申请实施例提供的另一种神经网络模型的优化示意图;
图4G是本申请实施例提供的另一种神经网络模型的优化示意图;
图4H是本申请实施例提供的另一种神经网络模型的优化示意图;
图4I是本申请实施例提供的另一种神经网络模型的优化示意图;
图4J是本申请实施例提供的另一种神经网络模型的优化示意图;
图4K是本申请实施例提供的另一种神经网络模型的优化示意图;
图4L是本申请实施例提供的另一种神经网络模型的优化示意图;
图4M是本申请实施例提供的另一种神经网络模型的优化示意图;
图4N是本申请实施例提供的另一种神经网络模型的优化示意图;
图4O是本申请实施例提供的另一种神经网络模型的优化示意图;
图4P是本申请实施例提供的另一种神经网络模型的优化示意图;
图5A是本申请实施例提供的一种第一计算图的结构示意图;
图5B是本申请实施例提供的一种胶水子图的结构示意图;
图5C是本申请实施例提供的一种优化后的等效优化序列的结构示意图;
图5D是本申请实施例提供的一种扩充后的第一计算图的结构示意图;
图5E是本申请实施例提供的一种状态集合图;
图5F是本申请实施例提供的另一种状态转换示意图;
图5G是本申请实施例提供的另一种状态转换示意图;
图5H是本申请实施例提供的另一种状态转换示意图;
图5I是本申请实施例提供的另一种状态转换示意图;
图5J是本申请实施例提供的另一种状态转换示意图;
图5K是本申请实施例提供的另一种状态转换示意图;
图5L是本申请实施例提供的另一种状态转换示意图;
图5M是本申请实施例提供的另一种状态转换示意图;
图6是本申请实施例提供的一种神经网络优化装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了便于更好的理解本申请所描述的技术方案,下面先解释本申请实施例所涉及的技术术语:
(1)张量(tensor)
在本技术方案中,张量仅仅是对存储的一块数据的特征描述,张量记录了数据的形状、类型等信息。
本申请实施例中,张量应该理解为张量数据,可以包括神经网络模型中输入张量数据、输出张量数据,也可以包括特征张量数据等。
以人工智能深度学习框架TensorFlow为例,一般使用阶(rank),形状(shape)和维数(dimension number)来描述张量的维度,其关系可以表示为表1所示:
表1
Figure BDA0002213790920000051
如表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 BDA0002213790920000101
都是参数为(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)等效规则
在本申请实施例中,等效规则包括reshape算子的等效规则、transpose算子的等效规则、concat算子的等效规则以及split算子的等效规则中的至少一种。在接下来的实施例中,将一一进行阐述。
从本质上来看,等效规则描述的是可以优化的胶水算子的逻辑关系。在本申请实施例中,胶水算子的逻辑关系是至少两个胶水算子中一个算子的输出数据交由另一个算子作为输入数据进行运算操作。
(9)人工智能处理器
人工智能处理器,也称之为专用处理器,在本申请实施例中,人工智能处理器是指针对特定应用或者领域的处理器。例如:图形处理器(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可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
下面结合图3A所示的本申请实施例提供的一种神经网络优化方法的流程示意图,具体说明在本申请实施例中,是如何对神经网网络模型进行优化的,可以包括但不限于如下步骤:
步骤S300、在神经网络模型对应的计算图中提取胶水子图;其中,所述胶水子图是包含胶水算子的子图;所述胶水算子用于对所述计算图的张量数据进行调整。
在本申请实施例中,“神经网络模型”也称模型,如“第一神经网络模型”、“第二神经网络模型”或“第三神经网络模型”,可以接收输入数据,并根据接收的输入数据和当前的模型参数生成预测输出。在实际应用中,预测输出可以包括图像检测输出结果、语义分析输出结果、图像分类输出结果等等。该神经网络模型可以包括深度学习神经网络模型(deepneural network,DNN)、卷积神经网络模型(Convolutional Neural Network,CNN)、极限学习机模型(extreme learning machine,ELM)或其他的神经网络模型等。
在本申请实施例中,神经网络模型中包含胶水算子。具体地,胶水算子可以包括reshape算子、transpose算子、concat算子、split算子等,还可以包括其他可以用于对神经网络模型中张量数据的格式、张量数据的形状以及张量数据在内存中排布进行调整的胶水算子,本申请实施例不作具体限定。
在本申请实施例中,计算图是指:使用图结构对神经网络模型的计算过程进行描述的一种方式。为了便于阐述,我们将胶水子图定义为包含胶水算子的计算图。例如,计算机设备中的通用处理器在神经网络模型对应的计算图中提取到的胶水子图可以参见图3B,如图3B所示,该胶水子图中包含reshape算子和concat算子,每个胶水算子均关联有对应的张量数据。
步骤S302、在确保所述胶水子图的输入张量数据、输出张量数据不变的情况下,对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合;其中,所述重构结果子图集合中的任意一个重构结果子图的输入张量数据和输出张量数据分别与所述胶水子图的输入张量数据和输出张量数据相同。
在本申请实施例中,重构结果子图是指可以对胶水子图进行替换的子图。具体地,重构结果子图为遍历状态集合图得到的。从本质上来看,重构结果子图为状态集合图中从起始状态到终点状态的一条路径。
在本申请实施例中,对计算图中的胶水子图进行处理可以包括:在保证胶水子图的输入张量数据和输出张量数据不变,以及胶水子图整体所代表的语义不变的情况下,对胶水子图内部的胶水算子和中间结果张量数据进行增加、删除、拓扑关系调整等等。
在本申请实施例中,计算机设备提取的胶水子图的数量为多个的情况下,计算机设备可以对这多个胶水子图进行扩充,通过重构子图的方式获取每个胶水子图对应的优化结构;也可以只对其中的任意一个胶水子图进行扩充,通过重构子图的方式获取胶水子图对应的优化结构,本申请实施例不作具体限定。
具体实现中,所述对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合,可以包括但不限于如下步骤A1-步骤A3,接下来对其进行具体阐述:
步骤A1、根据胶水算子的逻辑关系对所述胶水子图进行扩充,获得扩充后的胶水子图。
具体实现中,所述根据胶水算子的逻辑关系对所述胶水子图进行扩充,获得扩充后的胶水子图,包括:
根据等效规则对所述胶水子图中胶水算子之间的逻辑关系进行扩充,获得与所述胶水子图的语义等价的逻辑关系;
根据与所述胶水子图的语义等价的逻辑关系对所述胶水子图进行扩充,获得所述扩充后的胶水子图。
这里,所述根据等效规则对所述胶水子图中胶水算子之间的逻辑关系进行扩充,包括:
对所述逻辑关系对应的算子序列进行变换,根据所述等效规则,确保获得所有与所述胶水子图的语义等价的逻辑关系。
在本申请实施例中,等效规则包括包括reshape算子的等效规则、transpose算子的等效规则、concat算子的等效规则、split算子的等效规则中的至少一种。从本质上来看,等效规则为根据胶水算子的逻辑关系进行优化的规则,下面对其进行具体阐述:
(1)reshape算子的等效规则。
在本申请实施例中,胶水算子的逻辑关系可以包括reshape算子间的逻辑关系,或,reshape算子与第一类其他算子的逻辑关系;第一类其他算子可以包括transpose算子、concat算子、split算子中的任意一种算子。
在一种可能的实现方式中,胶水算子的逻辑关系包括reshape算子间的逻辑关系,例如,多个连续的reshape算子;在另一种可能的实现方式中,胶水算子的逻辑关系包括reshape算子与第一类其他算子的逻辑关系,例如,reshape算子与transpose算子相邻;又例如,reshape算子与concat算子相邻;又例如,reshape算子与split算子相邻,等等。在本申请实施例中,算子与算子相邻用于表征一个算子的输出张量数据作为另一个算子的输入张量数据。
在本申请实施例中,胶水算子的逻辑关系应该理解为计算机设备在执行神经网络模型这一程序代码过程中的执行逻辑。例如,计算机设备在执行某段程序代码过程中,先执行reshape算子,后执行transpose算子,在这种情况下,可以理解为:计算机设备将reshape算子的输出张量数据作为transpose算子的输入张量数据。
第一种情形:transpose算子的输出张量数据是reshape算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括transpose算子的输出张量数据是reshape算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“transpose算子和reshape算子”这一胶水子图语义等价的逻辑关系,可以包括:
在所述transpose算子的执行过程中,所述reshape算子进行维度合并的维度的相对位置不变,将reshape算子的输出张量数据作为所述transpose算子的输入张量数据。
在本申请实施例中,维度是指神经网络模型中的计算图中的张量数据的维度。例如,以卷积神经网络为例,卷积神经网络模型中的计算图中的张量数据的维度一般可以包括4个维度,分别为表示当前计算所处理的数据的批量大小的N,表示特征图像数量的C,表示特征图像尺寸的H和W。
在本申请实施例中,如图4A中的(a)所示,神经网络模型对应的计算图中包含reshape算子和transpose算子,其中,transpose算子的输出张量数据是reshape算子的输入张量数据,当reshape算子进行维度合并的维度的相对位置没有在transpose算子执行过程中发生变化,在一种实现方式中,如图4A中的(b)所示,可以按照优化路径(1)进行优化,将reshape算子的部分输出张量数据作为transpose算子的输入张量数据,从而可以得到与胶水子图语义等价的逻辑关系;在另一种实现方式中,也可以按照优化路径进行优化,将reshape算子的输出张量数据作为transpose算子的输入张量数据,从而可以得到与胶水子图语义等价的逻辑关系。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,4,5],张量A在经过transpose算子之后,可以得到张量B=[5,3,4],与此同时,当张量B在经过reshape算子之后,可以得到张量C=[5,6,2]。这里,reshape算子在后两个维度上的操作可以认为是先对3和4进行合并,然后将其进行拆分,可以拆分成6和2。分析张量A=[3,4,5]和张量B=[5,3,4]可以知道的是,3和4的相对位置在transpose算子前后并没有发生变化,那么,在这种情况下,可以将reshape算子的输出张量数据作为transpose算子的输入张量数据,从而其实现过程可以描述为:张量A=[3,4,5],张量A在经过reshape算子之后,可以得到张量B’=[6,2,5],与此同时,张量B’在经过transpose算子之后,可以得到张量C’=[5,6,2]。可以理解的是,由于优化得到的与胶水子图语义等价的逻辑关系可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第二种情形:concat算子的输出张量数据是reshape算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括concat算子的输出张量数据是reshape算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“concat算子和reshape算子”这一胶水子图语义等价的逻辑关系,可以包括:
当所述concat算子所操作的维度k0+k1+...+km在所述reshape算子的拆分阶段被拆分成p0×p1×...×(k0/∏ipi+k1/∏ipi+...+km/∏ipi)×...×pn-1×pn,将reshape算子的输出张量数据作为所述concat算子的输入张量数据;其中,k0、k1、km表示所述concat算子拼接的维度大小。
在本申请实施例中,如图4B中的(a)所示,神经网络模型对应的计算图中包含reshape算子和concat算子,其中,concat算子的输出张量数据是reshape算子的输入张量数据,当concat算子所操作的维度k0+k1+...+km在reshape算子的拆分阶段被拆分成形如p0×p1×...×(k0/∏ipi+k1/∏ipi+...+km/∏ipi)×...×pn-1×pn的形式,如4B(b)所示,可以将reshape算子的输出张量数据作为所述concat算子的输入张量数据,从而可以得到与胶水子图语义等价的逻辑关系。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,4,5],张量B=[3,6,5],张量A和张量B在经过concat算子之后,可以得到张量C=[3,10,5],与此同时,当张量C在经过reshape算子之后,可以得到张量D=[15,2,5]。分析上述变化过程可以知道的是,concat输出张量(也即张量C)中维度10为对张量A中维度4和张量B中维度6进行累加而来。由于reshape算子在执行过程中可以认为是:先对维度进行合并,然后,对合并后的维度进行拆分。当张量C在经过reshape算子时,维度10被拆分成一系列因子{5,2},因而维度10可以表示为(4/2+6/2)*2的形式,那么,在这种情况下,可以将reshape算子的输出张量数据作为所述concat算子的输入张量数据,从而其实现过程可以描述为:张量A=[3,4,5],张量B=[3,6,5],这两个张量在经过reshape算子之后,可以得到张量C’=[6,2,5],张量D’=[9,2,5],那么,张量C’和张量D’在经过concat算子之后,可以得到张量E=[15,2,5]。可以理解的是,由于优化得到的与胶水子图语义等价的逻辑关系可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第三种情形:split算子的输出张量数据是多个reshape算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括split算子的输出张量数据是多个reshape算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“split算子和多个reshape算子”这一胶水子图语义等价的逻辑关系,可以包括:
在所述split算子的输出张量经过各自对应的reshape算子之后,至多只有一个维度的长度不同,将所述多个reshape算子的输出张量数据作为所述split算子的输入张量数据。
在本申请实施例中,如图4C中的(a)所示,神经网络模型对应的计算图中包含多个reshape算子与split算子,其中,split算子的输出张量数据是多个reshape算子的输入张量数据,在split算子的所有输出张量经过各自对应的reshape算子之后,至多只有一个维度的长度不同,例如,只有C维度上的长度不同,在这种情况下,如图4C中的(b)所示,将多个reshape算子的输出张量数据作为split算子的输入张量数据,从而可以得到与胶水子图语义等价的逻辑关系。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,15,4],张量A在经过split算子之后,可以得到张量B=[3,6,4]和张量C=[3,9,4],张量B和张量C在经过各自对应的reshape算子之后,可以得到张量D=[6,3,4]和张量E=[9,3,4]。分析张量D和张量E可以知道的是,reshape算子的输出张量只有一个维度不同(张量D中的维度6和张量E中的维度9),那么,在这种情况下,可以将多个reshape算子的输出张量数据作为split算子的输入张量数据,从而其实现过程可以描述为:张量A=[3,15,4],张量A在经过reshape算子之后,可以得到张量B=[15,3,4],与此同时,张量B在经过split算子之后,可以得到张量C’=[6,3,4]和张量D’=[9,3,4]。可以理解的是,由于优化得到的与胶水子图语义等价的逻辑关系可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第四种情形:多个连续的reshape算子。
具体实现中,所述胶水算子的逻辑关系可以包括N个连续的reshape算子。在这种情况下,根据胶水算子的逻辑关系确定与“多个reshape算子”这一胶水子图语义等价的逻辑关系,可以包括:
当神经网络模型对应的计算图中包含连续N个reshape算子时,对N个reshape算子进行合并,得到一个reshape算子。这里,N为大于等于2的正整数,如N=2。
在本申请实施例中,如图4D中的(a)所示,神经网络模型对应的计算图中包含多个连续的reshape算子,在这种情况下,计算机设备对这N个连续的reshape算子进行合并,可以得到如图4D中的(b)所示的优化结构。
为了便于理解,下面结合具体的实例进行阐述,以张量A=[A1,A2,A3,...,An]为例,当对张量A执行reshape1算子之后,得到张量B,其中,张量B=[B1,B2,B3,...,Bn]。与此同时,当对张量B执行reshape2算子之后,得到张量C,其中,张量C=[C1,C2,C3,...,Cn]。可以理解是,将reshape1算子与reshape2算子合并得到的reshape3算子的输入是A张量,输出为C张量。例如,A=[1,32,1,1],经过reshape1算子之后,变为B=[1,4,4,2],再经过reshape2算子之后,变为C=[16,2]。采用本申请描述的技术方案,对reshape1算子以及reshape2算子进行合并,可以得到reshape3算子,张量A在经过reshape3算子之后,直接从张量A=[1,32,1,1]变为张量C=[16,2]。可以理解的是,由于优化得到的与胶水子图语义等价的逻辑关系可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
(2)transpose算子的等效规则。
具体实现中,胶水算子的逻辑关系可以包括transpose算子间的逻辑关系,或,transpose算子与第二类其他算子的逻辑关系;这里,第二类其他算子可以包括reshape算子、concat算子、split算子中的任意一种算子。
在一种可能的实现方式中,胶水算子的逻辑关系包括transpose算子间的逻辑关系,例如,多个连续的transpose算子;在另一种可能的实现方式中,胶水算子的逻辑关系包括transpose算子与第二类其他算子的逻辑关系,例如,transpose算子与reshape算子相邻;又例如,transpose算子与concat算子相邻;又例如,transpose算子与split算子相邻,等等。这里,算子与算子相邻用于表征一个算子的输出张量数据作为另一个算子的输入张量数据。
第一种情形:reshape算子的输出张量数据是transpose算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括reshape算子的输出张量数据是transpose算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“reshape算子和transpose算子”这一胶水子图语义等价的逻辑关系,可以包括:
当所述reshape算子在拆分阶段由中间状态的同一维度所拆分出的维度的相对位置在执行所述transpose算子的过程中不发生变化,将transpose算子的输出张量数据作为所述reshape算子的输入张量数据。
在本申请实施例中,维度是指神经网络模型中的计算图中的张量数据的维度。例如,以卷积神经网络为例,卷积神经网络模型中的计算图中的张量数据的维度一般可以包括4个维度,分别为表示当前计算所处理的数据的批量大小的N,表示特征图像数量的C,表示特征图像尺寸的H和W。
在本申请实施例中,如图4E中的(a)所示,神经网络模型对应的计算图中包含reshape算子和transpose算子,其中,reshape算子的输出张量数据是transpose算子的输入张量数据,当reshape算子在拆分阶段由中间状态的同一维度所拆分出的维度的相对位置在执行transpose算子的过程中不发生变化,在一种实现方式中,如图4E中的(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算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“concat算子和transpose”这一胶水子图语义等价的逻辑关系,可以包括:
将所述transpose算子的输出张量数据作为所述concat算子的输入张量数据。
在本申请实施例中,如图4F中的(a)所示,神经网络模型对应的计算图中包含transpose和concat算子,其中,concat算子的输出张量数据是transpose算子的输入张量数据,在这种情况下,如图4F中的(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算子的输入张量数据;所述通用处理器根据所述计算图中胶水算子的逻辑关系对所述计算图进行优化。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“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算子各自对应的全排队相同。
在本申请实施例中,如图4G中的(a)所示,神经网络模型对应的计算图中包含多个transpose算子和split算子,其中,split算子的输出张量数据是多个transpose算子的输入张量数据,在多个transpose算子各自对应的perm参数相同时,如图4G中的(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算子。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“多个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参数下调换张量数据的顺序。
在本申请实施例中,如图4H中的(a)所示,神经网络模型对应的计算图中包含多个连续的transpose算子,在这种情况下,计算机设备对这M个连续的transpose算子进行合并,可以得到如图4H中的(b)所示的优化结构,也即与“多个连续的transpose算子”这一胶水子图语义等价的逻辑关系。
为了便于理解,下面结合具体的实例进行阐述。例如,张量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算子,可以减少冗余计算,以达到减少计算机设备的资源消耗的目的。
(3)concat算子的等效规则。
具体实现中,胶水算子的逻辑关系可以包括concat算子间的逻辑关系,或,所述concat算子与第三类其他算子的逻辑关系。这里,第三类其他算子包括reshape算子、transpose算子、split算子中的任意一种算子。
在其中一种可能的实现方式中,胶水算子的逻辑关系包括concat算子间的逻辑关系,例如,多个连续的concat算子;在另一种可能的实现方式中,胶水算子的逻辑关系包括concat算子与其他算子的逻辑关系,例如,concat算子与reshape算子相邻;又例如,concat算子与transpose算子相邻;又例如,concat算子与split算子相邻,等等。这里,算子与算子相邻用于表征一个算子的输出张量数据作为另一个算子的输入张量数据。
第一种情形:多个reshape算子的输出张量数据是concat算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括多个reshape算子的输出张量数据是concat算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“多个reshape算子和concat算子”这一胶水子图语义等价的逻辑关系,可以包括:
当所述多个reshape算子各自对应的输入张量至多只有一个维度的长度不同,将所述concat算子的输出张量数据作为所述所述多个reshape算子的输入张量数据。
在本申请实施例中,如图4I中的(a)所示,神经网络模型对应的计算图中包含concat算子和多个reshape算子,其中,多个reshape算子的输出张量数据是concat算子的输入张量数据,当多个reshape算子各自对应的输入张量至多只有一个维度的长度不同,例如,在W维度上的长度不同,在这种情况下,如图4I中的(b)所示,将concat算子的输出张量数据作为多个reshape算子的输入张量数据,从而可以得到与胶水子图语义等价的逻辑关系。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,4,5],张量B=[3,6,5],张量A和张量B在经过各自对应的reshape算子之后,可以得到张量C=[6,2,5]和张量D=[9,2,5],与此同时,当张量C和张量D在经过concat算子之后,可以得到张量E=[15,2,5]。分析张量A和张量B(张量A和张量B为reshape算子的输入张量)可以知道的是,张量A和张量B中只有一个维度的长度不同(张量A中的维度6和张量B中的维度4),那么,在这种情况下,将concat算子的输出张量数据作为多个reshape算子的输入张量数据,从而其实现过程可以描述为:张量A=A=[3,4,5],张量B=[3,6,5],张量A和张量B在经过concat算子之后,可以得到张量C’=[3,10,5],与此同时,当张量C’在经过reshape算子之后,可以得到张量D’=[15,2,5]。可以理解的是,由于优化得到的与胶水子图语义等价的逻辑关系可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
需要说明的是,在本申请实施例中,当多个reshape算子为连续的多个reshape算子时,可以对这多个连续的reshape算子进行合并,得到一个reshape算子。例如,reshape1算子与reshape2相邻,张量A=[A1,A2,A3,...,An],当对张量A经过reshape1算子之后,可以得到张量B,其中,张量B=[B1,B2,B3,...,Bn]。与此同时,当张量B经过reshape2算子之后,得到张量C,其中,张量C=[C1,C2,C3,...,Cn]。可以理解是,将reshape1算子与reshape2算子合并得到的reshape3算子的输入是A张量,输出为C张量。例如,A=[1,32,1,1],经过reshape1算子之后,变为B=[1,4,4,2],再经过reshape2算子之后,变为C=[16,2]。采用本申请描述的技术方案,对reshape1算子以及reshape2算子进行合并,可以得到reshape3算子,张量A在经过reshape3算子之后,直接从张量A=[1,32,1,1]变为张量C=[16,2]。可以理解的是,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行神经网络模型时,这里,由于神经网络模型为优化后的模型,可以减少计算机设备的资源消耗的目的。
第二种情形:多个transpose算子的输出张量数据是concat算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括多个transpose算子的输出张量数据是concat算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“多个transpose算子和concat算子”这一胶水子图语义等价的逻辑关系,可以包括:
在所述多个transpose算子各自对应的perm参数相同的情况下,将所述concat算子的输出张量数据作为所述多个transpose算子的输入张量数据。
如前所述,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算子各自对应的全排队相同。
在本申请实施例中,如图4J中的(a)所示,神经网络模型对应的计算图中包含concat算子与多个transpose算子,其中,多个transpose算子的输出张量数据是concat算子的输入张量数据,当这多个transpose算子各自对应的perm参数相同的情况下,如图4J中的(b)所示,将concat算子的输出张量数据作为多个transpose算子的输入张量数据,从而可以得到与胶水子图语义等价的逻辑关系。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,4,5],张量B=[3,6,5],张量A和张量B在经过各自对应的transpose算子之后,具体地,多个transpose各自对应的perm参数为[1,0,2],可以得到张量C=[4,3,5]和张量D=[6,3,5],与此同时,当张量C和张量D在经过concat算子之后,可以得到张量E=[10,3,5]。那么,在这种情况下,将concat算子的输出张量数据作为多个transpose算子的输入张量数据,从而其实现过程可以描述为:张量A=[3,4,5],张量B=[3,6,5],张量A和张量B在经过concat算子之后,可以得到张量C’=[3,10,5],与此同时,当张量C’在经过transpose算子之后,可以得到张量D’=[10,3,5]。可以理解的是,由于优化得到的与胶水子图语义等价的逻辑关系,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
需要说明的是,在本申请实施例中,当多个transpose算子为连续的多个transpose算子时,可以对这多个连续的transpose算子进行合并,得到一个transpose算子。具体地,连续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参数下调换张量的顺序。
为了便于理解,下面结合具体的实例进行阐述。例如,transpose_1423算子和transpose_1243算子相邻,张量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、专用处理器人工智能处理器)在运行神经网络模型时,这里,由于神经网络模型为优化后的模型,可以减少计算机设备的资源消耗的目的。
第三种情形:split算子的输出张量数据是concat算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括split算子的输出张量数据是concat算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“split算子和concat算子”这一胶水子图语义等价的逻辑关系,可以包括:
在所述concat算子与所述split算子各自操作的维度相同的情况下,将所述concat算子与所述split算子合并消除。
在本申请实施例中,如图4K中的(a)所示,神经网络模型对应的计算图中包含concat算子与split算子,其中,split算子的输出张量数据是concat算子的输入张量数据,在满足concat算子与split算子各自操作的维度相同的情况下,例如,concat算子与split算子在执行过程中在C维度相同,在这种情况下,如图4K中的(b)所示,将concat算子与split算子合并消除。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,10,5],张量A在经过split算子之后,可以得到张量B=[3,4,5]和张量C=[3,6,5],与此同时,当张量B和张量C在经过concat算子之后,可以得到张量D=[3,10,5]。由于split算子和split算子各自操作的维度相同,即满足split算子的输出张量数据都是concat算子的输入张量数据,那么,在这种情况下,将concat算子与split算子合并消除。可以理解的是,由于上述优化操作可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第四种情形:N个连续的concat算子。
具体实现中,所述胶水算子的逻辑关系可以包括N个连续的concat算子;其中,N为大于等于2的正整数。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“多个concat算子”这一胶水子图语义等价的逻辑关系,可以包括:
在所述N个连续的concat算子各自操作的维度为同一个维度的情况下,将所述N个连续的concat算子进行合并。
在本申请实施例中,如图4L中的(a)所示,神经网络模型对应的计算图中包含多个concat算子,这多个concat算子所操作的是同一个维度,例如,N维度,在这种情况下,计算机设备可以对这多个concat算子进行合并,得到一个concat算子,具体地,请参见图4L中的(b)所示的优化结构,也即优化得到的与胶水子图语义等价的逻辑关系。
(4)split算子的等效规则。
具体实现中,胶水算子的逻辑关系可以包括split算子间的逻辑关系,或,所述split算子与第四类其他算子的逻辑关系;这里,第四类其他算子包括reshape算子、transpose算子、concat算子中的任意一种算子。
在其中一种可能的实现方式中,胶水算子的逻辑关系包括split算子间的逻辑关系,例如,多个连续的split算子;在另一种可能的实现方式中,胶水算子的逻辑关系包括split算子与其他算子的逻辑关系,例如,split算子与reshape算子相邻;又例如,split算子与transpose算子相邻;又例如,split算子与concat算子相邻,等等。这里,算子与算子相邻用于表征一个算子的输出张量数据作为另一个算子的输入张量数据。
第一种情形:reshape算子的输出张量数据是split算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括reshape算子的输出张量数据是split算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“reshape算子和split算子”这一胶水子图语义等价的逻辑关系,可以包括:
在由输出到输入逆向推导所述reshape算子的过程中,作为所述输出的一部分的所述split算子所操作的维度k0+k1+...+km在所述逆向推导过程中被拆分成p0×p1×...×(k0/∏ipi+k1/∏ipi+...+km/∏ipi)×...×pn-1×pn,将所述split算子的输出张量数据作为所述reshape算子的输入张量数据。
在本申请实施例中,如图4M中的(a)所示,神经网络模型对应的计算图中包含split算子与reshape算子,其中,reshape算子的输出张量数据是split算子的输入张量数据,在由输出到输入逆向推导reshape算子的过程中,作为输出的一部分的split算子所操作的维度k0+k1+...+km在逆向推导过程中被拆分成形如p0×p1×...×(k0/∏ipi+k1/∏ipi+...+km/∏ipi)×...×pn-1×pn的形式,如图4M中的(b)所示,将split算子的输出张量数据作为reshape算子的输入张量数据,从而可以与胶水子图语义等价的逻辑关系。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,10,5],张量A在经过reshape算子之后,可以得到张量B=[15,2,5],与此同时,当张量B经过split算子之后,可以得到张量C=[6,2,5]和张量D=[9,2,5],也即将维度15拆分成维度6和维度9。当逆向推导reshape算子,维度15在reshape算子的过程中被拆分成了{3,5},而维度15可以表示为3*(6/3+9/3),那么,在这种情况下,将split算子的输出张量数据作为reshape算子的输入张量数据,从而其实现过程可以描述为:张量A=[3,10,5],张量A在经过split算子之后,可以得到张量B’=[3,4,5]和张量C’=[3,6,5],与此同时,当张量B’和张量C’在经过各自对应的reshape算子之后,可以得到张量D’=[6,2,5]和张量E=[9,2,5]。可以理解的是,由于上述优化操作可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第二种情形:transpose算子的输出张量数据是split算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括transpose算子的输出张量数据是split算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“transpose算子和split算子”这一胶水子图语义等价的逻辑关系,可以包括:
将所述split算子的输出张量数据作为所述transpose算子的输入张量数据。
在本申请实施例中,如图4N中的(a)所示,神经网络模型对应的计算图中包含split算子和transpose算子,其中,transpose算子的输出张量数据是split算子的输入张量数据,在这种情况下,如图如图4N中的(b)所示,将split算子的输出张量数据作为transpose算子的输入张量数据,从而可以得到与胶水子图语义等价的逻辑关系。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,10,5],张量A在经过transpose算子之后,可以得到张量B=[10,3,5],与此同时,当张量B在经过split算子之后,可以得到张量C=[4,3,5]和张量D=[6,3,5],那么,在这种情况下,将split算子的输出张量数据作为transpose算子的输入张量数据,从而其实现过程可以描述为:张量A=[3,10,5],张量A在经过split算子之后,可以得到张量B’=[3,4,5]和张量C’=[3,6,5],与此同时,当张量B’和张量C’在经过各自对应的transpose算子之后,可以得到张量D'=[4,3,5]和张量E=[6,3,5]。可以理解的是,由于优化得到的与胶水子图语义等价的逻辑关系可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第三种情形:concat算子的输出张量数据是split算子的输入张量数据。
具体实现中,所述胶水算子的逻辑关系包括concat算子的输出张量数据是split算子的输入张量数据。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“concat算子和split算子”这一胶水子图语义等价的逻辑关系,可以包括:
在所述concat算子与所述split算子各自操作的维度相同的情况下,将所述concat算子与所述split算子合并消除。
在本申请实施例中,如图4O中的(a)所示,神经网络模型对应的计算图中包含split算子和concat算子,其中,concat算子的输出张量数据是split算子的输入张量数据,在满足concat算子与split算子在语义上互为逆操作的情况下,例如,concat算子与split算子在执行过程中在C维度相同,在这种情况下,如图4O中的(b)所示,将concat算子与split算子合并消除。
为了便于理解,下面结合具体的实例进行阐述,张量A=[3,4,5]和张量B=[3,6,5],张量A和张量B在经过concat算子之后,可以得到张量C=[3,10,5],与此同时,当张量C在经过split算子之后,可以得到张量D=[3,4,5]和E=[3,6,5]。由于concat算子与split算子各自操作的维度相同,并且在语义上互为逆操作,那么,在这种情况下,将concat算子与split算子合并消除。可以理解的是,由于上述优化操作可以提高神经网络模型的整体性能,那么,当处理器(例如,通用处理器CPU、专用处理器人工智能处理器)在运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
第四种情形:N个连续的split算子。
具体实现中,所述胶水算子的逻辑关系包括N个连续的split算子;其中,N为大于等于2的正整数。在这种情况下,计算机设备根据胶水算子的逻辑关系确定与“多个split算子”这一胶水子图语义等价的逻辑关系,可以包括:
在所述N个连续的split算子各自操作的维度为同一个维度的情况下,将所述N个连续的split算子进行合并。
在本申请实施例中,如图4P中的(a)所示,神经网络模型对应的计算图中包含多个split算子,这多个split算子所操作的是同一个维度,例如,N维度,在这种情况下,计算机设备可以对这多个split算子进行合并,得到一个split算子,具体地,请参见图4P中的(b)所示的优化结构,也即与胶水子图语义等价的逻辑关系。
在本申请实施例中,基于本申请所描述的等效规则,我们可以对胶水子图进行扩充,从而搭建出多条与胶水子图语义等价的新的算子路径。例如,如图5A所示,左侧是胶水子图的原始结构,其中,形如张量数据(A0,A1,A2,A3)首先经过reshape算子变为张量数据(A0,A1*A2,A3),再经过transpose算子变为张量数据(A0,A3,A1*A2),最后通过split算子被拆分成两个子张量数据。右侧为基于预设的等效规则进行扩充后的胶水子图,其中,加粗部分代表的是胶水子图中原有的拓扑关系。从图5A可以知道的是,在胶水子图原有的拓扑关系之外,还存在多种不同的方式可以由原始子图的输入张量数据(A0,A1,A2,A3)得到原始子图的输出张量数据(A0,A30,A1*A2)和(A0,A31,A1*A2)。
在本申请实施例中,考虑到在胶水子图中加入与胶水子图的语义等价的逻辑关系之后,图中加入了新的算子或者图中原有的算子之间的连接关系发生了变化,在这种情况下,对新算子和被改变连接关系的算子的后继算子采用如上描述的方法来确定相应的等价逻辑关系,并将等价逻辑关系加入胶水子图中,以得到扩充后的胶水子图。
具体实现中,所述将所述至少两个胶水算子对应的等价逻辑关系加入所述胶水子图中之后,还包括:
在满足加入的等价逻辑关系改变所述胶水子图中包含的胶水算子之间原先具有的有向边的情况下,根据改变后的胶水子图中胶水算子之间具有的有向边和所述等效规则确定所述改变后的胶水子图中位置相邻的至少两个胶水算子对应的等价逻辑关系,直至所述胶水子图无法通过所述等效规则进行扩充。
在本申请实施例中,在满足等效规则的情况下,将与胶水子图语义等价的逻辑关系加入胶水子图的过程中:
A1、如果当前算子和前一个算子互为拟操作,意味着当前算子和前一个算子构成的算子序列的起点张量数据和终点张量数据是同一个张量,在这种情况下,合并这两个张量,得到一个张量。
A2、如果将要加入胶水子图中的张量或算子已经存在于胶水子图中,在这种情况下,直接使用胶水子图中的该张量或算子。
A3、扩充得到的胶水子图中不存在重复的算子序列。
在本申请实施例中,经过扩充后的胶水子图满足约束:对胶水子图中任意一组满足等效规则的算子的拓扑结构,其经过变换后的算子拓扑结构同样存在于扩充后的胶水子图中,即扩充后的胶水子图是一个基于等效规则的闭包。这一约束使得扩充后的胶水子图不可能再次通过等效规则进行进一步的扩充,从而可以保证扩充后的胶水子图中已经包含了尽可能多的等价逻辑关系的拓扑结构,这有利于接下来从扩充后的胶水子图中获取对人工智能处理器性能最优的目标子图。
在本申请实施例中,通过这一实现方式,可以保证胶水子图中的每个胶水算子,无论是原始胶水子图中已有的,或者是之后添加的,都会确定位置相邻的至少两个胶水算子是否可以根据等效规则进行优化。其次,在确定了位置相邻的至少两个胶水算子的等价逻辑关系之后,将其加入胶水子图中。最后,会再次确定加入胶水子图的新算子或者改变已有算子的连接关系的算子的后一个算子是否可以根据等效规则进行优化,从而可以保证不会遗漏那些由于胶水子图的结构发生变化而引入的新的逻辑关系。
步骤A2、对所述扩充后的胶水子图进行转换,得到与胶水算子关联的张量数据的状态集合图。
在本申请实施例中,与胶水算子关联的张量数据的状态集合图中任意一条从起始状态到终点状态的路径用于表征重构后的子图,重构后的子图即为胶水子图的优化方式。
在本申请实施例中,将扩充后的胶水子图进行转换的原因在于:扩充后的胶水子图用于描述构建算子序列的等价逻辑关系的实现过程,并不能基于扩充后的胶水子图确定目标子图。
具体实现中,所述对所述扩充后的胶水子图进行转换,得到与胶水算子关联的张量数据的状态集合图,包括:
确定所述扩充后的胶水子图中的胶水算子的类型以及所述胶水算子之间的逻辑关系;
基于所述扩充后的胶水子图中的胶水算子的类型以及所述胶水算子之间的逻辑关系,根据所述扩充后的胶水子图中的胶水算子对应的输入张量数据确定对应的输出张量数据;
根据所述扩充后的胶水子图中的胶水算子的输入张量数据和输出张量数据确定与胶水算子关联的张量数据的状态集合图。
在本申请实施例中,扩充后的胶水子图中的所有张量都有唯一的编号{0,1,2,......,n},图中的所有输入张量中的数据被作为一个整体D,D的数据被划分并组合成不同的张量,每种张量的组合方式都可以被看成是D的一种状态。在最开始阶段,D的状态可以表示为所有输入张量的编号的集合{s0,s1,...,sm},其最终目标是使D变成状态{e0,e1,...,en},其中,ei是第i个的输出张量的编号。由输入开始,每个与输入张量关联的胶水算子将当前D所对应的所有张量中的至少一个张量变成另外的一个或多个张量,也就是代表D的状态的编号集合发生了变化,例如,由一个编号状态集合变成了另一个编号状态集合。由此,可以得到一个由D的各种状态和胶水算子所表示的状态之前的有向边构成的图结构,也即状态集合图。
为了便于理解,下面结合具体的实例进行阐述。参见图5B,为本申请实施例提供的一种胶水子图的结构示意图,如图5B所示,该胶水子图中包含两个reshape算子和一个concat算子。具体地,张量数据(2,3,5)在经过reshape算子1之后,可以得到张量数据(2,15,1);张量数据(2,4,5)在经过reshape算子2之后,可以得到张量数据(2,20,1)。此外,张量数据(2,15,1)和张量数据(2,20,1)在经过concat算子之后,可以得到张量数据(2,35,1)。从上述实现过程可以知道的是,由于多个reshape算子各自对应的输入张量至多只有一个维度的长度不同,在这种情况下,可以将concat算子的输出张量数据作为多个reshape算子的输入张量数据。具体地,确定好的与胶水子图语义等价的逻辑关系可以如图5C所示。那么,在这种情况下,张量数据(2,3,5)和张量数据(2,4,5)在经过concat算子之后,可以得到张量数据(2,7,5);张量数据(2,7,5)在经过reshape算子之后,可以得到张量数据(2,35,1)。此外,需要说明的是,该胶水子图中并无其他可以优化的逻辑关系。
基于上述确定好的等价逻辑关系之后,计算机设备将上述等价逻辑关系加入胶水子图中,得到扩充后的胶水子图,具体地,请参见图5D。在得到扩充后的胶水子图之后,计算机设备将扩充后的胶水子图进行转换,以得到状态集合图。在最开始阶段,D的状态可以表示为所有输入张量的编号的集合,具体地,可以如图5E所示。其中,张量数据(2,3,5)用编号①表示,张量数据(2,4,5)用编号②表示,张量数据(2,15,1)用编号③表示,张量数据(2,20,1)用编号④表示,张量数据(2,7,5)用编号⑤表示,张量数据(2,35,1)用编号⑥表示。接下来具体阐述将扩充后的胶水子图转换状态集合图的实现过程:
步骤1:由输入开始,张量数据(2,3,5)①和张量数据(2,4,5)②构成了输入张量的编号状态集合1,具体地,编号状态集合1可以表示为{①,②},其对应的转换示意图可以如图5F所示;
步骤2:在步骤1的基础上,与输入张量数据(2,3,1)关联的reshape算子将当前D所对应的张量进行转换,可以得到编号状态集合2,具体地,编号状态集合2可以表示为{③,②},其对应的转换示意图可以如图5G所示;
步骤3:在步骤2的基础上,与输入张量数据(2,4,5)关联的reshape算子将当前D所对应的张量进行转换,可以得到编号状态集合3,具体地,编号状态集合3可以表示为{①,④},其对应的转换示意图可以如图5H所示;
步骤4:在步骤3的基础上,与输入张量数据(2,4,5)关联的reshape算子将当前D所对应的张量进行转换,可以得到编号状态集合4,具体地,编号状态集合4可以表示为{③,④},其对应的转换示意图可以如图5I所示;
步骤5:在步骤4的基础上,与输入张量数据(2,3,5)关联的reshape算子将当前D所对应的张量进行转换,编号状态{①,④}可以转换为编号状态{③,④},其对应的转换示意图可以如图5J所示;
步骤6:在步骤5的基础上,与输入张量数据(2,15,1)、输入张量数据(2,20,1)关联的concat算子将当前D所对应的张量进行转换,可以得到编号状态集合5,具体地,编号状态集合5可以表示为{⑥},其对应的转换示意图可以如图5K所示;
步骤7:在步骤6的基础上,与输入张量数据(2,3,5)、输入张量数据(2,4,5)关联的concat算子将当前D所对应的张量进行转换,可以得到编号状态集合6,具体地,编号状态集合6可以表示为{⑤},其对应的转换示意图可以如图5L所示;
步骤8:在步骤7的基础上,与输入张量数据(2,7,5)关联的reshape算子将当D所对应的张量进行转换,编号状态{⑤}可以转换为编号状态{⑥},其对应的转换示意图可以如图5M所示。
在本申请实施例中,图5M即为计算机设备将扩充后的胶水子图进行转换后得到状态集合图。那么,在这种情况下,可以在图5M中确定目标子图。
步骤A3、遍历所述状态集合图,获得所述重构结果子图集合。
在本申请实施例中,遍历所述状态集合图,确定相邻算子之间的状态路径以及状态路径的权重。
在本申请实施例中,状态路径的权重用于表征算子在执行过程中的性能优劣,例如,权重越小,表示算子在执行过程中的性能越优;又例如,权重越大,表示算子在执行过程中的性能越优,本申请实施例不作具体限定。在确定算子的权重时,往往需要结合算子的输入数据的形状、规模进行考虑。为了便于阐述,在本申请实施例中,以权重越小,性能越优作为一种示例进行说明。
在本申请实施例中,以图5M为例,其中,张量数据(2,3,5)和张量数据(2,4,5)为起始状态,张量数据(2,35,1)为终止状态。由图5M可以知道的是,图5M中包括多条从起始状态到终点状态的路径,这里,任意一条由起点状态到终点状态的路径都对应着一种重构后的语义等效的胶水子图的结构,我们的目标在于在多条状态路径中确定最短路径。
具体地,可以通过遍历图5M所示状态集合图,确定相邻算子之间的状态路径以及状态路径的权重。例如,图5M所示的状态集合中包含3条路径,分别为路径1、路径2和路径3。其中,计算机设备确定路径1上的算子的权重和为10,路径2上的算子的权重和为15,路径3上的算子的权重和为17。这里,从起始状态到终止状态之间的一条路径用于表征一个重构结果子图。
从而,通用处理器可以根据所述状态路径的权重确定目标子图,并根据所述目标子图对所述神经网络模型进行优化,得到优化后的神经网络模型。
在本申请实施例中,所述从所述重构结果子图集合中确定目标子图,包括:
根据所述重构结果子图集合中权重和最小的重构结果子图确定为所述目标子图;或
根据所述重构结果子图集合中权重和小于预设阈值的重构结果子图确定为所述目标子图。
在本申请实施例中,当计算机设备确定每条路径上的权重和之后,计算机设备可以在多条路径中选择权重和最小的路径作为目标子图。例如,计算机设备确定路径1上的算子的权重和为10,路径2上的算子的权重和为15,路径3上的算子的权重和为17,在这种情况下,计算机设备确定路径1为目标子图,也即,计算机设备确定路径1为重构后的性能最优的子图。
需要说明的是,上述获取目标子图的方式类似于viterbi算法,此次仅仅是例举的部分情况,而不是穷举,本领域技术人员在理解本申请技术方案的精髓的情况下,可能会在本申请技术方案的基础上产生其它的变形或者变换,比如:根据经验设置一阈值,状态路径的权重小于设定的阈值,就可以将其作为目标子图,从而可以根据目标子图对神经网络模型进行优化。但只要其实现的功能以及达到的技术效果与本申请类似,那么均应当属于本申请的保护范围。
步骤S306、将所述目标子图替换所述计算图中对应的胶水子图,获取优化后的计算图。
如前所述,例如,计算机设备确定路径1上的算子的权重和为10,路径2上的算子的权重和为15,路径3上的算子的权重和为17,在这种情况下,计算机设备确定路径1为目标子图,也即,计算机设备确定路径1为重构后的性能最优的子图,此时,计算机设备将神经网络模型中原始胶水子图替换为路径1构成的子图,从而可以实现对神经网络模型的优化,以提高神经网络模型的整体性能。
步骤S308、根据所述优化后的计算图获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
在本申请实施例中,通用处理器可以根据优化后的计算图,调用已设置好的人工智能学习库的编译接口来编译,获得对应的二进制指令。该二进制指令经运行时库处理生成机器学习处理任务。在实际应用中,通用处理器可以将机器学习处理任务放入任务队列,最终由驱动器调度任务队列中的机器学习处理任务让人工智能处理器执行,得到运行结果。
本申请实施例中,机器学习处理任务是指,神经网络模型通过获取学习能力,以完成某项任务。这里,机器学习处理任务可以包括图像识别,边缘检测,语义分析,等等。具体地,为了提高神经网络模型的实用性,不同的神经网络模型对应不同的机器学习处理任务。例如,深度学习神经网络模型对应的机器学习处理任务可以为图像分类,文本分类等;卷积神经网络模型对应的机器学习处理任务可以为图像识别,视频分类等;长短时记忆神经网络模型(Long Short Term Memory Network,LSTM)对应的机器学习处理任务可以为语音识别、图片描述、自然语言处理等。
在本申请实施例中,机器学习处理任务的请求可以为用户针对神经网络模型输入的执行指令。当计算机设备在接收到机器学习处理任务的请求时,根据机器学习处理任务的类型获取对应的神经网络模型,并在人工智能处理器上运行神经网络模型,继而可以得到针对机器学习处理任务的运行结果。需要说明的是,处理器(例如,通用处理器,人工智能处理器)运行的神经网络模型为经过优化后的神经网络模型。
在本申请实施例中,机器学习处理任务的运行结果是指,计算机设备执行机器学习处理任务时的结果,可以包括但不限于:执行机器学习处理任务时,神经网络模型的精度;执行机器学习处理任务时,神经网络模型的运行时间等等。进一步可选的,计算机设备可以输出该运行结果,例如,计算机设备通过显示屏显示该运行结果。可以理解的是,由于对神经网络模型对应的计算图进行了优化,将重构后性能更优的子图替换原先的胶水子图,可以提高神经网络模型的整体性能,使得人工智能处理器在调用优化后的神经网络模型执行机器学习处理任务时,可以减少冗余计算,进而可以减少计算机设备的资源消耗。
实施本申请实施例,计算机设备对包含多个胶水算子的胶水子图,通过重构子图的方式获取胶水子图对应的优化结构,并根据重构后的子图对神经网络模型进行优化,这一实现方式可以提高神经网络模型的整体性能。此外,当在计算机设备运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图3A的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3A中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关装置。
参见图6,图6是本申请实施例提供的一种神经网络优化装置的结构示意图,该装置60至少可以包括:
提取单元600,用于在神经网络模型对应的计算图中提取胶水子图;其中,所述胶水子图是包含胶水算子的子图;所述胶水算子用于对所述计算图的张量数据进行调整;
处理单元602,用于在确保所述胶水子图的输入张量数据、输出张量数据不变的情况下,对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合;其中,所述重构结果子图集合中的任意一个重构结果子图的输入张量数据和输出张量数据分别与所述胶水子图的输入张量数据和输出张量数据相同;
确定单元604,用于用于从所述重构结果子图集合中确定目标子图;
优化单元606,用于将所述目标子图替换所述计算图中对应的胶水子图,获取优化后的计算图;
执行单元608,用于根据所述优化后的计算图获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
在其中一种可能的实现方式中,所述处理单元602包括扩充单元、转换单元和遍历单元单元;其中,
所述扩充单元,用于根据胶水算子的逻辑关系对所述胶水子图进行扩充,获得扩充后的胶水子图;
所述转换单元,用于对所述扩充后的胶水子图进行转换,得到与胶水算子关联的张量数据的状态集合图;
所述遍历单元,用于遍历所述状态集合图,获得所述重构结果子图集合。
在一种可能的实现方式中,所述扩充单元包括:第一扩充单元和第二扩充单元;其中,
第一扩充单元,用于根据等效规则对所述胶水子图中胶水算子之间的逻辑关系进行扩充,获得与所述胶水子图的语义等价的逻辑关系;
第二扩充单元,用于根据与所述胶水子图的语义等价的逻辑关系对所述胶水子图进行扩充,获得所述扩充后的胶水子图。
在一种可能的实现方式中,所述等效规则包括reshape算子的等效规则、transpose算子的等效规则、concat算子的等效规则、split算子的等效规则中的至少一种。
在一种可能的实现方式中,所述第一扩充单元具体用于:
对所述逻辑关系对应的算子序列进行变换,根据所述等效规则,确保获得所有与所述胶水子图的语义等价的逻辑关系。
在其中一种可能的实现方式中,所述转换单元具体用于:
确定所述扩充后的胶水子图中的胶水算子的类型以及所述胶水算子之间的逻辑关系;
基于所述扩充后的胶水子图中的胶水算子的类型以及所述胶水算子之间的逻辑关系,根据所述扩充后的胶水子图中的胶水算子对应的输入张量数据确定对应的输出张量数据;
根据所述扩充后的胶水子图中的胶水算子的输入张量数据和输出张量数据确定与胶水算子关联的张量数据的状态集合图。
在其中一种可能的实现方式中,所述确定单元具体用于:
根据所述重构结果子图集合中权重和最小的重构结果子图确定为所述目标子图;或
根据所述重构结果子图集合中权重和小于预设阈值的重构结果子图确定为所述目标子图。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
所述作为分离部件说明的单元或模块可以是物理上分开的,也可以不是物理上分开的。作为单元或模块说明的部件可以是物理单元,也可以不是物理单元,即可以位于一个装置中,或者也可以分布到多个装置上。本披露中实施例的方案可以根据实际的需要选择其中的部分或者全部单元来实现。
此外,这里需要指出的是,本申请实施例还提供了一种计算机存储介质,用于存储为上述图2所示的计算机设备所用的计算机软件指令,其包含用于执行上述方法实施例所涉及的程序。通过执行存储的程序,可以通过重构子图的方式获取胶水子图对应的优化结构,并根据重构后的子图对神经网络模型进行优化,这一实现方式可以提高神经网络模型的整体性能。此外,当在计算机设备运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
由上可见,本申请实施例提供的神经网络优化方法、装置、计算机设备和存储介质,该方法可以通过重构子图的方式获取胶水子图对应的优化结构,并根据重构后的子图对神经网络模型进行优化,这一实现方式可以提高神经网络模型的整体性能。此外,当在计算机设备运行优化后的神经网络模型时,可以减少计算机设备的资源消耗。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
进一步地,依据以下条款可更好地理解前述内容:
例如,条款A1,一种神经网络优化方法,包括:
在神经网络模型对应的计算图中提取胶水子图;其中,所述胶水子图是包含胶水算子的子图;所述胶水算子用于对所述计算图的张量数据进行调整;
在确保所述胶水子图的输入张量数据、输出张量数据不变的情况下,对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合;其中,所述重构结果子图集合中的任意一个重构结果子图的输入张量数据和输出张量数据分别与所述胶水子图的输入张量数据和输出张量数据相同;
从所述重构结果子图集合中确定目标子图;
将所述目标子图替换所述计算图中对应的胶水子图,获取优化后的计算图;
根据所述优化后的计算图获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
A2.根据A1所述的方法,还包括:
所述对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合,包括:
根据胶水算子的逻辑关系对所述胶水子图进行扩充,获得扩充后的胶水子图;
对所述扩充后的胶水子图进行转换,得到与胶水算子关联的张量数据的状态集合图;
遍历所述状态集合图,获得所述重构结果子图集合。
A3.根据A2所述的方法,所述根据胶水算子的逻辑关系对所述胶水子图进行扩充,获得扩充后的胶水子图,包括:
根据等效规则对所述胶水子图中胶水算子之间的逻辑关系进行扩充,获得与所述胶水子图的语义等价的逻辑关系;
根据与所述胶水子图的语义等价的逻辑关系对所述胶水子图进行扩充,获得所述扩充后的胶水子图。
A4.根据A3所述的方法,所述等效规则包括reshape算子的等效规则、transpose算子的等效规则、concat算子的等效规则、split算子的等效规则中的至少一种。
A5.根据A3所述的方法,所述根据等效规则对所述胶水子图中胶水算子之间的逻辑关系进行扩充,包括:
对所述逻辑关系对应的算子序列进行变换,根据所述等效规则,确保获得所有与所述胶水子图的语义等价的逻辑关系。
A6.根据A2所述的方法,所述对所述扩充后的胶水子图进行转换,得到与胶水算子关联的张量数据的状态集合图,包括:
确定所述扩充后的胶水子图中的胶水算子的类型以及所述胶水算子之间的逻辑关系;
基于所述扩充后的胶水子图中的胶水算子的类型以及所述胶水算子之间的逻辑关系,根据所述扩充后的胶水子图中的胶水算子对应的输入张量数据确定对应的输出张量数据;
根据所述扩充后的胶水子图中的胶水算子的输入张量数据和输出张量数据确定与胶水算子关联的张量数据的状态集合图。
A7.根据A2所述的方法,所述从所述重构结果子图集合中确定目标子图,包括:
根据所述重构结果子图集合中权重和最小的重构结果子图确定为所述目标子图;或
根据所述重构结果子图集合中权重和小于预设阈值的重构结果子图确定为所述目标子图。
B1.一种神经网络优化装置,包括:
提取单元,用于在神经网络模型对应的计算图中提取胶水子图;其中,所述胶水子图是包含胶水算子的子图;所述胶水算子用于对所述计算图的张量数据进行调整;
处理单元,用于在确保所述胶水子图的输入张量数据、输出张量数据不变的情况下,对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合;其中,所述重构结果子图集合中的任意一个重构结果子图的输入张量数据和输出张量数据分别与所述胶水子图的输入张量数据和输出张量数据相同;
确定单元,用于从所述重构结果子图集合中确定目标子图;
优化单元,用于将所述目标子图替换所述计算图中对应的胶水子图,获取优化后的计算图;
执行单元,用于根据所述优化后的计算图获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
C1.一种计算机设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求A1-A7任一项所述的方法。
D1.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求A1-A7任一项所述的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (10)

1.一种神经网络优化方法,其特征在于,包括:
在神经网络模型对应的计算图中提取胶水子图;其中,所述胶水子图是包含胶水算子的子图;所述胶水算子用于对所述计算图的张量数据进行调整;
在确保所述胶水子图的输入张量数据、输出张量数据不变的情况下,对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合;其中,所述重构结果子图集合中的任意一个重构结果子图的输入张量数据和输出张量数据分别与所述胶水子图的输入张量数据和输出张量数据相同;
从所述重构结果子图集合中确定目标子图;
将所述目标子图替换所述计算图中对应的胶水子图,获取优化后的计算图;
根据所述优化后的计算图获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
2.根据权利要求1所述的方法,其特征在于,所述对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合,包括:
根据胶水算子的逻辑关系对所述胶水子图进行扩充,获得扩充后的胶水子图;
对所述扩充后的胶水子图进行转换,得到与胶水算子关联的张量数据的状态集合图;
遍历所述状态集合图,获得所述重构结果子图集合。
3.根据权利要求2所述的方法,其特征在于,所述根据胶水算子的逻辑关系对所述胶水子图进行扩充,获得扩充后的胶水子图,包括:
根据等效规则对所述胶水子图中胶水算子之间的逻辑关系进行扩充,获得与所述胶水子图的语义等价的逻辑关系;
根据与所述胶水子图的语义等价的逻辑关系对所述胶水子图进行扩充,获得所述扩充后的胶水子图。
4.根据权利要求3所述的方法,其特征在于,所述等效规则包括reshape算子的等效规则、transpose算子的等效规则、concat算子的等效规则、split算子的等效规则中的至少一种。
5.根据权利要求3所述的方法,其特征在于,所述根据等效规则对所述胶水子图中胶水算子之间的逻辑关系进行扩充,包括:
对所述逻辑关系对应的算子序列进行变换,根据所述等效规则,确保获得所有与所述胶水子图的语义等价的逻辑关系。
6.根据权利要求2所述的方法,其特征在于,所述对所述扩充后的胶水子图进行转换,得到与胶水算子关联的张量数据的状态集合图,包括:
确定所述扩充后的胶水子图中的胶水算子的类型以及所述胶水算子之间的逻辑关系;
基于所述扩充后的胶水子图中的胶水算子的类型以及所述胶水算子之间的逻辑关系,根据所述扩充后的胶水子图中的胶水算子对应的输入张量数据确定对应的输出张量数据;
根据所述扩充后的胶水子图中的胶水算子的输入张量数据和输出张量数据确定与胶水算子关联的张量数据的状态集合图。
7.根据权利要求2所述的方法,其特征在于,所述从所述重构结果子图集合中确定目标子图,包括:
根据所述重构结果子图集合中权重和最小的重构结果子图确定为所述目标子图;或
根据所述重构结果子图集合中权重和小于预设阈值的重构结果子图确定为所述目标子图。
8.一种神经网络优化装置,其特征在于,包括:
提取单元,用于在神经网络模型对应的计算图中提取胶水子图;其中,所述胶水子图是包含胶水算子的子图;所述胶水算子用于对所述计算图的张量数据进行调整;
处理单元,用于在确保所述胶水子图的输入张量数据、输出张量数据不变的情况下,对所述计算图中的所述胶水子图进行处理,获得重构结果子图集合;其中,所述重构结果子图集合中的任意一个重构结果子图的输入张量数据和输出张量数据分别与所述胶水子图的输入张量数据和输出张量数据相同;
确定单元,用于从所述重构结果子图集合中确定目标子图;
优化单元,用于将所述目标子图替换所述计算图中对应的胶水子图,获取优化后的计算图;
执行单元,用于根据所述优化后的计算图获取对应的二进制指令,以分配至对应人工智能处理器上执行任务。
9.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的方法。
CN201910910118.0A 2019-09-24 2019-09-24 神经网络优化方法、装置、计算机设备及存储介质 Active CN110659728B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910910118.0A CN110659728B (zh) 2019-09-24 2019-09-24 神经网络优化方法、装置、计算机设备及存储介质
US17/622,702 US20220383082A1 (en) 2019-09-24 2020-09-22 Neural network processing method and apparatus, computer device and storage medium
PCT/CN2020/116933 WO2021057746A1 (zh) 2019-09-24 2020-09-22 神经网络处理方法、装置、计算机设备及存储介质
EP20869294.7A EP4036810A4 (en) 2019-09-24 2020-09-22 NEURAL NETWORK PROCESSING METHOD AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIUM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910910118.0A CN110659728B (zh) 2019-09-24 2019-09-24 神经网络优化方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN110659728A true CN110659728A (zh) 2020-01-07
CN110659728B CN110659728B (zh) 2024-03-05

Family

ID=69039147

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910910118.0A Active CN110659728B (zh) 2019-09-24 2019-09-24 神经网络优化方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN110659728B (zh)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111580827A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111580826A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111580828A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111708641A (zh) * 2020-07-14 2020-09-25 腾讯科技(深圳)有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN112070213A (zh) * 2020-08-28 2020-12-11 Oppo广东移动通信有限公司 神经网络模型的优化方法、装置、设备及存储介质
CN112200297A (zh) * 2020-09-04 2021-01-08 厦门星宸科技有限公司 神经网络优化方法、装置及处理器
CN112633502A (zh) * 2020-12-29 2021-04-09 北京百度网讯科技有限公司 一种深度学习模型的跨平台执行方法、装置及电子设备
CN112748953A (zh) * 2020-07-02 2021-05-04 腾讯科技(深圳)有限公司 基于神经网络模型的数据处理方法、装置及电子设备
CN113011585A (zh) * 2021-03-19 2021-06-22 上海西井信息科技有限公司 消除拼接算子的编译优化方法、系统、设备及存储介质
CN113298263A (zh) * 2020-05-13 2021-08-24 阿里巴巴集团控股有限公司 计算图处理、模型运行方法及装置、电子设备、服务器及边缘终端
CN113297860A (zh) * 2021-06-24 2021-08-24 上海携旅信息技术有限公司 机器翻译模型的优化方法、系统、电子设备和存储介质
CN113360747A (zh) * 2020-03-04 2021-09-07 阿里巴巴集团控股有限公司 基于神经网络模型的数据处理方法及装置
CN113449858A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种神经网络模型的处理方法以及相关设备
CN113469351A (zh) * 2020-03-30 2021-10-01 嘉楠明芯(北京)科技有限公司 一种数据处理方法、装置及存储介质
CN113901315A (zh) * 2021-10-08 2022-01-07 北京字节跳动网络技术有限公司 一种数据服务方法、装置及相关产品
WO2022041015A1 (zh) * 2020-08-26 2022-03-03 华为技术有限公司 神经网络模型优化方法及装置
WO2022127603A1 (zh) * 2020-12-14 2022-06-23 华为技术有限公司 一种模型处理方法及相关装置
CN116362316A (zh) * 2023-05-29 2023-06-30 成都阿加犀智能科技有限公司 一种模型转换方法、装置、存储介质及电子设备
WO2023125628A1 (zh) * 2021-12-31 2023-07-06 华为技术有限公司 神经网络模型优化方法、装置及计算设备
CN116820524A (zh) * 2023-08-22 2023-09-29 腾讯科技(深圳)有限公司 模型更新方法、装置、计算机设备及存储介质
CN117667424A (zh) * 2023-12-21 2024-03-08 摩尔线程智能科技(北京)有限责任公司 内存管理方法、装置和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109086886A (zh) * 2018-08-02 2018-12-25 工极(北京)智能科技有限公司 一种基于极限学习机的卷积神经网络学习算法
CN208314755U (zh) * 2018-04-27 2019-01-01 李喜 一种人工智能开发平台和系统
DE102018221413A1 (de) * 2017-12-14 2019-06-19 Robert Bosch Gmbh Effektive baustein-ausgestaltung für tiefe konvolutionelle neuronale netzwerke unter verwendung einer suche
WO2019156563A2 (en) * 2018-02-08 2019-08-15 Fugro N.V. Method of and apparatus for analyzing images

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018221413A1 (de) * 2017-12-14 2019-06-19 Robert Bosch Gmbh Effektive baustein-ausgestaltung für tiefe konvolutionelle neuronale netzwerke unter verwendung einer suche
WO2019156563A2 (en) * 2018-02-08 2019-08-15 Fugro N.V. Method of and apparatus for analyzing images
CN208314755U (zh) * 2018-04-27 2019-01-01 李喜 一种人工智能开发平台和系统
CN109086886A (zh) * 2018-08-02 2018-12-25 工极(北京)智能科技有限公司 一种基于极限学习机的卷积神经网络学习算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
钱艺;李占才;李昂;王沁;: "一种神经网络并行处理器的体系结构", 小型微型计算机系统, no. 10 *

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360747B (zh) * 2020-03-04 2024-01-12 阿里巴巴集团控股有限公司 基于神经网络模型的数据处理方法及装置
CN113360747A (zh) * 2020-03-04 2021-09-07 阿里巴巴集团控股有限公司 基于神经网络模型的数据处理方法及装置
WO2021190597A1 (zh) * 2020-03-27 2021-09-30 华为技术有限公司 一种神经网络模型的处理方法以及相关设备
CN113449858A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种神经网络模型的处理方法以及相关设备
CN113469351A (zh) * 2020-03-30 2021-10-01 嘉楠明芯(北京)科技有限公司 一种数据处理方法、装置及存储介质
CN111580828B (zh) * 2020-04-30 2021-08-27 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111580826A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111580828A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111580827A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111580826B (zh) * 2020-04-30 2021-08-06 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN113298263A (zh) * 2020-05-13 2021-08-24 阿里巴巴集团控股有限公司 计算图处理、模型运行方法及装置、电子设备、服务器及边缘终端
CN113298263B (zh) * 2020-05-13 2022-09-13 阿里巴巴集团控股有限公司 计算图处理、模型运行方法及装置、设备、服务器及终端
CN112748953B (zh) * 2020-07-02 2023-08-15 腾讯科技(深圳)有限公司 基于神经网络模型的数据处理方法、装置及电子设备
CN112748953A (zh) * 2020-07-02 2021-05-04 腾讯科技(深圳)有限公司 基于神经网络模型的数据处理方法、装置及电子设备
CN111708641B (zh) * 2020-07-14 2024-03-19 腾讯科技(深圳)有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN111708641A (zh) * 2020-07-14 2020-09-25 腾讯科技(深圳)有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
WO2022041015A1 (zh) * 2020-08-26 2022-03-03 华为技术有限公司 神经网络模型优化方法及装置
CN112070213A (zh) * 2020-08-28 2020-12-11 Oppo广东移动通信有限公司 神经网络模型的优化方法、装置、设备及存储介质
CN112200297A (zh) * 2020-09-04 2021-01-08 厦门星宸科技有限公司 神经网络优化方法、装置及处理器
CN112200297B (zh) * 2020-09-04 2024-03-01 星宸科技股份有限公司 神经网络优化方法、装置及处理器
WO2022127603A1 (zh) * 2020-12-14 2022-06-23 华为技术有限公司 一种模型处理方法及相关装置
CN112633502A (zh) * 2020-12-29 2021-04-09 北京百度网讯科技有限公司 一种深度学习模型的跨平台执行方法、装置及电子设备
CN113011585A (zh) * 2021-03-19 2021-06-22 上海西井信息科技有限公司 消除拼接算子的编译优化方法、系统、设备及存储介质
CN113011585B (zh) * 2021-03-19 2023-09-26 上海西井科技股份有限公司 消除拼接算子的编译优化方法、系统、设备及存储介质
CN113297860A (zh) * 2021-06-24 2021-08-24 上海携旅信息技术有限公司 机器翻译模型的优化方法、系统、电子设备和存储介质
CN113901315A (zh) * 2021-10-08 2022-01-07 北京字节跳动网络技术有限公司 一种数据服务方法、装置及相关产品
WO2023125628A1 (zh) * 2021-12-31 2023-07-06 华为技术有限公司 神经网络模型优化方法、装置及计算设备
CN116362316B (zh) * 2023-05-29 2023-12-12 成都阿加犀智能科技有限公司 一种模型转换方法、装置、存储介质及电子设备
CN116362316A (zh) * 2023-05-29 2023-06-30 成都阿加犀智能科技有限公司 一种模型转换方法、装置、存储介质及电子设备
CN116820524A (zh) * 2023-08-22 2023-09-29 腾讯科技(深圳)有限公司 模型更新方法、装置、计算机设备及存储介质
CN116820524B (zh) * 2023-08-22 2023-11-28 腾讯科技(深圳)有限公司 模型更新方法、装置、计算机设备及存储介质
CN117667424A (zh) * 2023-12-21 2024-03-08 摩尔线程智能科技(北京)有限责任公司 内存管理方法、装置和存储介质

Also Published As

Publication number Publication date
CN110659728B (zh) 2024-03-05

Similar Documents

Publication Publication Date Title
CN110659728A (zh) 神经网络优化方法、装置、计算机设备及存储介质
WO2021057746A1 (zh) 神经网络处理方法、装置、计算机设备及存储介质
CN111401510A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN111401538A (zh) 一种数据处理方法、装置、计算机设备及存储介质
US20220391678A1 (en) Neural network model processing method and apparatus, computer device, and storage medium
Lian et al. High-performance FPGA-based CNN accelerator with block-floating-point arithmetic
CN110321999B (zh) 神经网络计算图优化方法
CN111401539A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN111401511A (zh) 一种数据处理方法、装置、计算机设备及存储介质
US20160342888A1 (en) Memory efficiency for convolutional neural networks operating on graphics processing units
US11740870B2 (en) Convolutional network hardware accelerator device, system and method
US20220121903A1 (en) Method of performing splitting in neural network model by means of multi-core processor, and related product
CN111160551A (zh) 计算图执行方法、计算机设备及存储介质
CN111401537A (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN110689116A (zh) 一种神经网络剪枝方法、装置、计算机设备及存储介质
Zhou et al. Addressing sparsity in deep neural networks
JP5522283B1 (ja) リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置
CN111860824A (zh) 一种数据处理方法及相关产品
CN116128019A (zh) Transformer模型的并行训练方法及装置
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
CN111860825A (zh) 一种数据处理方法及相关产品
Arsham et al. An algorithm for simplex tableau reduction: the push-to-pull solution strategy
Lin Convolutional Layer Implementations in High-Level Synthesis for FPGAs
CN113220270A (zh) 一种生成向量化程序的方法及装置
Kjeldsberg et al. Storage requirement estimation for data intensive applications with partially fixed execution ordering

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200928

Address after: Room 611-194, R & D center building, China (Hefei) international intelligent voice Industrial Park, 3333 Xiyou Road, hi tech Zone, Hefei City, Anhui Province

Applicant after: Anhui Cambrian Information Technology Co.,Ltd.

Address before: 201306 floor 6, block B, 168 Tonghui Road, Pudong New Area, Shanghai.

Applicant before: Shanghai Cambricon Information Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant