CN114841322A - 神经网络计算图的处理方法及处理装置 - Google Patents
神经网络计算图的处理方法及处理装置 Download PDFInfo
- Publication number
- CN114841322A CN114841322A CN202210536601.9A CN202210536601A CN114841322A CN 114841322 A CN114841322 A CN 114841322A CN 202210536601 A CN202210536601 A CN 202210536601A CN 114841322 A CN114841322 A CN 114841322A
- Authority
- CN
- China
- Prior art keywords
- subgraph
- computation
- computational
- subgraphs
- graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 105
- 238000003672 processing method Methods 0.000 title claims abstract description 62
- 238000012545 processing Methods 0.000 title claims abstract description 45
- 238000007499 fusion processing Methods 0.000 claims description 63
- 230000004927 fusion Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 15
- 238000000034 method Methods 0.000 claims description 14
- 230000001133 acceleration Effects 0.000 claims description 7
- 230000000694 effects Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Biology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开提供了一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读介质,该神经网络计算图包括多个算子节点,该处理方法包括:根据多个算子节点的输出连接关系,获取所有符合拆分点条件的目标算子节点,拆分点条件包括:具有第一输入端和第二输入端,且第一输入端所连接的算子节点为数据输入节点;以目标算子节点的第二输入端作为拆分点,将神经网络计算图拆分为串行连接的多个计算子图,第二输入端所连接的算子节点的输入端与其他算子节点连接;依次根据每个计算子图生成每个计算子图对应的可执行文件。根据本公开的技术方案,能够实现对任意神经网络计算图的自动化拆分,提高神经网络计算图的编译效率和效果,降低编译难度。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读存储介质。
背景技术
基于存算一体的众核架构芯片,因将计算和存储都放在片上,减少了数据搬运时间,降低了功耗,是众核芯片的一个重要发展方向。
深度学习框架(例如TensorFlow或ONNX)通常使用计算图来表达深度学习模型(神经网络)的计算。针对特定的加速硬件,神经网络计算图需要经过编译器进行编译,以生成可以在硬件上运行的指令流。其中,硬件可以是基于存算一体的众核芯片,众核芯片通常包括多个物理核(Core)。
发明内容
本公开提供一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读存储介质。
第一方面,本公开提供了一种神经网络计算图的处理方法,所述神经网络计算图包括多个算子节点,所述处理方法包括:
根据多个所述算子节点的输出连接关系,获取所有符合拆分点条件的目标算子节点,所述拆分点条件包括:具有第一输入端和第二输入端,且所述第一输入端所连接的算子节点为数据输入节点;
以所述目标算子节点的第二输入端作为拆分点,将所述神经网络计算图拆分为串行连接的多个计算子图,所述第二输入端所连接的算子节点的输入端与其他算子节点连接;
依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件。
第二方面,本公开提供了一种处理装置,所述处理装置用于对待处理的神经网络计算图进行处理,所述神经网络计算图包括多个算子节点,所述处理装置包括:
确定模块,用于根据多个所述算子节点的输出连接关系,获取所有符合拆分点条件的目标算子节点,所述拆分点条件包括:具有第一输入端和第二输入端,且所述第一输入端所连接的算子节点为数据输入节点;
第一拆分模块,用于以所述目标算子节点的第二输入端作为拆分点,将所述神经网络计算图拆分为串行连接的多个计算子图,所述第二输入端所连接的算子节点的输入端与其他算子节点连接;
生成模块,用于依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件。
第三方面,本公开提供了一种电子设备,该电子设备包括:
至少一个处理器;
以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的神经网络计算图的处理方法。
第四方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器/处理核执行时实现上述的神经网络计算图的处理方法。
根据本公开实施例提供的神经网络计算图的处理方法的技术方案,一方面,该处理方法适用于任意神经网络计算图,能够实现对任意神经网络计算图的自动化拆分,使得神经网络计算图能够分段进行编译,降低了神经网络计算图的编译难度,提高了神经网络计算图的编译效率和效果,且有效降低了神经网络计算图的编译对芯片硬件存储资源的要求,有利于解决神经网络计算图的编译所需存储资源较大而实际芯片硬件存储资源无法满足的问题,实现了对芯片硬件存储资源的合理利用,提高了芯片硬件存储资源的利用效率;另一方面,通过本公开实施例提供的处理方法对神经网络计算图进行拆分和可执行文件的生成,对于目标算子节点的部分输入端(如第一输入端)所需的数据,无需提前且长期存储于相应芯片上,从而能够有效节省相应芯片的片上存储资源,提高片上存储资源的利用率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1为本公开实施例提供的一种神经网络计算图的处理方法的流程示意图;
图2为一种神经网络计算图的结构示意图;
图3为图1中步骤S13的一种具体实现方式的流程示意图;
图4为图1中步骤S13的另一种具体实现方式的流程示意图;
图5为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图;
图6为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图;
图7为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图;
图8为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图;
图9为本公开实施例提供的一种处理装置的组成框图;
图10为本公开实施例提供的一种电子设备的组成框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
在相关技术中,大型神经网络的计算图通常所需的运算量、数据量较大,芯片的计算、存储资源通常无法满足整个神经网络计算图的资源需求,造成神经网络计算图的编译难度大且效率低。
为此,本公开实施例提供了一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读存储介质,旨在能够有效解决上述相关技术中存在的技术问题中的至少一种。
本公开实施例的处理方法可以由处理装置作为执行主体执行,处理装置可以通过软件和/或硬件方式集成于终端设备或服务器等电子设备中,示例性的,终端设备可以为车载设备、用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些实施例中,本公开实施例的处理方法可以通过处理器调用存储器中存储的计算机可读程序指令的方式来实现,或者,可通过服务器执行本公开实施例的处理方法。
图1为本公开实施例提供的一种神经网络计算图的处理方法的流程示意图。
本公开实施例提供一种神经网络计算图的处理方法,该神经网络计算图的处理方法用于实现将待处理的神经网络计算图进行自动拆分,并生成在相应众核芯片上运行的可执行文件,其中待处理的神经网络计算图可以包括多个算子节点,算子节点是构成神经网络的基本计算单元,算子节点例如可以是神经网络中的卷积、池化等运算操作,神经网络可以是任意类型的深度学习网络,神经网络可以用于执行图像处理任务、语音处理任务、文本处理任务、视频处理任务中的任意一种,神经网络的输入数据可以是图像数据、语音数据、文本数据、视频数据中的任意一种。
参照图1,该处理方法可以包括:步骤S11~步骤S13。
步骤S11、根据多个算子节点的输入连接关系,确定神经网络计算图中所有符合拆分点条件的目标算子节点;其中,拆分点条件可以包括具有第一输入端和第二输入端、且第一输入端所连接的算子节点为数据输入节点。
步骤S12、以目标算子节点的第二输入端作为拆分点,将神经网络计算图拆分为串行连接的多个计算子图,第二输入端所连接的算子节点的输入端与其他算子节点连接。
步骤S13、依次根据每个计算子图生成每个计算子图对应的可执行文件。
在本公开实施例中,对于一个待处理的神经网络计算图,在根据多个算子节点的输入连接关系,确定神经网络计算图中所有符合拆分点条件的目标算子节点之前,即在步骤S11之前,该处理方法还包括:获取神经网络计算图中每个算子节点的节点信息。
其中,算子节点的节点信息可以包括算子节点的输入连接关系、输出连接关系、所需的参数信息、算子节点的属性信息、算子节点的执行顺序等。其中,算子节点的输入连接关系是描述神经网络计算图中该算子节点的输入和其他算子节点的输出之间的连接关系,算子节点的输出连接关系是描述神经网络计算图中该算子节点的输出和其他算子节点的输入之间的连接关系,算子节点所需的参数信息包括但不限于预先配置的实现该算子节点的运算操作所需的权重参数,算子节点的属性信息是表征算子节点的特征属性的信息,算子节点的属性信息可以包括但不限于算子节点的算子类型、算子节点所需的计算量和存储量,算子节点的执行顺序是表征执行该算子节点的运算操作的时间顺序。
在步骤S11中,根据神经网络计算图中多个算子节点的输入连接关系,以具有第一输入端和第二输入端、且第一输入端所连接的算子节点为数据输入节点,作为拆分点条件,可以确定神经网络计算图中满足上述拆分点条件的所有目标算子节点。其中,数据输入节点为算子类型为用于进行数据输入的节点,该算子类型的算子节点不用于进行数据运算操作,不与其他算子节点具有输入连接关系。
具体地,对于神经网络计算图中的每个算子节点,根据该算子节点的输入连接关系,可以确定神经网络计算图中与该算子节点的输入端连接的其他算子节点的数量,从而可以确定该算子节点为单输入节点、双输入节点或者多输入节点。
进一步地,根据神经网络计算图中多个算子节点的输入连接关系以及节点信息,可以确定与每个算子节点的每一个输入端连接的其他算子节点的输入连接关系和算子类型,从而确定与每个算子节点的每一个输入端连接的其他算子节点是否为数据输入节点,进而可以确定任意一个算子节点是否为满足拆分点条件的算子节点。当一个算子节点为双输入或者多输入节点,且该算子节点的一个输入端所连接的算子节点作为数据输入节点,且该算子节点的另一个输入端所连接的算子节点的输入端与其他算子节点具有输入连接关系,即另一个输入端所连接的算子节点为数据运算节点,用于进行数据运算操作,则表示该算子节点满足拆分点条件,该算子节点为目标算子节点。为了便于区分,在本文中将该算子节点的该一个输入端定义为第一输入端,该算子节点的该另一个输入端定义为第二输入端。
图2为一种神经网络计算图的结构示意图,示例性的,参照图2,算子节点3为双输入节点,且其中一个输入端31所连接的算子节点7为数据输入节点,而另一个输入端32所连接的算子节点2的输入端21与算子节点1具有输入连接关系,因此算子节点3符合拆分点条件,将算子节点3确定为目标算子节点,同理,算子节点5为双输入节点,且其中一个输入端51所连接的算子节点8为数据输入节点,而另一个输入端52所连接的算子节点4的输入端41与算子节点3具有输入连接关系,因此算子节点5符合拆分点条件,将算子节点5确定为目标算子节点,而其他算子节点1、2、4、6、7、8均不符合拆分点条件。
在步骤S12中,以每个目标算子节点的第二输入端作为拆分点,对神经网络计算图进行拆分,可以得到串行连接的多个计算子图。示例性的,以图2所示的神经网络计算图为例,根据步骤S11可以确定图2所示神经网络计算图中满足上述拆分点条件的目标算子节点包括算子节点3和算子节点5,以算子节点3的第二输入端32和算子节点5的第二输入端52分别作为拆分点,对图2所示的神经网络计算图进行拆分,可以得到串行连接的3个计算子图,假设该3个计算子图分别记为计算子图1、计算子图2和计算子图3,则计算子图1包括算子节点1和算子节点2,计算子图2包括算子节点7、算子节点3和算子节点4,计算子图3包括算子节点8、算子节点5和算子节点6。
需要说明的是,目标算子节点的第一输入端的数量可以为一个或多个,第二输入端的数量也可以为一个或多个,本公开实施例对此不作限制。
对于通过步骤S12拆分得到的多个计算子图中而言,每个计算子图分别具有一个或多个算子节点。
在步骤S13中,对于通过步骤S12拆分得到的每个计算子图,根据该计算子图生成该计算子图对应的可执行文件,可执行文件是可在相应芯片上执行的执行代码,从而实现将该计算子图编译至对应的芯片上运行,以使相应的芯片执行该计算子图相应的计算任务。
根据本公开实施例提供的神经网络计算图的处理方法的技术方案,一方面,该处理方法适用于任意神经网络计算图,能够实现对任意神经网络计算图的自动化拆分,使得神经网络计算图能够分段进行编译,降低了神经网络计算图的编译难度,提高了神经网络计算图的编译效率和效果,且有效降低了神经网络计算图的编译对芯片硬件存储资源的要求,有利于解决神经网络计算图的编译所需存储资源较大而实际芯片硬件存储资源无法满足的问题,实现了对芯片硬件存储资源的合理利用,提高了芯片硬件存储资源的利用效率;另一方面,通过本公开实施例提供的处理方法对神经网络计算图进行拆分和可执行文件的生成,对于目标算子节点的部分输入端(如第一输入端)所需的数据,无需提前且长期存储于相应芯片上,从而能够有效节省相应芯片的片上存储资源,提高片上存储资源的利用率。
在一些实施例中,第一输入端的输入数据预先存储于片外存储器,片外存储器是指计算图所编译的芯片外部的存储器,第一输入端的输入数据即为第一输入端所连接的数据输入节点对应输入的数据。在进行计算图的编译之前,可预先将第一输入端的输入数据存储于片外存储器,无需提前且长期存储于相应芯片上,从而能够有效节省相应芯片的片上存储资源,提高片上存储资源的利用率。
图3为图1中步骤S13的一种具体实现方式的流程示意图,参照图3,在一些实施例中,在步骤S13中,依次根据每个计算子图生成每个计算子图对应的芯片可执行文件,可以进一步包括:步骤S31~步骤S32。
步骤S31、响应于在生成当前的计算子图对应的可执行文件时发生失败报错,将当前的计算子图进一步拆分成串行连接的多个计算子图。
步骤S32、依次根据进一步拆分得到的每个计算子图,生成进一步拆分得到的每个计算子图对应的可执行文件。
在步骤S31中,在生成当前的计算子图对应的可执行文件时发生失败报错,表示当前的计算子图不能得到相应芯片支持,无法在相应芯片上正常运行,即相应芯片并不能支持当前的计算子图在该芯片上编译执行,例如当前的计算子图所需的算力、计算量或者存储量超过相应芯片的限制,导致在生成的计算子图对应的可执行文件时发生失败报错,因此将当前的计算子图进一步拆分成串行连接的多个计算子图。
在一些实施例中,可以按照上述步骤S11和步骤S12描述的拆分方式对当前的计算子图进行进一步拆分。在一些实施例中,可以根据需要通过配置其他拆分方式对当前的计算子图进行进一步拆分,或者通过配置其他拆分方式和上述步骤S11和步骤S12描述的拆分方式进行组合的方式对当前的计算子图进行进一步拆分,或者可以通过人工方式对当前的计算子图进行进一步拆分。其他拆分方式例如可以是按照配置的目标算子节点的其他拆分点条件进行目标算子节点的筛选和拆分的方式,本公开实施例对当前的计算子图进一步拆分的方式不作具体限制。
对于通过步骤S31进一步拆分得到的多个计算子图中而言,每个计算子图分别可以具有一个或多个算子节点。
在步骤S32中,对于通过步骤S31进一步拆分得到的每个计算子图,根据该计算子图生成该计算子图对应的可执行文件,可执行文件是可在相应芯片上执行的执行代码,从而实现将该计算子图编译至对应的芯片上运行,以使相应的芯片执行该计算子图相应的计算任务。
通过上述步骤S31和步骤S32,在生成当前的计算子图对应的可执行文件时发生失败报错,表示当前的计算子图可能无法得到相应芯片的支持,因此对当前的计算子图作进一步细化拆分,从而提高编译效果,有利于使得拆分得到的每段计算子图都能够得到芯片硬件支持,并尽可能利用芯片硬件资源,提高芯片处理神经网络计算图的执行效率。
图4为图1中步骤S13的另一种具体实现方式的流程示意图,参照图4,在一些实施例中,在步骤S13中,依次根据每个计算子图生成每个计算子图对应的芯片可执行文件,可以进一步包括:步骤S41~步骤S42。
步骤S41、响应于在生成当前的计算子图对应的可执行文件时无失败报错,将当前的计算子图作为目标计算子图;
步骤S42、将每个目标计算子图对应的可执行文件加载至对应的芯片。
在步骤S41中,在生成当前的计算子图对应的可执行文件时未发生失败报错,表示当前的计算子图能够得到相应芯片支持,能够在相应芯片上正常运行,即相应芯片支持当前的计算子图在该芯片上编译执行,因此可以无需对当前的计算子图进一步进行处理,将当前的计算子图作为目标计算子图,并执行步骤S42。
在步骤S42中,由于在生成目标计算子图对应的可执行文件时并未发生失败报错,因此目标计算子图的可执行文件能够得到相应芯片支持,且能够在相应芯片上正常执行,因此,对于每个目标计算子图,可将目标计算子图对应的可执行文件加载至对应的芯片,以在相应芯片上运行目标计算子图对应的可执行文件,以执行相应的计算任务。
需要说明的是,通过步骤S12拆分得到的计算子图,与通过步骤S31进一步拆分得到的计算子图,均是神经网络计算图中的一个子图,因此,本公开实施例对于通过步骤S12拆分得到的计算子图与通过步骤S31进一步拆分得到的计算子图并未作名称和定义上的具体区分,二者身份和作用实质等同,并且,对于步骤S32生成可执行文件的具体描述可参考本公开实施例中对步骤S13生成可执行文件的相关描述,在此不作具体赘述。
在本公开实施例中,在生成每个计算子图对应的可执行文件时均未发生失败报错,表示所有计算子图均能够得到相应芯片支持,均能够在相应芯片上正常运行,但可能存在部分计算子图实际所需的资源较少,而部分计算子图实际所需的资源较多,当直接将所有计算子图的可执行文件加载相应芯片运行时,将可能造成芯片硬件资源不能得到合理利用,导致部分芯片硬件资源负载较低,而部分芯片硬件资源负载较高,不利于芯片硬件资源的负载均衡,因此,在一些实施例中,为了实现芯片硬件资源的合理利用,提高芯片硬件资源的利用效率,实现芯片硬件资源的负载均衡,需要将部分计算子图进行融合拼接成一个计算子图之后,再进行相应可执行文件的生成并加载至相应芯片。
图5为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图,参照图5,在一些实施例中,在依次根据每个计算子图生成每个计算子图对应的可执行文件之后,即在步骤S13之后,该处理方法还可以进一步包括:步骤S51~步骤S54。
步骤S51、响应于在生成每个计算子图对应的可执行文件时均无失败报错,获取至少一组计算子图,每组计算子图包括串行连接的至少两个计算子图。
步骤S52、对每组计算子图中的至少两个计算子图进行融合处理,以得到每组计算子图对应的备选计算子图。
步骤S53、在生成备选计算子图对应的可执行文件时无失败报错的情况下,将备选计算子图作为目标计算子图。
步骤S54、将每个目标计算子图对应的可执行文件加载至对应的芯片。
在步骤S51中,在生成每个计算子图对应的可执行文件时均未发生失败报错的情况下,为了实现芯片硬件资源的合理利用,提高芯片硬件资源的利用效率,实现芯片硬件资源的负载均衡,首先从依次串行连接的所有计算子图中,获取至少一组计算子图,其中每组计算子图包括串行连接的至少两个计算子图。
示例性的,参考图2所示的神经网络计算图,假设图2所示的神经网络计算图当前被拆分为计算子图1、计算子图2和计算子图3,则在步骤S51中,可以获取一组计算子图,该一组计算子图可以包括串行连接的计算子图1和计算子图2,或者包括串行连接的计算子图2和计算子图3。
在步骤S52中,融合处理,是指将一组计算子图中的每相邻两个计算子图中,前一个计算子图的输出和后一个计算子图的输入进行一一对应连接,以将一组计算子图中的至少两个计算子图合并为一个计算子图,作为备选计算子图。
示例性的,参考图2所示的神经网络计算图,一组计算子图包括串行连接的计算子图1和计算子图2,计算子图1包括算子节点1和算子节点2,计算子图2包括算子节点7、算子节点3和算子节点4,在步骤S52中,将串行连接的计算子图1和计算子图2进行融合处理,得到备选计算子图,该备选计算子图包括算子节点1、2、7、3、4。
在对每组计算子图进行融合处理得到的备选计算子图之后,可以根据融合处理得到的备选计算子图生成对应的可执行文件,在步骤S53中,在生成融合处理得到的备选计算子图对应的可执行文件时未发生失败报错的情况下,则表示融合处理得到的备选计算子图依然可以得到相应芯片的支持,能够在相应芯片上正常运行,即相应芯片能够支持对应一组计算子图的至少两个计算子图在该芯片上编译执行,因此可以将备选计算子图作为目标计算子图。
在一些实施例中,对于任意一组计算子图,在该组计算子图包括串行连接的至少两个计算子图,且生成融合处理得到的备选计算子图对应的可执行文件时发生失败报错的情况下,则表示相应芯片并不能支持该组计算子图的至少两个计算子图在该芯片上编译执行,因此可以将融合处理之前的该组计算子图中的至少两个计算子图分别作为一个目标计算子图。
示例性的,假设步骤S51获取到的一组计算子图包括计算子图A、计算子图B,融合处理之后得到备选计算子图C,在生成融合处理得到的备选计算子图C对应的可执行文件时发生失败报错的情况下,则可以将融合处理之前的计算子图A作为一个目标计算子图,且将融合处理之前的计算子图B作为一个目标计算子图。
在一些实施例中,对于任意一组计算子图,在该组计算子图包括串行连接的多个(如3、4个)计算子图,且生成融合处理得到的备选计算子图对应的可执行文件时发生失败报错的情况下,则可以将该组计算子图进一步分为一组或多组计算子图,并进行如上述步骤S52和步骤S53的操作,而未被划分到组的计算子图则可以分别作为一个目标计算子图。
示例性的,假设步骤S51获取到的一组计算子图包括计算子图D、计算子图E和计算子图F,融合处理之后得到备选计算子图G,生成融合处理得到的备选计算子图G对应的可执行文件时发生失败报错的情况下,则可以将计算子图D、计算子图E重新划分至一组计算子图,并重新对计算子图D、计算子图E进行融合处理,并对融合得到的子图进行如步骤S53的操作,而计算子图F未被划分至组,计算子图F单独作为一个目标计算子图。
此外,关于步骤S54的描述可参考上述对步骤S42的描述,此处不作具体赘述。
在一些实施例中,在步骤S51中,获取至少一组计算子图,可以进一步包括:根据各计算子图对应的子图属性参数,确定所有计算子图中可进行融合处理的至少一组计算子图;其中,计算子图对应的子图属性参数可以包括计算子图对应的计算量、权重信息、以及对应的矢量加速单元图的节点数量。
其中,计算子图对应的计算量可以是计算子图所包含的所有算子节点所需的计算量的总和,计算子图对应的权重信息可以包括计算子图所包含的所有算子节点所需的权重大小的总和,在拆分神经网络计算图之前预先将神经网络计算图映射至具体芯片硬件得到神经网络计算图对应的矢量加速单元(APU)图,神经网络计算图对应的矢量加速单元(APU)图表征神经网络计算图的算子节点在具体芯片硬件(如众核芯片、芯片上的物理核)上的映射关系,相应的,从神经网络计算图中拆分出的计算子图所对应的矢量加速单元(APU)图表征计算子图的算子节点在具体芯片硬件上的映射关系。
在一些实施例中,根据各计算子图对应的子图属性参数,确定所有计算子图中可进行融合处理的至少一组计算子图的步骤,可以进一步包括:按照所有计算子图的串行连接关系以及执行顺序,依次检查串行连接的至少两个计算子图是否满足融合条件;当确定串行连接的至少两个计算子图满足融合条件时,将该至少两个计算子图作为一组计算子图。
其中,融合条件可以包括:该至少两个计算子图对应的计算量之和大于或等于最小计算量阈值,且小于或等于最大计算量阈值;该至少两个计算子图对应的权重信息之和大于或等于最小权重阈值,且小于或等于最大权重阈值;该至少两个计算子图对应的APU图的节点数量之和大于或等于最小数量阈值,且小于或等于最大数量阈值。
其中,最小计算量阈值和最大计算量阈值可以根据实际需要进行配置,同理,最小权重阈值和最大权重阈值同样可以根据实际需要进行配置,最小数量阈值和最大数量阈值同样可以根据实际需要进行配置。
示例性的,假设当前所有的计算子图包括依次串行连接的计算子图H、计算子图I、计算子图J、计算子图K和计算子图L,当确定串行连接的计算子图H、计算子图I满足上述融合条件时,则将串行连接的计算子图H、计算子图I作为一组计算子图,当确定串行连接的计算子图J、计算子图K和计算子图L满足上述融合条件时,则将串行连接的计算子图J、计算子图K和计算子图L作为一组计算子图。
在一些实施例中,通过上述融合条件对可进行融合处理的串行连接的至少两个计算子图进行判断,可以提高获取可进行融合处理的至少一组计算子图的效率,提高融合后的子图的编译效果,有利于降低生成融合后的子图发生失败报错的概率。
在一些实施例中,在步骤S51中,获取至少一组计算子图,可以进一步包括:按照所有计算子图的串行连接关系以及执行顺序,将所有计算子图中每两个串行连接的计算子图分别作为一组计算子图。
示例性的,假设当前所有的计算子图包括依次串行连接的计算子图H、计算子图I、计算子图J和计算子图K,则将串行连接的计算子图H、计算子图I作为一组计算子图,以及将串行连接的计算子图J和计算子图K作为一组计算子图。
在一些实施例中,通过直接将所有计算子图中每两个串行连接的计算子图分别作为一组计算子图,可以有效提高获取至少一组计算子图的效率。
图6为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图,参照图6,在一些实施例中,在依次根据每个计算子图生成每个计算子图对应的可执行文件之后,即在步骤S13之后,该处理方法还可以进一步包括:步骤S61~步骤S64。
步骤S61、响应于在生成每个计算子图对应的可执行文件时均无失败报错,按照所有计算子图的执行顺序方向,将当前计算子图和下一个计算子图融合为备选计算子图。
步骤S62、在生成备选计算子图对应的可执行文件时发生失败报错的情况下,将当前计算子图作为目标计算子图。
步骤S63、将下一个计算子图作为当前计算子图,并返回执行将当前计算子图和下一个计算子图融合为备选计算子图的步骤。
步骤S64、将每个目标计算子图对应的可执行文件加载至对应的芯片。
在步骤S61中,在生成每个计算子图对应的可执行文件时均未发生失败报错的情况下,为了实现芯片硬件资源的合理利用,提高芯片硬件资源的利用效率,实现芯片硬件资源的负载均衡,首先按照依次串行连接的所有计算子图的执行顺序方向(如图2中从上至下的方向),将当前计算子图和下一个计算子图进行融合处理,得到备选计算子图。其中当前计算子图和下一个计算子图是神经网络计算图中串行连接且相邻的两个计算子图,且下一个计算子图是当前计算子图沿执行顺序方向的下一个计算子图,即沿执行顺序方向,与当前计算子图的输出连接的计算子图。
示例性的,参考图2所示的神经网络计算图,假设图2所示的神经网络计算图当前被拆分为计算子图1、计算子图2和计算子图3,按照执行顺序方向,当前计算子图为计算子图1,则在步骤S61中,首先将计算子图1和计算子图2进行融合处理,得到备选计算子图。
在得到备选计算子图之后,可以根据融合处理得到的备选计算子图生成对应的可执行文件,在步骤S62中,在生成备选计算子图对应的可执行文件时发生失败报错的情况下,表示融合处理得到的备选计算子图并不能得到相应芯片的支持,不能在相应芯片上正常运行,因此将当前计算子图单独作为目标计算子图并进行步骤S63,以按照执行顺序方向继续进行融合和判断。
在步骤S63中,将下一个计算子图作为当前计算子图,并返回执行将当前计算子图和下一个计算子图融合为备选计算子图的步骤,即返回执行步骤S61,以继续按照执行顺序方向对当前计算子图和当前计算子图的下一个计算子图进行融合和判断,直至遍历完所有计算子图。
例如,在生成融合上述计算子图1和计算子图2得到备选计算子图对应的可执行文件时发生失败报错,则表示计算子图1和计算子图2并不适合融合,因此将计算子图1作为目标计算子图,并将计算子图2作为当前计算子图,继续对计算子图2和计算子图3进行融合和判断,依此类推,直至遍历完所有计算子图。
此外,关于步骤S64的描述可参考上述对步骤S42的描述,此处不作具体赘述。
图7为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图,参照图7,在一些实施例中,在依次根据每个计算子图生成每个计算子图对应的可执行文件之后,即在步骤S13之后,该处理方法还可以进一步包括:步骤S71~步骤S74。
步骤S71、响应于在生成每个计算子图对应的可执行文件时均无失败报错,按照所有计算子图的执行顺序方向,将当前计算子图和下一个计算子图融合为备选计算子图。
步骤S72、在生成备选计算子图对应的可执行文件时无失败报错的情况下,将备选计算子图作为目标计算子图。
步骤S73、将执行顺序在下一个计算子图之后的计算子图作为当前计算子图,并返回执行将当前计算子图和下一个计算子图融合为备选计算子图的步骤。
步骤S74、将每个目标计算子图对应的可执行文件加载至对应的芯片。
关于步骤S71的描述可参考上述对步骤S61的描述,此处不作具体赘述。
在得到备选计算子图之后,可以根据融合处理得到的备选计算子图生成对应的可执行文件,在步骤S72中,在生成备选计算子图对应的可执行文件时未发生失败报错的情况下,表示融合处理得到的备选计算子图依然能得到相应芯片的支持,能够在相应芯片上正常运行,因此将备选计算子图作为目标计算子图并进行步骤S73,以按照执行顺序方向继续进行融合和判断。
在步骤S73中,将沿执行顺序方向位于下一个计算子图之后、且与下一个计算子图相邻的计算子图作为当前计算子图,并返回执行将当前计算子图和下一个计算子图融合为备选计算子图的步骤,即返回执行步骤S71,以继续按照执行顺序方向对当前计算子图和当前计算子图的下一个计算子图进行融合和判断,直至遍历完所有计算子图。
例如,假设当前所有的计算子图包括依次串行连接的计算子图H、计算子图I、计算子图J和计算子图K,当前计算子图为计算子图H,下一个计算子图为计算子图I,在生成融合上述计算子图H和计算子图I得到备选计算子图对应的可执行文件时未发生失败报错,则表示计算子图H和计算子图I适合进一步融合,因此将融合计算子图H和计算子图I之后得到备选计算子图作为目标计算子图,并将计算子图J作为当前计算子图,继续对计算子图J和计算子图K进行融合和判断,依此类推,直至遍历完所有计算子图。
此外,关于步骤S74的描述可参考上述对步骤S42的描述,此处不作具体赘述。
图8为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图,参照图8,在一些实施例中,在依次根据每个计算子图生成每个计算子图对应的可执行文件之后,即在步骤S13之后,该处理方法还可以进一步包括:步骤S81~步骤S84。
步骤S81、响应于在生成每个计算子图对应的可执行文件时均无失败报错,按照所有计算子图的执行顺序方向,依次将相邻的两个计算子图进行融合处理。
步骤S82、同时按照与执行顺序方向相反的方向,依次将相邻的两个计算子图进行融合处理。
步骤S83、对于任一融合处理得到的计算子图,在生成该融合处理得到的计算子图对应的可执行文件时无失败报错的情况下,将该融合处理得到的计算子图作为目标计算子图。
步骤S84、将每个目标计算子图对应的可执行文件加载至对应的芯片。
在步骤S81中,在生成每个计算子图对应的可执行文件时均未发生失败报错的情况下,为了实现芯片硬件资源的合理利用,提高芯片硬件资源的利用效率,实现芯片硬件资源的负载均衡,首先,在步骤S81中,按照依次串行连接的所有计算子图的执行顺序方向(如图2中从上至下的方向),依此将相邻的计算子图进行融合处理,得到备选计算子图,并且在得到每个备选计算子图之后,可以根据融合处理得到的备选计算子图生成对应的可执行文件。
同时,在步骤S82中,按照与上述执行顺序方向相反的方向(如图2中从下至上的方向),依此将相邻的计算子图进行融合处理,得到备选计算子图,并且在得到每个备选计算子图之后,可以根据融合处理得到的备选计算子图生成对应的可执行文件。
例如,假设当前所有的计算子图包括依次串行连接的计算子图H、计算子图I、计算子图J、计算子图K、计算子图L和计算子图M,执行顺序方向为从计算子图H到计算子图M的方向,与执行顺序方向相反的方向为从计算子图M到计算子图H的方向。则在步骤S81中,按照执行顺序方向,首先将计算子图H、计算子图I进行融合处理;同时在步骤S82中,按照与执行顺序方向相反的方向,首先将计算子图M、计算子图L进行融合处理。
在得到每个备选计算子图之后,可以根据融合处理得到的备选计算子图生成对应的可执行文件。在步骤S83中,对于沿任意方向融合处理得到的计算子图,在生成该融合处理得到的备选计算子图对应的可执行文件时未失败报错的情况下,表示融合处理得到的计算子图依然能得到相应芯片的支持,能够在相应芯片上正常运行,因此将融合处理得到的计算子图作为目标计算子图,并继续同时按照不同方向进行相邻两个计算子图的融合处理和判断,例如继续将计算子图J和K进行融合处理和判断,依此类推,直至遍历完所有计算子图。
在一些实施例中,对于沿任意方向融合处理得到的计算子图,在生成该融合处理得到的计算子图对应的可执行文件时发生失败报错的情况下,表示融合处理前的相邻两个计算子图并不适合进行融合,因此该处理方法还可以进一步包括:
当该融合处理得到的计算子图为按照执行顺序方向融合处理得到的计算子图时,则将融合处理前的相邻两个计算子图中执行顺序较早的计算子图作为目标计算子图,并继续按照执行顺序方向,对执行顺序较晚的计算子图和与该执行顺序较晚的计算子图相邻的后一个计算子图进行融合处理。
当该融合处理得到的计算子图为按照与所述执行顺序方向相反的方向融合处理得到的计算子图时,将融合处理前的相邻两个计算子图中执行顺序较晚的计算子图作为目标计算子图,并继续按照与执行顺序方向相反的方向,对执行顺序较早的计算子图和与该执行顺序较早的计算子图相邻的前一个计算子图进行融合处理。
此外,关于步骤S84的描述可参考上述对步骤S42的描述,此处不作具体赘述。
在一些实施例中,通过同时沿不同方向,依次对相邻的计算子图进行尝试融合和判断,能够有效提高尝试融合和判断的效率。
在一些实施例中,上述芯片可以是众核系统中的任意一个众核芯片,众核系统可以包括一个或多个众核芯片,众核芯片是基于存算一体的众核架构的芯片,每个众核芯片可以包括多个物理核(也称为计算核),每个物理核均具有独立内存。
在一些实施例中,对于经过上述处理得到的串行连接的多个目标计算子图,该多个目标计算子图对应的芯片可以为同一众核芯片,也可以分别对应不同的众核芯片,或者部分目标计算子图分别对应不同众核芯片,而部分目标计算子图对应相同的众核芯片,具体可以根据实际需要确定,本公开实施例不作具体限制。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了一种处理装置、电子设备、计算机可读存储介质,上述处理装置用于实现本公开提供的神经网络计算图的处理方法,上述电子设备及计算机可读存储介质均可用来实现本公开提供的神经网络计算图的处理方法,相应技术方案和描述和参见方法部分的相应记载,此处不再赘述。
图9为本公开实施例提供的一种处理装置的组成框图,参照图9,本公开实施例提供了一种处理装置90,该处理装置90用于对待处理的神经网络计算图进行处理,神经网络计算图包括多个算子节点,该处理装置90包括:确定模块91、第一拆分模块92和生成模块93。
其中,确定模块91用于根据多个算子节点的输入连接关系,获取所有符合拆分点条件的目标算子节点,拆分点条件包括:具有第一输入端和第二输入端,且第一输入端所连接的算子节点为数据输入节点。
第一拆分模块92用于以目标算子节点的第二输入端作为拆分点,将神经网络计算图拆分为串行连接的多个计算子图,第二输入端所连接的算子节点的输入端与其他算子节点连接。
生成模块93用于依次根据每个计算子图生成每个计算子图对应的可执行文件。
在一些实施例中,第一输入端的输入数据预先存储于片外存储器。
在一些实施例中,该处理装置90还可以进一步包括第二拆分模块(图中未示出);上述生成模块93用于:响应于在生成当前的计算子图对应的可执行文件时发生失败报错,触发第二拆分模块将当前的计算子图进一步拆分成串行连接的多个计算子图;并依次根据进一步拆分得到的每个所述计算子图,生成进一步拆分得到的每个所述计算子图对应的可执行文件。
在一些实施例中,上述生成模块93用于:响应于在生成当前的计算子图对应的可执行文件时无失败报错,将当前的所述计算子图作为目标计算子图。
在一些实施例中,该处理装置90还可以进一步包括加载模块(图中未示出),加载模块用于将每个目标计算子图对应的可执行文件加载至对应的芯片。
在一些实施例中,该处理装置90还可以进一步包括获取模块(图中未示出)、第一融合模块(图中未示出)和判断模块(图中未示出)。其中,获取模块用于响应于在生成模块93生成每个计算子图对应的可执行文件时均无失败报错,获取至少一组计算子图,每组计算子图包括串行连接的至少两个计算子图;第一融合模块用于对每组计算子图中的至少两个计算子图进行融合处理,以得到每组计算子图对应的备选计算子图;判断模块用于在生成模块93生成备选计算子图对应的可执行文件时无失败报错的情况下,将备选计算子图作为目标计算子图。
在一些实施例中,获取模块用于根据各计算子图对应的子图属性参数,确定所有计算子图中可进行融合处理的至少一组计算子图;其中,计算子图对应的子图属性参数包括计算子图对应的计算量、权重信息、以及对应的矢量加速单元APU图的节点数量。
在一些实施例中,获取模块用于:按照所有计算子图的串行连接关系以及执行顺序,依次检查串行连接的至少两个计算子图是否满足融合条件;当确定串行连接的至少两个计算子图满足融合条件时,将该至少两个计算子图作为一组计算子图;其中,融合条件包括:该至少两个计算子图对应的计算量之和大于或等于最小计算量阈值,且小于或等于最大计算量阈值;该至少两个计算子图对应的权重信息之和大于或等于最小权重阈值,且小于或等于最大权重阈值;该至少两个计算子图对应的APU图的节点数量之和大于或等于最小数量阈值,且小于或等于最大数量阈值。
在一些实施例中,获取模块用于按照所有计算子图的串行连接关系以及执行顺序,将所有计算子图中每两个串行连接的计算子图分别作为一组计算子图。
在一些实施例中,该处理装置90还可以进一步包括第二融合模块(图中未示出),该第二融合模块用于:响应于在生成模块生成每个计算子图对应的可执行文件时均无失败报错,按照所有计算子图的执行顺序方向,将当前计算子图和下一个计算子图融合为备选计算子图;在生成模块93生成备选计算子图对应的可执行文件时发生失败报错的情况下,将当前计算子图作为目标计算子图,并且,将下一个计算子图作为当前计算子图,并返回执行将当前计算子图和下一个计算子图融合为备选计算子图的步骤;在生成模块93生成备选计算子图对应的可执行文件时无失败报错的情况下,将备选计算子图作为目标计算子图,并且,将执行顺序在下一个计算子图之后的计算子图作为当前计算子图,并返回执行将当前计算子图和下一个计算子图融合为备选计算子图的步骤。
在一些实施例中,在一些实施例中,该处理装置90还可以进一步包括第三融合模块(图中未示出)。其中,第三融合模块用于:响应于在生成模块93生成每个计算子图对应的可执行文件时均无失败报错,按照所有计算子图的执行顺序方向,依次将相邻的两个计算子图进行融合处理;同时按照与执行顺序方向相反的方向,依次将相邻的两个计算子图进行融合处理;对于任一融合处理得到的计算子图,在生成该融合处理得到的计算子图对应的可执行文件时无失败报错的情况下,将该融合处理得到的计算子图作为目标计算子图;在生成该融合处理得到的计算子图对应的可执行文件时发生失败报错的情况下,当该融合处理得到的计算子图为按照执行顺序方向融合处理得到的计算子图时,将融合处理前的相邻两个计算子图中执行顺序较早的计算子图作为目标计算子图;当该融合处理得到的计算子图为按照与执行顺序方向相反的方向融合处理得到的计算子图时,将融合处理前的相邻两个计算子图中执行顺序较晚的计算子图作为目标计算子图。
本公开实施例所提供处理装置用于实现上述实施例提供的处理方法,具体描述可参见上述实施例的处理方法中相关的描述,此处不再赘述。
图10为本公开实施例提供的一种电子设备的组成框图,参照图10,本公开实施例提供了一种电子设备,该电子设备包括:至少一个处理器101;至少一个存储器102,以及一个或多个I/O接口103,连接在处理器101与存储器102之间;其中,存储器102存储有可被至少一个处理器101执行的一个或多个计算机程序,一个或多个计算机程序被至少一个处理器101执行,以使至少一个处理器101能够执行上述的神经网络计算图的处理方法。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的神经网络计算图的处理方法。其中,计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述的神经网络计算图的处理方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读程序指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、闪存或其他存储器技术、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读程序指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里所描述的计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (16)
1.一种神经网络计算图的处理方法,其特征在于,所述神经网络计算图包括多个算子节点,所述处理方法包括:
根据多个所述算子节点的输入连接关系,获取所有符合拆分点条件的目标算子节点,所述拆分点条件包括:具有第一输入端和第二输入端,且所述第一输入端所连接的算子节点为数据输入节点;
以所述目标算子节点的第二输入端作为拆分点,将所述神经网络计算图拆分为串行连接的多个计算子图,所述第二输入端所连接的算子节点的输入端与其他算子节点连接;
依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件。
2.根据权利要求1所述的处理方法,其特征在于,所述第一输入端的输入数据预先存储于片外存储器。
3.根据权利要求1所述的处理方法,其特征在于,所述依次根据每个所述计算子图生成每个所述计算子图对应的芯片可执行文件,包括:
响应于在生成当前的所述计算子图对应的可执行文件时发生失败报错,将当前的所述计算子图进一步拆分成串行连接的多个计算子图;
依次根据进一步拆分得到的每个所述计算子图,生成进一步拆分得到的每个所述计算子图对应的可执行文件。
4.根据权利要求1所述的处理方法,其特征在于,所述依次根据每个所述计算子图生成每个所述计算子图对应的芯片可执行文件,包括:
响应于在生成当前的所述计算子图对应的可执行文件时无失败报错,将当前的所述计算子图作为目标计算子图;
将每个所述目标计算子图对应的可执行文件加载至对应的芯片。
5.根据权利要求1所述的处理方法,其特征在于,在所述依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件之后,所述处理方法还包括:
响应于在生成每个所述计算子图对应的可执行文件时均无失败报错,获取至少一组计算子图,每组计算子图包括串行连接的至少两个计算子图;
对每组计算子图中的至少两个计算子图进行融合处理,以得到每组计算子图对应的备选计算子图;
在生成所述备选计算子图对应的可执行文件时无失败报错的情况下,将所述备选计算子图作为目标计算子图。
6.根据权利要求5所述的处理方法,其特征在于,所述获取至少一组计算子图,包括:
根据各所述计算子图对应的子图属性参数,确定所有计算子图中可进行融合处理的至少一组计算子图;
其中,所述计算子图对应的子图属性参数包括所述计算子图对应的计算量、权重信息、以及对应的矢量加速单元APU图的节点数量。
7.根据权利要求6所述的处理方法,其特征在于,所述根据各所述计算子图对应的子图属性参数,确定所有计算子图中可进行融合处理的至少一组计算子图,包括:
按照所有计算子图的串行连接关系以及执行顺序,依次检查串行连接的至少两个计算子图是否满足融合条件;
当确定串行连接的至少两个计算子图满足融合条件时,将该至少两个计算子图作为一组计算子图;
其中,所述融合条件包括:该至少两个计算子图对应的计算量之和大于或等于最小计算量阈值,且小于或等于最大计算量阈值;该至少两个计算子图对应的权重信息之和大于或等于最小权重阈值,且小于或等于最大权重阈值;该至少两个计算子图对应的APU图的节点数量之和大于或等于最小数量阈值,且小于或等于最大数量阈值。
8.根据权利要求5所述的处理方法,其特征在于,所述获取至少一组计算子图,包括:
按照所有计算子图的串行连接关系以及执行顺序,将所有计算子图中每两个串行连接的计算子图分别作为一组计算子图。
9.根据权利要求1所述的处理方法,其特征在于,在所述依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件之后,所述处理方法还包括:
响应于在生成每个所述计算子图对应的可执行文件时均无失败报错,按照所有计算子图的执行顺序方向,将当前计算子图和下一个计算子图融合为备选计算子图;
在生成所述备选计算子图对应的可执行文件时发生失败报错的情况下,将当前计算子图作为目标计算子图;以及
将下一个计算子图作为当前计算子图,并返回执行所述将当前计算子图和下一个计算子图融合为备选计算子图的步骤。
10.根据权利要求9所述的处理方法,其特征在于,在所述将当前计算子图和下一个计算子图融合为备选计算子图之后,所述处理方法还包括:
在生成所述备选计算子图对应的可执行文件时无失败报错的情况下,将所述备选计算子图作为目标计算子图;以及
将执行顺序在下一个计算子图之后的计算子图作为当前计算子图,并返回执行所述将当前计算子图和下一个计算子图融合为备选计算子图的步骤。
11.根据权利要求1所述的处理方法,其特征在于,在所述依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件之后,所述处理方法还包括:
响应于在生成每个所述计算子图对应的可执行文件时均无失败报错,按照所有计算子图的执行顺序方向,依次将相邻的两个计算子图进行融合处理;
同时按照与所述执行顺序方向相反的方向,依次将相邻的两个计算子图进行融合处理;
对于任一融合处理得到的计算子图,在生成该融合处理得到的计算子图对应的可执行文件时无失败报错的情况下,将该融合处理得到的计算子图作为目标计算子图。
12.根据权利要求11所述的处理方法,其特征在于,在生成该融合处理得到的计算子图对应的可执行文件时发生失败报错的情况下,所述处理方法还包括:
当该融合处理得到的计算子图为按照所述执行顺序方向融合处理得到的计算子图时,将融合处理前的相邻两个计算子图中执行顺序较早的计算子图作为目标计算子图;
当该融合处理得到的计算子图为按照与所述执行顺序方向相反的方向融合处理得到的计算子图时,将融合处理前的相邻两个计算子图中执行顺序较晚的计算子图作为目标计算子图。
13.根据权利要求5-12中任一项所述的处理方法,其特征在于,所述处理方法还包括:
将每个所述目标计算子图对应的可执行文件加载至对应的芯片。
14.一种处理装置,其特征在于,所述处理装置用于对待处理的神经网络计算图进行处理,所述神经网络计算图包括多个算子节点,所述处理装置包括:
确定模块,用于根据多个所述算子节点的输入连接关系,获取所有符合拆分点条件的目标算子节点,所述拆分点条件包括:具有第一输入端和第二输入端,且所述第一输入端所连接的算子节点为数据输入节点;
第一拆分模块,用于以所述目标算子节点的第二输入端作为拆分点,将所述神经网络计算图拆分为串行连接的多个计算子图,所述第二输入端所连接的算子节点的输入端与其他算子节点连接;
生成模块,用于依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件。
15.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-13中任一项所述的处理方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时实现如权利要求1-13中任一项所述的处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210536601.9A CN114841322A (zh) | 2022-05-17 | 2022-05-17 | 神经网络计算图的处理方法及处理装置 |
PCT/CN2023/094832 WO2023222047A1 (zh) | 2022-05-17 | 2023-05-17 | 神经网络计算图的处理方法及处理单元、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210536601.9A CN114841322A (zh) | 2022-05-17 | 2022-05-17 | 神经网络计算图的处理方法及处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114841322A true CN114841322A (zh) | 2022-08-02 |
Family
ID=82570819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210536601.9A Pending CN114841322A (zh) | 2022-05-17 | 2022-05-17 | 神经网络计算图的处理方法及处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114841322A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541018A (zh) * | 2023-06-19 | 2023-08-04 | 之江实验室 | 一种分布式模型编译系统、方法、装置、介质及设备 |
WO2023222047A1 (zh) * | 2022-05-17 | 2023-11-23 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理单元、设备、介质 |
CN117576125A (zh) * | 2024-01-16 | 2024-02-20 | 芯瞳半导体技术(山东)有限公司 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
WO2024039923A1 (en) * | 2022-08-19 | 2024-02-22 | Intel Corporation | Method of compile-time optimization for nested parallel for-loops for deep learning neural network computation |
-
2022
- 2022-05-17 CN CN202210536601.9A patent/CN114841322A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023222047A1 (zh) * | 2022-05-17 | 2023-11-23 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理单元、设备、介质 |
WO2024039923A1 (en) * | 2022-08-19 | 2024-02-22 | Intel Corporation | Method of compile-time optimization for nested parallel for-loops for deep learning neural network computation |
CN116541018A (zh) * | 2023-06-19 | 2023-08-04 | 之江实验室 | 一种分布式模型编译系统、方法、装置、介质及设备 |
CN116541018B (zh) * | 2023-06-19 | 2023-09-15 | 之江实验室 | 一种分布式模型编译系统、方法、装置、介质及设备 |
US11934887B1 (en) | 2023-06-19 | 2024-03-19 | Zhejiang Lab | Distributed model compilation |
CN117576125A (zh) * | 2024-01-16 | 2024-02-20 | 芯瞳半导体技术(山东)有限公司 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
CN117576125B (zh) * | 2024-01-16 | 2024-04-16 | 芯瞳半导体技术(山东)有限公司 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240220765A1 (en) | Tape pasting mechanism with multiple functions of clutch-type synchronous punching, tape pasting and cutting | |
CN114841322A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN110908667B (zh) | 神经网络联合编译的方法、装置和电子设备 | |
CN114970814A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN114841323A (zh) | 神经网络计算图的处理方法及处理装置 | |
US20210365253A1 (en) | Heterogeneity-agnostic and topology-agnostic data plane programming | |
CN106201481A (zh) | 应用程序开发系统中的组件管理方法和装置 | |
CN105573734B (zh) | 一种用于提供sdk文件的方法与设备 | |
CN111008152B (zh) | 一种基于函数依赖图的内核模块兼容影响域分析方法、系统和介质 | |
CN113204373A (zh) | 运算方法、装置及相关产品 | |
CN114881214A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN118034924A (zh) | 基于众核系统的数据处理方法、装置、电子设备和介质 | |
CN108536447B (zh) | 运维管理方法 | |
WO2023222047A1 (zh) | 神经网络计算图的处理方法及处理单元、设备、介质 | |
CN116848580A (zh) | 用于针对多方对话的话语解析的结构自感知模型 | |
US8984475B2 (en) | Apparatus and method for generating code overlay | |
CN116304704A (zh) | 一种模型训练方法、装置、存储介质及电子设备 | |
CN110018831A (zh) | 程序处理方法、装置及相关产品 | |
CN111027688A (zh) | 一种基于fpga的神经网络计算器生成方法及装置 | |
CN113141407B (zh) | 一种页面资源加载方法、装置和电子设备 | |
CN111626401B (zh) | 运算方法及装置 | |
CN114819106A (zh) | 计算图优化方法及装置、电子设备、计算机可读介质 | |
CN114970847A (zh) | 数据处理方法、装置和存储介质 | |
US11340952B2 (en) | Function performance trigger | |
CN113157281A (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 |