CN114691589A - 一种处理装置及相关产品 - Google Patents
一种处理装置及相关产品 Download PDFInfo
- Publication number
- CN114691589A CN114691589A CN202011601172.6A CN202011601172A CN114691589A CN 114691589 A CN114691589 A CN 114691589A CN 202011601172 A CN202011601172 A CN 202011601172A CN 114691589 A CN114691589 A CN 114691589A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- computing
- devices
- information
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computer Hardware Design (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
Abstract
本申请提供了一种处理装置及相关产品,该处理装置包括获取单元和设备分配单元。其中,获取单元用于获取神经网络模型的多个节点及多个节点中每个节点的设备信息,节点的设备信息为支持该节点对应的运算的设备的信息,节点的设备信息包括以下一个或多个:设备的类型、设备的运算能力、设备的拷贝能力。设备分配单元用于根据每个节点的设备信息,为每个节点分配对应的执行设备,采用本申请提供的处理装置,能够提高神经网络模型在运行过程中的性能。
Description
技术领域
本申请涉及人工智能(Artificial Intelligence,AI)领域,尤其涉及一种处理装置及相关产品。
背景技术
近年来,为了令人们能够更轻松地学习、构建以及训练不同类型的神经网络,研究人员开发了多个深度学习框架,例如,张量流(Tensorflow)、MXNet、卷积神经网络框架(Convolutional Architecture for Fast Feature Embedding,Caffe)。
目前,基于深度学习框架运行神经网络模型时,一般会根据神经网络模型的各个节点在设备上的注册情况,分别为各个节点指定运行的设备。但是,当某个节点可以在多个设备上运行时,由于这种方式并不会考虑该节点在哪个设备上运行的性能更好,因此利用该方式运行神经网络模型时,可能会导致运行成本的增加。
发明内容
本申请公开了一种处理装置及相关产品,能够提高神经网络模型在运行过程中的性能。
第一方面,本申请提供了一种处理装置,该处理装置包括:
获取单元,用于获取神经网络模型的多个节点及多个节点中每个节点的设备信息,其中,节点的设备信息为支持节点对应的运算的设备的信息,节点的设备信息包括以下一个或多个:设备的类型、设备的运算能力、设备的拷贝能力;
设备分配单元,用于根据每个节点的设备信息,为每个节点分配对应的执行设备。
本申请提供的处理装置,可以通过神经网络模型中各个节点的设备信息,为各个节点分配合适的执行设备,相较于根据各个节点在设备上的注册情况分别为各个节点指定运行的设备,利用该处理装置能够使得各个节点分配到更为合适的执行设备上进行运算,从而可以从整体上提高神经网络模型的运算效率,降低运算成本,使得神经网络模型在运行过程中的性能更好。
在一种可能的实现方式中,多个节点包括第一节点,设备分配单元具体用于:当存在多个设备支持第一节点对应的运算时,根据多个设备的信息和第一节点对应的运算的规模,为第一节点分配对应的执行设备;其中,第一节点对应的运算的规模取决于以下一个或多个:第一节点的形状、输入第一节点的数据的类型。
在一种可能的实现方式中,多个设备包括第一设备和第二设备,第一设备的运算能力高于第二设备的运算能力,设备分配单元用于:当第一节点对应的运算的规模大于预设规模时,选取第一设备作为第一节点的执行设备;当第一节点对应的运算的规模小于或等于预设规模时,选取第二设备作为第一节点的执行设备。
可以看出,处理装置通过节点对应的运算规模来和节点的设备信息,可以为节点分配到合适的执行设备。例如,当节点对应的运算规模较大时,利用运算能力更强的第一设备来运行会缩短运算时间。当节点对应的运算规模较小时,利用第二设备来运行可能会得到更好的运算性能,比如说,在第一设备上运行节点前,需要先将输入该节点的数据从第二设备拷贝到第一设备上,这一数据拷贝过程会浪费时间,从而导致在第一设备上完成该节点的运算所用时间大于在第二设备上该节点的运算所用时间。又比如说,在第一设备上和第二设备上完成该节点的运算所用的时间接近,此时选用第一设备或第二设备均可行。
在一种可能的实现方式中,多个节点包括多个连续的节点,设备分配单元具体用于:当存在多个设备支持多个连续的节点对应的运算时,根据多个设备的信息和多个连续的节点的数量,为多个连续的节点分配对应的执行设备。
在一种可能的实现方式中,多个设备包括第三设备和第四设备,第三设备的运算能力高于第四设备的运算能力,第三设备执行运算时的数据为第四设备拷贝到第三设备的,设备分配单元用于:当多个连续的节点的数量大于或等于预设数量时,选择第三设备作为多个连续的节点的执行设备;当多个连续的节点的数量小于预设数量时,选择第四设备作为多个连续的节点的执行设备。
可以看出,对于多个连续的节点,虽然将多个连续的节点分配给第三设备上运行前,需要将数据从第四设备拷贝到第三设备,但是,当多个连续的节点的数量较多时,需要运算能力更加强大的设备来运行才能在较短的时间内完成运算,此时,数据从第四设备拷贝到第三设备所耗费的时间的影响较小,因此,选取第三设备作为多个连续的节点的执行设备更为合适。相反的,当多个连续的节点的数量较少是,数据从第四设备拷贝到第三设备所耗费的时间的影响较大,因此,选取第三设备作为多个连续的节点的执行设备更为合适。还可以理解的,将多个连续的节点分配到同一设备中进行计算,可以大大减少不同设备间拷贝数据的次数,从而节省运算成本,提高运算效率,因此,通过上述实现方式,设备分配单元可以提高多个连续的节点的运算效率,从而提高神经网络模型在运行过程中的性能。
在一种可能的实现方式中,获取单元还用于获取多个节点间的连接关系;设备分配单元还用于根据每个节点对应的执行设备的信息和多个节点间的连接关系,将每个节点分配到对应的计算库上运行。
在一种可能的实现方式中,设备分配单元具体用于:获取以第五设备作为执行设备的至少一个节点,其中,第五设备的信息包括第五设备中配置了第一计算库和第二计算库,且在第一计算库上运行连续的节点的速度大于在第二计算库上运行连续的节点的速度,至少一个节点包括第二节点;判断至少一个节点中是否存在与第二节点连接的节点;在不存在与第二节点连接的节点的情况下,将第二节点分配到第二计算库上运行;在存在与第二节点连接的节点的情况下,当第一计算库包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第一计算库上运行;当第一计算库不包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第二计算库上运行。
可以看出,通过上述实现方式,设备分配单元可以缩短多个连续的节点的计算时间,从而提高神经网络模型在运行过程中的性能。
第二方面,本申请提供了一种组合计算装置,该组合计算装置包括:处理装置、接口装置、存储装置、一个或多个计算装置,其中,
处理装置,用于将神经网络模型中的节点分配给对应的计算装置;
计算装置,用于执行神经网络模型中的节点对应的运算;
当组合计算装置包含多个计算装置时,多个计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个计算装置共享同一控制系统或拥有各自的控制系统;多个计算装置共享内存或者拥有各自的内存;多个计算装置的互联方式是任意互联拓扑;
存储装置分别与处理装置、一个或多个计算装置连接,用于保存处理装置、一个或多个计算装置的数据,
其中,处理装置为第一方面及第一方面任一实现方式所描述的处理装置。
第三方面,本申请提供了一种神经网络芯片,该神经网络芯片包括上述第二方面所描述的组合计算装置。
第四方面,本申请提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括如上述第三方面所描述的神经网络芯片;
第五方面,本申请提供了一种板卡,该板卡包括如上述第四方面所描述的神经网络芯片封装结构。
第六方面,本申请提供了一种电子装置,该电子装置包括如上述第四方面所描述的神经网络芯片或者如上述第五方面所述的板卡。
第七方面,本申请提供了一种节点设备的分配方法,该方法包括:
获取神经网络模型的多个节点及多个节点中每个节点的设备信息,其中,节点的设备信息为支持节点对应的运算的设备的信息,节点的设备信息包括以下一个或多个:设备的类型、设备的运算能力、设备的拷贝能力;
根据每个节点的设备信息,为每个节点分配对应的执行设备。
在一种可能的实现方式中,多个节点包括第一节点,根据每个节点的设备信息,为每个节点分配对应的执行设备,包括:当存在多个设备支持第一节点对应的运算时,根据多个设备的信息和第一节点对应的运算的规模,为第一节点分配对应的执行设备;其中,第一节点对应的运算的规模取决于以下一个或多个:第一节点的形状、输入第一节点的数据的类型。
在一种可能的实现方式中,多个设备包括第一设备和第二设备,第一设备的运算能力高于第二设备的运算能力,根据多个设备的信息和第一节点对应的运算的规模,为第一节点分配对应的执行设备,包括:当第一节点对应的运算的规模大于预设规模时,选取第一设备作为第一节点的执行设备;当第一节点对应的运算的规模小于或等于预设规模时,选取第二设备作为第一节点的执行设备。
在一种可能的实现方式中,多个节点包括多个连续的节点,根据每个节点的设备信息,为每个节点分配对应的执行设备,包括:当存在多个设备支持多个连续的节点对应的运算时,根据多个设备的信息和多个连续的节点的数量,为多个连续的节点分配对应的执行设备。
在一种可能的实现方式中,多个设备包括第三设备和第四设备,第三设备的运算能力高于第四设备的运算能力,第三设备执行运算时的数据为第四设备拷贝到第三设备的,根据多个设备的信息和多个连续的节点的数量,为多个连续的节点分配对应的执行设备,包括:当多个连续的节点的数量大于或等于预设数量时,选择第一设备作为多个连续的节点的执行设备;当多个连续的节点的数量小于预设数量时,选择第二设备作为多个连续的节点的执行设备。
在一种可能的实现方式中,根据每个节点的设备信息,为每个节点分配对应的执行设备之后,上述方法还包括:获取多个节点间的连接关系;根据每个节点对应的执行设备的信息和多个节点间的连接关系,将每个节点分配到对应的计算库上运行。
在一种可能的实现方式中,根据每个节点对应的执行设备的信息和多个节点间的连接关系,将每个节点分配给对应的计算库,包括:获取以第五设备作为执行设备的至少一个节点,其中,第五设备的信息包括第五设备中配置了第一计算库和第二计算库,且在第一计算库上运行连续的节点的速度大于在第二计算库上运行连续的节点的速度,至少一个节点包括第二节点;判断至少一个节点中是否存在与第二节点连接的节点;在不存在与第二节点连接的节点的情况下,将第二节点分配到第二计算库上运行;在存在与第二节点连接的节点的情况下,当第一计算库包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第一计算库上运行;当第一计算库不包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第二计算库上运行。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图作简单地介绍。
图1是本申请提供的一种神经网络模型的运行示意图;
图2是本申请提供的一种处理装置的结构示意图;
图3是本申请提供的一种节点设备分配方法的流程示意图;
图4是本申请提供的一种组合计算装置的结构示意图;
图5是本申请提供的一种板卡的结构示意图。
具体实施方式
下面将结合附图对本申请中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解本申请实施例提供的技术方案,首先介绍本申请实施例适应的场景:基于深度学习框架运行神经网络模型。
神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,这种网络由大量的节点(或称神经元)之间相互连接构成,通过调整内部大量节点之间相互连接的关系,利用输入数据、权值产生输出数据模拟人脑的信息处理过程处理信息并生成模式识别之后的结果。近年来,随着神经网络技术特别是人工神经网络中深度学习(deep learning)技术的快速发展,神经网络已经成为了研究计算机视觉、语音识别和自然语言处理等深度学习任务的主流技术。为了令人们能够更轻松地学习、构建以及训练不同类型的神经网络,研究人员开发了多个深度学习框架,比如说,TensorFlow、MXNet、Caffe等。
基于深度学习框架运行神经网络模型时,通常会将构成神经网络模型的各个节点指定到对应的设备(包括:中央处理器(Central Processing Unit,CPU)或者图形处理器(Graphics Processing Unit,GPU))上运行,从而进一步实现神经网络模型的运行。
目前,深度学习框架是根据节点在设备上的注册情况,来确定应该将该节点指定到哪个设备上运行。但是,经过大量的实践证明,这种为节点指定运行设备的方式可能会导致神经网络运行成本的增加。下面将通过两个例子简单的说明上述方式存在的问题:
例如,当一个节点(节点A)既可以在CPU上运行,也可以在GPU上运行时,Tensorflow会将节点A优先指定到GPU上运行,这时可能会出现一种情况:如果节点A在CPU上的性能优于在GPU上的性能,那么,将节点A指定到GPU上运行将会导致运算速度慢、功耗大等问题。
又例如,如图1所示,神经网络模型包括节点A、节点B、节点C和节点D,其中,节点A和节点C既可以在CPU上运行,也可以在GPU上运行,节点B和节点D仅可以在CPU上运行,那么,Tensorflow会将节点A和节点C指定到CPU上运行,将节点B和节点D指定到GPU上运行。并且,在实际运行的过程中,会按照这些节点之间的连接关系依次执行各个节点,也就是依次执行节点A→节点B→节点C→节点D。由于节点A和节点B、节点B和节点C、节点C和节点D分别在不同的设备运行,因此在运行这些节点时,需要在不同的设备之间来回切换(即CPU→GPU→CPU→GPU),频繁地更换运行设备会导致数据在CPU和GPU之间来回拷贝,这将产生巨大的开销。
为了解决上述问题,本申请提供了一种处理装置,利用该处理装置可以将神经网络模型中的各个节点分配给合适的执行设备,从而提高神经网络模型运行过程中的性能。
如图2所示,图2是本申请提供的一种处理装置的结构示意图。图2中的处理装置100包括获取单元210和设备分配单元220。下面将对处理装置100中的各个单元进行详细介绍。
首先,介绍获取单元210。
获取单元210,用于获取神经网络模型的多个节点及多个节点中每个节点的设备信息。
在一具体的实施例中,神经网络模型中的节点表示算子,例如,卷积算子或批量标准化算子等。获取单元210可以通过以下方式获取神经网络模型的多个节点:
方式一,获取单元210获取神经网络模型对应的计算图(以下简称为计算图),然后根据计算图得到神经网络模型的多个节点。
其中,计算图是通过深度学习框架将神经网络模型进行加载而形成的,计算图为包括多个节点的有向图,计算图中的节点之间通过有向边连接,节点之间的有向边表示节点之间数据的流向。计算图能够表示神经网络模型的运算过程,具体地,将输入到神经网络模型的数据传递给计算图后,根据各节点间的有向边遍历计算图中的节点来完成神经网络模型的运算,然后输出神经网络模型的运算结果。
可选的,计算图可以是获取单元210构建的,也可以是其他设备或装置构建的,此处不作具体限定。
方式二,获取单元210还可以直接获取神经网络模型的多个节点。具体地,其他设备或装置构建好计算图之后,将计算图中包括的多个节点的信息发送给获取单元210,以使得获取单元210得到多个节点。
值得注意的一点是,本申请中的多个节点可以是神经网络模型的所有节点,也可以是神经网络模型所有节点中的一部分,此处不作具体限定。
在一具体的实施例中,节点的设备是指支持该节点对应的运算的设备,简单地说,就是在哪个设备能够执行该节点对应的计算指令。节点的设备可以具体是GPU、CPU、机器学习处理器(machine learning processing unit,MLU)、数字信号处理器(digital signalprocessing,DSP)、神经网络处理器(neural network processing unit,NPU)等,此处不作具体限定。
在一具体的实施例中,节点的设备信息为支持该节点对应的运算的设备的信息,节点的设备信息包括以下一个或多个:设备的类型、设备的运算能力(例如,运算速度、精度、功耗等)、设备的拷贝能力(例如,拷贝速度、功耗等)。其中,设备的类型可以是GPU、CPU、MLU等;设备的运算能力是指设备计算数据的能力,具体的,设备的运算速度越快、精度越高、功耗越小,意味着设备的运算能力越高;设备的拷贝能力是指从设备中拷贝数据的能力,具体的,拷贝速度越快、功耗越小,意味着设备的拷贝能力越高。
在一具体的实施例中,获取单元210可以通过以下方式获取多个节点中每个节点的设备信息:
方式一,获取单元210得到多个节点后,根据多个节点的信息查找每个节点的设备信息。其中,节点的设备信息可以存储在获取单元210中,也可以存储在其他设备或装置中,此处不作具体限定。
方式二,可以将节点的信息和节点的设备信息进行关联存储,以使得获取单元得到多个节点同时,也可以得到多个节点中每个节点的设备信息。
接下来,介绍设备分配单元220。
设备分配单元220,用于根据每个节点的设备信息,为每个节点分配对应的执行设备。
本申请中,为了方便设备分配单元220能够将神经网络模型中的节点分配给合适的执行设备,在设备分配单元220中配置了3个策略,分别是第一策略、第二策略和第三策略,在实际应用过程中,设备分配单元220可以根据这3个策略来确定节点应分配给哪个执行设备,从而能够提高神经网络模型在运行过程的性能。下面,将基于这3个策略来介绍设备分配单元220。
(1)第一策略
应理解,当存在多个设备均支持某一节点对应的运算时,由于不同设备的运算能力不同,因此在不同设备上计算该节点的成本也不同,比如说,GPU和CPU,相较于CPU,CPU具有更多的计算单元,因此,GPU的运算能力更强,节点在GPU上运行的速度更快。基于这一点,本申请提供了第一策略,第一策略可具体表述为:根据节点对应的运算的规模,以及支持节点对应的运算的设备的信息,为节点分配执行设备。
在一具体的实施例中,节点对应的运算的规模取决于以下一个或多个:节点的形状、输入节点的数据的类型。其中,节点的形状可以理解为节点的规模,节点的形状越大,节点对应的运算规模越大。例如,对于卷积算子(即节点),节点中卷积核的数量越多,节点的规模越大,那么该节点中需要进行卷积运算的运算量也越多,也就是该节点对应的运算规模越大。输入节点的数据的类型具体可以包括整型和浮点型,相较于整型,输入节点的数据为浮点型数据时,该节点对应的运算规模更大。此处需要说明的一点是,神经网络模型的节点可以一个或多个输入,此处不作具体限定。
在一具体的实施例中,多个节点包括第一节点,那么,设备分配单元220根据第一策略为第一节点分配执行设备,具体过程为:当存在多个设备支持第一节点对应的运算时,设备分配单元220根据多个设备的信息和第一节点对应的运算的规模,为第一节点分配对应的执行设备。其中,第一节点对应的运算的规模取决于以下一个或多个:第一节点的形状、输入第一节点的数据的类型。
在一更具体的实施例中,支持第一节点对应的运算的多个设备包括第一设备和第二设备,其中,第一设备的运算能力高于第二设备的运算能力。那么,设备分配单元220具体用于:当第一节点对应的运算的规模大于预设规模时,选取第一设备作为第一节点的执行设备;当第一节点对应的运算的规模小于或等于预设规模时,选取第二设备作为第一节点的执行设备。
在一具体的实施例中,预设规模为用户根据第一设备和第二设备的运算能力而预先设置的。可选的,预设规模包括预设的节点规模和预设的数据类型,因此,当第一节点的规模大于预设的节点规模,和/或,输入第一节点的数据的类型为预设的数据类型时,设备分配单元220选取第一设备作为第一节点的执行设备。当第一节点的规模小于或等于预设的节点规模,和/或,输入第一节点的数据的类型不是预设的数据类型时,设备分配单元220选取第二设备作为第一节点的执行设备。可选的,预设规模还可以是综合考虑到预设的节点规模和预设的数据类型而设置的一个标准等等,此处不作具体限定。
可以理解的,对于运算规模较大的节点,利用运算能力更强的第一设备来运行会缩短运算时间。对于运算规模较小的节点,利用第二设备来运行可能会得到更好的运算性能,比如说,第一设备执行运算时所需的数据为从其他设备(包括第二设备)拷贝到第一设备的,在这种情况下,由于数据拷贝的过程会浪费时间,从而导致在第一设备上完成该节点的运算所用时间大于在第二设备上该节点的运算所用时间。又比如说,在第一设备上和第二设备上完成该节点的运算所用的时间接近,此时选用第一设备或第二设备均可行。
举例说明,第一节点为卷积算子,第一设备为MLU,第二设备为CPU。此处需要说明的是,MLU支持并行运算且MLU中每个单核可以计算的比特数高于CPU,总的来说,就是MLU的运算能力高于CPU。因此,根据第一策略,当第一节点中的卷积核的维度越高(即第一节点的规模大于预设的节点规模),和/或,输入第一节点的数据为浮点型数据(即输入第一节点的数据的类型为预设的数据类型)时,设备分配单元220将第一节点分配给MLU。
可以看出,设备分配单元220根据第一策略可以将神经网络模型的节点分配给合适的执行设备来运算,比如说,一个运算规模较小的节点(节点1),该节点在第一设备上运行的时间和在第二设备上运行的时间大致相同,但是如果该节点在第二设备上运行,在运行前需要先将输入该节点的数据从第一设备拷贝到第二设备,这使得在第二设备上完成该节点的运算的时间更长。又例如,一个运算规模较大的节点(节点2),虽然该节点在第二设备上运行前需要先从将输入该节点的数据从第一设备拷贝到第二设备中,但是该节点在第二设备上运行的时间远小于在第一设备上运行的时间,使得在第二设备上完成该节点的运算的时间更短。对于节点1和节点2,利用本申请提供的第一策略,设备分配单元220可以通过确定节点1对应的运算规模小于预设规模,节点2对应的运算规模大于预设规模,直接将节点1分配给第一设备运行,节点2分配给第二设备运行,从而缩短节点1和节点2的运算时间。
(2)第二策略
考虑到这样一种情况:神经网络模型的节点包括节点A和节点B,节点A和节点B之间通过一条有向边连接,并且节点A和节点B既可以在CPU上运行,也可以在GPU上运行。如果将节点A和节点B均分配到GPU上运行,虽然GPU的运算能力高于CPU的运算能力,但是在GPU进行运算前,需要先从CPU中获取数据,这一过程(即数据从CPU拷贝到GPU的过程)会浪费大量的时间,从而可能导致在GPU上执行节点A和节点B对应的运算所耗费的时间大于在CPU上执行节点A和节点B对应的运算所耗费的时间。基于这一点,本申请提供了第二策略,第二策略具体可以表述为:根据连续的节点中每个节点的设备信息和连续的节点的数量,为连续的节点中的每个节点分配执行设备。
在一具体的实施例中,多个节点包括多个连续的节点,设备分配单元220根据第二策略,为多个连续的节点中的每个节点分配对应的执行设备,具体过程为:当存在多个设备支持多个连续的节点对应的运算时,根据多个设备的信息和多个连续的节点的数量,为多个连续的节点分配对应的执行设备。
在一更具体的实施例中,支持上述多个连续的节点对应的运算的设备包括第三设备和第四设备,其中,第三设备的运算能力高于第四设备的运算能力,且第三设备执行运算时所需的数据为从其他设备(包括第四设备)拷贝到第三设备的。那么,设备分配单元220具体用于:当多个连续的节点的数量大于或等于预设数量时,选择第三设备作为多个连续的节点的执行设备;当多个连续的节点的数量小于预设数量时,选择第四设备作为多个连续的节点的执行设备。其中,预设数量为用户根据第三设备和第四设备的运算能力和拷贝能力而预先设置的。
在一具体的实施例中,第三设备可以是上述第一设备或第二设备,也可以不是上述第一设备或第二设备,同样的,第四设备可以是上述第一设备或第二设备,也可以不是上述第一设备或第二设备,此处不作具体限定。
可以理解的,虽然将多个连续的节点分配给第三设备上运行前,需要将数据从第四设备拷贝到第三设备,但是,当多个连续的节点的数量较多时,需要运算能力更加强大的设备来运行才能在较短的时间内完成运算,此时,相较于在第四设备上进行运算的时间而言,数据从第四设备拷贝到第三设备所耗费的时间的影响较小,因此,选取第三设备作为多个连续的节点的执行设备更为合适。相反的,当多个连续的节点的数量较少是,数据从第四设备拷贝到第三设备所耗费的时间的影响较大,因此,选取第三设备作为多个连续的节点的执行设备更为合适。还可以理解的,将多个连续的节点分配到同一设备中进行计算,可以大大减少不同设备间拷贝数据的次数,从而节省运算成本,提高运算效率,因此,设备分配单元220通过上述方式,可以提高多个连续的节点的运算效率。
(3)第三策略
当前,为了提高连续的节点的运算速度,部分设备中配置有专门用于运行连续的节点的计算库,比如说,MLU中配置有两个计算库:寒武纪机器学习库(cambricon neuwaremachine learning library,CNML)和寒武纪神经网络计算库(cambricon neuware neuralnetwork library,CNNL)。其中,相较于CNNL,CNML支持对连续的节点进行加速计算,也就是说,在CNML上运行连续的节点的运算速度大于在CNNL上运行连续的节点的运算速度。基于这一点,本申请提供了第三策略,第三策略具体可以表述为:根据节点之间的连接关系和节点对应的执行设备的信息,将节点分配给对应的计算库。其中,执行设备的信息包括执行设备中计算库的信息。节点之间的连接关系是指节点之间是否存在有向边,当两个节点之间存在有向边时,说明这两个节点为连接的两个节点,当两个节点之间不存在有向边时,说明这两个节点为不连接的两个节点。计算库中包括节点对应的计算指令,一般地,在基于深度学习框架运行神经网络模型的过程中,深度学习框架通过调用计算库,将节点对应的计算指令加载到执行设备上,从而使得执行设备完成该节点对应的运算。
在一具体的实施例中,获取单元210还用于获取多个节点间的连接关系;设备分配单元220还用于根据多个节点中每个节点对应的执行设备的信息和多个节点间的连接关系,将多个节点中的每个节点分配到对应的计算库上运行。
在一具体的实施例中,设备分配单元220具体用于:获取以第五设备作为执行设备的至少一个节点,其中,第五设备的信息包括第五设备中配置了第一计算库和第二计算库,上述至少一个节点包括第二节点;判断至少一个节点中是否存在与第二节点连接的节点;在不存在与第二节点连接的节点的情况下,将第二节点分配到第二计算库上运行;在存在与第二节点连接的节点的情况下,当第一计算库包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第一计算库上运行;当第一计算库不包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第二计算库上运行。其中,在第一计算库上运行连续的节点的速度大于在第二计算库上运行连续的节点的速度。可以看出,设备分配单元220根据第三策略可以缩短多个连续的节点的计算时间,从而提高神经网络模型在运行过程中的性能。
在一具体的实施例中,第五设备可以是上述第一设备、第二设备、第三设备或第四设备,也可以是与上述第一设备、第二设备、第三设备或第四设备不同的设备,此处不作具体限定。
举例说明,神经网络模型包括节点1、节点2、节点3和节点4,且这四个节点之间的连接关系为:节点1→节点2→节点3→节点4。假设,以第五设备作为执行设备的节点为节点1、节点2和节点4,由于节点1与节点2连接,而且,第一计算库包括节点1和节点2对应的计算指令,因此设备分配单元210可以将节点1和节点2分配到第一计算库上运行。又由于节点4与节点1和2均不连接,且第二计算库包括节点4对应的计算指令,因此设备分配单元210可以将节点4分配到第二计算库上运行。
上述内容详细介绍本申请提供的3个策略,应理解,在实际应用中,设备分配单元220还可以同时利用第一策略、第二策略以及第三策略中的一个或多个来为神经网络模型中的各个节点分配对应的执行设备。
可选的,设备分配单元220利用第三策略将神经网络模型的节点分配给对应的计算库之前,先利用第一策略和/或第二策略确定节点对应的执行设备。举例说明,假设神经网络模型的多个节点包括节点A、节点B和节点C,且这3个节点间的连接关系为节点A→节点B→节点C。其中,支持节点A对应的运算的设备包括MLU和CPU,支持节点B和节点C对应的运算的设备均为MLU,且MLU中的CNML包括节点A、节点B和节点C对应的计算指令。那么,设备分配单元220可以根据第一策略,设备分配单元220将节点A分配到MLU上运行,然后根据第三策略,将节点A、节点B和节点C分配到CNML上进行计算。
基于上述实施例提供的处理装置,本申请还提供了一种节点设备的分配方法。如图3所示,图3示出了本申请提供的一种节点设备的分配方法,该方法具体包括如下步骤:
S301:处理装置获取神经网络模型的多个节点及多个节点中每个节点的设备信息。
在一具体的实施例中,节点的设备信息为支持节点对应的运算的设备的信息,节点的设备信息包括以下一个或多个:设备的类型、设备的运算能力、设备的拷贝能力;
S302:处理装置根据每个节点的设备信息,为每个节点分配对应的执行设备。
在一具体的实施例中,多个节点包括第一节点,根据每个节点的设备信息,为每个节点分配对应的执行设备,包括:当存在多个设备支持第一节点对应的运算时,根据多个设备的信息和第一节点对应的运算的规模,为第一节点分配对应的执行设备;其中,第一节点对应的运算的规模取决于以下一个或多个:第一节点的形状、输入第一节点的数据的类型。
在一具体的实施例中,多个设备包括第一设备和第二设备,第一设备的运算能力高于第二设备的运算能力,根据多个设备的信息和第一节点对应的运算的规模,为第一节点分配对应的执行设备,包括:当第一节点对应的运算的规模大于预设规模时,选取第一设备作为第一节点的执行设备;当第一节点对应的运算的规模小于或等于预设规模时,选取第二设备作为第一节点的执行设备。
在一具体的实施例中,多个节点包括多个连续的节点,根据每个节点的设备信息,为每个节点分配对应的执行设备,包括:当存在多个设备支持多个连续的节点对应的运算时,根据多个设备的信息和多个连续的节点的数量,为多个连续的节点分配对应的执行设备。
在一具体的实施例中,多个设备包括第三设备和第四设备,第三设备的运算能力高于第四设备的运算能力,第三设备执行运算时的数据为第四设备拷贝到第三设备的,根据多个设备的信息和多个连续的节点的数量,为多个连续的节点分配对应的执行设备,包括:当多个连续的节点的数量大于或等于预设数量时,选择第一设备作为多个连续的节点的执行设备;当多个连续的节点的数量小于预设数量时,选择第二设备作为多个连续的节点的执行设备。
在一具体的实施例中,根据每个节点的设备信息,为每个节点分配对应的执行设备之后,上述方法还包括:获取多个节点间的连接关系;根据每个节点对应的执行设备的信息和多个节点间的连接关系,将每个节点分配到对应的计算库上运行。
在一具体的实施例中,根据每个节点对应的执行设备的信息和多个节点间的连接关系,将每个节点分配给对应的计算库,包括:获取以第五设备作为执行设备的至少一个节点,其中,第五设备的信息包括第五设备中配置了第一计算库和第二计算库,至少一个节点包括第二节点;判断至少一个节点中是否存在与第二节点连接的节点;在不存在与第二节点连接的节点的情况下,将第二节点分配到第二计算库上运行;在存在与第二节点连接的节点的情况下,当第一计算库包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第一计算库上运行;当第一计算库不包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第二计算库上运行。
上述方法实施例提供的处理装置与图2示出的处理装置200属于同一构思,为了简便,此处不再展开详细叙述。
基于上述实施例中提供的处理装置,本申请还提供了一种组合计算装置。如图4所示,图4示出了本申请提供的一种组合计算装置的结构示意图。图4中,组合计算装置400包括处理装置410、接口装置420、存储装置430、计算处理装置440。
在一具体的实施例中,根据不同的应用场景,计算处理装置440中可以包括一个或多个计算装置450,该计算装置用于执行神经网络模型中的节点对应的运算,即本申请实施例中的计算装置用于执行上述实施例中节点对应的执行设备的操作。
在不同的实施例中,计算处理装置440可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在一具体的实施例中,处理装置410用于确定神经网络模型中各个节点对应的计算装置,并将各个节点分配给对应的计算装置,具体的,处理装置410可以配置为图2示出的处理装置200或图3中的处理装置,以用于执行对应的操作。
在示例性的操作中,处理装置410可以通过接口装置420与计算处理装置440进行交互,以方便处理装置410将神经网络模型中的节点分配给对应的计算装置。根据实现方式的不同,处理装置410可以包括CPU、GPU、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于DSP、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一具体的实施例中,处理装置410也可以作为计算处理装置440(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,处理装置410还可以和计算处理装置440协作以共同完成运算任务。
在一具体的实施例中,接口装置420可以用于在处理装置410与计算处理装置440之间传输数据和控制指令。例如,计算处理装置440可以经由接口装置420从处理装置410中获取数据,并写入计算处理装置440片上的存储装置(或称存储器)。进一步,计算处理装置440还可以经由接口装置420从处理装置410中获取控制指令(例如,执行某一节点的指令),写入计算处理装置440片上的控制缓存中。替代地或可选地,接口装置420也可以读取计算处理装置440的存储装置中的数据并传输给处理装置410。
附加地或可选地,组合计算装置400还可以包括存储装置430。如图4所示,存储装置430分别与处理装置410和计算处理装置440连接。在一个或多个实施例中,存储装置430可以用于保存处理装置410和/或计算处理装置440的数据。例如,该数据可以是在处理装置410或计算处理装置440的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本申请还提供了一种芯片(例如,图5示出的芯片540)。在一种可能的实现方式中,芯片540是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图4中所示的组合计算装置400。芯片540可以通过对外接口装置(如图5示出的对外接口装置550)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,芯片540上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本申请还提供了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本申请还提供了一种板卡,其包括上述的芯片封装结构。下面将结合图5对该板卡进行详细地描述。
如图5所示,图5是本申请提供的一种板卡的结构示意图。图5中,板卡500包括用于存储数据的存储器件510,其包括一个或多个存储单元520。存储器件510可以通过例如总线等方式与控制器件530和上文所述的芯片540进行连接和数据传输。进一步,板卡500还包括对外接口装置550,其配置用于芯片540(或芯片封装结构中的芯片)与外部设备560(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备560通过对外接口装置550传递至芯片。又例如,芯片540的计算结果可以经由对外接口装置550传送回外部设备560。根据不同的应用场景,对外接口装置550可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,板卡500中的控制器件530可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,控制器件530可以包括单片机(Micro ControllerUnit,MCU),以用于对芯片的工作状态进行调控。
根据上述结合图4和图5的描述,本领域技术人员可以理解本申请也提供了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合计算装置。
根据不同的应用场景,本申请提供的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本申请提供的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本申请提供的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本申请将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本申请的方案并不受所描述的动作的顺序限制。因此,依据本申请的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本申请所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本申请某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本申请对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本申请的公开和教导,本领域技术人员可以理解本申请所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本申请中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本申请实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本申请提供的技术方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本申请实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款A1,一种处理装置,该处理装置包括:获取单元,用于获取神经网络模型的多个节点及多个节点中每个节点的设备信息,其中,节点的设备信息为支持节点对应的运算的设备的信息,节点的设备信息包括以下一个或多个:设备的类型、设备的运算能力、设备的拷贝能力;设备分配单元,用于根据每个节点的设备信息,为每个节点分配对应的执行设备。
条款2,根据条款1所述的处理装置,多个节点包括第一节点,设备分配单元具体用于:当存在多个设备支持第一节点对应的运算时,根据多个设备的信息和第一节点对应的运算的规模,为第一节点分配对应的执行设备;其中,第一节点对应的运算的规模取决于以下一个或多个:第一节点的形状、输入第一节点的数据的类型。
条款3,根据条款2所述的处理装置,多个设备包括第一设备和第二设备,第一设备的运算能力高于第二设备的运算能力,设备分配单元用于:当第一节点对应的运算的规模大于预设规模时,选取第一设备作为第一节点的执行设备;当第一节点对应的运算的规模小于或等于预设规模时,选取第二设备作为第一节点的执行设备。
条款4,根据条款1所述的处理装置,多个节点包括多个连续的节点,设备分配单元具体用于:当存在多个设备支持多个连续的节点对应的运算时,根据多个设备的信息和多个连续的节点的数量,为多个连续的节点分配对应的执行设备。
条款5,根据条款4所述的处理装置,多个设备包括第三设备和第四设备,第三设备的运算能力高于第四设备的运算能力,第三设备执行运算时的数据为第四设备拷贝到第三设备的,设备分配单元用于:当多个连续的节点的数量大于或等于预设数量时,选择第三设备作为多个连续的节点的执行设备;当多个连续的节点的数量小于预设数量时,选择第四设备作为多个连续的节点的执行设备。
条款6,根据条款1所述的处理装置,获取单元还用于获取多个节点间的连接关系;设备分配单元还用于根据每个节点对应的执行设备的信息和多个节点间的连接关系,将每个节点分配到对应的计算库上运行。
条款7,根据条款6所述的处理装置,设备分配单元具体用于:获取以第五设备作为执行设备的至少一个节点,其中,第五设备的信息包括第五设备中配置了第一计算库和第二计算库,且在第一计算库上运行连续的节点的速度大于在第二计算库上运行连续的节点的速度,至少一个节点包括第二节点;判断至少一个节点中是否存在与第二节点连接的节点;在不存在与第二节点连接的节点的情况下,将第二节点分配到第二计算库上运行;在存在与第二节点连接的节点的情况下,当第一计算库包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第一计算库上运行;当第一计算库不包括第二节点及与第二节点连接的节点对应的计算指令时,将第二节点及与第二节点连接的节点分配到第二计算库上运行。
条款8,一种组合计算装置,该组合计算装置包括如条款1-7任一项所述的处理装置、接口装置、存储装置、一个或多个计算装置。其中,处理装置用于将神经网络模型中的节点分配给对应的计算装置;计算装置用于执行神经网络模型中的节点对应的运算;当组合计算装置包含多个计算装置时,多个计算装置间可以通过特定的结构进行连接并传输数据;其中,多个计算装置通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个计算装置共享同一控制系统或拥有各自的控制系统;多个计算装置共享内存或者拥有各自的内存;多个计算装置的互联方式是任意互联拓扑;存储装置分别与处理装置、一个或多个计算装置连接,用于保存处理装置、一个或多个计算装置的数据。
条款9,一种神经网络芯片,该神经网络芯片包括如条款8所述的组合计算装置。
条款10,一种节点设备的分配方,该方法包括:获取神经网络模型的多个节点及多个节点中每个节点的设备信息,其中,节点的设备信息为支持节点对应的运算的设备的信息,节点的设备信息包括以下一个或多个:设备的类型、设备的运算能力、设备的拷贝能力;根据每个节点的设备信息,为每个节点分配对应的执行设备。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本申请的方法及其核心思想。同时,本领域技术人员依据本申请的思想,基于本申请的具体实施方式及应用范围上做出的改变或变形之处,都属于本申请保护的范围。综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种处理装置,其特征在于,所述装置包括:
获取单元,用于获取神经网络模型的多个节点及所述多个节点中每个节点的设备信息,其中,所述节点的设备信息为支持所述节点对应的运算的设备的信息,所述节点的设备信息包括以下一个或多个:所述设备的类型、所述设备的运算能力、所述设备的拷贝能力;
设备分配单元,用于根据所述每个节点的设备信息,为所述每个节点分配对应的执行设备。
2.根据权利要求1所述的装置,其特征在于,所述多个节点包括第一节点,所述设备分配单元具体用于:
当存在多个设备支持第一节点对应的运算时,根据所述多个设备的信息和所述第一节点对应的运算的规模,为所述第一节点分配对应的执行设备;
其中,所述第一节点对应的运算的规模取决于以下一个或多个:所述第一节点的形状、输入所述第一节点的数据的类型。
3.根据权利要求2所述的装置,其特征在于,所述多个设备包括第一设备和第二设备,所述第一设备的运算能力高于所述第二设备的运算能力,所述设备分配单元用于:
当所述第一节点对应的运算的规模大于预设规模时,选取所述第一设备作为所述第一节点的执行设备;
当所述第一节点对应的运算的规模小于或等于预设规模时,选取所述第二设备作为所述第一节点的执行设备。
4.根据权利要求1所述的装置,其特征在于,所述多个节点包括多个连续的节点,所述设备分配单元具体用于:
当存在多个设备支持所述多个连续的节点对应的运算时,根据所述多个设备的信息和所述多个连续的节点的数量,为所述多个连续的节点分配对应的执行设备。
5.根据权利要求4所述的装置,其特征在于,所述多个设备包括第三设备第四设备,所述第三设备的运算能力高于所述第四设备的运算能力,所述第三设备执行运算时的数据为所述第四设备拷贝到所述第三设备的,所述设备分配单元用于:
当所述多个连续的节点的数量大于或等于预设数量时,选择所述第三设备作为所述多个连续的节点的执行设备;
当所述多个连续的节点的数量小于所述预设数量时,选择所述第四设备作为所述多个连续的节点的执行设备。
6.根据权利要求1所述的装置,其特征在于,
所述获取单元还用于获取所述多个节点间的连接关系;
所述设备分配单元还用于根据所述每个节点对应的执行设备的信息和所述多个节点间的连接关系,将所述每个节点分配到对应的计算库上运行。
7.根据权利要求6所述的装置,其特征在于,所述设备分配单元具体用于:
获取以第五设备作为执行设备的至少一个节点,其中,所述第五设备的信息包括所述第五设备中配置了第一计算库和第二计算库,且在所述第一计算库上运行连续的节点的速度大于在所述第二计算库上运行所述连续的节点的速度,所述至少一个节点包括第二节点;
判断所述至少一个节点中是否存在与所述第二节点连接的节点;
在不存在与所述第二节点连接的节点的情况下,将所述第二节点分配到第二计算库上运行;
在存在与所述第二节点连接的节点的情况下,
当所述第一计算库包括所述第二节点及与所述第二节点连接的节点对应的计算指令时,将所述第二节点及与所述第二节点连接的节点分配到所述第一计算库上运行;
当所述第一计算库不包括所述第二节点及与所述第二节点连接的节点对应的计算指令时,将所述第二节点及与所述第二节点连接的节点分配到所述第二计算库上运行。
8.一种组合计算装置,其特征在于,所述组合计算装置包括如权利要求1-7任一项所述的处理装置、接口装置、存储装置、一个或多个计算装置,
所述处理装置用于将神经网络模型中的节点分配给对应的计算装置;
所述计算装置用于执行所述神经网络模型中的节点对应的运算;
当所述组合计算装置包含所述多个计算装置时,所述多个计算装置间可以通过特定的结构进行连接并传输数据;
其中,所述多个计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;所述多个计算装置共享同一控制系统或拥有各自的控制系统;所述多个计算装置共享内存或者拥有各自的内存;所述多个计算装置的互联方式是任意互联拓扑;
所述存储装置分别与所述处理装置、所述一个或多个计算装置连接,用于保存所述处理装置、所述一个或多个计算装置的数据。
9.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求8所述的组合计算装置。
10.一种节点设备的分配方法,其特征在于,所述方法包括:
获取神经网络模型的多个节点及所述多个节点中每个节点的设备信息,其中,所述节点的设备信息为支持所述节点对应的运算的设备的信息,所述节点的设备信息包括以下一个或多个:所述设备的类型、所述设备的运算能力、所述设备的拷贝能力;
根据所述每个节点的设备信息,为所述每个节点分配对应的执行设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011601172.6A CN114691589A (zh) | 2020-12-29 | 2020-12-29 | 一种处理装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011601172.6A CN114691589A (zh) | 2020-12-29 | 2020-12-29 | 一种处理装置及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691589A true CN114691589A (zh) | 2022-07-01 |
Family
ID=82132474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011601172.6A Pending CN114691589A (zh) | 2020-12-29 | 2020-12-29 | 一种处理装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691589A (zh) |
-
2020
- 2020-12-29 CN CN202011601172.6A patent/CN114691589A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797467B2 (en) | Data processing device with transmission circuit | |
CN112465133B (zh) | 控制流多核并行方法、计算机设备和存储介质 | |
CN112686379B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2023071238A1 (zh) | 计算图的编译、调度方法及相关产品 | |
WO2024093292A1 (zh) | 计算图的算子自动融合方法及相关产品 | |
CN114692823A (zh) | 一种算子融合的方法、装置、存储介质及电子设备 | |
CN111767995B (zh) | 运算方法、装置及相关产品 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN114691589A (zh) | 一种处理装置及相关产品 | |
CN114201727A (zh) | 数据的处理方法、处理器、人工智能芯片及电子设备 | |
CN112766475A (zh) | 处理部件及人工智能处理器 | |
CN114692824A (zh) | 一种神经网络模型的量化训练方法、装置和设备 | |
CN112817898A (zh) | 数据传输方法、处理器、芯片及电子设备 | |
CN112465116A (zh) | 运算方法、装置、电子设备和存储介质 | |
CN114580607A (zh) | 数据处理方法、装置和存储介质 | |
CN114281558A (zh) | 多核处理器、用于多核处理器的方法及相应产品 | |
CN111209230B (zh) | 数据处理装置、方法及相关产品 | |
CN115373646A (zh) | 扩展信息方法、装置和相关产品 | |
CN113010845A (zh) | 执行矩阵乘法的计算装置、方法及相关产品 | |
CN112801276A (zh) | 数据处理方法、处理器及电子设备 | |
CN114692865A (zh) | 一种神经网络量化训练方法、装置及相关产品 | |
CN112463158B (zh) | 编译方法、装置、电子设备和存储介质 | |
CN114282679A (zh) | 数据处理方法、装置和存储介质 | |
CN113742266B (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 |