CN111738434B - 在异构处理单元上执行深度神经网络的方法 - Google Patents
在异构处理单元上执行深度神经网络的方法 Download PDFInfo
- Publication number
- CN111738434B CN111738434B CN202010493830.8A CN202010493830A CN111738434B CN 111738434 B CN111738434 B CN 111738434B CN 202010493830 A CN202010493830 A CN 202010493830A CN 111738434 B CN111738434 B CN 111738434B
- Authority
- CN
- China
- Prior art keywords
- operators
- operator
- nodes
- processing units
- heterogeneous processing
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 114
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 42
- 238000010586 diagram Methods 0.000 claims abstract description 27
- 238000012549 training Methods 0.000 claims abstract description 8
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000011176 pooling Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 238000012417 linear regression Methods 0.000 description 3
- 239000002243 precursor Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000035484 reaction time Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- G06N3/045—Combinations of networks
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种在异构处理单元上执行深度神经网络的方法,包括:通过算子性能模型预测深度神经网络中各个算子在不同异构处理单元上的运行时间和功耗,其中,所述算子性能模型是以不同算子和不同异构处理单元的组合为输入数据,以所述算子在所述不同异构处理单元上的运行时间和功耗为输出数据,通过训练获得;至少基于所述深度神经网络的结构图以及所述算子在所述不同异构处理单元上的运行时间和/或功耗确定所述算子的分配策略;以及依据所述算子的分配策略将所述算子分配到对应的异构处理单元并执行所述深度神经网络。
Description
技术领域
本发明涉及深度学习领域,尤其涉及在异构处理单元上执行深度神经网络的方法。
背景技术
近年来,以深度神经网络(Deep Neural Net,DNN)为代表的深度学习技术取得了长足的进步,各种深度学习模型在图像分类、语音识别和机器翻译等很多任务上取得了突破性的进展。同时,以智能手机为代表的终端设备也已经全面普及。智能手机已经成为了最重要的数据处理终端之一,处理大量图像、视频、语音、文本等各种形式的数据。为了能够使移动设备更加智能,满足日益增长的用户需求,越来越多的应用开发者开始使用DNN作为核心工具和手段。
在移动端执行DNN存在两个方面的挑战,第一是实时性要求。移动端设备通常需要直接和用户进行交互,应用程序的反应时间会极大的影响用户体验,因而应当尽可能缩短DNN的延迟(即运行时间)。第二是运行功耗要求。移动设备通常需要电池供电,因此需要尽可能的减少DNN的功耗,增强电池的续航能力。
现有技术中有关在移动端设备上执行DNN的方法主要有MOSAIC和基于启发式算法(包括贪心策略)两种。MOSAIC是基于动态规划的深度学习模型推理的方法,该方法每次将一个DNN的算子通过动态规划的算法映射到具体的处理单元上,然后顺序地执行每一个算子。然而,MOSAI C没有挖掘DNN模型中分支的并行性,不能充分利用多个处理单元同时进行计算,而是串行地执行DNN中的算子,因此该方法所获得加速比较有限,无法有效缩短延迟。另一方面,不同的DNN包括不同类型的算子、不同的网络层数以及连接方式等,这使得不同的DNN在移动端设备的运行时间和功耗差异非常大,从典型的几毫秒到几秒钟不等。此外移动端的硬件性能也各不相同,不同的SoC性能差异可超过5倍以上。而MOSAI C把DNN模型的所有算子认为是串行执行,分配到在不同的处理单元上执行,不能够利用DNN模型中算子之间并行的的特点将其分配到不同的处理单元并行执行,因而该方法在降低延迟上效果甚微。
基于启发式算法是将DNN网络看作是有向无环图的调度方法,其通常将多个有先后依赖关系的任务(即DNN中的算子)看成是一个有向无环图,并调度到多个不同配置的机器上。资源调度器轮流的查询当前可用的计算单元,如果有单元空闲了,就从待完成的任务队列中取出一个来进行执行。重复的执行以上的步骤直到所有的任务都执行完成。但是,启发式算法不能提前预估任务的执行的时间,因而在调度的时候,很容易出现“流浪者”现象,即一个任务执行时间特别久而其他的计算单元都空闲着,造成负载不均衡。此外,现有针对有向无环图的设备分配算法通常假定所有的计算单元都是同构的,故没有考虑到将两个连续的算子分配到了不同的计算单元上所需的数据转换和通信的开销,因此也无法达到较优的调度执行效果。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种在异构处理单元上执行深度神经网络的方法,包括:通过算子性能模型预测深度神经网络中各个算子在不同异构处理单元上的运行时间和功耗,其中,所述算子性能模型是以不同算子和不同异构处理单元的组合为输入数据,以所述算子在所述不同异构处理单元上的运行时间和功耗为输出数据,通过训练获得;至少基于所述深度神经网络的结构图以及所述算子在所述不同异构处理单元上的运行时间和/或功耗确定所述算子的分配策略;以及依据所述算子的分配策略将所述算子分配到对应的异构处理单元并执行所述深度神经网络。
优选的,其中,所述算子的分配策略通过以下方式确定:遍历所述深度神经网络的结构图,确定所述结构图中的关键节点;根据所述关键节点将所述结构图划分为若干子图;以及依据所述子图之间的依赖关系确定所述子图的分配顺序,包括:当所述子图之间没有依赖关系时,并行地确定所述子图中节点的分配策略分配;或当所述子图之间存在依赖关系时,按照所述依赖关系依次确定所述子图中节点的分配策略。
优选的,其中,所述子图中节点的分配策略依据所述子图中的节点数量确定,包括:当所述子图的节点数量小于指定阈值时,采用整数线性规划方法将所述子图中的所述节点映射到所述对应的异构处理单元;或当所述子图的节点数量大于指定阈值时,采用贪心策略将所述子图中的所述节点映射到所述对应的异构处理单元。
优选的,其中,所述整数线性规划方法包括以下约束条件:所述子图运行的最后结束时刻晚于所述子图中所有节点开始运行的时刻加上其运行时间;所述子图中后继节点开始运行的时刻晚于其前驱节点开始运行的时刻加上所述前驱节点的运行时间;一个所述处理单元同一时刻只能执行一个所述节点;同一节点只需被执行一次;以及所述子图中所有的变量以二值表示。
优选的,上述方法还包括:当有依赖关系的所述算子被分配到不同的所述异构处理单元时,在所述算子之间插入桥接算子,所述桥接算子用于进行不同数据格式转换和数据传输。
优选的,其中,所述依据所述算子的分配策略将所述算子分配到对应的异构处理单元并执行所述深度神经网络包括:当所述算子之间存在依赖关系时,优先执行前驱算子;当所述算子之间不存在依赖关系时,并行执行所述算子。
优选的,其中,所述当所述算子之间存在依赖关系时,优先执行前驱算子包括:获取后继算子的全部前驱算子的执行状态,当所述后继算子的全部前驱算子执行完成后,执行所述后继算子。
优选的,所述方法还包括:获取所述算子在所述对应的异构处理单元上的实际运行时间和功耗;以及利用所述算子和所述对应的异构处理单元的组合以及所述算子在所述对应的异构处理单元上的实际运行时间和功耗训练所述算子性能模型。
本发明还提供了一种存储介质,其中存储有计算机程序,在所述计算机程序被处理器执行时,能够用于实现上述任一项方法。
本发明还提供了一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,在所述计算机程序被处理器执行时,能够用于实现上述任一项方法。
与现有技术相比,本发明的优点在于:通过预测深度神经网络中算子在不同处理单元上的运行时间和功耗,并基于预测值确定算子的分配策略,使得算子能够根据其属性被分配到最优的处理单元上,以实现DNN运行的最小化延迟和/或功耗。另一方面,本发明利用DNN中存在的大量分支结构,通过图划分的方法将DNN划分为若干子图,以快速确定分配策略,并且并行执行没有依赖关系的算子,能够大幅缩短DNN的运行时间并有效减少其功耗。此外,本发明还通过在有直接依赖关系的但被分配在不同的处理单元上执行的算子之间设置桥接算子,能够巧妙地解决算子在异构处理单元上可能产生的额外的数据格式转换和通信开销。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1是根据本发明一个实施例的在异构处理单元上执行深度神经网络的方法;
图2是根据本发明一个实施例的通过图划分确定算子的分配策略的方法;
图3是根据本发明一个实施例的通过图划分确定算子的分配策略的示意图;
图4是实验测试中Inception-V3模块在CPU、GPU以及CPU和GPU 异构融合后的运行时间的对比示意图;
图5是另一个实验测试中pnasnet-large模块使用MOSAIC方法和本发明中的方法的分配策略及执行结果的比较示意图。
具体实施方式
下为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限制本发明。
深度神经网络(即DNN)中的操作(例如卷积、池化、全连接等) 也称为算子,DNN有向无环结构图中的节点也代表算子,这三个术语在本文中可以互换使用。
在DNN中,一方面,不同类型的算子在不同的硬件处理单元上的执行性能有很大差异,例如,卷积核比较大的普通卷积算子在GPU、NPU 上运行性能更好,而池化、全连接算子在CPU上运行则性能更好;另一方面,不同类型的算子包含不同的属性,而不同属性的算子在不同元数据的处理单元上的执行性能各不相同,例如,全连接算子的属性包括长度和宽度,不同的全连接具有不同的长度和宽度;卷积算子的属性包括卷积核的大小、数量、输入和输出的通道数、步长、填充模式等,不同的卷积算子具有不同的上述属性。这些都会直接或间接地影响其运行时间和功耗。此外,算子的数据格式也不尽相同,例如,常见的数据格式包括INT8,I NT32,FLOAT16,FLOAT32等。不同数据格式的算子之间会因数据转换和数据通信产生额外的延迟和功耗。因此,如何在不同异构处理单元上执行深度神经网络中的不同类型、属性、数据格式的算子以实现运行时间和 /或功耗最小,是改善现有技术中在移动端设备运行深度神经网络的性能的的关键。
对此,本发明提出了一种在异构处理单元上执行深度神经网络的方法,通过算子性能模型预测深度神经网络中各个算子在不同异构处理单元上的运行时间和功耗,并至少基于预测的运行时间和/或功耗来确定算子在不同异构处理单元上的分配策略,以优化深度神经网络的执行性能。
算子性能模型用于预测深度神经网络中各个算子在不同异构处理单元上的运行时间和功耗。预测的算子的运行时间和功耗可以分别用函数f 和函数g表示,公式如下:
tij=f(qi,mj) (1)
pij=g(qi,mj) (2)
其中,qi为第i个算子,mj为第j个处理单元,tij为第i个算子在第j 个处理单元上预测的运行时间,pij为第i个算子在第j个处理单元上预测的功耗。
由于算子的属性和处理单元的元数据均会对算子的运行时间和功耗产生影响,在一个实施例中,可以采用多元线性回归模型作为算子性能模型。多元线性回归模型是一个常用的数学模型,用来建模多个自变量(例如本发明中不同算子的各个属性、不同处理单元的各个元数据)和一个因变量(例如本发明中特定算子在特定处理单元上的运行时间和功耗)之间的线性关系。算子的属性依据算子类型各不相同,可以以TFLite中的属性为准,选择算子的属性。例如全连接算子的属性例如可以包括长度和宽度,卷积算子的属性例如可以包括卷积核的大小、输入通道数、输出通道数、步长、填充模式等。计算单元的属性我们选取所有和性能相关的可以测量的属性。例如处理单元的元数据包括CPU的核心数目、架构、主频、内存频率、GPU核心数等等。采用多元线性回归模型,上述公式(1)可以表示为:
tij=f(qi,mj)
=ai+wi1qi1+wi2qi2+…+winqin+wj1mj1+…+wjnmjn (3)
上述公式(2)可以表示为:
pij=g(qi,mj)
=bi+vi1qi1+vi2qi2+…+vinqin+vj1mj1+…+vjnmjn (4)
其中,ai为第i个算子运行时间的偏置项,qin为第i个算子的第n项属性,win为第i个算子的第n项属性的运行时间权重,mjn为第j个设备的第n项元数据,wjn为第j个设备的第n项元数据的运行时间权重,bi为第i个算子的运行功耗偏置项,vin为第i个算子的第n项属性的运行功耗权重,vjn为第j个设备的第n项元数据的运行功耗权重。
在训练算子性能模型阶段,可以将不同算子和不同异构处理单元的组合作为输入数据(其中包括算子的不同属性数据以及处理单元的不同元数据),将不同组合中特定算子在特定处理单元上的运行时间和功耗作为输出数据,训练算子性能模型。在一个实施例中,可以通过执行基准测试程序来获得不同算子在不同异构处理单元上的运行时间和功耗,作为训练算子性能模型所需的输出数据。基准测试程序可以是通用的深度学习推理框架(例如TFLite),通过设置程序中算子对应代码的参数来设置算子不同的属性。
图1示出了根据本发明一个实施例的在异构处理单元上执行深度神经网络的方法。如图1所示,该方法包括以下步骤:
S110,通过算子性能模型预测深度神经网络中各个算子在不同异构处理单元上的运行时间和功耗。
可以通过解析DNN网络模型,从中提取DNN中每个算子的属性。将该DNN中全部算子和硬件设备中可用的不同异构处理单元的所有组合输入算子性能模型,以获得该DNN中每个算子在不同异构处理单元上的运行时间和功耗的预测值。
在一个实施例中,当设置有桥接算子时,算子性能模型还可以用来预测桥接算子进行数据格式转换和传输的运行时间和功耗。其中,输入数据中自变量为算子输入数据(也就是张量)的维度,包括数量(N),通道数量(C),高度(H)和宽度(W),因变量为自变量对应的从一个计算单元转换和传输到另一个计算单元上的延迟和功耗。这一部分仍然采用多元线性规划来训练,具体见公式(3)和公式(4),不再赘述。关于桥接算子的设置,会在下述步骤S120中做详细介绍,在此不做赘述。
S120,至少基于深度神经网络的结构图以及算子在不同异构处理单元上的运行时间和/或功耗确定所述算子的分配策略。
为了提高DNN的性能,最小化其运行时间和/或功耗,可以基于算子在不同异构处理单元上的运行时间和/或功耗的预测值来确定算子的分配策略,按照不同偏好将算子分配到合适的处理单元上。在一个实施例中,可以将算子映射到对应的处理单元,使得深度神经网络中全部算子的运行时间之和最小。在另一个实施例中,可以将算子映射到对应的处理单元,使得深度神经网络中全部算子的功耗之和最小。在其他实施例中,也可以将算子映射到对应的处理单元,使得深度神经网络中全部算子的运行时间之和以及功耗之和都达到最小值。通过将算子在不同异构处理单元上的运行时间和/或功耗作为分配策略的基础,能够根据不同的优化目标(例如最小延迟和/或最小功耗)来执行偏好的分配策略,以满足不同的需求。
在一个实施例中,还可以将DNN模型的结构图划分为若干子图,将为DNN中算子分配对应的处理单元的问题转换成为子图及其中节点分配对应的处理单元的问题。
图2示出了一个实施例的通过图划分确定算子的分配策略的方法。如图2所示,该方法具体包括以下步骤:
S210,遍历深度神经网络的结构图,确定结构图中的关键节点。
关键节点是在一个子图中权重值较大的点。关键节点分为两类,一类是输入节点,一类是输出节点。其中输入节点为子图的入口节点,在子图中只有孩子节点没有父亲节点;输出节点为子图的出口节点,在子图中只有父亲节点。寻找子图的时候,以入口关键节点为源节点,出口节点为目的节点,做广度优先的搜索,在入口节点和出口节点路径上的节点,就划分到当前的子图中。
DNN结构图中的一个节点对应DNN中的一个算子。可以为DNN结构图中每个节点分配权重值,分配的方式如PageRank算法中节点权值更新的方式,每个节点将自己的权值平均分给子节点,子节点将父节点分给的权值做加和作为自己的权值。遍历结构图,选择结构图中权重值较大的节点作为关键节点。
图3示出了一个实施例的通过图划分确定算子的分配策略的示意图。如图3所示,图中每个方框为一个节点,即代表一个算子,例如节点A代表1*1卷积算子,节点B代表平均池化算子,节点C和节点D代表滤波器级联算子。方框之间的箭头表示节点之间的依赖关系,例如节点A是节点B的后继节点,也是节点D的前驱节点。方框中的数字代表节点的权重值,权重值越大越节点重要。每个前驱节点都将其权重值平均分配给其所有后继节点,每个后继节点的权重值是从其所有前驱节点获得的权重值之和。例如,节点C权重值为36,节点C将其权重平均分配给其四个后继节点,每个后继节点的权重值均为9,节点B作为节点C的后继节点之一,其权重值也为9;节点A作为节点B唯一的后继节点,其权重值与节点B 的权重值相等也为9;而节点D有四个前驱节点,每个前驱节点的权重值均为9,所以节点D的权重值为其所有前驱节点权重值之和,即36。同理,节点E的权重值也为36。因此,节点C、节点D和节点E的权重值较大,是该结构图中的关键节点。
S220,根据关键节点将结构图划分为若干子图。
根据结构图中关键节点,可以将DNN结构图划分为若干子图。如图3所示,根据关键节点C、关键节点D以及关键节点E可以将该部分结构图划分为上下两个子图,即子图A和子图B,每个子图中包含若干节点。
S230,依据子图之间的依赖关系确定子图的分配顺序。
可以按照子图之间的依赖关系,从包含DNN输入节点的子图开始,依次确定各个子图及其节点的分配策略。此外,针对实践中DNN模型结构复杂、存在大量的分支结构(例如Inception-V3,NASNet、LSTM模型等)等特点,可以为属于并列的分支且不存在依赖关系的子图同时确定分配策略。
在一个实施例中,当子图之间没有依赖关系时,可以并行地确定子图中节点的分配策略分配;当所述子图之间存在依赖关系时,按照依赖关系依次确定所述子图中节点的分配策略。例如,根据图3中节点之间的箭头可知,子图A是子图B的前驱子图,因此,应当先确定子图A及其节点的分配策略,再确定子图B及其节点的分配策略。
S240,依据子图中的节点数量确定子图中节点的分配策略。
在一个实施例中,可以指定一个阈值,当子图的节点数量小于指定阈值时,采用整数线性规划方法将子图中的节点映射到对应的异构处理单元,即依次预测子图中每个节点在所有的可用的处理单元上的运行时间和功耗,从中选取使得子图中所有节点运行时间之和最少和/或功耗之和最小时节点与对应的处理单元的映射关系作为子图中节点的分配策略。整数线性规划是一种数学的方法,在满足一定约束条件的前提下,来最小化或者最大化目标函数,其中变量均为整数。
在一个实施例中,可以在整数线性规划方法中设置5种约束来最小化功耗,包括:
(1)子图运行的最后结束时刻晚于所有节点开始运行的时刻加上运行时间(包括计算时间和数据格式转换和通信时间);
(2)满足节点之间的依赖关系:子图中后继节点开始运行的时刻晚于其前驱节点开始运行的时刻加上所述前驱节点的运行时间(包括计算时间和数据格式转换和通信时间);
(3)一个处理单元同一时刻只能执行一个节点;
(4)同一节点只需被执行一次;
(5)子图中所有的变量都是二值的。
在另一个实施例中,当子图的节点数量大于指定阈值时,可以采用贪心策略将子图中的节点映射到对应的异构处理单元,使得子图中所有节点的运行时间之和最小,和/或子图中所有节点的功耗之和最小。
在一个实施例中,当子图中算子之间存在依赖关系时,可以按照算子之间的依赖关系依次确定其对应的异构处理单元。例如图3中,节点B和节点A位于同一分支,且节点B是节点A的前驱节点,因此应当先为节点B分配处理单元,再为节点A分配处理单元。
在一个实施例中,当有直接依赖关系的节点被分配到不同的处理单元时,需要在这两个节点中间插入桥接算子(或桥接节点),用于转换数据格式并传输数据。桥接算子的运行时间和功耗应当计算在子图的运行时间和功耗内,因此可以通过算子性能模型根据桥接算子的属性和处理单元的元数据预测桥接算子的延迟和功耗开销。例如在图3中,节点B为节点A 的前驱节点,节点B代表池化算子,而节点A代表卷积算子,如果将节点 B分配到一个CPU处理单元,而将节点A分配到另一个GPU或NPU处理单元时,则需要在节点B和节点A之间插入一个桥接算子O,用于负责在CPU和GPU/NPU进行数据格式的转换和传输,而桥接算子O的运行时间和功耗也应当计算在子图A中所有节点的运行时间之和及功耗之和内。在一个实施例中,桥接算子的处理单元可以和后继节点分配在同一处理单元。
通过图划分方法,能够在保证达到接近最优解的前提下快速确定DN N中算子的分配策略,有效减少算子的分配时间。在实际测试中,对于一个包含600个算子的DNN模型,只需要1-2秒的时间就可以将算子分配到对应的处理单元。
S130,依据算子的分配策略将算子分配到对应的异构处理单元并执行深度神经网络。
如上所述,深度神经网络中的算子之间可能存在依赖关系,因此在对应的处理单元上执行深度神经网络时,也应当依据算子之间的依赖关系按序执行。在一个实施例中,当所述算子之间存在依赖关系时,优先执行前驱算子。可以将前驱算子的输出数据作为其后继算子的输入数据,在前驱算子执行完成后开始执行后续算子。例如图3中,节点B和节点A位于同一分支,且节点B是节点A的前驱节点,因此应当优先执行节点B,再执行节点A。
在一个实施例中,当某后继节点存在并行的多个前驱节点时,可以获取其全部前驱算子的执行状态,并当全部前驱算子执行完成后,执行该后继算子。此时,全部前驱算子的输出数据之和为其后继算子的输入数据。例如图3所示,节点D有四个并行的前驱节点,因此只有当该四个前驱节点均执行完成后,才可以执行节点D,否则节点D处于等待状态。
在一个实施例中,为了控制算子的执行状态,可以为每个算子分别设置从该算子到其前驱算子的链接,并为每个算子添加一个是否开始执行的标志。如果其前驱算子全部执行完成,则可以执行该算子,将其加入到执行列表;否则,该算子处于等待状态。在一个实施例中,可以采用信号量和互斥锁的方式控制算子状态。信号量是线程间共享的特殊变量,通过使用信号量可以控制调用不同处理单元的线程,用于线程间唤醒的机制。当线程要执行算子时,若该算子有前驱算子尚未被执行,则该线程进入休眠状态;当其他线程执行完成该算子的所有前驱算子后,则可使用信号量以唤醒该处于休眠状态的线程,使线程可以执行该算子。互斥锁也是线程间共享的特殊变量,用于保护线程共享的代码区域。通过使用互斥锁来保护算子中是否执行的标志,可以防止多个线程同时读写。
在一个实施例中,当算子之间不存在依赖关系时,可以并行执行算子。如上所述,DNN中存在大量并列的分支结构。通过在不同处理单元上并行执行没有依赖关系的算子,能够大大减少DNN的运行时间。
在一个实施例中,当算子之间设置有桥接算子时,可以优先执行桥接算子。这是因为其他算子可能依赖桥接算子的处理结果。对于多个并行执行算子的处理单元,先执行完成的处理单元需要等到其他并行处理单元执行完成,才能够继续执行其后继算子。在一个实施例中,可以通过为线程设置状态转换表来控制处理单元的执行状态。当一个处理单元线程上的算子执行完成,检查其并行的处理单元是否执行完成,如果满足,则继续执行,并唤醒其他待运行的计算单元的线程,否则进入等待状态。在实现中,如果使用过程间调用的方法,会带来比较大的额外的通信开销,通过使用多线程的技术可以减少开销,达到轻量级的目的。
在一个实施例中,还可以在执行深度神经网络时,获取算子在对应的异构处理单元上的实际运行时间和功耗,并将算子和与其对应的异构处理单元的组合以及该算子在该处理单元上的实际运行时间和功耗加入算子性能模型的训练集,以优化算子性能模型,减小预测所得的算子的运行时间与功耗与实际运行中算子的运行时间和功耗之差。在一个实施例中,可以通过代码插桩的方式,在程序中收集DNN模型的算子在处理单元上执行的延迟和功耗,并将这些结果反馈给算子性能模型,为其提供更多的真实的运行数据,以优化模型,进一步提高其预测的准确率。
在以运行时间为优化目标的实验测试中,相对于传统方法,使用本发明中的方法在异构处理单元上执行深度神经网络,其运行时间显著减少。
图4示出了实验测试中Inception-V3模块在CPU、GPU以及CPU和 GPU异构融合后的运行时间的对比示意图。该实验中忽略了转数和数据传输开销。如图4所示,该Inception-V3模块结构图中有并列的四个分支,每个分支上有数量不同的若干算子。在不考虑转数和数据传输开销的情况下,该模块在单一CPU上运行时间为51.601ms,在单一GPU上运行时间为77.937ms,而使用本发明中的方法在CPU和GPU异构融合处理器上的运行时间为28.808ms,这相对于单一CPU执行的51.601ms减少了44%的延迟。
图5示出了在另一个实验测试中pnasnet-large模块在使用MOSAIC方法和本发明中一个实施例的方法的分配策略及执行结果的比较示意图。其中,图5A示出了pnasnet-large一个模块的结构图划分结果,如图5A所示,该模块结构图划分为8个子图,子图之间的依赖关系由箭头表示。图5B 示出了使用MASAIC方法对图5A的图划分结果确定的分配策略及执行结果。如图5B所示,只有子图_2被分配到GPU,其余子图均被分配到CPU。由于子图_2和子图_6和子图_8之间存在依赖关系,因此其间设置桥接算子(图中用虚箭头表示)。同时,由于MASAIC方法采用串行分配及执行策略,因此处理器总运行时间为各个算子的运行时间之和,图中显示达到 310ms。图5C示出了使用本发明的方法对图5A的图划分结果确定的分配策略及执行结果。如图5C所示,子图_3、子图_5、子图_6与子图_7被分配到CPU,子图_1、子图_2、子图_4与子图_8被分配到GPU。基于子图之间的依赖关系以及分配的处理单元,子图_7与子图_1、子图_8与子图 _5、子图_8与子图_3、子图_3与子图_4、子图_4与子图_6、以及子图_2 和子图_6之间均设置有桥接算子。由于本发明中的方法采用了并行的分配及执行策略,其处理器的运行时间仅有178ms,比MASAIC方法缩短了大约一半的运行时间。
基于上述实施例以及实验结果可以看出,本发明通过利用DNN模型中普遍存在并列的分支结构,以及嵌入式等设备中通常又包含多个异构的处理单元,基于不同算子在不同处理单元上的运行时间和功耗,将DNN 模型中的算子分配到多个最合适的异构处理单元并同时执行,以实现DNN 整体运行时间和/或功耗的最小化。这改变传统方法中只能够在一种设备串行执行DNN的方法,能够大幅提高DNN在移动端设备的执行性能。
最后所应说明的是,以上仅用以说明本发明的技术方案而非限制。尽管对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (9)
1.一种在异构处理单元上执行深度神经网络的方法,包括:
通过算子性能模型预测深度神经网络中各个算子在不同异构处理单元上的运行时间和功耗,其中,所述算子性能模型是以不同算子和不同异构处理单元的组合为输入数据,以所述算子在所述不同异构处理单元上的运行时间和功耗为输出数据,通过训练获得;
至少基于所述深度神经网络的结构图以及所述算子在所述不同异构处理单元上的运行时间和/或功耗确定所述算子的分配策略;以及
依据所述算子的分配策略将所述算子分配到对应的异构处理单元并执行所述深度神经网络,其中,
所述算子的分配策略通过以下方式确定:
遍历所述深度神经网络的结构图,确定所述结构图中的关键节点;
根据所述关键节点将所述结构图划分为若干子图;以及
依据所述子图之间的依赖关系确定所述子图的分配顺序,包括:
当所述子图之间没有依赖关系时,并行地确定所述子图中节点的分配策略分配;或
当所述子图之间存在依赖关系时,按照所述依赖关系依次确定所述子图中节点的分配策略。
2.根据权利要求1所述的方法,其中,所述子图中节点的分配策略依据所述子图中的节点数量确定,包括:
当所述子图的节点数量小于指定阈值时,采用整数线性规划方法将所述子图中的所述节点映射到所述对应的异构处理单元;或
当所述子图的节点数量大于指定阈值时,采用贪心策略将所述子图中的所述节点映射到所述对应的异构处理单元。
3.根据权利要求2所述的方法,其中,所述整数线性规划方法包括以下约束条件:
所述子图运行的最后结束时刻晚于所述子图中所有节点开始运行的时刻加上其运行时间;
所述子图中后继节点开始运行的时刻晚于其前驱节点开始运行的时刻加上所述前驱节点的运行时间;
一个所述处理单元同一时刻只能执行一个所述节点;
同一节点只需被执行一次;以及
所述子图中所有的变量以二值表示。
4.根据权利要求2所述的方法,还包括:
当有依赖关系的所述算子被分配到不同的所述异构处理单元时,在所述算子之间插入桥接算子,所述桥接算子用于进行不同数据格式转换和数据传输。
5.根据权利要求1所述的方法,其中,所述依据所述算子的分配策略将所述算子分配到对应的异构处理单元并执行所述深度神经网络包括:
当所述算子之间存在依赖关系时,优先执行前驱算子;
当所述算子之间不存在依赖关系时,并行执行所述算子。
6.根据权利要求5所述的方法,其中,所述当所述算子之间存在依赖关系时,优先执行前驱算子包括:
获取后继算子的全部前驱算子的执行状态,
当所述后继算子的全部前驱算子执行完成后,执行所述后继算子。
7.根据权利要求1所述的方法,还包括:
获取所述算子在所述对应的异构处理单元上的实际运行时间和功耗;以及
利用所述算子和所述对应的异构处理单元的组合以及所述算子在所述对应的异构处理单元上的实际运行时间和功耗训练所述算子性能模型。
8.一种存储介质,其中存储有计算机程序,在所述计算机程序被处理器执行时,能够用于实现权利要求1-7中任一项所述的方法。
9.一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,在所述计算机程序被处理器执行时,能够用于实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010493830.8A CN111738434B (zh) | 2020-06-03 | 2020-06-03 | 在异构处理单元上执行深度神经网络的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010493830.8A CN111738434B (zh) | 2020-06-03 | 2020-06-03 | 在异构处理单元上执行深度神经网络的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111738434A CN111738434A (zh) | 2020-10-02 |
CN111738434B true CN111738434B (zh) | 2023-04-07 |
Family
ID=72648306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010493830.8A Active CN111738434B (zh) | 2020-06-03 | 2020-06-03 | 在异构处理单元上执行深度神经网络的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111738434B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112101529B (zh) * | 2020-10-14 | 2024-06-21 | 杭州海康威视数字技术股份有限公司 | 一种用于神经网络模型推理跨平台的部署方法及架构 |
CN112381211B (zh) * | 2020-11-20 | 2023-04-28 | 西安电子科技大学 | 基于异构平台执行深度神经网络的系统及方法 |
CN112633516B (zh) * | 2020-12-18 | 2023-06-27 | 上海壁仞智能科技有限公司 | 性能预测和机器学习编译优化方法及装置 |
CN112560985B (zh) * | 2020-12-25 | 2024-01-12 | 北京百度网讯科技有限公司 | 神经网络的搜索方法、装置及电子设备 |
CN113220457B (zh) * | 2021-05-24 | 2024-03-22 | 深圳市智芯华玺信息技术有限公司 | 模型部署方法、模型部署装置、终端设备及可读存储介质 |
CN113867817B (zh) * | 2021-09-24 | 2024-09-17 | 深圳Tcl新技术有限公司 | 一种数据处理方法、装置、电子设备和存储介质 |
CN113993166B (zh) * | 2021-11-03 | 2023-08-04 | 嘉兴国电通新能源科技有限公司 | 一种面向异构d2d网络的小基站抖动避免负载均衡方法 |
CN116187391A (zh) * | 2021-11-24 | 2023-05-30 | 华为技术有限公司 | 神经网络模型的处理方法及装置 |
WO2024000187A1 (en) * | 2022-06-28 | 2024-01-04 | Intel Corporation | Deep learning workload sharding on heterogeneous devices |
CN115762515B (zh) * | 2022-11-08 | 2023-12-01 | 北京百度网讯科技有限公司 | 用于语音识别的神经网络的处理和应用方法、装置及设备 |
CN116166405B (zh) * | 2023-04-21 | 2023-08-01 | 北京燧原智能科技有限公司 | 异构场景下的神经网络任务调度策略确定方法及装置 |
CN116304720B (zh) * | 2023-05-18 | 2023-08-25 | 之江实验室 | 一种代价模型训练的方法、装置、存储介质及电子设备 |
CN118550674A (zh) * | 2024-07-30 | 2024-08-27 | 浙江大华技术股份有限公司 | 基于多算子的任务调度方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515739A (zh) * | 2019-10-23 | 2019-11-29 | 上海燧原智能科技有限公司 | 深度学习神经网络模型负载计算方法、装置、设备及介质 |
CN111062467A (zh) * | 2019-12-18 | 2020-04-24 | 开放智能机器(上海)有限公司 | 一种应用于ai异构编译器的自动切分神经网络子图方法 |
-
2020
- 2020-06-03 CN CN202010493830.8A patent/CN111738434B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515739A (zh) * | 2019-10-23 | 2019-11-29 | 上海燧原智能科技有限公司 | 深度学习神经网络模型负载计算方法、装置、设备及介质 |
CN111062467A (zh) * | 2019-12-18 | 2020-04-24 | 开放智能机器(上海)有限公司 | 一种应用于ai异构编译器的自动切分神经网络子图方法 |
Non-Patent Citations (2)
Title |
---|
"BEYOND DATA AND MODEL PARALLELISM FOR DEEP NEURAL NETWORKS";Zhihao Jia 等;《Part of Proceedings of Machine Learning and Systems 1 (MLSys 2019)》;20191231;全文 * |
"DNNTune: Automatic Benchmarking DNN Models for Mobile-cloud Computing";CHUNWEI XIA 等;《ACM Transactions on Architecture and Code Optimization》;20191126;第16卷;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111738434A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111738434B (zh) | 在异构处理单元上执行深度神经网络的方法 | |
Darte et al. | Scheduling and automatic parallelization | |
CN105956021B (zh) | 一种适用于分布式机器学习的自动化任务并行的方法及其系统 | |
CN111427681A (zh) | 边缘计算中基于资源监控的实时任务匹配调度系统和方法 | |
CN107038070B (zh) | 一种云环境下执行可靠性感知的并行任务调度方法 | |
EP1082687A1 (en) | Computer implemented scheduling system and process using abstract local search technique | |
CN109960576A (zh) | 一种面向cpu-gpu异构的低能耗任务调度策略 | |
CN113127203B (zh) | 面向云边计算的深度学习分布式编译器及构造方法 | |
CN117271101B (zh) | 一种算子融合方法、装置、电子设备及存储介质 | |
CN116755882A (zh) | 一种边缘计算中具有依赖关系任务的计算卸载方法及系统 | |
Bai et al. | AutoGTCO: Graph and tensor co-Optimize for image recognition with transformers on GPU | |
CN114662932A (zh) | 一种节点分级的工作流类定时任务调度方法 | |
CN114217930A (zh) | 一种基于混合任务调度的加速器系统资源优化管理方法 | |
CN117687774A (zh) | 用于算力调度的任务模型训练方法及算力调度方法和系统 | |
Radulescu et al. | LLB: A fast and effective scheduling algorithm for distributed-memory systems | |
CN116306938A (zh) | 一种面向自动驾驶全场景感知的多模型推理加速系统及方法 | |
CN115509724A (zh) | 基于任务分层与回填最早完成时间的任务调度方法及系统 | |
Ghose et al. | A framework for OpenCL task scheduling on heterogeneous multicores | |
Dziurzanski et al. | Energy-aware resource allocation in multi-mode automotive applications with hard real-time constraints | |
Cipolletta et al. | Dataflow restructuring for active memory reduction in deep neural networks | |
Yang et al. | Deep reinforcement agent for failure-aware job scheduling in high-performance computing | |
Mrabet et al. | A clustering allocation and scheduling analysis approach for multiprocessor dependent real-time tasks | |
CN112379998B (zh) | 一种基于任务融合和任务调度的切换时延优化方法 | |
CN117076098B (zh) | 一种动态张量编译优化方法、装置、电子设备及介质 | |
Galleguillos et al. | A job dispatcher for large and heterogeneous HPC systems running modern applications |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231226 Address after: Room 1305, 13th Floor, No.1 Zhongguancun Street, Haidian District, Beijing, 100086 Patentee after: Zhongke Jiahe (Beijing) Technology Co.,Ltd. Address before: 100190 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District Patentee before: Institute of Computing Technology, Chinese Academy of Sciences |
|
TR01 | Transfer of patent right |