神经网络的计算方法、系统及其装置与流程

文档序号:11276912阅读:228来源:国知局
神经网络的计算方法、系统及其装置与流程

本发明涉及计算机技术领域,尤其涉及一种神经网络的计算方法、系统及其装置。



背景技术:

在大数据时代,越来越多的设备需要对于真实世界的实时输入进行越来越复杂的处理,如工业机器人、自动驾驶无人汽车以及移动设备等等。这些任务大多数偏向于机器学习领域,其中大部分运算为向量运算或者矩阵运算,具有极高的并行度。相较于传统通用的gpu/cpu加速方案,硬件asic加速器是目前最受欢迎的加速方案,一方面可以提供极高的并行度以实现极高的性能,另外一方面具有极高的能效性。

然而,这其中带宽成为限制加速器性能的一大瓶颈,常见的解决方案是通过放置在片上的缓存来平衡带宽的不均衡性。这些常见的解决方案并没有对数据读写进行优化,从而不能很好的利用数据的特性使得片上存储开销过大,数据读写开销过大。对于目前常见的机器学习类算法,一方面数据量极其庞大,于硬件来说,资源十分有限,庞大的网络无法一次计算完成;另一方面其数据大多具有重用性,也即同样的数据会被多次使用,从而数据具有相同的特征。

综上可知,现有的神经网络的计算技术在实际使用上,显然存在不便与缺陷,所以有必要加以改进。



技术实现要素:

针对上述的缺陷,本发明的目的在于提供一种神经网络的计算方法、系统及其装置,以提升神经网络的计算效率。

为了实现上述目的,本发明提供一种神经网络的计算方法,所述计算方法包括如下步骤:

a、将神经网络划分为多个内部数据特征一致的子网;

b、对每个所述子网进行计算,获得每个所述子网的第一计算结果;

c、根据每个所述子网的第一计算结果计算所述神经网络的总计算结果。

根据所述的计算方法,所述步骤a包括:

a1、根据所述神经网络的输出神经元,将所述神经网络划分为多个内部数据特征一致的子网;

a2、根据所述神经网络的输入神经元,将所述神经网络划分为多个内部数据特征一致的子网;

a3、根据所述神经网络的神经元权值,将所述神经网络划分为多个内部数据特征一致的子网。

根据所述的计算方法,所述步骤a3包括:

根据所述神经网络的神经元权值的分布,将所述神经网络划分为多个内部数据特征一致的子网;或者

根据所述神经网络的神经元权值的正负,将所述神经网络划分为多个内部数据特征一致的子网。

根据所述的计算方法,在所述步骤c中,对每个所述子网的第一计算结果进行拼接或者加权的方式计算所述神经网络的总计算结果。

根据上述任一项所述的计算方法,所述神经网络的数据存储于片外存储介质,所述子网的数据存储于片上存储介质。

为了实现本发明的另一发明目的,本发明还提供了一种神经网络的计算系统,所述计算系统包括:

划分模块,用于将神经网络划分为多个内部数据特征一致的子网;

第一计算模块,用于对每个所述子网进行计算,获得每个所述子网的第一计算结果;

第二计算模块,用于根据每个所述子网的第一计算结果计算所述神经网络的总计算结果。

根据所述的计算系统,所述划分模块包括:

第一划分子模块,用于根据所述神经网络的输出神经元,将所述神经网络划分为多个内部数据特征一致的子网;

第二划分子模块,用于根据所述神经网络的输入神经元,将所述神经网络划分为多个内部数据特征一致的子网;

第三划分子模块,用于根据所述神经网络的神经元权值,将所述神经网络 划分为多个内部数据特征一致的子网。

根据所述的计算系统,所述第三划分子模块根据所述神经网络的神经元权值的分布,将所述神经网络划分为多个内部数据特征一致的子网;或者

根据所述神经网络的神经元权值的正负,将所述神经网络划分为多个内部数据特征一致的子网。

根据所述的计算系统,所述第二计算模块对每个所述子网的第一计算结果进行拼接或者加权的方式计算所述神经网络的总计算结果;

所述神经网络的数据存储于片外存储介质,所述子网的数据存储于片上存储介质。

为了实现本发明的另一发明目的,本发明还提供了一种用于上述任一项所述的计算系统的装置,所述装置包括:

片上存储模块以及寻址模块,设置于片上存储介质,且连接于片上地址索引模块和片上计算模块,用于存储所述子网的数据;

片上地址索引模块,用于索引所述片上存储模块以及寻址模块存储的数据;

片上计算模块,用于计算所述子网的第一计算结果。

本发明通过将神经网络划分为多个内部数据特征一致的子网;对每个所述子网进行计算,获得每个所述子网的第一计算结果;根据每个所述子网的第一计算结果计算所述神经网络的总计算结果。由此,可以通过合理调度数据,缩减片上缓存开销,从而可以提供更加高效的加速器设计支持。由于针对大规模数据进行有效划分,从而降低硬件资源需求如访存带宽需求,同时提供良好的灵活性,解决了对重复数据进行高效读写的问题,提升神经网络的计算效率。

附图说明

图1是本发明实施例提供的神经网络的计算系统的结构示意图;

图2是本发明实施例提供的神经网络的计算系统的结构示意图;

图3是本发明实施例提供的根据输出神经元划分子网的示意图;

图4是本发明实施例提供的根据输入神经元划分子网的示意图;

图5是本发明实施例提供的根据权值连接划分子网的示意图;

图6a是本发明实施例提供的根据权值正负划分子网的示意图;

图6b是本发明实施例提供的根据权值分布划分子网的示意图;

图7是本发明实施例提供的根据按照正负进行权值划分子网及其可能的均值优化表示的示意图;

图8a是本发明实施例提供的神经网络的计算装置的结构示意图;

图8b是本发明实施例提供的神经网络的计算的总体结构的框图;

图9是本发明实施例提供的神经网络的计算方法流程图;

图10是本发明实施例提供的神经网络的计算方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参见图1,在本发明的第一实施例中,提供了一种神经网络的计算系统100,所述计算系统100包括:

划分模块10,用于将神经网络划分为多个内部数据特征一致的子网;

第一计算模块20,用于对每个所述子网进行计算,获得每个所述子网的第一计算结果;

第二计算模块30,用于根据每个所述子网的第一计算结果计算所述神经网络的总计算结果。

在该实施例中,提供了神经网络的计算系统100,通过该计算系统100首先将神经网络的划分为多个子网,根据不同的划分原则,神经网络可以被划分成为不同的子网,而不同的划分方法使得子网具有不同的特征。其中,所述神经网络的数据存储于片外存储介质,所述子网的数据存储于片上存储介质。具体的,划分模块10根据不同的划分原则划分神经网络成为不同的子网,该划分原则是使得同一子网内部的数据特征具有一致性,不同子网间的数据可能具有不同特质,以及不同的子网可能被存储在不同的介质中,如片内(即片上)片外,从而在不同的时刻被硬件调度进行计算。第一计算模块20进行子网计算,对每个所述子网进行计算,获得每个所述子网的第一计算结果。通常情况下,片上有限的资源限制了所有数据同时进行计算的可能性,所以数据被进行划分,大存储介质(廉价,速度稍慢)放在片外,小存储介质(昂贵,速度快)集成在片上,数据按照子网存储在片外介质,在不同的时刻被搬运至计算模块进行子 网相关操作。尽管神经网络本身有可能为复杂的庞大网络,但是每个子网的计算与原本网络本身一致。最后,第二计算模块30对每个所述子网的第一计算结果进行拼接或者加权的方式计算所述神经网络的总计算结果;对于不同的子网根据不同的划分原则,需要进行不同的操作,如第二计算模块30简单拼接或者计算得到最终的总网的计算结果。由此,提高了神经网络的计算效率。

参见图2,在本发明的第二实施例中,划分模块10包括:

第一划分子模块11,用于根据所述神经网络的输出神经元,将所述神经网络划分为多个内部数据特征一致的子网;

第二划分子模块12,用于根据所述神经网络的输入神经元,将所述神经网络划分为多个内部数据特征一致的子网;

第三划分子模块13,用于根据所述神经网络的神经元权值,将所述神经网络划分为多个内部数据特征一致的子网。

在该实施例中,本发明中的子网划分原则包括根据输出神经元划分,根据输入神经元划分,以及根据权值划分,第一划分子模块11、第二划分子模块12以及第三划分子模块13根据不同的划分原则进行划分。如图3所示的子网划分方式,其原则为根据输出神经元划分。不同的输出神经元需要根据所有的输入神经元计算输出结果,神经元间具有不同权值的连接。在图3中输入为4个神经元,输出为2个神经元,输入输出神经元之间为全连接,根据神经网络的输出神经元,两个子网分别计算一个输出神经元。图4为一个神经网络(同图3中的规模)根据输入神经元划分子网,每个子网都只包含2个输入神经元。图3和图4所示的根据输入输出神经元划分的原则不局限于全连接情况,也是适用于非全连接状况。图5则是根据权值进行划分子网的例子,其中每个子网只计算一份的连接,子网加和在一起即是总的网络。

此外,第三划分子模块13根据所述神经网络的神经元权值的分布,将所述神经网络划分为多个内部数据特征一致的子网;或者

根据所述神经网络的神经元权值的正负,将所述神经网络划分为多个内部数据特征一致的子网。

如图5所示的子网划分,其原则为根据神经元权值连接划分。权值具有不同的属性,从而可以根据不同的划分原则将网络划分成为不同的子网。这里根据权值将网络划分成为两个子网。此外,图5所示的子网划分,还根据权值划 分的原则包括正负——将整个网络划分成为正子网和负子网,阈值——大于x的子网和小于等于x的子网,分段——权值在不同区间形成的不同子网等等。以及根据权值进行子网划分,还包括复杂的划分原则,如根据权值分布划分。在本发明的一个实施方式中,图6a所示子网划分,其根据权值划分的原则为权值正负,根据权值正负将网络划分成为正负两个子网。如图6b所示的子网划分,其根据权值分布进行划分,将一个权值符合正态分布的网络划分成为两个权值符合正态分布的子网。图6b所示一个实施例的子网划分原则的一个优点,即可以通过划分将每个子网的权值分布的范围缩减,从而每个子网中的权值可以表示为均值和偏差。从硬件角度上看,均值可以复用,偏差可以直接存储,或者进行聚类,或者进行压缩,从而降低硬件资源需求,降低硬件开销。此外,子网划分原则还包括根据连接划分,这种划分原则可以自然的被归入根据输入或者输出神经元进行划分,本发明故不特别分为一类。子网计算与原始神经网络并无而异,子网划分在每个子网中并不引入额外的操作。

在本发明的一个实施例中,如图7所示一个实施例的子网划分原则,根据权值的分布将数值进行变换表示,也即将单个数值分解成为a+b的形式,其中a是均值,b为相对均值该数值的偏差(b可为正也可为负)。图7所示的实施例的划分原则的一个优点在于,b此时相对0点对称分布,可以采用最少bit的数据表示,a对于所有数值一样,则子网划分成为两个网络,一个为均值子网,另外一个为偏差子网。从硬件资源上来说,均值子网所有权值一致,大大的减少了该子网的权值数据读取次数,如存在片上寄存器则只需要读取一次即够无限次使用;偏差子网中权值的表示一方面有效的降低了每个数值的表示位宽从而降低了带宽需求,一方面偏差权值可以聚类或者压缩从而使得带宽不成为计算的瓶颈。

在上述多个实施例中,神经网络的计算系统100的多个模块可以为软件单元,硬件单元或软硬件结合单元。

参见图8a和图8b,在本发明第三实施例中,还提供了一种用于上述多个计算系统的装置101,该装置101包括:

片上存储模块以及寻址模块1011,设置于片上存储介质,且连接于片上地址索引模块1012和片上计算模块1013,用于存储所述子网的数据;

片上地址索引模块1012,用于索引所述片上存储模块以及寻址模块1011存 储的数据;

片上计算模块1013,用于计算所述子网的第一计算结果。

在该实施例中,神经网络的计算系统的装置101包含片上存储模块以及寻址模块1011、片上地址索引模块1012和片上计算模块1013。片上地址索引模块1012索引片上存储的数据;片上存储模块以及寻址模块1011数据读出接口则是已索引到数据的输出出口;片上存储模块以及寻址模块1011数据写入接口则是存储单元数据根据写入地址写入相应存储位置。该片上存储模块以及寻址模块1011采用读写端口分离设计,从而使得数据的读出和写入相互独立,可以同时进行。由此,可以高效的进行片上地址空间内的重复寻址,也可以进行片外地址寻址;具体的,具有片上存储介质,片外存储介质,地址索引单元,片内片外数据通路,片内数据通路。片上存储介质包含静态随机存储器(staticrandomaccessmemory,sram),动态随机存储器(dynamicrandomaccessmemory,dram),增强动态随机存取存储器(enhanceddynamicrandomaccessmemory,edram),寄存器堆(registerfile,rf)等常见存储介质也可以是新型的存储期间,如非易失存储器(non-volatilememory,nvm)或者3d存储器件等等。对于片上存储介质不局限存储介质。片外存储介质包含静态随机存储器(staticrandomaccessmemory,sram),动态随机存储器(dynamicrandomaccessmemory,dram),增强动态随机存取存储器(enhanceddynamicrandomaccessmemory,edram),寄存器堆(registerfile,rf)等常见存储介质也可以是新型的存储期间,如非易失存储器(non-volatilememory,nvm)或者3d存储器件等等。地址空间划分成为片外数据空间和片内数据空间。地址空间划分具有较强的灵活性,不局限地址空间的大小。片内片外数据通路,包含pci、pcie、ht等互联技术。片内片外数据通路,不局限互联技术。片内数据通路,包含fattree、htree等互联技术。片内数据通路,不局限互联技术。神经网络与子网的数据可以被一次或者多次读写。数据可以被读至一个或者多个片上运算单元。片上存储介质可以被一次或者多次从外部进行读写。片上存储介质可以被一次或者多次从内部读写。片外存储介质数据可以被一次或者多次读写。片外存储介质的数据可以被读至一个或者多个片上运算单元。片外存储介质可以被一次或者多次从外部进行读写。片外存储介质可以被一次或者多次从内部读写。片上存储介质包含一次或者多次替换。片上存储介质的数据替换策略包含顺序替换,逆序替换, 随机替换等。

参见图9,在本发明的第四实施例中,提供了一种神经网络的计算方法,所述计算方法包括如下步骤:

步骤s901中,划分模块10将神经网络划分为多个内部数据特征一致的子网;

步骤s902中,第一计算模块20对每个所述子网进行计算,获得每个所述子网的第一计算结果;

步骤s903中,第二计算模块30根据每个所述子网的第一计算结果计算所述神经网络的总计算结果。

在该实施例中,通过划分模块10对神经网络进行子网划分从而通过分别加速单个子网,使得子网可以被芯片快速高效的完成计算,从而使得总网络的计算快速高效,根据不同的划分原则,神经网络被划分成为不同的子网由第一计算模块20、第二计算模块30进行组织计算。此外,所述神经网络的数据存储于片外存储介质,所述子网的数据存储于片上存储介质。对每个所述子网的第一计算结果进行拼接或者加权的方式计算所述神经网络的总计算结果。可以有效的提供数据的复用性和其灵活寻址的需求,高效的满足硬件资源需求如带宽,能够适用于不同场景。

在本发明的另一实施例中,所述步骤s901包括:

第一划分子模块11根据所述神经网络的输出神经元,将所述神经网络划分为多个内部数据特征一致的子网;

第二划分子模块12根据所述神经网络的输入神经元,将所述神经网络划分为多个内部数据特征一致的子网;

第三划分子模块13根据所述神经网络的神经元权值,将所述神经网络划分为多个内部数据特征一致的子网。

其中,第三划分子模块13根据所述神经网络的神经元权值的分布,将所述神经网络划分为多个内部数据特征一致的子网;或者

根据所述神经网络的神经元权值的正负,将所述神经网络划分为多个内部数据特征一致的子网。

对于异构平台来说,加速器的片上能够存储的数据十分有限,而如今的神经网络通常具有较大规模,需要将整个神经网络划分成为不同的子网进行计算, 通过片外大存储介质和片内小存储介质上的数据交互将所需数据块读入或者写出。最后,根据不同的子网计算结果计算总网结果。图8b所示的片内片外数据连接并不局限于pcie总线连接,也包含多芯片互联结构如片上网络等。图8b所示的片上计算单元与片上存储介质的数据通路不局限于h-tree,或者fat-tree等互联技术。

在本发明的一个实施例中,图10所示神经网络的计算流程,以聚类了权值的一层神经网络为例,即图6a,具体描述如下:

步骤s1001中,神经网络子网的划分,此例中网络划分方式见步骤s1011。步骤s1011中其中这里假设权值聚类成为356类,而片上资源只能存放256个,根据存储限制,网络被划分成为两个子网,即子网1和子网2;

步骤s1002中,load256个权值至片上,为子网1计算做数据准备;

步骤s1003中,寻址特定权值的连接;

步骤s1004中,计算特定权值的连接;

步骤s1005中,判断子网1是否已经完成计算,这里也即所有256个权值已经使用完毕,如果使用完毕则进入s1012确定子网1的计算结果和s1006进入子网2的计算;如果没有则进入步骤s1003继续进行子网1的计算;

步骤s1006中,寻址特定权值的连接;

步骤s1007中,计算特定权值的连接;

步骤s1008中,判断子网2是否已经完成计算,这里也即所有100个权值已经使用完毕,如果使用完毕则进入s1013确定子网2的计算结果和s1009进入总网的计算;如果没有则进入步骤s1006继续进行子网2的计算;

步骤s1009中,计算总网为子网1和子网2;

步骤s1012中,子网1的结果确定;

步骤s1013中,子网2的结果确定。

在该实施例中,选对神经网络子网划分,神经网络权值聚类成为356类,也即356个权值,此处假设片上的权值缓存只能存下256个数,这样自然而然的将神经网络划归成为两类,一类是使用前256个权值的连接的网络,即子网1;另一类则是使用剩下100个权值连接的网络,即子网2。这样最终的神经元结果只需要将子网1和子网2的累加结果相加就可以得到最后的总网的结果。开始计算后,前256个权值载入片上,所有输出神经元根据输入神经元进行一一寻 址然后计算直到所有权值使用完毕,子网1的计算完成;类似的子网2计算完成。将子网1和子网2的结果相加,得到最后总网络的结果。需要注意的是,本发明各实施例中的存储装置并不限定存储所用介质,可以是静态随机存储器(staticrandomaccessmemory,sram),动态随机存储器(dynamicrandomaccessmemory,dram),增强动态随机存取存储器(enhanceddynamicrandomaccessmemory,edram),寄存器堆(registerfile,rf)等常见存储介质,也可以是新型的存储器件,如非易失存储器(non-volatilememory,nvm)或者3d存储器件等等。

综上所述,本发明通过将神经网络划分为多个内部数据特征一致的子网;对每个所述子网进行计算,获得每个所述子网的第一计算结果;根据每个所述子网的第一计算结果计算所述神经网络的总计算结果。由此,可以通过合理调度数据,缩减片上缓存开销,从而可以提供更加高效的加速器设计支持。由于针对大规模数据进行有效划分,从而降低硬件资源需求如访存带宽需求,同时提供良好的灵活性,解决了对重复数据进行高效读写的问题。

当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

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