CN115034358A - 神经网络计算图的处理方法及处理装置 - Google Patents
神经网络计算图的处理方法及处理装置 Download PDFInfo
- Publication number
- CN115034358A CN115034358A CN202210539729.0A CN202210539729A CN115034358A CN 115034358 A CN115034358 A CN 115034358A CN 202210539729 A CN202210539729 A CN 202210539729A CN 115034358 A CN115034358 A CN 115034358A
- Authority
- CN
- China
- Prior art keywords
- operator node
- original
- batch size
- neural network
- batch
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- 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)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Image Processing (AREA)
Abstract
本公开提供了一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读介质,处理方法包括:获取神经网络计算图中每个原始算子节点对应的输入张量的批大小;根据每个原始算子节点对应的批大小对每个原始算子节点对应的批处理维度进行维度长度变换,以得到每个原始算子节点对应的目标算子节点;每个目标算子节点对应的批处理维度的维度长度小于对应的原始算子节点对应的批处理维度的维度长度;根据多个目标算子节点,获取目标神经网络计算图。根据本公开的技术方案,能够实现对神经网络计算图的优化,减少在编译时神经网络计算图对芯片资源的占用,提高神经网络计算图的编译效率和效果,降低编译难度。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读存储介质。
背景技术
基于存算一体的众核架构芯片,因将计算和存储都放在片上,减少了数据搬运时间,降低了功耗,是众核芯片的一个重要发展方向。
深度学习框架(例如TensorFlow或ONNX)通常使用计算图来表达深度学习模型(神经网络)的计算。神经网络计算图通常需要经过编译器进行编译,以生成可以在硬件上运行的指令流(可执行文件或代码)。其中,硬件可以是基于存算一体的众核芯片,众核芯片通常包括多个物理核(Core)。
发明内容
本公开提供一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读存储介质。
第一方面,本公开提供了一种神经网络计算图的处理方法,原始的所述神经网络计算图包括多个原始算子节点,所述方法包括:
获取原始的神经网络计算图中每个所述原始算子节点对应的输入张量的批大小,所述输入张量的批大小为所述输入张量的批处理维度的维度长度;
根据每个所述原始算子节点对应的批大小对每个所述原始算子节点对应的批处理维度进行维度长度变换,以得到每个所述原始算子节点对应的目标算子节点;每个所述目标算子节点对应的批处理维度的维度长度小于对应的原始算子节点对应的批处理维度的维度长度;
根据多个所述目标算子节点,获取目标神经网络计算图。
第二方面,本公开提供了一种处理装置,所述处理装置用于对待处理的神经网络计算图进行处理,所述神经网络计算图包括多个原始算子节点,所述处理装置包括:
维度获取模块,用于获取原始的神经网络计算图中每个所述原始算子节点对应的输入张量的批大小,所述输入张量的批大小为所述输入张量的批处理维度的维度长度;
维度变换模块,用于根据每个所述原始算子节点对应的批大小对每个所述原始算子节点对应的批处理维度进行维度长度变换,以得到每个所述原始算子节点对应的目标算子节点;每个所述目标算子节点对应的批处理维度的维度长度小于对应的原始算子节点对应的批处理维度的维度长度;
计算图重构模块,用于根据多个所述目标算子节点,获取目标神经网络计算图。
第三方面,本公开提供了一种电子设备,该电子设备包括:
至少一个处理器;
以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的神经网络计算图的处理方法。
第四方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的神经网络计算图的处理方法。
根据本公开实施例提供的神经网络计算图的处理方法的技术方案,该处理方法用于处理任意合适的神经网络计算图,能够实现将原始的神经网络计算图优化为由对应较低批大小的目标算子节点构成的目标神经网络计算图,以降低目标神经网络计算图的配置需求,从而能够有效减少在编译时神经网络计算图对芯片资源的占用,进而有效降低了神经网络计算图的编译难度,提高了神经网络计算图的编译效率和效果,且有效降低了神经网络计算图的编译对芯片硬件存储资源的要求,有利于解决神经网络计算图的编译所需存储资源较大而实际芯片硬件存储资源无法满足的问题,实现了对芯片硬件存储资源的合理利用,提高了芯片硬件存储资源的利用效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1为本公开实施例提供的一种神经网络计算图的处理方法的流程示意图;
图2为图1中步骤S12的一种具体实施方式的流程示意图;
图3为一种原始的神经网络计算图的结构示意图;
图4为对图3所示神经网络计算图进行处理得到的目标神经网络计算图的结构示意图;
图5为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图;
图6为本公开实施例提供的一种处理装置的组成框图;
图7为本公开实施例提供的一种电子设备的组成框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
在相关技术中,芯片的计算、存储等资源有限,大型神经网络的计算图通常所需的运算量、数据量较大,芯片的计算、存储资源通常无法满足整个神经网络计算图的资源需求,造成神经网络计算图的编译难度大且效率低。
为此,本公开实施例提供了一种神经网络计算图的处理方法及处理装置、电子设备、计算机可读存储介质,旨在能够有效解决上述相关技术中存在的技术问题中的至少一种。
本公开实施例的处理方法可以由处理装置作为执行主体执行,处理装置可以通过软件和/或硬件方式集成于终端设备或服务器等电子设备中,示例性的,终端设备可以为车载设备、用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些实施例中,本公开实施例的处理方法可以通过处理器调用存储器中存储的计算机可读程序指令的方式来实现,或者,可通过服务器执行本公开实施例的处理方法。
图1为本公开实施例提供的一种神经网络计算图的处理方法的流程示意图。
本公开实施例提供一种神经网络计算图的处理方法,该神经网络计算图的处理方法用于实现对待处理的原始的神经网络计算图进行处理,以优化神经网络计算图的图结构,得到目标神经网络计算图,其中原始的神经网络计算图可以包括多个原始算子节点,原始算子节点是构成神经网络的基本计算单元,原始算子节点例如可以是神经网络中的卷积、池化等运算操作,神经网络可以是任意类型的深度学习网络,神经网络可以用于执行图像处理任务、语音处理任务、文本处理任务、视频处理任务中的任意一种,神经网络的输入数据可以是图像数据、语音数据、文本数据、视频数据中的任意一种。
参照图1,该处理方法可以包括:步骤S11~步骤S13。
步骤S11、获取原始的神经网络计算图中每个原始算子节点对应的输入张量的批大小,输入张量的批大小为输入张量的批处理维度的维度长度。
步骤S12、根据每个原始算子节点对应的批大小对每个原始算子节点对应的批处理维度进行维度长度变换,以得到原始算子节点对应的目标算子节点,每个目标算子节点对应的批处理维度的维度长度小于对应的原始算子节点对应的批处理维度的维度长度。
步骤S13、根据多个目标算子节点,获取目标神经网络计算图。
在本公开实施例中,对于一个待处理的原始的神经网络计算图,在获取原始的神经网络计算图中每个原始算子节点对应的输入张量的批大小之前,即在步骤S11之前,该处理方法还包括:遍历整个原始的神经网络计算图,获取原始的神经网络计算图中每个原始算子节点的节点信息。
其中,原始算子节点的节点信息可以包括但不限于:原始算子节点的输入连接关系、输出连接关系、所需的参数信息、原始算子节点的属性信息、原始算子节点的执行顺序、原始算子节点对应的输入张量的张量属性信息等。
其中,原始算子节点的输入连接关系是描述神经网络计算图中该原始算子节点的输入和其他原始算子节点的输出之间的连接关系;原始算子节点的输出连接关系是描述神经网络计算图中该原始算子节点的输出和其他原始算子节点的输入之间的连接关系;原始算子节点所需的参数信息包括但不限于预先配置的实现该原始算子节点的运算操作所需的权重参数;原始算子节点的属性信息是表征原始算子节点的特征属性的信息,原始算子节点的属性信息可以包括但不限于原始算子节点的类型(如卷积、加法、乘法等)、原始算子节点所需的计算量和存储量等;原始算子节点的执行顺序是表征执行该原始算子节点的运算操作的时间顺序;原始算子节点对应的输入张量的张量属性信息是表征输入张量的特征属性的信息,张量属性信息可以包括但不限于:输入张量的阶(Rank)、轴和形状,张量的阶是指张量中的维数,即张量的轴(维度)的数量,张量的轴即为张量中具体的维度,张量的形状表征张量的各个轴的长度,即各个维度的长度。示例性的,假设一个输入张量为4阶张量,则该输入张量具有4个轴(维度),假设该4个维度的长度分别为N、H、W、C,则该输入张量的形状为[N,H,W,C]。
在本公开实施例中,原始算子节点对应的输入张量为多阶张量,具有多个维度(轴),其中一个维度为批处理(Batch)维度,批处理维度的维度长度表示为批大小或批尺寸(Batch Size)。在神经网络中,在一些运算操作(原始算子节点)中通常需要批量处理样本(如图片),原始算子节点对应的输入张量的批处理维度的维度长度(批大小)表示原始算子节点所需批量处理的样本数量。
示例性的,神经网络为卷积神经网络,卷积神经网络中算子节点的输入张量通常为4阶张量,具有4个维度,分别为批处理维度、图像像素高度维度、图像像素宽度维度以及图像颜色通道维度,张量形状通常表示为[N,H,W,C],张量形状中每个指标代表一个维度,指标的值代表该维度的维度长度,其中,N表示批处理维度的维度长度(即批大小),即需批量处理的图像样本数量,H表示图像像素高度,即图像在竖直方向上的像素数量,W表示图像像素宽度,即图像在水平方向上的像素数量,C表示图像的颜色通道数量(如RGB彩色图像的颜色通道数C=3)。
在步骤S11中,可以通过预先配置原始的神经网络计算图中每个原始算子节点的节点信息,沿原始的神经网络计算图中多个原始算子节点的执行顺序方向,依次获取原始的神经网络计算图中每个原始算子节点对应的输入张量在批处理维度上的维度长度(即批大小)。
在步骤S12中,根据每个原始算子节点对应的批大小对每个原始算子节点进行处理,具体的,对每个原始算子节点的输入张量对应的批处理维度进行维度长度变换,保持其他维度的维度长度不变,以得到每个原始算子节点对应的目标算子节点,即将原始算子节点转换为目标算子节点。其中,每个目标算子节点的运算操作类型与对应的原始算子节点的运算操作类型保持相同,且每个目标算子节点对应的批处理维度的维度长度(批大小)小于对应的原始算子节点对应的批处理维度的维度长度(批大小)。
在步骤S13中,可以根据每个原始算子节点对应的目标算子节点,以及输入连接关系、输出连接关系,获取目标神经网络计算图。其中,在目标神经网络计算图中,目标算子节点之间的输入、输出连接关系与原始的神经网络计算图中对应的原始算子节点之间的输入、输出连接关系对应相同,且目标算子节点所需的权重参数与对应的原始算子节点所需的权重参数相同,且目标算子节点的属性信息和执行顺序与对应的原始算子节点的属性信息和执行顺序相同,目标算子节点对应的输入张量的阶和轴保持不变,目标算子节点对应的输入张量的形状中批处理维度的维度长度与对应的原始算子节点对应的输入张量的形状中批处理维度的维度长度不同,其他维度的维度长度保持相同。
根据本公开实施例提供的神经网络计算图的处理方法的技术方案,该处理方法用于处理任意合适的神经网络计算图,能够实现将原始的神经网络计算图优化为由对应较低批大小的目标算子节点构成的目标神经网络计算图,以降低目标神经网络计算图的配置需求,从而能够有效减少在编译时神经网络计算图对芯片资源的占用,进而有效降低了神经网络计算图的编译难度,提高了神经网络计算图的编译效率和效果,且有效降低了神经网络计算图的编译对芯片硬件存储资源的要求,有利于解决神经网络计算图的编译所需存储资源较大而实际芯片硬件存储资源无法满足的问题,实现了对芯片硬件存储资源的合理利用,提高了芯片硬件存储资源的利用效率。在实际应用中,根据本公开实施例的方法对原始的神经网络计算图进行处理,对于原始的神经网络计算图中对应批处理维度的维度长度为n(n大于1)的算子节点,由于已处理优化为对应较低批大小的目标算子节点,因此在实际编译时,无需配置n份配置信息,而可以配置份数少于n的配置信息;而相关技术中,未经处理的神经网络计算图中对应批处理维度的维度长度为n(n大于1)的算子节点通常需要对应n份配置信息;因此,相较于相关技术,经本公开实施例的处理方法处理得到目标神经网络计算图,在实际编译时可以有效节省所编译的众核芯片的片上存储资源。
在一些实施例中,神经网络计算图中多个原始算子节点之间为串行连接关系,即任意两个原始算子节点之间均是串行连接关系,上述处理方法适用于对多个原始算子节点之间为串行连接关系的神经网络计算图进行处理。
在一些实施例中,该处理方法用于对满足处理条件的神经网络计算图进行处理,其中处理条件可以包括:神经网络计算图中每个原始算子节点对应的输入张量的批大小均大于1,且任意两个原始算子节点对应的批大小中第一批大小与第二批大小的比值为正整数;其中,第一批大小为任意两个原始算子节点中的一个原始算子节点对应的批大小,第二批大小为另一个原始算子节点对应的批大小,且第一批大小大于或等于第二批大小。对于满足上述处理条件的神经网络计算图,利用本公开实施例的处理方法进行处理,能够有效提高处理效率,且有利于提高满足上述处理条件的神经网络计算图的编译和运行效果。
在一些实施例中,在步骤S11中,获取原始的神经网络计算图中每个原始算子节点对应的输入张量的批大小,可以进一步包括:根据原始算子节点对应的输入张量的张量形状,确定原始算子节点对应的输入张量的批处理维度的维度长度,以得到输入张量的批大小。例如,原始算子节点对应的输入张量的张量形状为[N,H,W,C],可知张量形状中第一个维度为批处理维度,维度长度为N。
图2为图1中步骤S12的一种具体实施方式的流程示意图,在一些实施例中,参照图2,在步骤S12中,根据每个原始算子节点对应的批大小对每个原始算子节点对应的批处理维度进行维度长度变换,以得到每个原始算子节点对应的目标算子节点,可以进一步包括:步骤S21~步骤S22。
步骤S21、确定所有原始算子节点对应的批大小中的最小批大小。
步骤S22、针对每个原始算子节点,根据该原始算子节点对应的批大小与最小批大小的比值,对该原始算子节点对应的批处理维度进行维度长度变换,得到该原始算子节点对应的目标算子节点。
其中,目标算子节点对应的批处理维度的维度长度为对应的原始算子节点所对应的批大小与最小批大小的比值。
图3为一种原始的神经网络计算图的结构示意图,参照图3,示例性的,原始的神经网络计算图包括原始算子节点1至原始算子节点9,共9个原始算子节点,其中,原始算子节点1、原始算子节点2、原始算子节点8、原始算子节点9分别对应的输入张量的批大小(BatchSize)均为3,原始算子节点3至原始算子节点7分别对应的输入张量的批大小(Batch Size)均为24,则上述最小批大小为3。
图4为对图3所示神经网络计算图进行处理得到的目标神经网络计算图的结构示意图,参照图4,示例性的,利用上述处理方式对图3所示神经网络计算图进行处理,得到图4所示的由目标算子节点a至目标算子节点i构成的目标神经网络计算图。
参照图3和图4,利用上述步骤S22对原始算子节点1进行处理,将原始算子节点1对应的批处理维度的维度长度(批大小)修改为原始算子节点1所对应的批大小与最小批大小的比值,得到目标算子节点a,目标算子节点a对应的批处理维度的维度长度(批大小)为对应的原始算子节点1所对应的批大小与最小批大小的比值,该比值为3/3=1;同理,利用上述步骤S22对原始算子节点2进行处理,得到目标算子节点b,目标算子节点b对应的批处理维度的维度长度(批大小)为3/3=1;同理,利用上述步骤S22对原始算子节点3进行处理,得到目标算子节点c,目标算子节点c对应的批处理维度的维度长度(批大小)为24/3=8;依此类推,对原始算子节点4至原始算子节点9分别进行处理,得到目标算子节点d至目标算子节点i,目标算子节点d对应的批处理维度的维度长度(批大小)为24/3=8,目标算子节点e对应的批处理维度的维度长度(批大小)为24/3=8,目标算子节点f对应的批处理维度的维度长度(批大小)为24/3=8,目标算子节点g对应的批处理维度的维度长度(批大小)为24/3=8,目标算子节点h对应的批处理维度的维度长度(批大小)为3/3=1,目标算子节点i对应的批处理维度的维度长度(批大小)为3/3=1。
由于处理得到的目标算子节点对应的批处理维度的维度长度低于对应原始算子节点所对应的批处理维度的维度长度,因此为了能够利用目标算子节点实现与对应的原始算子节点相同的运算操作效果,得到与对应的原始算子节点相同的计算结果,同时提高神经网络的运行效率。在实际应用中,可以将目标神经网络计算图编译至众核系统,利用众核系统的流水式的任务处理机制,对每个目标算子节点的计算任务进行流水式处理,从而实现与对应的原始算子节点相同的运算操作效果,得到与对应的原始算子节点相同的计算结果,同时确保神经网络的运行效率。以上述图3所示原始算子节点1和图4所示目标算子节点a为例,原始算子节点1对应的批处理维度的维度长度为3,而优化后得到的目标算子节点a对应的批处理维度的维度长度为1,则在将目标算子节点a编译至众核芯片后,在运行时可以针对目标算子节点a连续输入3个输入数据(如图像),每次输入一个输入数据,连续运行3次,进行流水式处理,从而实现与对应的原始算子节点1相同的运算操作效果,得到与对应的原始算子节点1相同的计算结果,同时提高神经网络的运行效率。
图5为本公开实施例提供的另一种神经网络计算图的处理方法的流程示意图,参照图5,在一些实施例中,在获取目标神经网络计算图之后,即在步骤S13之后,该处理方法还可以进一步包括:步骤S14。
步骤S14、将目标神经网络计算图编译至众核系统。
在一些实施例中,众核系统可以包括一个或多个众核芯片,众核芯片是基于存算一体的众核架构的芯片,每个众核芯片可以包括多个物理核(也称为计算核),每个物理核均具有独立内存。在一些实施例中,可以将目标神经网络计算图编译至众核系统中的一个或多个众核芯片上运行。
在步骤S14中,对于在步骤S13中获取到的目标神经网络计算图,根据该目标神经网络计算图生成该目标神经网络计算图对应的可执行文件,可执行文件是可在众核系统的众核芯片上执行的执行代码,从而实现将该目标神经网络计算图编译至众核系统上运行,以使众核系统执行该目标神经网络计算图相应的计算任务。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了一种处理装置、电子设备、计算机可读存储介质,上述处理装置用于实现本公开提供的神经网络计算图的处理方法,上述电子设备及计算机可读存储介质均可用来实现本公开提供的神经网络计算图的处理方法,相应技术方案和描述和参见方法部分的相应记载,此处不再赘述。
图6为本公开实施例提供的一种处理装置的组成框图,参照图6,本公开实施例提供了一种处理装置60,该处理装置60用于对待处理的原始的神经网络计算图进行处理,待处理的原始的神经网络计算图包括多个原始算子节点,该处理装置60包括:维度获取模块61、维度变换模块62和计算图重构模块63。
其中,维度获取模块61用于获取原始的神经网络计算图中每个原始算子节点对应的输入张量的批大小,输入张量的批大小为输入张量的批处理维度的维度长度。
维度变换模块62用于根据每个原始算子节点对应的批大小对每个原始算子节点对应的批处理维度进行维度长度变换,以得到每个原始算子节点对应的目标算子节点;每个目标算子节点对应的批处理维度的维度长度小于对应的原始算子节点对应的批处理维度的维度长度。
计算图重构模块63用于根据多个目标算子节点,获取目标神经网络计算图。
在一些实施例中,每个原始算子节点对应的输入张量的批大小均大于1,且任意两个原始算子节点对应的批大小中第一批大小与第二批大小的比值为正整数;其中,第一批大小为任意两个原始算子节点中的一个原始算子节点对应的批大小,第二批大小为另一个原始算子节点对应的批大小,且第一批大小大于或等于第二批大小。
在一些实施例中,维度变换模块62包括:确定子模块,用于确定所有原始算子节点对应的批大小中的最小批大小;变换子模块,用于针对每个原始算子节点,根据该原始算子节点对应的批大小与所述最小批大小的比值,对该原始算子节点对应的批处理维度进行维度长度变换,得到该原始算子节点对应的目标算子节点。其中,目标算子节点对应的批处理维度的维度长度为对应的原始算子节点所对应的批大小与最小批大小的比值。
在一些实施例中,维度获取模块61用于根据原始算子节点对应的输入张量的张量形状,确定原始算子节点对应的输入张量的批处理维度的维度长度,以得到输入张量的批大小。
在一些实施例中,该处理装置60还包括编译模块,编译模块用于将目标神经网络计算图编译至众核系统,众核系统包括至少一个众核芯片,众核芯片包括多个物理核。
本公开实施例所提供处理装置用于实现上述实施例提供的处理方法,具体描述可参见上述实施例的处理方法中相关的描述,此处不再赘述。
图7为本公开实施例提供的一种电子设备的组成框图,参照图7,本公开实施例提供了一种电子设备,该电子设备包括:至少一个处理器71;至少一个存储器72,以及一个或多个I/O接口73,连接在处理器71与存储器72之间;其中,存储器72存储有可被至少一个处理器71执行的一个或多个计算机程序,一个或多个计算机程序被至少一个处理器71执行,以使至少一个处理器71能够执行上述的神经网络计算图的处理方法。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的神经网络计算图的处理方法。其中,计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述的神经网络计算图的处理方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读程序指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、闪存或其他存储器技术、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读程序指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里所描述的计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (10)
1.一种神经网络计算图的处理方法,其特征在于,原始的所述神经网络计算图包括多个原始算子节点,所述方法包括:
获取原始的神经网络计算图中每个所述原始算子节点对应的输入张量的批大小,所述输入张量的批大小为所述输入张量的批处理维度的维度长度;
根据每个所述原始算子节点对应的批大小对每个所述原始算子节点对应的批处理维度进行维度长度变换,以得到每个所述原始算子节点对应的目标算子节点;每个所述目标算子节点对应的批处理维度的维度长度小于对应的原始算子节点对应的批处理维度的维度长度;
根据多个所述目标算子节点,获取目标神经网络计算图。
2.根据权利要求1所述的处理方法,其特征在于,每个所述原始算子节点对应的输入张量的批大小均大于1,且任意两个原始算子节点对应的批大小中第一批大小与第二批大小的比值为正整数;
其中,所述第一批大小为任意两个原始算子节点中的一个原始算子节点对应的批大小,所述第二批大小为另一个原始算子节点对应的批大小,且所述第一批大小大于或等于所述第二批大小。
3.根据权利要求2所述的处理方法,其特征在于,所述根据每个所述原始算子节点对应的批大小对每个所述原始算子节点对应的批处理维度进行维度长度变换,以得到每个所述原始算子节点对应的目标算子节点,包括:
确定所有所述原始算子节点对应的批大小中的最小批大小;
针对每个所述原始算子节点,根据所述原始算子节点对应的批大小与所述最小批大小的比值,对所述原始算子节点对应的批处理维度进行维度长度变换,得到所述原始算子节点对应的目标算子节点;
其中,所述目标算子节点对应的批处理维度的维度长度为对应的所述原始算子节点所对应的批大小与所述最小批大小的比值。
4.根据权利要求1所述的处理方法,其特征在于,所述获取原始的神经网络计算图中每个所述原始算子节点对应的输入张量的批大小,包括:
根据所述原始算子节点对应的输入张量的张量形状,确定所述原始算子节点对应的输入张量的批处理维度的维度长度,以得到所述输入张量的批大小。
5.根据权利要求1所述的处理方法,其特征在于,在所述获取目标神经网络计算图之后,所述处理方法还包括:
将所述目标神经网络计算图编译至众核系统,所述众核系统包括至少一个众核芯片,所述众核芯片包括多个物理核。
6.根据权利要求1-5中任一项所述的处理方法,其特征在于,所述神经网络计算图中多个原始算子节点之间为串行连接关系。
7.一种处理装置,其特征在于,所述处理装置用于对待处理的神经网络计算图进行处理,所述神经网络计算图包括多个原始算子节点,所述处理装置包括:
维度获取模块,用于获取原始的神经网络计算图中每个所述原始算子节点对应的输入张量的批大小,所述输入张量的批大小为所述输入张量的批处理维度的维度长度;
维度变换模块,用于根据每个所述原始算子节点对应的批大小对每个所述原始算子节点对应的批处理维度进行维度长度变换,以得到每个所述原始算子节点对应的目标算子节点;每个所述目标算子节点对应的批处理维度的维度长度小于对应的原始算子节点对应的批处理维度的维度长度;
计算图重构模块,用于根据多个所述目标算子节点,获取目标神经网络计算图。
8.根据权利要求7所述的处理装置,其特征在于,每个所述原始算子节点对应的输入张量的批大小均大于1,且任意两个原始算子节点对应的批大小中第一批大小与第二批大小的比值为正整数;
其中,所述第一批大小为任意两个原始算子节点中的一个原始算子节点对应的批大小,所述第二批大小为另一个原始算子节点对应的批大小,且所述第一批大小大于或等于所述第二批大小。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-6中任一项所述的处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时实现如权利要求1-6中任一项所述的处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210539729.0A CN115034358A (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 |
---|---|---|---|
CN202210539729.0A CN115034358A (zh) | 2022-05-17 | 2022-05-17 | 神经网络计算图的处理方法及处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115034358A true CN115034358A (zh) | 2022-09-09 |
Family
ID=83121585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210539729.0A Pending CN115034358A (zh) | 2022-05-17 | 2022-05-17 | 神经网络计算图的处理方法及处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115034358A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115268936A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于计算图编译的优化方法及装置 |
CN116561075A (zh) * | 2023-05-15 | 2023-08-08 | 北京百度网讯科技有限公司 | 动态链接库文件的生成方法、算子的调用方法及装置 |
WO2023222047A1 (zh) * | 2022-05-17 | 2023-11-23 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理单元、设备、介质 |
-
2022
- 2022-05-17 CN CN202210539729.0A patent/CN115034358A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023222047A1 (zh) * | 2022-05-17 | 2023-11-23 | 北京灵汐科技有限公司 | 神经网络计算图的处理方法及处理单元、设备、介质 |
CN115268936A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于计算图编译的优化方法及装置 |
CN116561075A (zh) * | 2023-05-15 | 2023-08-08 | 北京百度网讯科技有限公司 | 动态链接库文件的生成方法、算子的调用方法及装置 |
CN116561075B (zh) * | 2023-05-15 | 2024-01-30 | 北京百度网讯科技有限公司 | 动态链接库文件的生成方法、算子的调用方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115034358A (zh) | 神经网络计算图的处理方法及处理装置 | |
US10776126B1 (en) | Flexible hardware engines for handling operating on multidimensional vectors in a video processor | |
CN114881214A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN112199707B (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 | |
CN110377340B (zh) | 运算方法、装置及相关产品 | |
CN112463159B (zh) | 编译方法、装置、电子设备和存储介质 | |
CN115081598B (zh) | 算子处理方法及装置、电子设备、计算机可读存储介质 | |
CN112200713A (zh) | 一种联邦学习中的业务数据处理方法、装置以及设备 | |
CN112463160A (zh) | 编译方法、装置、电子设备和存储介质 | |
CN114970814A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN115099399A (zh) | 神经网络模型部署方法、装置、电子设备及存储介质 | |
CN114841323A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN115186796A (zh) | 基于fpga的卷积神经网络自动部署方法 | |
WO2023222047A1 (zh) | 神经网络计算图的处理方法及处理单元、设备、介质 | |
CN111158907B (zh) | 数据处理方法及装置、电子设备和存储介质 | |
US11531782B1 (en) | Systems and methods for finding a value in a combined list of private values | |
CN111552478B (zh) | 用于生成cuda程序的设备、方法和存储介质 | |
CN111915002B (zh) | 运算方法、装置及相关产品 | |
CN117114055B (zh) | 面向工业应用场景的fpga二值神经网络加速方法 | |
CN117707791B (zh) | 用于进行注意力运算的方法、设备和存储介质 | |
CN115630674A (zh) | 神经网络结构拆分方法及装置、映射方法、电子设备、介质 | |
WO2024067207A1 (zh) | 调度方法、调度装置、电子设备及存储介质 | |
CN114647472A (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 |