CN114648105A - 多输出神经网络的切片方法、装置、芯片及存储介质 - Google Patents
多输出神经网络的切片方法、装置、芯片及存储介质 Download PDFInfo
- Publication number
- CN114648105A CN114648105A CN202210181249.1A CN202210181249A CN114648105A CN 114648105 A CN114648105 A CN 114648105A CN 202210181249 A CN202210181249 A CN 202210181249A CN 114648105 A CN114648105 A CN 114648105A
- Authority
- CN
- China
- Prior art keywords
- node
- slicing
- network
- output
- output 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.)
- Pending
Links
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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Analysis (AREA)
Abstract
本申请实施例适用于模型处理技术领域,提供了一种多输出神经网络的切片方法、装置、芯片及存储介质,该方法应用于智能芯片,包括:将多输出神经网络中的每个末端节点分别与其他节点进行分割,生成多个包含末端节点的网络子图;针对任一网络子图,按照预设的多种切片方式对网络子图末端节点的输出数据进行切片,得到网络子图的多种切片方案;针对网络子图的任一种切片方案,获取网络子图的处理时长,并根据处理时长确定网络子图的目标切片方案;根据每个网络子图的目标切片方案,确定多输出神经网络的切片方案。采用上述方法,可以减少多输出神经网络图在处理输入数据时,访问外部存储器的次数。
Description
技术领域
本申请属于模型处理技术领域,尤其涉及一种多输出神经网络的切片方法、装置、芯片及存储介质。
背景技术
神经网络编译框架(Tensor Virtual Machine,TVM)是对不同的神经网络框架和硬件平台实现统一的软件栈,可以将不同框架下的神经网络均部署在硬件平台上。
通常,神经网络是在智能芯片中对输入数据进行处理,得到输出数据。但是,智能芯片内部的可用空间往往比较小,对于需要大量的存储空间对数据进行处理的神经网络而言,智能芯片内部的可用空间是远远不够的。因此,在进行数据处理的过程中,针对神经网络中包含的任一节点,经常需要将该节点的输出数据先存储在外部存储器中。然后,将存储空间此时存储的节点的输入数据以及产生的输出数据先进行删除。最后,再从外部存储器中获取该节点的输出数据,并作为下一节点的输入数据,完成对数据的处理。
因此,为了降低神经网络对数据处理时所需的可用空间,需要对神经网络先进行图切分,得到网络子图。之后,再对切分后的网络子图进行切片,以使网络子图根据切片的方式对数据进行处理时,网络子图中每个节点所需的可用空间将减少,以此可将每个节点产生的输出数据存储在内部的存储空间中,减少与外部存储器的访问次数。
然而,采用上述切片方式对网络子图进行切片时,当前TVM的调度原语无法支持将分叉节点的输出数据,同时给到多个网络子图中进行处理。以至于现有技术中,没有合理的切片方式对多输出神经网络的网络子图进行切片的切片方案,使得现有的多输出神经网络在处理数据时,分叉节点的输出数据还是需要存储在外部存储器中,无法减少与外部存储器的访问次数。
发明内容
本申请实施例提供了一种多输出神经网络图的切片方法、装置、智能芯片及存储介质,可以解决现有的多输出神经网络图在处理输入数据时,需要频繁的访问外部存储器的问题。
第一方面,本申请实施例提供了一种多输出神经网络的切片方法,方法应用于智能芯片,该方法包括:
将多输出神经网络中的每个末端节点分别与其他节点进行分割,生成多个包含末端节点的网络子图;多输出神经网络包括至少两个末端节点以及至少一个分叉节点;
针对任一网络子图,按照预设的多种切片方式对网络子图末端节点的输出数据的输出数据量进行切片,得到网络子图的多种切片方案;
针对网络子图的任一种切片方案,获取网络子图的处理时长,并根据处理时长确定网络子图的目标切片方案;
根据每个网络子图的目标切片方案,确定多输出神经网络的切片方案。
第二方面,本申请实施例提供了一种多输出神经网络的切片装置,应用于智能芯片,该装置包括:
分割模块,用于将多输出神经网络中的每个末端节点分别与其他节点进行分割,生成多个包含末端节点的网络子图;多输出神经网络包括至少两个末端节点以及至少一个分叉节点;
切片模块,用于针对任一网络子图,按照预设的多种切片方式对网络子图末端节点的输出数据的输出数据量进行切片,得到网络子图的多种切片方案;
处理时长获取模块,用于针对网络子图的任一种切片方案,获取网络子图的处理时长,并根据处理时长确定网络子图的目标切片方案;
切片方案确定模块,用于根据每个网络子图的目标切片方案,确定多输出神经网络的切片方案。
第三方面,本申请实施例提供了一种智能芯片,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述第一方面的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述第一方面的方法。
本申请实施例与现有技术相比存在的有益效果是:通过将多输出神经网络以多输出神经网络图的形式进行表征,而后,对于多输出神经网络图中的每个末端节点,分别将末端节点与其他节点进行分割,得到每个节点分别对应的网络子图。之后,在每个网络子图中,按照预设的多种切片方式对每个网络子图的末端节点的输出数据进行切片,以控制每个网络子图在处理数据时的输入输出数据量,得到多种切片方案。之后,根据网络子图处理数据时的处理时长,确定网络子图的目标切片方案。最后,以此得到多输出神经网络整体的切片方案。以此,在多输出神经网络对数据进行处理时,根据多输出神经网络的切片方案对输入输出数据进行处理,使得节点之间的输出数据可以存储在智能芯片的可用空间中,进而,每个节点在处理数据时均可以直接从可用空间中获取数据,以降低智能芯片访问外部存储器的访问次数。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的一种多输出神经网络的切片方法的实现流程图;
图2是本申请一实施例提供的一种多输出神经网络的切片方法中多输出神经网络图以及多输出神经网络图的结构示意图;
图3是本申请一实施例提供的一种多输出神经网络的切片方法的S101的一种实现方式示意图;
图4是本申请另一实施例提供的一种多输出神经网络的切片方法的实现流程图;
图5是本申请一实施例提供的一种智能芯片中单输出神经网络处理输入数据的一种处理场景示意图;
图6是本申请一实施例提供的一种智能芯片中多输出神经网络图处理输入数据的一种处理场景示意图;
图7是本申请一实施例提供的一种多输出神经网络图的切片装置的结构示意图;
图8是本申请一实施例提供的一种智能芯片的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本申请实施例提供的多输出神经网络的切片方法可以应用于智芯片上。其中,智能芯片为加载多输出神经网络图中各个模型参数,并根据各个节点下的模型参数对输入至每个节点下的输入数据进行处理的芯片。其中,由于多输出神经网络图单个节点计算后的输出数据通常较大,无法存放于智能芯片的内部存储器中,需要将输出数据导到外部存储器中。因此,需要通过访问外部存储器来保存多输出神经网络图下的单个节点的输出数据。并且,由于神经网络中节点的数量也具有多个,基于此,在智能芯片对每个节点的输入数据进行神经网络的计算处理时,智能芯片需要频繁的访问外部存储器。
其中,上述智能芯片包括但不限于中央处理器、图形处理器、神经网络处理器等。上述内部存储器为智能芯片的片内存储器。上述外部存储器可以为双倍速率同步动态随机存储器。通常外部存储器的存储空间远大于片内存储器的存储空间。
基于此,请参阅图1,图1示出了本申请实施例提供的一种多输出神经网络的切片方法的实现流程图,可以对多输出神经网络中的节点进行合并,使合并后的多输出神经网络在处理数据时可以减少对外部存储器的访问次数,该方法包括如下步骤:
S101、智能芯片将多输出神经网络中的每个末端节点分别与其他节点进行分割,生成多个包含末端节点的网络子图;多输出神经网络包括至少两个末端节点以及至少一个分叉节点。
在一实施例中,上述多输出神经网络可以用一个多输出神经网络图进行表征。示例性的,以图2为例,图2为一个简易的多输出神经网络图。其中,该多输出神经网络图中包括多个节点,每个节点用于表征多输出神经网络中的一个可以在智能芯片上独立计算的单元。多输出神经网络图中的箭头用于表征每个节点之间输出数据的传输方向。
示例性的,参照图2,图2X为多输出神经网络的结构示意图,图2Y为多输出神经网络分割后的网络子图的参考示意图。对应的,从图2可以看出,多输出神经网络图包括7个节点。其中,3、5、7分别为输出节点(也即末端节点),1、2为分叉节点,4、6为普通节点。
需要说明的是,在本实施例中,上述方法用于对多输出神经网络图进行分割,因此,多个节点中最少包括两个末端节点,以及一个分叉节点。在本实施例中,对末端节点和分叉节点的数量不作限制。
在一实施例中,一个分割后的网络子图包括一个末端节点,因此,分割后的网络子图至少包括两个。其中,将末端节点与其他节点进行分割,具体可以为:智能芯片根据多输出神经网络图中各个节点之间的数据传输关系,采用后序遍历方法收集每个末端节点分别需要的其他节点,并进行分割,得到对应的网络子图。
S102、智能芯片根据针对任一网络子图,按照预设的多种切片方式对网络子图末端节点的输出数据进行切片,得到网络子图的多种切片方案。
在应用中,上述切片方式具体为对末端节点的输出数据的输出数据量进行切片的方式。其中,对输出数据量进行切片后,可以确定末端节点每次输出数据时的输出数据量大小。基于该输出数据量大小,网络子图可以确定每次处理输入数据时的输入数据量大小,以此可以使智能芯片可以为每个节点分配足够的可用空间处理输入输出数据。
其中,末端节点可以输出任意维度大小的输出数据,因此,在对末端节点的输出数据进行切片时,也将对应有多种切片方案,对此不作限定。
示例性的,多输出神经网络所处理的数据通常为图像数据,因此,将输出数据以图像数据为例进行说明。
在一具体实施例中,图像数据的信息通常以N、C、H、W进行表示。具体的,N表示输入的图像数据的张数;H表示图像数据在竖直方向的像素;W表示图像数据在水平方向的像素,C表示通道数。通常的,若直接将整张图像数据输入至节点中进行处理,则输出数据的输出数据量将非常大。因此,为了能够减小节点每次处理图像数据的数据量。智能芯片可以将该节点下的输出数据进行切片,以将低网络子图中末端节点以及其他节点处理输入数据时的输入数据量大小,以及输出数据时的输出数据量大小。
示例性的,在对末端节点的输出数据进行切片时,以H轴进行切片,使每次节点处理的数据的大小为N、C、1/2H、W的大小。因此,节点可以只获取一半图像大小的数据,作为节点的输入数据。并且,因一次只对一半图像大小的数据进行处理,则最后末端节点先输出的也是一半图像大小的输出数据。之后,智能芯片可以先将该一半图像大小的输出数据存储在内部存储器中,如果是末端节点则一并输出到外部存储器;而后,从内部存储器中删除该叉节点已处理的一半图像大小的数据(因无需被使用,也即可以释放已处理的输入数据);之后,再次对另一半图像大小的数据进行处理,直至得到另一半图像大小的输出数据,并进行保存。基于此,该节点最终在生成整体输出数据的过程中,内部存储器只需要使用一半图像大小的存储空间进行存储。若节点直接对整个图像的输入数据进行处理,则智能芯片需要为节点分配整体图像数据输入时所需的存储空间,以及生成整体图像的输出数据时所需的存储空间。
基于此,在一实施例中,对末端节点输出数据进行切片的多种方式包括但不限于对C、H、W分别进行切片。也即上述示例仅为其中的一种对H轴进行切片的方式。
具体的,对数据进行切片的方式可以为:智能芯片获取末端节点可输出的输出数据的最小维度,以及可输出的输出数据的最大维度;智能芯片在最小维度与最大维度之间,将任一维度的可输出数据,确定为末端节点的输出数据进行切片的一种切片方式。
上述最小维度为末端节点和非分叉节点所能够输出的图像数据的最小维度,上述最大维度为末端节点和非分叉节点所能输出的图像数据的最大维度。每一种维度的图像数据作为一种可输出的输出数据,即为对末端节点与非分叉节点进行切片的一种切片方式。
其中,末端节点可输出的图像数据的最小维度通常为1个像素,可输出的图像数据的最大维度通常为整张图像数据的维度。
示例性的,在张数N为1、通道数C也为1时,若图像数据在竖直方向上的像素H具有A种切片方式,即以[1,A]之间的任一维度对图像数据进行竖直方向上的切片;以及,图像数据在水平方向上的像素W具有B种切片方式,即以[1,B]之间的任一维度对图像数据进行竖直方向上的切片,则最终对末端节点的输出数据进行切片的一种切片方式将具有A*B种。在其他实施例中,通道数C也可以为多个,例如3个。因此,在对图像数据进行切分时,也可以对通道数进行切分。基于此,可以得到网络子图中的多种切片方式,使智能芯片能够具有更多的切片方案进行选择。
S103、针对网络子图的任一种切片方案,智能芯片获取网络子图的处理时长,并根据处理时长确定网络子图的目标切片方案。
在应用中,每种切片方案下,网络子图处理输入数据时的输入数据量大小均是不同。因此,每种切片方案下,网络子图处理输入数据的处理时长也通常各不相同。基于此,对于任一网络子图分别对应的多种切片方案,智能芯片可以将处理时长最短的切片方案确定为该网络子图的目标切片方案,以提升网络子图处理输入输出数据时的效率。
示例性的,参照图2,对于多输出神经网络分割后的网络子图,智能芯片可以统计图A所有的有效切片方案,并通过芯片costmodel获得最优即cycle最低,耗时最短的切片方案作为末端节点3的目标切片方案;以及,统计图B所有的有效切片方案,并通过芯片costmodel获得最优即cycle最低,耗时最短的切片方案作为末端节点5的目标切片方案;以及,统计图C所有的有效切片方案,并通过芯片costmodel获得最优即cycle最低,耗时最短的切片方案作为末端节点7的目标切片方案。
S104、智能芯片根据每个网络子图的目标切片方案,确定多输出神经网络的切片方案。
可以理解的是,在得到每个网络子图分别一一对应的目标切片方案后,每个目标切片方案即为多输出神经网络整体的切片方案,。
在本实施例中,通过将多输出神经网络以多输出神经网络图的形式进行表征,而后,对于多输出神经网络图中的每个末端节点,分别将末端节点与其他节点进行分割,得到每个节点分别对应的网络子图。之后,在每个网络子图中,按照预设的多种切片方式对每个网络子图的末端节点的输出数据进行切片,以控制每个网络子图在处理数据时的输入输出数据量,得到多种切片方案。之后,根据网络子图处理数据时的处理时长,确定网络子图的目标切片方案。最后,以此得到多输出神经网络整体的切片方案。以此,在多输出神经网络对数据进行处理时,根据多输出神经网络的切片方案对输入输出数据进行处理,使得节点之间的输出数据可以存储在智能芯片的可用空间中,进而,每个节点在处理数据时均可以直接从可用空间中获取数据,以降低智能芯片访问外部存储器的访问次数。
请参阅图3,图3是本申请一实施例提供的一种多输出神经网络的切片方法的S101的一种实现方式示意图,详述如下;
S1、智能芯片将末端节点作为第一当前节点。
在一实施例中,上述第一当前节点为当前被处理的节点。在本实施例中,因对多输出神经网络图采用后续遍历法进行处理,因此,第一个被处理的末端节点即为第一当前节点。
S2、若第一当前节点的父节点属于分叉节点,则智能芯片判断分叉节点是否已被其他末端节点对应的网络子图进行分割。
S3、若判定分叉节点已被其他末端节点对应的网络子图进行分割,则智能芯片将第一当前节点与父节点之间的各个节点进行分割,生成包含末端节点的网络子图。
S4、若判定分叉节点未被其他末端节点对应的网络子图进行分割,或若父节点属于非分叉节点,则智能芯片将父节点确定为新的第一当前节点,重复执行S2-S4,直至生成包含末端节点的网络子图。
在一实施例中,以图2为示例,在第一当前节点为末端节点3时,根据多输出神经网络图中各个节点之间的数据传输关系可知,父节点为分叉节点2。并且分叉节点2此时未被其他末端节点对应的网络子图进行分割。因此,基于S3步骤可知,可以将分叉节点2作为新的第一当前节点,重复执行S2-S4步骤,直至生成包含末端节点3的网络子图。
其中,生成包含3的网络子图的情况可以为步骤2的情况,也可以为新的第一当前节点在多输出神经网络图中没有父节点。此时,智能芯片即可结束结束对末端节点3的分割。示例性的,在对末端节点3进行分割时,若新的第一当前节点为节点1时,因节点1为多输出神经网络图的起始节点,其并没有父节点。因此,包含末端节点3的网络分割到此结束,得到包含节点1、2、3的网络子图。
之后,在对末端节点5进行分割时,初始的第一当前节点为末端节点5,其父节点为非分叉节点4。因此,基于S4步骤可知,智能芯片之后可以将非分叉节点4作为新的第一当前节点。此时,新的第一当前节点4的上一节点(也即新的父节点)为分叉节点2。然而,基于上述说明可知,分叉节点2已被末端节点3对应的网络子图进行分割。因此,智能芯片将结束对末端节点5的分割,将末端节点5以及末端节点5与新的父节点2之间的各个节点(图2中只有节点4)进行分割,生成包含末端节点5的网络子图。
其中,对末端节点7的分割方式与末端节点5的分割方式相似,对此不再进行说明。需要说明的时,上述示例仅是以末端节点3为第一个被处理的末端节点,在其他实施例中,也可以分别将末端节点5和7分别作为第一个被处理的末端节点,对此不做限定。
基于此,在本实施例中,通过后续遍历法依次对每个末端节点以及其他节点进行分割,可以准确且快速的生成每个末端节点对应的网络子图,提高智能芯片对多输出神经网络图进行分割的效率。
需要说明的是,每个网络子图分别包括多输出神经网络图中的部分节点。另外,对多输出神经网络图进行切片仅为调整多输出神经网络图中各节点处理的输入输出数据大小,并不是将多输出神经网络图分为多个部分。
在另一实施例中,在执行上述S102步骤时,每个网络子图通常将会有多种切片方案,然而,后续在执行S103步骤时,若智能芯片统计每种切片方案下网络子图对应的处理时长,则将耗费大量的时间。基于此,在执行S103之前,智能芯片还可以预先判断切片方案是否为有效切片方案,并在切片方案为有效切片方案时,再执行获取网络子图的处理时长的步骤,以减少智能芯片所需的时间。
请参阅图4,图4是本申请一实施例提供的一种多输出神经网络的切片方法中,判断切片方案是否为有效切片方案的一种实现方式示意图,详述如下:
S41、智能芯片根据切片后的末端节点的输出数据的输出数据量,分别逆推每个节点的输入数据和输出数据。
在应用中,在对末端节点的输出数据的输出数据量进行切片后,可以限定末端节点每次输出数据的大小,以此,根据末端节点中的计算参数和计算公式,智能芯片可以逆推末端节点每次输入数据的大小。之后,因末端节点的输入数据为上一节点的输出数据,因此,智能芯片可以逆推出每个节点的输入数据和输出数据。
S42、针对任一节点,智能芯片确定该节点的之前节点的目标输出数据。
S43、智能芯片根据目标输出数据、该节点的输入数据和输出数据,确定该节点执行时的占用空间。
在一实施例中,上述之前节点为多输出神经网络中处于该节点之前的节点,其可以根据各个节点之间的数据传输关系进行确定。
在应用中,节点的输入数据为上一节点的输出数据,因此,为了确定切片方案是否为了有效切片方案,智能芯片可以将网络子图在处理输入输出数据时,每个节点无需从外部存储器中获取输入数据的切片方案,确定为有效切片方案。
然而,若网络子图在处理输入输出数据时,每个节点无需从外部存储器中获取输入数据,则表明该切片方案下,每个节点在处理输入输出数据时,智能芯片的内部存储器可以为该节点分配足够的可用空间。基于此,针对任一网络子图的任一节点,智能芯片均需要计算节点在处理输入输出数据时所需的占用空间。
在一具体实施例中,智能芯片具体可以根据如下方式确定占用空间:确定该节点之前的所有分叉节点及每个分叉节点的输出数据;判断每个分叉节点的输出数据是否可释放,并将不可释放的所有分叉节点的输出数据作为目标输出数据。
以及,智能芯片可以通过如下方式判断分叉节点的输出数据是否可释放:若该分叉节点的输出数据还用于被其他网络子图使用,则判定分叉节点的输出数据不可释放;否则,判定分叉节点的输出数据可释放。
在一实施例中,为了减少与外部存储器的交互次数,每个芯片在产生输出数据时通常需要将输出数据存储在内部存储器中,以便可以被下一节点调用。因非分叉节点的输出数据即为下一节点的输入数据,因此,在计算任一节点的占用空间时,只需将该节点的输出数据的输出数据量以及输入数据的输入数据量之和,确定为该节点所需的占用空间即可。即此时并未存在目标输出数据。
然而,若该节点之前还具有分叉节点,且分叉节点的输出数据还需被其他网络子图使用。也即,分叉节点的输出数据需要一直存储在内部存储器中。因此,在计算该节点的所需的占用空间时,还需将不可释放的分叉节点的输出数据的输出数据量进行加和,得到该节点所需的占用空间。即此时均未被释放的分叉节点的输出数据即为目标输出数据。其中,判断分叉节点的输出数据是否可释放的目的在于:在判断该输出数据可释放时,从内部存储器中删除该输出数据,以尽可能的增加内部存储器为下一节点分配的可用空间,使下一节点无需将输出数据存储至外部存储器,减少与外部存储器的交互次数。
S44、若任一节点的占用空间均小于智能芯片为对应节点分配的可用空间,则智能芯片将切片方案确定为有效切片方案。
在应用中,在节点处理输入输出数据时所需的占用空间小于智能芯片为对应节点分配的可用空间时,则表明智能芯片的内部存储器可以有足够的空间存储节点所需的输入数据,同时可以存储该节点产生的输出数据。
在应用中,上述可用空间可以为智能芯片内部存储器的总空间,也可以为内部存储器在存储完该节点处理数据时的计算参数后剩于的空间,对此不作限定。
可以理解的是,采用有效切片方案对末端节点的输出数据进行切片的优势在于:降低节点每次处理输入数据的输入数据量以及产生的输出数据的输出数据量,以此使得每个节点在处理输入输出数据时所需的占用空间减少。进而,使智能芯片可以将每个节点产生的输出数据存储在内部存储器,以减少与外部存储器的交互次数。
示例性的,假设智能芯片的内部存储器的空间大小为Q。其中,Q为除去该节点的计算参数在内部存储器中的占用空间后,内部存储器还剩余的空间。其中,每个非分叉节点中处理数据时所需占用的空间通常包括:该节点的输入数据以及输出数据所占用的空间。以下结合图2进行具体说明:
针对任意一种切片方案,分别得到在该方案下的每个节点的输入数据以及输出数据。参照图2,对于网络子图A(由末端节点3、分叉节点1和分叉节点2组成的子图),对末端节点3的输出数据进行切片处理,需要内部存储器的空间为输入数据=Q3a,输出数据=Q3b,共记为Q3=Q3a+Q3b。分叉节点2的输出数据不能释放和切片,因此,需要内部存储器的空间为输入数据=Q2a,输出数据=Q2b,共记为Q2=Q2a+Q2b。分叉节点1的输出数据也不能释放和切片,需要内部存储器的空间为输入数据=Q1a,输出数据=Q1b,共记为Q1=Q1a+Q1b。其中分叉节点1和2的输出数据不能释放和切片的原因在于:其分叉节点1和2的输出数据均需要重用(图A和图C都有节点需要分叉节点1的输出数据,图A和图B都有节点需要分叉节点2的输出数据)。
其中,需要说明的是,对于多输出神经网络中的每个节点,在任一节点根据输出数据进行逆推处理时,产生输入数据的瞬间,该节点是同时包含了输入数据和输出数据。因此,该多输出神经网络中的每个节点需要符合最基本的要求为:满足节点在生成输入数据的时刻,输入的输入数据量与输出的输出数据量之和,小于或等于智能芯片为节点分配的可用空间。
因此,计算分叉节点1需要的内部存储器的空间时,需要满足Q1<Q,则计算分叉节点2所需的占用空间,否则该切片方案无效。但是,由于分叉节点2的输入数据就是分叉节点1的输出数据,并且,在实际处理过程中,在分叉节点1基于输入数据计算出输出数据后,输入数据便不用存储在内部存储器中。此时内部存储器中存储的仅为分叉节点1的输出数据。并且,因分叉节点2的输入数据,即为分叉节点1的输出数据。因此,在计算分叉节点2所需的占用空间时,由于分叉节点1的输入数据已经删除,且分叉节点1的输出数据即为分叉节点2的输入数据。基于此,在计算分叉节点2所需的占用空间时,只要满足Q2<Q时,则计算末端节点3,否则该切片方式无效。在计算末端节点3所需的占用空间时,末端节点3的输入数据是分叉节点2的输出数据,且分叉节点1的输出数据还需被其他节点使用(图C中的节点6要使用)。因此,在计算末端节点3所需的占用空间时,需要满足Q3+Q1b才可。如果Q3+Q1b<Q,则该切片方案有效,否则该切片方案是无效的。
图A切片完后,由于分叉节点1和分叉节点2的输出数据Q1b和Q2b会被图B和C引用,所以不能释放。
图B为包含末端节点5和非分叉节点4的网络子图。其中,对非分叉节点4,其需要的内部存储器的空间为非分叉节点4的输入数据=Q4a,输出数据=Q4b,记为Q4=Q4a+Q4b。但是,在进行图A切片时,分叉节点1的Q1b和分叉节点2的Q2b没有释放,以及分叉节点的输出数据Q2b,包含非分叉节点4的输入数据Q4a。因此,非分叉节点4在对输入数据进行处理时所需的占用空间为:Q4b+Q1b+Q2b<Q时,才可计算末端节点5,否则对末端节点5的切片方案无效。在计算末端节点5时,由于末端节点5的输入数据就是非分叉节点4的输出数据,且此时非分叉节点4的输入数据Q4a(也即Q2b)可以释放(图C不需要使用)。因此,末端节点5所需的第二占用空间需满足Q5+Q1b(分叉节点1的输出数据还需被图C需要使用,没有释放)。如果Q5+Q1b<Q,则该切片方式有效,否则该切片方式无效。
同理:图B切片完后,分叉节点2的输出数据Q2b已经释放,但分叉节点1的输出Q1b由于图C仍需要使用,所以仍不能释放。在对图C进行切片时,还需使用Q1b。其中,使用图C中,判断每个节点所需的占用空间是否满足智能芯片的可用空间,具体与上述类似,对此不再进行解释。
需要说明是,多个网络子图中,如果具有任一网络子图不存在有效切片方案,则表明整个多输出神经网络切片失败。另外上述输出数据为确定切片方案是否为有效切片方案时的数据,是从输出到输入的一个逆推过程;在逆推结束后,若逆推过程中以X切片方案对输出数据进行切片时,智能芯片能够为每个节点分配足够的可用空间。那么,在多输出神经网络以相同的切片方式,限定节点处理输入数据的输入数据量大小时,智能芯片也应当可以为每个节点分配足够的可用空间存储各个节点产生的输出数据。
在另一实施例中,在确定出多输出神经网络的切片方案后,还需对多输出神经网络中对输入输出数据进行处理的算子进行设置,以使算子可以根据切片方案对输入输出数据进行处理。
具体的,每个节点分别包括多个对输入数据和/或输出数据进行处理的算子,并且每个算子需要调用相应的调度语句进行实现。其中,多输出神经网络的切片方法还包括:
针对多输出神经网络图中的任一节点,智能芯片获取多个算子中最先对节点的输入数据进行处理的起始算子,以及最后对节点的输出数据进行处理的结束算子。
若节点为末端节点,则智能芯片在运行起始算子时,调用执行第一操作的第一调度语句;以及,在运行结束算子时,调用执行第二操作的第二调度语句,以及执行第三操作的第三调度语句;第一操作用于从智能芯片的可用空间中读取输入数据至起始算子;第二操作用于将结束算子产生的输出数据写入内部存储器;以及,第三操作用于将末端节点的结束算子产生的输出数据写入外部存储器中。
若节点为多输出神经网络中的起始节点,则智能芯片在运行起始节点的起始算子时,调用执行第四操作的第四调度语句以及第一调度语句;以及,在运行起始节点的结束算子时,调用第二调度语句;第四调度语句用于从外部存储器中读取输入数据至起始节点的起始算子。
若节点为中间节点,则智能芯片在运行中间节点内的起始算子时,均调用第一调度语句;以及,在运行中间节点内的结束算子时均调用第二调度语句。
在一实施例中,节点为多输出神经网络图中的最小处理单元,其内部包含有对输入数据的计算公式。其中,一个节点通常包含大量的算子以对输入数据进行处理。
其中,在节点包括多个算子时,以节点中第一个对输入数据进行处理的算子为起始算子,以及以最后一个产生输出数据的算子为结束算子。
在一实施例中,上述第一操作具体可以为起始算子进行处理的操作。具体的,第一操作用于读取该节点中起始算子所需要的输入数据。此时,在节点不为多输出神经网络的起始节点时,第一操作即为从内部存储器读取起始算子所需要的输入数据的操作。如果为起始节点,则需要执行从外部存储器读取所需输入数据的第四操作;并且在读取输入数据时,需先将输入数据存储在内部存储器中,而后,再从内部存储器中读取输入数据。
在一实施例中,上述第二操作用于将结束算子的输出数据写入可用空间。可以理解的是,若节点属于末端节点,则结束算子产生的输出数据不仅需要写入内部存储器中,还需执行将输出数据写入外部存储器中的第三操作。然而,对于中间节点(非起始节点和末端节点),只需执行将结束算子产生的输出数据写入内部存储器的可用空间中的第二操作,以及执行从内部存储器的可用空间中读取输入数据的第一操作。
其中,参照图2,起始节点为图2中的分叉节点1;末端节点为图2中的节点3、5、7;中间节点为图2中的节点2、4、6。
需要说明的是,在对每个算子生成调度语句时,其可以将一个节点内多个算子进行融合,使同一个节点内的多个算子组合在一起放到同一个核中。以此,智能芯片可以通过算子融合的方式,不将分叉节点的数据搬移至外部存储器,可以有效减少数据搬运次数,节省智能芯片的处理时间。
示例性的,采用后序访问方式对图A、B、C按照搜索出的最优切片方式分别schedule。假设将每个子节点最后一个算子(compute_op)记为结束算子(END_OP),第一个算子(compute_op)记为起始算子(START_OP)。以下结合图2进行具体说明:
图A中:以末端节点3的END_OP为第一根节点1,对N、C、H、W轴调用split原语进行切片。通过cache_write(存储写操作)END_OP生成搬移输出数据到DM(内部存储器)和DDR(外部存储器)的compute_op。通过cache_read(存储读操作)START_OP生成搬移DM数据到计算单元的compute_op。如果compute_op中含有参数则还需要cache_read生成搬移DDR数据到DM和计算单元的compute_op,并将所有的compute_op通过compute_at移动到根节点1对应的轴。
获取分叉节点2的输出数据,将分叉节点2的END_OP设置为第二根节点2,通过cache_write END_OP生成搬移输出数据到DM的compute_op。cache_read START_OP生成搬移DM数据到计算单元的compute_op。如果compute_op中含有参数则还需要cache_read生成搬移DDR数据到DM和计算单元的compute_op,并将所有的compute_op通过compute_at移动到根节点2对应的轴。
分叉节点1采用同分叉节点2类似的方式,将分叉节点1的END_OP设置为第二根节点3,由于分叉节点1是多输出神经网络的第一节点,cache_read START_OP需要生成搬移DDR数据到DM和计算单元的compute_op。
图B中:输出节点5的END_OP为第一根节点4对N、C、H、W轴调用split原语进行切片。通过cache_write END_OP生成搬移输出数据到DM和DDR的compute_op。cache_read START_OP生成搬移DM数据到计算单元的compute_op,compute_op中所需的参数还需要cache_read生成搬移DDR数据到DM和计算单元的compute_op,并将所有的compute_op通过compute_at移动到第一根节点4对应的轴。
节点4通过cache_write END_OP生成搬移输出数据到DM的compute_op。cache_read START_OP生成搬移DM数据到计算单元的compute_op。如果compute_op中所需的参数还需要cache_read生成搬移DDR数据到DM和计算单元的compute_op,并将所有的compute_op通过compute_at移动到第一根节点4对应的轴。
图C中:输出节点7的END_OP为第一根节点5,对N、C、H、W轴调用split原语进行切片。通过cache_write END_OP生成搬移输出数据到DM和DDR的compute_op。cache_readSTART_OP生成搬移DM数据到计算单元的compute_op。如果compute_op中所需的参数还需要cache_read生成搬移DDR数据到DM和计算单元的compute_op,并将所有的compute_op通过compute_at移动到第一根节点5对应的轴。
节点6通过cache_write END_OP生成搬移输出数据到DM的compute_op,cache_read START_OP生成搬移DM数据到计算单元的compute_op。如果compute_op中所需的参数还需要cache_read生成搬移DDR数据到DM和计算单元的compute_op,并将所有的compute_op通过compute_at移动到第一根节点5对应的轴。
需要说明的是,split,cache_write,cache_read,compute_at等都是TVM的调度原语,上述步骤主要为针对输入数据和输出数据的处理流程和读写流程进行改进的步骤。即采用上述方法可以减少智能芯片从外部存储器中读取输入数据的次数。但是每个算子在运行时,可能还需要从外部存储器搬移其他计算参数,以对输入数据进行处理。然而,搬移计算参数是需要访问外部存储器的。也即本申请中所描述多输出神经网络图的切片方法,只是可以降低多输出神经网络图从外部存储器访问输入数据的次数。
在一实施例中,参照图5,图5为智能芯片中单输出神经网络处理输入数据的一种处理场景示意图。Step1:智能芯片从外部存储器中获取单输出神经网络的输入数据,并存储在内部存储器中;Step2:智能芯片从内部存储器中读取输入数据,并采用计算单元A中的模型参数进行处理得到输出数据,而后将输出数据存放至外部存储器中。Step3:智能芯片清空节点A的输出数据和输入数据;Step4:从外部存储器中再次读取输入数据,并采用计算单元B中的模型参数进行处理得到输出数据;Step5:将B节点的输出数据存放至外部存储器中。从图6可以看出,对于单输出的神经网络模型而言,在对每个节点中的输入数据进行处理时,均需执行访问外部存储器的操作。
然而,对于多输出神经网络而言,图6为智能芯片中多输出神经网络处理输入数据的一种处理场景示意图。其中,本示例仅以节点1、2、3、4、5生成的多输出神经网络进行解释。具体的:Step1:智能芯片从外部存储器中获取多输出神经网络的输入数据,并存储在内部存储器中。Step2:对于节点2,智能芯片可以直接从内部存储器中读取输入数据,并对内部存储器中节点1的输出数据进行删除;之后,将节点2的输出数据存储在内部存储器中;同时,基于上述网络子图的分割操作可知,即使将节点2的输出数据存储在内部存储器中,内部存储器部署其余节点的模型参数的占用空间和生成的输出数据的占用空间之和,也将小于内部存储器的可用空间。因此,节点4以及末端节点3可以直接从内部存储器中获取节点2的输出数据,而后节点4将产生的输出数据也放入内部存储器中,以被末端节点5进行读取并处理;之后,智能芯片执行Step3和Step4:将末端节点3和末端节点5分别生成的输出数据存放至外部存储器中。
从图6可以看出,对于多输出神经网络而言,各个网络子图中的每个节点之间均是通过对内部存储器中存放的数据进行读写,以实现数据交互。以此,可以只需对多输出神经网络的起始节点和输出节点执行一次访问外部存储器的操作。
请参阅图7,图7是本申请实施例提供的一种多输出神经网络的切片装置的结构框图。本实施例中多输出神经网络的切片装置包括的各模块用于执行图1、图3至图4对应的实施例中的各步骤。具体请参阅图1、图3至图4以及图1、图3至图4所对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。参见图7,多输出神经网络图的切片装置700可以包括:分割模块710、切片模块720、处理时长获取模块730以及切片方案确定模块740,其中:
分割模块710,用于将多输出神经网络中的每个末端节点分别与其他节点进行分割,生成多个包含末端节点的网络子图;多输出神经网络包括至少两个末端节点以及至少一个分叉节点。
切片模块720,用于针对任一网络子图,按照预设的多种切片方式对网络子图末端节点的输出数据的输出数据量进行切片,得到网络子图的多种切片方案。
处理时长获取模块730,用于针对网络子图的任一种切片方案,获取网络子图的处理时长,并根据处理时长确定网络子图的目标切片方案。
切片方案确定模块740,用于根据每个网络子图的目标切片方案,确定多输出神经网络的切片方案。
在一实施例中,分割模块710还用于:
S1、将末端节点作为第一当前节点;S2、若第一当前节点的父节点属于分叉节点,则判断分叉节点是否已被其他末端节点对应的网络子图进行分割;S3、若判定分叉节点已被其他末端节点对应的网络子图进行分割,则将第一当前节点与父节点之间的各个节点进行分割,生成包含末端节点的网络子图;S4、若判定分叉节点未被其他末端节点对应的网络子图进行分割,或若父节点属于非分叉节点,则将父节点确定为新的第一当前节点,重复执行S2-S4。
在一实施例中,切片模块720还用于:
获取末端节点可输出数据的最小维度,以及可输出数据的最大维度;在最小维度与最大维度之间,将任一维度的可输出数据,确定为对末端节点的输出数据进行切片的一种切片方式。
在一实施例中,多输出神经网络图的切片装置700还包括:
判断模块,用于针对网络子图任一种切片方案,判断切片方案是否为有效切片方案,并在切片方案为有效切片方案时,再执行获取网络子图的处理时长的步骤。
在一实施例中,判断模块还用于:
根据切片后的末端节点的输出数据的输出数据量,分别逆推每个节点的输入数据和输出数据;针对任一节点,确定该节点的之前节点的目标输出数据;根据目标输出数据、该节点的输入数据和输出数据,确定该节点执行时的占用空间;若任一节点的占用空间均小于智能芯片为对应节点分配的可用空间,则将切片方案确定为有效切片方案。
在一实施例中,判断模块还用于:
确定该节点之前的所有分叉节点及每个分叉节点的输出数据;判断每个分叉节点的输出数据是否可释放,并将不可释放的所有分叉节点的输出数据作为目标输出数据。
在一实施例中,判断模块还用于:
若该分叉节点的输出数据还用于被其他网络子图使用,则判定分叉节点的输出数据不可释放;否则,判定分叉节点的输出数据可释放。
当理解的是,图7示出的多输出神经网络图的切片装置的结构框图中,各模块用于执行图1、图3至图4对应的实施例中的各步骤,而对于图1、图3至图4对应的实施例中的各步骤已在上述实施例中进行详细解释,具体请参阅图1、图3至图4以及图1、图3至图4所对应的实施例中的相关描述,此处不再赘述。
图8是本申请一实施例提供的一种智能芯片的结构框图。如图8所示,该实施例的智能芯片800包括:处理器810、存储器820以及存储在存储器820中并可在处理器810运行的计算机程序830,例如多输出神经网络的切片方法的程序。处理器810执行计算机程序830时实现上述各个多输出神经网络的切片方法各实施例中的步骤,例如图1所示的S101至S104。或者,处理器810执行计算机程序830时实现上述图8对应的实施例中各模块的功能,例如,图7所示的模块710至740的功能,具体请参阅图7对应的实施例中的相关描述。
示例性的,计算机程序830可以被分割成一个或多个模块,一个或者多个模块被存储在存储器820中,并由处理器810执行,以实现本申请实施例提供的多输出神经网络的切片方法。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序830在智能芯片800中的执行过程。例如,计算机程序830可以实现本申请实施例提供的多输出神经网络的切片方法。
智能芯片800可包括,但不仅限于,处理器810、存储器820。本领域技术人员可以理解,图8仅仅是智能芯片800的示例,并不构成对智能芯片800的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
所称处理器810可以是中央处理单元,还可以是其他通用处理器、数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器820可以是智能芯片800的内部存储单元,例如智能芯片800的硬盘或内存。存储器820也可以是智能芯片800的外部存储设备,例如智能芯片800上配备的插接式硬盘,智能存储卡,闪存卡等。进一步地,存储器820还可以既包括智能芯片800的内部存储单元也包括外部存储设备。
本申请实施例提供了一种智能芯片,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述各个实施例中的多输出神经网络的切片方法。
本申请实施例提供了一种计算机可读存储介质,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述各个实施例中的多输出神经网络的切片方法。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个实施例中的多输出神经网络的切片方法。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种多输出神经网络的切片方法,其特征在于,应用于智能芯片,所述方法包括:
将所述多输出神经网络中的每个末端节点分别与其他节点进行分割,生成多个包含所述末端节点的网络子图;所述多输出神经网络包括至少两个末端节点以及至少一个分叉节点;
针对任一网络子图,按照预设的多种切片方式对所述网络子图末端节点的输出数据进行切片,得到所述网络子图的多种切片方案;
针对网络子图的任一种切片方案,获取所述网络子图的处理时长,并根据所述处理时长确定所述网络子图的目标切片方案;
根据每个所述网络子图的目标切片方案,确定所述多输出神经网络的切片方案。
2.根据权利要求1所述的方法,其特征在于,所述将所述多输出神经网络中的每个末端节点分别与其他节点进行分割,生成包含所述末端节点的网络子图,包括:
S1、将所述末端节点作为第一当前节点;
S2、若所述第一当前节点的父节点属于所述分叉节点,则判断所述分叉节点是否已被其他所述末端节点对应的网络子图进行分割;
S3、若判定所述分叉节点已被其他所述末端节点对应的网络子图进行分割,则将所述第一当前节点与所述父节点之间的各个节点进行分割,生成包含所述末端节点的网络子图;
S4、若判定所述分叉节点未被其他所述末端节点对应的网络子图进行分割,或若所述父节点属于非分叉节点,则将所述父节点确定为新的所述第一当前节点,重复执行S2-S4。
3.根据权利要求1所述的方法,其特征在于,所述按照预设的多种切片方式对所述网络子图末端节点的输出数据进行切片,得到所述网络子图中的多种切片方案,包括:
获取所述末端节点可输出数据的最小维度,以及所述可输出数据的最大维度;
在所述最小维度与所述最大维度之间,将任一维度的所述可输出数据,确定为对所述末端节点的输出数据进行切片的一种切片方式。
4.根据权利要求1-3任一项所述的方法,其特征在于,在获取所述网络子图的处理时长之前,还包括:
针对网络子图任一种切片方案,判断所述切片方案是否为有效切片方案,并在所述切片方案为有效切片方案时,再执行获取所述网络子图的处理时长的步骤。
5.根据权利要求4所述的方法,其特征在于,所述判断所述切片方案是否为有效切片方案,包括:
根据切片后的所述末端节点的输出数据的输出数据量,分别逆推每个所述节点的输入数据和输出数据;
针对任一节点,确定该节点的之前节点的目标输出数据;
根据所述目标输出数据、所述该节点的输入数据和输出数据,确定所述该节点执行时的占用空间;
若任一节点的占用空间均小于所述智能芯片为对应节点分配的可用空间,则将所述切片方案确定为有效切片方案。
6.根据权利要求5所述的方法,其特征在于,针对任一节点,确定该节点的之前节点的目标输出数据,包括:
确定所述该节点之前的所有分叉节点及每个所述分叉节点的输出数据;
判断每个所述分叉节点的输出数据是否可释放,并将不可释放的所有所述分叉节点的输出数据作为所述目标输出数据。
7.根据权利要求6所述的方法,其特征在于,所述判断每个所述分叉节点的输出数据是否可释放,包括:
针对任一所述分叉节点,若该所述分叉节点的输出数据还用于被其他所述网络子图使用,则判定所述分叉节点的输出数据不可释放;
否则,判定所述分叉节点的输出数据可释放。
8.一种多输出神经网络的切片装置,其特征在于,应用于智能芯片,所述装置包括:
分割模块,用于将所述多输出神经网络中的每个末端节点分别与其他节点进行分割,生成多个包含所述末端节点的网络子图;所述多输出神经网络包括至少两个末端节点以及至少一个分叉节点;
切片模块,用于针对任一网络子图,按照预设的多种切片方式对所述网络子图末端节点的输出数据的输出数据量进行切片,得到所述网络子图的多种切片方案;
处理时长获取模块,用于针对网络子图的任一种切片方案,获取所述网络子图的处理时长,并根据所述处理时长确定所述网络子图的目标切片方案;
切片方案确定模块,用于根据每个所述网络子图的目标切片方案,确定所述多输出神经网络的切片方案。
9.一种智能芯片,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210181249.1A CN114648105A (zh) | 2022-02-25 | 2022-02-25 | 多输出神经网络的切片方法、装置、芯片及存储介质 |
PCT/CN2022/143527 WO2023160236A1 (zh) | 2022-02-25 | 2022-12-29 | 多输出神经网络的切片方法、装置、芯片及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210181249.1A CN114648105A (zh) | 2022-02-25 | 2022-02-25 | 多输出神经网络的切片方法、装置、芯片及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114648105A true CN114648105A (zh) | 2022-06-21 |
Family
ID=81993069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210181249.1A Pending CN114648105A (zh) | 2022-02-25 | 2022-02-25 | 多输出神经网络的切片方法、装置、芯片及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114648105A (zh) |
WO (1) | WO2023160236A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023160236A1 (zh) * | 2022-02-25 | 2023-08-31 | 深圳云天励飞技术股份有限公司 | 多输出神经网络的切片方法、装置、芯片及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117172289A (zh) * | 2023-09-01 | 2023-12-05 | 苏州亿铸智能科技有限公司 | 张量切分方法、装置以及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190286973A1 (en) * | 2018-03-14 | 2019-09-19 | Microsoft Technology Licensing, Llc | Hardware accelerated neural network subgraphs |
WO2021012215A1 (zh) * | 2019-07-24 | 2021-01-28 | 华为技术有限公司 | 神经网络切分方法、预测方法及相关装置 |
WO2021190761A1 (en) * | 2020-03-27 | 2021-09-30 | Huawei Technologies Co., Ltd. | Parallel computing scheme generation for neural networks |
CN114648105A (zh) * | 2022-02-25 | 2022-06-21 | 深圳云天励飞技术股份有限公司 | 多输出神经网络的切片方法、装置、芯片及存储介质 |
-
2022
- 2022-02-25 CN CN202210181249.1A patent/CN114648105A/zh active Pending
- 2022-12-29 WO PCT/CN2022/143527 patent/WO2023160236A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023160236A1 (zh) * | 2022-02-25 | 2023-08-31 | 深圳云天励飞技术股份有限公司 | 多输出神经网络的切片方法、装置、芯片及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023160236A1 (zh) | 2023-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110046702B (zh) | 神经网络计算加速器及其执行的方法 | |
CN114648105A (zh) | 多输出神经网络的切片方法、装置、芯片及存储介质 | |
CN110413412B (zh) | 一种基于gpu集群资源分配的方法和装置 | |
KR20110015439A (ko) | 로컬 및 글로벌 데이터 공유 | |
US10504492B2 (en) | Apparatus and methods for generating dynamic trace data on a GPU | |
US11941514B2 (en) | Method for execution of computational graph in neural network model and apparatus thereof | |
CN116467061A (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
CN106933882B (zh) | 一种大数据增量计算方法和装置 | |
CN112463340A (zh) | 基于tensorflow的多任务弹性调度方法及*** | |
CN116755878A (zh) | 程序运行方法、装置、设备、介质和程序产品 | |
CN113792237B (zh) | 卡片式布局的优化方法、装置、存储介质及处理器 | |
CN115712486A (zh) | 虚拟机的热迁移控制方法和装置、介质和计算机设备 | |
CN115994971A (zh) | 图像渲染时间的计算方法及装置、存储介质、电子设备 | |
CN114217955A (zh) | 一种数据处理方法、设备及计算机可读存储介质 | |
CN115525378A (zh) | 一种针对流程图的标准化构建方法、***及存储介质 | |
CN115968467A (zh) | 存储器受限调度 | |
KR20170037851A (ko) | 매니코어 시스템을 작동하기 위한 방법 및 장치 | |
CN110704693A (zh) | 分布式图计算***和分布式图计算方法 | |
CN117971501B (zh) | 一种数据访问方法、设备、存储介质及程序产品 | |
CN115081233B (zh) | 一种流程仿真方法及电子设备 | |
CN113343725B (zh) | Rfid多阅读器的防碰撞方法及*** | |
CN113743598B (zh) | 一种ai芯片的运行方式的确定方法和装置 | |
CN111968190B (zh) | 游戏贴图的压缩方法、装置和电子设备 | |
CN116955342B (zh) | 业务数据一致率校验方法和装置 | |
CN114528518A (zh) | 一种基于web端的流程图自动布局方法及*** |
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 |