一种流执行方法及装置制造方法及图纸

技术编号:15640569 阅读:204 留言:0更新日期:2017-06-16 06:45
一种流执行方法及装置,该方法包括:预处理步骤,获得指令描述符流;层优化步骤,优化指令描述符流;以及构建指令流,根据所述优化后的指令描述符流构建指令流。

【技术实现步骤摘要】
一种流执行方法及装置
本专利技术涉及人工神经网络
,更具体地涉及一种流执行方法及装置,用于神经网络处理器。
技术介绍
深度学习是机器学习的分支,它试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。至今已有数种深度学习框架,如深度神经网络、卷积神经网络和深度信念网络和递归神经网络已被应用计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。另外,深度学习已成为类似术语,或者说是神经网络的品牌重塑。随着深度学习(神经网络)的大热,神经网络处理器也应运而生,通过专门的内存和运算模块设计,神经网络处理器在进行深度学习运算时可以获得相比较通用处理器几十甚是上百倍的加速比,并且面积更小,功耗更低。为了方便应用神经网络处理器在各种不同网络结构上进行加速运算,如何高效的实现对神经网络处理器的功能重构也是一项非常重要的工作。在传统的神经网络处理器编程接口的编写过程中,为了实现最大限度的原子性和灵活性,接口的基本功能定义都以神经网络运算中的常用原子操作作为基础,例如卷积(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:输出无冗余操作的指令描述符流。所述冗余操作例如连续两层相同输入数据格式时的无效拆分等。以下为具体例子。设存在连续的两个卷积层(ConvolutionLayer)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,用于获得指令描述符流,即用于生成指令本文档来自技高网...
一种流执行方法及装置

【技术保护点】
一种流执行方法,其中,包括:预处理步骤(S1),获得指令描述符流;层优化步骤(S2),优化指令描述符流;以及构建指令流(S3),根据所述优化后的指令描述符流构建指令流。

【技术特征摘要】
1.一种流执行方法,其中,包括:预处理步骤(S1),获得指令描述符流;层优化步骤(S2),优化指令描述符流;以及构建指令流(S3),根据所述优化后的指令描述符流构建指令流。2.根据权利要求1所述的流执行方法,其中,所述层优化步骤包括:层消除处理(S21),消除指令描述符流中的冗余操作;和/或层融合处理(S22),融合指令描述符流的可融合操作。3.根据权利要求2所述的流执行方法,其中,所述层消除处理(S21)包括:遍历指令描述符流中指令描述符;判断指令描述符是否为冗余操作,若是,则去除冗余操作的指令描述符,否则保留指令描述符;以及输出无冗余操作的指令描述符流。4.根据权利要求2所述的流执行方法,其中,所述层融合处理(S22)包括:遍历指令描述符流中指令描述符;判断指令描述符流代表的网络结构中是否存在可融合的层,若是,则根据网络结构中可融合的层简化指令描述符序,否则保留指令描述符;以及输出无可融合网络结构的指令描述符流。5.根据权利要求1所述的流执行方法,其中,所述...

【专利技术属性】
技术研发人员:陈云霁李韦杜子东郭崎陈天石
申请(专利权)人:上海寒武纪信息科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1