CN115829017A - 一种基于芯粒的数据处理的方法、装置、介质及设备 - Google Patents
一种基于芯粒的数据处理的方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN115829017A CN115829017A CN202310156339.XA CN202310156339A CN115829017A CN 115829017 A CN115829017 A CN 115829017A CN 202310156339 A CN202310156339 A CN 202310156339A CN 115829017 A CN115829017 A CN 115829017A
- Authority
- CN
- China
- Prior art keywords
- depth
- operator
- core
- search module
- core particle
- 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
Links
Images
Classifications
-
- 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
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本说明书公开了一种基于芯粒的数据处理的方法、装置、介质及设备。首先,获取芯粒阵列的阵列尺寸以及神经网络模型对应的有向无环图。其次,根据芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合。而后,根据神经网络模型中的各算子在有向无环图中的深度,确定各算子所要加入的调度搜索模块。然后,针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定满足预设条件的各策略组合,并计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合。最后,根据各调度搜索模块对应的目标策略组合,执行神经网络模型的运算任务。本方法可以合理的分配芯粒资源,提高芯粒资源的资源利用率。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种基于芯粒的数据处理的方法、装置、介质及设备。
背景技术
近年来,随着芯粒技术的发展,深度神经网络加速器正在从芯片升级至芯粒。芯粒将小芯片单元集成封装为满足特定功能的模块芯片,相比于原来的普通芯片具有更高的灵活度和性能以及更低的成本,对深度神经网络加速器这种专用领域架构的发展十分有利。
目前,对于芯粒这种集成度高的更复杂的结构,还没有可以充分利用芯粒资源,以加速深度神经网络在芯粒上的推理的方法,导致芯粒资源的资源利用率较低。
因此,如何合理的分配芯粒资源,提高芯粒资源的资源利用率,则是一个亟待解决的问题。
发明内容
本说明书提供一种基于芯粒的数据处理的方法、装置、介质及设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种基于芯粒的数据处理的方法,包括:
获取芯粒阵列的阵列尺寸以及神经网络模型对应的有向无环图,所述芯粒阵列是由各芯粒组成的,所述有向无环图用于表示所述神经网络模型中的各算子的运算顺序;
根据所述芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合,所述划分策略集合是将算子的运算任务划分为各维度的运算任务的划分策略的集合;
根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,确定各算子所要加入的调度搜索模块;
针对每个调度搜索模块,根据所述各类算子的划分策略集合以及所述芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,并通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合;
根据各调度搜索模块对应的目标策略组合,执行所述神经网络模型的运算任务。
可选地,确定所述神经网络模型中的各算子在所述有向无环图中的深度,具体包括:
通过广度优先搜索算法遍历所述神经网络模型对应的有向无环图,并在遍历过程中,对各算子对应的深度进行标记;
针对所述神经网络模型中的每个算子,当遍历到该算子时,若前序算子未被标记,则遍历下一个算子;
若前序算子被标记,则根据前序算子的深度,对该算子的深度进行标记。
可选地,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,确定各算子所要加入的调度搜索模块,具体包括:
针对每个深度,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,将该深度对应的各算子加入该深度对应的并行运算组;
将该深度对应的并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。
可选地,针对每个深度,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,将该深度对应的各算子加入该深度对应的并行运算组,具体包括:
根据所述芯粒阵列的阵列尺寸,确定芯粒阵列的芯粒数量;
针对每个深度,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,若该深度对应的并行运算组中的各算子的数量未超过所述芯粒数量,则将当前遍历到的算子加入该深度对应的并行运算组;
若该深度对应的并行运算组中的各算子的数量超过所述芯粒数量,则创建该深度对应的额外并行运算组,将当前遍历到的算子加入该深度对应的额外并行运算组;
将该深度对应的并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块,具体包括:
将该深度对应的并行运算组中的各算子、该深度对应的额外并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。
可选地,所述预设条件包括:每个并行运算组已分配的芯粒数量与待分配的芯粒数量之和不大于所述芯粒阵列的芯粒数量;
每个并行运算组已分配的芯粒阵列的行数与待分配的芯粒阵列的行数之和不大于所述芯粒阵列的行数;
每个并行运算组已分配的芯粒阵列的列数与待分配的芯粒阵列的列数之和不大于所述芯粒阵列的列数。
可选地,针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,具体包括:
针对每个深度对应的调度搜索模块,从该深度的上一深度对应的调度搜索模块中,获取该深度对应的并行运算组中的各算子的目标策略组合;
根据各类算子的划分策略集合以及芯粒分配策略集合,确定该深度的下一深度对应的并行运算组中的各算子的满足预设条件的各策略组合;
根据该深度对应的并行运算组中的各算子的目标策略组合,以及该深度的下一深度对应的并行运算组中的各算子的满足预设条件的各策略组合,确定该深度对应的调度搜索模块的满足预设条件的各策略组合。
可选地,通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合,具体包括:
通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的各算子的运算开销、芯粒阵列中的路由转发延迟以及数据传输时长,确定目标策略组合。
本说明书提供了一种基于芯粒的数据处理的装置,包括:
获取模块,用于获取芯粒阵列的阵列尺寸以及神经网络模型对应的有向无环图,所述芯粒阵列是由各芯粒组成的,所述有向无环图用于表示所述神经网络模型中的各算子的运算顺序;
构建模块,用于根据所述芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合,所述划分策略集合是将算子的运算任务划分为各维度的运算任务的划分策略的集合;
确定模块,用于根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,确定各算子所要加入的调度搜索模块;
计算模块,用于针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,并通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合;
执行模块,用于根据各调度搜索模块对应的目标策略组合,执行所述神经网络模型的运算任务。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于芯粒的数据处理的方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于芯粒的数据处理的方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的基于芯粒的数据处理的方法中,获取芯粒阵列的阵列尺寸以及神经网络模型对应的有向无环图,芯粒阵列是由各芯粒组成的,有向无环图用于表示神经网络模型中的各算子的运算顺序。其次,根据芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合,划分策略集合是将算子的运算任务划分为各维度的运算任务的划分策略的集合。而后,根据确定出的神经网络模型中的各算子在有向无环图中的深度,确定各算子所要加入的调度搜索模块。然后,针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,并通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合。最后,根据各调度搜索模块对应的目标策略组合,执行神经网络模型的运算任务。
从上述的基于芯粒的数据处理的方法中可以看出,本方法可以根据芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合。然后,针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,并通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合。最后,根据各调度搜索模块对应的目标策略组合,执行神经网络模型的运算任务。本方法可以合理的分配芯粒资源,提高芯粒资源的资源利用率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书实施例提供的基于芯粒的数据处理的方法的流程示意图;
图2为本说明书实施例提供的芯粒阵列的结构示意图;
图3为本说明书实施例提供的一种有向无环图的示意图;
图4为本说明书实施例提供的一种标记算子的深度的示意图;
图5为本说明书实施例提供的芯粒的结构示意图;
图6为本说明书实施例提供的基于芯粒的数据处理的装置的结构示意图;
图7为本说明书实施例提供的电子设备的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书实施例提供的基于芯粒的数据处理的方法的流程示意图,具体包括以下步骤:
S100:获取芯粒阵列的阵列尺寸以及神经网络模型对应的有向无环图,所述芯粒阵列是由各芯粒组成的,所述有向无环图用于表示所述神经网络模型中的各算子的运算顺序。
在本说明书实施例中,本说明书提供的基于芯粒的数据处理的方法的执行主体可以是服务器,也可以是诸如台式电脑等电子设备,为了便于描述,下面仅以服务器为执行主体,对本说明书提供的基于芯粒的数据处理的方法进行说明。
在本说明书实施例中,服务器可以获取芯粒阵列的阵列尺寸以及神经网络模型对应的有向无环图。这里提到的芯粒阵列是由各芯粒(Chiplet)组成的。这里提到的芯粒可以是指预先制造好、具有特定功能、可组合集成的晶片(Die),芯粒也称为“小芯片”。这里提到的阵列尺寸可以由m*n表示,m表示芯粒阵列中芯粒的行数,n表示芯粒阵列中芯粒的列数。具体如图2所示。
图2为本说明书实施例提供的芯粒阵列的结构示意图。
在图2中,芯粒阵列的阵列尺寸为4*4,每个芯粒下的编号用于表示芯粒的位置。例如,芯粒(1,2)在芯粒阵列中的第2行,第3列。其中,芯粒之间的第一路由可以采用NOP路由。
这里提到的有向无环图是指一个由有限个节点和有向边组成,每条有向边都从一个节点指向另一个节点。从任意一个节点出发都不能通过这些有向边回到原来的节点的图。
进一步的,神经网络模型由一个个计算单元组成,这些计算单元称为算子(Operator,OP)。在神经网络模型中,算子对应神经网络层中的计算逻辑。例如:卷积层(Convolution Layer)是一个算子。全连接层(Fully-connected Layer, FC layer)中的权值求和过程,是一个算子。基于此,神经网络模型对应的有向无环图用于表示神经网络模型中的各算子的运算顺序。具体如图2所示。
图3为本说明书实施例提供的一种有向无环图的示意图。
在图3中,一个节点用于表示一个算子,每条有向边用于表示算子之间的数据依赖关系。可以看出,算子1与算子2之间的有向边用于表示算子1与算子2的运算顺序,也就是说,先对算子1进行运算,再对算子2进行运算。
需要说明的是,本说明书不对算子的类别进行限定。
S102:根据所述芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合,所述划分策略集合是将算子的运算任务划分为各维度的运算任务的划分策略的集合。
在本说明书实施例中,服务器可以根据芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合,这里提到的划分策略集合是将算子的运算任务划分为各维度的运算的划分策略的集合。
具体的,服务器可以针对每个类型的算子,对该类型的算子的运算任务进行划分,得到各维度的运算任务。例如,若算子的类别为卷积算子,运算公式为,则各维度的运算任务为{(i),(j),(k)},划分策略集合为{(i),(j),(k),(i、j),(i、k),(j、k)}。
当然,也可以理解为将一个运算任务按照不同方式划分为多个运算子任务,一个方式对应一种划分策略。
这里提到的芯粒分配策略集合是将芯粒阵列进行划分的划分策略的集合。例如,若芯粒阵列是一个二维的芯粒阵列,阵列尺寸为m*n,则芯粒分配策略集合为{(0),(1),(0、1)}。(0)用于表示将运算任务按行映射到芯粒阵列上的芯粒分配策略,(1)用于表示将运算任务按列映射到芯粒阵列上的芯粒分配策略,(0、1)用于表示将运算任务按每个芯粒映射到芯粒阵列上的芯粒分配策略。
当然,芯粒阵列也可以是一个三维的芯粒阵列,阵列尺寸为m*n*z,则芯粒分配策略集合为{(0),(1),(2),(0、1),(0、2),(1、2),(0、1、2)}。(0)用于表示将运算任务按行映射到芯粒阵列上的芯粒分配策略,(1)用于表示将运算任务按列映射到芯粒阵列上的芯粒分配策略,(2)用于表示将运算任务按高映射到芯粒阵列上的芯粒分配策略,(0、1、2)用于表示将运算任务按每个芯粒映射到芯粒阵列上的芯粒分配策略。本说明书不对芯粒阵列的维度进行限定。
S104:根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,确定各算子所要加入的调度搜索模块。
在本说明书实施例中,服务器可以根据确定出的神经网络模型中的各算子在有向无环图中的深度,确定各算子所要加入的调度搜索模块。
在实际应用中,为了增强神经网络模型的学习能力,算子会变得越来越深,但是随着深度的增加,也带来了神经网络模型的复杂度上升,算子训练困难,梯度消失以及梯度爆炸等问题。也就是说,神经网络模型的学习能力达到了饱和,增加网络层数并不能提升预测结果的准确性。基于此,神经网络模型通过残差块的方法将输入的信息跳过一层算子或者多层算子,从而将信息传递到神经网络模型中的更深的算子。
由于,神经网络模型中应用残差块的方法。神经网络模型对应的有向无环图中直接按照运算顺序得到的各算子的深度可能有误。因此,服务器可以判断遍历过程中的各算子的前序算子是否被标记,再标记各算子对应的深度,以避免错误标记各算子对应的深度。
在本说明书实施例中,服务器可以通过广度优先搜索算法遍历神经网络模型对应的有向无环图,并在遍历过程中,对各算子对应的深度进行标记。
其次,服务器可以针对神经网络模型中的每个算子,当遍历到该算子时,若前序算子未被标记,则遍历下一个算子。这里提到的前序算子可以是指在有向无环图中,与该算子入边相连的算子。这里提到的遍历下一个算子是指遍历算子的顺序。
最后,若前序算子被标记,则服务器可以根据前序算子对应的深度,对该算子对应的深度进行标记。具体如图4所示。
图4为本说明书实施例提供的一种标记算子的深度的示意图。
在图4中,每个框对应一个深度的算子。以算子2为例,按照运算顺序,先计算算子1,再计算算子2。由于算子1前不存在算子,对算子1的深度进行标记,由于计算算子2时,算子1标记了深度,则对算子2的深度进行标记。接着,以算子7为例,算子7有两个运算顺序。在第一个运算顺序中,先计算算子2,再计算算子7,但由于算子7的前序算子还包括:算子5。但算子5还未进行计算,未标记深度,因此,继续遍历下一个算子。在第二个运算顺序中,先计算算子5,再计算算子7,由于算子5标记了深度,则对算子7的深度进行标记。
在实际应用中,在有向无环图中处于同一深度的算子可以进行并行运算。目前的调度搜索模块确定出的策略组合仅根据同一深度的算子得到的。但是,有向无环图中处于相邻深度的算子之间可能存在数据依赖关系,这会影响确定出的策略组合在神经网络模型中的性能。基于此,调度搜索模块中可以将相邻深度的算子加入到一个调度搜索模块中,以充分考虑调度搜索模块中存在数据依赖关系的算子在策略组合上的相互影响,同时也能够权衡可并行计算的算子在策略组合上的相互影响,进而得到性能更高的策略组合。
在本说明书实施例中,针对每个深度,服务器可以根据确定出的神经网络模型中的各算子在有向无环图中的深度,将该深度对应的各算子加入该深度对应的并行运算组。
然后,服务器可以将该深度对应的并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。
当然,服务器也可以将该深度对应的并行运算组中的各算子以及该深度的相邻深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。例如,服务器可以将该深度对应的并行运算组中的各算子、该深度的下一深度对应的并行运算组中的各算子以及该深度的上一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。本说明书不对调度搜索模块中的并行运算组的深度以及数量进行限定。
在实际应用中,由于芯粒阵列中的芯粒数量的限制,可能出现并行运算组中的算子数量超过芯粒数量的情况,在这种情况下,调度搜索模块确定出的策略组合并不是最优的。基于此,服务器将超过芯粒数量的部分算子加入额外并行运算组,避免出现并行运算组中的算子数量超过芯粒数量的情况。
在本说明书实施例中,服务器可以根据芯粒阵列的阵列尺寸,确定芯粒阵列的芯粒数量。
其次,针对每个深度,服务器可以根据确定出的神经网络模型中的各算子在有向无环图中的深度,若该深度对应的并行运算组中的各算子的数量未超过芯粒数量,则将当前遍历到的算子加入该深度对应的并行运算组。
而后,若该深度对应的并行运算组中的各算子的数量超过芯粒数量,服务器则可以创建该深度对应的额外并行运算组,将当前遍历到的算子加入该深度对应的额外并行运算组。
最后,服务器可以将该深度对应的并行运算组中的各算子、该深度对应的额外并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。
需要是说明的是,服务器在运算完成该深度对应的并行运算组中的各算子后,再运算该深度对应的额外并行运算组中的各算子,接着,运算该深度的下一深度对应的并行运算组中的各算子,以此类推,执行神经网络模型的运算任务。
S106:针对每个调度搜索模块,根据所述各类算子的划分策略集合以及所述芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,并通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合。
在本说明书实施例中,服务器可以针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合。
例如,若算子的类别为卷积算子,运算公式为,则各维度的运算任务为{(i),(j),(k)},划分策略集合为{(i),(j),(k),(i、j),(i、k),(j、k)}。若芯粒阵列是一个二维的芯粒阵列,阵列尺寸为m*n,则芯粒分配策略集合为{(0),(1),(0、1)}。若策略组合为{(i)→(0)},可以是指对算子的划分维度为(i),将(i)维度按行映射到芯粒阵列上。若策略组合为{(j)→(1)},可以是指对算子的划分维度为(j),将(j)维度按列映射到芯粒阵列上。若策略组合为{(k)→(0、1)},可以是指对算子的划分维度为(k),将k维度按行和列映射到芯粒阵列上,也就是说,将k维度按每个芯粒映射到芯粒阵列上。
进一步的,由于芯粒分配策略还包括:按行分配芯粒阵列的芯粒以及按列分配芯粒阵列的芯粒等分配方式。因此,仅限制各算子的数量不超过芯粒数量,并不能保证并行运算组的并行运算。基于此,服务器可以通过预设条件,进一步的限制并行运算组分配的芯粒数量超过芯粒阵列中的芯粒数量。
在本说明书实施例中,预设条件包括:每个并行运算组已分配的芯粒数量与待分配的芯粒数量之和不大于芯粒阵列的芯粒数量。
每个并行运算组已分配的芯粒阵列的行数与待分配的芯粒阵列的行数之和不大于芯粒阵列的行数。
每个并行运算组已分配的芯粒阵列的列数与待分配的芯粒阵列的列数之和不大于芯粒阵列的列数。
在本说明书实施例中,服务器是按照深度递增顺序依次确定调度搜索模块的策略组合,每个深度的调度搜索模块中包含有下一深度的算子确定出的策略组合。
具体的,服务器可以针对每个深度对应的调度搜索模块,从该深度的上一深度对应的调度搜索模块中,获取该深度对应的并行运算组中的各算子的目标策略组合。
其次,服务器可以根据各类算子的划分策略集合以及芯粒分配策略集合,确定该深度的下一深度对应的并行运算组中的各算子的满足预设条件的各策略组合。
最后,服务器可以根据该深度对应的并行运算组中的各算子的目标策略组合,以及该深度的下一深度对应的并行运算组中的各算子的满足预设条件的各策略组合,确定该深度对应的调度搜索模块的满足预设条件的各策略组合。
例如,若调度搜索模块对应的深度为N,则深度为N的调度搜索模块中包含有深度为N的并行运算组以及深度为N+1的并行运算组。服务器可以从深度为N-1的调度搜索模块中,获取深度为N的并行运算组中的各算子的目标策略组合。其次,服务器可以根据各类算子的划分策略集合以及芯粒分配策略集合,确定深度为N+1的并行运算组中的各算子的满足预设条件的各策略组合。最后,服务器可以深度为N的并行运算组中的各算子的目标策略组合,以及深度为N+1的并行运算组中的各算子的满足预设条件的各策略组合,确定深度为N的调度搜索模块的满足预设条件的各策略组合。
需要说明的是,若深度从0开始计算,当调度搜索模块对应的深度为0时,则在深度为0的调度搜索模块中,需要根据各类算子的划分策略集合以及芯粒分配策略集合,先确定出深度为0的并行运算组中的各算子的满足预设条件的各策略组合,再确定出深度为1的并行运算组中的各算子的满足预设条件的各策略组合。当然,深度从0开始计算或从1开始计算可以根据业务需要进行设定。本说明书不对深度从何数字开始计算进行限定。
其中,确定出的策略组合需要满足划分策略中的每个维度的运算任务不会被重复分配给不同的芯粒,并且,尽可能使得更多的芯粒参与运算。
在实际应用中,服务器需要从调度搜索模块确定出的各策略组合中,确定出最优的策略组合,以用于运算神经网络模型。基于此,服务器可以根据各策略组合所需的运算开销以及运算时长,得到目标策略组合。
在本说明书实施例中,服务器可以通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合。
具体的,服务器可以通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的各算子的运算开销、芯粒阵列中的路由转发延迟以及数据传输时长,确定目标策略组合。
在本说明书实施例中,计算单个算子的运算开销的公式如下:
在上述公式中,表示单个算子v的运算开销。若运算任务中参与运算的运算矩阵的大小分别为和,则分配到每个NPU(Neural-networkProcessing Unit,嵌入式神经网络处理器)上的计算量为和。NPU上脉冲阵列的大小为。这里提到的脉冲阵列是指由一组相同的处理单元 PE 构成的阵列机。每个 PE 可完成少数基本的算术逻辑运算操作。这里提到的NPU是指芯粒内部的单元,芯粒是由多个NPU组成。具体如图5所示。
图5为本说明书实施例提供的芯粒的结构示意图。
在图5中,一个4*4的NPU阵列组成了一个芯粒。各NPU之间的通信需要通过电线传输数据和路由器转发数据。芯粒之间的通信和芯粒内部的NPU之间的通信的区别在于采用的电线不同,以及采用的路由不同。其中,芯粒之间的第一路由可以采用NOP路由,芯粒内部的NPU之间的第二路由可以采用NOC路由。
在本说明书实施例中,计算单个算子v的数据传输时长的公式如下:
在本说明书实施例中,用于表示数据传输时长。用于表示算子v的划分策略对应的独热编码的转置。这里提到的独热编码(One-Hot Encoding),又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。用于表示算子v的数据传输时长矩阵。用于表示芯粒内的带宽。用于表示各芯粒之间的带宽。
需要说明的是,这里提到的脉冲阵列的尺寸、芯粒内的带宽、各芯粒之间的带宽是由用户自行确定的。
在本说明书实施例中,服务器可以根据策略组合,确定芯粒内路由转发平均跳数与路由转发周期数之积,以及芯粒间路由转发平均跳数与路由转发周期数之积。再根据芯粒内路由转发平均跳数与路由转发周期数之积,以及芯粒间路由转发平均跳数与路由转发周期数之积,得到策略组合的路由转发延迟。
例如,划分策略的独热编码=(0,1)对应的划分方式需要参与运算的每个NPU的运算结果都传输到坐标最大的NPU对应的存储单元上。算子v的芯粒分配策略为((0,1,0,0), (0,1,0,3)) ,也就是说,算子v在芯粒(0,1)的NPU(0,0)、NPU(0,1)、NPU(0,2)、NPU(0,3)上进行运算。由于每个NPU上的运算结果都需要传输到NPU(0,3)对应的存储单元上,那么,在NPU(0,1)上,NPU(0,0)传输运算结果到NPU(0,3)对应的存储单元的路由转发跳数为3。NPU(0,1) 传输运算结果到NPU(0,3)对应的存储单元的路由转发跳数为2。NPU(0,2) 传输运算结果到NPU(0,3)号对应的存储单元的路由转发跳数为1。NPU(0,3)的运算结果不需要传输数据。若有100次数据传输,则可计算出芯粒内的路由转发平均跳数为100*(3+2+1)/3=200。
其中,芯粒内路由转发周期数由芯粒内采用的路由部件决定,例如,芯粒内路由转发周期数为1,则芯粒内路由转发平均跳数与路由转发周期数之积为200。
在当前的策略组合下不存在各芯粒之间的数据传输,各芯粒之间路由转发平均跳数为0。因此,芯粒之间路由转发平均跳数与路由转发周期数之积为0。将芯粒内路由转发平均跳数与路由转发周期数之积与芯粒之间路由转发平均跳数与路由转发周期数之积相加,得到芯粒中的路由转发延迟为200。
在实际应用中,调度搜索模块中包含有存在数据依赖关系的算子。因此,服务器还需要计算存在数据依赖关系的算子在芯粒阵列中的数据传输时长以及路由转发延迟。
在本说明书实施例中,计算存在数据依赖关系的算子对芯粒之间的数据传输时长的公式如下:
在本说明书实施例中,服务器可以根据存在数据依赖关系的算子对应的策略组合,确定芯粒内路由转发平均跳数与路由转发周期数之积,以及芯粒间路由转发平均跳数与路由转发周期数之积。再根据芯粒内路由转发平均跳数与路由转发周期数之积,以及芯粒间路由转发平均跳数与路由转发周期数之积,得到策略组合的路由转发延迟。
例如,算子v的运算结果存储在(0,0,0,3)中的存储单元。算子u的芯粒分配策略为((0,1,0,0), (0,1,0,3)) ,也就是说,算子v在芯粒(0,1)的NPU(0,0)、NPU(0,1)、NPU(0,2)、NPU(0,3)上进行运算。算子u与算子v存在数据依赖关系,需要先将算子v存储在(0,0,0,3)的存储单元中的运算结果,传输到算子u对应的各NPU中进行后续的运算。
具体的,NPU(0,0,0,3)传输运算结果到NPU(0,1,0,0)对应的存储单元上,芯粒间路由转发跳数为1,芯粒内路由转发跳数为2。NPU(0,0,0,3) 传输运算结果到NPU(0,1,0,1)对应的存储单元上,芯粒间路由转发跳数为1,芯粒内路由转发跳数为3。NPU(0,0,0,3) 传输运算结果到NPU(0,1,0,2)对应的存储单元上,芯粒间路由转发跳数为1,芯粒内路由转发跳数为4。NPU(0,0,0,3) 传输运算结果到NPU (0,1,0,3) 对应的存储单元上,芯粒间路由转发跳数为1,芯粒内路由转发跳数为5。若有100次数据传输,则可计算出芯粒内的路由转发平均跳数为100*(2+3+4+5)/4=350,芯粒之间的路由转发平均跳数为100*(1+1+1+1)/4=100。
其中,芯粒内的路由转发周期数由芯粒内采用的路由部件决定,芯粒之间的路由转发周期数由芯粒之间采用的路由部件决定,例如,芯粒内的路由转发周期数为1,芯粒之间的路由转发周期数为5,则芯粒内的路由转发平均跳数与路由转发周期数之积为350、芯粒之间的路由转发平均跳数与路由转发周期数之积为500。然后,将芯粒内路由转发平均跳数与路由转发周期数之积与芯粒之间路由转发平均跳数与路由转发周期数之积相加,得到芯粒之间的路由转发延迟为850。
最后,服务器可以根据单个算子的运算开销、单个算子的数据传输时长、具有数据依赖关系的算子的数据传输时长、芯粒中的路由转发延迟,以及芯粒之间的路由转发延迟,计算各策略组合的和值。从各策略组合中,确定和值最小的策略组合,作为目标策略组合。
S108:根据各调度搜索模块对应的目标策略组合,执行所述神经网络模型的运算任务。
在本说明书实施例中,服务器可以根据各调度搜索模块对应的目标策略组合,执行神经网络模型的运算任务。
从上述过程中可以看出,本方法可以根据芯粒阵列的阵列尺寸,构建芯粒分配策略集合以及各类算子的划分策略集合。然后,针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,并通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合。最后,根据各调度搜索模块对应的目标策略组合,执行神经网络模型的运算任务。本方法可以合理的分配芯粒资源,提高芯粒资源的资源利用率。
以上为本说明书的一个或多个实施例提供的基于芯粒的数据处理的方法,基于同样的思路,本说明书还提供了相应的基于芯粒的数据处理的装置,如图5所示。
图6为本说明书实施例提供的基于芯粒的数据处理的装置的结构示意图,具体包括:
获取模块600,用于获取芯粒阵列的阵列尺寸以及神经网络模型对应的有向无环图,所述芯粒阵列是由各芯粒组成的,所述有向无环图用于表示所述神经网络模型中的各算子的运算顺序;
构建模块602,用于根据所述芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合,所述划分策略集合是将算子的运算任务划分为各维度的运算任务的划分策略的集合;
确定模块604,用于根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,确定各算子所要加入的调度搜索模块;
计算模块606,用于针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,并通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合;
执行模块608,用于根据各调度搜索模块对应的目标策略组合,执行神经网络模型的运算任务。
可选地,所述确定模块604具体用于,通过广度优先搜索算法遍历所述神经网络模型对应的有向无环图,并在遍历过程中,对各算子对应的深度进行标记,针对所述神经网络模型中的每个算子,当遍历到该算子时,若前序算子未被标记,则遍历下一个算子,若前序算子被标记,则根据前序算子对应的深度,对该算子对应的深度进行标记。
可选地,所述确定模块604具体用于,针对每个深度,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,将该深度对应的各算子加入该深度对应的并行运算组,将该深度对应的并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。
可选地,所述计算模块606具体用于,根据所述芯粒阵列的阵列尺寸,确定芯粒阵列的芯粒数量,针对每个深度,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,若该深度对应的并行运算组中的各算子的数量未超过所述芯粒数量,则将当前遍历到的算子加入该深度对应的并行运算组,若该深度对应的并行运算组中的各算子的数量超过所述芯粒数量,则创建该深度对应的额外并行运算组,将当前遍历到的算子加入该深度对应的额外并行运算组,将该深度对应的并行运算组中的各算子、该深度对应的额外并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。
可选地,所述计算模块606具体用于,所述预设条件包括:每个并行运算组已分配的芯粒数量与待分配的芯粒数量之和不大于所述芯粒阵列的芯粒数量,每个并行运算组已分配的芯粒阵列的行数与待分配的芯粒阵列的行数之和不大于所述芯粒阵列的行数,每个并行运算组已分配的芯粒阵列的列数与待分配的芯粒阵列的列数之和不大于所述芯粒阵列的列数。
可选地,所述计算模块606具体用于,针对每个深度对应的调度搜索模块,从该深度的上一深度对应的调度搜索模块中,获取该深度对应的并行运算组中的各算子的目标策略组合,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该深度的下一深度对应的并行运算组中的各算子的满足预设条件的各策略组合,根据该深度对应的并行运算组中的各算子的目标策略组合,以及该深度的下一深度对应的并行运算组中的各算子的满足预设条件的各策略组合,确定该深度对应的调度搜索模块的满足预设条件的各策略组合。
可选地,所述计算模块606具体用于,通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的各算子的运算开销、芯粒阵列中的路由转发延迟以及数据传输时长,确定目标策略组合。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的基于芯粒的数据处理的方法。
本说明书还提供了图7所示的电子设备的结构示意图。如图7所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的基于芯粒的数据处理的方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (10)
1.一种基于芯粒的数据处理的方法,其特征在于,包括:
获取芯粒阵列的阵列尺寸以及神经网络模型对应的有向无环图,所述芯粒阵列是由各芯粒组成的,所述有向无环图用于表示所述神经网络模型中的各算子的运算顺序;
根据所述芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合,所述划分策略集合是将算子的运算任务划分为各维度的运算任务的划分策略的集合;
根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,确定各算子所要加入的调度搜索模块;
针对每个调度搜索模块,根据所述各类算子的划分策略集合以及所述芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,并通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合;
根据各调度搜索模块对应的目标策略组合,执行所述神经网络模型的运算任务。
2.如权利要求1所述的方法,其特征在于,确定所述神经网络模型中的各算子在所述有向无环图中的深度,具体包括:
通过广度优先搜索算法遍历所述神经网络模型对应的有向无环图,并在遍历过程中,对各算子对应的深度进行标记;
针对所述神经网络模型中的每个算子,当遍历到该算子时,若前序算子未被标记,则遍历下一个算子;
若前序算子被标记,则根据前序算子的深度,对该算子的深度进行标记。
3.如权利要求2所述的方法,其特征在于,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,确定各算子所要加入的调度搜索模块,具体包括:
针对每个深度,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,将该深度对应的各算子加入该深度对应的并行运算组;
将该深度对应的并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。
4.如权利要求3所述的方法,其特征在于,针对每个深度,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,将该深度对应的各算子加入该深度对应的并行运算组,具体包括:
根据所述芯粒阵列的阵列尺寸,确定芯粒阵列的芯粒数量;
针对每个深度,根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,若该深度对应的并行运算组中的各算子的数量未超过所述芯粒数量,则将当前遍历到的算子加入该深度对应的并行运算组;
若该深度对应的并行运算组中的各算子的数量超过所述芯粒数量,则创建该深度对应的额外并行运算组,将当前遍历到的算子加入该深度对应的额外并行运算组;
将该深度对应的并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块,具体包括:
将该深度对应的并行运算组中的各算子、该深度对应的额外并行运算组中的各算子以及该深度的下一深度对应的并行运算组中的各算子加入该深度对应的调度搜索模块。
5.如权利要求4所述的方法,其特征在于,所述预设条件包括:每个并行运算组已分配的芯粒数量与待分配的芯粒数量之和不大于所述芯粒阵列的芯粒数量;
每个并行运算组已分配的芯粒阵列的行数与待分配的芯粒阵列的行数之和不大于所述芯粒阵列的行数;
每个并行运算组已分配的芯粒阵列的列数与待分配的芯粒阵列的列数之和不大于所述芯粒阵列的列数。
6.如权利要求3所述的方法,其特征在于,针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,具体包括:
针对每个深度对应的调度搜索模块,从该深度的上一深度对应的调度搜索模块中,获取该深度对应的并行运算组中的各算子的目标策略组合;
根据各类算子的划分策略集合以及芯粒分配策略集合,确定该深度的下一深度对应的并行运算组中的各算子的满足预设条件的各策略组合;
根据该深度对应的并行运算组中的各算子的目标策略组合,以及该深度的下一深度对应的并行运算组中的各算子的满足预设条件的各策略组合,确定该深度对应的调度搜索模块的满足预设条件的各策略组合。
7.如权利要求1所述的方法,其特征在于,通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合,具体包括:
通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的各算子的运算开销、芯粒阵列中的路由转发延迟以及数据传输时长,确定目标策略组合。
8.一种基于芯粒的数据处理的装置,其特征在于,包括:
获取模块,用于获取芯粒阵列的阵列尺寸以及神经网络模型对应的有向无环图,所述芯粒阵列是由各芯粒组成的,所述有向无环图用于表示所述神经网络模型中的各算子的运算顺序;
构建模块,用于根据所述芯粒阵列的阵列尺寸,构建各类算子的划分策略集合以及芯粒分配策略集合,所述划分策略集合是将算子的运算任务划分为各维度的运算任务的划分策略的集合;
确定模块,用于根据确定出的所述神经网络模型中的各算子在所述有向无环图中的深度,确定各算子所要加入的调度搜索模块;
计算模块,用于针对每个调度搜索模块,根据各类算子的划分策略集合以及芯粒分配策略集合,确定该调度搜索模块对应的满足预设条件的各策略组合,并通过该调度搜索模块,计算该调度搜索模块中对应的各策略组合所需的运算开销,确定目标策略组合;
执行模块,用于根据各调度搜索模块对应的目标策略组合,执行所述神经网络模型的运算任务。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~7任一项所述的方法。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310156339.XA CN115829017B (zh) | 2023-02-20 | 2023-02-20 | 一种基于芯粒的数据处理的方法、装置、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310156339.XA CN115829017B (zh) | 2023-02-20 | 2023-02-20 | 一种基于芯粒的数据处理的方法、装置、介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115829017A true CN115829017A (zh) | 2023-03-21 |
CN115829017B CN115829017B (zh) | 2023-05-23 |
Family
ID=85522198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310156339.XA Active CN115829017B (zh) | 2023-02-20 | 2023-02-20 | 一种基于芯粒的数据处理的方法、装置、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115829017B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116306856A (zh) * | 2023-05-17 | 2023-06-23 | 之江实验室 | 一种基于搜索的深度学习模型部署方法及装置 |
CN116401137A (zh) * | 2023-06-06 | 2023-07-07 | 中诚华隆计算机技术有限公司 | 一种芯粒健康状态预测方法、装置、电子设备及存储介质 |
CN117155792A (zh) * | 2023-10-30 | 2023-12-01 | 中诚华隆计算机技术有限公司 | 一种芯粒间通信动态带宽调整方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011044168A (ja) * | 2010-10-13 | 2011-03-03 | Intel Corp | 多数コアプロセッサの信頼性強化 |
US20200151019A1 (en) * | 2019-03-14 | 2020-05-14 | Rednova Innovations,Inc. | OPU-based CNN acceleration method and system |
WO2022063247A1 (zh) * | 2020-09-28 | 2022-03-31 | 华为技术有限公司 | 神经网络结构搜索方法及装置 |
US20220206875A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Software visible and controllable lock-stepping with configurable logical processor granularities |
CN115115043A (zh) * | 2022-06-20 | 2022-09-27 | 上海交通大学 | 片上-片间互连的神经网络芯片硬件架构设计方法及系统 |
CN115421897A (zh) * | 2022-11-07 | 2022-12-02 | 之江实验室 | 一种面向芯粒的深度神经网络流水线并行调度方法及装置 |
CN115460128A (zh) * | 2022-11-09 | 2022-12-09 | 之江实验室 | 一种面向多芯粒组合芯片的片上网络仿真系统 |
CN115658274A (zh) * | 2022-11-14 | 2023-01-31 | 之江实验室 | 芯粒中神经网络推理的模块化调度方法、装置和计算设备 |
-
2023
- 2023-02-20 CN CN202310156339.XA patent/CN115829017B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011044168A (ja) * | 2010-10-13 | 2011-03-03 | Intel Corp | 多数コアプロセッサの信頼性強化 |
US20200151019A1 (en) * | 2019-03-14 | 2020-05-14 | Rednova Innovations,Inc. | OPU-based CNN acceleration method and system |
WO2022063247A1 (zh) * | 2020-09-28 | 2022-03-31 | 华为技术有限公司 | 神经网络结构搜索方法及装置 |
US20220206875A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Software visible and controllable lock-stepping with configurable logical processor granularities |
CN115115043A (zh) * | 2022-06-20 | 2022-09-27 | 上海交通大学 | 片上-片间互连的神经网络芯片硬件架构设计方法及系统 |
CN115421897A (zh) * | 2022-11-07 | 2022-12-02 | 之江实验室 | 一种面向芯粒的深度神经网络流水线并行调度方法及装置 |
CN115460128A (zh) * | 2022-11-09 | 2022-12-09 | 之江实验室 | 一种面向多芯粒组合芯片的片上网络仿真系统 |
CN115658274A (zh) * | 2022-11-14 | 2023-01-31 | 之江实验室 | 芯粒中神经网络推理的模块化调度方法、装置和计算设备 |
Non-Patent Citations (2)
Title |
---|
XINFENG XIE等: "A Transferable Approach for Partitioning Machine Learning Models on Multi-Chip-Modules", 《ARXIV》 * |
朱文平;莫汇宇;刘雷波;魏少军;: "人脸特征点检测算法及处理芯片研究进展", 微纳电子与智能制造 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116306856A (zh) * | 2023-05-17 | 2023-06-23 | 之江实验室 | 一种基于搜索的深度学习模型部署方法及装置 |
CN116306856B (zh) * | 2023-05-17 | 2023-09-05 | 之江实验室 | 一种基于搜索的深度学习模型部署方法及装置 |
CN116401137A (zh) * | 2023-06-06 | 2023-07-07 | 中诚华隆计算机技术有限公司 | 一种芯粒健康状态预测方法、装置、电子设备及存储介质 |
CN116401137B (zh) * | 2023-06-06 | 2023-09-26 | 中诚华隆计算机技术有限公司 | 一种芯粒健康状态预测方法、装置、电子设备及存储介质 |
CN117155792A (zh) * | 2023-10-30 | 2023-12-01 | 中诚华隆计算机技术有限公司 | 一种芯粒间通信动态带宽调整方法及系统 |
CN117155792B (zh) * | 2023-10-30 | 2024-01-12 | 中诚华隆计算机技术有限公司 | 一种芯粒间通信动态带宽调整方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115829017B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115829017A (zh) | 一种基于芯粒的数据处理的方法、装置、介质及设备 | |
US20210097376A1 (en) | Backpressure for Accelerated Deep Learning | |
US11062200B2 (en) | Task synchronization for accelerated deep learning | |
TWI671633B (zh) | 用於傳送資料之設備、方法及系統 | |
WO2020021395A1 (en) | Numerical representation for neural networks | |
JP7430744B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
CN114282661A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN116150563B (zh) | 一种业务执行方法、装置、存储介质及电子设备 | |
CN116304212A (zh) | 一种数据处理系统、方法、设备及存储介质 | |
KR20160037737A (ko) | 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법 | |
CN111832714A (zh) | 运算方法及装置 | |
CN116340004A (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
CN116232919A (zh) | 一种密态数据统计的方法、装置、存储介质及电子设备 | |
CN116069393A (zh) | 一种数据处理方法以及相关装置 | |
KR20230095507A (ko) | 신경망 연산의 스케줄링 방법 및 장치 | |
CN118034924A (zh) | 基于众核系统的数据处理方法、装置、电子设备和介质 | |
CN117436512A (zh) | 一种模型训练的方法及装置 | |
CN115345100A (zh) | 片上网络仿真模型及动态路径规划方法、装置、多核芯片 | |
CN115469846A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |