CN109543825B - 神经网络模型算法编译方法、装置及相关产品 - Google Patents
神经网络模型算法编译方法、装置及相关产品 Download PDFInfo
- Publication number
- CN109543825B CN109543825B CN201811459215.4A CN201811459215A CN109543825B CN 109543825 B CN109543825 B CN 109543825B CN 201811459215 A CN201811459215 A CN 201811459215A CN 109543825 B CN109543825 B CN 109543825B
- Authority
- CN
- China
- Prior art keywords
- neural network
- nodes
- fusion point
- network accelerator
- fused
- 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
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/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
Abstract
本公开涉及神经网络模型算法编译方法、装置及相关产品,所述方法包括:将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,将至少两个连续的中央处理器节点进行融合得到第二融合点,所述计算图包括多个节点,所述节点包括神经网络加速器节点和中央处理器节点;将除所述第一融合点和所述第二融合点外的节点、所述第一融合点和所述第二融合点分别进行编译,得到所述计算图的中间表达;根据所述计算图的中间表达得到所述神经网络模型算法的可执行文件。本公开实施例可以节省系统资源,缩短神经网络模型的运算时间,提高神经网络模型的计算效率。
Description
技术领域
本公开涉及信息处理技术领域,尤其涉及一种神经网络模型算法编译方法、装置及相关产品。
背景技术
随着信息技术的不断发展,利用神经网络模型完成复杂任务的需求越来越大,神经网络模型算法复杂,计算效率低。
发明内容
有鉴于此,本公开提出了一种神经网络模型算法编译方法、装置及相关产品,用以提高神经网络模型的计算效率。
根据本公开的一方面,提供了一种神经网络模型算法编译方法,所述方法包括:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,将至少两个连续的中央处理器节点进行融合得到第二融合点,所述计算图包括多个节点,所述节点包括神经网络加速器节点和中央处理器节点;
将除所述第一融合点和所述第二融合点外的节点、所述第一融合点和所述第二融合点分别进行编译,得到所述计算图的中间表达;
根据所述计算图的中间表达得到所述神经网络模型算法的可执行文件。
在一种可能的实现方式中,将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,包括:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当至少两个连续的神经网络加速器节点中,除第一个待融合节点和最后一个待融合节点外的待融合节点的输入数据来自神经网络加速器节点时,将所述待融合节点进行融合得到第一融合点。
在一种可能的实现方式中,将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,包括:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当所述待融合节点的输出数据发送至至少两个中央处理器节点时,在输出数据发送至中央处理器节点的待融合节点之间添加依赖关系;
将所述待融合节点进行融合得到第一融合点。
在一种可能的实现方式中,所述方法还包括:
为所述第一融合点和/或所述第二融合点分配缓冲空间,当所述第一融合点和/或第二融合点完成运算时,不释放所述缓冲空间。
在一种可能的实现方式中,将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,包括将以下合并方式中的至少一种:
将神经网络模型算法的计算图中批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点融合为融合批量标准化第一融合点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和批量标准化神经网络加速器节点融合为融合卷积批量第一融合点,所述批量标准化神经网络加速器节点包括以下中的其中一种:批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和加偏置神经网络加速器节点融合为融合卷积偏置第一融合点;
将神经网络模型算法的计算图中矩阵乘神经网络加速器节点和加偏置神经网络加速器节点融合为矩阵偏置第一融合点。
根据本公开的一方面,提供了一种神经网络模型算法编译装置,所述装置包括:
第一融合点获取模块,用于将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,将至少两个连续的中央处理器节点进行融合得到第二融合点,所述计算图包括多个节点,所述节点包括神经网络加速器节点和中央处理器节点;
中间表达获取模块,用于将除所述第一融合点和所述第二融合点外的节点、所述第一融合点和所述第二融合点分别进行编译,得到所述计算图的中间表达;
可执行文件取模块,用于根据所述计算图的中间表达得到所述神经网络模型算法的可执行文件。
在一种可能的实现方式中,所述第一融合点获取模块,用于:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当至少两个连续的神经网络加速器节点中,除第一个待融合节点和最后一个待融合节点外的待融合节点的输入数据来自神经网络加速器节点时,将所述待融合节点进行融合得到第一融合点。
在一种可能的实现方式中,所述第一融合点获取模块,还用于:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当所述待融合节点的输出数据发送至至少两个中央处理器节点时,在输出数据发送至中央处理器节点的待融合节点之间添加依赖关系;
将所述待融合节点进行融合得到第一融合点。
在一种可能的实现方式中,所述装置还包括:
缓冲空间分配获取模块,用于为所述第一融合点和/或所述第二融合点分配缓冲空间,当所述第一融合点和/或第二融合点完成运算时,不释放所述缓冲空间。
在一种可能的实现方式中,所述第一融合点获取模块,用于进行以下合并方式中的至少一种:
将神经网络模型算法的计算图中批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点融合为融合批量标准化第一融合点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和批量标准化神经网络加速器节点融合为融合卷积批量第一融合点,所述批量标准化神经网络加速器节点包括以下中的其中一种:批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和加偏置神经网络加速器节点融合为融合卷积偏置第一融合点;
将神经网络模型算法的计算图中矩阵乘神经网络加速器节点和加偏置神经网络加速器节点融合为矩阵偏置第一融合点。
根据本公开的一方面,提供了一种神经网络运算装置,所述神经网络运算装置包括一个上述任一项所述的神经网络模型算法编译装置,所述神经网络运算装置用于完成设定的神经网络运算。
根据本公开的一方面,提供了一种组合运算装置,所述组合运算装置包括一个或多个上述任一项所述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种神经网络芯片,所述神经网络芯片包括:
上述任一项所述的神经网络模型算法编译装置;或
上述的神经网络运算装置;或
上述的组合处理装置。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括:
上述任一项所述的神经网络模型算法编译装置;或
上述的神经网络运算装置;或
上述的组合处理装置;或
上述的神经网络芯片。
在本公开实施例中,确定神经网络模型的计算图,计算图包括多个节点,节点包括NNA节点和CPU节点;将至少两个连续的NNA节点进行融合得到第一融合点;将除第一融合点外的节点和第一融合点分别进行编译,得到计算图的中间表达;根据计算图的中间表达得到所述神经网络模型的可执行文件。将神经网络模型的计算图中连续的NNA节点进行融合,可以减少启动NNA内核的启动次数,以及减少NNA与CPU之间的数据传输量,节省系统资源,缩短神经网络模型的运算时间,提高神经网络模型的计算效率。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的神经网络模型算法编译方法的流程图;
图2示出根据本公开一实施例的神经网络模型算法编译方法中NNA节点融合的示意图;
图3示出根据本公开一实施例的神经网络模型算法编译方法中NNA节点融合的示意图;
图4示出根据本公开一实施例的神经网络模型算法编译方法中融合方式示意图;
图5示出根据本公开一实施例的神经网络模型算法编译装置的框图;
图6示出根据本公开一实施例的组合处理装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开一实施例的神经网络模型算法编译方法的流程图,如图1所示,所述神经网络模型算法编译方法包括:
步骤S10,将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,将至少两个连续的中央处理器节点进行融合得到第二融合点,所述计算图包括多个节点,所述节点包括神经网络加速器节点和中央处理器节点。
在一种可能的实现方式中,可以将神经网络模型的执行过程表示为计算图。计算图可以为有向无环图。计算图中包括多个节点和连接节点的边。节点用于表示某运算的算子,例如卷积运算的算子或批量标准化算子等。节点间的边用于表示节点间数据的走向。将神经网络模型的输入数据输入计算图的起始节点,根据各节点间的边经过计算图中的节点完成运算,计算图可以输出神经网络模型的最终结果。
在一种可能的实现方式中,当执行神经网络模型的设备配置了神经网络加速器(neural network accelerator,NNA)和中央处理器(Central Processing Unit,CPU)时,执行神经网络模型的设备为NNA+CPU异构平台。神经网络模型计算图的不同节点可以分配到NNA或CPU上。当节点被分配至NNA上运行时,该节点为NNA节点。当节点被分配至CPU上运行时,该节点为CPU节点。计算图中NNA节点和CPU节点的数量和连接关系可以根据神经网络模型确定。本公开对此不做限定。
在一种可能的实现方式中,计算图中的每个NNA节点进行计算时,需要启动一次NNA内核(launch NNA kernel),启动NNA内核需要消耗系统资源,且需要耗费几十微秒至几毫秒的时间,当CPU繁忙时NNA内核启动成本更高。将至少两个连续的NNA节点合并得到第一融合点后,第一融合点可以启动一次NNA内核。
在一种可能的实现方式中,当各NNA节点完成计算后,可能需要将计算得到的数据输出至CPU节点。将至少两个连续的NNA节点合并为第一融合点后,可以将合并为第一融合点的NNA节点发送至CPU节点的数据,统一发送。可以减少NNA节点与CPU节点间的数据传递。
在一种可能的实现方式中,可以将至少两个连续的CPU节点进行融合。可以将计算图中的CPU节点,融合为多个第二融合点。
步骤S20,将除所述第一融合点和所述第二融合点外的节点、所述第一融合点和所述第二融合点分别进行编译,得到所述计算图的中间表达。
在一种可能的实现方式中,可以为运行神经网络模型的片上系统设置不同的语言表达,即设置不同的片上系统的执行代码。用于实现神经网络模型的编程语言也复杂多变。当使用不同编程语言实现的神经网络模型,在片上系统上执行时,可以将神经模型算法转换为中间表达,以使神经网络模型能够在片上系统执行。
在一种可能的实现方式中,可以根据需求预设中间表达及预设中间代码。例如可以设置C语言的中间表达。中间表达的语言可以与算法和片上系统的语言均不同,也可以和算法或片上系统的语言相同。本公开对此不做限定。
在一种可能的实现方式中,可以将计算图中的各节点分别进行编译,得到各节点的中间表达,并根据各节点的中间表达得到计算图的中间表达。将至少两个连续的神经网络加速器节点进行融合,得到第一融合点后,可以将除第一融合点外的各节点和第一融合点分别进行编译,得到除第一融合点外的各节点的中间表达和第一融合点的中间表达。包括可以将第一融合点内的各NNA节点对应的算子和各算子的输入数据、输出数据,进行操作类型和数据类型的格式转换,得到第一融合点的中间表达。同理可以得到除第一融合点外的各节点的中间表达。可以根据第一融合点的中间表达和除第一融合点外的各节点的中间表达,得到计算图的中间表达。
在一种可能的实现方式中,可以将第一融合点、第二融合点、融合后剩余的CPU节点和剩余的NNA节点,分别进行编译。可以为第一融合点和第二融合点,分别设置不同的转换库。第一融合点和第二融合点可以通过对应的转换库转换为相应的中间表达。
步骤S30,根据所述计算图的中间表达得到所述神经网络模型算法的可执行文件。
在一种可能的实现方式中,可以预设片上系统执行代码和算法的中间表达之间的转换库。例如转换库可以利用汇编语言实现。可以利用转换库将计算图的中间表达转换为神经网络模型的可执行文件。
在本实施例中,可以将至少两个连续的CPU节点进行融合得到第二融合点,.将除所述第一融合点和所述第二融合点外的节点、所述第一融合点和所述第二融合点分别进行编译,得到所述计算图的中间表达。将CPU节点进行融合,可以进一步提高神经网络模型的运行效率,节省系统资源。可以减少启动NNA内核的启动次数,以及减少NNA与CPU之间的数据传输量,节省系统资源,缩短神经网络模型的运算时间,提高神经网络模型的计算效率。
在一种可能的实现方式中,所述神经网络模型算法编译方法中步骤S10包括:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点。
当至少两个连续的神经网络加速器节点中,除第一个待融合节点和最后一个待融合节点外的待融合节点的输入数据来自神经网络加速器节点时,将所述待融合节点进行融合得到第一融合点。
在一种可能的实现方式中,可以将计算图中至少两个连续的NNA节点确定为待融合节点,并进一步判断待融合节点中各节点的输入数据。可以将待融合节点按照数据的流向确定为第一个待融合节点、第二个待融合节点……最后一个待融合节点。
在一种可能的实现方式中,当初第一个待融合节点和最后一个待融合节点以外,剩余待融合节点中节点的输入数据均来自NNA节点时,可以将待融合节点进行融合。图2示出根据本公开一实施例的神经网络模型算法编译方法中NNA节点融合的示意图,如图2所示的计算图中,NNA_2节点的部分输入数据中包括来自CPU_1节点,若将NNA_0、NNA_1和NNA_2融合,NNA_2节点将无法等待来自CPU_1节点的输入数据,导致计算错误。
在本实施例中,将至少两个连续的NNA节点确定为待融合节点;当至少两个连续的NNA节点中,除第一个待融合节点和最后一个待融合节点外的待融合节点的输入数据来自NNA节点时,将所述待融合节点进行融合得到融合点。除第一个和最后一个待融合节点以外,融合点中不包括输入数据来自CPU节点的待融合节点,使得第一融合点的运算结果准确。
在一种可能的实现方式中,所述神经网络模型算法编译方法中步骤S10包括:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点。
当所述待融合节点的输出数据发送至至少两个中央处理器节点时,在输出数据发送至中央处理器节点的待融合节点之间添加依赖关系;
将所述待融合节点进行融合得到第一融合点。
在一种可能的实现方式中,当有至少两个待融合节点的输出数据发送至CPU节点时,可能出现两个待融合节点的输出数据不同步的情况。若发送至其中一个CPU节点的输出数据已经在被消耗,发送至另一个CPU节点的输出数据还未被输出,将导致后续计算结果的不准确。可以在在待融合节点之间添加依赖关系,包括在待融合节点之间添加等同步输出的依赖关系,以使待融合节点的输出至至少两个CPU节点的输出数据,能够被同步输出。
图3示出根据本公开一实施例的神经网络模型算法编译方法中NNA节点融合的示意图,如图3所示,将图3中的NNA_0、NNA_1和NNA_2进行融合。NNA_1的输出数据发送至CPU_1,NNA_2的输出数据发送至CPU_2。当NNA_1的输出数据发送至CPU_1进行消耗,NNA_2的输出数据可能还没有发送至CPU_2。可以在NNA_1和NNA_2之间添加依赖关系,使得NNA_1和NNA_2的输出数据同步发送。
在本实施例中,当所述待融合节点的输出数据发送至至少两个CPU节点时,在输出数据发送至CPU节点的待融合节点之间添加依赖关系。依赖关系可以使得融合点内各节点的数据可以被同时输出,避免造成不必要的资源浪费和计算错误。
在一种可能的实现方式中,所述神经网络模型算法编译方法还包括:
为所述第一融合点和/或所述第二融合点分配缓冲空间,当所述第一融合点和/或所述第二融合点完成运算时,不释放所述缓冲空间。
在一种可能的实现方式中,在第一融合点和/或第二融合点的计算过程中,会产生大量的临时输出。可以为第一融合点和/或第二融合点分配缓冲空间,将产生的临时输出发送至为该融合点分配的缓冲空间内。
在一种可能的实现方式中,在第一融合点和/或第二融合点的计算过程中,可以将与之对应的缓冲空间的状态设置为“不可用”或“忙”等。在第一融合点和/或第二融合点完成计算后,可以将与之对应的缓冲空间的状态设置为“可用”或“空闲”等,可以不释放与之对应的缓冲空间。可以建立缓冲区列表来记录和管理为第一融合点和/或第二融合点分配的缓冲空间,在融合点计算过程或完成计算后中,在缓冲区列表中将该融合点对应的缓冲空间的状态进行相应的状态更新。
在本实施例中,可以将为第一融合点和/或第二融合点分配缓冲空间,当第一融合点和/或第二融合点完成运算时,不释放所述缓冲空间。为融合点分配缓冲空间可以减少系统资源占用,提高神经网络模型运算效率。
图4示出根据本公开一实施例的神经网络模型算法编译方法中融合方式示意图,如图4所示,在一种可能的实现方式中,将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,包括将以下合并方式中的至少一种:
将神经网络模型算法的计算图中批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点融合为融合批量标准化第一融合点,如图4中将BatchNorm(Add,Rsqrt,Mul,Sub,Mul)融合为FusedBatchNorm。
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和批量标准化神经网络加速器节点融合为融合卷积批量第一融合点,所述批量标准化神经网络加速器节点包括以下中的其中一种:批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点;如图4中将Conv2D+BatchNorm融合为FusedConv2DBias。
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和加偏置神经网络加速器节点融合为融合卷积偏置第一融合点;如图4中将Conv2D+BiasAdd融合为FusedConv2DBias。
将神经网络模型算法的计算图中矩阵乘神经网络加速器节点和加偏置神经网络加速器节点融合为矩阵偏置第一融合点,如图4中将MatMul+BiasAdd融合为MLP。
图5示出根据本公开一实施例的神经网络模型算法编译装置的框图,如图5所示,所述神经网络模型算法编译装置,包括:
第一融合点获取模块10,用于将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,将至少两个连续的中央处理器节点进行融合得到第二融合点,所述计算图包括多个节点,所述节点包括神经网络加速器节点和中央处理器节点;
中间表达获取模块20,用于将除所述第一融合点和所述第二融合点外的节点、所述第一融合点和所述第二融合点分别进行编译,得到所述计算图的中间表达;
可执行文件取模块30,用于根据所述计算图的中间表达得到所述神经网络模型算法的可执行文件。
在一种可能的实现方式中,所述第一融合点获取模块,用于:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当至少两个连续的神经网络加速器节点中,除第一个待融合节点和最后一个待融合节点外的待融合节点的输入数据来自神经网络加速器节点时,将所述待融合节点进行融合得到第一融合点。
在一种可能的实现方式中,所述第一融合点获取模块,还用于:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当所述待融合节点的输出数据发送至至少两个中央处理器节点时,在输出数据发送至中央处理器节点的待融合节点之间添加依赖关系;
将所述待融合节点进行融合得到第一融合点。
在一种可能的实现方式中,所述装置还包括:
缓冲空间分配获取模块,用于为所述第一融合点和/或所述第二融合点分配缓冲空间,当所述第一融合点和/或第二融合点完成运算时,不释放所述缓冲空间。
在一种可能的实现方式中,所述第一融合点获取模块,用于进行以下合并方式中的至少一种:
将神经网络模型算法的计算图中批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点融合为融合批量标准化第一融合点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和批量标准化神经网络加速器节点融合为融合卷积批量第一融合点,所述批量标准化神经网络加速器节点包括以下中的其中一种:批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和加偏置神经网络加速器节点融合为融合卷积偏置第一融合点;
将神经网络模型算法的计算图中矩阵乘神经网络加速器节点和加偏置神经网络加速器节点融合为矩阵偏置第一融合点。
图6示出根据本公开一实施例的组合处理装置的框图,如图6所示,所述组合处理装置,包括上述的神经网络运算装置,通用互联接口,和其他处理装置。
神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
组合处理装置还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一种可能的实现方式中,本公开还提供神经网络芯片,其包括了上述神经网络运算装置或组合处理装置。
在一种可能的实现方式中,本公开还提供芯片封装结构,其包括了上述芯片。
在一种可能的实现方式中,本公开还提供板卡,其包括了上述芯片封装结构。
在一种可能的实现方式中,本公开还提供电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种神经网络模型算法编译方法,其特征在于,所述方法包括:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,将至少两个连续的中央处理器节点进行融合得到第二融合点,所述计算图包括多个节点,所述节点包括神经网络加速器节点和中央处理器节点,所述计算图包括有向无环图;
将除所述第一融合点和所述第二融合点外的节点、所述第一融合点和所述第二融合点分别进行编译,得到所述计算图的中间表达;
根据所述计算图的中间表达得到所述神经网络模型算法的可执行文件,
其中,将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,包括:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当至少两个连续的神经网络加速器节点中,除第一个待融合节点和最后一个待融合节点外的待融合节点的输入数据来自神经网络加速器节点时,将所述待融合节点进行融合得到第一融合点。
2.根据权利要求1所述的方法,其特征在于,将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,包括:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当所述待融合节点的输出数据发送至至少两个中央处理器节点时,在输出数据发送至中央处理器节点的待融合节点之间添加依赖关系;
将所述待融合节点进行融合得到第一融合点。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
为所述第一融合点和/或所述第二融合点分配缓冲空间,当所述第一融合点和/或第二融合点完成运算时,不释放所述缓冲空间。
4.根据权利要求1所述的方法,其特征在于,将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,包括将以下合并方式中的至少一种:
将神经网络模型算法的计算图中批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点融合为融合批量标准化第一融合点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和批量标准化神经网络加速器节点融合为融合卷积批量第一融合点,所述批量标准化神经网络加速器节点包括以下中的其中一种:批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和加偏置神经网络加速器节点融合为融合卷积偏置第一融合点;
将神经网络模型算法的计算图中矩阵乘神经网络加速器节点和加偏置神经网络加速器节点融合为矩阵偏置第一融合点。
5.一种神经网络模型算法编译装置,其特征在于,所述装置包括:
第一融合点获取模块,用于将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点进行融合,得到第一融合点,将至少两个连续的中央处理器节点进行融合得到第二融合点,所述计算图包括多个节点,所述节点包括神经网络加速器节点和中央处理器节点,所述计算图包括有向无环图;
中间表达获取模块,用于将除所述第一融合点和所述第二融合点外的节点、所述第一融合点和所述第二融合点分别进行编译,得到所述计算图的中间表达;
可执行文件取模块,用于根据所述计算图的中间表达得到所述神经网络模型算法的可执行文件,
其中,所述第一融合点获取模块,用于:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当至少两个连续的神经网络加速器节点中,除第一个待融合节点和最后一个待融合节点外的待融合节点的输入数据来自神经网络加速器节点时,将所述待融合节点进行融合得到第一融合点。
6.根据权利要求5所述的装置,其特征在于,所述第一融合点获取模块,还用于:
将神经网络模型算法的计算图中至少两个连续的神经网络加速器节点确定为待融合节点;
当所述待融合节点的输出数据发送至至少两个中央处理器节点时,在输出数据发送至中央处理器节点的待融合节点之间添加依赖关系;
将所述待融合节点进行融合得到第一融合点。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:
缓冲空间分配获取模块,用于为所述第一融合点和/或所述第二融合点分配缓冲空间,当所述第一融合点和/或第二融合点完成运算时,不释放所述缓冲空间。
8.根据权利要求5所述的装置,其特征在于,所述第一融合点获取模块,用于进行以下合并方式中的至少一种:
将神经网络模型算法的计算图中批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点融合为融合批量标准化第一融合点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和批量标准化神经网络加速器节点融合为融合卷积批量第一融合点,所述批量标准化神经网络加速器节点包括以下中的其中一种:批量标准化加神经网络加速器节点、批量标准化开平方神经网络加速器节点、批量标准化乘神经网络加速器节点、批量标准化减神经网络加速器节点;
将神经网络模型算法的计算图中二维卷积神经网络加速器节点和加偏置神经网络加速器节点融合为融合卷积偏置第一融合点;
将神经网络模型算法的计算图中矩阵乘神经网络加速器节点和加偏置神经网络加速器节点融合为矩阵偏置第一融合点。
9.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求5-8任一项所述的神经网络模型算法编译装置,所述神经网络运算装置用于完成设定的神经网络运算。
10.一种组合运算装置,其特征在于,所述组合运算装置包括一个或多个如权利要求9任一项所述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
11.一种神经网络芯片,其特征在于,所述神经网络芯片包括:
如权利要求5-8任一项所述的神经网络模型算法编译装置;或
如权利要求9所述的神经网络运算装置;或
如权利要求10所述的组合运算 装置。
12.一种电子设备,其特征在于,所述电子设备包括:
如权利要求5-8任一项所述的神经网络模型算法编译装置;或
如权利要求9所述的神经网络运算装置;或
如权利要求10所述的组合运算 装置;或
如权利要求11所述的神经网络芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811459215.4A CN109543825B (zh) | 2018-11-30 | 2018-11-30 | 神经网络模型算法编译方法、装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811459215.4A CN109543825B (zh) | 2018-11-30 | 2018-11-30 | 神经网络模型算法编译方法、装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109543825A CN109543825A (zh) | 2019-03-29 |
CN109543825B true CN109543825B (zh) | 2020-12-01 |
Family
ID=65851957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811459215.4A Active CN109543825B (zh) | 2018-11-30 | 2018-11-30 | 神经网络模型算法编译方法、装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109543825B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111915002B (zh) * | 2019-05-09 | 2023-12-19 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN110704040A (zh) * | 2019-09-30 | 2020-01-17 | 上海寒武纪信息科技有限公司 | 信息处理方法、装置、计算机设备及可读存储介质 |
CN110866598A (zh) * | 2019-09-30 | 2020-03-06 | 上海寒武纪信息科技有限公司 | block的合并方法、block的划分方法、组合处理装置及编译系统 |
CN110929861B (zh) * | 2019-11-15 | 2023-04-18 | 中国人民解放军国防科技大学 | 一种多层感知机深度神经网络层间流水的硬件加速器 |
CN113449858A (zh) * | 2020-03-27 | 2021-09-28 | 华为技术有限公司 | 一种神经网络模型的处理方法以及相关设备 |
CN111753983A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的定制化方法、系统、设备和存储介质 |
CN111953614B (zh) * | 2020-08-07 | 2023-10-24 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、处理设备及介质 |
CN111935026B (zh) * | 2020-08-07 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 一种数据传输方法、装置、处理设备及介质 |
CN114692860A (zh) * | 2020-12-28 | 2022-07-01 | 华为技术有限公司 | 一种计算图的节点融合方法及设备 |
CN115408568B (zh) * | 2021-05-26 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种对神经网络的算子进行融合的方法和相关产品 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101860752B (zh) * | 2010-05-07 | 2012-02-01 | 浙江大学 | 一种针对嵌入式多核系统的视频编码流水化并行方法 |
CN107239315B (zh) * | 2017-04-11 | 2019-11-15 | 赛灵思公司 | 面向神经网络异构计算平台的编程模型 |
CN107766812B (zh) * | 2017-10-12 | 2021-06-29 | 东南大学—无锡集成电路技术研究所 | 一种基于MiZ702N的实时人脸检测识别系统 |
CN109522254B (zh) * | 2017-10-30 | 2022-04-12 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
-
2018
- 2018-11-30 CN CN201811459215.4A patent/CN109543825B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109543825A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284815B (zh) | 神经网络模型算法编译方法、装置及相关产品 | |
CN109543825B (zh) | 神经网络模型算法编译方法、装置及相关产品 | |
CN113641413A (zh) | 目标模型加载更新方法及装置、可读介质和电子设备 | |
CN111079909B (zh) | 运算方法、系统及相关产品 | |
CN109558565B (zh) | 运算方法、装置及相关产品 | |
CN109542837B (zh) | 运算方法、装置及相关产品 | |
CN109543835B (zh) | 运算方法、装置及相关产品 | |
CN110647356A (zh) | 运算装置及相关产品 | |
CN111078291B (zh) | 运算方法、系统及相关产品 | |
CN111079925B (zh) | 运算方法、装置及相关产品 | |
CN109543836B (zh) | 运算方法、装置及相关产品 | |
CN109558943B (zh) | 运算方法、装置及相关产品 | |
CN109583580B (zh) | 运算方法、装置及相关产品 | |
CN109543833B (zh) | 运算方法、装置及相关产品 | |
CN109558564B (zh) | 运算方法、装置及相关产品 | |
CN111078284A (zh) | 运算方法、系统及相关产品 | |
CN109543834B (zh) | 运算方法、装置及相关产品 | |
CN111078283B (zh) | 运算方法、装置及相关产品 | |
CN111078282B (zh) | 运算方法、装置及相关产品 | |
CN111079907B (zh) | 运算方法、装置及相关产品 | |
CN111078125B (zh) | 运算方法、装置及相关产品 | |
CN111079910B (zh) | 运算方法、装置及相关产品 | |
CN111079914B (zh) | 运算方法、系统及相关产品 | |
CN111078280B (zh) | 运算方法、装置及相关产品 | |
CN111079913B (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: 20201030 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: 200120 6th Floor, Block B, 168 Tonghui Road, Pudong New Area, Shanghai Applicant before: Shanghai Cambricon Information Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |