CN115081598A - 算子处理方法及装置、电子设备、计算机可读存储介质 - Google Patents

算子处理方法及装置、电子设备、计算机可读存储介质 Download PDF

Info

Publication number
CN115081598A
CN115081598A CN202211014065.2A CN202211014065A CN115081598A CN 115081598 A CN115081598 A CN 115081598A CN 202211014065 A CN202211014065 A CN 202211014065A CN 115081598 A CN115081598 A CN 115081598A
Authority
CN
China
Prior art keywords
execution
preset number
operator
polyhedral
operators
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.)
Granted
Application number
CN202211014065.2A
Other languages
English (en)
Other versions
CN115081598B (zh
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 CN202211014065.2A priority Critical patent/CN115081598B/zh
Publication of CN115081598A publication Critical patent/CN115081598A/zh
Application granted granted Critical
Publication of CN115081598B publication Critical patent/CN115081598B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开提供一种算子处理方法及装置、电子设备、计算机可读存储介质,该方法包括:将神经网络计算图中预设数量的算子中的每个算子映射为一个多面体模型,多面体模型包括对应算子中的多个执行实例;将预设数量的多面体模型置于同一参考坐标空间中并确定每个多面体模型中多个执行实例的当前执行顺序;利用目标算法对每个多面体模型中多个执行实例的当前执行顺序进行迭代优化,以使预设数量的算子的输入输出数据的当前最大缓存量满足目标条件,得到预设数量的目标多面体模型。根据本公开能够高效、自动化地调整算子中多个执行实例的执行顺序,有利于降低神经网络计算图中动态数据的存储量,有利于节省硬件设备的存储资源。

Description

算子处理方法及装置、电子设备、计算机可读存储介质
技术领域
本公开涉及计算机技术领域,特别涉及一种神经网络计算图的算子处理方法及算子处理装置、电子设备、计算机可读存储介质。
背景技术
神经网络、图形渲染、高性能等等领域的算法或任务往往可以表示为计算图形式。通常定义计算图为由表示计算操作的结点(算子)和表示计算操作之间数据依赖关系的边组成的图,计算图的执行往往需要消耗大量的硬件存储,这使得计算图的存储优化变得尤为重要。
发明内容
本公开提供一种神经网络计算图的算子处理方法及算子处理装置、电子设备、计算机可读存储介质。
第一方面,本公开提供了一种神经网络计算图的算子处理方法,所述算子处理方法包括:
将神经网络计算图中预设数量的算子中的每个算子映射为一个多面体模型,所述多面体模型包括对应的所述算子中的多个执行实例;所述预设数量为所述神经网络计算图中全部或部分算子的数量;
将所述预设数量的所述多面体模型置于同一参考坐标空间中,并确定每个所述多面体模型中所述多个执行实例的当前执行顺序;
利用目标算法对所述预设数量中每个所述多面体模型中所述多个执行实例的当前执行顺序进行迭代优化,以使所述预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件,从而得到优化后的所述预设数量的目标多面体模型。
第二方面,本公开提供了一种算子处理装置,所述算子处理装置包括:
映射单元,用于将神经网络计算图中预设数量的算子中的每个算子映射为一个多面体模型,所述多面体模型包括对应的所述算子中的多个执行实例;
确定单元,用于将所述预设数量的所述多面体模型置于同一参考坐标空间中,并确定每个所述多面体模型中所述多个执行实例的当前执行顺序;
迭代优化单元,用于利用目标算法对所述预设数量中每个所述多面体模型中所述多个执行实例的当前执行顺序进行迭代优化,以使所述预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件,从而得到优化后的所述预设数量的目标多面体模型。
第三方面,本公开提供了一种电子设备,该电子设备包括:
至少一个处理器;
以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的算子处理方法。
第四方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的算子处理方法。
根据本公开实施例提供的神经网络计算图的算子处理方法及算子处理装置、电子设备、计算机可读存储介质的技术方案,利用目标算法对预设数量的算子中每个算子对应的多面体模型中多个执行实例的当前执行顺序进行迭代优化,以改变预设数量中每个多面体模型的多个执行实例的当前执行顺序,从而调整预设数量的算子对应的输入输出数据的当前最大缓存量,直至预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件,从而有利于降低神经网络计算图中动态数据的存储量,有利于节省硬件设备的存储资源。在应用于具有复杂的数据依赖情况的神经网络计算图时,能够高效、自动化地调整和优化算子的多个执行实例的执行顺序,以使神经网络计算图中动态数据的存储量尽可能的小。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1为本公开实施例中一种神经网络计算图的结构示意图;
图2为本公开实施例提供的一种神经网络计算图的算子处理方法的流程示意图;
图3为一种将算子映射为多面体模型的示意图;
图4为一种多面体模型中多个执行实例的执行顺序示意图;
图5为一种具有数据依赖关系的两个算子的多个执行实例的执行顺序示意图;
图6为图5所示两个算子之间的输入输出数据在硬件内存模型中的缓存情况示意图;
图7为另一种具有数据依赖关系的两个算子的多个执行实例的执行顺序示意图;
图8为图7所示两个算子之间的输入输出数据在硬件内存模型中的缓存情况示意图;
图9为另一种具有数据依赖关系的两个算子的多个执行实例的执行顺序示意图;
图10为图9所示两个算子之间的输入输出数据在硬件内存模型中的缓存情况示意图;
图11为图1中步骤S13的一种具体实施方式的流程示意图;
图12为本公开实施例提供的另一种算子处理方法的流程示意图;
图13为本公开实施例提供的一种算子处理装置的组成框图;
图14为本公开实施例提供的一种电子设备的组成框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
图1为本公开实施例中一种神经网络计算图的结构示意图,在相关技术中,如图1所示,在硬件设备执行神经网络计算图的过程中,存储的数据可以分为两类:静态数据与动态数据。其中,静态数据即在计算过程中不会发生改变的数据,例如神经网络的权重;动态数据为运行过程中会发生变化的数据,如计算结点(也称为算子)的输入、输出数据,一个结点的输出数据通常作为另一个结点的输入数据,则该一个结点的输出数据为动态数据。静态数据的缓存大小一般固定,但是动态数据的缓存大小往往因为不同的执行策略而发生改变。
因此,在相关技术中,如何优化神经网络计算图中动态数据的缓存大小,以节省硬件设备的存储资源,成为目前亟待解决的技术问题。
为此,本公开实施例提供了一种神经网络计算图的算子处理方法及算子处理装置、电子设备、计算机可读存储介质,旨在能够有效解决上述相关技术中存在的技术问题中的至少一种。
本公开实施例的算子处理方法可以由算子处理装置作为执行主体执行,算子处理装置可以通过软件和/或硬件方式集成于终端设备或服务器等电子设备中。示例性的,电子设备可以为车载设备、用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等;示例性的,电子设备可以为基于众核架构的众核芯片或系统,由多个处理核构成。在一些实施例中,本公开实施例的算子处理方法可以通过处理器调用存储器中存储的计算机可读程序指令的方式来实现,或者,可通过服务器执行本公开实施例的算子处理方法。
图2为本公开实施例提供的一种神经网络计算图的算子处理方法的流程示意图。
本公开实施例提供一种算子处理方法,该算子处理方法可以适用于任意类型的神经网络对应的神经网络计算图,神经网络计算图可以包括多个算子,算子是构成神经网络的基本计算单元,算子例如可以是神经网络中的卷积、池化等运算操作,神经网络可以是任意类型的深度学习网络,神经网络(神经网络计算图)可以用于执行图像处理任务、语音处理任务、文本处理任务、视频处理任务中的任意一种,神经网络的输入数据可以是图像数据、语音数据、文本数据、视频数据中的任意一种。
如图2所示,该算子处理方法包括:步骤S11~步骤S13。
步骤S11、将神经网络计算图中预设数量的算子中的每个算子映射为一个多面体模型,多面体模型包括对应的算子中的多个执行实例。
其中,预设数量为神经网络计算图中全部或部分算子的数量。
在神经网络计算图编译过程中,部分或全部算子通常采用for循环代码表示,采用一个点表示for循环代码中的一个基本运算,for循环代码中的索引值则可用于表示该点的坐标,则一个算子中表示基本运算的点可以组成一个多面体模型,算子的for循环层数是多面体模型的维度,如具有3层for循环的算子可以采用一个三维空间中的多面体表示,多面体在数学上可以用线性不等式方程组描述,其在数学上的易操作性使得多面体技术在编译优化领域有广泛的应用。在下文描述中,将算子中的基本运算称为执行实例,执行实例表示算子中的一个基本运算。
示例性的,存在算子A和算子B,算子A和算子B可以表示为如下for循环代码:
算子A:
for i: 1 to 4
for j: 1 to 6
a[i][j] = 1
算子B:
for i: 1 to 6
for j: 1 to 4
b[i][j] = a[j][i]
其中,a[i][j]表示算子A的一个执行实例(基本运算),b[i][j]表示算子B的一个执行实例,i和j表示执行实例对应的索引值,算子A和B的for循环层数均为两层,则算子A和算子B均可以采用一个二维空间中的多面体表示。
图3为一种将算子映射为多面体模型的示意图,以算子A为例,算子A对应的多面体模型可以如图3右侧所示,在算子A对应的多面体模型中,每一个点表示算子A中的一个执行实例(基本运算),每个点的坐标表示对应的执行实例在算子A的for循环中的索引值。
在步骤S11中,预设数量的算子中的每一个算子为神经网络计算图中采用for循环代码表示的算子,将神经网络计算图中采用for循环代码表示的一个或多个算子作为待优化的算子进行算子处理。
在步骤S11中,在神经网络计算图中获取采用for循环代码表示的部分或全部算子,并获取其中的每个算子中的每个执行实例及对应的索引值,基于执行实例和执行实例的索引值,将算子映射成多面体模型表示形式,得到预设数量的多面体模型,其中每个算子对应一个多面体模型。
可以理解的是,预设数量可以根据神经网络计算图中采用for循环代码表示的算子的数量确定,示例性的,神经网络计算图中存在两个算子均采用for循环代码表示,则预设数量可以为2,也可以为1,即当神经网络计算图中存在两个算子均采用for循环代码表示时,可以针对其中部分或全部算子进行本公开实施例的算子处理方法,以优化其中部分或全部算子的多个执行实例的执行顺序。
步骤S12、将预设数量的多面体模型置于同一参考坐标空间中,并确定每个多面体模型中多个执行实例的当前执行顺序。
在步骤S12中,将预设数量的多面体模型置于同一参考坐标空间中,设定参考坐标空间中多面体模型中多个执行实例的执行维度顺序,并基于执行维度顺序,确定每个多面体模型中多个执行实例的当前执行顺序。其中,执行维度顺序表征参考坐标空间中每个坐标维度对应的执行顺序以及每个坐标维度上的坐标对应的执行顺序,基于设定的执行维度顺序,可以确定参考坐标空间中每个位置坐标对应的执行实例的执行顺序。
图4为一种多面体模型中多个执行实例的执行顺序示意图,示例性的,图4示出了上述算子A对应的多面体模型中多个执行实例的执行顺序,如图4所示,在参考坐标空间中,设定每个多面体模型中多个执行实例a[i][j]的执行维度顺序为延i坐标从小到大的顺序依次固定i坐标,在每次固定的i坐标下,延j坐标从小到大的顺序依次执行每个j坐标上的点(执行实例),从而可以确定出如图4所示的算子A对应的多面体模型中多个执行实例的执行顺序,其中,如图4所示的多面体模型中多个执行实例的执行顺序依次为:a[1][1],a[1][2],a[1][3],a[1][4],a[1][5],a[1][6],a[2][1],......,a[2][6],a[3][1],.......,a[3][6],a[4][1],.......,a[4][6]。
步骤S13、利用目标算法对预设数量中每个多面体模型中多个执行实例的当前执行顺序进行迭代优化,以使预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件,从而得到优化后的预设数量的目标多面体模型。
其中,一个算子对应的输入输出数据是指前述的动态数据,即该一个算子的前继算子向该一个算子输出的数据,或者该一个算子向该一个算子的后继算子输出的数据。前继算子是指对应的输出与该一个算子的输入具有数据依赖关系的其他算子,后继算子是指对应的输入与该一个算子的输出具有数据依赖关系的其他算子。预设数量的算子对应的输入输出数据的当前最大缓存量是指在预设数量的算子的多个执行实例按照当前执行顺序运行过程中,硬件内存模型最多需要缓存的输入输出数据的数据量。
在本公开实施例中,算子的输入输出数据的最大缓存量与算子的多个执行实例的执行顺序、与算子具有数据依赖关系的其他算子的多个执行实例的执行顺序、以及硬件内存模型的存储粒度相关,其中,硬件内存模型是指用于缓存算子的输入输出数据的硬件存储模块,存储粒度是指硬件内存模型的内存存储的灵活度。例如,硬件内存模型可以内存行为单位进行内存空间分配,则存储粒度为内存行,或者,硬件内存模型可以数据点为单位进行内存空间分配,则存储粒度为数据点。
在步骤S13中,利用目标算法对预设数量中每个多面体模型中多个执行实例的当前执行顺序进行迭代优化,以改变预设数量中每个多面体模型的多个执行实例的当前执行顺序,从而调整预设数量的算子对应的输入输出数据的当前最大缓存量,直至预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件,从而确定出在满足目标条件时预设数量的多面体模型的多个执行实例优化后的执行顺序,以在满足目标条件时确定的优化后的预设数量的多面体模型作为优化后的预设数量的目标多面体模型。
其中,目标条件可以包括:预设数量的算子对应的输入输出数据的当前最大缓存量小于预定阈值,或者,预设数量的算子对应的输入输出数据的当前最大缓存量在迭代优化中达到收敛状态。
根据本公开实施例所提供的算子处理方法,利用目标算法对预设数量的算子中每个算子对应的多面体模型中多个执行实例的当前执行顺序进行迭代优化,以改变预设数量中每个多面体模型的多个执行实例的当前执行顺序,从而调整预设数量的算子对应的输入输出数据的当前最大缓存量,直至预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件,从而有利于降低神经网络计算图中动态数据的存储量,有利于节省硬件设备的存储资源。在应用于具有复杂的数据依赖情况的神经网络计算图时,能够高效、自动化地调整和优化算子的多个执行实例的执行顺序,以使神经网络计算图中动态数据的存储量尽可能的小。
在一些实施例中,在利用目标算法对预设数量中每个多面体模型中多个执行实例的当前执行顺序进行迭代优化之前,该算子处理方法还可以进一步包括:步骤S21。
步骤S21、根据硬件内存模型的存储粒度,获取预设数量的多面体模型中多个执行实例按照当前执行顺序执行时,预设数量的算子对应的输入输出数据的当前最大缓存量。
图5为一种具有数据依赖关系的两个算子的多个执行实例的执行顺序示意图,图6 为图5所示两个算子之间的输入输出数据在硬件内存模型中的缓存情况示意图,假设硬件 内存模型的存储粒度为数据点,即硬件内存模型的存储空间可以控制到以每个数据点为单 位进行数据缓存。如图5和图6所示,
Figure 256463DEST_PATH_IMAGE001
表示算子A中每个执行实例生成的数据的次序,
Figure 426545DEST_PATH_IMAGE002
表示 算子B中每个执行实例生成的数据的次序,则,对于算子A在
Figure 463771DEST_PATH_IMAGE003
时执行实例a[1][1]生成的 数据,在
Figure 352092DEST_PATH_IMAGE004
时将被算子B的执行实例b[1][1]使用,对于算子A在
Figure 641122DEST_PATH_IMAGE005
时执行实例a[1][2] 生成的数据,在
Figure 524765DEST_PATH_IMAGE006
时将被算子B的执行实例b[2][1]使用,对于算子A在
Figure 732892DEST_PATH_IMAGE007
时执行实例a [1][3]生成的数据,在
Figure 75887DEST_PATH_IMAGE008
时将被算子B的执行实例b[3][1]使用,......,对于算子A在
Figure 27662DEST_PATH_IMAGE009
时执行实例a[4][6]生成的数据,在
Figure 906756DEST_PATH_IMAGE010
时将被算子B的执行实例b[6][4]使用。可 知,算子A每计算产生一个数据,算子B即可使用该一个数据进行运算,则对于硬件内存模型 而言,每次只需缓存算子A产生的一个数据,在该一个数据被算子B使用后即可清除缓存,因 此在算子A和算子B的多个执行实例按照当前执行顺序运行过程中,硬件内存模型最多需要 缓存的算子A与算子B之间的输入输出数据的数据量为1,即算子A和算子B对应的输入输出 数据的当前最大缓存量为1。
图7为另一种具有数据依赖关系的两个算子的多个执行实例的执行顺序示意图, 图8为图7所示两个算子之间的输入输出数据在硬件内存模型中的缓存情况示意图,假设硬 件内存模型的存储粒度为数据点,即硬件内存模型的存储空间可以控制到以每个数据点为 单位进行数据缓存。如图7和图8所示,
Figure 285785DEST_PATH_IMAGE001
表示算子A中每个执行实例生成的数据的次序,
Figure 617540DEST_PATH_IMAGE002
表 示算子B中每个执行实例生成的数据的次序,则,对于算子A在
Figure 373007DEST_PATH_IMAGE003
时执行实例a[1][1]生成 的数据,在
Figure 106608DEST_PATH_IMAGE011
时将被算子B的执行实例b[1][1]使用,对于算子A在
Figure 656538DEST_PATH_IMAGE005
时执行实例a[1] [2]生成的数据,在
Figure 242633DEST_PATH_IMAGE012
时将被算子B的执行实例b[2][1]使用,对于算子A在
Figure 270632DEST_PATH_IMAGE007
时执行实 例a[1][3]生成的数据,在
Figure 858739DEST_PATH_IMAGE013
时将被算子B的执行实例b[3][1]使用,对于算子A在
Figure 845150DEST_PATH_IMAGE014
时 执行实例a[1][4]生成的数据,在
Figure 151497DEST_PATH_IMAGE008
时将被算子B的执行实例b[4][1]使用,对于算子A在
Figure 248766DEST_PATH_IMAGE015
时执行实例a[1][5]生成的数据,在
Figure 691380DEST_PATH_IMAGE006
时将被算子B的执行实例b[5][1]使用,对于 算子A在
Figure 848692DEST_PATH_IMAGE016
时执行实例a[1][6]生成的数据,在
Figure 140871DEST_PATH_IMAGE004
时将被算子B的执行实例b[6][1]使 用,......,对于算子A在
Figure 776252DEST_PATH_IMAGE009
时执行实例a[4][6]生成的数据,在
Figure 338951DEST_PATH_IMAGE017
时将被算子B的执 行实例b[6][4]使用。可知,算子B在
Figure 667164DEST_PATH_IMAGE004
时执行实例b[6][1]的运行需要用到算子A在
Figure 682525DEST_PATH_IMAGE016
时执行实例a[1][6]生成的数据,因此算子A在
Figure 387176DEST_PATH_IMAGE018
时产生的6个数据均需要进行缓存, 据图8可知,对于硬件内存模型而言,在算子A和算子B的多个执行实例按照当前执行顺序运 行过程中,硬件内存模型最多需要缓存的算子A与算子B之间的输入输出数据的数据量为6, 即算子A和算子B对应的输入输出数据的当前最大缓存量为6。
图9为另一种具有数据依赖关系的两个算子的多个执行实例的执行顺序示意图, 图10为图9所示两个算子之间的输入输出数据在硬件内存模型中的缓存情况示意图,假设 硬件内存模型的存储粒度为数据点,即硬件内存模型的存储空间可以控制到以每个数据点 为单位进行数据缓存。如图9和图10所示,
Figure 663436DEST_PATH_IMAGE001
表示算子A中每个执行实例生成的数据的次序,
Figure 37917DEST_PATH_IMAGE002
表示算子B中每个执行实例生成的数据的次序,则,对于算子A在
Figure 665207DEST_PATH_IMAGE003
时执行实例a[1][1] 生成的数据,在
Figure 19222DEST_PATH_IMAGE004
时将被算子B的执行实例b[1][1]使用;对于算子A在
Figure 681147DEST_PATH_IMAGE005
时执行实例a [1][2]生成的数据,在
Figure 226529DEST_PATH_IMAGE012
时将被算子B的执行实例b[2][1]使用,对于算子A在
Figure 341116DEST_PATH_IMAGE007
时执 行实例a[1][3]生成的数据,在
Figure 997356DEST_PATH_IMAGE019
时将被算子B的执行实例b[3][1]使用,对于算子A在
Figure 248209DEST_PATH_IMAGE014
时执行实例a[1][4]生成的数据,在
Figure 230071DEST_PATH_IMAGE020
时将被算子B的执行实例b[4][1]使用,对于 算子A在
Figure 566375DEST_PATH_IMAGE015
时执行实例a[1][5]生成的数据,在
Figure 524841DEST_PATH_IMAGE021
时将被算子B的执行实例b[5][1]使 用,对于算子A在
Figure 895780DEST_PATH_IMAGE016
时执行实例a[1][6]生成的数据,在
Figure 782964DEST_PATH_IMAGE022
时将被算子B的执行实例b [6][1]使用,......,对于算子A在
Figure 606564DEST_PATH_IMAGE009
时执行实例a[4][6]生成的数据,在
Figure 870186DEST_PATH_IMAGE010
时将被 算子B的执行实例b[6][4]使用。可知,算子B在
Figure 95631DEST_PATH_IMAGE013
时执行实例b[1][4]的运行需要用到算 子A在
Figure 153717DEST_PATH_IMAGE023
时执行实例a[1][4]生成的数据,因此
Figure 730192DEST_PATH_IMAGE024
生成了19个数据,而在
Figure 390980DEST_PATH_IMAGE013
时算 子B在
Figure 847763DEST_PATH_IMAGE025
已使用了三个,分别为
Figure 466963DEST_PATH_IMAGE003
时产生的数据、
Figure 140521DEST_PATH_IMAGE026
时产生的数据以及
Figure 605000DEST_PATH_IMAGE027
时 产生的数据,所以剩下16个数据需要进行缓存,即在
Figure 680403DEST_PATH_IMAGE013
时硬件内存模型最多缓存了16个 数据,据图10可知,对于硬件内存模型而言,在算子A和算子B的多个执行实例按照当前执行 顺序运行过程中,硬件内存模型最多需要缓存的算子A与算子B之间的输入输出数据的数据 量为16,即算子A和算子B对应的输入输出数据的当前最大缓存量为16。
由上述分析可知,在硬件内存模型的存储粒度为数据点的情况下,算子间的输入 输出数据的最大缓存量T可以通过以下方式计算:
Figure 204926DEST_PATH_IMAGE028
,其中,T表示最大缓存 量。
在一些实施例中,硬件内存模型的存储粒度为内存行,则在图5所示的执行顺序 下,一个内存行缓存6个数据,如
Figure 365780DEST_PATH_IMAGE018
时产生的6个数据,在
Figure 633950DEST_PATH_IMAGE011
时算子B将使用算子A在
Figure 62395DEST_PATH_IMAGE016
时产生的数据,即在
Figure 757819DEST_PATH_IMAGE011
时硬件内存模型中缓存的
Figure 405969DEST_PATH_IMAGE018
时产生的6个数据均将被 算子B使用完,此时清除对应的内存行的存储空间。结合图6可知,对于硬件内存模型而言, 在算子A和算子B的多个执行实例按照当前执行顺序运行过程中,硬件内存模型最多需要缓 存的算子A与算子B之间的输入输出数据的数据量为6,即算子A和算子B对应的输入输出数 据的当前最大缓存量为6。
在一些实施例中,硬件内存模型的存储粒度为内存行,则在图7所示的执行顺序 下,一个内存行缓存6个数据,如
Figure 477830DEST_PATH_IMAGE018
时产生的6个数据,在
Figure 262246DEST_PATH_IMAGE004
时算子B将使用算子A在
Figure 394150DEST_PATH_IMAGE016
时产生的数据,即在
Figure 264017DEST_PATH_IMAGE004
时硬件内存模型中需要先缓存
Figure 139570DEST_PATH_IMAGE018
时算子A产生的6个数 据。结合图8可知,对于硬件内存模型而言,在算子A和算子B的多个执行实例按照当前执行 顺序运行过程中,硬件内存模型最多需要缓存的算子A与算子B之间的输入输出数据的数据 量为6,即算子A和算子B对应的输入输出数据的当前最大缓存量为6。
在一些实施例中,硬件内存模型的存储粒度为内存行,则在图9所示的执行顺序 下,一个内存行缓存6个数据,如
Figure 903126DEST_PATH_IMAGE018
时产生的6个数据,在
Figure 328902DEST_PATH_IMAGE029
时算子B将使用算子A在
Figure 76278DEST_PATH_IMAGE030
时产生的数据,而在
Figure 365308DEST_PATH_IMAGE022
时算子B才能使用算子A在
Figure 248951DEST_PATH_IMAGE016
时产生的数据,在
Figure 332444DEST_PATH_IMAGE031
时 算子B才能使用算子A在
Figure 35958DEST_PATH_IMAGE032
时产生的数据,在
Figure 394258DEST_PATH_IMAGE033
时算子B才能使用算子A在
Figure 866828DEST_PATH_IMAGE034
时产 生的数据,可见每一个内存行缓存的数据均未被使用完,此时每个内存行缓存的数据还不 能清除。结合图10可知,对于硬件内存模型而言,在算子A和算子B的多个执行实例按照当前 执行顺序运行过程中,硬件内存模型最多需要缓存的算子A与算子B之间的输入输出数据的 数据量为24,即算子A和算子B对应的输入输出数据的当前最大缓存量为24。
在一些实施例中,在步骤S13中,利用目标算法对预设数量中每个多面体模型中多个执行实例的当前执行顺序进行迭代优化,可以进一步包括:在预设数量的算子对应的输入输出数据的当前最大缓存量不满足目标条件的情况下,利用目标算法对预设数量中每个多面体模型中多个执行实例的当前执行顺序进行迭代优化。其中,目标条件可以包括:预设数量的算子对应的输入输出数据的当前最大缓存量小于预定阈值。
在预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件的情况下,则可以不对预设数量的多面体模型作进一步处理。
图11为图1中步骤S13的一种具体实施方式的流程示意图,在一些实施例中,目标算法包括线性变换函数,参见图11,在步骤S13中,利用目标算法对预设数量中每个多面体模型中多个执行实例的当前执行顺序进行迭代优化,可以进一步包括:步骤S131~步骤S134。
步骤S131、针对每个多面体模型,根据线性变换函数对该多面体模型进行线性变换处理,以更新该多面体模型中多个执行实例的当前执行顺序。
在一些实施例中,线性变换函数包括:
Figure 885337DEST_PATH_IMAGE035
,其中,
Figure 341726DEST_PATH_IMAGE036
表示该多面体模型中多 个执行实例在参考坐标空间中的位置坐标,
Figure 972559DEST_PATH_IMAGE037
表示该多面体模型对应的线性变换函数的线 性变换参数,
Figure 830794DEST_PATH_IMAGE038
表示线性变换处理后的该多面体模型中多个执行实例在参考坐标空间中的 位置坐标。其中,
Figure 380724DEST_PATH_IMAGE037
可以是一个矩阵,矩阵中每个元素对应多面体模型中一个点的位置坐 标。
在步骤S131中,通过上述线性变换函数对多面体模型中每个点(执行实例)的位置坐标进行线性变换,改变多面体模型中每个点的位置坐标,从而改变多面体模型中每个点的执行顺序,即更新该多面体模型中多个执行实例的当前执行顺序。
在本公开实施例中,当存在多个待优化的多面体模型时,不同多面体模型的维度、执行实例数量可能相同,也可能不同,相应的,不同多面体模型中执行实例的执行顺序可能相同也可能不同。相应的,当存在多个待优化的多面体模型时,不同多面体模型可以对应配置不同的线性变换参数,也可以配置相同的线性变换参数,基于相同或不同的线性变换参数对不同多面体模型进行线性变换处理。
可以理解的是,对于具有数据依赖关系的两个算子所对应的多面体模型,在线性变换处理前后,不同算子的不同执行实例之间的数据依赖性保持不变,改变的是执行实例本身的执行顺序。
步骤S132、根据硬件内存模型的存储粒度,获取预设数量的多面体模型中多个执行实例按照当前执行顺序执行时,预设数量的算子对应的输入输出数据的当前最大缓存量。
关于步骤S132的描述可参见上述步骤S21的描述,此处不再赘述。
步骤S133、在预设数量的算子对应的输入输出数据的当前最大缓存量不满足目标条件的情况下,更新线性变换函数的线性变换参数,并返回步骤S131。
在一些实施例中,在步骤S133中,更新线性变换函数的线性变换参数,可以进一步包括:基于梯度下降法更新线性变换函数的线性变换参数。
通过梯度下降法进行线性变换参数的迭代更新,从而实现对多面体模型中多个执行实例的执行顺序的迭代优化,从而使得迭代优化的预设数量的多面体模型所对应的预设数量的算子的输入输出数据的最大缓存量能够快速达到满足目标条件。
其中,目标条件可以包括:预设数量的算子对应的输入输出数据的当前最大缓存量小于预定阈值,或者,预设数量的算子对应的输入输出数据的当前最大缓存量在迭代优化中达到收敛状态,收敛状态是指预设数量的算子对应的输入输出数据的当前最大缓存量在迭代优化过程中达到最小值后将不再进一步降低。
需要说明的是,本公开实施例还可以采用其他方法进行线性变换参数的迭代更新,而不仅限于采用梯度下降法。
步骤S134、在预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件的情况下,将在满足目标条件时的预设数量的多面体模型作为预设数量的目标多面体模型。
在步骤S134中,当预设数量的算子对应的输入输出数据的当前最大缓存量小于预设阈值,或者预设数量的算子对应的输入输出数据的当前最大缓存量达到收敛状态时,固定在满足目标条件时的多面体模型中多个执行实例的执行顺序,并将该多面体模型作为目标多面体模型,从而得到优化后的预设数量的目标多面体模型。
在一些实施例中,在更新线性变换函数的线性变换参数之后,返回步骤S131之前,该算子处理方法还包括:判断当前迭代轮次是否达到迭代轮次阈值;若判断未达到迭代轮次阈值,则返回步骤S131。
若判断已达到迭代轮次阈值,则迭代过程中获取的最大缓存量的最小值所对应的预设数量的多面体模型作为目标多面体模型。其中,迭代轮次阈值可以根据实际需要进行设置,本公开实施例对此不作特殊限制。
图12为本公开实施例提供的另一种算子处理方法的流程示意图,在一些实施例中,参见图12,在得到优化后的预设数量的目标多面体模型之后,即在步骤S13之后,该算子处理方法还可以进一步包括:步骤S14~步骤S16。
步骤S14、根据目标多面体模型,生成对应的目标算子。
在步骤S14中,基于目标多面体模型中多个执行实例的执行顺序,生成对应的目标算子。
步骤S15、基于目标算子,更新神经网络计算图。
在步骤S15中,将神经网络计算图中目标多面体模型对应的算子替换成对应的目标算子,从而更新神经网络计算图。
步骤S16、将更新后的神经网络计算图编译至计算设备执行。
其中,计算设备可以包括众核系统,众核系统可以包括一个或多个众核芯片,众核芯片是基于存算一体的众核架构的芯片,每个众核芯片可以包括多个物理核(也称为计算核),每个物理核均具有独立内存。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了一种算子处理装置、电子设备、计算机可读存储介质,上述算子处理装置用于实现本公开提供的算子处理方法,上述电子设备及计算机可读存储介质均可用来实现本公开提供的算子处理方法,相应技术方案和描述和参见方法部分的相应记载,此处不再赘述。
图13为本公开实施例提供的一种算子处理装置的组成框图,参照图13,本公开实施例提供了一种算子处理装置100,该算子处理装置100包括:映射单元101、确定单元102和迭代优化单元103。
映射单元101,用于将神经网络计算图中预设数量的算子中的每个算子映射为一个多面体模型,多面体模型包括对应的算子中的多个执行实例,预设数量为神经网络计算图中全部或部分算子的数量。
确定单元102,用于将预设数量的多面体模型置于同一参考坐标空间中,并确定每个多面体模型中多个执行实例的当前执行顺序。
迭代优化单元103,用于利用目标算法对预设数量中每个多面体模型中多个执行实例的当前执行顺序进行迭代优化,以使预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件,从而得到优化后的预设数量的目标多面体模型。
在一些实施例中,该算子处理装置100还包括获取单元,获取单元用于根据硬件内存模型的存储粒度,获取预设数量中每个多面体模型中多个执行实例按照当前执行顺序执行时,预设数量的算子对应的输入输出数据的当前最大缓存量。迭代优化单元103用于在预设数量的算子对应的输入输出数据的当前最大缓存量不满足目标条件的情况下,利用目标算法对预设数量中每个多面体模型中多个执行实例的当前执行顺序进行迭代优化。
在一些实施例中,该算子处理装置100还包括:生成单元、更新单元和编译单元。
其中,生成单元用于根据目标多面体模型,生成对应的目标算子;更新单元用于基于目标算子,更新神经网络计算图;编译单元用于将更新后的神经网络计算图编译至计算设备执行。
本公开实施例所提供算子处理装置用于实现上述实施例提供的算子处理方法,具体描述可参见上述实施例的算子处理方法中相关的描述,此处不再赘述。
图14为本公开实施例提供的一种电子设备的组成框图,参照图14,本公开实施例提供了一种电子设备,该电子设备包括:至少一个处理器51;至少一个存储器52,以及一个或多个I/O接口53,连接在处理器51与存储器52之间;其中,存储器52存储有可被至少一个处理器51执行的一个或多个计算机程序,一个或多个计算机程序被至少一个处理器51执行,以使至少一个处理器51能够执行上述的算子处理方法。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的算子处理方法。其中,计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述的算子处理方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读程序指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、闪存或其他存储器技术、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读程序指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里所描述的计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。

Claims (10)

1.一种神经网络计算图的算子处理方法,其特征在于,包括:
将神经网络计算图中预设数量的算子中的每个算子映射为一个多面体模型,所述多面体模型包括对应的所述算子中的多个执行实例;所述预设数量为所述神经网络计算图中全部或部分算子的数量;
将所述预设数量的所述多面体模型置于同一参考坐标空间中,并确定每个所述多面体模型中所述多个执行实例的当前执行顺序;
利用目标算法对所述预设数量中每个所述多面体模型中所述多个执行实例的当前执行顺序进行迭代优化,以使所述预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件,从而得到优化后的所述预设数量的目标多面体模型。
2.根据权利要求1所述的方法,其特征在于,在所述利用目标算法对所述预设数量中每个所述多面体模型中多个执行实例的当前执行顺序进行迭代优化之前,所述方法还包括:
根据硬件内存模型的存储粒度,获取预设数量的所述多面体模型中多个执行实例按照所述当前执行顺序执行时,所述预设数量的算子对应的输入输出数据的当前最大缓存量;
所述利用目标算法对所述预设数量中每个所述多面体模型中多个执行实例的当前执行顺序进行迭代优化,包括:
在所述预设数量的算子对应的输入输出数据的当前最大缓存量不满足目标条件的情况下,利用目标算法对所述预设数量中每个所述多面体模型中多个执行实例的当前执行顺序进行迭代优化。
3.根据权利要求1所述的方法,其特征在于,所述目标算法包括线性变换函数,所述利用目标算法对所述预设数量中每个所述多面体模型中多个执行实例的当前执行顺序进行迭代优化,包括:
针对每个多面体模型,根据所述线性变换函数对所述多面体模型进行线性变换处理,以更新所述多面体模型中所述多个执行实例的当前执行顺序;
根据硬件内存模型的存储粒度,获取所述预设数量的所述多面体模型中多个执行实例按照所述当前执行顺序执行时,所述预设数量的算子对应的输入输出数据的当前最大缓存量;
在所述预设数量的算子对应的输入输出数据的当前最大缓存量不满足目标条件的情况下,更新所述线性变换函数的线性变换参数,并返回所述根据所述线性变换函数对所述多面体模型进行线性变换处理的步骤;
在所述预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件的情况下,将在满足目标条件时的所述预设数量的多面体模型作为所述预设数量的目标多面体模型。
4.根据权利要求3所述的方法,其特征在于,所述线性变换函数包括:
Figure 591575DEST_PATH_IMAGE001
,其中,
Figure 26098DEST_PATH_IMAGE002
表示所述多面体模型中所述多个执行实例在所述参考坐标空间中的位 置坐标,
Figure 738840DEST_PATH_IMAGE003
表示所述多面体模型对应的线性变换函数的线性变换参数,
Figure 99151DEST_PATH_IMAGE004
表示线性变换处理 后的所述多面体模型中多个执行实例在参考坐标空间中的位置坐标。
5.根据权利要求3所述的方法,其特征在于,所述更新所述线性变换函数的线性变换参数,包括:
基于梯度下降法更新所述线性变换函数的线性变换参数。
6.根据权利要求1所述的方法,其特征在于,在得到优化后的所述预设数量的目标多面体模型之后,所述方法还包括:
根据所述目标多面体模型,生成对应的目标算子;
基于所述目标算子,更新所述神经网络计算图;
将更新后的所述神经网络计算图编译至计算设备执行。
7.根据权利要求1所述的方法,其特征在于,在确定每个所述多面体模型中所述多个执行实例的当前执行顺序之前,所述方法还包括:设定参考坐标空间中所述多个执行实例的执行维度顺序,所述执行维度顺序表征所述参考坐标空间中每个坐标维度对应的执行顺序,以及每个坐标维度上的坐标对应的执行顺序;
所述确定每个所述多面体模型中所述多个执行实例的当前执行顺序,包括:基于所述执行维度顺序,确定所述多面体模型中每个位置坐标对应的所述执行实例的当前执行顺序。
8.一种算子处理装置,其特征在于,包括:
映射单元,用于将神经网络计算图中预设数量的算子中的每个算子映射为一个多面体模型,所述多面体模型包括对应的所述算子中的多个执行实例;所述预设数量为所述神经网络计算图中全部或部分算子的数量;
确定单元,用于将所述预设数量的所述多面体模型置于同一参考坐标空间中,并确定每个所述多面体模型中所述多个执行实例的当前执行顺序;
迭代优化单元,用于利用目标算法对所述预设数量中每个所述多面体模型中所述多个执行实例的当前执行顺序进行迭代优化,以使所述预设数量的算子对应的输入输出数据的当前最大缓存量满足目标条件,从而得到优化后的所述预设数量的目标多面体模型。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任一项所述的算子处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时实现如权利要求1-7中任一项所述的算子处理方法。
CN202211014065.2A 2022-08-23 2022-08-23 算子处理方法及装置、电子设备、计算机可读存储介质 Active CN115081598B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211014065.2A CN115081598B (zh) 2022-08-23 2022-08-23 算子处理方法及装置、电子设备、计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211014065.2A CN115081598B (zh) 2022-08-23 2022-08-23 算子处理方法及装置、电子设备、计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN115081598A true CN115081598A (zh) 2022-09-20
CN115081598B CN115081598B (zh) 2022-12-06

Family

ID=83244093

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211014065.2A Active CN115081598B (zh) 2022-08-23 2022-08-23 算子处理方法及装置、电子设备、计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN115081598B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116757284A (zh) * 2022-09-26 2023-09-15 荣耀终端有限公司 模型推理方法、设备、存储介质和程序产品
CN116775274A (zh) * 2023-03-24 2023-09-19 美的集团(上海)有限公司 内存优化方法、装置、设备、产品、存储介质和芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111667060A (zh) * 2019-03-08 2020-09-15 上海寒武纪信息科技有限公司 深度学习算法的编译方法、装置及相关产品
CN113703775A (zh) * 2021-08-31 2021-11-26 上海阵量智能科技有限公司 一种编译方法、装置、设备及存储介质
CN113825978A (zh) * 2019-04-12 2021-12-21 赛峰电子与防务公司 用于定义路径的方法
CN114816762A (zh) * 2022-05-25 2022-07-29 北京灵汐科技有限公司 映射的方法、电子设备、计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111667060A (zh) * 2019-03-08 2020-09-15 上海寒武纪信息科技有限公司 深度学习算法的编译方法、装置及相关产品
CN113825978A (zh) * 2019-04-12 2021-12-21 赛峰电子与防务公司 用于定义路径的方法
US20220170751A1 (en) * 2019-04-12 2022-06-02 Safran Electronics & Defense Method for defining a path
CN113703775A (zh) * 2021-08-31 2021-11-26 上海阵量智能科技有限公司 一种编译方法、装置、设备及存储介质
CN114816762A (zh) * 2022-05-25 2022-07-29 北京灵汐科技有限公司 映射的方法、电子设备、计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SENSEPARROTS: "多面体模型编译:以优化简单的两层循环代码为例", 《知乎:HTTPS://ZHUANLAN.ZHIHU.COM/P/515828403》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116757284A (zh) * 2022-09-26 2023-09-15 荣耀终端有限公司 模型推理方法、设备、存储介质和程序产品
CN116775274A (zh) * 2023-03-24 2023-09-19 美的集团(上海)有限公司 内存优化方法、装置、设备、产品、存储介质和芯片

Also Published As

Publication number Publication date
CN115081598B (zh) 2022-12-06

Similar Documents

Publication Publication Date Title
CN115081598B (zh) 算子处理方法及装置、电子设备、计算机可读存储介质
US20240104378A1 (en) Dynamic quantization of neural networks
CN110689115B (zh) 神经网络模型处理方法、装置、计算机设备及存储介质
US10459727B2 (en) Loop code processor optimizations
CN110377340B (zh) 运算方法、装置及相关产品
US20200125926A1 (en) Dynamic Batch Sizing for Inferencing of Deep Neural Networks in Resource-Constrained Environments
CN111966361B (zh) 用于确定待部署模型的方法、装置、设备及其存储介质
KR102585470B1 (ko) 정보 처리장치, 정보 처리방법, 비일시적인 컴퓨터 판독가능한 기억매체
CN114078195A (zh) 分类模型的训练方法、超参数的搜索方法以及装置
CN115099399A (zh) 神经网络模型部署方法、装置、电子设备及存储介质
US20190114260A1 (en) System, method and computer program product for accelerating iterative graph algorithms by memory layout optimization
CN114626516A (zh) 一种基于对数块浮点量化的神经网络加速系统
CN115034358A (zh) 神经网络计算图的处理方法及处理装置
US9405516B2 (en) Recursive expression simplification
US20210224033A1 (en) Operation device and operation method
US20210217204A1 (en) Neural network model compression with selective structured weight unification
KR20210083974A (ko) 근사 함수를 이용한 연산 장치 및 방법
WO2017116927A1 (en) Zero cache memory system extension
US20210232891A1 (en) Neural network model compression with structured weight unification
US20210201157A1 (en) Neural network model compression with quantizability regularization
CN110782017B (zh) 用于自适应调整学习率的方法和装置
CN117992242B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN118093143B (zh) 大语言模型解码阶段的数据调度方法和装置
CN110378471B (zh) 运算方法、装置及相关产品
KR102661026B1 (ko) 동적 리소스 적응형 딥러닝 모델 추론 방법 및 상기 방법을 수행하는 딥러닝 모델 추론 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant