CN114881214A - 神经网络计算图的处理方法及处理装置 - Google Patents
神经网络计算图的处理方法及处理装置 Download PDFInfo
- Publication number
- CN114881214A CN114881214A CN202210536468.7A CN202210536468A CN114881214A CN 114881214 A CN114881214 A CN 114881214A CN 202210536468 A CN202210536468 A CN 202210536468A CN 114881214 A CN114881214 A CN 114881214A
- Authority
- CN
- China
- Prior art keywords
- operator
- target
- dimension
- nodes
- neural network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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)
- Stored Programmes (AREA)
Abstract
本公开提供了一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读介质,神经网络计算图包括多个算子节点,处理方法包括:根据第一算子节点对应的输入张量的批处理维度的维度长度将第一算子节点拆分为多个目标算子节点,第一算子节点是对应的输入张量的批处理维度的维度长度大于1的算子节点,每个目标算子节点对应的批处理维度的维度长度均小于第一算子节点对应的批处理维度的维度长度;当存在对应的批处理维度的维度长度相同的任意多个目标算子节点,满足第一融合条件时,将该多个目标算子节点合并为一个目标算子节点;根据未拆分的算子节点和所有目标算子节点,获取目标神经网络计算图。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读存储介质。
背景技术
基于存算一体的众核架构芯片,因将计算和存储都放在片上,减少了数据搬运时间,降低了功耗,是众核芯片的一个重要发展方向。
深度学习框架(例如TensorFlow或ONNX)通常使用计算图来表达深度学习模型(神经网络)的计算。神经网络计算图通常需要经过编译器进行编译,以生成可以在硬件上运行的指令流(可执行文件或代码)。其中,硬件可以是基于存算一体的众核芯片,众核芯片通常包括多个物理核(Core)。
发明内容
本公开提供一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读存储介质。
第一方面,本公开提供了一种神经网络计算图的处理方法,原始的神经网络计算图包括多个算子节点,所述处理方法包括:
针对每个第一算子节点,根据所述第一算子节点对应的输入张量的批处理维度的维度长度,将所述第一算子节点拆分为多个目标算子节点,所述第一算子节点是对应的输入张量的批处理维度的维度长度大于1的算子节点,每个所述目标算子节点对应的批处理维度的维度长度均小于所述第一算子节点对应的批处理维度的维度长度;
当存在对应的批处理维度的维度长度相同的任意多个目标算子节点,满足第一融合条件时,将该多个目标算子节点合并为一个目标算子节点;
根据未拆分的所述算子节点和所有所述目标算子节点,获取目标神经网络计算图。
第二方面,本公开提供了一种处理装置,所述处理装置用于对待处理的神经网络计算图进行处理,所述神经网络计算图包括多个算子节点,所述处理装置包括:
算子拆分模块,用于针对每个第一算子节点,根据所述第一算子节点对应的输入张量的批处理维度的维度长度,将所述第一算子节点拆分为多个目标算子节点,所述第一算子节点是对应的输入张量的批处理维度的维度长度大于1的算子节点,每个所述目标算子节点对应的批处理维度的维度长度均小于所述第一算子节点对应的批处理维度的维度长度;
算子融合模块,用于当存在对应的批处理维度的维度长度相同的任意多个目标算子节点,满足第一融合条件时,将该多个目标算子节点合并为一个目标算子节点;
计算图重构模块,用于根据未拆分的所述算子节点和所有所述目标算子节点,获取目标神经网络计算图。
第三方面,本公开提供了一种电子设备,该电子设备包括:
至少一个处理器;
以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的神经网络计算图的处理方法。
第四方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的神经网络计算图的处理方法。
根据本公开实施例提供的神经网络计算图的处理方法的技术方案,该处理方法用于处理任意合适的神经网络计算图,能够实现将原始的神经网络计算图优化为由对应较低批大小的算子节点构成的目标神经网络计算图,以降低目标神经网络计算图的配置需求,从而能够有效减少在编译时神经网络计算图对芯片资源的占用,进而有效降低了神经网络计算图的编译难度,提高了神经网络计算图的编译效率和效果,且有效降低了神经网络计算图的编译对芯片硬件存储资源的要求,有利于解决神经网络计算图的编译所需存储资源较大而实际芯片硬件存储资源无法满足的问题,实现了对芯片硬件存储资源的合理利用,提高了芯片硬件存储资源的利用效率。而且,优化得到的目标神经网络计算图,能够有效得到底层编译执行的支持,有利于提高神经网络计算图的编译效率和效果。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1为本公开实施例提供的一种神经网络计算图的处理方法的流程示意图;
图2为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图;
图3为本公开实施例提供的一种处理装置的组成框图;
图4为本公开实施例提供的一种电子设备的组成框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
在相关技术中,芯片的计算、存储等资源有限,大型神经网络的计算图通常所需的运算量、数据量较大,芯片的计算、存储资源通常无法满足整个神经网络计算图的资源需求,而且底层编译执行中通常存在一些限制条件,无法支持对应批大小(Batch Size)大于1的计算图的算子节点的编译执行,造成神经网络计算图的编译难度大且效率低。
为此,本公开实施例提供了一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读存储介质,旨在能够有效解决上述相关技术中存在的技术问题中的至少一种。
本公开实施例的处理方法可以由处理装置作为执行主体执行,处理装置可以通过软件和/或硬件方式集成于终端设备或服务器等电子设备中,示例性的,终端设备可以为车载设备、用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些实施例中,本公开实施例的处理方法可以通过处理器调用存储器中存储的计算机可读程序指令的方式来实现,或者,可通过服务器执行本公开实施例的处理方法。
图1为本公开实施例提供的一种神经网络计算图的处理方法的流程示意图。
本公开实施例提供一种神经网络计算图的处理方法,该神经网络计算图的处理方法用于实现对待处理的原始的神经网络计算图进行处理,以优化神经网络计算图的图结构,得到目标神经网络计算图,其中原始的神经网络计算图可以包括多个算子节点,算子节点是构成神经网络的基本计算单元,算子节点例如可以是神经网络中的卷积、池化等运算操作,神经网络可以是任意类型的深度学习网络,神经网络可以用于执行图像处理任务、语音处理任务、文本处理任务、视频处理任务中的任意一种,神经网络的输入数据可以是图像数据、语音数据、文本数据、视频数据中的任意一种。
参照图1,该处理方法可以包括:步骤S11~步骤S13。
步骤S11、针对每个第一算子节点,根据第一算子节点对应的输入张量的批处理维度的维度长度,将第一算子节点拆分为多个目标算子节点。
其中,第一算子节点是对应的输入张量的批处理维度的维度长度大于1的算子节点,每个目标算子节点对应的批处理维度的维度长度均小于第一算子节点对应的批处理维度的维度长度。
步骤S12、当存在对应的批处理维度的维度长度相同的任意多个目标算子节点,满足第一融合条件时,将该多个目标算子节点合并为一个目标算子节点。
步骤S13、根据未拆分的算子节点和所有目标算子节点,获取目标神经网络计算图。
在本公开实施例中,对于一个待处理的原始的神经网络计算图,在针对每个第一算子节点,根据第一算子节点对应的输入张量的批处理维度的维度长度,将第一算子节点拆分为多个目标算子节点之前,即在步骤S11之前,该处理方法还包括:遍历整个原始的神经网络计算图,获取原始的神经网络计算图中每个算子节点的节点信息。
其中,算子节点的节点信息可以包括但不限于:算子节点的输入连接关系、输出连接关系、所需的参数信息、算子节点的属性信息、算子节点的执行顺序、算子节点对应的输入张量的张量属性信息等。
其中,算子节点的输入连接关系是描述神经网络计算图中该算子节点的输入和其他算子节点的输出之间的连接关系;算子节点的输出连接关系是描述神经网络计算图中该算子节点的输出和其他算子节点的输入之间的连接关系;算子节点所需的参数信息包括但不限于预先配置的实现该算子节点的运算操作所需的权重参数;算子节点的属性信息是表征算子节点的特征属性的信息,算子节点的属性信息可以包括但不限于算子节点的类型(如卷积、加法、乘法等)、算子节点所需的计算量和存储量等;算子节点的执行顺序是表征执行该算子节点的运算操作的时间顺序;算子节点对应的输入张量的张量属性信息是表征输入张量的特征属性的信息,张量属性信息可以包括但不限于:输入张量的阶(Rank)、轴和形状,张量的阶是指张量中的维数,即张量的轴(维度)的数量,张量的轴即为张量中具体的维度,张量的形状表征张量的各个轴的长度,即各个维度的长度。示例性的,假设一个输入张量为4阶张量,则该输入张量具有4个轴(维度),假设该4个维度的长度分别为N、H、W、C,则该输入张量的形状为[N,H,W,C]。
在本公开实施例中,算子节点对应的输入张量为多阶张量,具有多个维度(轴),其中一个维度为批处理(Batch)维度,批处理维度的维度长度表示为批大小或批尺寸(BatchSize)。在神经网络中,在一些运算操作(算子节点)中通常需要批量处理样本(如样本为图片),算子节点对应的输入张量的批处理维度的维度长度(批大小)表示算子节点所需批量处理的样本数量。
示例性的,神经网络为卷积神经网络,卷积神经网络中算子节点的输入张量通常为4阶张量,具有4个维度,分别为批处理维度、图像像素高度维度、图像像素宽度维度以及图像颜色通道维度,张量形状通常表示为[N,H,W,C],张量形状中每个指标代表一个维度,指标的值代表该维度的维度长度,其中,N表示批处理维度的维度长度(即批大小),即需批量处理的图像样本数量,H表示图像像素高度,即图像在竖直方向上的像素数量,W表示图像像素宽度,即图像在水平方向上的像素数量,C表示图像的颜色通道数量(如RGB彩色图像的颜色通道数C=3)。
在步骤S11之前,可以通过预先配置原始的神经网络计算图中每个算子节点的节点信息,沿原始的神经网络计算图中多个算子节点的执行顺序方向,依次获取原始的神经网络计算图中每个算子节点对应的输入张量在批处理维度上的维度长度(即批大小),从而确定对应的输入张量在批处理维度上的维度长度大于1的算子节点,以作为第一算子节点。
在确定原始的神经网络计算图中的所有第一算子节点后,在步骤S11中,针对每个第一算子节点,根据第一算子节点对应的输入张量的批处理维度的维度长度将第一算子节点拆分为多个目标算子节点,例如第一算子节点对应的批处理维度的维度长度为8,则可将该第一算子节点拆分为8个分别对应的批处理维度的维度长度为1的目标算子节点。其中,每个目标算子节点的运算操作类型与对应的第一算子节点的运算操作类型保持相同,且每个目标算子节点对应的批处理维度的维度长度(批大小)均小于对应的第一算子节点所对应的批处理维度的维度长度(批大小)。
在步骤S12中,当存在对应的批处理维度的维度长度相同的任意多个目标算子节点,满足第一融合条件时,将该多个目标算子节点合并为一个目标算子节点。其中,将该多个目标算子节点合并为一个目标算子节点,可以理解为仅保留该多个目标算子节点中的任一个目标算子节点,而去除其他目标算子节点。示例性的,存在对应的批处理维度的维度长度均为1的3个目标算子节点,且该3个目标算子节点满足第一融合条件,则将该3个目标算子节点合并为1个对应的批处理维度的维度长度为1的目标算子节点。
在步骤S13中,可以根据所有未进行拆分的算子节点和剩余的所有目标算子节点,以及输入连接关系、输出连接关系,获取目标神经网络计算图。其中,在目标神经网络计算图中,未进行拆分的算子节点和目标算子节点之间的输入、输出连接关系与原始的神经网络计算图中对应的算子节点之间的输入、输出连接关系对应相同,且目标算子节点所需的权重参数与对应的第一算子节点所需的权重参数相同,且目标算子节点的执行顺序与对应的第一算子节点的执行顺序相同,目标算子节点对应的输入张量的阶和轴保持不变,目标算子节点对应的输入张量的形状中批处理维度的维度长度与对应的第一算子节点对应的输入张量的形状中批处理维度的维度长度不同,其他维度的维度长度保持相同。
根据本公开实施例提供的神经网络计算图的处理方法的技术方案,该处理方法用于处理任意合适的神经网络计算图,能够实现将原始的神经网络计算图优化为由对应较低批大小的算子节点构成的目标神经网络计算图,以降低目标神经网络计算图的配置需求,从而能够有效减少在编译时神经网络计算图对芯片资源的占用,进而有效降低了神经网络计算图的编译难度,提高了神经网络计算图的编译效率和效果,且有效降低了神经网络计算图的编译对芯片硬件存储资源的要求,有利于解决神经网络计算图的编译所需存储资源较大而实际芯片硬件存储资源无法满足的问题,实现了对芯片硬件存储资源的合理利用,提高了芯片硬件存储资源的利用效率。而且,优化得到的目标神经网络计算图,能够有效得到底层编译执行的支持,有利于提高神经网络计算图的编译效率和效果。在实际应用中,根据本公开实施例的方法对神经网络计算图进行处理,在实际编译时,原神经网络计算图中对应批处理维度的维度长度为n(n大于1)的算子节点只需对应一份配置信息,而相关技术中,未经处理的神经网络计算图中对应批处理维度的维度长度为n(n大于1)的算子节点通常需要对应n份配置信息,因此,相较于相关技术,经本公开实施例的处理方法处理得到目标神经网络计算图,在实际编译时可以有效节省所编译的众核芯片的片上存储资源。
在一些实施例中,该处理方法用于对满足处理条件的神经网络计算图进行处理,其中处理条件可以包括:神经网络计算图中多个算子节点包括至少一个第一算子节点和至少一个第二算子节点,第二算子节点是对应的输入张量的批处理维度的维度长度等于1的算子节点,第一算子节点是对应的输入张量的批处理维度的维度长度大于1的算子节点。对于满足上述处理条件的神经网络计算图,利用本公开实施例的处理方法进行处理,能够有效提高处理效率,且有利于提高满足上述处理条件的神经网络计算图的编译和运行效果。
在一些实施例中,在步骤S11之前,该处理方法还包括:根据神经网络计算图的各算子节点的节点信息,确定出神经网络计算图中的所有第一算子节点和所有第二算子节点;根据神经网络计算图中的第一算子节点和第二算子节点,确定神经网络计算图中的至少一个目标计算子图,目标计算子图的执行顺序中第一个算子节点和最后一个算子节点均为第二算子节点,在第一个算子节点和最后一个算子节点之间存在至少一个第一算子节点;将目标计算子图从神经网络计算图中拆分出。
在一些实施例中,对于每个目标计算子图,按照步骤S11和步骤S12的处理方式进行处理。
在一些实施例中,在步骤S11中,每个目标算子节点对应的批处理维度的维度长度均相同。在一些实施例中,在步骤S11中,第一算子节点所对应的批处理维度的维度长度与任意一个目标算子节点对应的批处理维度的维度长度的比值为正整数。示例性的,第一算子节点所对应的批处理维度的维度长度为8,则可以将第一算子节点拆分为8个对应的批处理维度的维度长度为1的目标算子节点,或者拆分为4个对应的批处理维度的维度长度为2的目标算子节点,或者拆分为2个对应的批处理维度的维度长度为4的目标算子节点。
在一些实施例中,拆分得到的每个所述目标算子节点对应的批处理维度的维度长度均为1,从而有利于使得优化得到的目标神经网络计算图能够有效得到底层编译执行的支持。
在一些实施例中,在步骤S12中,第一融合条件可以包括:该多个目标算子节点分别对应的权重信息相同。其中,目标算子节点对应的权重信息包括预先配置的实现该目标算子节点的运算操作所需的权重参数。
在一些实施例中,在该多个目标算子节点存在权重信息的情况下,判断该多个目标算子节点是否满足上述第一融合条件,当该多个目标算子节点满足上述第一融合条件时,表示该多个目标算子节点分别对应的权重信息相同,因此可以将该多个目标算子节点合并为一个目标算子节点,从而降低目标神经网络计算图的配置需求,减少在编译时神经网络计算图对芯片资源的占用。
当该多个目标算子节点不满足上述第一融合条件时,表示该多个目标算子节点分别对应的权重信息不同,并不适于融合,因此可以不对该多个目标算子节点作进一步处理。
在一些实施例中,对于满足第一融合条件的多个目标算子节点合并后得到的目标算子节点,通过额外的标志信息指定该目标算子节点在编译运行时对应的批处理维度的维度长度。
通过将满足第一融合条件的多个目标算子节点融合为一个目标算子节点的方式,在实际应用中,可以有效减少算子节点的权重信息的配置,在编译的芯片上只需存储一份相同的权重信息,从而有效节省了芯片的片上存储资源。
在一些实施例中,对于对应的批处理维度的维度长度相同的多个目标算子节点,在该多个目标算子节点不存在权重信息的情况下,该处理方法还可以进一步包括:判断该多个目标算子节点是否满足第二融合条件。
其中,第二融合条件包括:该多个目标算子节点分别对应的运算操作相同,且该多个目标算子节点中任意两个目标算子节点之间不存在输入输出依赖关系。需要说明的是,输入输出依赖关系是描述不同目标算子节点的输入、输出之间的连接关系的信息,当一个目标算子节点的输入与另一个目标算子节点的输出具有连接关系,需要依赖另一个目标算子节点的输出时,表示该一个目标算子节点与另一个目标算子节点之间存在输入输出依赖关系。
在该多个目标算子节点满足第二融合条件的情况下,表示该多个目标算子节点分别对应的运算操作相同,且该多个目标算子节点中任意两个目标算子节点之间不存在输入输出依赖关系,因此可以将该多个目标算子节点合并为一个目标算子节点,从而降低目标神经网络计算图的配置需求,减少在编译时神经网络计算图对芯片资源的占用。
当该多个目标算子节点不满足上述第二融合条件时,表示该多个目标算子节点分别对应的运算操作不同或者该多个目标算子节点中存在具有输入输出依赖关系的目标算子节点,并不适于融合,因此可以不对该多个目标算子节点作进一步处理。
由于处理得到的目标算子节点对应的批处理维度的维度长度低于对应第一算子节点所对应的批处理维度的维度长度,因此为了能够利用目标算子节点实现与对应的算子节点相同的运算操作效果,得到与对应的算子节点相同的计算结果,同时提高神经网络的运行效率。在实际应用中,可以将目标神经网络计算图编译至众核系统执行,利用众核系统的流水线式的任务处理机制,对每个目标算子节点的计算任务进行流水线式处理,从而实现与对应的算子节点相同的运算操作效果,得到与对应的算子节点相同的计算结果,同时确保神经网络的运行效率。
图2为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图,参照图2,在一些实施例中,在获取目标神经网络计算图之后,即在步骤S13之后,该处理方法还可以进一步包括:步骤S14。
步骤S14、将目标神经网络计算图编译至众核系统。
在一些实施例中,众核系统可以包括一个或多个众核芯片,众核芯片是基于存算一体的众核架构的芯片,每个众核芯片可以包括多个物理核(也称为计算核),每个物理核均具有独立内存。在一些实施例中,可以将目标神经网络计算图编译至众核系统中的一个或多个众核芯片上运行。
在步骤S14中,对于在步骤S13中获取到的目标神经网络计算图,根据该目标神经网络计算图生成该目标神经网络计算图对应的可执行文件,可执行文件是可在众核系统的众核芯片上执行的执行代码,从而实现将该目标神经网络计算图编译至众核系统上运行,以使众核系统执行该目标神经网络计算图相应的计算任务。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了一种处理装置、电子设备、计算机可读存储介质,上述处理装置用于实现本公开提供的神经网络计算图的处理方法,上述电子设备及计算机可读存储介质均可用来实现本公开提供的神经网络计算图的处理方法,相应技术方案和描述和参见方法部分的相应记载,此处不再赘述。
图3为本公开实施例提供的一种处理装置的组成框图,参照图3,本公开实施例提供了一种处理装置30,该处理装置30用于对待处理的原始的神经网络计算图进行处理,待处理的原始的神经网络计算图包括多个算子节点,该处理装置30包括:算子拆分模块31、算子融合模块32和计算图重构模块33。
其中,算子拆分模块31,用于针对每个第一算子节点,根据第一算子节点对应的输入张量的批处理维度的维度长度,将第一算子节点拆分为多个目标算子节点,第一算子节点是对应的输入张量的批处理维度的维度长度大于1的算子节点,每个目标算子节点对应的批处理维度的维度长度均小于第一算子节点对应的批处理维度的维度长度。
算子融合模块32,用于当存在对应的批处理维度的维度长度相同的任意多个目标算子节点,满足第一融合条件时,将该多个目标算子节点合并为一个目标算子节点。
计算图重构模块33,用于根据未拆分的所述算子节点和所有目标算子节点,获取目标神经网络计算图。
在一些实施例中,在原始的神经网络计算图中,多个算子节点包括至少一个第一算子节点和至少一个第二算子节点,第二算子节点是对应的输入张量的批处理维度的维度长度等于1的算子节点。
在一些实施例中,第一融合条件包括:该多个目标算子节点分别对应的权重信息相同。
在一些实施例中,算子融合模块32,还用于:在该多个目标算子节点均不存在权重信息的情况下,判断该多个目标算子节点是否满足第二融合条件;在该多个目标算子节点满足第二融合条件的情况下,将该多个目标算子节点合并为一个目标算子节点。其中,第二融合条件包括:该多个目标算子节点分别对应的运算操作相同,且该多个目标算子节点中任意两个目标算子节点之间不存在输入输出依赖关系。
在一些实施例中,拆分得到的每个目标算子节点对应的批处理维度的维度长度相同。
在一些实施例中,拆分得到的每个目标算子节点对应的批处理维度的维度长度均为1。
在一些实施例中,该处理装置30还包括编译模块,编译模块用于将目标神经网络计算图编译至众核系统,众核系统包括至少一个众核芯片,众核芯片包括多个物理核。
本公开实施例所提供处理装置用于实现上述实施例提供的处理方法,具体描述可参见上述实施例的处理方法中相关的描述,此处不再赘述。
图4为本公开实施例提供的一种电子设备的组成框图,参照图4,本公开实施例提供了一种电子设备,该电子设备包括:至少一个处理器41;至少一个存储器42,以及一个或多个I/O接口43,连接在处理器41与存储器42之间;其中,存储器42存储有可被至少一个处理器41执行的一个或多个计算机程序,一个或多个计算机程序被至少一个处理器41执行,以使至少一个处理器41能够执行上述的神经网络计算图的处理方法。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的神经网络计算图的处理方法。其中,计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述的神经网络计算图的处理方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读程序指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、闪存或其他存储器技术、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读程序指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里所描述的计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (10)
1.一种神经网络计算图的处理方法,其特征在于,原始的神经网络计算图包括多个算子节点,所述处理方法包括:
针对每个第一算子节点,根据所述第一算子节点对应的输入张量的批处理维度的维度长度,将所述第一算子节点拆分为多个目标算子节点,所述第一算子节点是对应的输入张量的批处理维度的维度长度大于1的算子节点,每个所述目标算子节点对应的批处理维度的维度长度均小于所述第一算子节点对应的批处理维度的维度长度;
当存在对应的批处理维度的维度长度相同的任意多个目标算子节点,满足第一融合条件时,将该多个目标算子节点合并为一个目标算子节点;
根据未拆分的所述算子节点和所有所述目标算子节点,获取目标神经网络计算图。
2.根据权利要求1所述的处理方法,其特征在于,多个算子节点包括至少一个所述第一算子节点和至少一个第二算子节点,所述第二算子节点是对应的输入张量的批处理维度的维度长度等于1的算子节点。
3.根据权利要求1所述的处理方法,其特征在于,所述第一融合条件包括:该多个目标算子节点分别对应的权重信息相同。
4.根据权利要求3所述的处理方法,其特征在于,所述处理方法还包括:
在该多个目标算子节点均不存在权重信息的情况下,判断该多个目标算子节点是否满足第二融合条件;所述第二融合条件包括:该多个目标算子节点分别对应的运算操作相同,且该多个目标算子节点中任意两个目标算子节点之间不存在输入输出依赖关系;
在该多个目标算子节点满足第二融合条件的情况下,将该多个目标算子节点合并为一个目标算子节点。
5.根据权利要求1所述的处理方法,其特征在于,拆分得到的每个所述目标算子节点对应的批处理维度的维度长度相同。
6.根据权利要求1所述的处理方法,其特征在于,拆分得到的每个所述目标算子节点对应的批处理维度的维度长度均为1。
7.根据权利要求1所述的处理方法,其特征在于,在所述获取目标神经网络计算图之后,所述处理方法还包括:
将所述目标神经网络计算图编译至众核系统,所述众核系统包括至少一个众核芯片,所述众核芯片包括多个物理核。
8.一种处理装置,其特征在于,所述处理装置用于对待处理的神经网络计算图进行处理,所述神经网络计算图包括多个算子节点,所述处理装置包括:
算子拆分模块,用于针对每个第一算子节点,根据所述第一算子节点对应的输入张量的批处理维度的维度长度,将所述第一算子节点拆分为多个目标算子节点,所述第一算子节点是对应的输入张量的批处理维度的维度长度大于1的算子节点,每个所述目标算子节点对应的批处理维度的维度长度均小于所述第一算子节点对应的批处理维度的维度长度;
算子融合模块,用于当存在对应的批处理维度的维度长度相同的任意多个目标算子节点,满足第一融合条件时,将该多个目标算子节点合并为一个目标算子节点;
计算图重构模块,用于根据未拆分的所述算子节点和所有所述目标算子节点,获取目标神经网络计算图。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任一项所述的处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时实现如权利要求1-7中任一项所述的处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210536468.7A CN114881214A (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 |
---|---|---|---|
CN202210536468.7A CN114881214A (zh) | 2022-05-17 | 2022-05-17 | 神经网络计算图的处理方法及处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114881214A true CN114881214A (zh) | 2022-08-09 |
Family
ID=82676079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210536468.7A Pending CN114881214A (zh) | 2022-05-17 | 2022-05-17 | 神经网络计算图的处理方法及处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114881214A (zh) |
Cited By (3)
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 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理单元、设备、介质 |
CN117576125A (zh) * | 2024-01-16 | 2024-02-20 | 芯瞳半导体技术(山东)有限公司 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
-
2022
- 2022-05-17 CN CN202210536468.7A patent/CN114881214A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023222047A1 (zh) * | 2022-05-17 | 2023-11-23 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理单元、设备、介质 |
CN117056068A (zh) * | 2023-08-08 | 2023-11-14 | 杭州观远数据有限公司 | ETL中JobEngine任务拆分方法 |
CN117056068B (zh) * | 2023-08-08 | 2024-03-19 | 杭州观远数据有限公司 | ETL中JobEngine任务拆分方法 |
CN117576125A (zh) * | 2024-01-16 | 2024-02-20 | 芯瞳半导体技术(山东)有限公司 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
CN117576125B (zh) * | 2024-01-16 | 2024-04-16 | 芯瞳半导体技术(山东)有限公司 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114881214A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN115034358A (zh) | 神经网络计算图的处理方法及处理装置 | |
US11106437B2 (en) | Lookup table optimization for programming languages that target synchronous digital circuits | |
US11775269B2 (en) | Generating a synchronous digital circuit from a source code construct defining a function call | |
US10810343B2 (en) | Mapping software constructs to synchronous digital circuits that do not deadlock | |
US11630983B2 (en) | Graph conversion method | |
CN113204373A (zh) | 运算方法、装置及相关产品 | |
CN114841322A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN114841323A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN112463159A (zh) | 编译方法、装置、电子设备和存储介质 | |
CN114970814A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN112463160A (zh) | 编译方法、装置、电子设备和存储介质 | |
CN115081598A (zh) | 算子处理方法及装置、电子设备、计算机可读存储介质 | |
CN113204412A (zh) | 用于任务调度的方法、电子设备和计算机存储介质 | |
US10268798B2 (en) | Condition analysis | |
US20190129882A1 (en) | Multi-connector module design for performance scalability | |
FR3025334A1 (fr) | Procede de determination par optimisation d'une architecture multi-coeurs | |
CN111158907B (zh) | 数据处理方法及装置、电子设备和存储介质 | |
CN113127000A (zh) | 应用程序组件的编译方法、装置、设备及存储介质 | |
CN112579151A (zh) | 一种模型文件的生成方法和装置 | |
CN112965713B (zh) | 可视化编辑器的开发方法、装置、设备及存储介质 | |
CN114741173A (zh) | Dag任务编排的方法、装置、电子设备和存储介质 | |
CN111752912B (zh) | 数据处理方法及装置 | |
CN111552478A (zh) | 用于生成cuda程序的设备、方法和存储介质 | |
WO2023222047A1 (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 |