CN113554157A - 数据处理方法及相关产品 - Google Patents
数据处理方法及相关产品 Download PDFInfo
- Publication number
- CN113554157A CN113554157A CN202010336260.1A CN202010336260A CN113554157A CN 113554157 A CN113554157 A CN 113554157A CN 202010336260 A CN202010336260 A CN 202010336260A CN 113554157 A CN113554157 A CN 113554157A
- Authority
- CN
- China
- Prior art keywords
- sub
- network layer
- blocks
- operation block
- network model
- 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
-
- 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
- G06N3/045—Combinations of networks
Abstract
本公开实施例公开了一种数据处理方法及相关产品,该方法包括:获取芯片设备的片内存储器的存储容量信息;依据所述存储容量信息,对神经网络模型中的至少一个网络层进行划分得到多个运算块。其中,多个运算块的最大数据量小于所述存储容量信息对应的存储容量,所述多个运算块被编译为被所述芯片设备执行的操作指令。采用本申请,可提高数据处理效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种数据处理方法及相关产品。
背景技术
目前,在运算神经网络的芯片设备的片内存储较小时,需借助片外存储器逐层进行运算,以减小运算数据。具体的,芯片设备先从片外存储器获取当前运算的层的输入数据,然后基于该输入数据完成该层的运算得到输出数据。再将该输出数据作为下一层运算的输入数据发送给片外存储器进行缓存。可见,芯片设备与片外存储器的交互多,导致运算时间长,数据处理效率低。
发明内容
本公开实施例提供了一种数据处理方法及相关产品,通过划分运算块,减少网络层的数据量,可提高数据处理效率。
第一方面,本公开实施例提供一种数据处理方法,包括:
获取芯片设备的片内存储器的存储容量信息;
依据所述存储容量信息,对神经网络模型中的至少一个网络层进行划分,得到多个运算块,其中,所述多个运算块的最大数据量小于所述存储容量信息对应的存储容量,所述多个运算块被编译为被所述芯片设备执行的操作指令。
在一种可能的示例中,所述对神经网络模型中的至少一个网络层进行划分,包括:
从所述神经网络模型中选取包含连续的多个目标网络层的目标子网络模型;
对所述目标子网络模型进行划分,得到多个运算块,其中,所述多个运算块中每个运算块包括所述多个目标网络层中每个目标网络层的一部分。
在一种可能的示例中,所述对神经网络模型中的至少一个网络层进行划分,包括:
对所述至少一个网络层中每个网络层进行划分,得到多个子运算块,其中,所述多个运算块中每个运算块包括所述多个子运算块中的一个子运算块。
在一种可能的示例中,所述对神经网络模型中的至少一个网络层进行划分,包括:
对所述至少一个网络层以从后向前的顺序依次进行划分,其中,所述至少一个网络层中第一网络层的划分依赖于至少一个第二网络层的划分结果,所述至少一个第二网络层为所述至少一个网络层中位于所述第一网络层后面的网络层。
在一种可能的示例中,在所述对神经网络模型中的至少一个网络层进行划分之前,还包括:
对所述神经网络模型进行划分,得到多个子网络模型,其中,所述多个子网络模型包括所述至少一个网络层所属的目标子网络模型。
在一种可能的示例中,所述方法还包括:
响应于所述神经网络模型包含两个分支网络模型,基于所述两个分支网络模型的并行度和数据量,确定所述两个分支网络模型的划分结果。
在一种可能的示例中,在得到所述多个运算块之后,所述方法还包括:
确定所述多个运算块的重复计算率;若所述重复计算率满足重复计算率限定条件,则确定完成对所述至少一个网络层的划分。
在一种可能的示例中,所述方法还包括:
若所述重复计算率不满足所述重复计算率限定条件,重新执行对所述至少一个网络层的划分,直到重新得到的所述多个运算块的重复计算率满足所述重复计算率限定条件,或者,所述多个运算块的数量等于2且所述多个运算块的重复计算率仍不满足所述重复计算率限定条件。
在一种可能的示例中,所述方法还包括:
若所述多个运算块的数量等于2,且所述多个运算块的重复计算率不满足所述重复计算率限定条件,则重新执行对所述神经网络模型的划分。
在一种可能的示例中,所述多个运算块中至少两个运算块并行执行。
在一种可能的示例中,所述方法还包括:
调度所述芯片设备执行所述多个运算块对应的操作指令。
第二方面,本公开实施例提供一种数据处理方法,应用于芯片设备,所述方法包括:
从片外存储器获取第一运算块的输入数据,其中,通过对神经网络模型的至少一个网络层划分得到的多个运算块包括所述第一运算块,所述多个运算块的最大数据量小于所述芯片设备的片内存储器的存储容量;
依据所述第一运算块的输入数据,执行第一操作指令的处理,得到所述第一运算块的处理结果;
将所述第一运算块的处理结果传输至所述片外存储器。
在一种可能的示例中,所述第一运算块包括多个第一子运算块,所述第一操作指令包括所述多个第一子运算块中每一第一子运算块的第一子操作指令,所述执行第一操作指令的处理,包括:
依据所述多个第一子运算块中每一第一子运算块的输入数据和第一子操作指令,获取所述多个第一子运算块中每一第一子运算块的处理结果,其中,所述多个第一子运算块中第一目标子运算块的输入数据为第二目标子运算块的处理结果,所述第二目标子运算块为所述第一运算块中所述第一目标子运算块之前的第一子运算块。
在一种可能的示例中,所述方法还包括:
在执行所述第一操作指令的同时并行执行第二操作指令,其中,所述第二操作指令用于执行所述至少一个网络层的第二运算块的处理。
在一种可能的示例中,所述方法还包括:
从所述片外存储器获取所述神经网络模型的待处理图像数据,其中,所述神经网络模型被编译为多个操作指令,所述多个操作指令包括所述第一操作指令、所述第一操作指令之前的多个第三操作指令和所述第一操作指令之后的多个第四操作指令;
依据所述待处理图像数据,执行所述多个第三操作指令的处理,得到所述第一运算块的输入数据;依据所述第一运算块的处理结果,执行所述多个第四操作指令的处理,得到所述神经网络模型的处理结果。
第三方面,本公开实施例提供一种数据处理装置,包括:
获取单元,用于获取芯片设备的片内存储器的存储容量信息;
划分单元,用于依据所述存储容量信息,对神经网络模型中的至少一个网络层进行划分,得到多个运算块,其中,所述多个运算块的最大数据量小于所述存储容量信息对应的存储容量,所述多个运算块被编译为被所述芯片设备执行的操作指令。
第四方面,本公开实施例提供一种数据处理装置,应用于芯片设备,所述装置包括:
通信单元,用于从片外存储器获取第一运算块的输入数据,其中,通过对神经网络模型的至少一个网络层划分得到的多个运算块包括所述第一运算块,所述多个运算块的最大数据量小于所述芯片设备的片内存储器的存储容量;
处理单元,用于依据所述第一运算块的输入数据,执行第一操作指令的处理,得到所述第一运算块的处理结果;
所述通信单元,还用于将所述第一运算块的处理结果传输至所述片外存储器。
第五方面,本公开实施例提供一种编译器,包括处理器、存储器,其中,所述存储器用于存储计算机可读指令,所述处理器用于调用所述存储器中存储的指令,以执行如第一方面所述的方法中的步骤的指令。
第六方面,本公开实施例提供一种芯片设备,包括处理器、存储器,其中,所述存储器用于存储计算机可读指令,所述处理器用于调用所述存储器中存储的指令,以执行如第一方面或第二方面所述的方法中的步骤的指令。
第七方面,本公开实施例提供一种电子装置,包括如第五方面所述的编译器或第六方面所述的芯片设备。
第八方面,本公开实施例提供一种计算机可读存储介质,其用于存储计算机程序,当所述计算机程序被处理器执行时,所述处理器实现如第一方面或第二方面所述的方法。
第九方面,本公开实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机可操作来使计算机执行如第一方面或第二方面所述的方法。
实施本公开实施例,具有如下有益效果:
可以看出,依据芯片设备的片内存储器的存储容量信息,对神经网络模型中的至少一个网络层进行划分得到多个运算块,使得多个运算块的最大数据量小于片内存储器的存储容量。且多个运算块被编译为被所述芯片设备执行的操作指令。如此,该多个运算块可直接在片内存储器运行。由于切分运算块进行了数据合并,减少了需存储的数据量,从而避免由于片内存储器的存储容量不足而需要将数据搬运到片外存储器进行储存,有利于提高数据处理效率。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种神经网络的编译器的编译示意图;
图2为本发明实施例提供的一种数据处理系统的结构示意图;
图3为本发明实施例提供的一种数据处理方法的流程示意图;
图4A、图4B为本发明实施例提供的一种神经网络模型的结构示意图;
图5为本发明实施例提供的另一种数据处理块的方法的流程示意图;
图6为本发明实施例提供的另一种神经网络模型的结构示意图;
图7为本发明实施例提供的又一种数据处理方法的流程示意图;
图8为本发明实施例提供的一种数据处理装置的结构示意图;
图9为本发明实施例提供的另一种数据处理装置的结构示意图;
图10为本发明实施例提供的一种电子装置的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供的数据处理方法可以通过神经网络模型的编译器执行,该编译器可以为中央处理器(Center Processing Unit,CPU)中的至少一部分,或者为任意具有数据处理功能的电子设备,例如终端设备、或者部署神经网络模型的电子设备、服务器等等。请参照图1,图1为本申请提出的一种神经网络模型的编译器的一个示例的示意图。如图1所示,可以将神经网络模型(例如,卷积神经网络(convolutional neuron network,CNN)模型)的信息输入到包括编译前端、优化器和指令生成器的编译器,并生成用于神经网络模型的部署平台(例如,图像处理单元(Graphics Processing Unit,GPU))的指令码。
在本公开实施例中,编译前端用于基于输入的神经网络模型的信息对神经网络模型进行分析。其中,神经网络模型的信息可以包括神经网络模型的描述文件,或者包括神经网络模型,等等。编译前端的分析可以包括网络拓扑结构的解析和重构。例如,通过对神经网络模型进行转换处理,得到所述神经网络模型的中间表示。该中间表示适用于各种后端硬件平台,或者,通过对神经网络模型的解析,得到神经网络模型的拓扑图或计算图。例如有向无环图(Directed Acyclic Graph,DAG)。
优化器用于对神经网络模型的计算图和/或中间表示进行优化。其中,对中间表示的优化可以是对中间表示的拓扑图的优化。在一些可选例子中,优化可以包括对上述计算图或拓扑图的至少一部分进行各种等价变换处理。例如,进行层合并、网络块划分,等等,以便后续生成更加高效的目标代码。指令生成器可以基于优化后的计算图生成高效的目标代码。其中,目标代码随后可被输入运算后端进行对应的神经网络模型推理。
在本公开实施例中,技术方案主要在于对神经网络模型进行优化,即编译器中的优化器。在一些可选例子中,该编译器也可以不包含指令生成器,而是由其他设备进行指令生成操作。在另一些可选例子中,该编译器也可以不包含编译前端,而是直接接收神经网络模型的计算图或拓扑图的信息。例如,用户上传该计算图或拓扑图,或者,从其他设备处接收该计算图或拓扑图,等等,本公开实施例对此不作限定。
在本公开实施例中,数据处理方法还可以应用于芯片设备。该芯片设备包括人工智能(Artificial Intelligence,AI)芯片、现场可编程门阵列(Field-ProgrammableGate Array,FPGA)芯片、或者是其它的硬件电路设备集成的芯片等,在此不做限定。
数据处理方法还可以应用于CPU和神经网络加速器的计算平台上。其中,神经网络加速器可以为图形处理器、FPGA芯片、嵌入式神经网络处理器或者机器学习处理单元等,在此不做限定。
请参阅图2,图2为本申请提出的一种数据处理系统的结构示意图。如图2所示,芯片设备20包括片内存储器201。该芯片设备20与编译器10和片外存储器301连接。在一些可选例子中,编译器10也可以独立设置,而非该数据处理系统的一部分,本公开实施例对此不做限定。
可见,神经网络模型的输入数据可通过片外存储器301进行获取,该神经网络模型的处理结果也可传输到片外存储器301进行存储。在芯片设备20接收到编译器10或其他设备对神经网络模型进行编译得到的操作指令之后,可通过片外存储器301获取该神经网络模型的输入数据,以执行该神经网络模型的操作指令,得到该神经网络模型的处理结果。其中,可选地,该操作指令可以是主控制器(例如CPU)或其他设备发送的,并且神经网络模型可以对应多个操作指令,每个操作指令用于实现一个网络块、一个或多个网络层或一个或多个算子的运算处理,本公开实施例对此不做限定。
在本公开实施例中,片内存储器201可以是U盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。片外存储器301也可以是以上描述的介质,在此不做限定。
在运行神经网络模型的操作指令时,若片内存储器201的存储容量不足,则需要将中间数据传输至片外存储器301进行存储。例如,缓存某个网络层或算子的输入数据和/或输出数据。具体的,在执行某个网络层的运算时,先从片外存储器301获取该网络层的输入数据,再基于该网络层对应的操作指令对该输入数据进行运算处理,得到该网络层的输出数据,然后将该网络层的输出数据作为下一层的输入数据,传输至片外存储器301进行存储。可见,若片内存储器201的存储容量不足以存储网络层或算子的输入数据和/或输出数据,上述执行神经网络模型的运算过程中需要将数据多次进出片外存储器301,增加了系统性能消耗,且运算时间长。为了解决以上缺陷,本申请提出一种数据处理方法,可减少芯片设备与片外存储器之间的数据交互,提高数据处理效率。
在下述实施例中将介绍数据处理方法的具体过程。
请参阅图3,图3提出了一种数据处理方法的流程示意图。该方法应用于编译器,包括步骤S301和S302,其中:
S301:获取芯片设备的片内存储器的存储容量信息。
其中,存储容量信息可包括存储容量的总数值,或者是当前可用存储容量,即当前片内存储器的可用于存储的数据容量。在一些可选例子中,存储容量信息也可包括存储参数,例如,临时存储还是非易失性存储、存储时间、数据大小等,在此不做限定。
S302:依据所述存储容量信息,对神经网络模型中的至少一个网络层进行划分,得到多个运算块。
在一些可选例子中,可以对神经网络模型的一个网络层进行划分,得到多个运算块。或者,为了提高数据处理效率,也可以对神经网络模型中相邻的至少两个网络层进行划分。例如,对神经网络模型的第一子网络模型进行划分,得到多个运算块,本公开实施例对此不做限定。
在一些可选例子中,可以沿着特征图的宽度或高度方向进行切分,但本公开实施例对此不做限定。
在本公开实施例中,多个运算块的最大数据量小于存储容量信息对应的存储容量。该最大数据量可以是多个运算块串行或并行执行时需要同时存储的最大数据量,例如,可以是多个运算块中每个数据块执行过程中所需存储的数据量中的最大值,在此不做限定。
其中,运算块的数据量包括该运算块的输入数据、输出数据和参数数据中的至少一种。该参数数据可包括权重、偏差、卷积核、步长等一种或多种,在此不做限定。
在本公开实施例中,多个运算块被编译为被芯片设备执行的操作指令。其中,在一些可选例子中,编译器基于该多个运算块,得到该多个运算块的操作指令。
在一种可能的示例中,所述方法由控制器执行,相应地,所述方法还包括:调度所述芯片设备执行所述多个运算块对应的操作指令。
可以理解,在划分运算块,且编译得到多个运算块的操作指令之后,控制器可以将生成的操作指令发送给芯片设备。然后,芯片设备执行操作指令的运算,以完成运算块的运算处理。
在图3所示的方法中,通过划分网络层的运算块,使得多个运算块的最大数据量小于片内存储器的存储容量。如此,该多个运算块可直接在片内存储器运行。由于切分运算块进行了数据合并,减少了需存储的数据量,从而避免由于片内存储器的存储容量不足而需要将数据搬运到片外存储器进行储存,有利于提高数据处理效率。
在一种可能的示例中,在所述至少一个网络层的最小数据量小于预设阈值时,执行步骤S301。
其中,最小数据量可以是至少一个网络层中串行或并行执行时需要同时存储的最小数据量,例如,可以是至少一个网络层中每一网络层执行过程中所需存储的数据量中的最小值。
在上述示例中,在至少一个网络层的最小数据量满足一定的约束条件时,对至少一个网络层进行划分。而在不满足约束条件时,基于原网络层进行运算。如此,便于提高运算优势。
举例来说,如图4A所示,假设片上存储器的存储容量为mth,至少一个网络层为子网络模型M11。在划分子网络模型M11之前的最小数据量为d,且d>mth。如此,在芯片设备运算该子网络模型M11时,将片外存储器存储的网络层C9的输入数据搬运至片上存储器,在片上存储器处理网络层C9的操作指令之后,将得到的处理结果搬运至片外存储器。网络层C10、网络层C11和网络层C12分别按照网络层C9的方法执行数据处理。而在划分子网络模型M11得到运算块K301、运算块K302和运算块K303之后,运算块K301、运算块K302和运算块K303之间的最大数据量为bm,且bm<mth。如此,在芯片设备运算该子网络模型M11对应的多个数据块时,将片外存储器存储的网络层C9的输入数据搬运至片上存储器,在片上存储器分别处理运算块K301、运算块K302和运算块K303对应的操作指令,并将得到的处理结果搬运至片外存储器。可见,在划分运算块之后,中间的处理数据均在片上存储器停留,不会搬运至片外存储器。只向片外存储器获取子网络模型中第一层的输入数据,且只有最后的处理结果搬运至片外存储器,减少了芯片设备与片外存储器之间的数据交互,提高了数据处理效率。
在本公开实施例中,预设阈值可以小于或等于片上存储器的存储容量,在此不做限定。则网络层中数据较大,且片上存储容量较小时,采用该示例,便于运算优势。
在一种可能的示例中,所述多个运算块中至少两个运算块并行执行,以进一步提高数据处理效率。
其中,可以对多个运算块中不存在数据依赖关系的至少两个运算块进行并行处理,本公开实施例对其具体实现不做限定。
本公开实施例对于网络层的划分方法不做限定,下面列出三种可选实现方式,其中,这里以所述至少两个网络层具体为至少两个网络层为例进行描述,但本公开实施例不限于此。
在第一种可选实施方式中,对所述至少两个网络层中每个网络层进行划分,得到多个子运算块。
其中,多个运算块中每个运算块包括所述多个子运算块中的一个子运算块。如图4A所示,对网络层C9、网络层C10、网络层C11和网络层C12中每个网络层进行划分,可得到三个运算块K301、K302和K303,并且,每个网络层被划分为三个子运算块。其中,运算块K301包括网络层C9的子运算块K3011、网络层C10的子运算块K3012、网络层C11的子运算块K3013和网络层C12的子运算块K3014。运算块K302包括网络层C9的子运算块K3021、网络层C10的子运算块K3022、网络层C11的子运算块K3023和网络层C12的子运算块K3024。运算块K303包括网络层C9的子运算块K3031、网络层C10的子运算块K3032、网络层C11的子运算块K3033和网络层C12的子运算块K3034。
在本公开实施例中,可按照网络层对应的运算指令划分子运算块,也按照网络层的基本算子划分子运算块。例如,卷积层的基本算子为kernel、stride、pad等用于计算存储数据量的运算公式。还可按照不易改变网络构架的网络参数(例如,w、h)划分子运算块,在此不做限定。本申请对于根据宽度和长度的划分策略也不做限定,可以先按方形划分,即w=h。在剩下的右边和下边不满足方形条件时,按实际剩下的w和h形状计算。
在第一种可选实现方式中,对每个网络层进行划分得到多个子运算块,使得运算块包括每个网络层中的一个子运算块。如此,编译器编译运算块中的子运算块得到的操作指令,依然与网络层的运算顺序一致。
在第二种可选实现方式中,对所述至少两个网络层以从后向前的顺序依次进行划分。
在本公开实施例中,至少两个网络层中第一网络层的划分依赖于至少一个第二网络层的划分结果,至少一个第二网络层为所述至少一个网络层中位于所述第一网络层后面的网络层。举例来说,如图4A所示,假设第一网络层为网络层C10,则第二网络层为网络层C11和网络层C12中的至少一个,例如,第二网络层为网络层C12。
神经网络模型中每一层的输入数据为上一层的输出数据。在第二种可选实现方式中,从后向前进行划分,且基于运算关联的部分对上一层或多层进行划分,可提高划分效率,便于提高数据处理效率。
在一种可能的示例中,对所述至少一个网络层以从后向前的顺序依次进行划分,包括以下步骤A1-A4,其中:
A1:将至少一个网络层中最后一个网络层作为参考层。
A2:对所述参考层进行划分,得到所述参考层的多个子运算块。
A3:根据所述参考层的多个子运算块中每一子运算块,对所述参考层的上一层进行划分,得到所述参考层的上一层的多个子运算块。
A4:在所述参考层不是所述至少一个网络层中第一个网络层时,将所述参考层的上一层作为所述参考层,返回执行步骤A3。
其中,参考层以及参考层的上一层的划分可参考第一种可选实现方式的划分方法。
举例来说,如图4A所示,至少一个网络层包括网络层9、网络层10、网络层11和网络层12。先将至少一个网络层中最后一个网络层(网络层C12)作为参考层。设置参考层中运算块的高度和宽度(例如,w=h=12),则按照设置的高度和宽度划分网络层C12得到子运算块K3014、子运算块K3024和子运算块K3034,并记录以上子运算块的起点位置。再根据子运算块K3014的高度、宽度和网络层C12的上一层(网络层C11)的基本算子(例如,kernel、stride、pad等),反算网络层C11中与子运算块K3014对应的子运算块K3013的存储数据大小。然后基于子运算块K3014的起点位置和K3013的存储数据大小,对网络层C11进行划分得到子运算块K3013。依据子运算块K3024划分子运算块K3023,依据子运算块K3034划分子运算块K3033,可分别参照依据子运算块K3014划分子运算块K3013的步骤。可知,网络层C11不是至少一个网络层中第一个网络层,则将网络层C11作为参考层,子运算块K3013、子运算块K3023和子运算块K3033,分别依据子运算块K3014划分子运算块K3013的步骤,对网络层C10进行划分分别得到子运算块K3012、子运算块K3022和子运算块K3032。而网络层C10也不是子网络模型M11中第一个网络层,则将网络层C10作为参考层,子运算块K3012、子运算块K3022和子运算块K3032,依据子运算块K3014划分子运算块K3013的步骤,对网络层C9进行划分分别得到子运算块K3011、子运算块K3021和子运算块K3031。网络层C9是至少一个网络层中第一个网络层,从而完成子运算块的划分,将划分相关的子运算块划分为一个运算块。即将子运算块K3014、子运算块K3013、子运算块K3012和子运算块K3011划分为运算块K301,将子运算块K3024、子运算块K3023、子运算块K3022和子运算块K3021划分为运算块K302,将子运算块K3034、子运算块K3033、子运算块K3032和子运算块K3031划分为运算块K303。
可以理解,在该示例中,逐一根据后一层的子运算块进行划分,可提高子运算块之间的关联性,进一步提高数据处理效率。
在第三种可选实现方式中,从神经网络模型中选取包含连续的多个目标网络层的目标子网络模型;对所述目标子网络模型进行划分,得到多个运算块。
在本公开实施例中,目标网络层可以是神经网络模型中的任一网络层。目标子网络模型包括多个目标网络层,且多个目标网络层是连续的。多个运算块中每个运算块包括多个目标网络层中每个目标网络层的一部分。
其中,网络层的部分可以是子运算块。如图4A所示,目标子网络模型M11中的运算块K301,包括网络层C9的子运算块K3011、网络层C10的子运算块K3012、网络层C11的子运算块K3013和网络层C12的子运算块K3014。
在第三种可选实现方式中,目标子网络模型的划分可参考第一种可选实现方式和第二种可选实现方式的划分,在此不再赘述。如前所述,切分运算块,可减少数据量,提高数据处理效率。且划分之后的多个运算块的最大数据量小于片上存储器的存储容量,即多个运算块可直接在片内存储器运行。由于目标子网络模型包括多个目标网络层,则可在片内存储器上单次完成多个网络层的运算,而非单独网络层进行运算,进一步提高了数据处理效率。
在划分得到多个运算块之后,在一种可能的示例中,所述方法还包括:确定所述多个运算块的重复计算率;若所述重复计算率满足重复计算率限定条件,则确定完成对所述至少一个网络层的划分。
在本公开实施例中,重复计算率可以是多个运算块中任一两个相邻运算块之间重复计算的数据与总运算的数据之间的比值。如图4A所示,重复计算率可以是运算块K301和运算块K302之间重复计算的数据,和运算块K301和运算块K302的总运算的数据之间的比值。
重复计算率也可以是所有的相邻运算块之间的重复计算的数据之和,与总运算数据之间的比值。如图4A所示,重复计算率可以是运算块K301和运算块K302之间重复计算的数据,运算块K302和运算块K303之间重复计算的数据之和,与运算块K301、运算块K302和运算块K303之间的总运算的数据之间的比值。
重复计算率限定条件用于限定划分规则。该重复计算率限定条件可以是一个阈值(例如,10%),即当重复计算率小于该阈值时,确定完成对至少一个网络层的划分。
可以理解,由于网络层之间的存在关联关系,在划分运算块之后,部分运算块(或子运算块)之间可存在相同的输入数据,或相同的参数,因此可能存在重复计算的数据。在该示例中,计算运算块的重复计算率。且在重复计算率满足重复限定条件时,确定完成对网络层的划分,从而避免重复计算造成的增加运算量。
在一种可能的示例中,所述方法还包括:若所述重复计算率不满足所述重复计算率限定条件,重新执行对所述至少一个网络层的划分,直到重新得到的所述多个运算块的重复计算率满足所述重复计算率限定条件。
可以理解,在重复计算率不满足重复限定条件时,重新执行网络层的划分。如此,避免划分之后增加运算量。
在本公开实施例中,重新划分运算块的规则,可以是对之前划分的部分运算块进行合成,即减少网络层的运算块。当网络层中的运算块的数量减少时,子运算块之间重复计算的概率降低,从而便于提高数据处理效率。
在一种可能的示例中,所述方法还包括:若所述重复计算率不满足所述重复计算率限定条件,且所述多个运算块的数量等于2,则结束执行对所述至少一个网络层的划分。
可见,当以减少网络层的运算块的规则重新划分运算块,且多个运算块的数量等于2,多个运算块的重复计算率不满足重复计算率限定条件时,结束网络层的划分,从而了避免出现不划分网络层的运算块的情况。
与图3所示的数据处理方法类似的,请参照图5,图5为本公开实施例提供的另一种数据处理方法的流程示意图。该方法应用于编译器,包括步骤S501-S503,其中:
S501:获取芯片设备的片内存储器的存储容量信息。
S502:对所述神经网络模型进行划分得到多个子网络模型。
在本公开实施例中,多个子网络模型包括前述的第三种可选实现方式中至少一个网络层所属的目标子网络模型。也就是说,将神经网络模型中连续的至少两个网络层划分为一个子网络模型。
本申请对于子网络模型的划分方法不做限定,可以按照输入层、隐藏层和输出层进行划分,也可按照卷积层和全连接层等进行划分,还可按照神经网络模型的运算步骤进行划分等。
在一种可能的示例中,所述方法还包括:响应于所述神经网络模型包含两个分支网络模型,基于所述两个分支网络模型的并行度和数据量,确定所述两个分支网络模型的划分结果。
其中,两个分支网络模型的输入层和输出层相同。如图6所示,网络模型M11和网络模型M12的输入层均为网络层C8,且输出层相同,均为网络层C13,则网络模型M11和网络模型M12均可作为分支网络模型。
并行度用于描述分支网络模型的可并行计算的程度,为可并行计算的数据与总数据之间的比值。本申请对于确定并行度的方法不做限定,以第一分支网络模型和第二分支网络模型进行举例说明。可选的,确定第一分支网络模型的第一运算指令集,以及第二分支网络模型的第二运算指令集;根据所述第一运算指令集和所述第二运算指令集之间的相似值,确定所述第一分支网络模型和所述第二分支网络模型之间的并行度。
其中,相似值用于描述运算指令的相似程度。
不同类型的指令可通过不同的运算器进行并行运算。例如,基于微处理器/微控制器(Microprocessor/Micro controller Unit,MPU/MCU)处理卷积运算指令,基于矢量处理器(Vector Processing Unit,VPU)处理矢量运算指令,基于浮点计算单元(FloatingProcessing Unit,FPU)处理浮点计算。且同一类型的指令中完全不相关的数据可通过同一运算器进行并行运算。因此,可根据指令类型和指令的输入数据之间的关联性确定相似值。
在该可选的示例中,先分别确定两个分支网络模型的运算指令集,再根据运算指令集之间的相似值确定两个分支网络模型之间的并行度,可提高确定并行度的准确率。
在本公开实施例中,分支网络模型的数据量包括该分支网络模型的输入数据、输出数据和参数数据。两个分支网络模型的数据量可以是两个分支网络模型的数据量之和,也可以是单个分支网络模型的数据量,或者两个分支网络模型中每一分支网络模型的数据量之间的最大值。
本申请对于分支网络模型的划分方法不做限定,可以在并行度小于第一阈值时,表示两个分支网络模型可并行的概率低,即分别将分支网络模型作为子网络模型。反之,将两个分支网络模型作为一个子网络模型。如此,在划分该子网络模型之后,可并行计算,提高了数据处理效率。
在本公开实施例中,还可在两个分支网络模型的数据量大于第二阈值时,表示需减少数据量,即分别将分支网络模型作为子网络模型。反之,将两个分支网络模型作为一个子网络模型。如此,在划分该子网络模型之后,可一次计算多个网络模型,减少运算次数,提高了数据处理效率。其中,第二阈值可以小于或等于片上存储器的存储容量。
举例来说,如图6所示,若分支网络模型M11和分支网络模型M12的并行度小于第一阈值,且两个分支网络模型中每一分支网络模型的数据量之间的最大值大于第二阈值,则将分支网络模型M11和分支网络模型M12分别划分为一个子网络模型。若分支网络模型M11和分支网络模型M12的并行度大于第一阈值,或者,数据量小于第二阈值,则将网络模型M11和分支网络模型M12对应的网络模型M10划分为一个子网络模型。
S503:依据所述存储容量信息,对所述多个子网络模型中每一子网络模型进行划分,得到所述多个子网络模型中每一子网络模型对应的多个运算块。
在本公开实施例中,各个子网络模型对应的多个运算块的最大数据量小于所述存储容量信息对应的存储容量,且被编译为被所述芯片设备执行的操作指令。其中,运算块的划分可参照前述的至少一个网络层划分运算块的描述,在此不再赘述。
在图5所示的方法中,先划分子网络模型,再划分子网络模型的运算块,进行了数据合并,减少了需存储的数据量,提高了数据处理效率。且在划分子网络模型的运算块之后,各个子网络模型的多个运算块的最大数据量小于片内存储器的存储容量。如此,在片内存储器可直接运行子网络模型的运算,而不是每一网络层单独运行,进一步提高数据处理效率。
在一种可能的示例中,所述方法还包括:确定所述目标子网络模型划分得到的多个运算块的重复计算率;若所述重复计算率满足重复计算率限定条件,则确定完成对所述目标子网络模型的划分;若所述重复计算率不满足所述重复计算率限定条件,重新执行对所述目标子网络模型的划分,直到重新得到的所述多个运算块的重复计算率满足所述重复计算率限定条件,或者,所述多个运算块的数量等于2且所述多个运算块的重复计算率仍不满足所述重复计算率限定条件;若所述多个运算块的数量等于2,且所述多个运算块的重复计算率不满足重复计算率限定条件,则重新执行对所述神经网络模型的划分。
在本公开实施例中,可基于当前划分的子网络模型进一步进行划分,即增加当前子网络模型的数量。对子网络模型进一步划分,重新划分得到的子网络模型的存储数据量相比之前的较少,便于提高子网络模型在芯片设备上单次运算的成功率。
该示例以目标子网络模型进行举例说明,如图4A所示,将子网络模型M11切分为运算块K301、运算块K302和运算块K303。先确定运算块K301、运算块K302和运算块K303的重复计算率。若该重复计算率满足重复计算率限定条件,则确定完成对子网络模型的划分。否则,重新对子网络模型M11进行划分,如图4B所示,得到运算块K304和运算块K305。再确定运算块K304和运算块K305的重复计算率。若该重复计算率满足重复计算率限定条件,则确定完成对子网络模型的划分。由于子网络模型M11当前划分的多个运算块的数量为2,则重新对神经网络模型进行划分,也就是重新划分子网络模型。
需要说明的是,子网络模型的划分也可基于子网络模型的数据量和与其他子网络模型之间的并行度。具体可参照划分运算块的描述,在此不再赘述。
需要说明的是,若多个子网络模型中第一子网络模型和第二子网络模型之间相互独立,且第一子网络模型和第二子网络模型的最大数据量小于片内存储器的存储容量,则该第一子网络模型和第二子网络模型可并行处理。可选的,通过芯片设备中的处理器(例如,MPU/MCU,VPU,FPU),并行执行第一子网络模型和第二子网络模型对应的操作指令。
图7为本公开实施例提供的又一种数据处理方法的流程示意图。该方法应用于芯片设备,包括步骤S701-S703,其中:
S701:从片外存储器获取第一运算块的输入数据。
在本公开实施例中,通过对神经网络模型的至少一个网络层划分得到的多个运算块包括所述第一运算块,所述多个运算块的最大数据量小于所述芯片设备的片内存储器的存储容量。
S702:依据所述第一运算块的输入数据,执行第一操作指令的处理,得到所述第一运算块的处理结果。
在本公开实施例中,第一操作指令为编译器对第一运算块进行编译得到的指令。如此,依据第一运算块的输入数据和第一操作指令,可获取第一运算块的处理结果。
在一种可能的示例中,第一运算块包括多个子运算块,则第一操作指令可包括与各个子运算块对应的第一子操作指令,步骤S702包括:依据所述多个子运算块中每一子运算块的输入数据和第一子操作指令,获取所述多个子运算块中每一子运算块的处理结果。
其中,所述多个子运算块中第一子运算块的输入数据为第二子运算块的处理结果,所述第二子运算块为所述第一运算块中所述第一子运算块所属的网络层的上一网络层的子运算块。如图4A所示,第一运算块为运算块K301,当第一子运算块为子运算块K3011时,第二子运算块为子运算块K3012。
可以理解,在该示例中,第一子操作指令的运算顺序与多个子运算块的前后顺序一致,且每一子操作指令的输入数据为上一个运算的子操作指令的输出数据。如此,分别依据上一个子操作指令的输出数据,执行当前子操作指令的处理,得到该子运算块的处理结果。
在一种可能的示例中,在执行步骤S702的同时,并行执行第二操作指令。
其中,所述第二操作指令用于执行所述至少一个网络层的第二运算块的处理。也就是说,多个运算块中的第一运算块和第二运算块为可并行执行的运算块。在并行执行第一操作指令和第二操作指令之后,可提高数据处理效率。
S703:将所述第一运算块的处理结果传输至所述片外存储器。
在本公开实施例中,片外存储器缓存每个运算块的输入数据,而运算块的处理结果可能为其他运算块的输入数据。因此,片外存储器还缓存每个运算块的处理结果。
在如图7所示的方法中,以多个运算块中的第一运算块进行举例说明。从片外存储器获取第一运算块的输入数据,并依据该输入数据,执行第一操作指令的处理,得到第一运算块的处理结果。由于多个运算块的最大数据量小于芯片设备的片内存储器的存储容量,因此第一运算块的最大数据量必然也小于片内存储器的存储容量,保证了在片内存储器处理操作指令的可行性。且处理的是多个运算块对应的操作指令,而非网络层对应的操作指令,减少了数据量,提高了数据处理效率。
在一种可能的示例中,所述方法还包括:从所述片外存储器获取所述神经网络模型的待处理图像数据;依据所述待处理图像数据,执行多个第三操作指令的处理,得到所述第一运算块的输入数据;依据所述第一运算块的处理结果,执行多个第四操作指令的处理,得到所述神经网络模型的处理结果。
其中,神经网络模型被编译为多个操作指令。多个第三操作指令为所述多个操作指令中所述第一操作指令之前的操作指令。多个第四操作指令为所述多个操作指令中所述第一操作指令之后的操作指令。第三操作指令和第四操作指令的处理方法,可参照第一操作指令的处理,在此不做赘述。
可以理解,片外存储器还缓存了神经网络模型的待处理图像数据。在编译器将神经网络模型划分为多个子网络模型,或对各个子网络模型划分运算块之后,对各个运算块进行编译得到对应的操作指令。如此,分别依据运算块对应的输入数据和操作指令,得到运算块的处理结果。并把最后运算得到的处理结果作为神经网络模型的处理结果传输至片外存储器。通过执行运算块的操作指令,减少了待运算的数据量,可提高数据处理效率。
请参照图8,图8为本公开实施例提供的一种数据处理装置的结构示意图。该数据处理装置800应用于编译器,该装置800包括:
获取单元801,用于获取芯片设备的片内存储器的存储容量信息;
划分单元802,用于依据所述存储容量信息,对神经网络模型中的至少一个网络层进行划分,得到多个运算块,其中,所述多个运算块的最大数据量小于所述存储容量信息对应的存储容量,所述多个运算块被编译为被所述芯片设备执行的操作指令。
在一种可能的示例中,所述划分单元802具体用于从所述神经网络模型中选取包含连续的多个目标网络层的目标子网络模型;对所述目标子网络模型进行划分,得到多个运算块,其中,所述多个运算块中每个运算块包括所述多个目标网络层中每个目标网络层的一部分。
在一种可能的示例中,所述划分单元802具体用于对所述至少一个网络层中每个网络层进行划分,得到多个子运算块,其中,所述多个运算块中每个运算块包括所述多个子运算块中的一个子运算块。
在一种可能的示例中,所述划分单元802具体用于对所述至少一个网络层以从后向前的顺序依次进行划分,其中,所述至少一个网络层中第一网络层的划分依赖于至少一个第二网络层的划分结果,所述至少一个第二网络层为所述至少一个网络层中位于所述第一网络层后面的网络层。
在一种可能的示例中,所述划分单元802还用于对所述神经网络模型进行划分,得到多个子网络模型,其中,所述多个子网络模型包括所述至少一个网络层所属的目标子网络模型。
在一种可能的示例中,所述划分单元802还用于响应于所述神经网络模型包含两个分支网络模型,基于所述两个分支网络模型的并行度和数据量,确定所述两个分支网络模型的划分结果。
在一种可能的示例中,所述划分单元802还用于确定所述多个运算块的重复计算率;若所述重复计算率满足重复计算率限定条件,则确定完成对所述至少一个网络层的划分。
在一种可能的示例中,所述划分单元802还用于若所述重复计算率不满足所述重复计算率限定条件,重新执行对所述至少一个网络层的划分,直到重新得到的所述多个运算块的重复计算率满足所述重复计算率限定条件,或者,所述多个运算块的数量等于2且所述多个运算块的重复计算率仍不满足所述重复计算率限定条件。
在一种可能的示例中,所述划分单元802还用于若所述多个运算块的数量等于2,且所述多个运算块的重复计算率不满足所述重复计算率限定条件,则重新执行对所述神经网络模型的划分。
在一种可能的示例中,所述多个运算块中至少两个运算块并行执行。
在一种可能的示例中,所述装置800还包括调度单元803,用于调度所述芯片设备执行所述多个运算块对应的操作指令。
图9为本公开实施例提供的另一种数据处理装置900的结构示意图。该数据处理装置900应用于芯片设备,该装置900包括:
通信单元901,用于从片外存储器获取第一运算块的输入数据,其中,通过对神经网络模型的至少一个网络层划分得到的多个运算块包括所述第一运算块,所述多个运算块的最大数据量小于所述芯片设备的片内存储器的存储容量;
处理单元902,用于依据所述第一运算块的输入数据,执行第一操作指令的处理,得到所述第一运算块的处理结果;
所述通信单元901,还用于将所述第一运算块的处理结果传输至所述片外存储器。
在一种可能的示例中,所述第一运算块包括多个第一子运算块,所述第一操作指令包括所述多个第一子运算块中每一第一子运算块的第一子操作指令,所述处理单元902具体用于依据所述多个第一子运算块中每一第一子运算块的输入数据和第一子操作指令,获取所述多个第一子运算块中每一第一子运算块的处理结果,其中,所述多个第一子运算块中第一目标子运算块的输入数据为第二目标子运算块的处理结果,所述第二目标子运算块为所述第一运算块中所述第一目标子运算块之前的第一子运算块。
在一种可能的示例中,所述处理单元902还用于在执行所述第一操作指令的同时并行执行第二操作指令,其中,所述第二操作指令用于执行所述至少一个网络层的第二运算块的处理。
在一种可能的示例中,所述通信单元901,还用于从所述片外存储器获取所述神经网络模型的待处理图像数据,其中,所述神经网络模型被编译为多个操作指令,所述多个操作指令包括所述第一操作指令、所述第一操作指令之前的多个第三操作指令和所述第一操作指令之后的多个第四操作指令;
所述处理单元902还用于依据所述待处理图像数据,执行所述多个第三操作指令的处理,得到所述第一运算块的输入数据;依据所述第一运算块的处理结果,执行所述多个第四操作指令的处理,得到所述神经网络模型的处理结果。
图10为本公开实施例提供的一种电子装置的结构示意图。该电子装置包括编译器和芯片设备。如图10所示,该电子装置1000包括处理器1001和存储器1002。其中,存储器1002用于存储计算机可读指令,处理器1001用于调用存储器1002中存储的指令。当电子装置1000为编译器时,上述指令用于执行以下步骤:
获取芯片设备的片内存储器的存储容量信息;
依据所述存储容量信息,对神经网络模型中的至少一个网络层进行划分,得到多个运算块,其中,所述多个运算块的最大数据量小于所述存储容量信息对应的存储容量,所述多个运算块被编译为被所述芯片设备执行的操作指令。
在一种可能的示例中,上述指令具体用于执行以下步骤:
从所述神经网络模型中选取包含连续的多个目标网络层的目标子网络模型;对所述目标子网络模型进行划分,得到多个运算块,其中,所述多个运算块中每个运算块包括所述多个目标网络层中每个目标网络层的一部分。
在一种可能的示例中,上述指令具体用于执行以下步骤:
对所述至少一个网络层中每个网络层进行划分,得到多个子运算块,其中,所述多个运算块中每个运算块包括所述多个子运算块中的一个子运算块。
在一种可能的示例中,上述指令具体用于执行以下步骤:
对所述至少一个网络层以从后向前的顺序依次进行划分,其中,所述至少一个网络层中第一网络层的划分依赖于至少一个第二网络层的划分结果,所述至少一个第二网络层为所述至少一个网络层中位于所述第一网络层后面的网络层。
在一种可能的示例中,上述指令还用于执行以下步骤:
对所述神经网络模型进行划分,得到多个子网络模型,其中,所述多个子网络模型包括所述至少一个网络层所属的目标子网络模型。
在一种可能的示例中,上述指令还用于执行以下步骤:
响应于所述神经网络模型包含两个分支网络模型,基于所述两个分支网络模型的并行度和数据量,确定所述两个分支网络模型的划分结果。
在一种可能的示例中,上述指令还用于执行以下步骤:
确定所述多个运算块的重复计算率;若所述重复计算率满足重复计算率限定条件,则确定完成对所述至少一个网络层的划分。
在一种可能的示例中,上述指令还用于执行以下步骤:
若所述重复计算率不满足所述重复计算率限定条件,重新执行对所述至少一个网络层的划分,直到重新得到的所述多个运算块的重复计算率满足所述重复计算率限定条件,或者,所述多个运算块的数量等于2且所述多个运算块的重复计算率仍不满足所述重复计算率限定条件。
在一种可能的示例中,上述指令还用于执行以下步骤:
若所述多个运算块的数量等于2,且所述多个运算块的重复计算率不满足所述重复计算率限定条件,则重新执行对所述神经网络模型的划分。
在一种可能的示例中,所述多个运算块中至少两个运算块并行执行。
在一种可能的示例中,上述指令还用于执行以下步骤:
调度所述芯片设备执行所述多个运算块对应的操作指令。
当电子装置1000为芯片设备时,上述指令用于执行以下步骤:
从片外存储器获取第一运算块的输入数据,其中,通过对神经网络模型的至少一个网络层划分得到的多个运算块包括所述第一运算块,所述多个运算块的最大数据量小于所述芯片设备的片内存储器的存储容量;
依据所述第一运算块的输入数据,执行第一操作指令的处理,得到所述第一运算块的处理结果;
将所述第一运算块的处理结果传输至所述片外存储器。
在一种可能的示例中,所述第一运算块包括多个第一子运算块,所述第一操作指令包括所述多个第一子运算块中每一第一子运算块的第一子操作指令,上述指令具体用于执行以下步骤:
依据所述多个第一子运算块中每一第一子运算块的输入数据和第一子操作指令,获取所述多个第一子运算块中每一第一子运算块的处理结果,其中,所述多个第一子运算块中第一目标子运算块的输入数据为第二目标子运算块的处理结果,所述第二目标子运算块为所述第一运算块中所述第一目标子运算块之前的第一子运算块。
在一种可能的示例中,上述指令还用于执行以下步骤:
在执行所述第一操作指令的同时并行执行第二操作指令,其中,所述第二操作指令用于执行所述至少一个网络层的第二运算块的处理。
在一种可能的示例中,上述指令还用于执行以下步骤:
从所述片外存储器获取所述神经网络模型的待处理图像数据,其中,所述神经网络模型被编译为多个操作指令,所述多个操作指令包括所述第一操作指令、所述第一操作指令之前的多个第三操作指令和所述第一操作指令之后的多个第四操作指令;
依据所述待处理图像数据,执行所述多个第三操作指令的处理,得到所述第一运算块的输入数据;依据所述第一运算块的处理结果,执行所述多个第四操作指令的处理,得到所述神经网络模型的处理结果。
本公开实施例还提供一种计算机存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如上述方法实施例中记载的任何一种数据处理方法的部分或全部步骤。
本公开实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种数据处理方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本公开实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (21)
1.一种数据处理方法,其特征在于,包括:
获取芯片设备的片内存储器的存储容量信息;
依据所述存储容量信息,对神经网络模型中的至少一个网络层进行划分,得到多个运算块,其中,所述多个运算块的最大数据量小于所述存储容量信息对应的存储容量,所述多个运算块被编译为被所述芯片设备执行的操作指令。
2.根据权利要求1所述的方法,其特征在于,所述对神经网络模型中的至少一个网络层进行划分,包括:
从所述神经网络模型中选取包含连续的多个目标网络层的目标子网络模型;
对所述目标子网络模型进行划分,得到多个运算块,其中,所述多个运算块中每个运算块包括所述多个目标网络层中每个目标网络层的一部分。
3.根据权利要求1或2所述的方法,其特征在于,所述对神经网络模型中的至少一个网络层进行划分,包括:
对所述至少一个网络层中每个网络层进行划分,得到多个子运算块,其中,所述多个运算块中每个运算块包括所述多个子运算块中的一个子运算块。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述对神经网络模型中的至少一个网络层进行划分,包括:
对所述至少一个网络层以从后向前的顺序依次进行划分,其中,所述至少一个网络层中第一网络层的划分依赖于至少一个第二网络层的划分结果,所述至少一个第二网络层为所述至少一个网络层中位于所述第一网络层后面的网络层。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在所述对神经网络模型中的至少一个网络层进行划分之前,所述方法还包括:
对所述神经网络模型进行划分,得到多个子网络模型,其中,所述多个子网络模型包括所述至少一个网络层所属的目标子网络模型。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
响应于所述神经网络模型包含两个分支网络模型,基于所述两个分支网络模型的并行度和数据量,确定所述两个分支网络模型的划分结果。
7.根据权利要求1至6中任一项所述的方法,其特征在于,在所述得到多个运算块之后,所述方法还包括:
确定所述多个运算块的重复计算率;
若所述重复计算率满足重复计算率限定条件,则确定完成对所述至少一个网络层的划分。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若所述重复计算率不满足所述重复计算率限定条件,重新执行对所述至少一个网络层的划分,直到重新得到的所述多个运算块的重复计算率满足所述重复计算率限定条件,或者,所述多个运算块的数量等于2且所述多个运算块的重复计算率仍不满足所述重复计算率限定条件。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
若所述多个运算块的数量等于2,且所述多个运算块的重复计算率不满足所述重复计算率限定条件,则重新执行对所述神经网络模型的划分。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述多个运算块中至少两个运算块并行执行。
11.根据权利要求1至10中任一项所述的方法,其特征在于,所述方法还包括:
调度所述芯片设备执行所述多个运算块对应的操作指令。
12.一种数据处理方法,其特征在于,应用于芯片设备,所述方法包括:
从片外存储器获取第一运算块的输入数据,其中,通过对神经网络模型的至少一个网络层划分得到的多个运算块包括所述第一运算块,所述多个运算块的最大数据量小于所述芯片设备的片内存储器的存储容量;
依据所述第一运算块的输入数据,执行第一操作指令的处理,得到所述第一运算块的处理结果;
将所述第一运算块的处理结果传输至所述片外存储器。
13.根据权利要求12所述的方法,其特征在于,所述第一运算块包括多个第一子运算块,所述第一操作指令包括所述多个第一子运算块中每一第一子运算块的第一子操作指令,所述执行第一操作指令的处理,包括:
依据所述多个第一子运算块中每一第一子运算块的输入数据和第一子操作指令,获取所述多个第一子运算块中每一第一子运算块的处理结果,其中,所述多个第一子运算块中第一目标子运算块的输入数据为第二目标子运算块的处理结果,所述第二目标子运算块为所述第一运算块中所述第一目标子运算块之前的第一子运算块。
14.根据权利要求12或13所述的方法,其特征在于,所述方法还包括:
在执行所述第一操作指令的同时并行执行第二操作指令,其中,所述第二操作指令用于执行所述至少一个网络层的第二运算块的处理。
15.根据权利要求12至14中任一项所述的方法,其特征在于,所述方法还包括:
从所述片外存储器获取所述神经网络模型的待处理图像数据,其中,所述神经网络模型被编译为多个操作指令,所述多个操作指令包括所述第一操作指令、所述第一操作指令之前的多个第三操作指令和所述第一操作指令之后的多个第四操作指令;
依据所述待处理图像数据,执行所述多个第三操作指令的处理,得到所述第一运算块的输入数据;
依据所述第一运算块的处理结果,执行所述多个第四操作指令的处理,得到所述神经网络模型的处理结果。
16.一种数据处理装置,其特征在于,包括:
获取单元,用于获取芯片设备的片内存储器的存储容量信息;
划分单元,用于依据所述存储容量信息,对神经网络模型中的至少一个网络层进行划分,得到多个运算块,其中,所述多个运算块的最大数据量小于所述存储容量信息对应的存储容量,所述多个运算块被编译为被所述芯片设备执行的操作指令。
17.一种数据处理装置,其特征在于,应用于芯片设备,所述装置包括:
通信单元,用于从片外存储器获取第一运算块的输入数据,其中,通过对神经网络模型的至少一个网络层划分得到的多个运算块包括所述第一运算块,所述多个运算块的最大数据量小于所述芯片设备的片内存储器的存储容量;
处理单元,用于依据所述第一运算块的输入数据,执行第一操作指令的处理,得到所述第一运算块的处理结果;
所述通信单元,还用于将所述第一运算块的处理结果传输至所述片外存储器。
18.一种编译器,其特征在于,包括处理器、存储器,其中,所述存储器用于存储计算机可读指令,所述处理器用于调用所述存储器中存储的指令,以执行权利要求1-11中任一项所述的方法。
19.一种芯片设备,其特征在于,包括处理器、存储器,其中,所述存储器用于存储计算机可读指令,所述处理器用于调用所述存储器中存储的指令,以执行权利要求12-15中任一项所述的方法。
20.一种电子装置,其特征在于,包括如权利要求18所述的编译器和如权利要求19所述的芯片设备。
21.一种计算机可读存储介质,其特征在于,其用于存储计算机程序,其中,当所述计算机程序被处理器执行时,所述处理器实现如权利要求1-15中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010336260.1A CN113554157A (zh) | 2020-04-24 | 2020-04-24 | 数据处理方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010336260.1A CN113554157A (zh) | 2020-04-24 | 2020-04-24 | 数据处理方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113554157A true CN113554157A (zh) | 2021-10-26 |
Family
ID=78129737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010336260.1A Pending CN113554157A (zh) | 2020-04-24 | 2020-04-24 | 数据处理方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113554157A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301903A (zh) * | 2023-05-11 | 2023-06-23 | 杭州登临瀚海科技有限公司 | 一种编译器、ai网络编译方法、处理方法、执行系统 |
-
2020
- 2020-04-24 CN CN202010336260.1A patent/CN113554157A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301903A (zh) * | 2023-05-11 | 2023-06-23 | 杭州登临瀚海科技有限公司 | 一种编译器、ai网络编译方法、处理方法、执行系统 |
CN116301903B (zh) * | 2023-05-11 | 2023-08-08 | 杭州登临瀚海科技有限公司 | 一种编译器、ai网络编译方法、处理方法、执行系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107832839B (zh) | 执行卷积神经网络中的运算的方法和装置 | |
CN109086867B (zh) | 一种基于fpga的卷积神经网络加速系统 | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN108241890B (zh) | 一种可重构神经网络加速方法及架构 | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
CN110058883A (zh) | 一种基于opu的cnn加速方法及系统 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
US20220147795A1 (en) | Neural network tiling method, prediction method, and related apparatus | |
WO2017116924A1 (en) | Neural network training performance optimization framework | |
CN111831254A (zh) | 图像处理加速方法、图像处理模型存储方法及对应装置 | |
CN111882065B (zh) | 映射脉冲神经网络到类脑计算平台的方法、系统及介质 | |
CN113469350B (zh) | 一种适于npu的深度卷积神经网络加速方法和系统 | |
CN115186821B (zh) | 面向芯粒的神经网络推理开销估计方法及装置、电子设备 | |
CN108304925B (zh) | 一种池化计算装置及方法 | |
CN109146065B (zh) | 二维数据的卷积运算方法及装置 | |
CN114995782B (zh) | 数据处理方法、装置、设备和可读存储介质 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN108304926B (zh) | 一种适用于神经网络的池化计算装置及方法 | |
CN113743599B (zh) | 一种卷积神经网络的运算装置及服务器 | |
CN111738435B (zh) | 一种基于移动设备的在线稀疏训练方法及系统 | |
CN114461978B (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
Seto et al. | Small memory footprint neural network accelerators | |
CN117032807A (zh) | 基于risc-v指令集的ai加速处理器架构 | |
CN113554157A (zh) | 数据处理方法及相关产品 | |
CN115130672B (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 |