CN111461296B - 数据处理方法、电子设备和可读存储介质 - Google Patents
数据处理方法、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN111461296B CN111461296B CN202010214661.XA CN202010214661A CN111461296B CN 111461296 B CN111461296 B CN 111461296B CN 202010214661 A CN202010214661 A CN 202010214661A CN 111461296 B CN111461296 B CN 111461296B
- Authority
- CN
- China
- Prior art keywords
- network
- sub
- network layer
- fusion
- processor
- 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.)
- Active
Links
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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/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/08—Learning methods
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- 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)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种数据处理方法、装置、电子设备和可读存储介质,针对子网络划分处理后的目标神经网络,所述目标神经网络包括至少一个子网络;采用本方法能够至少在进行所述子网络的编译和运行的过程中,仅需要一次输入操作和一次输出操作即可,相比于对所述子网络中多个网络层进行分别编译运行,所需的多次输入操作和多次输出操作,本实施例的数据处理方法更高效,提高了运算速率。
Description
技术领域
本申请涉及机器学习技术领域,特别是涉及一种数据处理方法、装置、电子设备和可读存储介质。
背景技术
深度学习一般分为训练和推理两个过程,训练过程用于搜索和求解神经网络模型的最优参数;而推理过程则用于根据经过训练的神经网络模型,对输入的新的数据进行推理,即前向运算,得到目标输出。
目前,基于caffe等深度学习框架构建的神经网络模型的前向运算过程,是由处理器逐层对神经网络的每层进行编译和运行操作的,即每层的操作为单独的运算,每层运算时均需要进行至少一次输入拷贝和至少一次输出拷贝。
总之,目前的神经网络的逐层前向运算的方式,存在运算速率低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高运算速率的数据处理方法、装置、电子设备和可读存储介质。
第一方面,一种数据处理方法,所述方法包括:
获取目标神经网络的模型数据和权值数据,其中,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;
确定所述目标神经网络中各个子网络的执行顺序;
根据所述目标神经网络的模型数据、权值数据以及所述各个子网络的执行顺序,对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
在其中一个实施例中,所述方法还包括如下步骤:
获取所述目标神经网络对应的原始神经网络;
根据所述原始神经网络中各个网络层的配置信息确定所述各个网络层的融合属性;
根据所述原始神经网络中各个网络层的融合属性及各个网络层的依赖关系,将具有相同融合属性的至少一个网络层融合为一个子网络。
在其中一个实施例中,所述网络层的融合属性包括第一融合属性和第二融合属性;所述根据所述原始神经网络中各个网络层的配置信息确定所述各个网络层的融合属性的步骤,包括:
获取各个网络层的预设的融合属性函数的返回值;
若所述网络层的返回值为第一返回值,则确定所述网络层的融合属性为第一融合属性;
若所述网络层的返回值为第二返回值,则确定所述网络层的融合属性为第二融合属性。
在其中一个实施例中,所述根据所述原始神经网络中各个网络层的融合属性及各个网络层的依赖关系,将具有相同融合属性的至少一个网络层融合为一个子网络的步骤,包括:
根据各个网络层的依赖关系,确定各个网络层的拓扑排序;
根据所述拓扑排序,若当前网络层的融合属性为第一融合属性,则在所述当前网络层的融合属性与所述当前网络层的上一网络层的融合属性相同时,将所述当前网络层与所述当前网络层的上一网络层划分为同一子网络;
根据所述拓扑排序,若所述当前网络层的融合属性为第二融合属性,则将所述当前网络层单独划分为一个子网络。
在其中一个实施例中,所述根据所述原始神经网络中各个网络层的融合属性及各个网络层的依赖关系,将具有相同融合属性的至少一个网络层融合为一个子网络的步骤,包括:
根据各个网络层的依赖关系,确定各个网络层的拓扑排序;
根据所述拓扑排序,若当前网络层的融合属性与所述当前网络层的上一网络层的融合属性相同,则所述当前网络层与所述当前网络层的上一网络层属于同一子网络;
根据所述拓扑排序,若所述当前网络层的融合属性与所述当前网络层的上一网络层的融合属性不同,则所述当前网络层与所述当前网络层的上一网络层属于不同的子网络。
在其中一个实施例中,所述方法还包括:
根据各个网络层中预设的融合函数,将所述子网络的各个网络层对应的算子添加至同一融合算子中。
在其中一个实施例中,所述对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果步骤,包括:
对各个所述融合算子进行编译,获得各个所述融合算子对应的计算指令;
根据各个所述融合算子的计算指令以及各个子网络的权值数据及输入数据运行各个所述子网络,获得所述目标神经网络的输出结果。
在其中一个实施例中,所述确定所述目标神经网络中各个子网络的执行顺序包括如下步骤:
若当前子网络中的至少一个网络层与其他子网络的至少一个网络层存在依赖关系时,则确定所述当前子网络与其他子网络具有依赖关系,从而确定各个子网络之间的依赖关系;
根据各个所述子网络的依赖关系确定各个所述子网络的执行顺序。
在其中一个实施例中,各个所述子网络的执行顺序,以及各个所述子网络包含的网络层信息存储于caffe中创建的目标对象中。
在其中一个实施例中,根据所述目标神经网络的模型数据、权值数据以及所述各个子网络的执行顺序对各个所述子网络进行整体编译及运行,获得所述目标神经网络的输出结果的步骤,包括:
确定各个所述子网络的融合属性,其中,所述子网络的融合属性与所述子网络中的各个网络层的融合属性相同;
根据各个所述子网络的融合属性,确定各个所述子网络对应的目标处理器;
根据各个所述子网络的执行顺序,各个所述子网络对应的目标处理器分别根据各个所述子网络的模型数据及权值数据对各个所述子网络的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
在其中一个实施例中,所述子网络的融合属性包括第一融合属性和第二融合属性;所述方法还包括如下步骤:
若所述子网络的融合属性为第一融合属性,则确定所述子网络对应的目标处理器为人工智能处理器;
若所述子网络的融合属性为第二融合属性,则确定所述子网络对应的目标处理器为通用处理器。
第二方面,一种数据处理装置,所述装置包括:
网络数据获取模块,用于获取目标神经网络的模型数据和权值数据,其中,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;
执行顺序确定模块,用于确定所述目标神经网络中各个子网络的执行顺序;
神经网络运算模块,用于根据所述目标神经网络的模型数据、权值数据以及所述各个子网络的执行顺序,对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
第三方面,一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取目标神经网络的模型数据和权值数据,其中,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;
确定所述目标神经网络中各个子网络的执行顺序;
根据所述目标神经网络的模型数据、权值数据以及所述各个子网络的执行顺序,对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
在其中一个实施例中,所述处理器包括第一处理器和第二处理器,所述第一处理器为人工智能处理器,所述第二处理器为通用处理器。
第四方面,一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取目标神经网络的模型数据和权值数据,其中,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;
确定所述目标神经网络中各个子网络的执行顺序;
根据所述目标神经网络的模型数据、权值数据以及所述各个子网络的执行顺序,对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
上述数据处理方法、装置、电子设备和可读存储介质,针对子网络划分处理后的目标神经网络,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;电子设备可以在对该子网络进行运算时,可以对该子网络中的所有网络层的所有算子进行整体编译,得到该子网络的计算指令,然后根据该子网络的输入数据、该子网络的权值数据以及该子网络的计算指令得到该子网络的输出数据;也就是说,至少针对该子网络而言,相比于逐层对该子网络中的各网络层进行运算所需的多个输出操作和多次输出操作而言,只需要进行一次输入操作和一次输出操作即可,提高了运算速率。
附图说明
图1a为一个实施例中数据处理方法的应用环境图;
图1b为一个实施例中数据处理方法的流程示意图;
图2为一个实施例中数据处理方法的流程示意图;
图3为一个实施例中目标神经网络的示意图;
图4为一个实施例中数据处理方法的流程示意图;
图5为一个实施例中数据处理方法的流程示意图;
图6为一个实施例中数据处理装置的结构框图;
图7为一个实施例中数据处理装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据处理方法,可以应用于主板、计算机设备等具有神经网络处理功能的电子设备中,该电子设备可以是同构的电子设备,也可以是异构的电子设备,如参照图1a所示,该电子设备可以包括第一处理器11、第二处理器12和存储器13。其中第一处理器11和第二处理器12可以但不限于是如下多种组合中的一种组合:CPU(中央处理器)和人工智能处理器,CPU和DSP(Digital Signal Processing,数字信号处理器),CPU和GPU(图像处理器),GPU和人工智能处理器。存储器13存储有计算机程序,第一处理器11可以在执行计算机程序时实现神经网络运算,用于对输入的图像数据、文本数据、语音数据等进行处理,从而实现模式识别、自动控制、预测估计等多种功能。第二处理器12可以在第一处理器进行神经网络运算过程中,接收第一处理器发送的与第二处理器相关的计算指令和输入数据,并返回计算结果,实现神经网络的部分网络层的运算。可以理解的是,上述第一处理器11或第二处理器12也可以独立实现上述神经网络运算。
本实施例中的目标神经网络可以基于caffe等神经网络架构,也可以通过其他程序语言来进行架构。各种类型的神经网络可以由各种类型的网络层通过有向连接组合构建,包括但不限于卷积层、池化层、全连接层、激活层等网络层;每个网络层对应至少一个算子,例如激活层可以对应relu算子,卷积层可以对应卷积算子。一般地,神经网络运算是由处理器逐层运算的,可以对当前网络层中的算子进行编译得到计算指令,然后输入当前网络层的上一网络层的输出数据,根据上述计算指令对上述输入的数据进行处理,得到当前网络层的输出数据;也就是说,每层运算时均需要进行至少一次输入操作和至少一次输出操作,存在运算速率低的问题。
而本实施例的数据处理方法,应用于同构的电子设备中时,该同构的电子设备中的处理器可以通过将处理器支持的多个网络层尽可能的划分为一个子网络,在对该子网络进行运算时,可以对该子网络中的所有网络层的所有算子进行整体编译,得到该子网络的计算指令,然后将该子网络的输入数据和该子网络的计算指令得到该子网络的输出数据。也就是说,至少针对该子网络而言,相比于逐层对该子网络中的各网络层进行运算所需的多个输出操作和多次输出操作而言,只需要进行一次输入操作和一次输出操作即可,提高了运算速率。类似地,本实施例的数据处理方法应用于异构的电子设备中时,第一处理器或第二处理器均可以对该处理器支持的多个网络层进行上述的融合编译处理,也可以单由第二处理器对第二处理器支持的多个网络层进行上述的融合编译和运行处理,第一处理器对第二处理器不支持的其它子网络可以进行逐层编译和运行处理;总之,上述方案均在本方法的保护范围之内。
为了简化说明,以本实施例的数据处理方法应用于异构的电子设备为例来进行说明,且以第一处理器为中央处理器,第二处理器为人工智能处理器为例。
在一个实施例中,如图1b所示,本申请实施例提供了一种数据处理方法,以该方法应用于图1a中的电子设备为例进行说明,上述方法包括以下步骤:
S101,获取目标神经网络的模型数据和权值数据,其中,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子。
其中,目标神经网络的权值数据可以是训练好的权值数据,也可以是初始权值数据;所述目标神经网络的模型数据可以包括但不限于所述目标神经网络的输入数据、各子网络中的融合算子、各子网络的依赖关系(即有向连接关系或输出输出关系)等。
其中,每个所述子网络中的所述网络层具有相同的融合属性,每个子网络中的至少一个网络层能够被融合为一个网络层。即上述子网络可以对应一个融合算子,该融合算子中可以包括所述子网络中各网络层的算子;可以理解的是,各网络层的算子存在依赖关系,该依赖关系与各网络层的依赖关系一致。可选地,各个网络层的融合属性可以用于表示该网络层能否在第一处理器上运行。例如,当第一处理器支持该网络层的融合操作时,则该网络层的融合属性可以为第一融合属性。当第一处理器不支持该网络层的融合操作时,则该网络层的融合属性可以为第二融合属性。
S102,确定所述目标神经网络中各个子网络的执行顺序。
具体地,电子设备可以获取所述目标神经网络中各个子网络之间的依赖关系,并根据所述各子网络之间的依赖关系,确定所述子网络之间的执行顺序。其中,该目标神经网络的各个子网络的依赖关系可以是预先存储于caffe中创建的目标对象中的。该各个子网络之间的依赖关系是指各个子网络之间的输入关系和输出关系。
S103,根据所述目标神经网络的模型数据、权值数据以及所述各个子网络的执行顺序,对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
具体地,电子设备可以获取目标神经网络的模型数据中的输入数据并进行预处理操作,或者直接输入目标神经网络中,由目标神经网络中的第一个网络层或子网络进行预处理,然后根据所述各个子网络的执行顺序,进行S103中的神经网络运算。可选地,该输入数据可以为图像数据、文本数据、语音数据等,预处理操作可以包括:减去均值处理、归一化处理等。
上述子网络的融合算子中包括该子网络的所有网络层的算子;而对该融合算子进行编译可以得到针对该融合算子的计算指令,即该子网络的计算指令,而无需对子网络中所有网络层的算子进行逐一编译;因此针对该子网络的运算,可以根据该子网络的输入数据、该子网络的权值数据以及该子网络的计算指令,得到该子网络的输出数据,即仅需一次输入操作和一次输出操作。而如果对该子网络中的各网络层中的算子进行分别编译,得到各网络层的计算指令,针对各网络层的运算,可以根据该网络层的输入数据、该网络层的权值数据以及该网络层的计算指令,得到该网络层的输出数据,即针对该子网络的每一个网络层的运算,均需要一次输入操作和一次输出操作。相比而言,对该子网络的融合算子进行编译可以简化运算时的输入操作和输出操作,提高运算速率。
在一个实施方式中,上述步骤S103中,所述对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果步骤,包括:
对各个所述融合算子进行编译,获得各个所述融合算子对应的计算指令;
根据各个所述融合算子的计算指令以及各个子网络的权值数据及输入数据运行各个所述子网络,获得所述目标神经网络的输出结果。
具体地,电子设备也可以先对各个子网络的融合算子进行整体编译,获得各个融合算子对应的计算指令,再按照各个子网络的执行顺序,根据该融合算子的计算指令及各个融合算子的输入数据运行各个子网络对应的融合算子,获得目标神经网络的输出结果。当然,电子设备可以在网络的运行过程中,根据各个子网络的执行顺序,对各个子网络的融合算子进行整体编译,并运行各个子网络,获得目标神经网络的输出结果。
在一个实施方式中,参照图2所示,上述步骤S103还可以包括:
S201,确定各个所述子网络的融合属性,其中,所述子网络的融合属性与所述子网络中的各个网络层的融合属性相同;
S202,根据各个所述子网络的融合属性,确定各个所述子网络对应的目标处理器;
S203,根据各个所述子网络的执行顺序,各个所述子网络对应的目标处理器分别根据各个所述子网络的模型数据及权值数据对各个所述子网络的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
可选地,所述子网络的融合属性包括第一融合属性和第二融合属性,各个子网络的目标处理器可以包括第一处理器和第二处理器,该第一处理器可以是人工智能处理器,该第二处理器可以是CPU、GPU、DSP或FPGA等通用处理器。当然,该第一处理器和第二处理器也可以均是通用处理器。同上,各个子网络的融合属性可以用于表示该子网络能否在第一处理器上运行。例如,当第一处理器支持该子网络的融合操作时,则该子网络的融合属性可以为第一融合属性。当第一处理器不支持该子网络的融合操作时,则该子网络的融合属性可以为第二融合属性。
进一步地,若该子网络的融合属性为第一融合属性,则可以确定该子网络对应的目标处理器为第一处理器。若该子网络的融合属性为第二融合属性,则可以确定该子网络对应的目标处理器为第二处理器。再进一步地,电子设备在根据各个子网络的执行顺序运行该目标神经网络时,若当前子网络的融合属性为第一融合属性,则第一处理器对该当前子网络的融合算子进行整体编译和运行,获得该当前子网络的输出结果,该当前子网络的输出结果可以包括所述子网络中各网络层的输出数据。若当前子网络的融合属性为第二融合属性,则第二处理器对该当前子网络的融合算子进行整体编译和运行,获得该当前子网络的输出结果,该当前子网络的输出数据可以包括所述子网络中各网络层的输出数据。本申请实施例中,通过对各个子网络进行整体编译和运行,不仅可以减少不同网络层之间的输入数据或输出数据的拷贝过程,可以减少不同处理器之间的数据拷贝,提高了运算效率。
可选地,第一处理器可以为人工智能处理器,第二处理器可以为通用处理器。若所述子网络的融合属性为第一融合属性,则确定所述子网络对应的目标处理器为人工智能处理器;若所述子网络的融合属性为第二融合属性,则确定所述子网络对应的目标处理器为通用处理器,如中央处理器、GPU或DSP等等。可以理解的是,电子设备可以调用通用处理器处理所述第二融合属性的子网络,可以实现对第二融合属性的子网络的整体编译处理;同样地,调用人工智能处理器处理所述第一融合属性的子网络,可以实现对第一融合属性的子网络的整体编译处理。
可选地,在一个实施例中,电子设备可以通过遍历该目标神经网络对应的原始网络,确定该目标神经网络中各个子网络的执行顺序。具体地,上述步骤S102可以包括如下步骤:
若当前子网络中的至少一个网络层与其他子网络的至少一个网络层存在依赖关系时,则确定所述当前子网络与其他子网络具有依赖关系,从而确定各个子网络之间的依赖关系;根据各个所述子网络的依赖关系确定各个所述子网络的执行顺序。
具体地,针对所述各子网络,从所述子网络中的任一网络层开始遍历所述子网络的所有网络层,判断所述网络层的邻接网络层是否在所述子网络中,若所述邻接网络层不在所述子网络中,则确定该网络层与其邻接网络层属于不同的子网络,且两个不同的子网络之间存在依赖关系。若该网络层与其邻接网络层均在该子网络内,则网络层与其邻接网络层属于同一子网络。
进一步的,可以根据各个子网络之间的依赖关系,确定各个子网络的执行顺序。若该邻接网络层不在该子网络中,且所述邻接网络层为所述子网络层的上邻接网络层,则确定所述子网络的执行顺序在所述上邻接网络层所属的子网络的执行顺序之后。若所述邻接网络层不在所述子网络中且所述邻接网络层为所述子网络层的下邻接网络层,则确定所述子网络的执行顺序在所述下邻接网络层所属的子网络的执行顺序之前。其中,所述网络层的邻接网络层为与所述网络层具有输入输出关系的网络层,上邻接网络层为所述网络层的输入网络层,下邻接网络层为所述网络层的输出网络层。
例如,如图3所示,该目标神经网络对应的原始网络包括5个网络层,其中,网络层1-3同属于第一个子网络,网络层4属于第二个子网络,网络层5属于第三个子网络。由于该第一个子网络中的网络层2与第二个子网络的网络层4之间存在依赖关系,则可以确定第一个子网络和第二个子网络之间存在依赖关系。该第一个子网络中的网络层3与第三个子网络的网络层5之间存在依赖关系,则可以确定该第一个子网络与第三个子网络之间存在依赖关系。该第二个子网络中的网络层4与第三个子网络的网络层5之间存在依赖关系,则可以确定该第二个子网络与第三个子网络之间存在依赖关系。进一步地,由于第三个子网络的输入依赖于第二个子网络和第三个子网络的输出,第二个子网络的输入依赖于第一个子网络中网络层2的输出,因此,根据各个子网络的依赖关系,可以确定上述各个子网络的执行顺序为第一个子网络、第二个子网络和第三个子网络。
可选地,各个所述子网络的执行顺序,以及各个所述子网络包含的网络层信息存储于caffe中创建的目标对象中。可选地,在另一个实施例中,电子设备可以通过获取caffe的目标对象中预存的子网络执行顺序,直接确定该目标神经网络中各个子网络的执行顺序。
本实施例的数据处理方法中,针对子网络划分处理后的目标神经网络,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;电子设备可以在对该子网络进行运算时,可以对该子网络中的所有网络层的所有算子进行整体编译,得到该子网络的计算指令,然后根据该子网络的输入数据、该子网络的权值数据以及该子网络的计算指令得到该子网络的输出数据;也就是说,至少针对该子网络而言,相比于逐层对该子网络中的各网络层进行运算所需的多个输出操作和多次输出操作而言,只需要进行一次输入操作和一次输出操作即可,提高了运算速率。
可选地,在一个实施例中,参照图4所示,在图1b所示的数据处理方法的基础上,本实施例涉及对原始神经网络进行划分子网络处理,得到目标神经网络的过程,具体可以包括:
S401,获取所述目标神经网络对应的原始神经网络。
所述原始神经网络的模型数据可以包括但不限于所述原始神经网络的输入数据、各网络层中的配置信息、各网络层的依赖关系(即有向连接关系或输出输出关系)等,其中,网络层的配置信息至少可以包括该网络层的算子类型。
S402,根据所述原始神经网络中各个网络层的配置信息,确定所述各个网络层的融合属性。
具体地,各个网络层中的配置信息可以是各个网络层中融合函数等预先配置的信息,电子设备可以根据各个网络层中的融合函数,确定各个网络层的融合属性。
可选地,网络层的融合属性包括第一融合属性和第二融合属性,电子设备可以包括第一处理器和第二处理器。例如,电子设备可以预先判断各网络层是否可以被第一处理器支持进行融合操作。针对各网络层,可以在与该第一处理器关联的预设函数库中查找是否存在所述网络层的各算子的逻辑、用于融合算子的逻辑、以及用于调用各逻辑的接口,若存在该网络层中所有算子的逻辑、用于融合算子的逻辑、以及用于调用各逻辑的接口,则确定第一处理器支持该网络层进行融合操作,该网络层的融合属性可以确定为第一融合属性。若不存在该网络层中任一算子的逻辑或不存在用于融合算子的逻辑、或不存在调用任一逻辑的接口,则第一处理器不支持该网络层进行融合操作,该网络层的融合属性可以确定为第二融合属性。示例性地,上述预设函数库中存储有各类算子的逻辑代码,上述各类算子的逻辑代码经编译得到的指令可以为上述第一处理器所识别和执行。
进一步地,上述第一处理器可以为人工智能处理器,第二处理器可以为通用处理器。电子设备可以对所述网络层中的算子判断是否为人工智能处理器所支持,来确定所述网络层的融合属性。此外,在一种实施方式中,网络层的配置信息还可以包括该网络层的融合属性,则电子设备可以解析所述配置信息获的所述网络层的融合属性。
可选地,所述网络层的融合属性包括第一融合属性和第二融合属性;上述步骤S402可以包括:
获取各个网络层的预设的融合属性函数的返回值;
若所述网络层的返回值为第一返回值,则确定所述网络层的融合属性为第一融合属性;若所述网络层的返回值为第二返回值,则确定所述网络层的融合属性为第二融合属性。
示例性地,在各网络层中添加函数mfus_supported()中返回true或false表示是否支持融合操作,其中mfus_supported()为预先定义的融合属性函数,可以判断上述预设函数库中是否存在针对所述网络层的各算子的逻辑以及用于调用所述逻辑的接口,若是,返回true,即第一融合属性;若否,则返回false,即第二融合属性。示例性的,若某网络层中包括某些不常用的算子和某些较复杂的检测算子,则上述预设函数库中不存在相应逻辑和接口,则该网络层的中的mfus_supported()返回值为false,即该网络层为第二融合属性。示例性地,若上述预设函数库为人工智能处理器所关联的函数库,则人工智能处理器可以支持第一融合属性的子网络整体编译,而不支持第二融合属性的子网络整体编译;若上述预设函数库为通用处理器所关联的函数库,则通用处理器可以支持第一融合属性的子网络整体编译,而不支持第二融合属性的子网络整体编译。
S403,根据所述原始神经网络中各个网络层的融合属性及各个网络层的依赖关系,将具有相同融合属性的至少一个网络层融合为一个子网络。
具体地,当所述原始神经网络中各个网络层的融合属性全相同时,则所述原始神经网络中各个网络层可以融合为一个子网络。当所述原始神经网络中各个网络层的融合属性不全相同时,则所述原始神经网络中各个网络层可以融合为多个子网络。
可选地,可以通过各个网络层中设置的融合函数,将具有相同属性的至少一个网络层融合为一个子网络。进一步地,所述方法还可以包括:
根据各个网络层中预设的融合函数,将所述子网络的各个网络层对应的算子添加至同一融合算子中。具体地,电子设备可以根据预先定义的融合类创建所述子网络的融合算子,并通过每一层的fuser()函数,将所述子网络中各网络层中的算子添加到所述融合算子中;示例性地,电子设备可以遍历所述子网络中的各网络层,将各网络层中的算子根据各网络层的拓扑排序按顺序添加到融合算子中。
可选地,所述方法还包括存储子网络的划分结果的过程,具体可以包括:创建各个所述子网络的网络标识与所述各个所述子网络包含的至少一个网络层的标识的对应关系,并存储所述对应关系。具体地,电子设备将所述对应关系以表格或网络结构图的方式进行显示。
在一个实施例中,参照图5所示,上述步骤S403可以包括:
S501,根据各个网络层的依赖关系,确定各个网络层的拓扑排序;
S502,根据所述拓扑排序,若当前网络层的融合属性为第一融合属性,则在所述当前网络层的融合属性与所述当前网络层的上一网络层的融合属性相同时,将所述当前网络层与所述当前网络层的上一网络层划分为同一子网络;
S503,根据所述拓扑排序,若所述当前网络层的融合属性为第二融合属性,则将所述当前网络层单独划分为一个子网络。
需要说明的是,所述网络层的上一网络层一般为该网络层的输入网络层,下一网络层为该网络层的输出网络层;而对拓扑排序中的各网络层而言,所述网络层的上一网络层为该网络层在拓扑排序中的上一网络层,所述网络层的下一网络层为该网络层在拓扑排序中的下一网络层。
可以理解的是,上述目标神经网络中的各子网络的网络层需符合拓扑排序;其中,各子网络的网络层符合拓扑排序具体是指:将目标神经网络中各网络层按照各网络层之间的有向连接关系排成一个线性序列,则对于任意一组存在有向连接关系的网络层U和网络层V而言(从网络层U指向网络层V),网络层U在线性序列中排列在网络层V之前;当该子网络为该线性序列中的某一段时,该子网络符合拓扑排序,如此,可以保证目标神经网络中该子网络和其它子网络或网络层之间的输入输出关系正常。
具体地,根据目标神经网络中各网络层之间的有向连接关系(输入输出关系),将目标神经网络中各网络层组成一个序列,对于任一组存在有向连接关系的两个网络层(输入层和输出层)而言,输入层在序列中位于输出层之前,可以根据各网络层在序列中的排列顺序进行编号,得到各网络层的索引,索引可以从小到大编号。从上述序列中的第一网络层开始,可以将所述第一网络层作为初始子网络,判断所述第一网络层的下一网络层是否与所述第一网络层的融合属性相同,若是,则将所述下一网络层添加到所述初始子网络中;若否,则将最终的初始子网络作为所述原始神经网络的一个子网络,并将所述下一网络层作为新的第一子网络,再次进行上述划分子网络的运算,直至遍历所述原始神经网络的所有网络层,得到划分的多个子网络。
参照图3所示,如果基于图的划分,将目标神经网络中各网络层看做网络层,根据各网络层之间的有向连接关系(在caffe中,各网络层之间通过blob类传递数据的,可以看做连接网络层的有向边),便得到了一个有向图;图中的网络层标记有融合属性,如网络层1,2,3,5的融合属性为第一融合属性,网络层4的融合属性为第二融合属性。如此,划分子网络的问题似乎可以转化成在这样的图中寻找具有相同属性的最大连通子图的过程,基于最大子图的划分会得到两个子网络:[1,2,3,5]和[4],但这种划分得到的子网络存在输入输出关系上的混乱,例如,网络层5会在网络层4之前计算,而网络层4和网络层5之间的有向连接关系为从网络层4指向网络层5,即网络层5的输入数据包括网络层4的输出数据,即不一定符合拓扑排序。
而在本申请中,通过上述各个网络层之间的依赖关系,可以首先确定各个网络层拓扑排序,例如,各个网络层的拓扑排序可以是:网络层1-网络层2-网络层3-网络层4-网络层5。然后根据拓扑排序进行子网划分。针对图3所示的原始神经网络,可以从索引为1的网络层1开始(即符合拓扑排序的第一网络层),将网络层1作为初始子网络,判断索引为2的网络层2(即符合拓扑排序的第二网络层)是否与网络层1的融合属性相同,因为二者融合属性相同,因此将网络层2加入网络层1所属的初始子网络中;接着判断索引为3的网络层3是否与网络层2的融合属性相同,因为二者融合属性相同,因此将网络层3加入网络层2所属的初始子网络中。接着判断索引为4的网络层4是否与网络层3的融合属性是否相同,因为二者融合属性不同,且网络层4的融合属性为第二融合属性,因此将最终的初始子网络[1,2,3]作为一个子网络,并将网络层4作为另一个初始子网络。进一步地,电子设备可以判断索引为5的网络层5是否与网络层4的融合属性相同,因为二者融合属性不同,因此将最终的初始子网络[4]作为一个子网络,以及将仅剩的网络层5作为一个子网络,即划分得到三个子网络:[1,2,3]、[4]和[5]。
基于此,原始神经网络将被划分成下表中的三个子网络:
子网络 | 包含的层的索引 |
subnet[0] | 1,2,3 |
subnet[1] | 4 |
subnet[2] | 5 |
此处示例上述的另一种符合拓扑排序的子网络划分方法,针对图3所示的原始神经网络,可以从索引为2的网络层2开始,当网络层2的融合属性为第一融合属性,且网络层2的融合属性与所述网络层2的上一网络层(网络层1)的融合属性相同,则网络层2与网络层1划分为同一子网络;当网络层3的融合属性为第一融合属性,且网络层3的融合属性与所述网络层3的上一网络层(网络层2)的融合属性相同,则网络层3与网络层2划分为同一子网络。当网络层4的融合属性为第二融合属性,则网络层4单独划分为一个子网络。网络层5的融合属性为第一融合属性,且网络层5的融合属性与所述网络层5的上一网络层(网络层4)的融合属性不同,则网络层5单独划分为一个子网络。
在一个实施例中,上述步骤S403可以包括:
根据各个网络层的依赖关系,确定各个网络层的拓扑排序;
根据所述拓扑排序,若当前网络层的融合属性与所述当前网络层的上一网络层的融合属性相同,则所述当前网络层与所述当前网络层的上一网络层属于同一子网络;
根据所述拓扑排序,若所述当前网络层的融合属性与所述当前网络层的上一网络层的融合属性不同,则所述当前网络层与所述当前网络层的上一网络层属于不同的子网络。
示例性地,通过上述各个网络层之间的依赖关系,可以首先确定各个网络层拓扑排序,例如,各个网络层的拓扑排序可以是:网络层1-网络层2-网络层3-网络层4-网络层5,其中,网络层1、2、5的融合属性为第一融合属性,网络层3、4的融合属性为第二融合属性。则可以将网络层1和2划分为一个子网络,将网络层3和4划分为一个子网络,将网络层5划分为一个子网络。
本实施例的数据处理方法中,可以根据原始神经网络的各网络层的配置信息,确定所述各网络层的融合属性,并根据所述各网络层的融合属性和各网络层的依赖关系,对所述原始神经网络进行子网络划分处理,得到子网络划分处理后的目标神经网络。
需要说明的是,上述神经网络运算可以但不限于是reshape运算、前向运算(forward)、后向运算等运算类型或者各运算类型的组合。一般地,在进行前向运算的过程中,还可以进行reshape运算,例如针对当前网络层,可以先通过reshape运算对当前网络层的上一网络层的输出结果或中间结果进行初始化,以适应当前网络层的输入要求,然后进行forward运算;例如(32,3,28,28)表示32张3通道的28×28像素的彩色图片,为当前网络层的上一网络层的输出结果;(32,3,14,56)表示32张3通道的14×56像素的彩色图片,为当前网络层的输入要求,则可以进行Reshape处理,将(32,3,28,28)的彩色图片转换为(32,3,14,56)的彩色图片,相当于对输入数据中每张彩色图片中各颜色通道的图片进行宽度上的升尺度处理和高度上的降尺度处理。具体地,在caffe中,Reshape为caffe中对每一个输出或中间blob存储的形状进行初始化。
具体地,此处基于caffe的角度,对本实施例中的数据处理方法进行详细描述,参见如下:
在caffe中,目标神经网络的配置信息可以体现为caffe中目标神经网络的配置文件prototxt,上述融合属性也可以在caffe的数据结构文件caffe.proto中预先定义;caffe可以根据目标神经网络的配置文件创建net(网络)对象并初始化;再创建一个subnet(子网络)对象并初始化,用于存放所有划分的子网络对象;然后创建spliter类(分离)对象,调用spliter类对象的split方法,该类用于对目标神经网络进行划分子网络处理,得到至少一个subnet对象,存入subnets集合;创建spliter类时可以根据各网络层之间的有向连接关系构建图graph,通过对subnets集合解析得到图中graph中各子网络之间的输入输出关系,并添加到subnets对象中;对创建的net对象(目标神经网络)使用net中forward函数进行前向运算,forward函数关联有各子网络中的算子以及计算模式参数,其中,计算模式包括融合模式和普通模式,融合模式对应本实施例中的数据处理方法;若forward中的计算模式参数为融合模式,则针对人工智能处理器支持的subnet对象(即第一融合属性的子网络),通过预先定义的fusion类创建一个针对该subnet对象的融合算子的对象,然后遍历所述subnet对象中的所有网络层,通过所述subnet对象中每一网络层中预先定义的fuser()函数,将该网络层所使用的算子全部添加至该融合算子,然后编译融合算子,得到融合算子对应的该subnet对象的计算指令,同时根据subnets对象中各子网络之间的输入输出关系,获得该subnets对象的输入数据,连同该subnet对象的计算指令发送给人工智能处理器处理,得到人工智能处理器返回的计算结果作为该subnets对象的输出数据。
可以理解的是,上述的caffe可以为caffe的各类适用版本,例如Cambricon caffe这样的改进版本。
应该理解的是,虽然图1b-2,4-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1b-2,4-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种数据处理装置,包括:网络数据获取模块61、执行顺序确定模块62和神经网络运算模块63,其中:
网络数据获取模块61,用于获取目标神经网络的模型数据和权值数据,其中,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;
执行顺序确定模块62,用于确定所述目标神经网络中各个子网络的执行顺序;
神经网络运算模块63,用于根据所述目标神经网络的模型数据、权值数据以及所述各个子网络的执行顺序,对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
可选地,参照图7所示,在上述图6的基础上,所述装置还可以包括:
原始网络获取模块64,用于获取所述目标神经网络对应的原始神经网络;
融合属性确定模块65,用于根据所述原始神经网络中各个网络层的配置信息确定所述各个网络层的融合属性;
子网络划分模块66,用于根据所述原始神经网络中各个网络层的融合属性及各个网络层的依赖关系,将具有相同融合属性的至少一个网络层融合为一个子网络。
可选地,所述网络层的融合属性包括第一融合属性和第二融合属性;所述融合属性确定模块65可以包括:
函数值返回单元,用于获取各个网络层的预设的融合属性函数的返回值;
第一融合属性确定单元,用于若所述网络层的返回值为第一返回值,则确定所述网络层的融合属性为第一融合属性;
第二融合属性确定单元,用于若所述网络层的返回值为第二返回值,则确定所述网络层的融合属性为第二融合属性。
可选地,所述子网络划分模块66具体用于根据各个网络层的依赖关系,确定各个网络层的拓扑排序;根据所述拓扑排序,若当前网络层的融合属性为第一融合属性,则在所述当前网络层的融合属性与所述当前网络层的上一网络层的融合属性相同时,将所述当前网络层与所述当前网络层的上一网络层划分为同一子网络;根据所述拓扑排序,若所述当前网络层的融合属性为第二融合属性,则将所述当前网络层单独划分为一个子网络。
可选地,所述子网络划分模块66具体用于根据各个网络层的依赖关系,确定各个网络层的拓扑排序;根据所述拓扑排序,若当前网络层的融合属性与所述当前网络层的上一网络层的融合属性相同,则所述当前网络层与所述当前网络层的上一网络层属于同一子网络;根据所述拓扑排序,若所述当前网络层的融合属性与所述当前网络层的上一网络层的融合属性不同,则所述当前网络层与所述当前网络层的上一网络层属于不同的子网络。
可选地,参照图7所示,所述装置还包括:
算子融合模块67,用于根据各个网络层中预设的融合函数,将所述子网络的各个网络层对应的算子添加至同一融合算子中。
可选地,所述神经网络运算模块63可以包括:
编译单元,用于对各个所述融合算子进行编译,获得各个所述融合算子对应的计算指令;
运算单元,用于根据各个所述融合算子的计算指令以及各个子网络的权值数据及输入数据运行各个所述子网络,获得所述目标神经网络的输出结果。
可选地,所述执行顺序确定模块62可以包括:
依赖关系确定单元,用于若当前子网络中的至少一个网络层与其他子网络的至少一个网络层存在依赖关系时,则确定所述当前子网络与其他子网络具有依赖关系,从而确定各个子网络之间的依赖关系;
执行顺序确定单元,用于根据各个所述子网络的依赖关系确定各个所述子网络的执行顺序。
可选地,各个所述子网络的执行顺序,以及各个所述子网络包含的网络层信息存储于caffe中创建的目标对象中。
可选地,所述神经网络运算模块63可以包括:
第三融合属性确定单元,用于确定各个所述子网络的融合属性,其中,所述子网络的融合属性与所述子网络中的各个网络层的融合属性相同;
目标处理器确定单元,用于根据各个所述子网络的融合属性,确定各个所述子网络对应的目标处理器;
目标处理器运算单元,用于根据各个所述子网络的执行顺序,各个所述子网络对应的目标处理器分别根据各个所述子网络的模型数据及权值数据对各个所述子网络的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
可选地,所述子网络的融合属性包括第一融合属性和第二融合属性;装置还可以包括:
第一目标处理器确定模块68,用于若所述子网络的融合属性为第一融合属性,则确定所述子网络对应的目标处理器为人工智能处理器;
第二目标处理器确定模块69,用于若所述子网络的融合属性为第二融合属性,则确定所述子网络对应的目标处理器为通用处理器。
本实施例的数据处理装置中,针对子网络划分处理后的目标神经网络,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;电子设备可以在对该子网络进行运算时,可以对该子网络中的所有网络层的所有算子进行整体编译,得到该子网络的计算指令,然后根据该子网络的输入数据、该子网络的权值数据以及该子网络的计算指令得到该子网络的输出数据;也就是说,至少针对该子网络而言,相比于逐层对该子网络中的各网络层进行运算所需的多个输出操作和多次输出操作而言,只需要进行一次输入操作和一次输出操作即可,提高了运算速率。
关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备中的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取目标神经网络的模型数据和权值数据,其中,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;
确定所述目标神经网络中各个子网络的执行顺序;
根据所述目标神经网络的模型数据、权值数据以及所述各个子网络的执行顺序,对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
上述电子设备可以但不限于是数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在一个实施例中,提供了一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取目标神经网络的模型数据和权值数据,其中,所述目标神经网络包括至少一个子网络,每个所述子网络中包含至少一个网络层,每个所述子网络中的所述网络层具有相同的融合属性,至少一个所述网络层的算子被融合为一个融合算子;
确定所述目标神经网络中各个子网络的执行顺序;
根据所述目标神经网络的模型数据、权值数据以及所述各个子网络的执行顺序,对各个所述子网络对应的融合算子进行整体编译及运行,获得所述目标神经网络的输出结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据处理方法,其特征在于,应用于包含第一处理器的电子设备中,所述第一处理器为人工智能处理器;所述方法包括:
获取原始神经网络中各个网络层的依赖关系和融合属性,其中,所述各个网络层的融合属性用于表示所述网络层能否在第一处理器上运行;
根据所述原始神经网络中各个网络层的依赖关系,确定各个所述网络层的拓扑排序;
根据所述原始神经网络中各个网络层的融合属性及各个网络层的拓扑排序,将具有相同融合属性的至少一个网络层融合为一个子网络,获得目标神经网络;
其中,所述目标神经网络包括至少一个子网络,所述子网络对应一个融合算子,以使得所述电子设备能够将所述融合算子作为整体进行编译获得相应的计算指令,并根据所述融合算子的输入数据和计算指令获得相应的输出数据。
2.根据权利要求1所述的方法,其特征在于,根据所述原始神经网络中各个网络层的融合属性及各个网络层的拓扑排序,将具有相同融合属性的至少一个网络层融合为一个子网络,获得目标神经网络,包括:
根据所述拓扑排序,若当前网络层的融合属性与所述当前网络层的上一网络层的融合属性相同,则确定所述当前网络层与所述当前网络层的上一网络层属于同一子网络;
根据所述拓扑排序,若所述当前网络层的融合属性与所述当前网络层的上一网络层的融合属性不相同,则确定所述当前网络层与所述当前网络层的上一网络层属于不同的子网络。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据所述原始神经网络中各个网络层的配置信息,确定各个网络层的融合属性;其中,所述网络层的融合属性包括第一融合属性和第二融合属性;
所述第一融合属性表示所述第一处理器支持所述网络层的运行,所述第二融合属性表示所述第一处理器不支持所述网络层的运行。
4.根据权利要求3所述的方法,其特征在于,所述根据所述原始神经网络中各个网络层的配置信息确定所述各个网络层的融合属性的步骤,包括:
获取各个网络层的预设的融合属性函数的返回值;
若所述网络层的返回值为第一返回值,则确定所述网络层的融合属性为第一融合属性;
若所述网络层的返回值为第二返回值,则确定所述网络层的融合属性为第二融合属性。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据各个网络层中预设的融合函数,将所述子网络的各个网络层对应的算子添加至同一融合算子中,所述融合算子在所述目标神经网络的运行过程中作为整体被编译运行。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定各个所述子网络的融合属性,其中,所述子网络的融合属性与所述子网络中的各个网络层的融合属性相同;
根据各个所述子网络的融合属性,确定各个所述子网络对应的目标处理器,各个所述子网络对应的目标处理器能够运行所述子网络。
7.根据权利要求6所述的方法,其特征在于,所述子网络的融合属性包括第一融合属性和第二融合属性;所述方法还包括:
若所述子网络的融合属性为第一融合属性,则确定所述子网络对应的目标处理器为人工智能处理器;
若所述子网络的融合属性为第二融合属性,则确定所述子网络对应的目标处理器为通用处理器。
8.一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
9.根据权利要求8所述的电子设备,其特征在于,所述处理器包括第一处理器和第二处理器,所述第一处理器为人工智能处理器,所述第二处理器为通用处理器。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010214661.XA CN111461296B (zh) | 2018-12-29 | 2018-12-29 | 数据处理方法、电子设备和可读存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811646320.9A CN109754073B (zh) | 2018-12-29 | 2018-12-29 | 数据处理方法、装置、电子设备和可读存储介质 |
CN202010214661.XA CN111461296B (zh) | 2018-12-29 | 2018-12-29 | 数据处理方法、电子设备和可读存储介质 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811646320.9A Division CN109754073B (zh) | 2018-12-29 | 2018-12-29 | 数据处理方法、装置、电子设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111461296A CN111461296A (zh) | 2020-07-28 |
CN111461296B true CN111461296B (zh) | 2023-09-22 |
Family
ID=66405063
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811646320.9A Active CN109754073B (zh) | 2018-12-29 | 2018-12-29 | 数据处理方法、装置、电子设备和可读存储介质 |
CN202010214661.XA Active CN111461296B (zh) | 2018-12-29 | 2018-12-29 | 数据处理方法、电子设备和可读存储介质 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811646320.9A Active CN109754073B (zh) | 2018-12-29 | 2018-12-29 | 数据处理方法、装置、电子设备和可读存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200210821A1 (zh) |
CN (2) | CN109754073B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110263916B (zh) * | 2019-05-31 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置、存储介质及电子装置 |
CN110489344A (zh) * | 2019-08-02 | 2019-11-22 | Oppo广东移动通信有限公司 | 引擎测试方法及相关产品 |
CN110490309B (zh) * | 2019-08-14 | 2022-06-07 | 中科寒武纪科技股份有限公司 | 一种用于神经网络的算子融合方法及其相关产品 |
CN110458294B (zh) * | 2019-08-19 | 2022-02-25 | Oppo广东移动通信有限公司 | 模型运行方法、装置、终端及存储介质 |
CN110598855B (zh) * | 2019-09-23 | 2023-06-09 | Oppo广东移动通信有限公司 | 深度学习模型生成方法、装置、设备及存储介质 |
CN110689116B (zh) * | 2019-09-24 | 2022-12-27 | 安徽寒武纪信息科技有限公司 | 一种神经网络剪枝方法、装置、计算机设备及存储介质 |
US20210158131A1 (en) * | 2019-11-27 | 2021-05-27 | Amazon Technologies, Inc. | Hierarchical partitioning of operators |
CN111162946B (zh) * | 2019-12-30 | 2022-07-12 | 北京奇艺世纪科技有限公司 | 构建模型推理网络的方法、数据处理方法、装置和存储介质 |
CN111260019B (zh) * | 2020-02-18 | 2023-04-11 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
CN113554164A (zh) * | 2020-04-24 | 2021-10-26 | 上海商汤智能科技有限公司 | 神经网络模型的优化、数据处理方法及装置、存储介质 |
CN111553466B (zh) * | 2020-04-30 | 2024-03-22 | 上海商汤智能科技有限公司 | 信息处理方法、装置及设备 |
CN113760394B (zh) * | 2020-06-03 | 2022-05-13 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、电子设备及存储介质 |
US11436703B2 (en) * | 2020-06-12 | 2022-09-06 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptive artificial intelligence downscaling for upscaling during video telephone call |
CN111782403B (zh) * | 2020-07-17 | 2022-04-19 | Oppo广东移动通信有限公司 | 数据处理方法、装置以及电子设备 |
CN111860820A (zh) * | 2020-07-31 | 2020-10-30 | 北京灵汐科技有限公司 | 神经网络算子的划分方法、装置及划分设备 |
US20230274158A1 (en) * | 2020-09-28 | 2023-08-31 | Cambricon Technologies Corporation Limited | Device and method for neural network computing, and board and readable storage medium |
CN114501353B (zh) * | 2020-10-23 | 2024-01-05 | 维沃移动通信有限公司 | 通信信息的发送、接收方法及通信设备 |
US20220147812A1 (en) * | 2020-11-06 | 2022-05-12 | Micron Technology, Inc. | Compiler with an artificial neural network to optimize instructions generated for execution on a deep learning accelerator of artificial neural networks |
US20220147811A1 (en) * | 2020-11-06 | 2022-05-12 | Micron Technology, Inc. | Implement the computation of an artificial neural network using multiple deep learning accelerators |
CN112686378A (zh) * | 2020-12-23 | 2021-04-20 | 展讯通信(上海)有限公司 | 神经网络的计算部署方法及装置、存储介质、计算机设备 |
CN114692843A (zh) * | 2020-12-25 | 2022-07-01 | 中科寒武纪科技股份有限公司 | 计算神经网络的装置、板卡、方法及可读存储介质 |
CN116710930A (zh) * | 2020-12-31 | 2023-09-05 | 北京希姆计算科技有限公司 | 执行程序的编译方法、芯片、电子设备及计算机可读存储介质 |
CN112711422B (zh) * | 2020-12-31 | 2024-01-19 | 北京清微智能科技有限公司 | 一种神经网络编译的优化方法及系统 |
CN113065639B (zh) * | 2021-03-08 | 2023-06-13 | 深圳云天励飞技术股份有限公司 | 算子融合方法、系统、设备及存储介质 |
CN115408568B (zh) * | 2021-05-26 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种对神经网络的算子进行融合的方法和相关产品 |
CN113657584B (zh) * | 2021-08-31 | 2024-04-09 | 安谋科技(中国)有限公司 | 神经网络模型计算方法、数据处理方法、电子设备及介质 |
CN114611697B (zh) * | 2022-05-11 | 2022-09-09 | 上海登临科技有限公司 | 神经网络量化及部署方法、系统、电子设备及存储介质 |
CN115796228B (zh) * | 2022-11-15 | 2024-04-05 | 北京百度网讯科技有限公司 | 算子融合方法、装置、设备以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845631A (zh) * | 2016-12-26 | 2017-06-13 | 上海寒武纪信息科技有限公司 | 一种流执行方法及装置 |
CN108268937A (zh) * | 2018-02-13 | 2018-07-10 | 北京旷视科技有限公司 | 一种神经网络及其计算方法、设备和计算机可读介质 |
CN108304526A (zh) * | 2018-01-25 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及服务器 |
CN108733806A (zh) * | 2018-05-18 | 2018-11-02 | 广东工业大学 | 一种多层次卷积神经网络的数据处理方法 |
CN108876702A (zh) * | 2018-06-21 | 2018-11-23 | 北京邮电大学 | 一种加速分布式深度神经网络的训练方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9811775B2 (en) * | 2012-12-24 | 2017-11-07 | Google Inc. | Parallelizing neural networks during training |
CN105869117B (zh) * | 2016-03-28 | 2021-04-02 | 上海交通大学 | 一种针对深度学习超分辨率技术的gpu加速方法 |
CN110298443B (zh) * | 2016-09-29 | 2021-09-17 | 中科寒武纪科技股份有限公司 | 神经网络运算装置及方法 |
CN107103113B (zh) * | 2017-03-23 | 2019-01-11 | 中国科学院计算技术研究所 | 面向神经网络处理器的自动化设计方法、装置及优化方法 |
US10387298B2 (en) * | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
CN107239315B (zh) * | 2017-04-11 | 2019-11-15 | 赛灵思公司 | 面向神经网络异构计算平台的编程模型 |
CN108255605B (zh) * | 2017-12-29 | 2020-12-04 | 北京邮电大学 | 一种基于神经网络的图像识别协同计算方法及系统 |
CN108648226B (zh) * | 2018-03-30 | 2019-10-22 | 百度在线网络技术(北京)有限公司 | 用于生成信息的方法和装置 |
US11200186B2 (en) * | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
-
2018
- 2018-12-29 CN CN201811646320.9A patent/CN109754073B/zh active Active
- 2018-12-29 CN CN202010214661.XA patent/CN111461296B/zh active Active
-
2019
- 2019-12-13 US US16/714,669 patent/US20200210821A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845631A (zh) * | 2016-12-26 | 2017-06-13 | 上海寒武纪信息科技有限公司 | 一种流执行方法及装置 |
CN108304526A (zh) * | 2018-01-25 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及服务器 |
CN108268937A (zh) * | 2018-02-13 | 2018-07-10 | 北京旷视科技有限公司 | 一种神经网络及其计算方法、设备和计算机可读介质 |
CN108733806A (zh) * | 2018-05-18 | 2018-11-02 | 广东工业大学 | 一种多层次卷积神经网络的数据处理方法 |
CN108876702A (zh) * | 2018-06-21 | 2018-11-23 | 北京邮电大学 | 一种加速分布式深度神经网络的训练方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109754073B (zh) | 2020-03-10 |
CN109754073A (zh) | 2019-05-14 |
CN111461296A (zh) | 2020-07-28 |
US20200210821A1 (en) | 2020-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111461296B (zh) | 数据处理方法、电子设备和可读存储介质 | |
CN109697500B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111309486B (zh) | 转换方法、装置、计算机设备和存储介质 | |
US20160246852A1 (en) | Systems and Methods for Quantile Estimation in a Distributed Data System | |
CN109117854B (zh) | 关键点匹配方法、装置、电子设备以及存储介质 | |
CN112632798B (zh) | 仓储管理系统的仿真测试方法、装置、设备和存储介质 | |
CN112965710A (zh) | 计算图的处理方法、装置和系统 | |
CN112507222A (zh) | 物流信息推荐方法、物流配送系统及服务器 | |
CN111857803A (zh) | 页面更新方法、装置、服务器及存储介质 | |
CN112732601B (zh) | 数据预处理方法、装置、计算机设备和存储介质 | |
US11694014B2 (en) | Logical node layout method and apparatus, computer device, and storage medium | |
CN110009100B (zh) | 自定义算子的计算方法及相关产品 | |
US10303808B2 (en) | Product configuration | |
CN112805680B (zh) | 使用计算机视觉进行供给 | |
CN112380771B (zh) | 一种土壤侵蚀评估方法、装置及服务器 | |
CN109754071B (zh) | 激活运算方法、装置、电子设备和可读存储介质 | |
US20240256783A1 (en) | Information Processing Method, and Method and Apparatus for Locating Sub-Control Chart in Control Chart | |
CN111368146A (zh) | 一种路径信息的查询方法及装置、存储介质和处理器 | |
KR101940802B1 (ko) | 단말 자원을 활용한 지역삼각형 개수 산출 시스템 및 그 동작 방법 | |
CN114697208B (zh) | 一种网元设备的配置分析方法、系统、设备以及存储介质 | |
CN115474878B (zh) | 洗地机器人数据处理方法、洗地机器人及介质 | |
US20230195599A1 (en) | Method for computing data dependence relationship in program, and computer readable storage medium | |
CN103562918A (zh) | 用于到存储器内数据网格的派遣的数据库查询的拦截 | |
CN112463158B (zh) | 编译方法、装置、电子设备和存储介质 | |
CN112380493B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |