CN112561044B - 神经网络模型加速方法及装置、服务器及存储介质 - Google Patents
神经网络模型加速方法及装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN112561044B CN112561044B CN201910914935.3A CN201910914935A CN112561044B CN 112561044 B CN112561044 B CN 112561044B CN 201910914935 A CN201910914935 A CN 201910914935A CN 112561044 B CN112561044 B CN 112561044B
- Authority
- CN
- China
- Prior art keywords
- node
- incompatible
- neural network
- network model
- sub
- 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
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)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
Abstract
本发明适用于深度学习技术领域,提供了一种神经网络模型加速方法及装置、服务器及存储介质,其中,所述方法包括:确定第三方引擎与神经网络模型不兼容的节点;基于所述不兼容的节点对所述神经网络模型进行分割,得到至少两个子模型;将不包括所述不兼容的节点的子模型转换为所述第三方引擎支持的格式;通过所述第三方引擎运行所述经过格式转换的子模型。本发明中,利用第三方引擎来加速,当出现不兼容时,通过分段执行的方式,由第三方引擎对兼容部分进行加速,可提高神经网络模型的整体运行速度。
Description
技术领域
本发明涉及深度学习技术领域,尤其涉及一种神经网络模型加速方法及装置、服务器及存储介质。
背景技术
神经网络模型是一种模仿生物神经网络(动物的中枢神经***,特别是大脑)的结构和功能的计算模型,用于对函数进行估计或近似。随着神经网络算法的研究不断深入,其准确率在很多应用场合超过了传统机器学习算法。神经网络算法逐渐取代传统算法,开始被部署到终端设备上面。
虽然神经网络算法的准确率较高,但由于其计算量非常巨大,这导致内存带宽和整体功耗消耗很大。而终端设备往往是嵌入式设备,嵌入式设备对效率的要求很高,传统的CPU则难以单独承担这个任务;为了获取较高的执行效率,需要借助第三方的加速引擎来将已经固化的神经网络模型进行格式转换,以在GPU等上执行,但由于第三方引擎及该模型本身存在着不兼容的问题,因此无法实现真正意义上的加速,这影响了神经网络算法的执行效率。
故有必要提出一种新的技术方案,以解决上述技术问题。
发明内容
鉴于此,本发明实施例提供了一种神经网络模型加速方法及装置、服务器及存储介质,解决现有技术中神经网络模型运行效率不高的问题。
本发明实施例的第一方面提供了一种神经网络模型加速方法,所述方法包括:
确定第三方引擎与神经网络模型不兼容的节点;
基于所述不兼容的节点对所述神经网络模型进行分割,得到至少两个子模型;
将不包括所述不兼容的节点的子模型转换为所述第三方引擎支持的格式;
通过所述第三方引擎运行所述经过格式转换的子模型。
本发明实施例的第二方面提供了神经网络模型加速装置,所述装置,包括:
确定模块,用于确定第三方引擎与神经网络模型不兼容的节点;
分割模块,用于基于所述不兼容的节点对所述神经网络模型进行分割,得到至少两个模型;
转换模块,用于将不包括所述不兼容的节点的模型转换为所述第三方引擎支持的格式;
控制模块,用于控制所述第三方引擎运行所述经过格式转换的模型。
本发明实施例的第三方面还提供了一种服务器,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,上述处理器执行上述计算机程序时实现上述第一方面提及的方法。
本发明实施例的第四方面提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现上述第一方面提及的方法。
本发明实施例与现有技术相比存在的有益效果是:利用第三方引擎来加速时,当出现不兼容时,通过分段执行的方式,由第三方引擎对兼容部分进行加速,可提高神经网络模型的整体运行速度,提高运行效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种基于第三方引擎的神经网络模型加速的方法的流程示意图;
图2为本发明实施例二提供的一种基于第三方引擎的神经网络模型加速的装置的结构示意图;
图3为本发明实施例四提供的服务器的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来经说明。
实施例一
图1是本发明实施例一提供的一种神经网络模型加速的方法的流程示意图,该方法可以包括以下步骤:
步骤S1,确定第三方引擎与神经网络模型不兼容的节点。
具体地,在嵌入式***中,为了提高执行效率,通常需要借助第三方引擎来提高执行速度,而由于神经网络模型已经固化,若通过第三方引擎来执行,则首先需要对该神经网络模型进行转换,而在转换过程中,会出现第三方引擎与固化的神经网络模型之间的不兼容问题,因此首先需要确定该第三方引擎与神经网络模型之间存在的不兼容节点,即通过第三方引擎转换该神经网络模型时出错时所在节点即为不兼容的节点。
在本实施例的一个优选方案中,该第三方引擎可以为神经网络加速引擎,如高通的神经网络加速引擎(Snapdragon Neural Processing Engine,SNPE)。
在本实施例的进一步优选方案中,该步骤S1具体包括:
首先,通过该第三方引擎转换该神经网络模型。
具体地,首先对神经网络模型的执行文件的格式进行转换,转为第三方引擎兼容的格式,然后通过第三方引擎来执行该格式转换的神经网络模型,例如,调用第三方引擎的转换函数来对神经网络模型进行格式转换。
接着,在转换过程中,若第三方引擎转换异常时,说明该加速引擎与该神经网络模型开始出现不兼容了,获取当前转换的节点,该节点即为不兼容的节点。需要说明的是,在转换过程中,可能存在多个不兼容的节点,若当前已经出现一不兼容节点时,为了获取其他不兼容节点,可从该不兼容节点之后开始对该神经网络模型进行转换,若在转换过程中,出现转换异常时,获取对应的不兼容节点,重复前述步骤,直到转换结束,得到多个不兼容节点。
步骤S2,基于不兼容的节点对所述神经网络模型进行分割,得到至少两个子模型。
具体地,以不兼容的节点作为界线,将原始的神经网络模型(即未进行格式转换的神经网络模型)进行分割,分割成至少两个子模型,其中,有的子模型包括不兼容节点,有的子模型不包括不兼容节点,该不包括不兼容节点的子模型由第三方引擎来运行。
步骤S3,将不包括不兼容的节点的子模型转换为所述第三方引擎支持的格式。
具体地,由于不包括不兼容节点的子模型由第三方引擎来运行,因此需要将该类子模型转为第三方引擎支持的格式,例如,转为可在GPU或DSP上运行的格式,该格式为第三方引擎支持的格式,比如高通SNPE引擎支持的DLC格式。
步骤S4,通过第三方引擎运行格式转换的子模型。
具体地,对神经网络模型进行分割后,由第三方引擎来运行该不包括不兼容节点的子模型,而包括不兼容节点的子模型依然采用原有的方式来运行,例如,在CPU上运行该子模型。
在本实施例中,当出现不兼容时,通过分段执行的方式,由第三方引擎对兼容部分进行加速,可提高神经网络模型的整体运行速度。
在本实施例的一个优选方案中,步骤S1之前还可包括:
判断第三方引擎与所述神经网络模型是否兼容,若不兼容则转到步骤S1,若兼容直接用第三方引擎在GPU或DSP上运行该神经网络模型。
在本实施例的一个优选方案中,该步骤S1具体包括:
通过第三方引擎开始转换神经网络模型。
当第三方引擎转换异常时,获取当前转换的节点,当前转换的节点为不兼容节点。
以该不兼容节点的下一节点开始通过第三方引擎转换所述神经网络模型,若还存在不兼容节点,则以当前不兼容节点的下一个节点开始继续进行转换步骤,直到转换结束,最终得到至少两个不兼容节点。
具体地,若要获取不兼容节点,则首先通过第三方引擎来转换该神经网络模型,在转换的过程中,若出现转换异常,则说明当前节点不兼容,则以当前转换的节点作为不兼容节点,以该不兼容节点的下一节点开始通过第三方引擎转换所述神经网络,若还存在不兼容节点,则以当前不兼容节点的下一个节点开始继续进行转换步骤,直到转换结束,最终得到至少两个不兼容节点。
在本实施例的一个优选方案中,还可能存在这样的情况:当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点,以不兼容节点的下一节点开始通过所述第三方引擎转换所述神经网络模型,若没有出现转换异常,则到转换结束时,得到一个不兼容节点,即第三方引擎在转换该神经网络模型时只出现一次转换异常,此时只得到一个不兼容节点,若该不兼容节点靠近所述神经网络模型的起点时(或者位于起点),所述神经网络模型的起点及所述不兼容节点属于同一所述子模型;若该不兼容节点靠近所述神经网络模型的终点时(或者位于终点),所述神经网络模型的终点及所述不兼容节点属于同一所述子模型。需要说明的是,该起点指的是神经网络模型的第一个节点,该终点指的是神经网络模型的最后一个节点。
在本实施例的进一步优选方案中,任一所述不兼容节点不属于所述神经网络模型的起点或终点,即不兼容节点不会出现在神经网络模型的起点或终点时,该步骤S2具体为:
基于K个所述不兼容节点将所述神经网络模型分割成K+1个子模型,其中,若第M个不兼容节点与第M-1个不兼容节点之间的数据长度大于或等于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M+1个不兼容节点属于同一模型,第M个不兼容节点与第M-1个不兼容节点属于不同一个模型;若第M个不兼容节点与第M-1个不兼容节点之间的数据长度小于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M-1个不兼容节点属于同一模型,第M个不兼容节点与第M+1个不兼容节点属于不同一个模型,其中,所述K为大于或等于2的自然数,M为大于或等于1的自然数,且M小于或等于K。
例如:神经网络模型包括8个节点(分别为第1节点(即起点)、第2节点、…、第8节点(即终点)),若不兼容节点为3个,此时,可分为4个模型,分别为A子模型、B子模型、C子模型及D子模型,第2节点、第5节点及第7节点分别为第一个不兼容节点、第二个不兼容节点及第三个不兼容节点,此时,分别获取第一不兼容节点与第二个不兼容节点之间的数据长度、第二个不兼容节点与第三个不兼容节点之间的数据长度,即分别获取第2节点与第5节点之间的数据长度、及第5节点与第7节点之间的数据长度,当第2节点与第5节点之间的数据长度大于第5节点与第7节点之间的数据长度时,将神经网络模型的第1节点至第2节点且包括第2节点的数据部分放入A子模型;将第2节点之后、第4节点之前且不包括第2节点及第4节点的数据放入B子模型;将第4节点及第7节点包括第4点节点及第7节点的数据放入C子模型;将第7节点之后至第8节点的数据放入D子模型;此时,B子模型和D子模型不包括不兼容节点,B子模型及D子模型由第三方引擎来运行;A子模型和C子模型包括不兼容节点,在CPU上执行。
在本实施例的另一个优选方案中,该步骤S1具体包括:
通过第三方引擎开始转换神经网络模型。
当第三方引擎转换异常时,获取当前转换的节点,当前转换的节点为不兼容节点,获取神经网络模型的起点到该不兼容节点之间的数据长度与神经网络模型对应的数据长度的比值,即将起点到该不兼容节点之间的数据长度与该神经网络模型对应的数据长度相除,得到比值。
若比值为大于或等于预设值,则转到步骤S2,直接进行神经网络模型的分割,于是基于该不兼容节点对神经网络模型进行分割,得到两个子模型,其中,神经网络模型的起点与不兼容节点处于不同的子模型中,由于该不兼容节点到起点之间的数据长度与神经网络模型的数据长度的比值大于预设值,则说明可以基于该不兼容节点将神经网络模型进行分割,将该起点到该不兼容节点之前的一节点之间的那部分作为一子模型,而将该不兼容节点到该神经网络模型的终点之间的那部分作为另一子模型。其中,该预设值的大小可根据实际情况而设,例如1~9,优选地,该比值为9,即起点与不兼容节点之间的数据长度占神经网络模型的数据总长度的90%时的效果较佳。
若该比值小于预设值,则以该不兼容节点作为第一个不兼容节点,从第一个不兼容节点的下一个节点开始通过第三方引擎对神经网络模型进行转换;
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为第二个不兼容节点,并获取所述第一不兼容节点到所述第二不兼容节点之间的数据长度与所述神经网络模型对应的数据长度之间的比值,若此时获取的比值小于预设值,以第二个不兼容节点的下一节点开始通过第三方引擎对神经网络模型进行转换,继续获取下一个不兼容节点,直到存在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值大于或等于所述预设值时,停止获取下一个不兼容节点,其中,所述N大于或等于2。
例如,神经网络模型有15个节点,在第3个节点出现转换异常,该第3个节点为第一个不兼容节点,且第1个节点到第3个节点时间的数据长度与神经网络模型对应的数据长度小于预设值时,则通过第三方引擎在第4个节点开始对神经网络模型进行转换,若在第6个节点处出现转换异常,则第6个节点为第二个不兼容节点,且第3个节点到第6个节点时间的数据长度与神经网络模型对应的数据长度小于预设值时,继续以第7个节点开始通过第三方引擎对神经网络模型进行转换,直到相邻两个节点之间的数据长度与神经网络模型对应的数据长度大于或等于预设值时,停止获取下一个不兼容节点,如后续在第9个节点及第12个节点均出现转换异常时,且第9个不兼容节点与第12个不兼容节点之间的数据长度与神经网络模型对应的数据长度大于或等于预设值时,停止继续转换,不再获取下一不兼容节点的操作;
若存在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值大于或等于所述预设值,该步骤S2具体为:基于第N-1个不兼容节点及第N个不兼容节点对神经网络模型进行分割,得到三个子模型,其中,神经网络模型的起点至第N-1个不兼容节点属于一子模型,第N-1个不兼容节点的下一节点至第N个不兼容节点的上一节点属于另一子模型,第N个不兼容节点至神经网络模型的终点属于三个模型中的另一个子模型。例如:将神经网络模型分割成三段(每一段代表一个子模型),其中第一段为起点到第N-1个不兼容节点,第二段为第N-1个不兼容节点之后到第N个不兼容节点之前的部分作为第二段,而第N个不兼容节点到终点作为第三段。而第二段则为第三方引擎可以兼容的一段。
在本实施例的一个变形方案中,若直至转换结束,均不存在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值大于或等于所述预设值时,则获取每一相邻两个不兼容节点之间的数据长度,得到至少两个所获取的数据长度中的最大值。
具体地,若在获取一个不兼容节点时,当前不兼容节点到上一个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值小于所述预设值,则需要继续进行尝试获取下一个不兼容节点,并获取当前不兼容节点到上一个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值,将其与预设值进行比较,直到尝试完所有的节点。其中,有可能在整个尝试的过程中,均不会出现在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值大于或等于所述预设值的情况,此时获取每一相邻两个不兼容节点之间的数据长度,得到至少两个所获取的数据长度中的最大值,由于不兼容节点之间的那部分是与第三方引擎兼容的,因此需要统计每一相邻两个不兼容节点之间的数据长度,得到至少两个数据长度,进而获取数据长度之中的最大值。
在该变形方案的进一步优选方案中,该步骤S2具体为:
基于数据长度的最大值对应的两个目标不兼容节点对神经网络模型进行分割,得到对应的三个子模型,其中一个子模型不包括两个目标不兼容节点,另外两个子模型分别包括两个目标不兼容节点中的其中一个目标不兼容节点。。
例如:该最长的数据长度对应的不兼容节点为b1及b2,将该神经网络模型分为三段(即三个子模型),该神经网络模型的起点到b1作为第一段,b1之后到b2之前的那部分作为第二段,b2到神经网络模型的终点作为第三段。由于将最长的那部分由第三方引擎来执行,可有效地提高处理效率。
在本实施例的一个优选方案中,由于存在多个不兼容节点,可基于多个不兼容节点将神经网络模型分为多个子模型,而多个子模型中有若干个子模型是与第三方引擎兼容的,可通过第三方引擎执行转换后的且与其兼容的子模型,而其他不兼容的模型仍然使用原有的方式执行。
需要说明的是,分割成至少两个子模型之后,将第三方引擎兼容的子模型通过第三方引擎进行格式转换,得到转换格式的子模型。
在本实施例的一个优选方案中,以高通的神经网络加速引擎SNPE、以人脸识别模型facenet.pb为例,为了提高facenet.pb模型的执行效率,首先通过SNPE来执行facenet.pb模型,在发现执行出错时,获取出错所在的节点,以该节点为不兼容节点,以该节点A为界线,将神经网络模型进行分割,分成两个模型P1(第一模型)及P2(第二模型),节点A位于P2模型中,然后将P1转为DLC格式,通过SNPE在GPU或者DSP上运行转换格式后的P1,用原有的方式在CPU上运行P2,可提高整体执行效率。
具体地,利用高通的神经网络加速引擎对神经网络模型SNPE进行转换,转换为SNPE引擎支持的DLC格式,确定不兼容节点的过程可如下:不兼容的问题是在通过第三方引擎将神经网络模型(人脸识别模型pb)转为DLC格式的过程中发现的,上述转换过程中,若弹出如“ERROR-Conversion failed:Element Wise resolver must implement broadcastmethod”的错误提示,说明当前节点转换异常,出现不兼容的节点,此时可将神经网络模型的所有节点对打印出来,根据经验判断是哪个出错。或者调用转换命令逐个尝试每一节点,看看到哪个节点会出现转换失败。逐个替换下面命令的--out_node参数的值,其中embeddings为神经网络模型的最后一个节点(即终点),例如:snpe-tensorflow-to-dlc--graph facenet.pb--input_dim input 1,160,160,3--out_node embeddings--dlcfacenet.dlc--allow_unconsumed_nodes。
进一步地,将facenet.pb转换为facenet.dlc的转换过程如下:输入转换命令:“snpe-tensorflow-to-dlc--graph facenet.pb--input_dim input 1,160,160,3,-out_node embeddings--dlc facenet.dlc--allow_unconsumed_nodes”,
获取到执行时间是2019-04-22 09:56:57.578906:
在执行上述转换命令的过程中,出错的记录具体如下:Itensorflow/core/platform/cpu_feature_guard.cc:141]Your CPU supports instructions that thisTensorFlow binary was not compiled to use:AVX2 AVX512F FMA 2019-04-22 09:56:57.602994:Itensorflow/core/platform/profile_utils/cpu_utils.cc:94]CPUFrequency:3500000000Hz
2019-04-22 09:56:57.603530:I tensorflow/compiler/xla/service/service.cc:161]XLA service 0x54467a0 executing computations on platformHost.Devices:
2019-04-22 09:56:57.603532:I tensorflow/compiler/xla/service/service.cc:168]StreamExecutor device(0):<undefined>,<undefined>
在2019-04-22 10:00:39,144-106–这个时间点正式报错,于是弹出“ERROR-Conversion failed:Element Wise resolver must implement broadcast method”的出错提示,表示当前已经无法执行下去了。
在执行过程中,若弹出上述提示则说明转换异常,经过分析(可将神经网络模型所有的节点对打印出来,根据经验判断,或者用上述的转换命令逐个尝试每一个节点,逐个替换转换命令的--out_node参数的值,该embeddings就是神经网络模型的最后一个节点),若经过前述分析,是SNPE不支持facenet.pb中的InceptionResnetV1/Logits/Reshape节点,此时将facenet.pb以节点InceptionResnetV1/Logits/Reshape为界限,分成两个pb文件,facenet_part1.pb和facenet_part2.pb,输入分割指令“/home/tensorflow-master/bazel-bin/tensorflow/tools/graph_transforms/transform_graph
--in_graph=/home/models/facenet_part1.pb
--out_graph=/home/models/facenet_part2.pb
--inputs=InceptionResnetV1/Logits/Reshape
--outputs=embeddings--transforms='add_default_attributes
remove_nodes(op=Identity,op=CheckNumerics)fold_batch_norms fold_old_batch_norms strip_unused_nodes sort_by_execution_order'”,然后执行该指令。
分割之后,将facenet_part1.pb通过命令snpe-tensorflow-to-dlc转换为facenet_part1.dlc,这样facenet_part1.dlc就可以通过SNPE在GPU或DSP上高速运行了,剩下的facenet_part2.pb可以用传统的方法在CPU上运行。
在本实施例中,利用第三方引擎来加速时,当出现不兼容时,通过分段执行的方式,由第三方引擎对兼容部分进行加速,可提高神经网络模型的整体运行速度,提高运行效率。
其中,若存在多个不兼容节点时,选择不小于预设值的数据长度或者选择最大数据长度对应的两个不兼容节点之间的且除去两个不兼容节点之间的部分神经网络模型来通过第三方引擎来运行,可进一步提高运行效率。
实施例二
基于上述实施例一,如图2所示,为本发明实施例二提供的一种神经网络模型加速装置的结构示意图,该装置用于执行上述实施例一的方法步骤,为了便于说明,仅示出了与本发明实施例相关的部分。该装置至少包括:
确定模块1,用于确定第三方引擎与神经网络模型不兼容的节点。
分割模块2,用于基于不兼容的节点对神经网络模型进行分割,得到至少两个子模型。
转换模块3,用于将不包括不兼容的节点的子模型转换为第三方引擎支持的格式。
控制模块4,用于控制第三方引擎运行格式转换的子模型。
在一个优选的实施方式中,确定模块1具体用于:
控制第三方引擎开始转换神经网络模型;
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点;以所述不兼容节点的下一节点开始通过所述第三方引擎转换所述神经网络模型,若还存在不兼容节点,则以当前不兼容节点的下一个节点开始继续进行转换步骤,直到转换结束,得到至少两个不兼容节点;或者
当所述第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点,以所述不兼容节点的下一节点开始通过所述第三方引擎转换所述神经网络模型,若没有出现转换异常,则到转换结束时,得到一个不兼容节点,在确定不兼容节点后,将结果反馈给分割模块2。
在一个优选的实施方式中,若不兼容节点为一个时,分割模块2具体用于:
基于不兼容节点对神经网络模型进行分割,得到两个子模型,其中,若该不兼容节点靠近神经网络模型的起点时,神经网络模型的起点及不兼容节点属于同一所述子模型;若该不兼容节点靠近神经网络模型的终点时,神经网络模型的终点及不兼容节点属于同一所述子模型。
若不兼容节点为至少两个,且任一不兼容节点不属于神经网络模型的起点或终点时,该分割模块2具体用于:
基于K个不兼容节点将神经网络模型分割成K+1个子模型,其中,若第M个不兼容节点与第M-1个不兼容节点之间的数据长度大于或等于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M+1个不兼容节点属于同一子模型,第M个不兼容节点与第M-1个不兼容节点属于不同的子模型;若第M个不兼容节点与第M-1个不兼容节点之间的数据长度小于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M-1个不兼容节点属于同一子模型,第M个不兼容节点与第M+1个不兼容节点属于不同的子模型,其中,所述K为大于或等于2的自然数,M为大于或等于1的自然数,且M小于或等于K。
在一个优选的实施方式中,该确定模块1具体用于:控制第三方引擎开始转换神经网络模型;
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点,获取神经网络模型的起点到不兼容节点之间的数据长度与神经网络模型对应的数据长度的比值;若比值为大于或等于预设值,则反馈给分割模块2。
该分割模块2具体用于:基于不兼容节点对神经网络模型进行分割,得到两个子模型,其中,神经网络模型的起点与不兼容节点处于不同的子模型中。
在另一个优选的实施方式中,若比值小于所述预设值,该确定模块1还用于:以不兼容节点作为第一个不兼容节点,从第一个不兼容节点的下一个节点开始控制第三方引擎对神经网络模型进行转换;
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为第二个不兼容节点,并获取所述第一不兼容节点到所述第二不兼容节点之间的数据长度与所述神经网络模型对应的数据长度之间的比值,若所述比值小于所述预设值,以所述第二个不兼容节点的下一节点开始控制第三方引擎对所述神经网络模型进行转换,继续获取下一个不兼容节点,直到存在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值大于或等于所述预设值时,停止获取下一个不兼容节点,其中,所述N大于或等于2;
此时,该分割模块2具体用于:基于所述第N-1个不兼容节点及所述第N个不兼容节点对所述神经网络模型进行分割,得到三个子模型,其中,所述神经网络模型的起点至所述第N-1个不兼容节点属于一子模型,所述第N-1个不兼容节点的下一节点至所述第N个不兼容节点的上一节点属于另一子模型,所述第N个不兼容节点至所述神经网络模型的终点属于所述三个模型中的另一个子模型。
在一个优选的实施方式中,若直至转换结束,均不存在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值大于或等于所述预设值,该确定模块1还用于:则获取每一相邻两个不兼容节点之间的数据长度,得到至少两个所获取的数据长度中的最大值,然后反馈给分割模块2;
此时,该分割模块2具体用于:基于所述数据长度的最大值对应的两个目标不兼容节点对所述神经网络模型进行分割,得到对应的三个子模型,其中一个子模型不包括所述两个目标不兼容节点,另外两个子模型分别包括所述两个目标不兼容节点中的其中一个目标不兼容节点。
在一个优选的实施方式中,转换模块3具体用于:调用所述第三方引擎的转换函数开始对所述神经网络模型进行转换。
在一个优选的实施方式中,控制模块4还用于:控制在CPU上执行包括不兼容节点的子模型。
本发明实施例提供的神经网络模型加速装置可执行本发明任意实施例所提供的神经网络模型加速方法,具备执行方法相应的功能模块及有益效果。
实施例三
图3是本发明实施例三提供的服务器的结构示意图。如图3所示,该实施例的服务器3包括:处理器30、存储器31以及存储在所述存储器31中并可在所述处理器30上运行的计算机程序32。所述处理器30执行所述计算机程序32时实现上述方法任意实施方案中的步骤。
示例性的,所述计算机程序32可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器31中,并由所述处理器30执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序32在所述服务器3中的执行过程。例如,所述计算机程序32可执行以下操作:
确定第三方引擎与神经网络模型不兼容的节点;
基于不兼容的节点对神经网络模型进行分割,得到至少两个子模型;
将不包括不兼容的节点的子模型转换为第三方引擎支持的格式;
通过第三方引擎运行所述经过格式转换的子模型。
在一个优选的实施方式中,所述计算机程序32还可执行以下操作:
通过第三方引擎开始转换所述神经网络模型;
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点;以所述不兼容节点的下一节点开始通过所述第三方引擎转换所述神经网络模型,若还存在不兼容节点,则以当前不兼容节点的下一个节点开始继续进行转换步骤,直到转换结束,得到至少两个不兼容节点;或者
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点,以不兼容节点的下一节点开始通过所述第三方引擎转换神经网络模型,若没有出现转换异常,则到转换结束时,得到一个不兼容节点。
在一个优选的实施方式中,所述计算机程序32还可执行以下操作:
基于不兼容节点对神经网络模型进行分割,得到两个子模型,其中,若该不兼容节点靠近神经网络模型的起点时,神经网络模型的起点及不兼容节点属于同一子模型;若该不兼容节点靠近神经网络模型的终点时,神经网络模型的终点及所述不兼容节点属于同一所述子模型。
在一个优选的实施方式中,不兼容节点为至少两个,且任一不兼容节点不属于神经网络模型的起点或终点时,所述计算机程序32还可执行以下操作:
基于K个不兼容节点将神经网络模型分割成K+1个子模型,其中,若第M个不兼容节点与第M-1个不兼容节点之间的数据长度大于或等于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M+1个不兼容节点属于同一子模型,第M个不兼容节点与第M-1个不兼容节点属于不同的子模型;若第M个不兼容节点与第M-1个不兼容节点之间的数据长度小于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M-1个不兼容节点属于同一子模型,第M个不兼容节点与第M+1个不兼容节点属于不同的子模型,其中,所述K为大于或等于2的自然数,M为大于或等于1的自然数,且M小于或等于K。
在一个优选的实施方式中,所述计算机程序32还可执行以下操作:
控制第三方引擎开始转换所述神经网络模型;
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点,获取神经网络模型的起点到所述不兼容节点之间的数据长度与所述神经网络模型对应的数据长度的比值;
若所述比值为大于或等于预设值,基于所述不兼容节点对所述神经网络模型进行分割,得到两个子模型,其中,所述神经网络模型的起点与所述不兼容节点处于不同的子模型中。
在一个优选的实施方式中,所述计算机程序32还可执行以下操作:
若比值小于所述预设值,则以不兼容节点作为第一个不兼容节点,从所述第一个不兼容节点的下一个节点开始控制所述第三方引擎对所述神经网络模型进行转换;
当所述第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为第二个不兼容节点,并获取第一不兼容节点到第二不兼容节点之间的数据长度与神经网络模型对应的数据长度之间的比值,若比值小于所述预设值,以第二个不兼容节点的下一节点开始控制第三方引擎对神经网络模型进行转换,继续获取下一个不兼容节点,直到存在第N个不兼容节点到第N-1个不兼容节点之间的数据长度与神经网络模型的数据长度之间的比值大于或等于预设值时,停止获取下一个不兼容节点,其中,所述N大于或等于2;
然后,基于第N-1个不兼容节点及所述第N个不兼容节点对神经网络模型进行分割,得到三个子模型,其中,神经网络模型的起点至第N-1个不兼容节点属于一子模型,第N-1个不兼容节点的下一节点至第N个不兼容节点的上一节点属于另一子模型,第N个不兼容节点至所述神经网络模型的终点属于所述三个模型中的另一个子模型。
在一个优选的实施方式中,所述计算机程序32还可执行以下操作:
若直至转换结束,均不存在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与神经网络模型的数据长度之间的比值大于或等于预设值,则获取每一相邻两个不兼容节点之间的数据长度,得到至少两个所获取的数据长度中的最大值;
然后,基于数据长度的最大值对应的两个目标不兼容节点对神经网络模型进行分割,得到对应的三个子模型,其中一个子模型不包括所述两个目标不兼容节点,另外两个子模型分别包括两个目标不兼容节点中的其中一个目标不兼容节点。
在一个优选的实施方式中,所述计算机程序32还可执行以下操作:
调用第三方引擎的转换函数开始对神经网络模型进行转换。
在一个优选的实施方式中,所述计算机程序32还可执行以下操作:
在CPU上执行包括不兼容节点的子模型。
所述服务器3可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述服务器可包括,但不仅限于,处理器30、存储器31。本领域技术人员可以理解,图3仅仅是服务器3的示例,并不构成对服务器3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器还可以包括输入输出设备、网络接入设备、总线等。
所述处理器30可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器31可以是所述服务器3的内部存储单元,例如服务器3的硬盘或内存。所述存储器31也可以是所述服务器3的外部存储设备,例如所述服务器3上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器31还可以既包括所述服务器3的内部存储单元也包括外部存储设备。所述存储器31用于存储所述计算机程序以及所述服务器所需的其他程序和数据。所述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。
实施例四
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的神经网络模型加速方法。
所述可执行指令可用于使得处理器执行以下操作:
确定第三方引擎与神经网络模型不兼容的节点;
基于不兼容的节点对神经网络模型进行分割,得到至少两个子模型;
将不包括不兼容的节点的子模型转换为第三方引擎支持的格式;
通过第三方引擎运行所述经过格式转换的子模型。
在一个优选的实施方式中,所述可执行指令具体还可以用于使得处理器执行以下操作:
通过第三方引擎开始转换所述神经网络模型;
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点;以所述不兼容节点的下一节点开始通过所述第三方引擎转换所述神经网络模型,若还存在不兼容节点,则以当前不兼容节点的下一个节点开始继续进行转换步骤,直到转换结束,得到至少两个不兼容节点;或者
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点,以不兼容节点的下一节点开始通过所述第三方引擎转换神经网络模型,若没有出现转换异常,则到转换结束时,得到一个不兼容节点。
在一个优选的实施方式中,所述可执行指令具体还可以用于使得处理器执行以下操作:
基于不兼容节点对神经网络模型进行分割,得到两个子模型,其中,若该不兼容节点靠近神经网络模型的起点时,神经网络模型的起点及不兼容节点属于同一子模型;若该不兼容节点靠近神经网络模型的终点时,神经网络模型的终点及所述不兼容节点属于同一所述子模型。
在一个优选的实施方式中,不兼容节点为至少两个,且任一不兼容节点不属于神经网络模型的起点或终点时,所述可执行指令具体还可以用于使得处理器执行以下操作:
基于K个不兼容节点将神经网络模型分割成K+1个子模型,其中,若第M个不兼容节点与第M-1个不兼容节点之间的数据长度大于或等于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M+1个不兼容节点属于同一子模型,第M个不兼容节点与第M-1个不兼容节点属于不同的子模型;若第M个不兼容节点与第M-1个不兼容节点之间的数据长度小于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M-1个不兼容节点属于同一子模型,第M个不兼容节点与第M+1个不兼容节点属于不同的子模型,其中,所述K为大于或等于2的自然数,M为大于或等于1的自然数,且M小于或等于K。
一个优选的实施方式中,所述可执行指令具体还可以用于使得处理器执行以下操作:
控制第三方引擎开始转换所述神经网络模型;
当第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点,获取神经网络模型的起点到所述不兼容节点之间的数据长度与所述神经网络模型对应的数据长度的比值;
若所述比值为大于或等于预设值,基于所述不兼容节点对所述神经网络模型进行分割,得到两个子模型,其中,所述神经网络模型的起点与所述不兼容节点处于不同的子模型中。
在一个优选的实施方式中,所述可执行指令具体还可以用于使得处理器执行以下操作:
若比值小于所述预设值,则以不兼容节点作为第一个不兼容节点,从所述第一个不兼容节点的下一个节点开始控制所述第三方引擎对所述神经网络模型进行转换;
当所述第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为第二个不兼容节点,并获取第一不兼容节点到第二不兼容节点之间的数据长度与神经网络模型对应的数据长度之间的比值,若比值小于所述预设值,以第二个不兼容节点的下一节点开始控制第三方引擎对神经网络模型进行转换,继续获取下一个不兼容节点,直到存在第N个不兼容节点到第N-1个不兼容节点之间的数据长度与神经网络模型的数据长度之间的比值大于或等于预设值时,停止获取下一个不兼容节点,其中,所述N大于或等于2;
然后,基于第N-1个不兼容节点及所述第N个不兼容节点对神经网络模型进行分割,得到三个子模型,其中,神经网络模型的起点至第N-1个不兼容节点属于一子模型,第N-1个不兼容节点的下一节点至第N个不兼容节点的上一节点属于另一子模型,第N个不兼容节点至所述神经网络模型的终点属于所述三个模型中的另一个子模型。
在一个优选的实施方式中,所述可执行指令具体还可以用于使得处理器执行以下操作:
若直至转换结束,均不存在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与神经网络模型的数据长度之间的比值大于或等于预设值,则获取每一相邻两个不兼容节点之间的数据长度,得到至少两个所获取的数据长度中的最大值;
然后,基于数据长度的最大值对应的两个目标不兼容节点对神经网络模型进行分割,得到对应的三个子模型,其中一个子模型不包括所述两个目标不兼容节点,另外两个子模型分别包括两个目标不兼容节点中的其中一个目标不兼容节点。
在一个优选的实施方式中,所述可执行指令具体还可以用于使得处理器执行以下操作:
调用第三方引擎的转换函数开始对神经网络模型进行转换。
在一个优选的实施方式中,所述可执行指令具体可以用于使得处理器执行以下操作:
在CPU上执行包括不兼容节点的子模型。
在本发明中,利用第三方引擎来加速时,当出现不兼容时,通过分段执行的方式,由第三方引擎对兼容部分进行加速,可提高神经网络模型的整体运行速度,提高运行效率。
其中,若存在多个不兼容节点时,选择不小于预设值的数据长度或者选择最大数据长度对应的两个不兼容节点之间的且除去两个不兼容节点之间的部分神经网络模型来通过第三方引擎来运行,可进一步提高运行效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求经适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明经了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案经修改,或者对其中部分技术特征经等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (12)
1.一种神经网络模型加速方法,其特征在于,所述方法包括:
确定第三方引擎与神经网络模型不兼容的节点;
基于所述不兼容的节点对所述神经网络模型进行分割,得到至少两个子模型;
将不包括所述不兼容的节点的子模型转换为所述第三方引擎支持的格式;
通过所述第三方引擎运行所述经过格式转换的子模型。
2.根据权利要求1所述的方法,其特征在于,所述确定第三方引擎与神经网络模型不兼容的节点,包括:
通过所述第三方引擎开始转换所述神经网络模型;
当所述第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点;以所述不兼容节点的下一节点开始通过所述第三方引擎转换所述神经网络模型,若还存在不兼容节点,则以当前不兼容节点的下一个节点开始继续进行转换步骤,直到转换结束,得到至少两个不兼容节点;或者
当所述第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点,以所述不兼容节点的下一节点开始通过所述第三方引擎转换所述神经网络模型,若没有出现转换异常,则到转换结束时,得到一个不兼容节点。
3.根据权利要求2所述的方法,其特征在于,所述不兼容节点为一个时,所述基于所述不兼容的节点对所述神经网络模型进行分割,具体为:
基于所述不兼容节点对所述神经网络模型进行分割,得到两个子模型,其中,若该不兼容节点靠近所述神经网络模型的起点时,所述神经网络模型的起点及所述不兼容节点属于同一所述子模型;若该不兼容节点靠近所述神经网络模型的终点时,所述神经网络模型的终点及所述不兼容节点属于同一所述子模型。
4.根据权利要求2所述的方法,其特征在于,所述不兼容节点为至少两个,且任一所述不兼容节点不属于所述神经网络模型的起点或终点时,所述基于所述不兼容的节点对所述神经网络模型进行分割,得到至少两个子模型,具体为:
基于K个所述不兼容节点将所述神经网络模型分割成K+1个子模型,其中,若第M个不兼容节点与第M-1个不兼容节点之间的数据长度大于或等于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M+1个不兼容节点属于同一子模型,第M个不兼容节点与第M-1个不兼容节点属于不同的子模型;若第M个不兼容节点与第M-1个不兼容节点之间的数据长度小于第M个不兼容节点与第M+1个不兼容节点之间的数据长度时,第M个不兼容节点与第M-1个不兼容节点属于同一子模型,第M个不兼容节点与第M+1个不兼容节点属于不同的子模型,其中,所述K为大于2的自然数,M为大于1的自然数,且M小于K。
5.根据权利要求1所述的方法,其特征在于,所述确定第三方引擎与神经网络模型不兼容的节点,包括:
通过所述第三方引擎开始转换所述神经网络模型;
当所述第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为不兼容节点,获取所述神经网络模型的起点到所述不兼容节点之间的数据长度与所述神经网络模型对应的数据长度的比值;
若所述比值为大于或等于预设值,则转到所述基于所述不兼容的节点对所述神经网络模型进行分割的步骤;
所述基于所述不兼容的节点对所述神经网络模型进行分割具体为:
基于所述不兼容节点对所述神经网络模型进行分割,得到两个子模型,其中,所述神经网络模型的起点与所述不兼容节点处于不同的子模型中。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述比值小于所述预设值,则以所述不兼容节点作为第一个不兼容节点,从所述第一个不兼容节点的下一个节点开始通过所述第三方引擎对所述神经网络模型进行转换;
当所述第三方引擎转换异常时,获取当前转换的节点,以当前转换的节点作为第二个不兼容节点,并获取所述第一不兼容节点到所述第二不兼容节点之间的数据长度与所述神经网络模型对应的数据长度之间的比值,若所述比值小于所述预设值,以所述第二个不兼容节点的下一节点开始通过第三方引擎对所述神经网络模型进行转换,继续获取下一个不兼容节点,直到存在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值大于或等于所述预设值时,停止获取下一个不兼容节点,其中,所述N大于或等于2;
所述基于所述不兼容的节点对所述神经网络模型进行分割,得到至少两个子模型具体为:
基于所述第N-1个不兼容节点及所述第N个不兼容节点对所述神经网络模型进行分割,得到三个子模型,其中,所述神经网络模型的起点至所述第N-1个不兼容节点属于一子模型,所述第N-1个不兼容节点的下一节点至所述第N个不兼容节点的上一节点属于另一子模型,所述第N个不兼容节点至所述神经网络模型的终点属于所述三个模型中的另一个子模型。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若直至转换结束,均不存在第N个不兼容节点到所述第N-1个不兼容节点之间的数据长度与所述神经网络模型的数据长度之间的比值大于或等于所述预设值,则获取每一相邻两个不兼容节点之间的数据长度,得到所获取的数据长度中的最大值;
所述基于所述不兼容的节点对所述神经网络模型进行分割,得到至少两个模型具体为:
基于所述数据长度的最大值对应的两个目标不兼容节点对所述神经网络模型进行分割,得到对应的三个子模型,其中一个子模型不包括所述两个目标不兼容节点,另外两个子模型分别包括所述两个目标不兼容节点中的其中一个目标不兼容节点。
8.根据权利要求2或5所述的方法,其特征在于,所述通过第三方引擎开始转换所述神经网络模型,具体为:
调用所述第三方引擎的转换函数开始对所述神经网络模型进行转换。
9.根据权利要求1至7任意一项所述的方法,其特征在于,所述基于所述不兼容的节点对所述神经网络模型进行分割,得到至少两个子模型之后还包括:
在CPU上执行包括不兼容节点的子模型。
10.一种神经网络模型加速装置,其特征在于,包括:
确定模块,用于确定第三方引擎与神经网络模型不兼容的节点;
分割模块,用于基于所述不兼容的节点对所述神经网络模型进行分割,得到至少两个模型;
转换模块,用于将不包括所述不兼容的节点的模型转换为所述第三方引擎支持的格式;
控制模块,用于控制所述第三方引擎运行所述经过格式转换的模型。
11.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至9中任一项所述方法的步骤。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910914935.3A CN112561044B (zh) | 2019-09-26 | 2019-09-26 | 神经网络模型加速方法及装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910914935.3A CN112561044B (zh) | 2019-09-26 | 2019-09-26 | 神经网络模型加速方法及装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112561044A CN112561044A (zh) | 2021-03-26 |
CN112561044B true CN112561044B (zh) | 2023-07-14 |
Family
ID=75029642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910914935.3A Active CN112561044B (zh) | 2019-09-26 | 2019-09-26 | 神经网络模型加速方法及装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112561044B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116703422A (zh) * | 2022-02-25 | 2023-09-05 | 华为技术有限公司 | 一种模型管理的方法和通信装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416928A (zh) * | 2016-06-07 | 2019-03-01 | 伊路米纳有限公司 | 用于进行二级和/或三级处理的生物信息学***、设备和方法 |
CN109690475A (zh) * | 2016-09-30 | 2019-04-26 | 英特尔公司 | 用于转移操作的硬件加速器和方法 |
CN109727376A (zh) * | 2018-12-29 | 2019-05-07 | 北京沃东天骏信息技术有限公司 | 生成配置文件的方法、装置及售货设备 |
CN110197253A (zh) * | 2018-02-27 | 2019-09-03 | 意法半导体国际有限公司 | 用于深度学习加速的算术单元 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9716625B2 (en) * | 2013-10-09 | 2017-07-25 | International Business Machines Corporation | Identifying compatible system configurations |
US10581901B2 (en) * | 2016-03-25 | 2020-03-03 | Cisco Technology, Inc. | Increased granularity and anomaly correlation using multi-layer distributed analytics in the network |
-
2019
- 2019-09-26 CN CN201910914935.3A patent/CN112561044B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416928A (zh) * | 2016-06-07 | 2019-03-01 | 伊路米纳有限公司 | 用于进行二级和/或三级处理的生物信息学***、设备和方法 |
CN109690475A (zh) * | 2016-09-30 | 2019-04-26 | 英特尔公司 | 用于转移操作的硬件加速器和方法 |
CN110197253A (zh) * | 2018-02-27 | 2019-09-03 | 意法半导体国际有限公司 | 用于深度学习加速的算术单元 |
CN109727376A (zh) * | 2018-12-29 | 2019-05-07 | 北京沃东天骏信息技术有限公司 | 生成配置文件的方法、装置及售货设备 |
Non-Patent Citations (2)
Title |
---|
Deep Learning-Based Super-Resolution Reconstruction and Marker Detection for Drone Landing;Noi Quang Truong;《IEEE Access》;20190509;全文 * |
嵌入式人工智能技术开发及应用;毕盛;《电子产品世界》;20190726;14-16,25页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112561044A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11302303B2 (en) | Method and device for training an acoustic model | |
CN112671232B (zh) | Llc谐振电路的控制方法、装置及终端设备 | |
CN112561044B (zh) | 神经网络模型加速方法及装置、服务器及存储介质 | |
CN112506950A (zh) | 数据聚合处理方法、计算节点、计算集群及存储介质 | |
US20190392312A1 (en) | Method for quantizing a histogram of an image, method for training a neural network and neural network training system | |
CN110602229A (zh) | 基于动态切片的终端***版本下载方法、装置及*** | |
CN111210826B (zh) | 语音信息处理方法、装置、存储介质和智能终端 | |
CN112214394A (zh) | 内存泄漏检测方法、装置和设备 | |
CN112287950A (zh) | 特征提取模块压缩方法、图像处理方法、装置、介质 | |
CN112148470B (zh) | 参数同步方法、计算机装置及可读存储介质 | |
CN114936187A (zh) | 数据文件的处理方法、装置、设备及存储介质 | |
CN106919341A (zh) | 一种下发i/o的方法及装置 | |
CN111667045A (zh) | 多通道神经网络模型训练方法、装置及计算机存储介质 | |
CN117351592B (zh) | 车辆异常状态判断方法、装置、复杂事件处理引擎及介质 | |
CN111367497B (zh) | 基于posit数据格式的浮点数乘法运算方法及装置 | |
CN113202647B (zh) | 车辆发动机输出功率的控制方法、装置及终端 | |
CN114124992B (zh) | 整车域控制器的运行状态监控方法、装置、设备和*** | |
CN111045687B (zh) | 一种人工智能应用的部署方法及相关装置 | |
US11481615B1 (en) | Anti-spoofing of neural networks | |
CN111384875B (zh) | 一种舵机的控制方法、控制装置及终端设备 | |
CN116302492A (zh) | 一种服务器内存防溢出方法、装置、设备及存储介质 | |
US20150277970A1 (en) | Reducing processor loading during housekeeping operations | |
CN116708444A (zh) | 一种边缘网关资源智能分配优化*** | |
CN113239941A (zh) | 模型输入最优尺寸的方法、装置、设备及可读存储介质 | |
CN115617825A (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 |