CN116415621A - 神经网络的切片方法、装置及电子设备 - Google Patents
神经网络的切片方法、装置及电子设备 Download PDFInfo
- Publication number
- CN116415621A CN116415621A CN202211623610.8A CN202211623610A CN116415621A CN 116415621 A CN116415621 A CN 116415621A CN 202211623610 A CN202211623610 A CN 202211623610A CN 116415621 A CN116415621 A CN 116415621A
- Authority
- CN
- China
- Prior art keywords
- node
- neural network
- operator
- output
- virtual
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 283
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000012545 processing Methods 0.000 claims abstract description 46
- 239000003999 initiator Substances 0.000 claims description 37
- 230000008569 process Effects 0.000 claims description 33
- 230000006870 function Effects 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000000977 initiatory effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 230000011218 segmentation Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/04—Architecture, e.g. interconnection topology
-
- 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/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
本申请适用于网络处理技术领域,提供了一种神经网络的切片方法、装置及电子设备,该方法包括:在神经网络中添加虚拟节点;根据虚拟节点的输出维度的大小、神经网络中的每个节点在运行时所需要的存储空间的大小和时长、以及内部存储器的存储空间的大小,确定神经网络的目标切片数量;根据神经网络的目标切片数量,以虚拟节点为根节点对神经网络中的每个节点的输出维度进行切片处理,得到切片后的神经网络。从而,本申请实现了对神经网络的切片处理,减少了访问外部存储器的次数,保证了神经网络处理数据的效率。
Description
技术领域
本申请属于网络处理技术领域,尤其涉及一种神经网络的切片方法、装置及电子设备。
背景技术
神经网络(neural networks,NNs)是一种进行分布式并行信息处理的算法数学模型。神经网络在运行时所需要的存储空间通常较大,考虑到运行神经网络的芯片的内部存储器的存储空间较小,神经网络处理数据时通常需要先将数据存储在外部存储器,对数据处理时再从外部存储器搬移搬运到内部存储器,完成数据处理后将处理结果从内部存储器搬运到外部存储器。为了进一步降低神经网络在运行时所需要的内部存储器的存储空间,需要对神经网络先进行分割,得到多个网络子图,再对切分后的每个网络子图中的每个节点中的输出维度进行切片,得到切片后的神经网络。
相关技术中,对多输出网络子图进行切片的具体过程包括:将多输出神经网络子图中的每个末端节点分别与其他节点进行分割,得到多个单输出网络子图后,对每个单输出网络子图进行切片处理。
然而,采用上述切片技术对多输出神经网络子图进行切片后,对于多个输出的共用节点,在第一个单输出网络子图在处理数据时,需要把结果从内部存储器搬运到外部存储器,其后的单输出网络子图在处理数据时,都要从外部存储器搬移搬运数据到内部存储器,难以减少共用访问外部存储器的次数,使得神经网络处理数据的效率不高。
发明内容
本申请提供了一种神经网络的切片方法、装置及电子设备,可以减少访问外部存储器的次数,保证了神经网络处理数据的效率。
第一方面,本申请提供了一种神经网络的切片方法,包括:
在神经网络中添加虚拟节点,所述神经网络包括至少两个末端节点和至少一个分叉节点,所述虚拟节点与每个末端节点皆连接,所述虚拟节点用于将所述神经网络由多输出神经网络转换为多输入单输出神经网络;
根据所述虚拟节点的输出维度的大小、所述神经网络中的每个节点在运行时所需要的存储空间的大小和时长、以及内部存储器的存储空间的大小,确定所述神经网络的目标切片数量,每个节点用于表征所述神经网络中的一个独立计算单元,所述内部存储器为存储所述神经网络的存储器;
根据所述神经网络的目标切片数量,以所述虚拟节点为根节点对所述神经网络中的每个节点的输出维度进行切片处理,得到切片后的所述神经网络。
本申请提供的一种神经网络的切片方法,可使得神经网络由多输出神经网络转换为单输出神经网络,并在确定神经网络的目标切片数量后,对虚拟节点进行切片,使得其他节点也能通过调度原语跟随虚拟节点切片,从而可以实现对整个多输出神经网络的切片,提高了对神经网络的切片效率,通过切片减少了神经网络在运行时对内部存储器的占用。另外,整个流程中减少了访问外部存储器的次数,保证了神经网络处理数据的效率。
第二方面,本申请提供了一种神经网络的切片装置,该装置用于执行上述第一方面或第一方面的任一可能的实现方式中的神经网络的切片方法。具体地,该装置包括:
添加模块,用于在神经网络中添加虚拟节点,所述神经网络包括至少两个末端节点和至少一个分叉节点,所述虚拟节点与每个末端节点皆连接,所述虚拟节点用于将所述神经网络由多输出神经网络转换为多输入单输出神经网络;
确定模块,用于根据所述虚拟节点的输出维度的大小、所述神经网络中的每个节点在运行时所需要的存储空间的大小和时长、以及内部存储器的存储空间的大小,确定所述神经网络的目标切片数量,每个节点用于表征所述神经网络中的一个独立计算单元,所述内部存储器为存储所述神经网络的存储器;
切片模块,用于根据所述神经网络的目标切片数量,以所述虚拟节点为根节点对所述神经网络中的每个节点的输出维度进行切片处理,得到切片后的所述神经网络。
第三方面,本申请提供了一种电子设备,该设备包括存储器与处理器。该存储器用于存储指令;该处理器执行该存储器存储的指令,使得该设备执行第一方面或第一方面的任一可能的实现方式中的神经网络的切片方法。
第四方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行第一方面或第一方面的任一可能的实现方式中的神经网络的切片方法。
第五方面,提供一种包含指令的计算机程序产品,当该指令在设备上运行时,使得设备执行第一方面或第一方面的任一可能的实现方式中的神经网络的切片方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的神经网络的切片方法的流程示意图;
图2是本申请一实施例提供的神经网络的示意图;
图3是本申请一实施例提供的添加虚拟节点后的神经网络的示意图;
图4是本申请一实施例提供的神经网络的切片方法的流程示意图;
图5是本申请一实施例提供的神经网络的切片装置的结构示意图;
图6是本申请一实施例提供的电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请提供神经网络的切片方法、装置、计算机可读存储介质、和电子设备,该神经网络的切片方法应用于需要对神经网络进行切片处理的场景中。
上述的神经网络可以为卷积神经网络(convolutional neural network,CNN)、循环神经网络(recurrent neural network,RNN)、深度神经网络(deep neural network,DNN)等。
本申请对神经网络的类型不做任何限制。
其中,本申请的神经网络的切片方法用于对神经网络中的每个节点的输出维度进行切片处理,得到切片后的神经网络。
神经网络中的每个节点设置有输出维度,在神经网络用于处理图像时,输出维度包括图像的张数、图像的颜色通道值、图像的深度、图像的长度、和图像的宽度中的多项。
在神经网络用于处理图像时,以对神经网络的输出维度为图像的张数进行切片,将3张图像切分为3份后,得到的切片后的神经网络为例简单说明,切片后的神经网络处理数据的过程。
神经网络中的起始节点接收到从外部存储器中读取到内部存储器中的每份图像的图像数据后,起始节点的起始算子至结束算子可对内部存储器的每份图像的图像数据进行处理,并将处理得到的每份图像的结果数据存储在内部存储器中。
神经网络中的中间节点的起始算子至结束算子可对内部存储器中的每份图像的图像数据进行处理,并将处理得到的每份图像的结果数据存储在内部存储器中;
神经网络中的末端节点的起始算子至结束算子可对内部存储器的每份图像的图像数据进行处理,并将处理得到的每份图像的结果数据存储在外部存储器中。
从而,神经网络可完成对图像的处理。
上述的神经网络的切片方法可通过电子设备实现。
其中,电子设备可以为智能手机、平板电脑、台式电脑、笔记本电脑、手持设备、服务器等。本申请实施例对电子设备的具体类型不作任何限制。
基于上述场景描述,下面,本申请以电子设备为例,结合附图和应用场景,对本申请实施例提供的神经网络的切片方法进行详细说明。
请参阅图1,图1示出了本申请一实施例提供的神经网络的切片方法的流程示意图。
如图1所示,本申请提供的神经网络的切片方法,包括:
S101、在神经网络中添加虚拟节点。
其中,神经网络包括至少两个末端节点和至少一个分叉节点。
在一些实施例中,神经网络包括至少一个起始节点、至少一个中间节点、和至少两个末端节点。
通常,中间节点包括分叉节点和除起始节点、分叉节点和末端节点之外的其他节点。
例如,神经网络可以包括两个起始节点、一个分叉节点、和两个末端节点,两个起始节点连接在一个分叉节点的输入端,两个末端节点连接在一个分叉节点的输出端。
其中,起始节点为神经网络的输入节点,用于处理输入数据。
中间节点为连接在起始节点和末端节点之间的节点,用于处理起始节点的输出数据。
末端节点为神经网络的输出节点,用于处理分叉节点的输出数据,以及输出结果数据。
其中,在一些情况下,起始节点或末端节点与分叉节点为同一节点。
例如,神经网络包括一个起始节点和两个末端节点时,起始节点与分叉节点为同一节点。
在一些实施例中,上述神经网络为多输出神经网络。
在另一些实施例中,上述神经网络为多输出神经网络经分割后得到的多个神经网络子图中的多输出神经网络子图。
其中,虚拟节点用于将神经网络由多输出神经网络转换为多输入单输出神经网络。
其中,虚拟节点与每个末端节点皆连接。
例如,在神经网络包括两个末端节点时,虚拟节点与两个末端节点中的每个末端节点皆连接。
举例说明,如图2所示,在神经网络为多输入多输出神经网络,该神经网络包括起始节点A、起始节点B、分叉节点C、末端节点D、和末端节点E时,电子设备在神经网络中添加虚拟节点F,使得虚拟节点F分别与末端节点D、和末端节点E连接,可得到如图3所示的神经网络。
由此,电子设备可通过虚拟节点将神经网络由多输出神经网络转换为多输入单输出神经网络,为电子设备能够以虚拟节点为根节点对神经网络中的每个节点的输出维度进行切片处理做好准备。
另外,神经网络中的每个节点设置有输出维度,在神经网络用于处理图像时,输出维度包括图像的张数、图像的颜色通道值、图像的深度、图像的长度、和图像的宽度中的多项。
假设末端节点D的输出维度包括图像的张数N、图像的颜色通道值Chanel0、图像的长度H、和图像的宽度W,末端节点E的输出维度包括图像的张数N、图像的颜色通道值Chanel1、图像的长度H、图像的宽度W。
那么,虚拟节点F的输出维度可以包括图像的张数N、图像的颜色通道值Chanel、图像的长度H、和图像的宽度W,其中,Chanel=Chanel0+Chanel1。
此外,在神经网络中添加虚拟节点的方式,适应于末端节点D和末端节点E的输出维度最多只有一个维度不同的情况。
例如,末端节点D和末端节点E的输出维度中图像的颜色通道值不同。电子设备可不对该输出维度切片,大多数情况下会选择图像的颜色通道值维度Chanel,因为在全连接卷积网络中,通常对Chanel维度的切分会引入大量的重复计算,导致降低运行神经网络的芯片的性能。
S102、根据虚拟节点的输出维度的大小、神经网络中的每个节点在运行时所需要的存储空间的大小和时长、以及内部存储器的存储空间的大小,确定神经网络的目标切片数量。
其中,每个节点用于表征神经网络中的一个独立计算单元。
内部存储器为存储神经网络的存储器。神经网络中的每个节点在运行时所需要的存储空间的大小和时长存在不同。
从而,电子设备可以根据虚拟节点的输出维度,确定第一切片数量,再根据每个节点在运行时所需要的存储空间的大小,从第一切片数量中确定有效切片数量,即第二切片数量,并根据每个节点在运行时所需要的计算时长,将最小时长对应的第二切片数量确定为目标切片数量。
S103、根据神经网络的目标切片数量,以虚拟节点为根节点对神经网络中的每个节点的输出维度进行切片处理,得到切片后的神经网络。
基于S101,电子设备通过在神经网络中添加虚拟节点,使得神经网络由多输出神经网络转换为多输入单输出神经网络,基于S102,电子设备可获得神经网络的目标切片数量。
由此,电子设备能够以虚拟节点为根节点对神经网络中的每个节点的输出维度进行切片处理。
继续结合图3,假设虚拟节点的输出维度包括图像的张数N、图像的颜色通道值Chanel、图像的长度H、和图像的宽度W。
电子设备能够以虚拟节点F为根节点对虚拟节点F的图像的张数N、图像的颜色通道值Chanel、图像的长度H、和图像的宽度W,调用分离(split)原语对输出维度进行切片处理。
分离(split)原语为神经网络编译框架(Tensor Virtual Machine,TVM))中的原语。
TVM是对不同的神经网络框架和硬件平台实现统一的软件栈,可以将不同框架下的神经网络均部署在硬件平台上。
由于,虚拟节点F的输出维度中的图像的颜色通道值Chanel与虚拟节点D和虚拟节点E的输出维度不同,电子设备在对虚拟节点F的输出维度进行切片处理时,对图像的颜色通道值Channel不切片,得到切片后的n_outer、h_outer、w_outer、n_inner、Channel、h_inner、和w_inner。
本申请提供的神经网络的切片方法,通过电子设备在神经网络中添加虚拟节点,使得神经网络由多输出神经网络转换为多输入单输出神经网络,能够为以虚拟节点为根节点对神经网络中的每个节点的输出维度进行切片处理做好准备。
电子设备可以根据虚拟节点的输出维度,确定第一切片数量,并根据每个节点在运行时所需要的存储空间的大小,从第一切片数量中确定第二切片数量,以及根据每个节点在运行时所需要的计算时长,将最小时长对应的第二切片数量确定为目标切片数量,通过确定神经网络的目标切片数量,能够为电子设备根据目标切片数量对神经网络进行切片做好准备。
电子设备根据神经网络的目标切片数量,以虚拟节点为根节点对神经网络中的每个节点的输出维度进行切片处理,得到切片后的神经网络,通过对虚拟节点进行切片,使得其他节点也能通过调度原语跟随虚拟节点切片,提高了对神经网络的切片效率,通过切片减少了神经网络在运行时对内部存储器的占用。
另外,切片后的神经网络只需要在第一个起始节点处理数据时从外部存储器中读取数据到内部存储器中,神经网络处理完数据后,虚拟节点从内部存储器中读取数据到外部存储器中,整个处理数据的流程中减少了中间节点访问外部存储器的次数,保证了神经网络处理数据的效率。
基于上述图1所示实施例的描述,电子设备可以根据虚拟节点的输出维度,确定第一切片数量,并根据每个节点在运行时所需要的存储空间的大小,从第一切片数量中确定第二切片数量,以及根据每个节点在运行时所需要的存储空间的时长,将最小时长对应的第二切片数量确定为目标切片数量。
下面,结合图4,详细介绍本申请的神经网络的切片方法的具体实现过程。
请参阅图4,图4示出了本申请一实施例提供的神经网络的切片方法的流程示意图。
如图4所示,本申请提供的神经网络的切片方法可以包括:
S201、获取虚拟节点的输出维度的最小值和最大值。
其中,虚拟节点的输出维度可以包括图像的张数N、图像的颜色通道值Chanel、图像的长度H、和图像的宽度W。
假设虚拟节点的输出维度中图像的张数N为5,那么,虚拟节点的输出维度中图像的张数N的最小值为1,最大值为5。
S202、将位于最小值与最大值之间的数值确定为多种切片方式的第一切片数量。
其中,最小值与最大值之间具有多少个数值,切片方式具有多少种,对应地。
假设虚拟节点的输出维度中图像的张数N为5,则切片方式具有4种,第一切片数量分别为1个、2个、3个、和4个。
在一些实施例中,第一切片数量的计算公式为:
S=ceiling(N/C1)。
C2=ceiling(N/S)。
如果C1等于C2才有效。
其中,ceiling表示向上取整函数,N表示输出维度的值,S表示切分后每一片的大小,C1/C2表示第一切片数量。
S203、确定每种切片方式的第一切片数量对应的每个节点在运行时所需要的存储空间的大小。
在一些实施例中,针对神经网络中的起始节点而言,按照每种切片方式的第一切片数量对起始节点进行切片处理的方式,电子设备可确定起始节点之前的节点的未释放数据量、起始节点的输入数据量、和起始节点的输出数据量。
以及,根据起始节点之前的节点的未释放数据量、起始节点的输出数据量、和起始节点的输出数据量,确定起始节点在运行时所需要的存储空间的大小。
继续结合图2,展开说明按照每种切片方式的第一切片数量对起始节点进行切片处理的方式,起始节点在运行时所需要的存储空间的大小。
针对起始节点A而言,起始节点A在运行时所需要的存储空间包括输入数据量=DM_AI,输出数据量=DM_AO,共记为DM_A=DM_AI+DM_AO,此时,起始节点A在运行时所需要的存储空间大小=DM_A。
需要理解的是,起始节点A为神经网络的第一个起始节点,在起始节点A之前没有其他节点,由此,电子设备可根据起始节点的输入数据量和起始节点的输出数据量,确定起始节点A在运行时所需要的存储空间的大小。
针对起始节点B而言,起始节点B与起始节点A计算方式类似,共记为DM_B=DM_BI+DM_BO,但此时起始节点A的输出数据量不能释放,因为分叉节点C需要使用它,因此,起始节点B在运行时所需要的存储空间大小=DM_B+DM_AO。
在一些实施例中,针对神经网络中的分叉节点和末端节点而言,电子设备按照每种切片方式的第一切片数量对分叉节点/末端节点进行切片处理的方式,确定分叉节点/末端节点之前的节点的未释放数据量和分叉节点/末端节点的输出数据量,并根据分叉节点/末端节点之前的节点的未释放数据量和分叉节点/末端节点的输出数据量,确定分叉节点/末端节点在运行时所需要的存储空间的大小。
需要说明的是,在中间节点包括分叉节点和其他节点时,电子设备可按照确定分叉节点在运行时所需要的存储空间的大小,确定其他节点在运行时所需要的存储空间的大小。
继续结合图3,展开说明按照每种切片方式的第一切片数量对分叉节点/末端节点进行切片处理的方式,分叉节点/末端节点在运行时所需要的存储空间的大小。
针对分叉节点C而言,分叉节点C的输入数据量为起始节点A与起始节点B的输出数据量,分叉节点C的输出数据量=DM_CO,起始节点A与起始节点B的输入数据量空间可以释放,此时,分叉节点C在运行时所需要的存储空间大小=DM_AO+DM_BO+DM_CO。
针对末端节点D而言,末端节点D的输入数据量为分叉节点C的输出数据量,末端节点D的输出数据=DM_DO,此时,分叉节点C的输入数据量可以释放,此时,末端节点D在运行时所需要的存储空间大小=DM_CO+DM_DO。
针对末端节点E而言,末端节点E与末端节点D的计算方式类似,末端节点E在运行时所需要的存储空间大小=DM_CO+DM_DO+DM_EO,因为此时DM_DO不能释放。
在一些实施例中,针对神经网络中的虚拟节点而言,电子设备可确定虚拟节点之前的节点的未释放数据量,并根据虚拟节点在运行之前的节点的未释放数据量,确定虚拟节点在运行时所需要的存储空间的大小。
继续结合图3,展开说明按照每种切片方式的第一切片数量对虚拟节点进行切片处理的方式,虚拟节点在运行时所需要的存储空间的大小。
针对虚拟节点F而言,虚拟节点F的输入数据量为末端节点D和末端节点E的输出数据量,虚拟节点F的输出数据量是虚拟的,不占用存储空间,此时,末端节点D和末端节点E的输入数据量可以释放,虚拟节点F在运行时所需要的存储空间大小=DM_DO+DM_EO。
S204、根据每种切片方式的第一切片数量对应的每个节点在运行时所需要的存储空间的大小、以及内部存储器的存储空间的大小,确定每种切片方式的第二切片数量。
其中,电子设备在计算完各个节点在运行所需要的存储空间大小后,每次都需要与内部存储器的存储空间的大小Q比较,如果大于内部存储器的存储空间的大小Q,则该切片方式是无效的,电子设备可终止计算后面的节点在运行所需要的存储空间大小。
由此,电子设备可统计所有的有效切分方式,将有效切分方式对应的切片数量确定为第二切片数量。
继续结合图3和S203的描述,假设虚拟节点的输出维度中图像的张数N为5,切片方式具有4种,第一切片数量分别为1个、2个、3个、4个,按照切片方式为切片数量为2个,对起始节点A进行切片处理。
起始节点A在运行时所需要的存储空间大于内部存储器的存储空间的大小Q时,该种切片方式为无效切片方式,电子设备可终止计算起始节点A后面的节点在运行所需要的存储空间大小。
起始节点A在运行时所需要的存储空间小于或者等于内部存储器的存储空间的大小Q时,该种切片方式为有效切片方式。
另外,在没有有效的切分方式时,电子设备整个多输出网络搜索失败,结束。
S205、确定每种切片方式的第二切片数量对应的每个节点处理数据所需要的时长。
基于S204的描述,电子设备可确定每种切片方式的第二切片数量,由此,电子设备能够确定每种切片方式的第二切片数量对应的每个节点处理数据所需要的时长。
从而,为将最小时长对应的第二切片数量确定为目标切片数量做好准备。
在一些实施例中,电子设备可通过芯片性能评估算法获得每种有效切分方式对应的处理数据所需的时长。
本申请可将芯片性能评估算法存储在电子设备和/或与电子设备通信的存储设备中,方便电子设备调用该芯片性能评估算法,确定每种有效切分方式对应的处理数据所需的时长。
S206、在每种切片方式的第二切片数量对应的每个节点处理数据所需要的时长中,将最小时长对应的第二切片数量确定为神经网络的目标切片数量。
继续结合图3以及S203、S204、和S205的描述,假设虚拟节点的输出维度中图像的张数N为5,切片方式具有4种,第一切片数量分别为1个、2个、3个、4个,该切片数量为2个、3个、4个时切片方式为有效切片方式,切片数量为1个时切片方式为无效切片方式。
那么,第二切片数量分别为2个、3个、4个,最小时长对应的第二切片数量为3个,则电子设备可以将3个确定为神经网络的目标切片数量。
本申请中,电子设备可获取虚拟节点的输出维度的最小值和最大值,并将位于最小值与最大值之间的数值确定为多种切片方式的第一切片数量,为从第一切片数量中确定第二切片数量,做好准备。
电子设备根据每种切片方式的第一切片数量对应的每个节点在运行时所需要的存储空间的大小、以及内部存储器的存储空间的大小,确定每种切片方式的第二切片数量,使得每个节点在运行时所需要的存储空间的大小小于或者等于内部存储器的存储空间的大小,便于每个节点在处理输入输出数据时,内部存储器可以为该节点分配足够的可用空间。
电子设备确定每种切片方式的第二切片数量对应的每个节点处理数据所需要的时长,为将最小时长对应的第二切片数量确定为目标切片数量做好准备。另外,电子设备在每种切片方式的第二切片数量对应的每个节点处理数据所需要的时长中,将最小时长对应的第二切片数量确定为神经网络的目标切片数量,可以减少整个神经网络在运行时所需要的时长,从而提高运行神经网络的芯片的性能。
基于上述描述,在得到切片后的神经网络之后,电子设备还需对神经网络中对输入输出数据进行处理的算子进行设置,以使算子可以根据切片方式对输入输出数据进行处理。
其中,每个节点包括依次设置的多个算子,便于对每个节点的输入数据进行处理。多个算子包括起始算子和结束算子。
其中,起始算子为每个节点中的第一个算子,结束算子为每个节点中的最后一个算子。
S301、针对神经网络中的起始节点而言,生成与起始节点中的起始算子关联的第一算子,以及与起始节点中的结束算子关联的第二算子。
其中,第一算子用于从外部存储器中读取输入数据到内部存储器中,以及从内部存储器中读取数据到起始节点中的起始算子中。
第二算子用于将起始节点中的结束算子产生的输出数据写入内部存储器。
继续结合图3,针对起始节点A和起始节点B而言,电子设备可生成与起始节点A和起始节点B中的起始算子关联的第一算子,便于起始节点A能够从外部存储器中读取输入数据到内部存储器中,以及从内部存储器中读取数据到起始算子中,使得起始算子能够对输入数据进行处理。
以及,起始节点B便于能够从外部存储器中读取输入数据到内部存储器中,以及从内部存储器中读取数据到起始算子中,使得起始算子能够对输入数据进行处理。
另外,电子设备还可生成与起始节点A和起始节点B中的结束算子关联的第二算子,便于起始节点A中的结束算子能够将起始节点A中的结束算子产生的输出数据写入内部存储器中,使得能够将起始节点A的输出数据存储在内部存储器中。
以及,便于起始节点B中的结束算子能够将起始节点B中的结束算子产生的输出数据写入内部存储器中,使得能够将起始节点B的输出数据存储在内部存储器中。
也就是说,起始节点A和起始节点B作为神经网络的输入端,电子设备能够通过缓存读(cache_read)原语,使得起始算子(START_BLOCK)生成搬移外部存储器DDR的数据到内部存储器DM和计算单元的block(第一算子),并通过缓存写(cache_write)原语,使得结束算子(END_BLOCK)生成搬移计算结果到内部存储器DM的block(第二算子)。
cache_read原语和cache_write原语皆为TVM中的原语。
S302、针对神经网络中的分叉节点和末端节点而言,生成与分叉节点/末端节点中的起始算子关联的第三算子,以及与分叉节点/末端节点中的结束算子关联的第四算子。
第三算子用于从内部存储器中读取输入数据到分叉节点/末端节点中的起始算子中,第四算子用于将分叉节点/末端节点中的结束算子产生的输出数据写入内部存储器。
继续结合图3,针对分叉节点和末端节点而言,电子设备可生成与分叉节点C、末端节点D、和末端节点E中的起始算子关联的第三算子,便于分叉节点C中的起始算子能够从内部存储器中读取输入数据到分叉节点C中的起始算子中,对输入数据进行处理。
以及,便于末端节点D中的起始算子能够从内部存储器中读取输入数据到末端节点D中的起始算子中,对输入数据进行处理。
以及,便于末端节点E中的起始算子能够从内部存储器中读取输入数据到末端节点E中的起始算子中,对输入数据进行处理。
另外,电子设备还可生成与分叉节点C、末端节点D、和末端节点E中的结束算子关联的第四算子,便于分叉节点C中的结束算子能够将分叉节点C中的结束算子产生的输出数据写入内部存储器。
以及,便于末端节点D中的结束算子能够将末端节点D中的结束算子产生的输出数据写入内部存储器。
以及,便于末端节点E中的结束算子能够将末端节点E中的结束算子产生的输出数据写入内部存储器。
也就是说,针对分叉节点C、末端节点D、和末端节点E而言,电子设备能够通过缓存读(cache_read)原语,使得起始算子(START_BLOCK)生成搬移内部存储器DM的数据到计算单元的block(第三算子),并通过缓存写(cache_write)原语,使得结束算子(END_BLOCK)生成搬移计算结果到内部存储器DM的block(第四算子)。
需要说明的是,在中间节点包括分叉节点和其他节点时,电子设备对中间节点中的其他节点中的算子进行设置的方式,可也参照上述电子设备对分叉节点中的算子进行设置的方式。
S303、针对神经网络中的虚拟节点而言,生成与虚拟节点中的起始算子关联的第五算子,将第五算子与切片后的虚拟节点中的输出维度关联。
第五算子用于从内部存储器中读取数据到外部存储器中。
其中,S301、S302、和S303的执行顺序不分先后,可顺序执行,也可同时执行。
基于S303,电子设备能够通过将虚拟节点中的多个算子皆与切片后的神经网络中的每个节点的输出维度关联,使得神经网络中的每个节点中的多个算子皆与切片后的神经网络中的每个节点的输出维度关联,便于每个节点中的多个算子能够参与计算切片后的神经网络中的每个节点的输出维度对应的数据。
继续结合图3,针对虚拟节点F而言,电子设备可生成与虚拟节点F中的起始算子关联的第五算子,便于虚拟节点F中的起始算子能够从内部存储器中读取数据到外部存储器中,将神经网络的输出数据存储在外部存储器。
也就是说,虚拟节点F作为神经网络的输出端,电子设备能够通过缓存读(cache_read)原语,使得起始算子(START_BLOCK)生成搬移内部存储器DM的数据到外部存储器DDR的block(第五算子)。
另外,电子设备还能够通过计算(compute_at)原语,将第五算子与切片后的虚拟节点中的输出维度关联。
其中,compute_at原语为TVM中的原语。
假设对图像的颜色通道值Channel不切片,得到切片后的n_outer、h_outer、w_outer、n_inner、Channel、h_inner、和w_inner。
那么,电子设备可将第五算子与n_outer、h_outer、w_outer、n_inner、Channel、h_inner、和w_inner皆关联。
基于上述描述,在第一算子、第二算子、第三算子、第四算子对应的节点中包括神经网络的网络参数时,电子设备对神经网络中对输入输出数据进行处理的算子进行设置的步骤还包括:
针对神经网络中的起始节点而言、分叉节点和末端节点而言,生成与起始节点的起始算子关联的第六算子,将第六算子与切片后起始节点、分叉节点和末端节点而言中的输出维度关联。
其中,第六算子用于从外部存储器中读取网络参数到内部存储器中,以及从内部存储器中读取网络参数到起始算子中。
继续结合图3,针对起始节点A和起始节点B而言,电子设备可生成与起始节点A和起始节点B的起始算子关联的第六算子,便于能够从外部存储器中读取输入网络参数到内部存储器中,以及从内部存储器中读取网络参数到起始算子A中,使得起始节点A基于该网络参数对输入数据进行处理。
以及,便于能够从外部存储器中读取输入网络参数到内部存储器中,以及从内部存储器中读取网络参数到起始算子B中,使得起始节点B基于该网络参数对输入数据进行处理。
也就是说,起始节点A和起始节点B作为神经网络的输入端,电子设备能够通过缓存读(cache_read)原语,使得起始算子(START_BLOCK)与能够搬移外部存储器DDR中的网络参数到内部存储器DM和计算单元的block(第六算子)关联。
另外,电子设备还能够通过计算(compute_at)原语,将第六算子与切片后起始节点中的输出维度关联。
需要说明的是,在中间节点包括分叉节点和其他节点时,电子设备还可将第六算子与中间节点中的其他节点中的输出维度关联。
基于上述描述,在对神经网络中的输入输出数据进行处理的算子进行设置完成后,电子设备还可执行对神经网络进行编译的步骤:
对神经网络进行编译。
在编译过程中,将位于神经网络中的虚拟节点之前的末端节点对应的输出变量添加到神经网络的计算函数输出列表中,输出变量用于指示末端节点的结果数据。
删除虚拟节点。
应理解,本申请通过在原神经网络中添加虚拟节点,使得神经网络由多输出神经网络转换为多输入单输出神经网络,打破了原神经网络的结构,导致神经网络的输出数据与原神经网络的结构不匹配,由此,电子设备可重新对神经网络进行编译。
其中,虚拟节点并非真正的输出节点,电子设备在对神经网络进行编译的过程中,不能将虚拟节点的输出变量添加到神经网络的计算函数中。
虚拟节点之前的末端节点为真正的输出节点,电子设备在对神经网络进行编译的过程中,需将虚拟节点之前的末端节点对应的输出变量添加到神经网络的计算函数中。
继续结合图3,虚拟节点F并非真正的输出节点,电子设备在对神经网络进行编译的开始阶段,可不将虚拟节点F的输出变量添加到神经网络的计算函数中。
末端节点D和末端节点E为真正的输出节点,电子设备在对神经网络进行编译的结束阶段,可将末端节点D和末端节点E对应的输出变量添加到神经网络的计算函数中,作为真正的输出变量。
另外,由于虚拟节点的存在主要作用时将神经网络由多输出神经网络转换为多输入单输出神经网络,便于对神经网络进行切片和神经网络中的每个节点进行设置,在对神经网络进行切片和神经网络中的每个节点进行设置后,电子设备可在编译的过程中,删除虚拟节点。
对应于上述图1所示实施例的一种神经网络的切片方法,本申请还提供了一种神经网络的切片装置。
下面,结合图5,对本申请一实施例提供的神经网络的切片装置进行详细说明。
请参阅图5,图5示出了本申请一实施例提供的神经网络的切片装置的示意性框图。
如图5所示,本申请一实施例提供的神经网络的切片装置500,包括添加模块501、确定模块502、和切片模块503。
添加模块501,用于在神经网络中添加虚拟节点,神经网络包括至少两个末端节点和至少一个分叉节点,虚拟节点与每个末端节点皆连接,虚拟节点用于将神经网络由多输出神经网络转换为多输入单输出神经网络;
确定模块502,用于根据虚拟节点的输出维度的大小、神经网络中的每个节点在运行时所需要的存储空间的大小和时长、以及内部存储器的存储空间的大小,确定神经网络的目标切片数量,每个节点用于表征神经网络中的一个独立计算单元,内部存储器为存储神经网络的存储器;
切片模块503,用于根据神经网络的目标切片数量,以虚拟节点为根节点对神经网络中的每个节点的输出维度进行切片处理,得到切片后的神经网络。
在一些实施例中,确定模块502,具体用于:
获取虚拟节点的输出维度的最小值和最大值;
将位于最小值与最大值之间的数值确定为多种切片方式的第一切片数量;
确定每种切片方式的第一切片数量对应的每个节点在运行时所需要的存储空间的大小;
根据每种切片方式的第一切片数量对应的每个节点在运行时所需要的存储空间的大小、以及内部存储器的存储空间的大小,确定每种切片方式的第二切片数量;
确定每种切片方式的第二切片数量对应的每个节点处理数据所需要的时长;
在每种切片方式的第二切片数量对应的每个节点处理数据所需要的时长中,将最小时长对应的第二切片数量确定为神经网络的目标切片数量。
在一些实施例中,确定模块502,具体用于:
针对神经网络中的起始节点而言,按照每种切片方式的第一切片数量对起始节点进行切片处理的方式,确定起始节点之前的节点的未释放数据量、起始节点的输入数据量、和起始节点的输出数据量;
根据起始节点之前的节点的未释放数据量、起始节点的输出数据量、和起始节点的输出数据量,确定起始节点在运行时所需要的存储空间的大小;
针对神经网络中的分叉节点和末端节点而言,按照每种切片方式的第一切片数量对分叉节点/末端节点进行切片处理的方式,确定分叉节点/末端节点之前的节点的未释放数据量和末端节点的输出数据量;
根据分叉节点/末端节点之前的节点的未释放数据量和末端节点的输出数据量,确定末端节点在运行时所需要的存储空间的大小;
针对神经网络中的虚拟节点而言,确定虚拟节点之前的节点的未释放数据量;
根据虚拟节点在运行之前的节点的未释放数据量,确定虚拟节点在运行时所需要的存储空间的大小。
在一些实施例中,每个节点包括依次设置的多个算子,多个算子包括起始算子和结束算子。
继续结合图5,神经网络的切片装置500在图5所示结构的基础上,进一步地,还包括生成模块504和编译模块505。图5中,生成模块504和编译模块505采用虚线进行表示。
在一些实施例中,生成模块504,用于:
针对神经网络中的起始节点而言,生成与起始节点中的起始算子关联的第一算子,以及与起始节点中的结束算子关联的第二算子,第一算子用于从外部存储器中读取输入数据到内部存储器中,以及从内部存储器中读取数据到起始节点中的起始算子中,第二算子用于将起始节点中的结束算子产生的输出数据写入内部存储器;
针对神经网络中的分叉节点/末端节点而言,生成与分叉节点/末端节点中的起始算子关联的第三算子,以及与分叉节点/末端节点中的结束算子关联的第四算子,第三算子用于从内部存储器中读取输入数据到分叉节点/末端节点中的起始算子中,第四算子用于将分叉节点/末端节点中的结束算子产生的输出数据写入内部存储器;
针对神经网络中的虚拟节点而言,生成与虚拟节点中的起始算子关联的第五算子,第五算子用于从内部存储器中读取数据到外部存储器中;将第五算子与切片后的虚拟节点中的输出维度关联。
在一些实施例中,生成模块504,具体用于:
生成与起始节点的起始算子关联的第六算子,第六算子用于从外部存储器中读取网络参数到内部存储器中,以及从内部存储器中读取网络参数到起始算子中。
在一些实施例中,编译模块505,用于:
对神经网络进行编译;
在编译过程中,将位于神经网络中的虚拟节点之前的末端节点对应的输出变量添加到神经网络的计算函数中,输出变量用于指示末端节点的结果数据;
删除虚拟节点。
应理解的是,本申请的神经网络的切片装置500可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现上述实施例中的神经网络的切片方法,当通过软件实现上述实施例中的神经网络的切片方法时,神经网络的切片装置500及其各个模块也可以为软件模块。
示例性地,本申请还提供了一种电子设备的结构示意图。如图6所示,电子设备的具体实现方式可参见上述电子设备的描述,能够执行上述的神经网络的切片方法。
其中,电子设备600包括处理器601、存储器602、通信接口603和总线604。其中,处理器601、存储器602、通信接口603通过总线604进行通信,也可以通过无线传输等其他手段实现通信。该存储器602用于存储指令,该处理器601用于执行该存储器602存储的指令。该存储器602存储程序代码6021,且处理器601可以调用存储器602中存储的程序代码6021执行上述实施例中的神经网络的切片方法。
应理解,在本申请中,处理器601可以是CPU,处理器601还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
该存储器602可以包括只读存储器和随机存取存储器,并向处理器601提供指令和数据。存储器602还可以包括非易失性随机存取存储器。该存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double datadate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
该总线604除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图6中将各种总线都标为总线604。
应理解,本申请的设备600可对应于本申请上述实施例中的电子设备,当电子设备600对应于上述实施例中的电子设备时,电子设备600中的各个模块的上述和其它操作和/或功能分别为了实现上述实施例中的由电子设备执行的方法的操作步骤,为了简洁,在此不再赘述。
示例性地,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
示例性地,本申请提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行时实现可实现上述各个方法实施例中的步骤。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施过程构成任何限定。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种神经网络的切片方法,其特征在于,包括:
在神经网络中添加虚拟节点,所述神经网络包括至少两个末端节点和至少一个分叉节点,所述虚拟节点与每个末端节点皆连接,所述虚拟节点用于将所述神经网络由多输出神经网络转换为单输出神经网络;
根据所述虚拟节点的输出维度的大小、所述神经网络中的每个节点在运行时所需要的存储空间的大小和时长、以及内部存储器的存储空间的大小,确定所述神经网络的目标切片数量,每个节点用于表征所述神经网络中的一个独立计算单元,所述内部存储器为运行所述神经网络的芯片的内部存储器;
根据所述神经网络的目标切片数量,以所述虚拟节点为根节点对所述神经网络中的每个节点的输出维度进行切片处理,得到切片后的所述神经网络。
2.如权利要求1所述的方法,其特征在于,所述根据所述虚拟节点的输出维度的大小、所述神经网络中的每个节点在运行时所需要的存储空间的大小和时长、以及内部存储器的存储空间的大小,确定所述神经网络的目标切片数量,包括:
获取所述虚拟节点的输出维度的最小值和最大值;
将位于所述最小值与所述最大值之间的数值确定为多种切片方式的第一切片数量;
确定每种切片方式的第一切片数量对应的每个节点在运行时所需要的存储空间的大小;
根据每种切片方式的第一切片数量对应的所述每个节点在运行时所需要的存储空间的大小、以及内部存储器的存储空间的大小,确定每种切片方式的第二切片数量;
确定每种切片方式的第二切片数量对应的每个节点处理数据所需要的时长;
在每种切片方式的第二切片数量对应的每个节点处理数据所需要的时长中,将最小时长对应的第二切片数量确定为所述神经网络的目标切片数量。
3.如权利要求2所述的方法,其特征在于,在所述神经网络还包括起始节点,且所述起始节点与所述分叉节点不为同一节点时,所述确定每种切片方式的第一切片数量对应的每个节点在运行时所需要的存储空间的大小,包括:
针对所述神经网络中的起始节点而言,按照每种切片方式的第一切片数量对所述起始节点进行切片处理的方式,确定所述起始节点之前的节点的未释放数据量、所述起始节点的输入数据量、和所述起始节点的输出数据量;
根据所述起始节点之前的节点的未释放数据量、所述起始节点的输入数据量、和所述起始节点的输出数据量,确定所述起始节点在运行时所需要的存储空间的大小;
针对所述神经网络中的分叉节点和末端节点而言,按照每种切片方式的第一切片数量对所述分叉节点/所述末端节点进行切片处理的方式,确定所述分叉节点/所述末端节点之前的节点的未释放数据量和所述末端节点的输出数据量;
根据所述分叉节点/所述末端节点之前的节点的未释放数据量和所述分叉节点/所述末端节点的输出数据量,确定所述分叉节点/所述末端节点在运行时所需要的存储空间的大小;
针对所述神经网络中的虚拟节点而言,确定所述虚拟节点之前的节点的未释放数据量;
根据所述虚拟节点在运行之前的节点的未释放数据量,确定所述虚拟节点在运行时所需要的存储空间的大小。
4.如权利要求1所述的方法,其特征在于,每个节点包括依次设置的多个算子,所述多个算子包括起始算子和结束算子;
在根据所述目标切片数量,以所述虚拟节点为根节点对所述神经网络中的全部节点中的输出维度进行切片处理,得到切片后的所述神经网络之后,所述方法还包括:
针对所述神经网络中的起始节点而言,生成与所述起始节点中的起始算子关联的第一算子,以及与所述起始节点中的结束算子关联的第二算子,所述第一算子用于从外部存储器中读取输入数据到所述内部存储器中,以及从所述内部存储器中读取数据到所述起始节点中的起始算子中,所述第二算子用于将所述起始节点中的结束算子产生的输出数据写入所述内部存储器,所述外部存储器为存储所述神经网络的待处理数据和所述神经网络的结果数据的存储器;
针对所述神经网络中的分叉节点和末端节点而言,生成与所述分叉节点和所述末端节点中的起始算子关联的第三算子,以及与所述分叉节点和所述末端节点中的所述结束算子关联的第四算子,所述第三算子用于从所述内部存储器中读取输入数据到所述分叉节点和所述末端节点中的起始算子中,所述第四算子用于将所述分叉节点和所述末端节点中的结束算子产生的输出数据写入所述内部存储器;
针对所述神经网络中的虚拟节点而言,生成与所述虚拟节点中的起始算子关联的第五算子,所述第五算子用于从所述内部存储器中读取数据到所述外部存储器中;将所述第五算子与切片后的所述虚拟节点中的输出维度关联。
5.如权利要求4所述的方法,其特征在于,在所述第一算子、所述第二算子、所述第三算子、和所述第四算子对应的节点中包括所述神经网络的网络参数时,所述方法还包括:
针对所述神经网络中的每个节点而言,生成与所述起始节点的起始算子关联的第六算子,所述第六算子用于从所述外部存储器中读取网络参数到所述内部存储器中,以及从所述内部存储器中读取所述网络参数到所述起始算子中;将所述第六算子与切片后所述起始节点中的所述输出维度关联。
6.如权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
对所述神经网络进行编译;
在编译过程中,将位于所述神经网络中的虚拟节点之前的末端节点对应的输出变量添加到所述神经网络的计算函数输出列表中,所述输出变量用于指示所述末端节点的结果数据;
删除所述虚拟节点。
7.如权利要求1-5任一项所述的方法,其特征在于,在所述神经网络用于处理图像时,所述输出维度包括图像的张数、图像的颜色通道值、图像的深度、图像的长度、和图像的宽度中的多项。
8.一种神经网络的切片装置,其特征在于,包括用于执行如权利要求1至7中任一项所述方法的模块。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211623610.8A CN116415621A (zh) | 2022-12-16 | 2022-12-16 | 神经网络的切片方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211623610.8A CN116415621A (zh) | 2022-12-16 | 2022-12-16 | 神经网络的切片方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116415621A true CN116415621A (zh) | 2023-07-11 |
Family
ID=87048621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211623610.8A Pending CN116415621A (zh) | 2022-12-16 | 2022-12-16 | 神经网络的切片方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116415621A (zh) |
-
2022
- 2022-12-16 CN CN202211623610.8A patent/CN116415621A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111709533B (zh) | 机器学习模型的分布式训练方法、装置以及计算机设备 | |
CN113994350A (zh) | 为神经网络生成并行计算方案 | |
EP4071619A1 (en) | Address generation method, related device and storage medium | |
CN115168240B (zh) | 一种基于变量组合时间序列功能覆盖率的测试方法和系统 | |
KR20210014561A (ko) | 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 | |
CN110929854B (zh) | 一种数据处理方法、装置及硬件加速器 | |
CN117435855B (zh) | 用于进行卷积运算的方法、电子设备和存储介质 | |
US20210149985A1 (en) | Method and apparatus for processing large-scale distributed matrix product | |
CN111882038A (zh) | 模型转换方法与装置 | |
CN114443559A (zh) | 可重构算子单元、处理器、计算方法、装置、设备及介质 | |
CN116227599A (zh) | 一种推理模型的优化方法、装置、电子设备及存储介质 | |
CN117273069A (zh) | 一种基于神经网络模型的推理方法、装置、设备及介质 | |
US11960866B2 (en) | Method and system for constructing compiler intermediate representations from TensorFlow graph | |
CN117149770A (zh) | 数据库的存储过程执行方法、装置以及计算机设备 | |
CN116415621A (zh) | 神经网络的切片方法、装置及电子设备 | |
CN113554164A (zh) | 神经网络模型的优化、数据处理方法及装置、存储介质 | |
EP4328748A1 (en) | Data processing method and apparatus, computer device, computer-readable storage medium, and computer program product | |
US11221851B2 (en) | Method executed by computing device, apparatus, device and computer-readable storage medium | |
CN112667241B (zh) | 机器学习指令的转换方法及装置、板卡、主板、电子设备 | |
CN110750249B (zh) | 一种快速傅里叶变换代码的生成方法及装置 | |
CN113902088A (zh) | 神经网络结构搜索的方法、装置与系统 | |
CN111340215A (zh) | 一种网络模型推理加速方法、装置、存储介质和智能设备 | |
CN112948413A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113836481B (zh) | 矩阵计算电路、方法、电子设备及计算机可读存储介质 | |
CN117093613A (zh) | 一种全量递归的Flink流处理方法、系统、电子设备及介质 |
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 |