CN115906993A - 处理神经网络模型的方法、装置和电子设备 - Google Patents
处理神经网络模型的方法、装置和电子设备 Download PDFInfo
- Publication number
- CN115906993A CN115906993A CN202211716465.8A CN202211716465A CN115906993A CN 115906993 A CN115906993 A CN 115906993A CN 202211716465 A CN202211716465 A CN 202211716465A CN 115906993 A CN115906993 A CN 115906993A
- Authority
- CN
- China
- Prior art keywords
- node
- neural network
- network model
- model
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003062 neural network model Methods 0.000 title claims abstract description 138
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000012545 processing Methods 0.000 title claims abstract description 44
- 230000017105 transposition Effects 0.000 claims abstract description 88
- 238000013528 artificial neural network Methods 0.000 claims abstract description 44
- 230000003068 static effect Effects 0.000 claims description 93
- 230000008569 process Effects 0.000 claims description 40
- 238000011144 upstream manufacturing Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 abstract description 5
- 238000006243 chemical reaction Methods 0.000 description 50
- 238000010586 diagram Methods 0.000 description 15
- 230000009466 transformation Effects 0.000 description 15
- 230000001131 transforming effect Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000003379 elimination reaction Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 230000008030 elimination Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000013138 pruning Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000009792 diffusion process Methods 0.000 description 3
- 229910052739 hydrogen Inorganic materials 0.000 description 3
- 230000015654 memory Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 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
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种处理神经网络模型的方法、装置和电子设备。该方法包括:获取神经网络模型,该神经网络模型用于执行多种神经网络操作,多种神经网络操作包括第一类转置操作和第二类转置操作,第一类转置操作用于将第一张量数据格式转换为第二张量数据格式,第二类转置操作用于将第二张量数据格式转换为第一张量数据格式;根据第一类转置操作和第二类转置操作中的可相互抵消的转置操作,简化神经网络模型。本申请实施例引入转置操作得到转换后的神经网络模型后,能够根据引入的转置操作中的可相互抵消的转置操作简化上述得到的神经网络模型,降低神经网络模型的冗余度,从而有利于提升模型的计算效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种处理神经网络模型的方法、装置和电子设备。
背景技术
某些场景下,比如从模型训练阶段到模型部署阶段,模型可能需要从一种模型框架转换到另一种模型框架。该转换过程中,如果转换后的模型的张量数据格式与转换前的模型的张量数据格式不同,那么转换过程中涉及张量数据格式的转换。
相关技术中,张量数据格式的转换可以通过引入转置(transpose)操作来实现,不过,这种方式导致转换后的模型部署之后,模型的计算效率较低。
发明内容
有鉴于此,本申请实施例致力于提供一种处理神经网络模型的方法、装置和电子设备。下面对本申请涉及的各个方面进行介绍。
第一方面,提供了一种处理神经网络模型的方法,包括:获取神经网络模型,所述神经网络模型用于执行多种神经网络操作,所述多种神经网络操作包括第一类转置操作和第二类转置操作,所述第一类转置操作用于将第一张量数据格式转换为第二张量数据格式,所述第二类转置操作用于将所述第二张量数据格式转换为所述第一张量数据格式;根据所述第一类转置操作和所述第二类转置操作中的可相互抵消的转置操作,简化所述神经网络模型。
第二方面,提供了一种处理神经网络模型的装置,包括:获取模块,用于获取神经网络模型,所述神经网络模型用于执行多种神经网络操作,所述多种神经网络操作包括第一类转置操作和第二类转置操作,所述第一类转置操作用于将第一张量数据格式转换为第二张量数据格式,所述第二类转置操作用于将所述第二张量数据格式转换为所述第一张量数据格式;简化模块,用于根据所述第一类转置操作和所述第二类转置操作中的可相互抵消的转置操作,简化所述神经网络模型。
第三方面,提供了一种电子设备,包括:神经网络处理器;通用处理器,所述通用处理器与所述神经网络处理器通信连接,所述通用处理器用于调用所述神经网络处理器执行神经网络操作;其中,所述神经网络处理器基于的神经网络模型是采用第一方面所述的方法得到的。
第四方面,提供了一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
第五方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面中的方法。
本申请实施例引入转置操作得到转换后的神经网络模型后,能够根据引入的转置操作中的可相互抵消的转置操作简化上述得到的神经网络模型,降低神经网络模型的冗余度,从而有利于提升模型的计算效率。
附图说明
图1为引入转置操作实现张量数据格式的转换的示例图。
图2为相关技术提供的电子设备的结构示意图。
图3为本申请一实施例提供的处理神经网络模型的方法的流程示意图。
图4为步骤S320的一种可能的实现方式的流程示意图。
图5为模型转换以及简化转换后的模型的示例图。
图6为无分支的静态图结构对应的简化转换后的模型的示例图。
图7为无分支的静态图结构对应的配对节点的搜索和消除的方法的流程示意图。
图8为本申请一实施例提供的简单分支的静态图结构对应的简化转换后的模型的示例图。
图9为本申请另一实施例提供的简单分支的静态图结构对应的简化转换后的模型的示例图。
图10为本申请另一实施例提供的处理神经网络模型的方法的流程示意图。
图11为简单分支的静态图结构对应的配对节点的搜索和消除的方法的流程示意图。
图12为模型输入端的第二类转置操作的处理方法的流程示意图。
图13为模型输出端的第一类转置操作的处理方法的流程示意图。
图14为本申请又一实施例提供的处理神经网络模型的方法的流程示意图。
图15为本申请实施例提供的处理神经网络模型的装置的结构示意图。
图16为本申请实施例提供的电子设备的结构示意图。
图17为本申请实施例提供的通信装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
某些场景下,可能需要进行模型转换,即需要将模型从一种模型框架转换到另一种模型框架,以便于模型能够在不同的模型框架之间流转。这是因为,不同模型框架的职能和侧重性能可能不同,在不同阶段使用不同的模型框架可以提高模型的性能。以基于深度学习算法的神经网络模型的开发和部署为例,神经网络模型从模型训练阶段到模型优化和部署阶段可能需要进行模型转换,以便在模型训练阶段可以使用能够提高开发效率的模型框架,而在模型部署阶段可以转换为能够提高硬件性能的模型框架。
模型转换过程中,主要涉及神经网络模型中的操作符的转换,即神经网络模型中的操作符在不同模型框架中的映射。以卷积(convolution,Conv)操作符为例,卷积作为目前神经网络模型中的对于张量(tensor)的基础操作符,在进行模型转换过程中,需要将卷积操作符从一种模型框架映射到另一种模型框架中。
此外,不同的模型框架对于张量存储的数据格式可能不同。为了便于理解,先对张量数据格式进行简单介绍。
张量可以理解为是神经网络模型中的数据容器,其本质就是各种不同维度的数组。张量的维度可以称为轴(axis),轴的个数可以称为阶(rank)。
张量数据格式可以包括多种,目前典型的张量数据格式可以包括NCHW格式和NHWC格式。其中,NCHW格式也可以称为通道优先(channel-first)格式,NHWC格式也可以称为通道最后(channel-last)格式。需要说明的是,NCHW格式和/或NHWC格式中的N指示批处理大小(batch),用于表示一个batch中的图像数量;C指示通道数(channel),用于表示一张图像中的通道数;H指示高度(height),用于表示图像垂直维度的像素数;W指示宽度(width),用于表示图像水平维度的像素数。
不同的模型框架支持的张量数据格式可能不同,例如,tf1(Tensorflow 1.x版本)、keras(或称,tf2(Tensorflow 2.x版本))、tflite等模型框架都是以NHWC格式为主,而pytorch,onnx等模型框架都是以NCHW格式为主,其中,keras的基础操作符(比如,卷积)虽然也支持NCHW,但只支持在图形处理单元(graphic processing unit,GPU)下运行。
这样一来,模型从一种模型框架转换到另一种模型框架的过程中,如果转换后的模型(后续称为目标模型,也可以理解为目标神经网络模型)的张量数据格式与转换前的模型(后续称为源模型,也可以理解为源神经网络模型)的张量数据格式不同,该模型转换不仅应该包括每个基础操作符(比如,卷积)在不同模型框架中的映射,还应该包含张量数据格式的转换。例如,源模型的张量数据格式为NCHW格式,目标模型的张量数据格式为NHWC格式,那么模型转换就涉及张量从NCHW格式向NHWC格式的转换。
以模型框架从pytorch到keras的转换为例,pytorch作为目前最常用的算法开发框架,其训练后的模型通过onnx导出后,转化到keras,再到tflite部署的过程中,其中onnx到keras的转换过程需要经历张量数据格式的转换。在一些实施例中,该张量数据格式的转换具体指的是卷积操作从NCHW(channel-first)格式转换为NHWC(channel-last)格式,以及其他相关操作符中涉及C,H,W等维度的映射转换。
作为一种可能的实现方式,上述模型转换过程中,可以仅执行基础操作符在不同模型框架中的映射,而不执行张量数据格式的转换,如此一来,目标模型可能因为张量数据格式不匹配而无法部署。以onnx到keras的转换过程为例,上述转换过程得到的keras模型依然是NCHW格式,虽然可以在GPU上推理,但是无法后续部署。
作为另一种可能的实现方式,用户(比如开发人员或部署人员)可以基于源模型手工构建目标模型,比如,重新手工通过代码在转换后的模型框架中构建目标模型,如此一来,便违背了快捷部署的初衷,不利于批量处理。继续以onnx到keras的转换过程为例,上述转换过程需要手工通过代码在keras上构建目标模型。
作为又一种可能的实现方式,可以引入转置操作来实现张量数据格式的转换。具体地,参见图1,可以为转换后的基础操作符(比如,转换后的卷积操作)前后加上转置操作以实现张量数据格式的转换。不过,上述转换过程为目标模型引入了大量的转置操作符,增加了模型的冗余度,导致目标模型部署之后,模型的计算效率较低,且对于模型的算力评估不利。
为了便于理解,下面结合图2介绍可应用前文介绍的模型转换的一种电子设备。图2所示的电子设备200可以包括神经网络处理器210和通用处理器220。神经网络处理器210和通用处理器220可以通信连接,通用处理器220可以调用神经网络处理器210以便神经网络处理器210可以利用模型转换后得到的目标模型进行数据处理。不过,由于模型转换得到的目标模型比较冗余,导致神经网络处理器210利用该目标模型进行数据处理时,神经网络处理器210的硬件开销较高。
为了解决上述问题,本申请实施例提供一种处理神经网络模型的方法、装置和电子设备,能够根据引入的转置操作中的可相互抵消的转置操作简化目标模型,降低目标模型的冗余度,从而有利于提升模型的计算效率。
本申请实施例提供的处理神经网络模型的方法可以由图2所示的电子设备执行,例如,可以由图2所示的电子设备中的神经网络处理器执行。本申请实施例的方法可以降低神经网络处理器的硬件开销。
下面结合附图先对本申请的方法实施例进行介绍。
图3为本申请实施例提供的处理神经网络模型的方法的流程示意图。图3所示的方法可以包括步骤S310和步骤S320,下面对这些步骤进行介绍。
在步骤S310,获取神经网络模型。
在一些实施例中,该神经网络模型是模型转换后得到的神经网络模型,即前文所述的目标模型。具体地,该神经网络模型可以是对源模型(即,源神经网络模型)中的基础操作符(比如,卷积操作符)进行转换,并且对源模型的张量数据格式进行转换后得到的目标模型(即,目标神经网络模型)。
本申请实施例中提及的基础操作符例如可以包括各种类型的卷积操作符,例如可以是二维(2D)卷积、三维(3D)卷积、反卷积(或称转置卷积)等,本申请实施例对此并不限定。
作为一种具体的实现方式,该神经网络模型可以是对源模型中的基础操作符进行转换,并且在该基础操作符的前后分别加上转置操作符(或称,转置节点)以对张量数据格式进行转换得到的。应该理解,之所以在基础操作符的前后分别加上转置操作符以对张量数据格式进行转换是因为,在源模型到目标模型的模型转换过程中插入转置操作符可以保证数据在目标模型中依然是以源模型对应的张量数据格式流通,这样做可以保证模型转换的正确性;而在基础操作(比如,卷积操作)中则需要将张量数据格式转换为目标模型对应的张量数据格式,因此需要在基础操作符之前加上转置操作符以保证在基础操作中的张量是以目标模型对应的张量数据格式运行的。也就是说,在基础操作符的前面加上转置操作符可以保证在基础操作中的张量是以目标模型对应的张量数据格式运行的,在基础操作符的后面加上转置操作符可以保证数据在目标模型中依然是以源模型对应的张量数据格式流通,从而保证模型转换的正确性。
以源模型为onnx模型、目标模型为keras模型为例,在onnx到keras的模型转换过程中插入转置操作符可以保证数据在keras模型中依然是以NCHW格式流通,以保证模型转换的正确性;而在卷积操作中将NCHW格式的张量转换为NHWC格式,并交给NHWC格式的卷积处理后,再转换为NCHW数据。
该神经网络模型用于执行多种神经网络操作。该多种神经网络操作可以包括第一类转置操作和第二类转置操作。其中,第一类转置操作可以用于将第一张量数据格式转换为第二张量数据格式。第二类转置操作可以用于将第二张量数据格式转换为第一张量数据格式。
在一些实施例中,第一类转置操作是在基础操作符(比如,卷积)之后加入的转置操作。在一些实施例中,第二类转置操作是在基础操作符之前加入的转置操作。
以onnx到keras模型的转换为例,上述神经网络模型可以是模型转换后得到的keras模型,第一类转置操作可以是在卷积操作之后加入的转置操作,第一类转置操作可以用于将NHWC格式转换为NCHW格式;第二类转置操作可以是在卷积操作之前加入的转置操作,第二类转置操作可以用于将NCHW格式转换为NHWC格式。
相反地,如果是keras到onnx模型的转换,上述神经网络模型可以是模型转换后得到的onnx模型,第一类转置操作可以是在卷积操作之后加入的转置操作,第一类转置操作可以用于将NCHW格式转换为NHWC格式;第二类转置操作可以是在卷积操作之前加入的转置操作,第二类转置操作可以用于将NHWC格式转换为NCHW格式。
在一些实施例中,该多种神经网络操作可以包括转置操作(比如,第一类转置操作、第二类转置操作)之外的神经网络操作,例如,该多种神经网络操作还可以包括卷积、激活函数、池化等其他神经网络操作,本申请实施例对此并不限定。
在步骤S320,根据第一类转置操作和第二类转置操作中的可相互抵消的转置操作,简化神经网络模型。
考虑到第一类转置操作可以将第一张量数据格式转换为第二张量数据格式,而第二类转置操作则可以将第二张量数据格式转换为第一张量数据格式,那么在神经网络模型中同时存在第一类转置操作和第二类转置操作的情况下,可以将第一类转置操作和第二类转置操作中的部分或全部转置操作抵消,以简化该神经网络模型。
在一些实施例中,根据第一类转置操作和第二类转置操作中的可相互抵消的转置操作,简化神经网络模型可以是指,将第一类转置操作和第二类转置操作中的可相互抵消的转置操作进行抵消。例如,可以通过合并消除第一类转置操作和第二类转置操作中的可相互抵消的转置操作来实现对神经网络模型的简化;或者,在合并消除第一类转置操作和第二类转置操作中的可相互抵消的转置操作的过程中,还可以对可相互抵消的转置操作中间的涉及张量的轴或张量的尺寸的操作符进行参数重映射等。
从上述模型转换的过程来看,本申请实施例进行模型转换的基本流程可以分为两个步骤:首先是从源模型到目标模型的转换,将源模型中的各个基础操作符进行映射转换,并引入转置操作实现张量数据格式的转换,从而得到包含大量冗余转置操作的目标模型,关于源模型到目标模型的具体转换过程可以参见前文图1相关的描述;其次是得到包含大量冗余转置操作的目标模型后,对该目标模型中的可相互抵消的转置操作进行抵消,简化目标模型,从而得到简化(精简)后的目标模型。
本申请实施例引入转置操作得到转换后的神经网络模型后,能够根据引入的转置操作中的可相互抵消的转置操作简化上述得到的神经网络模型,降低神经网络模型的冗余度,从而有利于提升模型的计算效率,降低神经网络处理器的硬件开销。
也就是说,本申请实施例主要针对源模型到目标模型的模型转换过程中的张量数据格式的自动转换,本申请实施例能够在源模型到目标模型的模型转换过程中,将源模型对应的张量数据格式自动转化成目标模型对应的张量数据格式,而且通过对可相互抵消的转置操作进行抵消以尽可能不增加冗余的转置操作。
下面对本申请实施例如何对目标模型中的可相互抵消的转置操作进行抵消,简化目标模型进行详细介绍。
在一些实施例中,可以利用模型的静态图结构对神经网络模型进行简化,即利用模型的静态图结构实现第一类转置操作和第二类转置操作中的可相互抵消的转置操作的抵消(或称,消除)。
在一些实施例中,利用模型的静态图结构对神经网络模型进行简化时,可以通过模型的静态图结构找到可相互抵消的配对节点,并对该可相互抵消的配对节点进行处理来实现神经网络模型的简化。这种情况下,前文所述的步骤S320可以包括步骤S321和步骤S322,下面结合图4和图5对此进行介绍。
参见图4,在步骤S321,从神经网络模型的静态图结构中搜索配对节点,该配对节点为静态图结构中的用于执行转置操作的节点中的相邻节点,该配对节点中的一个节点用于执行第一类转置操作,该配对节点中的另一个节点用于执行第二类转置操作,且该配对节点的转置操作可相互抵消。
该配对节点可以理解为执行转置操作的一组转置节点,该一组转置节点中的部分转置节点用于执行第一类转置操作,该一组转置节点中的另一部分转置节点用于执行第二类转置操作。
在一些实施例中,该配对节点的转置操作可相互抵消可以是指,该配对节点中的第一类转置操作和第二类转置操作分别执行之后,张量数据格式和未执行该配对节点对应的操作之前的张量数据格式相同。例如,未执行配对节点对应的操作之前的张量数据格式为NHWC格式,该配对节点中的一个节点用于将张量数据格式从NHWC格式转换为NCHW格式,该配对节点中的另一个节点用于将张量数据格式从NCHW格式转换为NHWC格式。
在一些实施例中,该配对节点中间不存在任何其他操作符。在一些实施例中,该配对节点中间不存在基础操作符(比如,卷积操作),可以存在基础操作符之外的其他操作符,比如,可以存在激活函数(比如RELU激活函数)、归一化操作(BatchNormalization,BN)等。
在一些实施例中,上述配对节点可以包括第一节点和第二节点,该第一节点位于第二节点的上游。该神经网络模型的静态图结构还包括用于执行卷积操作的第三节点和第四节点,该第一节点位于第三节点的输出端,第二节点位于第四节点的输入端。第一节点、第二节点、第三节点以及第四节点之间的逻辑位置可以参见图5。
图5以源模型为onnx、目标模型为keras为例,给出将onnx模型转换为keras模型后,利用keras模型的静态图结构对keras模型进行简化,以得到简化后的keras模型的过程。如图5所示,onnx包括卷积操作,将onnx模型转换为keras模型后,onnx的卷积操作可以对应转换为keras中的卷积操作,其中第三节点和第四节点为卷积操作对应的节点;转换后的keras模型存在大量冗余的转置操作,其中第一节点和第二节点为转置操作对应的节点。本申请实施例可以利用静态图结构搜索配对节点,比如图5中示出的配对节点(第一节点和第二节点),并删除该配对节点对应的操作符,以得到简化后的keras模型。
需要说明的是,图5是以图像张量为例进行说明的,在图5的示例中,针对维度为NCHW格式的张量,卷积前的转置参数为(0,2,3,1),卷积后的转置参数为(0,3,1,2)。不过本申请的应用场景并不限定于图像张量,在其他需要进行张量数据格式转换的情况下同样适用,比如3D张量、5D张量等。此外,针对其他维度的卷积(比如,Conv2D,Conv1D),本申请实施例针对的转置操作符的参数也有相应的更改。以onnx到keras转换为例,Conv1D的张量数据格式从(N,C,W)转换为(N,W,C),相应地,卷积前的转置参数为(0,2,1),卷积后的转置参数为(0,1,2),两者参数不同,但不影响本方案的操作。对于Conv3D,Conv3D的张量数据格式从(N,C,D,H,W)转换为(N,D,H,W,C),相应地,卷积前的转置参数为(0,4,1,2,3),卷积后的转置参数为(0,2,3,4,1)。
在一些实施例中,第一节点和第二节点之间不存在分支节点。第一节点和第二节点之间不存在分支节点的情况可以参见图5所示的情况。该情况为最简单的情况,这种情况下,本申请实施例的目标便是将前一个卷积输出时的转置操作和下一个卷积输入时的转置操作(配对节点)进行消除。而实际模型的结构使得配对节点的搜索、配对和消除变得复杂。后文将会详细介绍不同类型的静态图结构下如何搜索和消除配对节点。
在一些实施例中,该配对节点不止可以包括两个节点,还可以包括两个或两个以上的节点,该两个或两个以上的节点中存在用于执行第一类转置操作的节点和用于执行第二类转置操作的节点,该两个或两个以上的节点可以同时相互抵消。例如,该静态图结构包括分支结构时,配对节点可以包括分支结构中的两个或两个以上的节点,该两个或两个以上的节点可以同时相互抵消。
重新参见图4,在步骤S322,响应于搜索到该配对节点,删除神经网络模型中的与该配对节点对应的操作符。也就是说,搜索到该配对节点对应的转置操作符后,删除该转置操作符。
在一些实施例中,搜索到该配对节点,可以直接删除神经网络模型中的与该配对节点对应的操作符即可,例如,该配对节点中间不存在任何其他操作符;或者,该配对节点中间存在其他操作符,但是该其他操作符不涉及张量的轴或张量的尺寸,比如,该配对节点中间存在RELU激活函数。
在一些实施例中,搜索到该配对节点,删除神经网络模型中的与该配对节点对应的操作符后,还需要对配对节点中间存在的部分或全部其他操作符进行参数重映射,例如,该配对节点中间存在涉及张量的轴或张量的尺寸的操作符时,需要对该涉及张量的轴或张量的尺寸的操作符进行参数重映射。示例性地,如果配对节点中间存在BN操作符,则删除配对节点对应的操作符后,还需要对BN操作符进行参数重映射,比如,原来BN操作符对应的轴为1(axis=1),进行参数重映射后,BN操作符对应的轴变为3(axis=3)。
为了便于理解,下文分别结合无分支的静态图结构和有简单分支的静态图结构两种情况下,如何搜索配对节点以及消除配对节点对应的操作符进行介绍。需要说明的是,下文是以第一类转置操作是用于将目标模型对应的张量数据格式转换为源模型对应的张量数据格式(即,第一类转置操作是在卷积操作之后添加的转置操作),第二类转置操作是用于将源模型对应的张量数据格式转换为目标模型对应的张量数据格式(即,第二类转置操作是在卷积操作之前添加的转置操作)为例进行介绍的。例如,源模型对应的张量数据格式为NCHW格式,目标模型对应的张量数据格式为NHWC格式,则第一类转置操作用于将NHWC格式转换为NCHW格式,第二类转置操作用于将NCHW格式转换为NHWC格式。
情况一:无分支的静态图结构对应的配对节点的搜索和消除
应该理解,无分支的静态图结构是指,静态图结构中的所有节点皆为单输入且单输出,即无分叉的支路结构。图5和图6均为本申请实施例提供的无分支的静态图结构的示例图,在图5和图6的示例中,静态图结构中的所有节点皆为单输入且单输出。
无分支的静态图结构对应的配对节点的搜索可以理解为无分支下的直接搜索(straight search)。直接搜索作为模型的图搜索(或称,图检索)中的基础搜索,可以负责搜索和处理无分支状态下的冗余转置节点。
图7为本申请实施例提供的无分支的静态图结构对应的配对节点的搜索和消除的方法的流程示意图,下面结合图7对该情况下如何搜索和消除配对节点进行介绍。
对神经网络模型逐节点进行检测,以针对节点N为例,针对节点N,设置一个空集记录路径节点Sr={},检查节点N是否为执行第一类转置操作的节点(后续将执行第一类转置操作的节点称为第一类转置节点)。如果节点N不是第一类转置节点,则检查下一节点。如果节点N是第一类转置节点,则检查节点N的输出节点{Nsuc}。当节点N的输出节点{Nsuc}包含多个节点时,放弃查找,停止本循环,处理下一个节点,这是因为,如果节点N的输出节点{Nsuc}包含多个节点,则该静态图结构就不是无分支的静态图结构,不适用于图7所示的方法。当节点N的输出节点{Nsuc}包含单个节点时,判断该单个节点是否为执行第二类转置操作的节点(后续将执行第二类转置操作的节点称为第二类转置节点),若该单个节点为第二类转置节点,则完成配对节点的查找,停止本循环;若该单个节点不是第二类转置节点,则将该节点放入Sr,Sr=Sr∪{Nsuc},继续处理其输出节点,直到完成或放弃。
在一些实施例中,完成上述查找后,需要执行模型修改操作。该模型修改操作可以包括以下中的一种或多种:同时删除配对节点(即删除成对的第一类转置节点和第二类转置节点);针对Sr中的节点,对Sr中涉及张量的轴或张量的尺寸相关操作的操作符进行参数重映射。作为一个示例,如果Sr为空集或Sr包含的节点为不涉及张量的轴或张量的尺寸相关操作的操作符,比如Sr包含的节点为RELU激活函数,则上述模型修改操作可以仅包括同时删除配对节点。作为另一个示例,如果Sr包含的节点为涉及张量的轴或张量的尺寸相关操作的操作符,比如Sr包含的节点为BN操作,则上述模型修改操作可以包括同时删除配对节点和对Sr中涉及张量的轴或张量的尺寸相关操作的操作符进行参数重映射。
情况二:简单分支的静态图结构对应的配对节点的搜索和消除
简单分支的静态图结构可以包括分支结构,该分支结构可以包括分支节点,其中,分支节点是指分支结构中的具有多输入和/或多输出的节点。分支节点可以包括汇聚节点(converge node)和扩散节点(diverge node)。汇聚节点是指该分支节点具有多个输入路径。扩散节点是指该分支节点具有多个输出路径。图8和图9均为本申请实施例提供的简单分支的静态图结构的示例图,在图8的示例中,静态图结构中的分支节点为汇聚节点,在图9的示例中,静态图结构的分支节点为扩散节点。
简单分支的静态图结构对应的配对节点的搜索和消除可以理解为简单支路下的简单分支节点搜索。简单分支节点搜索可以负责处理简单分支上的配对节点(简单分支上的转置节点的搜索配对和消除)。简单分支节点搜索的主要思想是按照模型的静态图结构(比如,有向无环静态图结构),对静态图结构中的转置操作对应的节点(转置节点)进行等效变换,然后对等效变换后的静态图结构中的可相互抵消的转置操作进行处理,比如,删除可相互抵消的转置操作对应的操作符,对可相互抵消的转置操作的节点之间的其他操作符进行参数重映射等。
在一些实施例中,对静态图结构中的转置操作对应的节点进行等效变换可以是指,将原本的转置操作对应的节点从分支节点前等效变换到分支节点后,例如,将第一类转置操作对应的节点从分支节点前等效变换到分支节点后。作为一个具体示例,对于汇聚节点而言,对静态图结构中的转置操作对应的节点进行等效变换可以是指,将分支节点的输入路径上的多个(两个或两个以上)用于执行转置操作的节点(比如,第一类转置节点)等效变换成分支节点的输出端的一个用于执行转置操作的节点,等效变换后模型结构保持不变。作为另一个具体示例,对于扩散节点而言,对静态图结构中的转置操作对应的节点进行等效变换可以是指,将分支节点的输入路径上的一个用于执行转置操作的节点(比如,第一类转置节点)等效变换成分支节点的各个输出端的多个用于执行转置操作的节点,等效变换后模型结构保持不变。
在一些实施例中,对静态图结构中的转置操作对应的节点进行等效变换可以是指,将原本的转置操作对应的节点从分支节点后等效变换到分支节点前,例如,将第二类转置操作对应的节点从分支节点后等效变换到分支节点前。
以对静态图结构中的转置操作对应的节点进行等效变换是指将原本的转置操作对应的节点从分支节点前等效变换到分支节点后为例,本申请实施例的简单分支的静态图结构中,对静态图结构中的转置操作对应的节点进行等效变换可以包括图10所示的步骤S1010和步骤S1020。
参见图10,在简单分支的静态图结构中,本申请实施例在从神经网络模型的静态图结构中搜索配对节点之前,还可以执行步骤S1010和步骤S1020。
在步骤S1010,从神经网络模型的静态图结构中搜索第一分支结构,该第一分支结构包括一分支节点,该第一分支结构的各个输入路径均包括用于执行第一类转置操作的节点,且各个输入路径上的用于执行第一类转置操作的节点与该分支节点之间不存在其他分支节点。
在步骤S1020,将各个输入路径上的用于执行第一类转置操作的节点删除,并在该分支节点的各个输出端添加用于执行第一类转置操作的节点。
对于对静态图结构中的转置操作对应的节点进行等效变换是指将原本的转置操作对应的节点从分支节点后等效变换到分支节点前的具体实现过程类似于将原本的转置操作对应的节点从分支节点前等效变换到分支节点后的过程,为了简洁,此处不再赘述。
图11为本申请实施例提供的简单分支的静态图结构对应的配对节点的搜索和消除的方法的流程示意图,下面结合图11对该情况下如何搜索和消除配对节点进行具体介绍。
针对每个第一类转置操作的节点开始处理,设第一类转置操作的节点表示为Ttofirst,设集合S1={Ttofirst},S1用于收集待删除的Ttofirst。设S2={},S2用于收集待插入的Ttofirst的位置。设Sr={},Sr用于收集搜索时沿路的路径节点。
首先查找分支节点,若无分支节点,则停止并放弃处理,处理下一个Ttofirst;若有分支节点(假设该分支节点标记为B),则从分支节点B上溯搜索其他输入分支的Ttofirst。在从分支节点B上溯搜索其他输入分支的Ttofirst的过程中,如果遇到其他分支节点,则停止并放弃处理,这是因为,如果遇到其他分支节点可以理解为该分支结构并不是简单分支结构。在上述搜索过程中,将中间的路径节点加入Sr。如果成功收集到所有输入分支的节点,则将分支节点B的输出节点加入S2。
在一些实施例中,完成上述查找后,需要执行模型修改操作。该模型修改操作可以包括以下中的一种或多种:将S1中的Ttofirst节点删除;在S2中的节点与分支节点B之间插入新的Ttofirst;以及对Sr中涉及张量的轴或张量的尺寸相关操作的操作符进行参数重映射。关于对Sr中涉及张量的轴或张量的尺寸相关操作的操作符进行参数重映射的相关介绍可以参见前文,此处不再赘述。
在一些实施例中,对于简单分支的静态图结构,对静态图结构中的转置操作对应的节点进行等效变换后,可以按照前文所述的无分支的静态图结构的情况进一步对可相互抵消的转置操作进行处理,即可以按照前文的直接搜索过程,进一步将可相互抵消的转置操作的节点消除。重新参见图8和图9,从图8和图9的处理可以看出,对静态图结构中的转置操作对应的节点进行等效变换后,可以进一步将可相互抵消的转置操作的节点消除,具体消除的过程可以参见前文对无分支的静态图结构的相关描述。
在一些实施例中,本申请实施例中的神经网络模型的静态图结构可以包括有向边,该有向边可以具有边属性。该边属性可以用于指示其对应的有向边所指向的节点是否用于处理张量数据,以便通过边属性确定哪些操作符可以搜索,哪些操作符不用搜索,从而避免不相关的操作符。这种情况下,前文所述的从神经网络模型的静态图结构中搜索配对节点可以包括:根据静态图结构的有向边的属性,从处理张量数据的节点中搜索配对节点。如此一来,可以避免对与张量不相关的操作符(比如,某些取参数的操作符,这类操作符可能只负责参数的换算)的相关搜索。
本申请实施例可以通过模型等效换以及对冗余操作符进行抵消得到简化后的目标模型。与简化前的目标模型相比,本申请实施例简化后的目标模型能够在保证基本相同的推理效果的同时,不增加额外的冗余算力,提升了模型的计算效率,也为不同平台的模型快速部署提供了便利。
具体地,本申请实施例基于模型的静态图结构,可以由简入繁搜索并处理可优化的子静态图结构,比如可以优先处理无分支的静态图结构的情况,再通过图论的等效变换与模型结构相结合,处理简单分支的静态图结构的情况。未来针对更复杂的子静态图结构时,或者有更复杂的规则可处理时,可以在本申请实施例的基础上依次加入。
例如,针对更为复杂的模型中存在一些取参数的操作符,这类操作符可能只负责参数的换算,不负责张量的处理。这对这类操作符,在本申请的模型的静态图结构的搜索中,可以进一步对图的每条有向边设置边属性,通过该边属性指示哪些操作符可以搜索,哪些操作符不用搜索,从而避免不相关的操作符。
在一些实施例中,除了根据神经网络模型中的可相互抵消的转置操作简化该神经网络模型,还可以对该神经网络模型的首尾进行处理,以进一步简化该神经网络模型。也就是说,经过前文的处理之后,原则上模型的首尾还分别存在单独的第一类转置操作的操作符和第二类转置操作的操作符。下文结合附图,介绍如何处理模型的首尾存在的单独的第一类转置操作的操作符和第二类转置操作的操作符。
对于模型的输入端存在的单独的第二类转置操作的操作符(即,神经网络模型中的用于执行第二类转置操作的第一个操作符),本申请实施例提供的方法还可以执行以下步骤:删除神经网络模型中的用于执行第二类转置操作的第一个操作符;将神经网络模型支持的输入数据格式更改为第一张量数据格式。
作为一种实现方式,针对模型的输入端的第二类转置操作的操作符(标记为Ttolast),设Sr={},沿该第二类转置操作的操作符上溯搜索并将路径节点加入Sr。如果上溯搜索过程中遇到分支节点则停止并放弃处理;如果上溯到达输入端(Input),则可以对神经网络模型进行模型修剪操作。该模型修剪操作可以包括以下中的一种或多种:删除神经网络模型中的用于执行第二类转置操作的第一个操作符;将输入端(Input)的数据格式改为第一张量数据格式(例如,NHWC格式);以及对Sr中的涉及张量的轴或张量的尺寸的操作符进行参数重映射。对于模型的输入端存在的单独的第二类转置操作的操作符的具体操作可以参见图12。
对于模型的输出端存在的单独的第一类转置操作的操作符(即,神经网络模型中的用于执行第一类转置操作的最后一个操作符),本申请实施例提供的方法还可以执行以下步骤:删除神经网络模型中的用于执行第一类转置操作的最后一个操作符;将神经网络模型支持的输出数据格式更改为第一张量数据格式。
作为一种实现方式,针对模型的输出端的第一类转置操作的操作符(标记为Ttofirst),设Sr={},沿该第一类转置操作的操作符下沿搜索并将路径节点加入Sr。如果下沿搜索过程中遇到分支节点则停止并放弃处理;如果下沿到达输出端(Output),则可以对神经网络模型进行模型修剪操作。该模型修剪操作可以包括以下中的一种或多种:删除神经网络模型中的用于执行第一类转置操作的最后一个操作符;将输出端(Output)的数据格式改为第一张量数据格式(例如,NHWC格式);以及对Sr中的涉及张量的轴或张量的尺寸的操作符进行参数重映射。对于模型的输出端存在的单独的第一类转置操作的操作符的具体操作可以参见图13。
经过前文的描述,可以看出,本申请实施例可以通过多种途径对神经网络模型进行简化,例如,对无分支的静态图结构的处理,对简单分支的静态图结构的处理,以及对神经网络模型的首尾处理等。为了便于理解,下面结合图14给出本申请实施例的一种处理流程的示例图。
参见图14,在本申请实施例中,获取神经网络模型后,可以先对无分支的静态图结构进行处理,再对简单分支的静态图结构进行处理(比如,对简单分支的静态图结构进行等效变换,变换为无分支的静态图结构的情况,再对无分支的静态图结构进行处理),最后对神经网络模型的首尾进行处理等。
这样一来,本申请实施例可以由简入繁搜索并处理可优化的子静态图结构,比如可以优先处理无分支的静态图结构的情况,再通过图论的等效变换与模型结构相结合,处理简单分支的静态图结构的情况。未来针对更复杂的子静态图结构时,或者有更复杂的规则可处理时,可以在本申请实施例的基础上依次加入。
应该理解,图14的处理流程仅为示例,实际该处理流程的顺序可以进行调换,例如,先对神经网络模型的首尾进行处理,再对无分支的静态图结构进行处理等。
上文结合图1至图14,详细描述了本申请的方法实施例,下面结合图15至图17,详细描述本申请的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图15为本申请实施例提供的处理神经网络模型的装置的结构示例图。图15所示的装置1500可以包括获取模块1510和简化模块1520。
获取模块1510可以用于获取神经网络模型,所述神经网络模型用于执行多种神经网络操作,所述多种神经网络操作包括第一类转置操作和第二类转置操作,所述第一类转置操作用于将第一张量数据格式转换为第二张量数据格式,所述第二类转置操作用于将所述第二张量数据格式转换为所述第一张量数据格式。
简化模块1520可以用于根据所述第一类转置操作和所述第二类转置操作中的可相互抵消的转置操作,简化所述神经网络模型。
可选地,简化模块1520进一步包括:第一搜索模块,用于从所述神经网络模型的静态图结构中搜索配对节点,所述配对节点为所述静态图结构中的用于执行转置操作的节点中的相邻节点,所述配对节点中的一个节点用于执行所述第一类转置操作,所述配对节点中的另一个节点用于执行所述第二类转置操作,且所述配对节点的转置操作可相互抵消;第一删除模块,用于响应于搜索到所述配对节点,删除所述神经网络模型中的与所述配对节点对应的操作符。
可选地,所述配对节点包括第一节点和第二节点,所述第一节点位于所述第二节点的上游,所述静态图结构还包括用于执行卷积操作的第三节点和第四节点,所述第一节点位于所述第三节点的输出端,所述第二节点位于所述第四节点的输入端,且所述第一节点和所述第二节点之间不存在分支节点。
可选地,装置1500还包括:第二搜索模块,用于从所述神经网络模型的静态图结构中搜索第一分支结构,所述第一分支结构包括一分支节点,所述第一分支结构的各个输入路径均包括用于执行所述第一类转置操作的节点,且所述各个输入路径上的用于执行所述第一类转置操作的节点与所述分支节点之间不存在其他分支节点;删除和添加模块,用于将所述各个输入路径上的用于执行所述第一类转置操作的节点删除,并在所述分支节点的各个输出端添加用于执行所述第一类转置操作的节点。
可选地,所述神经网络模型的静态图结构的有向边具有边属性,所述边属性用于指示所述有向边所指向的节点是否用于处理张量数据,所述第一搜索模块进一步用于:根据所述静态图结构中的有向边的边属性,从处理张量数据的节点中搜索所述配对节点。
可选地,装置1500还包括:第二删除模块,用于删除所述神经网络模型中的用于执行所述第二类转置操作的第一个操作符;第一更改模块,用于将所述神经网络模型支持的输入数据格式更改为所述第一张量数据格式。
可选地,装置1500还包括:第三删除模块,用于删除所述神经网络模型的用于执行所述第一类转置操作的最后一个操作符;第二更改模块,用于将所述神经网络模型支持的输出数据格式更改为所述第一张量数据格式。
可选地,所述神经网络模型是模型转换后得到的神经网络模型。
图16为本申请实施例提供的电子设备的结构示意图。该电子设备可以包括神经网络处理器1610和通用处理器1620。神经网络处理器1610和通用处理器1620通信连接。该通用处理器1620可以用于调用神经网络处理器1610执行神经网络操作。其中,神经网络处理器1610基于的神经网络模型是采用前文所述的处理神经网络模型的方法得到的。
本申请实施例提供的电子设备采用的神经网络模型是简化后的目标模型,使得神经网络处理器利用该神经网络模型进行数据处理更为快速,进而可以有效降低神经网络处理器的硬件开销。
图17是本申请实施例的通信装置的示意性结构图。图17中的虚线表示该单元或模块为可选的。该装置1700可用于实现上述方法实施例中描述的方法。装置1700可以是芯片、终端设备或网络设备。
装置1700可以包括一个或多个处理器1710。该处理器1710可支持装置1700实现前文方法实施例所描述的方法。该处理器1710可以是通用处理器或者专用处理器。例如,该处理器可以为中央处理单元(central processing unit,CPU)。或者,该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
装置1700还可以包括一个或多个存储器1720。存储器1720上存储有程序,该程序可以被处理器1710执行,使得处理器1710执行前文方法实施例所描述的方法。存储器1720可以独立于处理器1710也可以集成在处理器1710中。
装置1700还可以包括收发器1730。处理器1710可以通过收发器1730与其他设备或芯片进行通信。例如,处理器1710可以通过收发器1730与其他设备或芯片进行数据收发。
本申请实施例还提供一种计算机可读存储介质,用于存储程序。该计算机可读存储介质可应用于本申请实施例提供的终端或网络设备中,并且该程序使得计算机执行本申请各个实施例中的由终端或网络设备执行的方法。
本申请实施例还提供一种计算机程序产品。该计算机程序产品包括程序。该计算机程序产品可应用于本申请实施例提供的终端或网络设备中,并且该程序使得计算机执行本申请各个实施例中的由终端或网络设备执行的方法。
本申请实施例还提供一种计算机程序。该计算机程序可应用于本申请实施例提供的终端或网络设备中,并且该计算机程序使得计算机执行本申请各个实施例中的由终端或网络设备执行的方法。
应理解,本申请中术语“系统”和“网络”可以被可互换使用。另外,本申请使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。
在本申请的实施例中,提到的“指示”可以是直接指示,也可以是间接指示,还可以是表示具有关联关系。举例说明,A指示B,可以表示A直接指示B,例如B可以通过A获取;也可以表示A间接指示B,例如A指示C,B可以通过C获取;还可以表示A和B之间具有关联关系。
在本申请实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
在本申请实施例中,术语“对应”可表示两者之间具有直接对应或间接对应的关系,也可以表示两者之间具有关联关系,也可以是指示与被指示、配置与被配置等关系。
本申请实施例中,“预定义”或“预配置”可以通过在设备(例如,包括终端设备和网络设备)中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本申请对于其具体的实现方式不做限定。比如预定义可以是指协议中定义的。
本申请实施例中,所述“协议”可以指通信领域的标准协议,例如可以包括LTE协议、NR协议以及应用于未来的通信系统中的相关协议,本申请对此不做限定。
本申请实施例中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,DVD))或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种处理神经网络模型的方法,其特征在于,所述方法包括:
获取神经网络模型,所述神经网络模型用于执行多种神经网络操作,所述多种神经网络操作包括第一类转置操作和第二类转置操作,所述第一类转置操作用于将第一张量数据格式转换为第二张量数据格式,所述第二类转置操作用于将所述第二张量数据格式转换为所述第一张量数据格式;
根据所述第一类转置操作和所述第二类转置操作中的可相互抵消的转置操作,简化所述神经网络模型。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一类转置操作和所述第二类转置操作中的可相互抵消的转置操作,简化所述神经网络模型,包括:
从所述神经网络模型的静态图结构中搜索配对节点,所述配对节点为所述静态图结构中的用于执行转置操作的节点中的相邻节点,所述配对节点中的一个节点用于执行所述第一类转置操作,所述配对节点中的另一个节点用于执行所述第二类转置操作,且所述配对节点的转置操作可相互抵消;
响应于搜索到所述配对节点,删除所述神经网络模型中的与所述配对节点对应的操作符。
3.根据权利要求2所述的方法,其特征在于,所述配对节点包括第一节点和第二节点,所述第一节点位于所述第二节点的上游,所述静态图结构还包括用于执行卷积操作的第三节点和第四节点,所述第一节点位于所述第三节点的输出端,所述第二节点位于所述第四节点的输入端,且所述第一节点和所述第二节点之间不存在分支节点。
4.根据权利要求3所述的方法,其特征在于,在所述从所述神经网络模型的静态图结构中搜索配对节点之前,所述方法还包括:
从所述神经网络模型的静态图结构中搜索第一分支结构,所述第一分支结构包括一分支节点,所述第一分支结构的各个输入路径均包括用于执行所述第一类转置操作的节点,且所述各个输入路径上的用于执行所述第一类转置操作的节点与所述分支节点之间不存在其他分支节点;
将所述各个输入路径上的用于执行所述第一类转置操作的节点删除,并在所述分支节点的各个输出端添加用于执行所述第一类转置操作的节点。
5.根据权利要求2-4中任一项所述的方法,其特征在于,所述神经网络模型的静态图结构的有向边具有边属性,所述边属性用于指示所述有向边所指向的节点是否用于处理张量数据,
所述从所述神经网络模型的静态图结构中搜索配对节点,包括:
根据所述静态图结构中的有向边的边属性,从处理张量数据的节点中搜索所述配对节点。
6.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
删除所述神经网络模型中的用于执行所述第二类转置操作的第一个操作符;
将所述神经网络模型支持的输入数据格式更改为所述第一张量数据格式。
7.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
删除所述神经网络模型的用于执行所述第一类转置操作的最后一个操作符;
将所述神经网络模型支持的输出数据格式更改为所述第一张量数据格式。
8.根据权利要求1-4中任一项所述的方法,其特征在于,所述神经网络模型是模型转换后得到的神经网络模型。
9.一种处理神经网络模型的装置,其特征在于,所述装置包括:
获取模块,用于获取神经网络模型,所述神经网络模型用于执行多种神经网络操作,所述多种神经网络操作包括第一类转置操作和第二类转置操作,所述第一类转置操作用于将第一张量数据格式转换为第二张量数据格式,所述第二类转置操作用于将所述第二张量数据格式转换为所述第一张量数据格式;
简化模块,用于根据所述第一类转置操作和所述第二类转置操作中的可相互抵消的转置操作,简化所述神经网络模型。
10.根据权利要求9所述的装置,其特征在于,所述简化模块进一步包括:
第一搜索模块,用于从所述神经网络模型的静态图结构中搜索配对节点,所述配对节点为所述静态图结构中的用于执行转置操作的节点中的相邻节点,所述配对节点中的一个节点用于执行所述第一类转置操作,所述配对节点中的另一个节点用于执行所述第二类转置操作,且所述配对节点的转置操作可相互抵消;
第一删除模块,用于响应于搜索到所述配对节点,删除所述神经网络模型中的与所述配对节点对应的操作符。
11.根据权利要求10所述的装置,其特征在于,所述配对节点包括第一节点和第二节点,所述第一节点位于所述第二节点的上游,所述静态图结构还包括用于执行卷积操作的第三节点和第四节点,所述第一节点位于所述第三节点的输出端,所述第二节点位于所述第四节点的输入端,且所述第一节点和所述第二节点之间不存在分支节点。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第二搜索模块,用于从所述神经网络模型的静态图结构中搜索第一分支结构,所述第一分支结构包括一分支节点,所述第一分支结构的各个输入路径均包括用于执行所述第一类转置操作的节点,且所述各个输入路径上的用于执行所述第一类转置操作的节点与所述分支节点之间不存在其他分支节点;
删除和添加模块,用于将所述各个输入路径上的用于执行所述第一类转置操作的节点删除,并在所述分支节点的各个输出端添加用于执行所述第一类转置操作的节点。
13.根据权利要求10-12中任一项所述的装置,其特征在于,所述神经网络模型的静态图结构的有向边具有边属性,所述边属性用于指示所述有向边所指向的节点是否用于处理张量数据,所述第一搜索模块进一步用于:
根据所述静态图结构中的有向边的边属性,从处理张量数据的节点中搜索所述配对节点。
14.根据权利要求9-12中任一项所述的装置,其特征在于,所述装置还包括:
第二删除模块,用于删除所述神经网络模型中的用于执行所述第二类转置操作的第一个操作符;
第一更改模块,用于将所述神经网络模型支持的输入数据格式更改为所述第一张量数据格式。
15.根据权利要求9-12中任一项所述的装置,其特征在于,所述装置还包括:
第三删除模块,用于删除所述神经网络模型的用于执行所述第一类转置操作的最后一个操作符;
第二更改模块,用于将所述神经网络模型支持的输出数据格式更改为所述第一张量数据格式。
16.根据权利要求9-12中任一项所述的装置,其特征在于,所述神经网络模型是模型转换后得到的神经网络模型。
17.一种电子设备,其特征在于,包括:
神经网络处理器;
通用处理器,所述通用处理器与所述神经网络处理器通信连接,所述通用处理器用于调用所述神经网络处理器执行神经网络操作;
其中,所述神经网络处理器基于的神经网络模型是采用权利要求1-8中任一项所述的方法得到的。
18.一种计算机可读存储介质,其上存储有可执行代码,其特征在于,所述代码用于实现权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211716465.8A CN115906993A (zh) | 2022-12-29 | 2022-12-29 | 处理神经网络模型的方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211716465.8A CN115906993A (zh) | 2022-12-29 | 2022-12-29 | 处理神经网络模型的方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115906993A true CN115906993A (zh) | 2023-04-04 |
Family
ID=86478856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211716465.8A Pending CN115906993A (zh) | 2022-12-29 | 2022-12-29 | 处理神经网络模型的方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115906993A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117268345A (zh) * | 2023-11-20 | 2023-12-22 | 启元实验室 | 一种高实时性单目深度估计测量方法、装置及电子设备 |
-
2022
- 2022-12-29 CN CN202211716465.8A patent/CN115906993A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117268345A (zh) * | 2023-11-20 | 2023-12-22 | 启元实验室 | 一种高实时性单目深度估计测量方法、装置及电子设备 |
CN117268345B (zh) * | 2023-11-20 | 2024-03-29 | 启元实验室 | 一种高实时性单目深度估计测量方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704267B (zh) | 一种卷积神经网络运算指令及其方法 | |
US20220076123A1 (en) | Neural network optimization method, electronic device and processor | |
US20240161474A1 (en) | Neural Network Inference Acceleration Method, Target Detection Method, Device, and Storage Medium | |
CN113900958A (zh) | 测试用例脚本的生成方法、系统、介质及电子设备 | |
CN112183547B (zh) | 基于多模态数据的多任务学习方法及系统 | |
CN113705798A (zh) | 处理单元、计算装置及深度学习模型的计算图优化方法 | |
CN110780879B (zh) | 一种基于智能编译技术的决策执行方法、装置、设备及介质 | |
CN115906993A (zh) | 处理神经网络模型的方法、装置和电子设备 | |
CN110309269A (zh) | 应答处理方法及其系统、计算机系统及计算机可读介质 | |
US20240184547A1 (en) | Code processing method in hardware memory order architecture and corresponding apparatus | |
CN112463159A (zh) | 编译方法、装置、电子设备和存储介质 | |
CN115358404A (zh) | 基于机器学习模型推理的数据处理方法、装置及设备 | |
CN113568605B (zh) | 约定式路由配置方法、装置、和系统 | |
CN113505278B (zh) | 图匹配方法、装置、电子设备及存储介质 | |
CN112836804B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN113139650B (zh) | 深度学习模型的调优方法和计算装置 | |
US20200134434A1 (en) | Arithmetic processing device, learning program, and learning method | |
CN115796228B (zh) | 算子融合方法、装置、设备以及存储介质 | |
CN115469931B (zh) | 一种循环程序的指令优化方法、装置、系统、设备及介质 | |
CN109977011A (zh) | 测试脚本的自动生成方法、装置、存储介质及电子设备 | |
CN117472942A (zh) | 代价估计方法、电子设备、存储介质和计算机程序产品 | |
CN114972775A (zh) | 特征处理方法、装置、产品、介质及设备 | |
CN114997380A (zh) | 采样器以及用于图神经网络模型执行的装置 | |
CN113705799A (zh) | 处理单元、计算装置及深度学习模型的计算图处理方法 | |
CN110909191A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230508 Address after: 200135 room 01, 8th floor (7th floor, real estate registration floor), No. 1, Lane 61, shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Applicant after: Zheku Technology (Shanghai) Co.,Ltd. Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18 Applicant before: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd. |