CN114841323A - 神经网络计算图的处理方法及处理装置 - Google Patents

神经网络计算图的处理方法及处理装置 Download PDF

Info

Publication number
CN114841323A
CN114841323A CN202210540458.0A CN202210540458A CN114841323A CN 114841323 A CN114841323 A CN 114841323A CN 202210540458 A CN202210540458 A CN 202210540458A CN 114841323 A CN114841323 A CN 114841323A
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
Application number
CN202210540458.0A
Other languages
English (en)
Inventor
吴欣洋
李涵
戚海涛
冯开革
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Lynxi Technology Co Ltd
Original Assignee
Beijing Lynxi Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Lynxi Technology Co Ltd filed Critical Beijing Lynxi Technology Co Ltd
Priority to CN202210540458.0A priority Critical patent/CN114841323A/zh
Publication of CN114841323A publication Critical patent/CN114841323A/zh
Priority to PCT/CN2023/094832 priority patent/WO2023222047A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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,算子节点1为单输出节点,且不位于神经网络计算图的并行执行分支,因此算子节点1符合目标算子节点的筛选条件,算子节点2为双输出节点,算子节点2不符合目标算子节点的筛选条件,而算子节点3和4虽然均为单输出节点,但算子节点3和4分别位于两条并行执行分支,同样不符合目标算子节点的筛选条件。
在步骤S12中,以每个目标算子节点的输出端作为拆分点,对神经网络计算图进行拆分,可以得到串行连接的多个计算子图。示例性的,以图2所示的神经网络计算图为例,根据步骤S11可以确定图2所示神经网络计算图中满足上述筛选条件的目标算子节点包括算子节点1和算子节点5,以算子节点1和算子节点5的输出端分别作为拆分点,对图2所示的神经网络计算图进行拆分,可以得到串行连接的3个计算子图,假设该3个计算子图分别记为计算子图1、计算子图2和计算子图3,则计算子图1包括算子节点1,计算子图2包括算子节点2、算子节点3、算子节点4和算子节点5,计算子图3包括算子节点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至算子节点5,在步骤S52中,将串行连接的计算子图1和计算子图2进行融合处理,得到备选计算子图,该备选计算子图包括算子节点1至算子节点5。
在对每组计算子图进行融合处理得到的备选计算子图之后,可以根据融合处理得到的备选计算子图生成对应的可执行文件,在步骤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用于:响应于在生成当前的计算子图对应的可执行文件时发生失败报错,触发第二拆分模块将当前的计算子图进一步拆分成串行连接的多个计算子图;并依次根据进一步拆分得到的每个所述计算子图,生成进一步拆分得到的每个所述计算子图对应的可执行文件。
在一些实施例中,该处理装置90还可以进一步包括加载模块(图中未示出)。上述生成模块93用于:响应于在生成当前的计算子图对应的可执行文件时无失败报错,将当前的所述计算子图作为目标计算子图;加载模块用于将每个目标计算子图对应的可执行文件加载至对应的芯片。
在一些实施例中,该处理装置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 (15)

1.一种神经网络计算图的处理方法,其特征在于,所述神经网络计算图包括多个算子节点,所述处理方法包括:
根据多个所述算子节点的输出连接关系,确定所述神经网络计算图中的所有目标算子节点,所述目标算子节点为具有单输出且不位于并行执行分支的算子节点;
以所述目标算子节点的输出端作为拆分点,将所述神经网络计算图拆分为串行连接的多个计算子图;
依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件。
2.根据权利要求1所述的处理方法,其特征在于,所述依次根据每个所述计算子图生成每个所述计算子图对应的芯片可执行文件,包括:
响应于在生成当前的所述计算子图对应的可执行文件时发生失败报错,将当前的所述计算子图进一步拆分成串行连接的多个计算子图;
依次根据进一步拆分得到的每个所述计算子图,生成进一步拆分得到的每个所述计算子图对应的可执行文件。
3.根据权利要求1所述的处理方法,其特征在于,所述依次根据每个所述计算子图生成每个所述计算子图对应的芯片可执行文件,包括:
响应于在生成当前的所述计算子图对应的可执行文件时无失败报错,将当前的所述计算子图作为目标计算子图;
将每个所述目标计算子图对应的可执行文件加载至对应的芯片。
4.根据权利要求1所述的处理方法,其特征在于,在所述依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件之后,所述处理方法还包括:
响应于在生成每个所述计算子图对应的可执行文件时均无失败报错,获取至少一组计算子图,每组计算子图包括串行连接的至少两个计算子图;
对每组计算子图中的至少两个计算子图进行融合处理,以得到每组计算子图对应的备选计算子图;
在生成所述备选计算子图对应的可执行文件时无失败报错的情况下,将所述备选计算子图作为目标计算子图。
5.根据权利要求4所述的处理方法,其特征在于,所述获取至少一组计算子图,包括:
根据各所述计算子图对应的子图属性参数,确定所有计算子图中可进行融合处理的至少一组计算子图;
其中,所述计算子图对应的子图属性参数包括所述计算子图对应的计算量、权重信息、以及对应的矢量加速单元APU图的节点数量。
6.根据权利要求5所述的处理方法,其特征在于,所述根据各所述计算子图对应的子图属性参数,确定所有计算子图中可进行融合处理的至少一组计算子图,包括:
按照所有计算子图的串行连接关系以及执行顺序,依次检查串行连接的至少两个计算子图是否满足融合条件;
当确定串行连接的至少两个计算子图满足融合条件时,将该至少两个计算子图作为一组计算子图;
其中,所述融合条件包括:该至少两个计算子图对应的计算量之和大于或等于最小计算量阈值,且小于或等于最大计算量阈值;该至少两个计算子图对应的权重信息之和大于或等于最小权重阈值,且小于或等于最大权重阈值;该至少两个计算子图对应的APU图的节点数量之和大于或等于最小数量阈值,且小于或等于最大数量阈值。
7.根据权利要求4所述的处理方法,其特征在于,所述获取至少一组计算子图,包括:
按照所有计算子图的串行连接关系以及执行顺序,将所有计算子图中每两个串行连接的计算子图分别作为一组计算子图。
8.根据权利要求1所述的处理方法,其特征在于,在所述依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件之后,所述处理方法还包括:
响应于在生成每个所述计算子图对应的可执行文件时均无失败报错,按照所有计算子图的执行顺序方向,将当前计算子图和下一个计算子图融合为备选计算子图;
在生成所述备选计算子图对应的可执行文件时发生失败报错的情况下,将当前计算子图作为目标计算子图;以及
将下一个计算子图作为当前计算子图,并返回执行所述将当前计算子图和下一个计算子图融合为备选计算子图的步骤。
9.根据权利要求8所述的处理方法,其特征在于,在所述将当前计算子图和下一个计算子图融合为备选计算子图之后,所述处理方法还包括:
在生成所述备选计算子图对应的可执行文件时无失败报错的情况下,将所述备选计算子图作为目标计算子图;以及
将执行顺序在下一个计算子图之后的计算子图作为当前计算子图,并返回执行所述将当前计算子图和下一个计算子图融合为备选计算子图的步骤。
10.根据权利要求1所述的处理方法,其特征在于,在所述依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件之后,所述处理方法还包括:
响应于在生成每个所述计算子图对应的可执行文件时均无失败报错,按照所有计算子图的执行顺序方向,依次将相邻的两个计算子图进行融合处理;
同时按照与所述执行顺序方向相反的方向,依次将相邻的两个计算子图进行融合处理;
对于任一融合处理得到的计算子图,在生成该融合处理得到的计算子图对应的可执行文件时无失败报错的情况下,将该融合处理得到的计算子图作为目标计算子图。
11.根据权利要求10所述的处理方法,其特征在于,在生成该融合处理得到的计算子图对应的可执行文件时发生失败报错的情况下,所述处理方法还包括:
当该融合处理得到的计算子图为按照所述执行顺序方向融合处理得到的计算子图时,将融合处理前的相邻两个计算子图中执行顺序较早的计算子图作为目标计算子图;
当该融合处理得到的计算子图为按照与所述执行顺序方向相反的方向融合处理得到的计算子图时,将融合处理前的相邻两个计算子图中执行顺序较晚的计算子图作为目标计算子图。
12.根据权利要求4-11中任一项所述的处理方法,其特征在于,所述处理方法还包括:
将每个所述目标计算子图对应的可执行文件加载至对应的芯片。
13.一种处理装置,其特征在于,所述处理装置用于对待处理的神经网络计算图进行处理,所述神经网络计算图包括多个算子节点,所述处理装置包括:
确定模块,用于根据多个所述算子节点的输出连接关系,确定所述神经网络计算图中的所有目标算子节点,所述目标算子节点为具有单输出且不位于并行执行分支的算子节点;
第一拆分模块,用于以所述目标算子节点的输出端作为拆分点,将所述神经网络计算图拆分为串行连接的多个计算子图;
生成模块,用于依次根据每个所述计算子图生成每个所述计算子图对应的可执行文件。
14.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-12中任一项所述的处理方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时实现如权利要求1-12中任一项所述的处理方法。
CN202210540458.0A 2022-05-17 2022-05-17 神经网络计算图的处理方法及处理装置 Pending CN114841323A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210540458.0A CN114841323A (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
CN202210540458.0A CN114841323A (zh) 2022-05-17 2022-05-17 神经网络计算图的处理方法及处理装置

Publications (1)

Publication Number Publication Date
CN114841323A true CN114841323A (zh) 2022-08-02

Family

ID=82569541

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210540458.0A Pending CN114841323A (zh) 2022-05-17 2022-05-17 神经网络计算图的处理方法及处理装置

Country Status (1)

Country Link
CN (1) CN114841323A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117056068A (zh) * 2023-08-08 2023-11-14 杭州观远数据有限公司 ETL中JobEngine任务拆分方法
WO2023222047A1 (zh) * 2022-05-17 2023-11-23 北京灵汐科技有限公司 神经网络计算图的处理方法及处理单元、设备、介质
CN117171766A (zh) * 2023-07-31 2023-12-05 上海交通大学 基于深度神经网络模型的数据保护方法、系统及介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023222047A1 (zh) * 2022-05-17 2023-11-23 北京灵汐科技有限公司 神经网络计算图的处理方法及处理单元、设备、介质
CN117171766A (zh) * 2023-07-31 2023-12-05 上海交通大学 基于深度神经网络模型的数据保护方法、系统及介质
CN117171766B (zh) * 2023-07-31 2024-04-05 上海交通大学 基于深度神经网络模型的数据保护方法、系统及介质
CN117056068A (zh) * 2023-08-08 2023-11-14 杭州观远数据有限公司 ETL中JobEngine任务拆分方法
CN117056068B (zh) * 2023-08-08 2024-03-19 杭州观远数据有限公司 ETL中JobEngine任务拆分方法

Similar Documents

Publication Publication Date Title
CN114841322A (zh) 神经网络计算图的处理方法及处理装置
CN114841323A (zh) 神经网络计算图的处理方法及处理装置
CN114970814A (zh) 神经网络计算图的处理方法及处理装置
CN113703775B (zh) 一种编译方法、装置、设备及存储介质
CN106547527B (zh) 一种JavaScript文件构建方法及装置
CN106547520B (zh) 一种代码路径分析方法及装置
CN105573734B (zh) 一种用于提供sdk文件的方法与设备
KR102156439B1 (ko) 클라우드-엣지 시스템 및 이의 데이터 처리 방법
CN111209005A (zh) 程序文件的编译方法、装置和计算机可读存储介质
US20210365253A1 (en) Heterogeneity-agnostic and topology-agnostic data plane programming
US20220101194A1 (en) Method, electronic device, and computer program product for processing machine learning model
CN113204373A (zh) 运算方法、装置及相关产品
CN114881214A (zh) 神经网络计算图的处理方法及处理装置
US10268798B2 (en) Condition analysis
CN112633502A (zh) 一种深度学习模型的跨平台执行方法、装置及电子设备
CN109976905B (zh) 内存管理方法、装置和电子设备
CN110018831A (zh) 程序处理方法、装置及相关产品
CN116304704A (zh) 一种模型训练方法、装置、存储介质及电子设备
CN115809688B (zh) 一种模型调试方法、装置、电子设备及存储介质
CN108536447B (zh) 运维管理方法
CN113141407B (zh) 一种页面资源加载方法、装置和电子设备
CN114449063B (zh) 一种报文处理方法、装置及设备
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
CN114756211A (zh) 模型训练方法、装置、电子设备和存储介质
CN116848580A (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