CN110674936A - 一种神经网络处理方法、装置、计算机设备及存储介质 - Google Patents
一种神经网络处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110674936A CN110674936A CN201910910117.6A CN201910910117A CN110674936A CN 110674936 A CN110674936 A CN 110674936A CN 201910910117 A CN201910910117 A CN 201910910117A CN 110674936 A CN110674936 A CN 110674936A
- Authority
- CN
- China
- Prior art keywords
- splitting
- neural network
- target
- determining
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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
-
- 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
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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
-
- 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/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明实施例公开了一种神经网络处理方法、装置、计算机设备及存储介质,通过将算子拆分成多个规模更小的算子,这样多核处理器可以直接调用单核架构下的计算库,充分利用了多核处理器的硬件资源。
Description
技术领域
本发明涉及信息处理技术领域,尤其涉及一种神经网络处理方法、装置、计算机设备及存储介质。
背景技术
随着人工智能技术的快速发展,基于内存共享模型的多核处理器已经成为了当前处理器的主流架构,这种多核架构和每个核内的向量处理能力同样可以应用到神经网络计算中。在实际应用中,通常可以采用数据并行的方式来充分利用多核处理器架构所带来的额外硬件资源,即令每个处理器核分别同时执行不同数据在同一个神经网络模型上的计算。然而,多核处理器结构并不能使用这种并行方法来处理推理场景下的小批量且要求低时延的神经网络计算任务。那么,如何保证数据并行与神经网络模型并行相统一,以充分利用多核处理器的硬件资源是亟需解决的技术问题。
发明内容
本发明实施例提供一种神经网络处理方法、装置、计算机设备及存储介质,通过将神经网络计算任务拆分成若干个规模更小的子计算任务,这样多核处理器可以直接调用单核架构下的计算库,充分利用了多核处理器的硬件资源,从而可以避免重现实现的额外工作量。
为实现上述目的,第一方面,本发明实施例提供了一种神经网络处理方法,所述方法应用于人工智能处理器,所述人工智能处理器包括M个人工智能处理器核,M为大于1的正整数;所述方法包括:
获取神经网络模型对应的计算图;其中,所述神经网络模型包含多个算子;
在拆分策略集合中确定所述神经网络计算任务的目标拆分策略;其中,所述拆分策略集合为所述计算图中目标算子对应的拆分方式组成的集合;
根据所述目标拆分策略对所述神经网络计算任务进行拆分,得到多个子计算任务;
将所述子计算任务分配到人工智能处理器中的对应人工智能处理器核上进行处理。
第二方面,本发明实施例提供了一种神经网络处理装置,该装置包括用于执行上述第一方面的方法的单元。具体地,该装置应用于人工智能处理器,所述人工智能处理器包括M个人工智能处理器核,M为大于1的正整数;所述装置包括:
第一获取单元,用于获取神经网络模型对应的计算图;其中,所述神经网络模型包含多个算子;
第一确定单元,用于在拆分策略集合中确定所述神经网络计算任务的目标拆分策略;其中,所述拆分策略集合为所述计算图中目标算子对应的拆分方式组成的集合;
拆分单元,用于根据所述目标拆分策略对所述神经网络计算任务进行拆分,得到多个子计算任务;
执行单元,用于将所述子计算任务分配到人工智能处理器中的对应人工智能处理器核上进行处理。
第三方面,本申请实施例提供了一种计算机设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储支持计算机设备执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
第五方面,本申请实施例提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
实施本申请实施例,通过将神经网络计算任务拆分成若干个规模更小的子计算任务,这样多核处理器可以直接调用单核架构下的计算库,充分利用了多核处理器的硬件资源,从而可以避免重现实现的额外工作量。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1A是本申请实施例提供的一种多核处理器的结构示意图;
图1B是本申请实施例提供的一种人工智能处理器的软件栈的结构示意图;
图2是本申请实施例提供的一种计算机设备的结构示意图;
图3A是本申请实施例提供的一种神经网络处理方法的流程示意图;
图3B是本申请实施例提供的一种人脸识别神经网络模型的结构示意图;
图3C是本申请实施例提供的一种车牌字符识别的神经网络模型的结构示意图;
图4是本申请实施例提供的一种神经网络卷积算子的计算图;
图5A为按照输入数据的N维度进行拆分得到的示意图;
图5B为按照输出数据的C维度进行拆分的示意图;
图5C为按照输入数据C维度进行拆分得到的示意图;
图5D为按照输入数据的H维度进行拆分得到的示意图;
图5E为按照输入数据的W维度进行拆分得到的示意图;
图6是本申请实施例提供的一种神经网络处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
应当理解,本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了便于更好的理解本申请所描述的技术方案,下面先解释本申请实施例所涉及的技术术语:
(1)数据并行。
具体来说,所谓数据并行是指把数据划分成若干块分别映像到不同的处理器上,每一个处理器运行同样的处理程序对所分派的数据进行处理。现有中,大部分并行处理均采用这种处理方式,尤其是对于计算复杂性很高的问题,如流体力学计算、图象处理等。
在本申请实施例中,数据并行可以应用于大规模的神经网络并行训练中。具体来说,数据并行的核心是使用多个处理器同时进行对于同一个神经网络模型的训练。在训练的每一轮迭代中,每个处理器从数据集中获取本轮迭代使用的数据,在每个处理器上完成一轮整个网络的推理及训练计算,并返回本轮计算得到的梯度数据来进行模型的更新。维护权值的服务器在收到所有处理器的梯度之后,使用这些梯度进行模型数据的更新。显然,由于多个处理器会并行地执行训练任务,其等价于在每轮迭代中一个更大批量的数据能够被处理,也就加快了系统完成这个训练任务所需要的时间。所以,数据并行的关键在于每一轮迭代中待处理数据的批量的大小,批量越大,尽可能划分到越多的处理器来并行处理。
(2)模型并行。
在本申请实施例中,模型并行是数据并行之外的另一种神经网络并行计算方式。简单来说,模型并行是通过划分神经网络模型参数的方式把计算负载分配到不同的处理器上。
模型并行和数据并行的最大区别在于:模型并行度是在编译时期静态确定,一旦操作编译完成之后就不可更改,称为模型的固有属性;而数据并行是在运行时期动态指定,同样的模型可以指定不同的数据并行度。此外,受限于硬件的运算核心数和DDR访存带宽,两种并行技术在人工智能处理器上的应用场景和使用定位略有差别:数据并行编程更倾向于获得极致的吞吐率;而模型并行编程更倾向于获得极致的低延时。
(3)多核处理器。当前多核处理器采用的最普遍的结构是基于存储共享的多核结构,如图1A所示,处理器中包含了多个计算核,每个计算核上有独立的缓存,寄存器堆,计算单元以及指令控制单元,所有的计算核共享同一全局存储。
现有中,单个核已经足够完成任何复杂逻辑的计算任务,但其性能受限于摩尔定律和芯片工艺。为了进一步提升处理器的性能,多个计算核被引入处理器中,它们可以被用于处理那些有着较高并行度的计算任务。
在实际应用中,共享存储多核结构是一种经典的多核结构,并且非常适合数据并行的神经网络训练方法。每个核可以作为数据并行中的一个处理器,分别读取不同的数据,然后并行完成网络模型的正反向计算。每个核在计算阶段仍能够保持其在之前单核架构下良好的性能功耗比,与此同时,整个系统的吞吐量也可以随着核数的扩展而增加。
(4)算子拆分。
在本申请实施例中,我们采用算子拆分的方式来实现计算任务的拆分来达到模型并行,即把单个算子拆分成多个可以并行执行的子算子。需要说明的是,这里,拆分前的原始算子和拆分后的若干个子算子都是人工智能处理器所支持的算子,原始的张量数据随着算子的拆分也被拆分成若干个新的子张量数据。反映到计算图上,则是把原来的包含单个算子的计算图细化成了一张包含更多可并行执行的算子的计算图。通过这一实现方式,可以实现类似于模型并行的算子内任务拆分,同时又保证了拆分后的每个子算子都可以复用单核架构下算子的指令实现来进行计算,避免了对原有算子的指令实现的重构。
在本申请实施例中,算子拆分不完全局限于对模型参数的拆分,也会采用数据并行的方式对数据进行拆分,这种方法实际上模糊了模型并行和数据并行的界限。以卷积算子为例,如果把卷积算子的输入数据和权值作为计算图中等同低位的张量数据,那么,数据并行时基于对输入数据的划分来分割计算,而模型并行时基于权值的划分来分割计算,这二者都是通过划分卷积算子相关联的张量数据来实现对计算负载的划分。从这个角度来说,数据并行和模型并行是统一的。
(5)人工智能处理器
人工智能处理器,也称之为专用处理器,在本申请实施例中,人工智能处理器是指针对特定应用或者领域的处理器。例如:图形处理器(GPU,Graphics Processing Unit),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上进行图像运算工作的专用处理器。又例如:神经网络处理器(NPU,Neural Processing Unit),是一种在人工智能领域的应用中针对矩阵乘法运算的专用处理器,采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
(6)人工智能处理器的软件栈
人工智能处理器的软件栈:参见图1B,该软件栈结构10包括人工智能应用100、人工智能框架102、人工智能学习库104、人工智能运行时库106以及驱动108。接下来对其进行具体阐述:
人工智能应用100对应不同的应用场景,提供对应的人工智能算法模型。该算法模型可以直接被人工智能框架102的编程接口解析,在其中一个可能的实现方式中,通过人工智能学习库104将人工智能算法模型转换为二进制指令,调用人工智能运行时库106将二进制指令转换为人工智能学习任务,将该人工智能学习任务放在任务队列中,由驱动108调度任务队列中的人工智能学习任务让底层的人工智能处理器执行。在其中另一个可能的实现方式中,也可以直接调用人工智能运行时库106,运行先前已固化生成的离线运行文件,减少软件架构的中间开销,提高运行效率。
人工智能框架是整个深度学习生态体系中的第一层。早期在Caffe中,Layer被当做是构建神经网络的基本元素,而在之后的人工智能框架,例如TensorFlow、MXNet中,虽然采用了不同的称呼,例如Operator,但与Caffe的layer在核心思想上依旧是相似的,都是将神经网络计算进一步拆分为各类常见的面向张量数据的算子,人工智能框架需要将神经网络映射的计算图结构所表达的深度学习任务具体化成可以在CPU或者人工智能处理器执行的指令和数据。在这个过程中,人工智能框架采用算子作为落实计算任务的具体元素,为每个算子都提供了在CPU或者人工智能处理器上执行的核函数(Kernel),根据计算图,人工智能框架调度执行计算图中每个算子对应的核函数,完成整个神经网络的计算。
为了便于更好的理解本申请,下面具体阐述本申请所描述的技术方案的研究思路:
现有技术中,数据并行的问题在于,其扩展性依赖于处理的数据批量的大小。尽管在训练阶段这通常不会是一个问题,但是对于推理阶段这个前提则难以保证。一般来说,用于实时服务领域(包括视频监控,自动驾驶等)的神经网络模型,处理的数据通常是以流的方式串行输入,导致了每次处理的数据规模很小甚至往往是单张图片。在这种情况下,数据并行不能提供任何并行度,所有的工作任务会集中在单个核上,这使得多核带来的计算资源不能转化成处理任务的速度。
当在线下使用数据集完成了神经网络模型的训练后,就会把模型部署到云端的服务器上来处理外界发来的数据,此时的应用场景就由离线训练变成了在线推理。在在线推理阶段,一个非常重要的指标是时延,也就是从服务器收到待处理数据到返回处理后的结果的时间,进一步来说,是使用神经网络模型处理数据的时间。低时延保证云端服务器能够对客户端发来的数据在最短的时间内做出响应,在一些更加敏感的场景下,直接决定了方案是否可用。因此,在线推理阶段对于人工智能处理器的要求就由处理大批量数据、高吞吐量转变为处理小批量数据、低时延。
在这种情况下,传统的数据并行或者模型并行难以有效降低推理任务的时延。对于数据并行来说,大批量数据是前提,这本身与在线推理小批量数据的特点矛盾。对于模型并行来说,它通常是为了解决一个规模很大的神经网络模型超过了单个设备的内存限制而采用的方法,把算子分配到不同的核上并不能降低网络的时延。为了真正能够在多核人工智能处理器上降低推理任务的时延,必须寻找一种方法,能够把对小批量数据甚至单个数据的推理计算任务合理地分配到多核架构的各个核上,保证每一时刻都有尽可能多的核参与计算,才能充分利用多核架构的资源。一种方法是把神经网络中的每个算子的计算任务都拆分到多个核上计算,这种方法即使在处理单张图片的推理任务时也能保证每一时刻都有多个核参与计算,从而达到了利用多核资源降低时延的目的。
但是,对于多核人工智能处理器来说,还有很多要解决的问题。首先,深度学习人工智能处理器通过定制化自身的硬件设计来适配深度学习算法本身的数据并行特征,提高计算吞吐量,人工智能处理器往往需要足够的数据规模才能达到较高的计算效率,而算子内的进一步拆分会减小每个核上的计算规模。当拆分达到一定粒度,每个核上计算效率的损失会超过拆分增加并行度所带来的收益。因此,必须在拆分并行和计算效率之间,在保证足够计算效率的同时提供足够的并行度。
另一方面,神经网络模型可以看作是一个由通常数以百计甚至千记的算子所构成的复杂计算图。不同种类的算子内的算法逻辑各不相同,这就导致对这些算子进行拆分的方法也不一样。每个算子的拆分,除了平衡自身的计算效率和并行度,还要考虑和前后算子的搭配,甚至于对全局的影响。深度学习的快速发展带来的是越来越多的大规模复杂网络,通过手动方式寻找一种好的并行方法是不现实的,因此需要一种自动化的方法来保证来对于不同的网络都能够给出一种较好的拆分并行策略。
此外,还需要考虑的是对于底层人工智能处理器的可移植性。对于没有足够良好的可编程性的人工智能处理器来说,由单核扩展到多核,并且实现算子内部的拆分并行所带来的修改软件栈的工作量是非常大的。传统的数据并行和模型并行的实现仍然是基于一个处理核完成一个算子的计算任务,所以并不会带来很多额外的工作,而单个算子的跨核并行需要对算子本身实现进行修改,这种修改的难易程度依赖于人工智能处理器的可编程性和原有算子实现逻辑的复杂程度。如何减小在多核架构上实现低时延推理过程中的额外开销,缓解实现过程中工作量对于人工智能处理器本身可编程性的依赖,使得方法能够在未来对于不同的多核人工智能处理器都有一定的通用性也是一个需要考虑的问题。
基于上述分析描述,在本申请实施例中,把一个算子拆分成多个规模更小的子算子,这样可以直接调用单核架构下的计算库,避免了重新实现的额外工作量。比如:一个激活算子在经过拆分后可以得到许多更小的激活算子,这意味着只需要在多个核上调用原有的单核激活函数完成每个子任务,而不需要修改或者重新实现一个多核版本的激活函数。在这个过程中,既需要兼顾每个算子本身的拆分后的计算效率和并行度,也要考虑上下文算子彼此之间在拆分上的相互配合。最终目标是得到一个能够有效降低整个神经网络模型端到端的推理时延的拆分并行方案。
此外,需要说明的是,本申请实施例所提供的神经网络处理方法能够尽量避免对单核处理器计算库进行修改,同时也能够实现神经网络模型在多核处理器上的并行执行。具体地,上层框架通过把神经网络模型中的算子拆分成若干个可以并行执行子算子,对每个子算子,深度学习框架调用计算库生成所述子算子在单个核上执行的机器指令,通过把所述子算子的机器指令加载到不同核上,实现算子在多核处理器上的并行计算。具体地,因为深度学习框架可以使用单核处理器计算库生成子算子的计算指令,神经网络模型中所述算子的输入和输出张量数据随着所述算子被拆分成子算子同样被拆分成相应的子张量数据。
基于上述分析,首先介绍一下本申请所描述的方法可以适用的硬件设备的结构示意图。参见图2,是本申请实施例提供的一种计算机设备的结构示意图。如图2所示,计算机设备20可以包括通用处理器201、存储器202、通信总线203、通信接口204和至少一个人工智能处理器205,通用处理器201、人工智能处理器205通过所述通信总线连接所述存储器202和所述通信接口203。
通用处理器201可以是中央处理单元(Central Processing Unit,CPU),该通用处理器201还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器201可以是微处理器或者该通用处理器201也可以是任何常规的处理器等。
通用处理器201还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的神经网络处理方法的各个步骤可以通过通用处理器201中的硬件的集成逻辑电路或者软件形式的指令完成。
存储器202可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)或其他存储器。本申请实施例中,存储器202用于存储数据以及各种软件程序,例如本申请实施例中根据确定好的目标拆分策略对神经网络模型进行拆分的程序等。
可选的,在本申请实施例中,所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。本实施方式所述的存储器又可以包括:利用电能方式存储信息的装置,如RAM、ROM等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置,如CD或DVD。当然,还有其他方式的存储器,例如量子存储器、石墨烯存储器等等。
通信接口204使用例如但不限于收发器一类的收发装置,来实现计算机设备20与其他设备或通信网络之间的通信。例如,可以通过通信接口204接收其他设备发送的模型文件。
人工智能处理器205可以作为协处理器挂载到主CPU(Host CPU)上,由主CPU为其分配任务。在实际应用中,人工智能处理器205可以实现一种或多种运算。例如,以神经网络处理器(Network Processing Unit,NPU)NPU为例,NPU的核心部分为运算电路,通过控制器控制运算电路提取存储器202中的矩阵数据并进行乘加运算。
可选的,人工智能处理器205可以包括8个集群(cluster),每个cluster中包括4个人工智能处理器核。
可选的,人工智能处理器205可以是可重构体系结构的人工智能处理器。这里,可重构体系结构是指,如果某一人工智能处理器能够利用可重用的硬件资源,根据不同的应用需求,灵活的改变自身的体系结构,以便为每个特定的应用需求提供与之相匹配的体系结构,那么这一人工智能处理器就称为可重构的计算系统,其体系结构称为可重构的体系结构。
应当理解,计算机设备20仅为本申请实施例提供的一个例子,并且,计算机设备20可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
基于图2所示的计算机设备的结构示意图,下面结合图3A所示的本申请实施例提供的一种神经网络处理方法的流程示意图,具体说明在本申请实施例中是如何实现对神经网络模型的拆分的,下面以caffe为例进行详细描述,可以包括但不限于如下步骤:
步骤S300、获取神经网络模型对应的计算图;其中,所述神经网络模型包含多个算子,所述多个算子用于执行神经网络计算任务。
在caffe框架下,所述目标算子可以是神经网络模型中的对应目标层(layer),该目标层为所述神经网络模型中的至少一层。
在本申请实施例中,计算图是指:使用图结构对神经网络模型的计算过程进行描述的一种方式。
在本申请实施例中,神经网络模型可以接收输入数据,并根据接收的输入数据和当前的模型参数生成预测输出。在实际应用中,该神经网络模型可以是回归模型、深度神经网络(deep neural network,DNN)、卷积神经网络模型(Convolutional Neural Networks,CNN)、循环神经网络模型(Recurrent Neural Networks,RNN)等,本申请实施例不作具体限定。
在计算机设备执行神经网络计算任务时,如果该神经网络计算任务具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络模型的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络模型有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
在本申请实施例中,不同的神经网络模型对应着不同的神经网络计算任务。例如,深度学习神经网络模型对应的神经网络计算任务可以为图像分类,文本分类等;卷积神经网络模型对应的神经网络计算任务可以为图像识别,视频分类等;长短时记忆神经网络模型(Long Short Term Memory Network,LSTM)对应的神经网络计算任务可以为语音识别、图片描述、自然语言处理等。
步骤S302、在拆分策略集合中确定所述神经网络计算任务的目标拆分策略;其中,所述拆分策略集合为所述计算图中目标算子对应的拆分方式组成的集合。
在本申请实施例中,在确定拆分策略集合时,可以包括:
根据所述计算图中目标算子对应的并行度、拆分维度、拆分维度大小确定所述目标算子对应的拆分方式;
根据所述目标算子对应的拆分方式确定所述拆分策略集合。
在本申请实施例中,目标算子为多个算子中的一个算子。
在单模型、单输入的场景下,通过增加模型本身的并行度以及使用多个人工智能处理器的运算核(core),获得处理性能的提升(降低延时,提升吞吐率)。我们把处理单模型、单输入的人工智能处理器的运算核(core)的数目称为第一并行度,亦即模型并行度。用户只需要在编译时期指定第一并行度,人工智能运行时库106会自动地将原始的神经网络模型对应的计算图在拓扑结构、输入输出、模型参数等多个维度进行划分,使得划分后的模型能够在多个运算核(core)上并行地执行,并自动的保证多核间的数据同步。举一个实际例子,可以用模型并行技术将VGG16分类网络划分到多个核上,并行地处理同一张输入图片,这样单张图片的分类延时可以获得显著降低。理论上,第一并行度越高,使用的核心数越多,人工智能处理器执行时间越短。
将单个模型同时处理多份输入,每份输入使用不同的运算核心处理,称之为单模型多数据并行计算模式。可以简单理解为把同样的模型复制了多份,每一份模型使用一个或者多个核(取决于第一并行度)处理不同的输入数据。但实际上模型(指令、权值等)并没有复制,而是被所有的核共享了。数据并行度就是指处理的输入数据份数,数据并行度亦称为第二并行度。举个实际例子,可以用数据并行技术,将同一份Alexnet模型复制到32个人工智能处理器的运算核上去执行,分别处理32张不同的图片,从而充分发挥人工智能处理器的算力。
可以理解的是,在仅满足追求高吞吐率的应用场景下,目标算子的并行度为第二并行度。在仅满足特定延时限制的应用场景下,目标算子的并行度为第一并行度。
在本申请实施例中,数据并行与模型并行两种编程方式可以叠加使用,用于满足特定延时限制下还需要追求高吞吐率的应用场景。并行度包括第一并行度和第二并行度。其中,在这种情况下,实际用到的运算核的数目是数据并行度乘以模型并行度,其乘积不能超过人工智能处理器中人工智能处理器运算核的数目。
在本申请实施例中,并行度,是指该算子将被拆分成多少个算子,这一变量通常受限于多核处理器架构的核数,在不超过核数上限的前提下,应该保证并行度为2的整数幂次。
在本申请实施中,保证并行度为2的整数幂次的原因在于:现有中,多核处理器架构中通常是2的整数次幂。如,1,2,4,8,16等等。一个并行度不是2的整数次幂的任务往往会导致人工智能处理器核的调度上产生“碎片”。
在本申请实施例中,拆分维度,是指算子应该沿着哪一逻辑维度对它自身进行拆分,得到一系列子算子。
这里,以卷积神经网络模型为例(具体地,该卷积神经网络用于图像分类或物体检测),神经网络模型的计算图中的张量数据一般有4个维度,分别是表示当前计算所处理的数据的批量大小的N,表示特征图像数量的C,表示特征图像尺寸的H和W。在实际应用中,计算机设备可以选择上述4个维度中的任意一个维度进行拆分。
需要说明的是,选择在何种维度上对算子进行拆分对于拆分方式特别敏感的算子是非常有意义的。例如,对激活算子来说,可以允许其输入数据和输出数据在任意维度上进行拆分。在实际应用中,当一个激活算子的输入数据被分成了若干个子块(从一致性的角度来考虑,输出数据也会进行同样的划分),不妨表示为input0、input1、input2、......、inputm-1和output0、output1、output2、......、outputm-1,则在计算阶段,整个激活算子实际上被拆分成了m个更小的激活算子,这些激活算子彼此之间没有依赖关系,可以运行在多个核上。
在本申请实施例中,拆分维度大小,是指算子沿着拆分维度拆分成一系列子算子之后,每个子算子在该维度上的具体数值。
进一步需要说明的是,将各个维度上拆分数量进行相乘可以得到算子的并行度。
在本申请实施例中,可以根据并行度、拆分维度以及拆分维度大小确定每个目标算子对应的拆分方式,在神经网络模型中包含多个算子的情况下,根据每个目标算子对应的并行度、拆分维度以及拆分维度大小可以确定多个目标算子对应的拆分方式,从而可以构成拆分策略集合。总的来说,在这种情况下,拆分策略集合为根据每个目标算子对应的并行度、拆分维度以及拆分维度大小确定的。
为了便于理解,下面结合具体的实例进行阐述,例如,以caffe为例参考附图3B详细描述。在图3B中,人脸识别神经网络模型中包含多种不同类型的算子(卷积算子、池化算子、全连接算子),其中,各算子之间的连接关系为:卷积层1-池化层1-卷积层2-池化层2-全连接层1-全连接层2。由于这些算子可以允许在任意维度上进行拆分,那么,在这种情况下,计算机设备可以根据并行度、拆分维度以及拆分维度大小确定每个算子各自对应的拆分方式,从而可以构成拆分策略集合。
在其中一种可能的实现方式中,神经网络模型中包含多种不同类型的算子,其中,一些算子可以允许在任意维度上进行拆分,一些算子只支持在有限维度上进行拆分,那么,在这种情况下,计算机设备可以分别确定每个目标算子各自对应的拆分方式,然后,将多个算子中的每个目标算子均支持的拆分方式的交集确定为拆分策略集合。总的来说,在这种情况下,拆分策略集合为根据多个算子中的每个目标算子均支持的拆分方式确定的。通过这一实现方式,可以避免不合理的拆分方式带来的负面影响,例如,加大了计算机设备的资源消耗、导致因拆分后的子算子的规模不均衡而带来的耗时问题等等。
为了便于理解,下面结合具体的实例进行阐述,例如,如图3C所示,车牌字符识别神经网络模型中包含多种不同类型的算子(卷积算子、池化算子、激活算子、softmax算子等),其中,各算子之间的连接关系为:卷积层1-激活函数Relu-最大池化层1-卷积层2-激活函数Relu-最大池化层2-卷积层3-激活函数Relu-最大池化层3-卷积层4-激活函数-最大池化层4-卷积层5-激活函数-最大池化层5-全连接层1-softmax层-输出层。由于卷积算子、池化算子、激活算子可以允许在任意维度上进行拆分,而softmax算子只支持在有限维度上进行拆分,那么,在这种情况下,计算机设备将这多个算子中的每个目标算子均支持的拆分方式的交集确定为拆分策略集合。
在一种可能的实现方式中,神经网络模型中包含多种不同类型的算子,其中,一些算子完全不支持任何形式的拆分,而神经网络模型中的其他算子为了在数据的拆分格式上保持一致,在这种情况下,不对神经网络模型进行拆分。通过这一实现方式,可以避免不合理的拆分方式带来的负面影响,例如,加大了计算机设备的资源消耗、导致因拆分后的子算子的规模不均衡而带来的耗时问题等等。
在本申请实施例中,考虑到不同的算子具有不同的特性,为了避免不合理的拆分方式带来的负面影响,在对算子进行拆分时,计算机设备可以根据算子的类型确定算子的拆分方式。具体地,请参见表1:
表1
Operation | 允许拆分的输入维度 |
卷积算子(Convolution) | N,C,H,W(H和W不应小于卷积核) |
全连接(FC)算子 | N,C |
激活算子(Relu) | N,C,H,W |
Scale | N,C,H,W |
批标准化层(BatchNorm) | N,C,H,W |
分类器算子(Softmax) | 无法拆分要规范化的维度 |
池化算子(Pooling) | N,C,H,W(H和W不应小于卷积核) |
如表1所示,不同类型的算子支持的拆分方式是不同的。通过这一实现方式,可以结合算子的特性对算子进行有针对性地拆分,从而可以避免不合理的拆分方式带来的负面影响,例如,加大了计算机设备的资源消耗、导致因拆分后的子算子的规模不均衡而带来的耗时问题等等。
具体来说,以卷积算子为例,在本申请实施例中,卷积算子的不同拆分方式可以描述为以下5种,这5种情况可以相互交叉,同时存在,可以保证足够的拆分度:
(1)当卷积算子输入数据的N维度超过1时,在N维度上进行拆分;
(2)在卷积算子的输入数据的C维度上进行拆分;
(3)在卷积算子的输出数据的C维度上进行拆分;
(4)在卷积算子的输入数据的H维度上进行拆分;
(5)在卷积算子的输入数据的W维度上进行拆分。
可以知道的是,上述五种拆分方式都是把原始的卷积算子拆分成更小的卷积。
为了便于理解,下面结合具体的实例进行阐述。如图4所示,是本申请实施例提供的一种卷积算子的原始计算图的示意图。对于卷积算子conv来说,其包含4个维度上的输入数据(input),并在权值矩阵的作用下,可以得到输出数据(output)。如图5A-5E所示,为本申请实施例提供的计算图上卷积算子在并行度为2的条件下的多种拆分方式。具体地,图5A为按照输入数据的N维度进行拆分得到的示意图;图5B为按照输出数据的C维度进行拆分的示意图;图5C为按照输入数据C维度进行拆分得到的示意图;图5D为按照输入数据的H维度进行拆分得到的示意图;图5E为按照输入数据的W维度进行拆分得到的示意图。需要说明的是,图中每个张量数据给出了各个维度的起点和终点,用来明确拆分后的子张量数据与原始张量数据之间的关系。图中n表示输入数据批量大小、ic表示输入数据特征图像数量、ih表示输入数据特征图像的长度、iw表示输入数据特征图像的宽度、oc表示输出数据特征图像数量、oh表示输出数据特征图像的长度、ow表示输出数据特征图像的宽度、kh表示卷积核窗口的长度、kw表示卷积核窗口宽度。在实际应用中,这些拆分方式执行在不同的维度上,同时彼此之间可以通过相互组合形成更多的拆分方式,从而可以提供足够的并行度来利用多核处理器的资源,同时在一定程度上可以避免单个维度的过度拆分影响计算机设备的计算效率。
又例如,以分类器(softmax)算子为例,计算机设备可以在softmax算子概率归一化的维度之外的任意一个或几个维度上对softmax算子进行拆分,拆分后将得到若干个可以并行执行的softmax算子。
在本申请实施例中,所述在拆分策略集合中确定所述神经网络计算任务的目标拆分策略,包括:
分别确定所述拆分策略集合中目标算子对应的拆分方式对应的权重值;
根据权重值确定所述目标拆分策略。
在本申请实施例中,可以将目标算子在某种拆分方式下在多核处理器上并行执行时所用的时间表征为权重值。这里,需要说明的是,多核处理器完成一个算子的计算时间取决于执行拆分后的子计算任务耗时最长的那个核的时间。
在本申请实施例中,可以通过如下步骤A1-A4确定目标算子拆分方式的权重值:
A1、确定拆分后的n个子算子的计算负载c1,c2,…,cn。其中,ci根据拆分后第i个子算子的类型和规模计算得到;
A2、确定n个子算子的访存数据量d1,d2,…,dn。其中,di根据拆分后第i个子算子的类型和规模计算得到;
A3、确定每个人工智能处理器核的计算吞吐速率α。α由人工智能处理器本身的性能参数所决定;
A4、确定每个人工智能处理器核的访存带宽β。通常来说,人工智能处理器的多个核共享有限的访存带宽,因此β=B/n。其中,B是多核人工智能处理器的总带宽。
基于上述确定好的参数,计算机设备可以根据如下计算公式(1)来计算目标算子的拆分方式的权重值:
t=maxi=1,...,n(max(ci/α,di/β)) (1)
其中,计算公式中内侧的取最大值操作是基于算子实现的计算部分和访存部分之间能够相互隐藏,即计算和访存可以做到尽量并发执行。对于一些人工智能处理器来说,当子算子的规模过小时会导致每个核的计算吞吐量降低,可以对α进行进一步修正使估值更加准确。计算公式中外侧的取最大值操作就是多核人工智能处理器完成一个算子的计算的时间取决于执行子计算任务耗时最长的那个核的时间。
最后,将目标算子在某种拆分方式下的权重确定为拆分策略的权重。可以理解的是,通过上述实现方式可以确定拆分策略集合中包含的拆分策略的权重。
需要说明的是,上述计算权重的方式仅仅是例举的部分情况,而不是穷举,本领域技术人员在理解本申请技术方案的精髓的情况下,可能会在本申请技术方案的基础上产生其它的变形或者变换,比如:衡量拆分策略的权重不仅仅可以是执行子计算任务的所花费的时间,也可以是执行子计算任务的吞吐量。或也可以通过实际测量在多核人工智能处理器上执行拆分策略对应的算子拆分方式下的所有子计算任务的时间来确定拆分策略权重。但只要其实现的功能以及达到的技术效果与本申请类似,那么均应当属于本申请的保护范围。
在本申请实施例中,当计算机设备根据上述描述的方法确定好了拆分策略集合中的目标算子对应的拆分方式的权重值之后,计算机设备可以将权重值最小的拆分策略确定为神经网络模型的目标拆分策略。
步骤S304、根据所述目标拆分策略对所述神经网络计算任务进行拆分,得到多个子计算任务。
步骤S306、将所述子计算任务分配到人工智能处理器中的对应人工智能处理器核上进行处理。
如前所述,本申请实施例所描述的技术方案的核心思想为:通过把神经网络模型中的目标算子的计算任务拆分成更小的子计算任务分配到多个核上并行执行来充分利用多核处理器结构芯片的硬件资源。
这里,由于拆分后的每个子算子都可以复用单核架构下算子的指令实现来进行计算,从而可以避免对原有算子的指令实现的重构。
在本申请实施例中,神经网络模型用于执行某个特定的神经网络计算任务,例如,人脸识别;又例如,边缘检测;又例如,语义分析等等。这里,运行结果是指,计算机设备执行特定神经网络计算任务时的结果,可以包括但不限于:神经网络模型的精度、神经网络模型的运行时间等等。在实际应用中,计算机设备可以输出该运行结果,例如,计算机设备通过显示屏显示该运行结果。
实施本申请实施例,通过将神经网络计算任务拆分成若干个规模更小的子计算任务,这样多核处理器可以直接调用单核架构下的计算库,充分利用了多核处理器的硬件资源,从而可以避免重现实现的额外工作量。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图3A的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3A中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关装置。
参见图6,图6是本申请实施例提供的一种神经网络处理装置的结构示意图,该装置60至少可以包括:
第一获取单元600,用于获取神经网络模型对应的计算图;其中,所述神经网络模型包含多个算子;
第一确定单元602,用于在拆分策略集合中确定所述神经网络计算任务的目标拆分策略;其中,所述拆分策略集合为所述计算图中目标算子对应的拆分方式组成的集合;
拆分单元604,用于根据所述目标拆分策略对所述神经网络计算任务进行拆分,得到多个子计算任务;
执行单元606,用于在所述M个人工智能处理器核上分别调用所述多个子计算任务,得到运行结果。
在一种可能的实现方式中,所述装置60还可以包括:
第二确定单元608,用于根据计算图中目标算子对应的并行度、拆分维度、拆分维度大小确定所述目标算子对应的拆分方式;
第三确定单元6010,用于根据所述目标算子对应的拆分方式确定所述拆分策略集合。
在一种可能的实现方式中,所述第三确定单元6010具体用于:
将每个目标算子支持的拆分方式的交集确定为所述拆分策略集合。
在其中一种可能的实现方式中,所述第一确定单元602包括第一确定子单元和第二确定子单元;其中,
所述第一确定子单元,用于分别确定所述拆分策略集合中目标算子对应的拆分方式的权重值;
所述第二确定子单元,用于根据权重值确定所述目标拆分策略。
在一种可能的实现方式中,所述权重值为根据拆分策略中包含的目标算子算子的运算操作类型、目标算子涉及的数据规模和多核处理器的硬件参数确定的。
在一种可能的实现方式中,所述装置60还可以包括:
第二获取单元6012,用于获取目标算子的运算操作类型;
第四确定单元6014,用于根据所述目标算子的运算操作类型确定所述目标算子的拆分方式。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
所述作为分离部件说明的单元或模块可以是物理上分开的,也可以不是物理上分开的。作为单元或模块说明的部件可以是物理单元,也可以不是物理单元,即可以位于一个装置中,或者也可以分布到多个装置上。本披露中实施例的方案可以根据实际的需要选择其中的部分或者全部单元来实现。
此外,这里需要指出的是,本申请实施例还提供了一种计算机存储介质,用于存储为上述图2所示的计算机设备所用的计算机软件指令,其包含用于执行上述方法实施例所涉及的程序。通过执行存储的程序,可以实现神经网络模型处理,以充分利用多核处理的资源。
由上可见,本申请实施例提供的神经网络处理方法、装置、计算机设备和存储介质,该方法通过将神经网络计算任务拆分成若干个规模更小的子计算任务,这样多核处理器可以直接调用单核架构下的计算库,充分利用了多核处理器的硬件资源,从而可以避免重现实现的额外工作量。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
进一步地,依据以下条款可更好地理解前述内容:
例如,条款A1,一种神经网络处理方法,其特征在于,所述方法应用于人工智能处理器,所述人工智能处理器包括M个人工智能处理器核,M为大于1的正整数;所述方法包括:
获取神经网络模型对应的计算图;其中,所述神经网络模型包含多个算子;
在拆分策略集合中确定所述神经网络计算任务的目标拆分策略;其中,所述拆分策略集合为所述计算图中目标算子对应的拆分方式组成的集合;
根据所述目标拆分策略对所述神经网络计算任务进行拆分,得到多个子计算任务;
将所述子计算任务分配到人工智能处理器中的对应人工智能处理器核上进行处理。
A2.根据A1所述的方法,所述获取神经网络模型对应的计算图之后,所述在拆分策略集合中确定所述神经网络计算任务的目标拆分策略之前,还包括:
根据所述计算图中目标算子对应的并行度、拆分维度、拆分维度大小确定所述目标算子对应的拆分方式;
根据所述目标算子对应的拆分方式确定所述拆分策略集合。
A3.根据A2所述的方法,所述根据所述目标算子对应的拆分方式确定所述拆分策略集合,包括:
将每个目标算子支持的拆分方式的交集确定为所述拆分策略集合。
A4.根据A1所述的方法,所述在拆分策略集合中确定所述神经网络计算任务的目标拆分策略,包括:
分别确定所述拆分策略集合中目标算子对应的拆分方式的权重值;
根据权重值确定所述目标拆分策略。
A5.根据A4所述的方法,所述权重值为根据拆分策略中包含的目标算子的运算操作类型、目标算子涉及的数据规模和多核处理器的硬件参数确定的。
A6.根据A1-A4任一项所述的方法,所述方法还包括:
获取目标算子的运算操作类型;
根据所述目标算子的运算操作类型确定所述目标算子的拆分方式。
A7.根据A2所述的方法,所述目标算子对应的并行度包括第一并行度或第二并行度。
A8.根据A2所述的方法,所述目标算子对应的并行度包括第一并行度和第二并行度;其中,所述第一并行度乘以第二并行度的结果小于等于人工智能处理器中的人工智能处理器核的数目。
B1.一种神经网络处理装置,其特征在于,所述装置应用于人工智能处理器,所述人工智能处理器包括M个人工智能处理器核,M为大于1的正整数;所述装置包括:
第一获取单元,用于获取神经网络模型对应的计算图;其中,所述神经网络模型包含多个算子;
第一确定单元,用于在拆分策略集合中确定所述神经网络计算任务的目标拆分策略;其中,所述拆分策略集合为所述计算图中目标算子对应的拆分方式组成的集合;
拆分单元,用于根据所述目标拆分策略对所述神经网络计算任务进行拆分,得到多个子计算任务;
执行单元,用于将所述子计算任务分配到人工智能处理器中的对应人工智能处理器核上进行处理。
B2.根据B1所述的装置,所述装置还包括:
第二确定单元,用于根据计算图中目标算子对应的并行度、拆分维度、拆分维度大小确定所述目标算子对应的拆分方式;
第三确定单元,用于根据所述目标算子对应的拆分方式确定所述拆分策略集合。
B3.根据B2所述的装置,所述第三确定单元具体用于:
将每个目标算子支持的拆分方式的交集确定为所述拆分策略集合。
B4.根据B1所述的装置,所述第一确定单元包括第一确定子单元和第二确定子单元;其中,
所述第一确定子单元,用于分别确定所述拆分策略集合中目标算子对应的拆分方式的权重值;
所述第二确定子单元,用于根据权重值确定所述目标拆分策略。
B5.根据B4所述的装置,所述权重值为根据拆分策略中包含的目标算子的运算操作类型、目标算子涉及的数据规模和多核处理器的硬件参数确定的。
B6.根据B1-B4任一项所述的装置,所述装置还包括:
第二获取单元,用于获取目标算子的运算操作类型;
第四确定单元,用于根据所述目标算子的运算操作类型确定所述目标算子的拆分方式。
C1.一种计算机设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求A1-A8任一项所述的方法。
D1.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求A1-A8任一项所述的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
Claims (16)
1.一种神经网络处理方法,其特征在于,所述方法应用于人工智能处理器,所述人工智能处理器包括M个人工智能处理器核,M为大于1的正整数;所述方法包括:
获取神经网络模型对应的计算图;其中,所述计算图中包含多个算子;
在拆分策略集合中确定所述神经网络计算任务的目标拆分策略;其中,所述拆分策略集合为所述计算图中目标算子对应的拆分方式组成的集合;
根据所述目标拆分策略对所述神经网络计算任务进行拆分,得到多个子计算任务;
将所述子计算任务分配到人工智能处理器中的对应人工智能处理器核上进行处理。
2.根据权利要求1所述的方法,其特征在于,所述获取神经网络模型对应的计算图之后,所述在拆分策略集合中确定所述神经网络计算任务的目标拆分策略之前,还包括:
根据所述计算图中目标算子对应的并行度、拆分维度、拆分维度大小确定所述目标算子对应的拆分方式;
根据所述目标算子对应的拆分方式确定所述拆分策略集合。
3.根据权利要求2所述的方法,其特征在于,所述根据所述目标算子对应的拆分方式确定所述拆分策略集合,包括:
将每个目标算子支持的拆分方式的交集确定为所述拆分策略集合。
4.根据权利要求1所述的方法,其特征在于,所述在拆分策略集合中确定所述神经网络计算任务的目标拆分策略,包括:
分别确定所述拆分策略集合中目标算子对应的拆分方式的权重值;
根据权重值确定所述目标拆分策略。
5.根据权利要求4所述的方法,其特征在于,所述权重值为根据拆分策略中包含的目标算子的运算操作类型、目标算子涉及的数据规模和多核处理器的硬件参数确定的。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
获取目标算子的运算操作类型;
根据所述目标算子的运算操作类型确定所述目标算子的拆分方式。
7.根据权利要求2所述的方法,其特征在于,所述目标算子对应的并行度包括第一并行度或第二并行度。
8.根据权利要求2所述的方法,其特征在于,所述目标算子对应的并行度包括第一并行度和第二并行度;其中,所述第一并行度乘以第二并行度的结果小于等于人工智能处理器中的人工智能处理器核的数目。
9.一种神经网络处理装置,其特征在于,所述装置应用于人工智能处理器,所述人工智能处理器包括M个人工智能处理器核,M为大于1的正整数;所述装置包括:
第一获取单元,用于获取神经网络模型对应的计算图;其中,所述神经网络模型包含多个算子;
第一确定单元,用于在拆分策略集合中确定所述神经网络计算任务的目标拆分策略;其中,所述拆分策略集合为所述计算图中目标算子对应的拆分方式组成的集合;
拆分单元,用于根据所述目标拆分策略对所述神经网络计算任务进行拆分,得到多个子计算任务;
执行单元,用于将所述子计算任务分配到人工智能处理器中的对应人工智能处理器核上进行处理。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第二确定单元,用于根据计算图中目标算子对应的并行度、拆分维度、拆分维度大小确定所述目标算子对应的拆分方式;
第三确定单元,用于根据所述目标算子对应的拆分方式确定所述拆分策略集合。
11.根据权利要求10所述的装置,其特征在于,所述第三确定单元具体用于:
将每个目标算子支持的拆分方式的交集确定为所述拆分策略集合。
12.根据权利要求9所述的装置,其特征在于,所述第一确定单元包括第一确定子单元和第二确定子单元;其中,
所述第一确定子单元,用于分别确定所述拆分策略集合中目标算子对应的拆分方式的权重值;
所述第二确定子单元,用于根据权重值确定所述目标拆分策略。
13.根据权利要求12所述的装置,其特征在于,所述权重值为根据拆分策略中包含的目标算子的运算操作类型、目标算子涉及的数据规模和多核处理器的硬件参数确定的。
14.根据权利要求9-13任一项所述的装置,其特征在于,所述装置还包括:
第二获取单元,用于获取目标算子的运算操作类型;
第四确定单元,用于根据所述目标算子的运算操作类型确定所述目标算子的拆分方式。
15.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-8任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-8任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910910117.6A CN110674936A (zh) | 2019-09-24 | 2019-09-24 | 一种神经网络处理方法、装置、计算机设备及存储介质 |
PCT/CN2020/116933 WO2021057746A1 (zh) | 2019-09-24 | 2020-09-22 | 神经网络处理方法、装置、计算机设备及存储介质 |
US17/622,702 US20220383082A1 (en) | 2019-09-24 | 2020-09-22 | Neural network processing method and apparatus, computer device and storage medium |
EP20869294.7A EP4036810A4 (en) | 2019-09-24 | 2020-09-22 | NEURAL NETWORK PROCESSING METHOD AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIUM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910910117.6A CN110674936A (zh) | 2019-09-24 | 2019-09-24 | 一种神经网络处理方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110674936A true CN110674936A (zh) | 2020-01-10 |
Family
ID=69079226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910910117.6A Pending CN110674936A (zh) | 2019-09-24 | 2019-09-24 | 一种神经网络处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110674936A (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111274034A (zh) * | 2020-01-19 | 2020-06-12 | 北京奇艺世纪科技有限公司 | 模型推理的资源分配方法、装置、计算机设备和存储介质 |
CN111339027A (zh) * | 2020-02-25 | 2020-06-26 | 中国科学院苏州纳米技术与纳米仿生研究所 | 可重构的人工智能核心与异构多核芯片的自动设计方法 |
CN111340237A (zh) * | 2020-03-05 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 数据处理和模型运行方法、装置和计算机设备 |
CN111443917A (zh) * | 2020-03-26 | 2020-07-24 | 上海寒武纪信息科技有限公司 | 神经网络运行优化方法、装置及相关产品 |
CN111767246A (zh) * | 2020-06-09 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 数据处理方法、相关设备及计算机可读介质 |
CN111966361A (zh) * | 2020-09-25 | 2020-11-20 | 北京百度网讯科技有限公司 | 用于确定待部署模型的方法、装置、设备及其存储介质 |
CN112084023A (zh) * | 2020-08-21 | 2020-12-15 | 安徽寒武纪信息科技有限公司 | 数据并行处理的方法、电子设备及计算机可读存储介质 |
CN112101529A (zh) * | 2020-10-14 | 2020-12-18 | 杭州海康威视数字技术股份有限公司 | 一种用于神经网络模型推理跨平台的部署方法及架构 |
CN112269992A (zh) * | 2020-06-01 | 2021-01-26 | 中国科学院信息工程研究所 | 基于人工智能处理器的实时恶意样本检测方法及电子装置 |
WO2021057746A1 (zh) * | 2019-09-24 | 2021-04-01 | 安徽寒武纪信息科技有限公司 | 神经网络处理方法、装置、计算机设备及存储介质 |
CN112631778A (zh) * | 2020-12-27 | 2021-04-09 | 苏州浪潮智能科技有限公司 | 一种基于fpga云的计算优化方法、系统、存储介质及设备 |
CN112650590A (zh) * | 2020-12-29 | 2021-04-13 | 北京奇艺世纪科技有限公司 | 任务的处理方法、装置及系统、分配方法和装置 |
CN112884127A (zh) * | 2021-03-01 | 2021-06-01 | 厦门美图之家科技有限公司 | 多处理器并行神经网络加速方法、装置、设备和存储介质 |
CN113204412A (zh) * | 2020-01-31 | 2021-08-03 | 伊姆西Ip控股有限责任公司 | 用于任务调度的方法、电子设备和计算机存储介质 |
CN113220457A (zh) * | 2021-05-24 | 2021-08-06 | 交叉信息核心技术研究院(西安)有限公司 | 模型部署方法、模型部署装置、终端设备及可读存储介质 |
CN113469350A (zh) * | 2021-07-07 | 2021-10-01 | 武汉魅瞳科技有限公司 | 一种适于npu的深度卷积神经网络加速方法和系统 |
CN113469351A (zh) * | 2020-03-30 | 2021-10-01 | 嘉楠明芯(北京)科技有限公司 | 一种数据处理方法、装置及存储介质 |
WO2022052973A1 (zh) * | 2020-09-10 | 2022-03-17 | 阿里巴巴集团控股有限公司 | 一种模型处理方法、装置、设备及计算机可读存储介质 |
CN115858178A (zh) * | 2023-02-21 | 2023-03-28 | 芯砺智能科技(上海)有限公司 | 一种卷积计算中资源共享的方法、装置、介质及设备 |
CN115883564A (zh) * | 2023-02-21 | 2023-03-31 | 青岛创新奇智科技集团股份有限公司 | 一种媒体流处理方法、装置、电子设备及存储介质 |
CN116362316A (zh) * | 2023-05-29 | 2023-06-30 | 成都阿加犀智能科技有限公司 | 一种模型转换方法、装置、存储介质及电子设备 |
CN116483482A (zh) * | 2023-05-19 | 2023-07-25 | 北京百度网讯科技有限公司 | 深度学习任务处理方法、系统、装置、设备及介质 |
WO2023197857A1 (zh) * | 2022-04-11 | 2023-10-19 | 华为技术有限公司 | 一种模型切分方法及其相关设备 |
CN117271424A (zh) * | 2023-11-24 | 2023-12-22 | 北京中星微人工智能芯片技术有限公司 | 基于多模融合计算框架的处理装置和处理方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902819A (zh) * | 2019-02-12 | 2019-06-18 | Oppo广东移动通信有限公司 | 神经网络计算方法、装置、移动终端及存储介质 |
-
2019
- 2019-09-24 CN CN201910910117.6A patent/CN110674936A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902819A (zh) * | 2019-02-12 | 2019-06-18 | Oppo广东移动通信有限公司 | 神经网络计算方法、装置、移动终端及存储介质 |
Non-Patent Citations (1)
Title |
---|
张潇 支天: "面向多核处理器的机器学习推理框架", 《计算机研究与发展》 * |
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021057746A1 (zh) * | 2019-09-24 | 2021-04-01 | 安徽寒武纪信息科技有限公司 | 神经网络处理方法、装置、计算机设备及存储介质 |
CN111274034A (zh) * | 2020-01-19 | 2020-06-12 | 北京奇艺世纪科技有限公司 | 模型推理的资源分配方法、装置、计算机设备和存储介质 |
CN111274034B (zh) * | 2020-01-19 | 2023-06-30 | 北京奇艺世纪科技有限公司 | 模型推理的资源分配方法、装置、计算机设备和存储介质 |
CN113204412A (zh) * | 2020-01-31 | 2021-08-03 | 伊姆西Ip控股有限责任公司 | 用于任务调度的方法、电子设备和计算机存储介质 |
CN111339027A (zh) * | 2020-02-25 | 2020-06-26 | 中国科学院苏州纳米技术与纳米仿生研究所 | 可重构的人工智能核心与异构多核芯片的自动设计方法 |
CN111339027B (zh) * | 2020-02-25 | 2023-11-28 | 中国科学院苏州纳米技术与纳米仿生研究所 | 可重构的人工智能核心与异构多核芯片的自动设计方法 |
CN111340237A (zh) * | 2020-03-05 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 数据处理和模型运行方法、装置和计算机设备 |
CN111340237B (zh) * | 2020-03-05 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 数据处理和模型运行方法、装置和计算机设备 |
CN111443917A (zh) * | 2020-03-26 | 2020-07-24 | 上海寒武纪信息科技有限公司 | 神经网络运行优化方法、装置及相关产品 |
CN111443917B (zh) * | 2020-03-26 | 2023-12-22 | 上海寒武纪信息科技有限公司 | 神经网络运行优化方法、装置及相关产品 |
CN113469351A (zh) * | 2020-03-30 | 2021-10-01 | 嘉楠明芯(北京)科技有限公司 | 一种数据处理方法、装置及存储介质 |
CN112269992B (zh) * | 2020-06-01 | 2023-10-20 | 中国科学院信息工程研究所 | 基于人工智能处理器的实时恶意样本检测方法及电子装置 |
CN112269992A (zh) * | 2020-06-01 | 2021-01-26 | 中国科学院信息工程研究所 | 基于人工智能处理器的实时恶意样本检测方法及电子装置 |
CN111767246B (zh) * | 2020-06-09 | 2024-03-05 | 上海寒武纪信息科技有限公司 | 数据处理方法、相关设备及计算机可读介质 |
CN111767246A (zh) * | 2020-06-09 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 数据处理方法、相关设备及计算机可读介质 |
CN112084023A (zh) * | 2020-08-21 | 2020-12-15 | 安徽寒武纪信息科技有限公司 | 数据并行处理的方法、电子设备及计算机可读存储介质 |
WO2022052973A1 (zh) * | 2020-09-10 | 2022-03-17 | 阿里巴巴集团控股有限公司 | 一种模型处理方法、装置、设备及计算机可读存储介质 |
CN111966361A (zh) * | 2020-09-25 | 2020-11-20 | 北京百度网讯科技有限公司 | 用于确定待部署模型的方法、装置、设备及其存储介质 |
CN111966361B (zh) * | 2020-09-25 | 2024-04-05 | 北京百度网讯科技有限公司 | 用于确定待部署模型的方法、装置、设备及其存储介质 |
CN112101529A (zh) * | 2020-10-14 | 2020-12-18 | 杭州海康威视数字技术股份有限公司 | 一种用于神经网络模型推理跨平台的部署方法及架构 |
CN112631778A (zh) * | 2020-12-27 | 2021-04-09 | 苏州浪潮智能科技有限公司 | 一种基于fpga云的计算优化方法、系统、存储介质及设备 |
CN112631778B (zh) * | 2020-12-27 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种基于fpga云的计算优化方法、系统、存储介质及设备 |
CN112650590B (zh) * | 2020-12-29 | 2024-03-15 | 北京奇艺世纪科技有限公司 | 任务的处理方法、装置及系统、分配方法和装置 |
CN112650590A (zh) * | 2020-12-29 | 2021-04-13 | 北京奇艺世纪科技有限公司 | 任务的处理方法、装置及系统、分配方法和装置 |
CN112884127A (zh) * | 2021-03-01 | 2021-06-01 | 厦门美图之家科技有限公司 | 多处理器并行神经网络加速方法、装置、设备和存储介质 |
CN113220457B (zh) * | 2021-05-24 | 2024-03-22 | 深圳市智芯华玺信息技术有限公司 | 模型部署方法、模型部署装置、终端设备及可读存储介质 |
CN113220457A (zh) * | 2021-05-24 | 2021-08-06 | 交叉信息核心技术研究院(西安)有限公司 | 模型部署方法、模型部署装置、终端设备及可读存储介质 |
CN113469350B (zh) * | 2021-07-07 | 2023-03-24 | 武汉魅瞳科技有限公司 | 一种适于npu的深度卷积神经网络加速方法和系统 |
CN113469350A (zh) * | 2021-07-07 | 2021-10-01 | 武汉魅瞳科技有限公司 | 一种适于npu的深度卷积神经网络加速方法和系统 |
WO2023197857A1 (zh) * | 2022-04-11 | 2023-10-19 | 华为技术有限公司 | 一种模型切分方法及其相关设备 |
CN115858178A (zh) * | 2023-02-21 | 2023-03-28 | 芯砺智能科技(上海)有限公司 | 一种卷积计算中资源共享的方法、装置、介质及设备 |
CN115858178B (zh) * | 2023-02-21 | 2023-06-06 | 芯砺智能科技(上海)有限公司 | 一种卷积计算中资源共享的方法、装置、介质及设备 |
CN115883564A (zh) * | 2023-02-21 | 2023-03-31 | 青岛创新奇智科技集团股份有限公司 | 一种媒体流处理方法、装置、电子设备及存储介质 |
CN116483482A (zh) * | 2023-05-19 | 2023-07-25 | 北京百度网讯科技有限公司 | 深度学习任务处理方法、系统、装置、设备及介质 |
CN116483482B (zh) * | 2023-05-19 | 2024-03-01 | 北京百度网讯科技有限公司 | 深度学习任务处理方法、系统、装置、设备及介质 |
CN116362316A (zh) * | 2023-05-29 | 2023-06-30 | 成都阿加犀智能科技有限公司 | 一种模型转换方法、装置、存储介质及电子设备 |
CN116362316B (zh) * | 2023-05-29 | 2023-12-12 | 成都阿加犀智能科技有限公司 | 一种模型转换方法、装置、存储介质及电子设备 |
CN117271424B (zh) * | 2023-11-24 | 2024-02-06 | 北京中星微人工智能芯片技术有限公司 | 基于多模融合计算框架的处理装置和处理方法 |
CN117271424A (zh) * | 2023-11-24 | 2023-12-22 | 北京中星微人工智能芯片技术有限公司 | 基于多模融合计算框架的处理装置和处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110674936A (zh) | 一种神经网络处理方法、装置、计算机设备及存储介质 | |
CN110689115B (zh) | 神经网络模型处理方法、装置、计算机设备及存储介质 | |
CN110633153A (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
CN110546611B (zh) | 通过跳过处理操作来减少神经网络处理器中的功耗 | |
CN110826708B (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
WO2021057746A1 (zh) | 神经网络处理方法、装置、计算机设备及存储介质 | |
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
CN110689121A (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
US20210350233A1 (en) | System and Method for Automated Precision Configuration for Deep Neural Networks | |
US20190138373A1 (en) | Multithreaded data flow processing within a reconfigurable fabric | |
KR20200053886A (ko) | 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템 | |
TW202207222A (zh) | 記憶體分配方法、裝置、及電子設備 | |
US20190130268A1 (en) | Tensor radix point calculation in a neural network | |
CN112817730B (zh) | 深度神经网络服务批处理调度方法、系统及gpu | |
CN111488177A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US20200226458A1 (en) | Optimizing artificial neural network computations based on automatic determination of a batch size | |
Gadiyar et al. | Artificial Intelligence Software and Hardware Platforms | |
US20210256373A1 (en) | Method and apparatus with accelerator | |
US11461662B1 (en) | Compilation time reduction for memory and compute bound neural networks | |
US10990525B2 (en) | Caching data in artificial neural network computations | |
US20190354833A1 (en) | Method and system for reducing communication frequency in neural network systems | |
Zhu et al. | Sky Computing: Accelerating Geo-distributed Computing in Federated Learning | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
WO2021120036A1 (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200911 Address after: Room 611-194, R & D center building, China (Hefei) international intelligent voice Industrial Park, 3333 Xiyou Road, hi tech Zone, Hefei City, Anhui Province Applicant after: Anhui Cambrian Information Technology Co.,Ltd. Address before: 201306 floor 6, block B, 168 Tonghui Road, Pudong New Area, Shanghai. Applicant before: Shanghai Cambricon Information Technology Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200110 |