CN115357356A - 基于计算图优化的算子间并行调度方法、设备和介质 - Google Patents
基于计算图优化的算子间并行调度方法、设备和介质 Download PDFInfo
- Publication number
- CN115357356A CN115357356A CN202210966814.5A CN202210966814A CN115357356A CN 115357356 A CN115357356 A CN 115357356A CN 202210966814 A CN202210966814 A CN 202210966814A CN 115357356 A CN115357356 A CN 115357356A
- Authority
- CN
- China
- Prior art keywords
- operator
- scheduling
- operators
- parallel
- replacement
- 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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请属于计算机技术领域,具体涉及一种基于计算图优化的算子间并行调度方法、设备和介质。其中方法包括:将待调度的卷积神经网络转换为计算图;将计算图分割为多个不相交的子图;通过动态模板调度算法对子图内的算子进行并行调度,并在调度过程中针对子图中的算子选择算子替换或算子并行的调度策略,得到各子图的最优调度方式;基于各个子图的最优调度方式,通过子图拼接得到计算图的整体调度策略,根据整体调度策略执行卷积神经网络中算子的运算。该方法可大幅度减少搜索范围,提高了算法收敛时间,在保证全局最优解的情况下,对子调度进行了充分的利用,为特定硬件设备输出并行化调度,提高了神经网络模型的调度推理速度和硬件资源利用率。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种基于计算图优化的算子间并行调度方法。
背景技术
多算子并行化是将不同阶段的算子放在不同的线程中进行调度。通过采用一系列优化算法,可有效联合算子内与算子间的并行。现有的优化算法主要是利用启发式算法实现多个神经网络算子的并行调度执行。例如,通过一种贪婪策略,即直接在硬件设备上执行所有可用的深度神经网络算子,以最大限度地提高资源利用率;或者通过一种新的算子间动态规划调度算法,在低搜索成本下去寻找高度优化的调度,使得算子间的调度推理延迟得到进一步的优化;再或者通过引入SOAP,从样本(Sample)、运算符(Operator)、属性(Attribute)以及参数(Parameter)四个维度中并行化卷积神经网络的策略,这是一个更加全面的深度神经网络并行化策略搜索空间,使用深度优先搜索来探索空间,其搜索模型最佳策略分别需要0.8和18小时。
以上方法均是应用不同的启发式算法寻找最优解,其求解结果不一定是全局范围内的最优解。其次,使用基于机器学习与动态规划的方法虽然对搜索空间进行扩大可以得到近似的全局最优解,但在其算法对整个模型架构进行搜索过程中没有对公共子调度充分利用,难以利用历史的优化结果;而且一次性对整个计算图进行优化,在模型规模较大时,又会带来算法收敛时间长的问题。
发明内容
(一)要解决的技术问题
鉴于现有技术的上述缺点、不足,本申请提供一种基于计算图优化的算子间并行调度方法、设备和介质。
(二)技术方案
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请实施例提供一种基于计算图优化的算子间并行调度方法,该方法包括:
将待调度的卷积神经网络转换为计算图;
将所述计算图分割为多个不相交的子图,所述子图中包含算子的数量为并行过程中一个线程可最大并行的算子数量;
通过动态模板调度算法对所述子图内的算子进行并行调度,并在调度过程中针对子图中的算子选择算子替换或算子并行的调度策略,得到各子图的最优调度方式;其中,所述动态模板调度算法在优化调度搜索时,保存当前调度的最优子调度供后续调度搜索时调用;
基于各个子图的最优调度方式,通过子图拼接得到所述计算图的整体调度策略,根据所述整体调度策略执行所述卷积神经网络中算子的运算。
可选地,所述算子替换包括:
基于算子类型对所述子图中的算子进行算子替换;和/或
根据预设的卷积核尺寸约束规则,对所述子图中的算子进行算子替换。
可选地,所述卷积核尺寸约束规则包括:
将同一子图中最大的卷积核尺寸作为替换后卷积核尺寸,针对子图中每个卷积算子,将卷积核尺寸小于所述替换后卷积核尺寸的卷积算子的卷积核尺寸扩充为所述替换后卷积核尺寸。
可选地,基于算子类型对所述子图中的算子进行算子替换,包括:
将源算子替换为相同类型的目标算子,所述目标算子的参数和权重基于源算子中的参数和权重确定;
当源算子为通用符节点时,将源算子替换为任一基本的神经网络算子。
可选地,当算子为卷积算子时,所述目标算子的参数和权重基于源算子中的参数和权重确定的方法,包括:
所述目标算子的卷积核尺寸、卷积步长、特征图填充宽度与所述源算子相等;
所述目标算子的输出通道大小为两个源算子的输出通道之和;
所述目标算子的权重为将两个源算子中的权重信息做连接操作。
可选地,通过动态模板调度算法对所述子图内的算子进行并行调度,包括:
对算子集的子集时延初始化为无穷大,调度策略为空,其中子集为子图算子构成的集合;
对子集合中的算子进行遍历,采用动态规划算法对子图进行调度,得到子集的最小时延和最优调度方式;其中,在调度搜索过程中:
将子集的调度延迟、调度方式和子集的算子列表保存为模板,在后续搜索过程中,将当前子集算子列表与模板匹配,若匹配成功,则将模板中的调度延迟、调度方式作为当前子集的调度延迟和调度方式;
分别计算算子替换的延迟与算子并行的延迟,选择当前延迟较小的调度方式作为当前搜索得到的调度方式。
可选地,将所述计算图分割为多个不相交的子图,包括:
采用基于最大块的计算图拆分算法,递归地将所述计算图分割为子图。
可选地,在根据优化后的计算图得到待调度的卷积神经网络的调度方式之前还包括:围绕每个拆分点执行局部回溯搜索,以获得跨越拆分点的算子替换。
第二方面,本申请实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上第一方面任一项所述的基于计算图优化的算子间并行调度方法的步骤。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上第一方面任一项所述的基于计算图优化的算子间并行调度方法的步骤。
(三)有益效果
本申请的有益效果是:本申请提出了一种基于计算图优化的算子间并行调度方法、电子设备和介质,首先基于最大块的计算图拆分算法,递归地将原始计算图分割为较小的子图,通过子图的划分,大幅度减少搜索范围。
其次,针对神经网络计算图的算子特性,提出算子替换与算子并行策略调度策略,在模型调度的过程中,对划分后的子图选择当前的最优调度方式;通过替换策略将算子数量减少,从而算法搜索优化时间得到较大提升,对于结构复杂的网络模型更为适用,总体上极大程度的提高了算法收敛时间。
最后,结合算子内与算子间的并行性,提出基于动态模板的算子间并行调度算法对整个模型架构进行搜索过程中,在保证全局最优解的情况下,对子调度进行了充分的利用,为特定硬件设备输出并行化调度,提高了神经网络模型的调度推理速度和硬件资源利用率。
附图说明
本申请借助于以下附图进行描述:
图1为本申请一个实施例中的基于计算图优化的算子间并行调度方法流程示意图;
图2为本申请另一个实施例中的算子替换示例图;
图3为本申请另一个实施例中的算子替换与IPS调度算法前后模型调度执行顺序的变化示例图;
图4为本申请另一个实施例中的算子调度推理延迟示例图;
图5为本申请另一个实施例中的Inception_v3模型不同Batch Size的调度推理延迟示例图;
图6为本申请再一个实施例中的电子设备的架构示意图。
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。可以理解的是,以下所描述的具体的实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合;为了便于描述,附图中仅示出了与发明相关的部分。
以下通过各个实施例对本发明方法进行具体说明。
实施例一
图1为本申请一个实施例中的基于计算图优化的算子间并行调度方法流程示意图,如图1所示,本实施例的基于计算图优化的算子间并行调度方法包括:
S10、将待调度的卷积神经网络转换为计算图;
S20、将所述计算图分割为多个不相交的子图,所述子图中包含算子的数量为并行过程中一个线程可最大并行的算子数量;
S30、通过动态模板调度算法对所述子图内的算子进行并行调度,并在调度过程中针对子图中的算子选择算子替换或算子并行的调度策略,得到各子图的最优调度方式;其中,所述动态模板调度算法在优化调度搜索时,保存当前调度的最优子调度供后续调度搜索时调用;
S40、基于各个子图的最优调度方式,通过子图拼接得到计算图的整体调度策略,根据整体调度策略执行卷积神经网络中算子的运算。
本实施例的基于计算图优化的算子间并行调度方法,可大幅度减少搜索范围,提高了算法收敛时间,在保证全局最优解的情况下,对子调度进行了充分的利用,为特定硬件设备输出并行化调度,提高了神经网络模型的调度推理速度和硬件资源利用率。
为了更好地理解本发明,以下对本实施例中的各步骤进行展开说明。
本实施例S20中,通过采用基于最大块的计算图拆分算法,递归地将所述计算图分割为子图。
其中,最大块定义为在并行过程中一个线程可最大并行算子数量。
本实施例S30中,通过动态模板调度算法对所述子图内的算子进行并行调度,包括:
对算子集的子集时延初始化为无穷大,调度策略为空,其中子集为子图算子构成的集合;
对子集合中的算子进行遍历,采用动态规划算法对子图进行调度,得到子集的最小时延和最优调度方式;其中,在调度搜索过程中:
将子集的调度延迟、调度方式和子集的算子列表保存为模板,在后续搜索过程中,将当前子集算子列表与模板匹配,若匹配成功,则将模板中的调度延迟、调度方式作为当前子集的调度延迟和调度方式;
分别计算算子替换的延迟与算子并行的延迟,选择当前延迟较小的调度方式作为当前搜索得到的调度方式。
本实施例S30中,算子替换包括:
基于算子类型对所述子图中的算子进行算子替换;和/或
根据预设的卷积核尺寸约束规则,对所述子图中的算子进行算子替换。
具体地,基于算子类型对所述子图中的算子进行算子替换,包括:
将源算子替换为相同类型的目标算子,所述目标算子的参数和权重基于源算子中的参数和权重确定;
当源算子为通用符节点时,将源算子替换为基本的神经网络算子,例如卷积运算、池化运算、激活函数等。
具体地,卷积核尺寸约束规则可以包括:
将同一子图中最大的卷积核尺寸作为替换后卷积核尺寸,针对子图中每个卷积算子,将卷积核尺寸小于替换后卷积核尺寸的卷积算子的卷积核尺寸扩充为替换后卷积核尺寸。
例如,卷积大小为3x3x256与1x1x256的运算符做替换操作,将1x1x256的卷积源算子首先扩充为3*3*256的算子。按照替换规则进行替换之后,合并得到的新的目标算子为3*3*512。
实施例二
CNN网络可以抽象为计算图G=(V,E),CNN计算图是有向无环图,其中V表示算子集合,而E表示算子之间的边集合,边代表算子之间的数据依赖。图2为本申请另一个实施例中的算子替换示例图,图2中(a)为源算子示例图,(b)为目标算子示例图。图2中(a)即一个简单的卷积神经网络对应的计算图。
S1、采用基于最大块的模型拆分算法对模型进行拆分。
现今许多最先进神经网络模型太大,无法通过搜索直接对整个图进行优化。本实施例使用基于最大块的模型拆分算法递归地将计算图分割划分为较小的不相交子图。在本实施例中,最大块定义为在并行过程中一个线程可最大并行算子数量,在本实施例中,每个块中的算子最大数量为50,即Max_part_size=50。经过拆分的子图可以使用并行优化策略进行调度。
需要说明的是,因为算子替换不能在任何两个子块上执行,因此拆分的目标是最小化跨越两个子图的算子替换的数量,对于每个算子Si∈G,将cap(Si)定义为映射到算子的至少一个输入边和一个输出边的算子替换数。如果使用运算符split拆分图形,则禁用算子替换。s
通过使用cap(Si)作为每个算子的权重,将模型拆分问题映射为最小点割问题。
算法的输入为初始化的计算图。输出为拆分后的计算图。首先,对计算图的算子数量进行判定,将最大并行算子数量作为划分的条件。其次,分割的目的是返回最小化子图的算子点切割,对每个算子进行判断,如果某G1的算子节点Si能够到达P,则将此集合的算子赋给G1,将原始计算图减去G1得到计算子图G2。最后对模型计算图进行递归,将子图的算子集合作为输入参数传入。最终得到计算图的划分后的子图块。
S2、算子替换。
算子替换策略:每次替换由源算子和目标算子组成,源算子可以映射到模型计算图中的特定子算子,目标算子定义如何创建新的子算子来替换映射算子。之后与算子并行时延进行比较,选择时延最短的方式。
源算子。源算子定义了替换的有效算子的结构。源算子中的每个节点都与一个类型关联,并且只能映射到同一类型的运算符。源算子还可以包括通用符节点,当运算符的类型不影响替换过程,并且源算子在描述多个相似的替换场景时,通用节点非常有用。除了类型约束之外,源算子还可以在一个或多个算子上包含其他卷积大小约束,以进一步限制替换。
目标算子。目标算子描述了如何构造一个新的算子来替换映射的算子。对于每个新创建的算子,目标算子定义了如何使用源算子中的参数和权重设置参数和计算权重。
当算子为卷积算子时,目标算子的参数和权重基于源算子中的参数和权重确定的方法,包括:
目标算子的卷积核尺寸、卷积步长、特征图填充宽度与源算子相等;
目标算子的输出通道大小为两个源算子的输出通道之和;
目标算子的权重为将两个源算子中的权重信息做连接操作。
目标算子的外部边应与源算子的每一个外部边相对应,任何最初连接到源算子中映射算子的外部算子现在都应连接到目标算子中相应的算子。
请继续参阅图2。如图2所示,第一步将Conv2与Conv3算子替换为Conv4算子,第二步将Conv6算子与add算子替换为Conv7算子。在Conv4算子后为了保持算子间依赖关系,会将替换后的算子进行分离操作。
S3、通过动态模板调度算法来优化每个子图。
在优化调度搜索的过程中,使用Template[]保存当前调度过程中的子调度,因为一组子图的调度集合是变化的,因此在搜索优化的过程中,会根据计算的时间延迟保存更新当前调度的最优子调度,后续调度搜索时,会直接使用保存的模板进行替换,大大减少了模型调度的优化搜索时间。
S4、将优化的子图拼接在一起,以构成一个完整的计算图;围绕每个拆分点执行局部回溯搜索,以获得跨越拆分点的算子替换。
最终确定计算图的整体调度策略,根据整体调度策略执行卷积神经网络中算子的运算。
以下给出调度算法的一个实例。
Algorithm 1 Parallel scheduling based on dynamic template.
Input:计算图G
Output:对于计算图G的schedule
首先,对算子集的子集时延初始化为无穷大,调度策略为空。
其次,用V表示计算图中的所有算子,进行子集时延的判断,如果子集时延不为无穷大,则返回子集的时延。对子集合中的算子进行遍历,采用动态规划算法对子图进行调度,在调度过程中,将子集合的调度延迟进行保存记录。后续搜索过程中,如果当前子集合算子列表等于保存记录的算子列表,则进行直接赋值,并将其并行策略进行绑定。在动态规划调度搜索过程中,会根据计算的Times值,选择当前最优策略。首先会根据之前定义的策略选择当前算子能否进行算子替换操作,如果判断为否,则将赋值为无限大,意为不可替换。反之,则将当前算子替换的延迟返回给18-21行,IPS会根据与返回当前算子集的最优延迟与策略。22行是本文定义的Cost Model,进行动态规划式的探索剩余算子的调度延迟,目的是最小化调度子问题(S-Si-1)的调度延迟。23-26行,会依据定义的Cost Model得出的LS′自动更新当前最优的调度时间与策略,最终返回最优调度的延迟与策略。
以下以Inception_v3模型中的一个Inception模块为例来进一步说明采用本申请中的基于计算图优化的算子间并行调度方法进行调度的实现过程,以及与其他调度方法进行并行调度的模型延迟对比。
使用基于最大块的模型拆分算法后,得到以Inception模块为子图的待调度模块。图3为本申请另一个实施例中的算子替换与IPS调度算法前后模型调度执行顺序的变化示例图;图3中(a)为调度优化前的算子执行顺序图,(b)为IPS优化后的算子执行顺序图。如图3中(a)所示,节点(a,b,h,i,g)表示卷积大小为3x3的卷积算子,节点(c,f)表示卷积大小为3x1的卷积算子,节点(d,j)表示卷积大小为1x3的卷积算子,节点(e)为模型的池化算子。因为不同的后端IPS算法对于算子处理的方式是不同的。本实例中以GPU为NVIDIA GeForceRTX 2080ti为例,IPS调度算法使用分Pro调度方法,如图3中(b)所示,将节点e调度划分为Pro1,表示在此过程中,节点e单独占用一个GPU线程进行调度,以此类推,在pro4时,IPS会根据返回的延迟对比算子间并行与算子替换的性能,得到算子替换可得到相对较优的延迟。于是将节点d卷积算子扩充到3x3大小,将原来的c与d节点进行替换,得到替换后的算子[c&d],最终使得整个计算图的调度延迟最小。
将采用本申请的方法与顺序调度、贪心调度进行比较。顺序调度按照模型计算图的拓扑形状依次去执行每一个算子。贪心调度是将当前状态下可以并行执行的算子全部放在同一个过程中去执行。而本申请的方法是依据定义的算子替换与动态模板调度算法,将计算图中的算子进行算子间的并行执行。三种调度方式都在同一个执行引擎上进行执行,以便最终结果的比较。
首先比较了Batch Size为1的情况下不同模型下不同调度方式的推理延迟。本实例中采用6次调度取得其平均值,最终各模型的延迟实例结果如图4所示。图4为本申请另一个实施例中的算子调度推理延迟示例图,图4中,纵轴为延迟时间,横轴分别是network、VGG_13、SqueezeNet、VGG_19、Inception_v3网络模型分别采用顺序调度(sequential)、贪心调度(greedy)、Tensor RT深度学习推理软件开发工具包、IPS算法,从图4中可以看出,相比于传统的动态规划调度,本实施例使用基于动态模板的算子间并行调度,使得寻找优化调度的收敛时间大大减少。
其次,针对不同Batch Size大小比较Inception_v3模型的调度推理延迟。实验结果是进行了10次实验取得的平均延迟时间对比。图5为本申请另一个实施例中的Inception_v3模型不同Batch Size的调度推理延迟示例图。如图5所示,算法在不同BatchSize下都远低于其他两种调度方式。贪心调度在大多数情况下表现出比顺序调度更优的调度延迟。然而在Batch Size为8时,实验得到的贪心延迟最大,通过分析Inception_v3每个Inception块的调度延迟可知,当Batch Size为8时,贪心算法在Pro前期出现了资源的争用,后续的过程又出现资源利用不足的情况,因此最终导致贪心延迟高于顺序调度。总之,IPS普遍意义上都低于其他两种调度方式。
采用本实施例的方法和顺序调度算法对Inception_v3网络模型在不同硬件后端的并行情况进行实验,实验结果如表1所示。表1为不同硬件后端Inception_v3分块延迟统计表。
表1
由表1可以看出,对于Inception_v3模型,本实施例的模型拆分算法都将其拆分为13个子块。对于顺序调度,模型的调度资源主要用于Inception模块,即为子块11(本文定义的块编号从0开始)。而对于设计的算子间调度算法,可针对不同的执行后端,根据模型调度时资源的最大可用情况,对多算子的并行数量与方式做出针对性的调整。如K80最大延迟用于第0的子块,即为将卷积与池化算子逐个执行。而RTX 2080ti与RTX 3090可一次并行至少两个卷积算子,进而大幅度减少调度的时延,将其主要资源用于Inception模块的推理调度加速。从以上实验结果可以证明本申请提出的算法可在不同的硬件后端做出针对性的并行设计。
此外,还基于现有的深度学习库cuDNN来运行,基于定义的成本函数最小化成本进行了实验。将计算的延迟作为优化的目标。实验环境设置:Python 3.7,CUDA为11.1,cuDNN版本为8.0.5,ubuntu版本为18.04,CPU为6x Xeon E5-2678V3,GPU为NVIDIA GeForce RTX2080ti。表2为神经网络模型结构参数表,模型结构如表2所示。
表2
基于现今的底层加速库cuDNN实现算子内的加速,设计了保证并行执行延迟最小的调度算法,实现了算子内与算子间并行的联合优化。实验表明,设计算法比现有的顺序执行方式可达1.6x的加速,使得相较于Tensor RT系统的性能提高1.18到1.86倍的加速。本申请提出的算法可广泛用于神经网络模型并行体系结构研究中。
对于神经网络的推理,模型优化延迟占比也是其重要的一个环节。算法在8分钟内得到与其他文献相同的结果,相比于启发式枚举搜索,因为实验设置了每个过程中最多执行算子数量g=9与每一个组中最大算子个数s=4,因此可大幅度减少搜索范围。而对于结构复杂的模型如RandWire模型,本文替换策略将算子数量减少,因此算法搜索优化时间得到较大提升,可见本申请提交的算法对于结构复杂的网络模型更为适用,总体上极大程度的提高了算法收敛时间。具体效果如表3所示。表3为不同网络的优化收敛时间表。
表3
其中,算法1使用改进的机器学习算法进行搜索,相比启发式得到更快的收敛效果;算法2使用A、S、O和P表示神经网络卷积并行策略,从更全面的角度对其搜索过程进行了评估;算法3使用了原始初始的动态规划算法进行了调度。
由此可见,本实施例的方法针对现今神经网络中计算图的复杂性,结合算子内与算子间的并行性,采用基于动态模板的算子间调度算法来探索潜在的调度空间,在保证全局最优解的情况下,对子调度进行了充分的利用,为特定硬件设备输出并行化调度,提高了神经网络模型的调度推理速度和硬件资源利用率。
实施例三
本申请第二方面通过实施例三提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上实施例中任意一项所述的基于计算图优化的算子间并行调度方法的步骤。
图6为本申请再一个实施例中的电子设备的架构示意图。
图6所示的电子设备可包括:至少一个处理器101、至少一个存储器102、至少一个网络接口104和其他的用户接口103。电子设备中的各个组件通过总线系统105耦合在一起。可理解,总线系统105用于实现这些组件之间的连接通信。总线系统105除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统105。
其中,用户接口103可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)或者触感板等。
可以理解,本实施例中的存储器102可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Sync Link DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本文描述的存储器62旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器102存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统1021和应用程序1022。
其中,操作系统1021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序1022,包含各种应用程序,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序1022中。
在本发明实施例中,处理器101通过调用存储器102存储的程序或指令,具体的,可以是应用程序1022中存储的程序或指令,处理器101用于执行第一方面所提供的方法步骤。
上述本发明实施例揭示的方法可以应用于处理器101中,或者由处理器101实现。处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器、数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器102,处理器101读取存储器102中的信息,结合其硬件完成上述方法的步骤。
另外,结合上述实施例中的基于计算图优化的算子间并行调度方法,本发明实施例可提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上方法实施例中的任意一种基于计算图优化的算子间并行调度方法。
应当注意的是,在权利要求中,不应将位于括号之间的任何附图标记理解成对权利要求的限制。词语“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的词语“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。词语第一、第二、第三等的使用,仅是为了表述方便,而不表示任何顺序。可将这些词语理解为部件名称的一部分。
此外,需要说明的是,在本说明书的描述中,术语“一个实施例”、“一些实施例”、“实施例”、“示例”、“具体示例”或“一些示例”等的描述,是指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管已描述了本发明的优选实施例,但本领域的技术人员在得知了基本创造性概念后,则可对这些实施例作出另外的变更和修改。所以,权利要求应该解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种修改和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也应该包含这些修改和变型在内。
Claims (10)
1.一种基于计算图优化的算子间并行调度方法,其特征在于,该方法包括:
将待调度的卷积神经网络转换为计算图;
将所述计算图分割为多个不相交的子图,所述子图中包含算子的数量为并行过程中一个线程可最大并行的算子数量;
通过动态模板调度算法对所述子图内的算子进行并行调度,并在调度过程中针对子图中的算子选择算子替换或算子并行的调度策略,得到各子图的最优调度方式;其中,所述动态模板调度算法在优化调度搜索时,保存当前调度的最优子调度供后续调度搜索时调用;
基于各个子图的最优调度方式,通过子图拼接得到所述计算图的整体调度策略,根据所述整体调度策略执行所述卷积神经网络中算子的运算。
2.根据权利要求1所述的基于计算图优化的算子间并行调度方法,其特征在于,所述算子替换包括:
基于算子类型对所述子图中的算子进行算子替换;和/或
根据预设的卷积核尺寸约束规则,对所述子图中的算子进行算子替换。
3.根据权利要求2所述的基于计算图优化的算子间并行调度方法,其特征在于,所述卷积核尺寸约束规则包括:
将同一子图中最大的卷积核尺寸作为替换后卷积核尺寸,针对子图中每个卷积算子,将卷积核尺寸小于所述替换后卷积核尺寸的卷积算子的卷积核尺寸扩充为所述替换后卷积核尺寸。
4.根据权利要求2所述的基于计算图优化的算子间并行调度方法,其特征在于,基于算子类型对所述子图中的算子进行算子替换,包括:
将源算子替换为相同类型的目标算子,所述目标算子的参数和权重基于源算子中的参数和权重确定;
当源算子为通用符节点时,将源算子替换为任一基本的神经网络算子。
5.根据权利要求4所述的基于计算图优化的算子间并行调度方法,其特征在于,当算子为卷积算子时,所述目标算子的参数和权重基于源算子中的参数和权重确定的方法,包括:
所述目标算子的卷积核尺寸、卷积步长、特征图填充宽度与所述源算子相等;
所述目标算子的输出通道大小为两个源算子的输出通道之和;
所述目标算子的权重为将两个源算子中的权重信息做连接操作。
6.根据权利要求1所述的基于计算图优化的算子间并行调度方法,其特征在于,通过动态模板调度算法对所述子图内的算子进行并行调度,包括:
对算子集的子集时延初始化为无穷大,调度策略为空,其中子集为子图算子构成的集合;
对子集合中的算子进行遍历,采用动态规划算法对子图进行调度,得到子集的最小时延和最优调度方式;其中,在调度搜索过程中:
将子集的调度延迟、调度方式和子集的算子列表保存为模板,在后续搜索过程中,将当前子集算子列表与模板匹配,若匹配成功,则将模板中的调度延迟、调度方式作为当前子集的调度延迟和调度方式;
分别计算算子替换的延迟与算子并行的延迟,选择当前延迟较小的调度方式作为当前搜索得到的调度方式。
7.根据权利要求1所述的基于计算图优化的算子间并行调度方法,其特征在于,将所述计算图分割为多个不相交的子图,包括:
采用基于最大块的计算图拆分算法,递归地将所述计算图分割为子图。
8.根据权利要求1所述的基于计算图优化的算子间并行调度方法,其特征在于,在根据优化后的计算图得到待调度的卷积神经网络的调度方式之前还包括:围绕每个拆分点执行局部回溯搜索,以获得跨越拆分点的算子替换。
9.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上权利要求1至8任一项所述的基于计算图优化的算子间并行调度方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上权利要求1至8任一项所述的基于计算图优化的算子间并行调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210966814.5A CN115357356A (zh) | 2022-08-10 | 2022-08-10 | 基于计算图优化的算子间并行调度方法、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210966814.5A CN115357356A (zh) | 2022-08-10 | 2022-08-10 | 基于计算图优化的算子间并行调度方法、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115357356A true CN115357356A (zh) | 2022-11-18 |
Family
ID=84001135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210966814.5A Pending CN115357356A (zh) | 2022-08-10 | 2022-08-10 | 基于计算图优化的算子间并行调度方法、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115357356A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108764A (zh) * | 2023-04-14 | 2023-05-12 | 中国科学院长春光学精密机械与物理研究所 | 光学智能优化方法、装置、设备、介质 |
CN116258178A (zh) * | 2023-03-24 | 2023-06-13 | 美的集团(上海)有限公司 | 模型转换方法、装置、电子设备和可读存储介质 |
CN116737777A (zh) * | 2023-08-16 | 2023-09-12 | 北京壁仞科技开发有限公司 | 对目标算子进行搜索的方法、计算设备和计算机可读存储介质 |
CN116991564A (zh) * | 2023-09-28 | 2023-11-03 | 之江实验室 | 面向异构双核mcu的算子内并行加速方法 |
CN117077161A (zh) * | 2023-07-31 | 2023-11-17 | 上海交通大学 | 基于动态规划求解的隐私保护深度模型构建方法与系统 |
CN117114091A (zh) * | 2023-10-25 | 2023-11-24 | 深圳开鸿数字产业发展有限公司 | 基于联邦学习的计算图处理方法、计算机设备和存储介质 |
CN117950645A (zh) * | 2024-03-25 | 2024-04-30 | 之江实验室 | 一种基于硬件特征的算子调度方案自动搜索方法与系统 |
WO2024178522A1 (zh) * | 2023-02-27 | 2024-09-06 | 华为技术有限公司 | 一种计算图拆分方法以及相关设备 |
-
2022
- 2022-08-10 CN CN202210966814.5A patent/CN115357356A/zh active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024178522A1 (zh) * | 2023-02-27 | 2024-09-06 | 华为技术有限公司 | 一种计算图拆分方法以及相关设备 |
CN116258178A (zh) * | 2023-03-24 | 2023-06-13 | 美的集团(上海)有限公司 | 模型转换方法、装置、电子设备和可读存储介质 |
CN116258178B (zh) * | 2023-03-24 | 2023-09-22 | 美的集团(上海)有限公司 | 模型转换方法、装置、电子设备和可读存储介质 |
CN116108764B (zh) * | 2023-04-14 | 2023-07-07 | 中国科学院长春光学精密机械与物理研究所 | 光学智能优化方法、装置、设备、介质 |
CN116108764A (zh) * | 2023-04-14 | 2023-05-12 | 中国科学院长春光学精密机械与物理研究所 | 光学智能优化方法、装置、设备、介质 |
CN117077161B (zh) * | 2023-07-31 | 2024-05-03 | 上海交通大学 | 基于动态规划求解的隐私保护深度模型构建方法与系统 |
CN117077161A (zh) * | 2023-07-31 | 2023-11-17 | 上海交通大学 | 基于动态规划求解的隐私保护深度模型构建方法与系统 |
CN116737777A (zh) * | 2023-08-16 | 2023-09-12 | 北京壁仞科技开发有限公司 | 对目标算子进行搜索的方法、计算设备和计算机可读存储介质 |
CN116737777B (zh) * | 2023-08-16 | 2023-11-28 | 北京壁仞科技开发有限公司 | 对目标算子进行搜索的方法、计算设备和计算机可读存储介质 |
CN116991564B (zh) * | 2023-09-28 | 2024-01-09 | 之江实验室 | 面向异构双核mcu的算子内并行加速方法 |
CN116991564A (zh) * | 2023-09-28 | 2023-11-03 | 之江实验室 | 面向异构双核mcu的算子内并行加速方法 |
CN117114091B (zh) * | 2023-10-25 | 2024-03-05 | 深圳开鸿数字产业发展有限公司 | 基于联邦学习的计算图处理方法、计算机设备和存储介质 |
CN117114091A (zh) * | 2023-10-25 | 2023-11-24 | 深圳开鸿数字产业发展有限公司 | 基于联邦学习的计算图处理方法、计算机设备和存储介质 |
CN117950645A (zh) * | 2024-03-25 | 2024-04-30 | 之江实验室 | 一种基于硬件特征的算子调度方案自动搜索方法与系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115357356A (zh) | 基于计算图优化的算子间并行调度方法、设备和介质 | |
CN110321999B (zh) | 神经网络计算图优化方法 | |
WO2018171717A1 (zh) | 面向神经网络处理器的自动化设计方法和系统 | |
US5822747A (en) | System and method for optimizing database queries | |
US20210350233A1 (en) | System and Method for Automated Precision Configuration for Deep Neural Networks | |
CN113994350A (zh) | 为神经网络生成并行计算方案 | |
CN110968321B (zh) | 张量计算代码优化方法、装置、设备及介质 | |
US20180314733A1 (en) | Dynamic operation scheduling for distributed data processing | |
CN113723589A (zh) | 混合精度神经网络 | |
CN108875914B (zh) | 对神经网络数据进行预处理和后处理的方法和装置 | |
WO2016177405A1 (en) | Systems and methods for transformation of a dataflow graph for execution on a processing system | |
US20220092386A1 (en) | Neural network model splitting method, apparatus, computer device and storage medium | |
CN117008916B (zh) | 张量程序优化方法和装置 | |
CN113254867A (zh) | 一种自动配置模板生成方法、装置、服务器及存储介质 | |
CN113609806A (zh) | 一种结合子图同构的量子线路程序通用变换方法 | |
Stahl et al. | Fused depthwise tiling for memory optimization in tinyml deep neural network inference | |
CN117193988A (zh) | 一种晶圆级架构ai加速芯片的任务调度方法及介质 | |
CN116627396A (zh) | 一种多面体模型嵌套循环变换动态求解加速方法 | |
WO2024000464A1 (zh) | 一种张量计算的分块策略生成方法及装置 | |
WO2022088930A1 (en) | Scalable discovery of leaders from dynamic combinatorial search space using incremental pipeline growth approach | |
Campos et al. | On data parallelism code restructuring for HLS targeting FPGAs | |
CN111274023B (zh) | 数据处理方法、装置、计算机系统和存储介质 | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
Momeni et al. | A parallel clustering algorithm for placement | |
CN113760380A (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 |