一种具有低带宽激活装置的神经网络处理器及其方法与流程

文档序号:15198335发布日期:2018-08-19 02:12阅读:186来源:国知局

本发明涉及神经网络处理器的改进,尤其涉及对其激活装置的改进。



背景技术:

深度学习技术在近几年得到了飞速的发展,在解决高级抽象认知问题上,例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐和智能机器人等领域得到了广泛应用并具有出色的表现,因此成为了学术界和工业界的研究热点。深度神经网络是人工智能领域具有最高发展水平的感知模型之一,该类网络通过建立模型模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来了突破性进展。

近些年来,越来越多的研究者着力于开发针对神经网络的专用处理器,即神经网络处理器。与神经网络的计算过程相匹配地,神经网络处理器需要以硬件装置来实现卷积、激活、池化等操作,使得卷积、激活、池化等操作顺序地由卷积装置、激活装置、和池化装置来完成。

在传统的神经网络处理器中,考虑到激活装置以卷积装置的输出作为其输入,为了快速处理卷积装置的输出神经元,常常采用与卷积装置的输出数据量对等的大小以作为激活装置的输入位宽以及激活运算单元的规模,例如假设卷积装置一次性输出1024bit,则将激活装置的输入接口的位宽设置为1024bit,并且激活运算单元的规模也被设置为一次性可以处理1024bit。然而,在实际的使用过程中,由于神经网络中执行卷积操作的计算量巨大,卷积装置并不能保证在每个时间周期内均输出卷积结果以作为激活计算单元的输入,常常出现卷积装置在经过多个时间周期后才一次性输出一定数量的待激活神经元,而这样的间歇性使得激活装置不能连续地接收到待激活神经元。对于上述采用与卷积装置的输出数据量对等大小作为激活装置的规模的现有技术而言,激活装置的硬件存在大量的闲置时间,使得硬件资源的利用率不高。



技术实现要素:

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种神经网络处理器,包括卷积装置和激活装置,其特征在于所述激活装置包括:输入接口、激活运算单元、和输出接口;

其中,所述输入接口用于接收来自所述卷积装置的待激活神经元,所述输入接口的带宽与所述卷积装置输出待激活神经元的速度相关;

所述激活运算单元,用于对来自所述输入接口的待激活神经元进行激活处理,所述激活运算单元的运算速度与所述卷积装置输出待激活神经元的速度相关;

所述输出接口,用于输出激活处理的结果,所述输出接口的带宽与所述激活运算单元的运算速度相对应。

优选地,根据所述神经网络处理器,其中所述输入接口的带宽、以及所述激活运算单元的运算速度与所述卷积装置输出待激活神经元的最快输出速度或平均输出速度相对应。

优选地,根据所述神经网络处理器,其中所述输入接口的带宽、以及所述激活运算单元的运算速度与所述卷积装置针对神经网络的最快子网络层而输出待激活神经元的速度相对应。

优选地,根据所述神经网络处理器,其中所述激活装置还包括:激活控制单元,用于控制所述输入接口、激活运算单元、和输出接口以流水线的方式针对所述卷积装置一次性输出的待激活神经元分别进行接收、处理、和输出操作。

优选地,根据所述神经网络处理器,其中所述激活控制单元还用于在所述卷积装置针对神经网络的当前子网络层实际输出待激活神经元的速度慢于所述流水线的处理速度时,暂停所述输入接口、激活运算单元、和输出接口间的数据传输。

优选地,根据所述神经网络处理器,其中所述激活控制单元还用于根据所述卷积装置提供待激活神经元的速度、以及所述输入接口的带宽和/或所述激活运算单元的运算速度,控制所述输入接口和/或所述激活运算单元在每个单位时间对所述卷积装置一次性提供的全部待激活神经元中相应部分的待激活神经元进行操作。

以及,一种用于所述神经网络处理器的方法,包括:

a1)激活控制单元根据所述卷积装置一次性提供待激活神经元的数据量、以及所述输入接口的带宽和/或所述激活运算单元的运算速度,确定需要将所述卷积装置一次性提供的全部待激活神经元分为多少部分;

a2)激活控制单元控制所述输入接口、所述激活运算单元、和所述输出接口在每个单位时间以流水线的方式依次针对所划分的各个部分的待激活神经元进行操作,以完成针对所述卷积装置一次性提供的全部待激活神经元的操作。

优选地,根据所述方法,其中步骤a1)还包括:

激活控制单元根据所述卷积装置针对神经网络的当前子网络层而输出待激活神经元的速度、以及所述输入接口的带宽和/或所述激活运算单元的运算速度,确定当前流水线存在多少单位时间的无效操作;

所述步骤a2)还包括:

激活控制单元根据所确定的无效操作的单位时间的数量,控制所述输入接口、所述激活运算单元、和所述输出接口在相应的单位时间内暂停它们之间的数据传输。

以及,一种神经网络处理器的设计方法,包括:

b1)确定卷积装置针对设计所对应的神经网络的最快子网络层而输出待激活神经元的速度;

b2)根据所确定的所述速度,确定激活装置的输入接口的带宽、激活装置的激活运算单元的运算速度、激活装置的输出接口的带宽。

优选地,根据所述方法,其中步骤b1)还包括:

确定卷积装置针对设计所对应的神经网络的最快子网络层而输出待激活神经元的最快输出速度或者平均输出速度;

步骤b2)还包括:

将所述激活装置的输入接口的带宽、激活装置的激活运算单元的运算速度、激活装置的输出接口的带宽选择为与所述最快输出速度或者平均输出速度相对应。

与现有技术相比,本发明的优点在于:

根据本发明的激活装置的输入接口、激活运算单元、和输出接口的硬件规模均小于激活装置采用与卷积装置的输出数据量对等的硬件规模的传统技术,这使得具有这样激活装置的神经网络处理器的能耗更小。本发明的激活装置将卷积装置间歇性地产生待激活神经元而造成的闲置时间切割成多个小段,由更小规模的硬件利用这多个小段的时间逐渐地完成对全部待激活神经元的处理,其在不增加处理时长的情况下提高了硬件的复用率,避免使用大规模硬件、并且避免由此带来的硬件空转。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1是根据本发明的一个实施例的用于神经网络处理器的激活装置的结构的示意图;

图2是根据本发明的一个实施例由用于神经网络处理器的激活装置以流水线的方式针对卷积装置一次性输出的全部待激活神经元所划分的四个部分进行处理的时序图;

图3是根据本发明的一个实施例的于神经网络处理器的激活装置的结构图。

具体实施方式

下面结合附图和具体实施方式对本发明作详细说明。

如背景技术中所介绍地,现有技术中普遍认为激活装置的输入位宽需要与卷积装置一次性输出的数据量的大小保持一致。然而,基于发明人的研究,卷积装置并不能保证在每个单位时间内均输出卷积计算的结果(即需要卷积装置处理的待激活神经元),例如,卷积装置可能在经过了四个单位时间后一次性输出一定量的计算结果以作为待激活神经元输入到激活装置,这使得激活装置需要保持闲置状态直到卷积装置输出了新的计算结果。

发明人认为,这种情况导致了激活装置的硬件经常处于闲置状态。因此,若是根据卷积装置输出待激活神经元的频率以及一次性产生的待激活神经元的数量,选择较少数量的硬件来实现激活装置,由较小规模的硬件在与卷积装置输出待激活神经元的频率对应的多个单位时间内依次地对一次性产生的待激活神经元进行激活处理,则神经网络处理器就不必为激活装置设置大规模的硬件,并且也改善了用于激活装置的硬件的闲置情况,由此可以提高硬件资源的利用率。

并且,考虑到若是将由卷积装置一次性产生的待激活神经元分为多个批次以由激活装置在多个单位时间内依次进行处理,则可以进一步地以流水线的方式实现针对待激活神经元的输入、激活、和输出,从而连续地对待激活神经元进行处理。

下面将通过具体的实施例来介绍根据本发明的用于神经网络处理器的激活装置。

图1示出了根据本发明的一个实施例的激活装置101的结构图。参考图1,激活装置101中包括输入接口102、激活运算单元103、输出接口104、和激活控制单元105。

其中,输入接口102的带宽与为所述激活装置101提供待激活神经元的卷积装置的输出速度相对应。需要注意的是,这里的“带宽”与“位宽”的概念存在差别,“位宽”指的是硬件的尺寸,而这里所述的“带宽”指的是输入接口在单位时间内接收或输出的数据量。考虑到对于具有多个网络层的神经网络而言,针对不同网络层的数据执行卷积的处理速度可能存在差异,为了保证激活装置在针对神经网络的每个网络层的待激活神经元进行激活时均能够正常工作,这里可以选取各个神经网络层中输出待激活神经元的速度最快的一层(下文中称作“最快子网络层”)所对应的输出速度来确定输入接口102的带宽。所述输出速度可以是卷积装置针对该神经网络层的平均输出速度,也可以是最快输出速度。

根据本发明的一个实施例,对于激活装置101与卷积装置直接相连的情况,输入接口102的带宽可以设置为与卷积装置针对神经网络层的最快输出速度相对应。例如,与激活装置101相连的卷积装置最快可以在一个单位时间t内输出1024bit的待激活神经元,即卷积装置的最快输出速度为1024bit/t,则可以将激活装置101的输入接口102的带宽设置为1024bit/t。这里将激活装置101的输入接口102设置为与卷积装置的最快输出速度相对应的原因在于,对于激活装置101与卷积装置直接相连的情况,在激活装置101与卷积装置之间不设置相应的缓存装置,若是激活装置101的输入接口102的带宽小于卷积装置的最快输出速度,则可能出现数据丢失的情况。因此,优选地将将激活装置101的输入接口102的带宽设置为与卷积装置的最快输出速度相对应。

根据本发明的另一个实施例,对于激活装置101与卷积装置以总线的方式相连的情况,输入接口102的带宽可以设置为与卷积装置针对神经网络层的平均输出速度相对应。例如,与激活装置101相连的卷积装置平均每四个单位时间t输出一次,一次性输出1024bit的待激活神经元,则卷积装置的平均输出速度为256bit/t,则可以将激活装置101的输入接口102的带宽设置为256bit/t。与前一实施例不同之处在于,采用总线的方式来连接激活装置101与卷积装置相当于在激活装置101与卷积装置之间布置了缓存,激活装置101的输入接口102可以采用与更小的带宽对应的硬件结构,以降低硬件成本。

激活运算单元103,用于对由输入接口102所接收到的待激活神经元进行激活处理,例如采用诸如基于relu、sigmoid、tanh等激活函数对应的软件或硬件进行激活处理,所述激活运算单元103的规模也要与为所述激活装置101提供待激活神经元的卷积装置的输出速度相匹配,这里的所述“规模”指的是硬件在单位时间内可处理的数据量。由此,可以在卷积装置经过n个单位时间后一次性输出一定量的待激活神经元时,由激活运算单元103分为多次来完成对全部待激活神经元的激活处理,即每次处理全部待激活神经元中的一部分。与输入接口102相类似地,可以选取各个神经网络层中输出待激活神经元的速度最快的一层所对应的输出速度来确定激活运算单元103的规模,并且所述输出速度可以是卷积装置针对该神经网络层的平均输出速度,也可以是最快输出速度。

根据本发明的再一个实施例,对于在输入接口102和激活运算单元103之间设置有缓存的情况,可以将激活运算单元103的规模设置为与卷积装置针对该神经网络层的平均输出速度相对应。例如,假设与激活装置101相连的卷积装置平均每四个单位时间(每个单位时间表示为t)输出一次,一次性输出1024bit的待激活神经元,则卷积装置的平均输出速度为256bit/t,则可以将激活装置101的激活运算单元103的规模设置为256bit/t,由所述规模的激活运算单元103的硬件在四个单位时间的每一个单位时间t内,对全部1024bit的待激活神经元当中的256bit进行激活处理,以在全部四个单位时间完成对全部1024bit的待激活神经元的激活。

根据本发明的又一个实施例,还可以将激活装置101的输入接口102的带宽和激活运算单元103的规模均设置为与卷积装置针对该神经网络层的最快输出速度相对应。采用这样的方式能够应对卷积装置以任何速度输出的情况,并且无需在激活装置101与卷积装置之间、以及输入接口102与激活运算单元103之间设置缓存。然而,相应地其对硬件的利用率要小于根据本发明的其他实施例。

输出接口104,用于将由激活运算单元103完成激活处理后的结果输出所述激活装置101,输出接口104的带宽也要与所述激活运算单元103的处理速度相匹配,所述“带宽”指的是单位时间内接收或输出的数据量。

如前文中所述,本发明还可以进一步地以流水线的方式实现针对待激活神经元的输入、激活、和输出,从而连续地对待激活神经元进行处理。例如,对于输入接口102、激活运算单元103和输出接口104均采用与卷积装置针对该神经网络层的平均输出速度相对应的情况,若卷积装置平均每四个单位时间(每个单位时间表示为t)输出一次,一次性输出1024bit的待激活神经元,则可以认为全部1024bit的待激活神经元被分为前256bit、随后的256bit、再之后的256bit、以及最后256bit的部分,由激活装置101在四个单位时间内完成对所述四个部分的待激活神经元的处理。参考图2,本发明的流水线分为三个状态,即接收、处理和输出,在第一个单位时间t1,由输入接口102接收全部1024bit的待激活神经元中的第一部分,即前256bit;在第二个单位时间t2,由输入接口102接收全部待激活神经元中的第二部分,同时由激活运算单元103对输入的所述第一部分的待激活神经元进行激活处理;在第三个单位时间t3,由输入接口102接收全部待激活神经元中的第三部分,同时由激活运算单元103对输入的所述第二部分的待激活神经元进行激活处理,由输出接口104将完成了激活处理的结果输出所述激活装置101;以此类推。从图2中可以看出,接收全部四个部分的待激活神经元数据共消耗了t1、t2、t3、t4这四个单位时间,类似地处理和输出全部四个部分的待激活神经元数据也均消耗了四个单位时间。

对此,则需要激活控制单元105来控制输入接口102、激活运算单元103、输出接口104以流水线的方式对待激活神经元进行处理。

并且,由于在前述实施例中输入接口102的带宽、激活运算单元103的规模、输出接口104的带宽与神经网络中最快子网络层的待激活神经元的输出速度相对应,神经网络的其他子网络层输出待激活神经元的速度均小于等于该最快子网络层输出待激活神经元的速度。当神经网络处理器在处理其他子网络层的数据时,待激活神经元的输出速度赶不上激活装置101的处理速度,这便导致了激活装置101还存在闲置的情况,其输入接口102存在需要等待数据到来的情况(本领域将其称之为“留空”或“空拍”)。而执行空拍时,为了保持流水线的正常运作,流水线依旧要传递无用数据并执行激活运算,这样便造成了能耗上的浪费。例如,若最快子网络层平均每四个单位时间输出一次待激活神经元,而对于其他子网络层平均每八个单位时间输出一次待激活神经元,则在处理其他子网络层的待激活神经元时,激活装置101需要为接收待激活神经而等待相当长的时间。

对此,根据本发明的一个实施例,通过激活控制单元105来控制流水线的启动和暂停,以避免等待期间激活装置101执行空拍、传递无效数据,从而进一步地降低硬件的能耗。

激活控制单元105,还用于根据卷积装置针对神经网络的当前子网络层输出待激活神经元的速度,控制输入接口102、激活运算单元103、输出接口104的开启和暂停,以控制所述流水线的数据传递。在开启时,输入接口102、激活运算单元103、输出接口104以流水线的方式进行工作,在暂停时,阻断输入接口102和激活运算单元103之间的数据传输、以及激活运算单元103和输出接口104之间的数据传输,以达到截断流水线的效果。

例如,假设激活装置101硬件规模所对应的处理速度为128bit/t,而神经网络的当前子网络层提供待激活神经元的平均速度仅为32bit/t,若不对流水线进行暂停处理,则激活装置101的占空比为3/4,有效执行占比为1/4,即该激活装置101在每四个单位时间t中有三个单位时间处于无效操作状态。而通过增加上述激活控制单元105对实施流水线操作的输入接口102、激活运算单元103、输出接口104进行暂停和开启的控制,则可以有效的减少激活装置101处于无效操作状态的时间。比如,对于以总线方式连接卷积装置和激活装置101的情况,可以使得流水线暂停三个单位时间,在第四个单位时间开启流水线;而对于直接连接卷积装置和激活装置101的情况,可以在卷积装置和激活装置101之间、或者在输入接口102和激活运算单元103之间设置缓存,并在暂停三个单位时间之后开启以流水线的方式进行处理。

根据本发明的一个实施例,可替换地,激活控制单元105还可以接收并分析来自激活装置101外部的控制信号、激活需求信号来控制输入接口102、激活运算单元103、输出接口104的开启和暂停。所述激活控制信号和激活需求信号可以由现有的神经网络处理器的部件提供。

图3示出了根据本发明的一个实施例的激活装置的硬件结构图。如图3所示,外部装置向激活装置提供待激活神经元,激活装置通过其输入接口接收由卷积装置(未示出)一次性产生的待激活神经元。在该实施例中,根据激活控制单元的控制(即流水线控制信号1),输入接口被用作为流水线中的第一级。类似地,激活控制单元还通过(流水线控制信号2和3)控制激活运算单元和输出接口用作流水线的第二级和第三级。激活控制单元可以根据装置使能信号以进行启动,通过接收来自激活装置外部的控制信号、激活需求信号等,产生流水线控制信号1、2和3。本发明中的激活运算单元可以包括relu、sigmoid、tanh等激活函数,激活运算单元根据激活类选信号选择与相应激活函数对应的硬件参与激活操作。

下面将通过一个实施例介绍上述激活装置的激活过程,包括:

激活控制单元根据卷积装置一次性提供待激活神经元的数据量、以及所述输入接口的带宽和/或所述激活运算单元的规模,确定需要将所述卷积装置一次性提供的全部待激活神经元分为多少部分;例如,卷积装置一次性提供了1024bit的待激活神经元,而输入接口和激活运算单元在每个单位时间仅能处理256bit,此时可以将全部待激活神经元划分为四个部分,每个部分对应于全部数据中的256bit。

激活控制单元控制所述输入接口、所述激活运算单元、和所述输出接口在每个单位时间以流水线的方式依次针对各个部分的待激活神经元进行操作,以完成针对所述卷积装置一次性提供的全部待激活神经元的操作。这里可以以流水线的方式对划分的四个部分的待激活神经元进行处理,例如图2所示出地。

并且,如前文中所述,激活控制单元还可以根据所述卷积装置针对神经网络的当前子网络层而输出待激活神经元的速度、以及所述输入接口的带宽和/或所述激活运算单元的规模,确定当前流水线存在多少单位时间的无效操作;例如,假设在不暂停各级流水线之间的数据传递的情况下,确定有效执行的占比,从而确定对于激活装置而言平均存在多少个单位时间是在进行无效操作。

激活控制单元根据所确定的无效操作的单位时间的数量,控制所述输入接口、所述激活运算单元、和所述输出接口在相应的单位时间内暂停它们之间的数据传输。

考虑到根据本发明的激活装置被用作神经网络处理器的一个部件,而对于大多数应用场景而言,神经网络处理器往往针对的是特定的神经网络。那么在设计这样的神经网络处理器时,则可以有针对性地根据特定神经网络来设计激活装置。例如,首先确定卷积装置针对设计所对应的神经网络的最快子网络层而输出待激活神经元的最快输出速度或者平均输出速度,然后将所述激活装置的输入接口的带宽、激活装置的激活运算单元的规模、激活装置的输出接口的带宽选择为与所述最快输出速度或者平均输出速度相对应,从而获得与本发明前文中对应的激活装置。

显然,根据本发明的激活装置的输入接口、激活运算单元、和输出接口的硬件规模均小于传统技术的激活装置的硬件规模,这使得具有这样激活装置的神经网络处理器的能耗更小。本发明的激活装置将卷积装置间歇性地产生待激活神经元而造成的闲置时间切割成多个小段,由更小规模的硬件利用这多个小段的时间逐渐地完成对全部待激活神经元的处理,可以将其理解为是对硬件的一种“时分复用”。其在不增加处理时长的情况下提高了硬件的复用率,避免使用大规模硬件、并且避免由此带来的硬件空转。

需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

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