一种流执行方法及装置与流程

文档序号:12671838阅读:390来源:国知局
一种流执行方法及装置与流程

本发明涉及人工神经网络技术领域,更具体地涉及一种流执行方法及装置,用于神经网络处理器。



背景技术:

深度学习是机器学习的分支,它试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。

至今已有数种深度学习框架,如深度神经网络、卷积神经网络和深度信念网络和递归神经网络已被应用计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。另外,深度学习已成为类似术语,或者说是神经网络的品牌重塑。

随着深度学习(神经网络)的大热,神经网络处理器也应运而生,通过专门的内存和运算模块设计,神经网络处理器在进行深度学习运算时可以获得相比较通用处理器几十甚是上百倍的加速比,并且面积更小,功耗更低。

为了方便应用神经网络处理器在各种不同网络结构上进行加速运算,如何高效的实现对神经网络处理器的功能重构也是一项非常重要的工作。在传统的神经网络处理器编程接口的编写过程中,为了实现最大限度的原子性和灵活性,接口的基本功能定义都以神经网络运算中的常用原子操作作为基础,例如卷积(Convolution),池化(Pooling),激活(Active)等。然而神经网络处理器由于其独特的内部体系结构设计,过于细小的原子操作的简单顺序拼接无法充分发挥它的硬件性能。



技术实现要素:

鉴于现有方案存在的问题,为了克服上述现有技术方案的不足,本发明提出了一种流执行方法。

根据本发明的一个方面,提供了一种流执行方法,包括:预处理步骤,获得指令描述符流;层优化步骤,优化指令描述符流;以及构建指令流,根据所述优化后的指令描述符流构建指令流。

根据本发明的另一个方面,提供了一种流执行装置,包括:预处理模块,用于获得指令描述符流;层优化模块,用于优化指令描述符流;以及指令流构建模块,用于根据所述优化后的指令描述符流构建指令流。

从上述技术方案可以看出,本发明具有以下有益效果:

通过构建指令描述符流并优化实现了对神经网络处理器更高效的功能重构,以期望在运用神经网络加速器进行神经网络方面运算时可以获得相比较传统处理器更高的加速比;

采用层消除处理和/或层融合处理优化指令描述符流,-克服了用卷积,池化,激活等细粒度原子操作组成完整神经网络并进行完整运算时-产生的意外IO开销和-意外的冗余操作。

附图说明

图1为本发明一实施例流执行方法的流程图;

图2为图1中层消除处理的流程图;

图3为图1中层融合处理的流程图;

图4为本发明另一实施例流执行装置的示意图。

具体实施方式

本发明某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本发明的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本发明满足适用的法律要求。

在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

本发明实施例提供了一种流执行方法,用于神经网络处理器,实现了对神经网络处理器更高效的功能重构,获得比传统处理器更高的加速比。

该流执行方法,包括预处理步骤,层优化步骤及构建指令流的步骤。

图1为本发明实施例流执行方法的示意图,如图1所示,本实施例中的流执行方法包括以下步骤:

S1:预处理步骤,用于获得指令描述符流,即用于生成指令的指令描述符序列;

该预处理步骤包括:

S11:构建设备流,即构建神经网络基本操作序列;

具体的,基于神经网络结构、输入神经元及权值等基础数据构建神经网络基本操作序列,例如,利用网络结构A对输入数据集合B进行处理,根据网络结构A可以分为一系列的基本操作,例如卷积(Convolution),池化(Pooling),激活(Active)等,细化所有的操作,并排序形成流的形式。

S12:构建指令描述符流,即构建指令描述符序列;

根据S11形成的设备流构建指令描述符流,指令描述符流用于生成指令流。

S2:层优化步骤,优化指令描述符流,包括层消除处理S21和/或层融合处理S22;

所述层消除处理S21用于消除指令描述符流中的冗余操作,如图2所示,具体包括:

S211:遍历指令描述符流中指令描述符;

S212:判断指令描述符是否为冗余操作;若判断结果为Y,则执行S213,否则执行S214;

S213:去除冗余操作的指令描述符;

S214:保留指令描述符;

S215:输出无冗余操作的指令描述符流。

所述冗余操作例如连续两层相同输入数据格式时的无效拆分等。以下为具体例子。

设存在连续的两个卷积层(Convolution Layer)C和D,并且C和D中均设置参数group为2。由于硬件限制,在单独处理C和D的运算时,需要进行输入时对数据拆分,输出时对数据合并。而当C和D中的卷积操作在设备缓存中连续依次存在时,C的输出作为D的输入,中间可以省去输入数据的合并和拆分操作。

所述层融合处理S22用于融合指令描述符流中一些操作,如图3所示,具体包括:

S221:遍历指令描述符流中指令描述符;

S222:判断指令描述符流代表的网络结构中是否存在可融合的层;若判断结果为Y,则执行S223,否则执行S224;

S223:根据网络结构中可融合的层简化指令描述符序;

S224:保留指令描述符;

S225:输出无可融合网络结构的指令描述符流。

所述层融合处理例如对其中可以一次性生成指令的多个连续网络层做融合处理(如可以作为基本模块的简单三层操作卷积,池化,激活)等。以下为具体例子,

网络结构中包括了连续的三层,卷积层(Convolution),归一化层(BatchNorm),激活层(Active)。生成了相应的指令描述符后,层融合处理模块判断到这三层可以进行融合,则对指令描述符序列进行处理,融合相关指令描述符,用一条指令描述符表示这样的三层网络结构。

本实施例中,层优化步骤S2中,层消除处理S21和层融合处理S22可以选用其中一种,或者两者同时存在,两者同时存在时,层消除处理S21和层融合处理S22可以顺序执行,也可以同时执行,两者顺序执行时,先执行其中任一步骤均是可行的。

S3:构建指令流,即用于执行的指令序列。

具体的根据S2中获得的优化后的指令描述符流,构建可被神经网络处理器执行的指令流。该指令流可以直接传输给神经网络处理器来执行。

本发明的另一实施例提供了一种流执行装置,如图4所示,包括:预处理模块10、层优化模块20及指令流构建模块30。

预处理模块10,用于获得指令描述符流,即用于生成指令的指令描述符序列,包括设备流构建模块11及指令描述符流构建模块12。

设备流构建模块11,用于构建设备流,即构建神经网络基本操作序列,其基于神经网络结构、输入神经元及权值等基础数据构建神经网络基本操作序列;

指令描述符流构建模块12用于构建指令描述符流,即构建指令描述符序列,根据形成的设备流构建指令描述符流,指令描述符流用于生成指令流。

层优化模块20用于优化指令描述符流,包括层消除模块21和/或层融合模块22;

层消除模块21用于消除指令描述符流中的冗余操作,其遍历指令描述符流中描述符,去除冗余操作的指令描述符,输出无冗余操作的指令描述符流。

层融合模块22用于融合指令描述符流中一些操作,其遍历指令描述符流中描述符,根据网络结构和预先定义的模式融合指令描述符流中的相关指令描述符,输出层融合后的指令描述符流。

本实施例中,层消除模块21和层融合模块22可以选用其中一种,或者两者同时存在,两者同时存在时,层消除模块21和层融合模块22可以顺序工作,也可以同时工作,两者顺序工作时,先后顺序可以调换。

前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被承载在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。

需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1