一种计算装置及方法与流程

文档序号:16529114发布日期:2019-01-05 10:35阅读:126来源:国知局
一种计算装置及方法与流程

本公开涉及人工智能技术领域,尤其涉及一种支持batch和多服务请求的计算装置及方法。



背景技术:

神经网络算法已成为许多不同领域中最先进的算法,如图像识别领域、语音识别领域和自然语言处理领域。这其中最为主要的网络是深度学习。这些神经网络通过不同层的神经元,完成不同的操作,从而对输入数据进行处理,最后得到相应的输出结果。通常来说,不同的输入样本通过同一个神经网络得到不同的输出结果,也即一个固定的神经网络完成一个输入到一个输出的映射。然而对于很多场景来说,同时存在多个输入样本,这些输入都需要被快速完成,也即存在多服务请求。同时在训练过程中通常采用batch的训练方法,也即多个样本(也即batch的大小)计算完成后再更新权值,需要同时计算多个输入样本(包括正向和反向)。

在实现本公开的过程中,申请人发现上述现有技术存在如下技术缺陷。神经网络装置不能支持多个输入样本同时计算,也即无法支持batch训练和多服务请求。



技术实现要素:

(一)要解决的技术问题

为了解决或者至少部分缓解上述技术问题,本公开提供了一种支持batch和多服务请求的计算装置及方法。本公开计算装置及方法,可以在同一个装置中同时计算多个不同的输入,支持同时完成多个对应不同输入的计算,支持batch和多服务请求计算。

(二)技术方案

根据本公开的一个方面,提供了一种支持batch和多服务请求的计算装置,包括:

分发配置模块,用于分发配置信息;以及

计算模块,包括多个计算单元,用于根据所述配置信息分成多个计算组,以分别计算batch中不同的正向和反向通路,或运行不同的服务的请求。

在一些实施例中,所述计算装置在运行过程中,根据所述配置信息对所述计算模块的分组进行动态调整。

在一些实施例中,在训练过程中,所述计算模块还用于根据所述配置信息形成一个或者多个计算组以完成反向计算梯度及更新权值。

在一些实施例中,所述多个计算单元为一维或多维形式。

在一些实施例中,所述多个计算单元为同样的计算单元,即同构模式;或不同的计算单元,即异构模式。

在一些实施例中,所述计算单元为标量计算单元,用于完成标量乘法、标量加法或标量乘加操作;或向量计算单元,用于完成向量乘法、向量加法或向量内积操作;或混合计算单元,用于完成矩阵乘法加法操作、包含向量内积计算和非线性计算操作、或用于完成卷积计算操作。

在一些实施例中,所述计算模块包括:

乘法器,用于将输入其中的数据相乘得到相乘之后的输出;和/或

一个或多个加法器,用于将输入其中的数据相加得到输出数据。

在一些实施例中,所述多个加法器构成加法树,用于进行加法树运算,即将输入其中的数据逐级相加得到输出数据。

在一些实施例中,所述计算单元还包括:激活函数单元,用于通过激活函数运算得到激活输出数据;其中,该激活函数包括sigmoid、tanh、relu或softmax。

在一些实施例中,所述计算单元还包括:池化单元,用于将输入数据通过池化运算以得到池化操作之后的输出数据;其中,所述池化操作包括:平均值池化、最大值池化、或中值池化。

在一些实施例中,还包括:

内部存储模块,用于存储权值数据、神经元数据及指令;

以及控制模块,用于控制计算模块执行相应的运算,控制分发配置模块分发配置信息,以及控制数据的发送与接收。

在一些实施例中,所述内部存储模块包括:权值缓存单元、输入神经元缓存单元、输出神经元缓存单元以及包括指令缓存单元。

在一些实施例中,所述控制模块根据控制信号对计算模块及分发配置模块进行控制,其控制方式包括直接控制和解析控制,直接控制方式为直接将控制信号输入到被控制模块中,而不需要经过控制模块解析;解析控制方式为控制信号需要在控制模块中完成解析,得到解析后的控制信号再输入到被控制模块中用于配置和控制。

根据本公开的另一个方面,还提供了一种支持batch和多服务请求的计算方法,包括:

分发配置信息;

多个计算单元根据所述配置信息形成多个计算组,分别计算batch中不同的正向和反向通路,或运行不同的服务请求。

在一些实施例中,在训练过程中,根据所述配置信息形成一个或者多个计算组以完成反向计算梯度及更新权值。

在一些实施例中,所述多个计算单元为一维或多维形式。

在一些实施例中,所述多个计算单元为同样的计算单元,即同构模式;或不同的计算单元,即异构模式。

在一些实施例中,每个计算组对输入数据进行计算包括:乘法计算、加法计算、乘加计算、内积计算、非线性计算或卷积计算。

在一些实施例中,对输入数据进行计算,还包括:激活函数运算或池化运算。

在一些实施例中,所述计算方法还包括:

根据控制信号对计算模块及分发配置模块进行控制,其中,控制方式包括直接控制和解析控制,直接控制方式为直接将控制信号输入到被控制模块中,而不需要经过控制模块解析;解析控制方式为控制信号需要在控制模块中完成解析,得到解析后的控制信号再输入到被控制模块中用于配置和控制。

在一些实施例中,所述计算方法还包括:

将各输入数据分别输入到各计算组;

所述各计算组计算各自的数据样本,直至正向计算完成。

在一些实施例中,所述计算方法还包括:输出或保存各计算组的计算结果。

在一些实施例中,在执行batch计算神经网络时,若是测试过程,则离线计算最优配置并配置完成,或在执行过程中动态调整配置以达到最优配置;若是训练过程,则利用所述多个计算组或在线将所述多个计算组配置成一个计算组完成batch中不同输入样本对应的梯度计算,同时在线将所述多个计算组配置成一个计算组完成权值的更新计算。

在一些实施例中,所述计算方法还包括:在运行过程中,根据配置信息对分组情况进行动态调整。

(三)有益效果

从上述技术方案可以看出,本公开计算装置及方法至少具有以下有益效果其中之一:

(1)本公开计算装置及方法,可以在同一个装置中同时计算多个不同的输入,支持同时完成多个对应不同输入的计算,支持batch和多服务请求计算。

(2)计算装置在运行过程中对计算模块的分组动态的进行调整,可满足多服务中对于服务质量的要求。

附图说明

图1为根据本公开支持batch和多服务请求计算装置功能模块示意图。

图2为根据本公开支持batch和多服务请求计算装置的另一功能模块示意图。

图3为根据本公开计算装置执行计算的方法流程图。

图4为根据本公开计算装置执行神经网络计算的方法流程图。

图5为根据本公开计算装置的计算单元阵列示意图。

图6为根据本公开计算装置的计算单元另一阵列示意图。

图7为根据本公开计算装置的计算单元另一阵列示意图。

具体实施方式

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

需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。此外,以下实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开。

本公开提供了一种支持batch和多服务请求的计算装置。图1是根据本公开支持batch和多服务请求的计算装置功能模块示意图。如图1所示,所述支持batch和多服务请求的计算装置包括:外部存储模块,内部存储模块,计算模块,控制模块以及分发配置模块。

外部存储模块,用于存储计算模块、内部存储模块、控制模块和分发配置模块的数据信息。以神经网络计算为例,该数据信息包括:权值数据、神经元数据(包括输入)、指令数据,配置信息等。

另外,所述外部存储模块,可提供对外部存储器的读写接口,并且可以配置相关寄存器灵活实现对不同外部存储器的操作。

内部存储模块,用于存储供计算模块使用的数据,包括:权值、神经元(包括输入)、指令数据等。

内部存储模块,提供和外部存储模块的读写接口,用以完成内部存储模块和外部存储模块的数据交换。

控制模块,提供和外部存储模块进行控制信号交换的接口,用以接受并解析外部控制信号,从而完成对其他模块的控制。

控制模块,提供和计算模块的信号交换接口,用以配置和控制计算模块,从而完成不同的计算。

控制模块,提供和分发配置模块的信号交换接口,用以发送配置信号到分发配置模块,从而控制分发配置所完成的功能。所述控制模块可包括存储单元,也可在其外部配置存储单元,用于存储不同的控制信息。

分发配置模块,提供和计算模块的信号交换接口,从而分发配置信息,该配置信息用以配置计算模块中的功能和数据连接,从而支持计算模块完成batch和多服务请求。其中,所述功能主要是完成内积操作、外积操作、非线性函数操作、超越函数操作等计算功能;相应的,数据连接则是根据计算功能计算模块所需的连接状态,例如,具体将计算模块包括的多个计算单元分成多少个计算组。

其中,所述的分发配置模块可包括存储单元,也可在其外部配置存储单元,用于存储不同的配置信息。

所述的计算模块,包括多个计算单元(processingelements,简称pe)。

所述多个计算单元可以分成多个计算组,用以完成不同的操作。进一步的,所述多个计算单元可以是同样的计算单元,即同构模式;也可以是不同的计算单元,即异构模式。

具体的,所述的计算单元,其结构可以是完成简单运算的计算单元,如完成如标量乘法、标量加法、标量乘加等简单操作;也可以是完成向量运算的计算单元,如完成向量乘法、向量加法、向量内积等操作;也可以是混合计算单元,如用于矩阵乘法加法等操作的矩阵计算单元、用于包含向量内积计算和非线性计算的混合计算单元、包含脉冲阵列积进行卷积计算的混合计算单元。

在本公开的另一实施例中,如图2所示,所述支持batch和多服务请求的计算装置,包括:外部存储模块、控制模块、计算模块、分发配置模块;还包括:权值缓存单元、输入神经元缓存单元、输出神经元缓存单元以及指令缓存单元。

其中,所述指令缓存单元,用于缓存指令;

所述权值缓存单元,用于缓存权值数据;

所述输入神经元缓存单元,用于缓存输入神经元数据;

所述输出神经元缓存单元,用于缓存计算模块输出的运算结果,并输出给外部存储模块。

进一步的,所述控制模块用于从指令缓存中读取指令,将其译码为计算模块能够执行的指令并输出至计算模块。本实施例中,其他模块及功能可与上一实施例相同,此处不再赘述。

上述实施例中,所述计算装置的输入数据,包括图片、视频、音频、文字等。所述装置的输出数据包括数值数据,其结果表示含义包括但不限于分类结果、生成结果。

所述计算装置的控制模块根据控制信号对计算模块及分发配置模块进行控制,其控制方式包括直接控制和解析控制,直接控制方式为直接将控制信号输入其他到其他模块中,而不需要经过控制模块解析;解析控制方式为控制信号需要在控制模块中完成解析,得到解析后的控制信号再输入到其他模块中用于配置和控制。

请参照图3至4,本公开中的一种支持batch和多服务请求的计算装置,其执行计算方法如下:

s1、输入数据和控制信号序列被存储至外部存储模块以供使用。

s2、数据和控制信号被载入至内部存储器。

s3、控制模块解析控制信号,分发配置模块解析分发配置信号;例如,在执行过程中,控制模块解析的控制信号包括指令及配置信息(配置信息也可以指令的方式给出),若控制模块确定是配置信息,则将配置信息发送给分发配置模块,由分发配置模块进一步将配置信息发送给计算模块;计算装置根据不同的信号含义调度各个模块完成相应的操作;例如,在执行多batch操作时,调度分发配置模块分发配置信息,调度计算模块分组并进行计算,调度存储模块发送或接收数据等。另外,配置信息除了由外部存储模块经由控制模块发送至分发配置模块之外,也可以在控制模块的控制下由外部存储模块直接发送至分发配置模块。

s4、相应的计算结果从计算模块输出至内部存储模块,再传输至外部存储模块,以供后续或其他使用。

采用本公开计算装置,在执行batch计算神经网络时,包括训练过程和测试过程,可以并行执行batch中的每个正向通路,其中并行执行的每个正向通路计算是独立的(特别的,权值可以共享也可以不共享),此时装置根据配置将计算单元划分成n个独立的计算组以独立计算batch中不同的正向通路。如若是测试过程,则该装置可以离线计算最优配置并配置完成,其中所述最优配置可以是计算组的个数配置,例如针对一具体的计算场景,将计算模块中的多个计算单元分成多少个计算组可达到最优的计算效果;也可在执行过程中动态调整配置以达到最优的过程,其中,所述动态调整配置例如可以是在执行卷积层的时,配置成多个独立的计算组分别计算不同的输出图像,而在计算全连接层时,配置成1个计算组,也即全部的计算单元用来计算同样的层。另外,在训练过程中,相较于测试过程,需要反向计算梯度并更新网络中的权值,此时可以将装置划分成多个组完成batch中不同输入样本对应的梯度,在线将装置配置成一个组从而快速的进行权值的更新计算(特别的,也可以在线配置成一个组完成batch中对应不同的输入样本的对应的梯度计算)。

采用本公开计算装置,在执行多服务计算过程中,包括训练过程和测试过程,不同服务所需要的输入和权值可能是不同的,也可能是相同的。此时装置需要配置成不同的独立的组以运行不同的服务所对应的请求。这里由于不同服务所对应的计算负载可能截然不同,对应所需要的计算资源需求也不相同。装置在运行过程中对于计算单元的分组动态的进行调整,以满足多服务中对于服务质量的要求。

在本公开的一个实施例中,如图5所示,所述计算装置的计算模块中,pe按照一维阵列组织,多个pe可以配置成为不同的组,不同的组可以用来计算不同的输入。

下面以卷积神经网络中卷积层正向计算为例,详细说明本实施例计算装置和相应pe配置如何计算卷积神经网络的batch。

1)神经网络的不同输入通过外部存储经内部存储模块输入到不同的计算组,而权值则通过外部存储经内部存储模块广播至不同的组,也即不同的组采用同样的权值数据。

2)不同的组开始计算属于各自的样本,直到该组的样本的正向过程完成。

3)不同的组将其计算结果写回内部存储,该结果或被写回外部存储,或被暂存在内部存储以便后续计算。

4)计算装置载入新的一批输入,分配至不同的组继续进行计算。

在本公开的另一实施例中,如图6所示,所述pe按照二维阵列组织,多个相邻的pe可以配置成不同的组,不同的组可以用来计算不同的输入。

在本公开的另一实施例中,如图7所示,pe按照二维阵列组织,多个相邻的pe可以配置成不同的组,不同的组可以用来计算不同的输入。

其中,所述计算单元执行运算包括神经网络计算。

具体的,所述计算模块包括:乘法器,用于将输入其中的数据相乘得到相乘之后的输出;和/或一个或多个加法器,用于将输入其中的数据相加得到输出数据。其中,所述多个加法器可构成加法树,用于进行加法树运算,即将输入其中的数据逐级相加得到输出数据。

更具体而言,计算模块包括但不仅限于:第一部分乘法器,第二部分加法树,第三部分为激活函数单元,和/或第四部分池化单元。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2;第二部分将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为n的向量,n大于1,过称为:out=in1[1]+in1[2]+...+in1[n],和/或将输入数据(in1)通过加法数累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[n]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过称为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。

相应的,所述计算模块执行运算包括第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;和/或第二部分执行加法树运算,用于将输入数据1通过加法树逐级相加,或者将所述输入数据1通过和输入数据2相加得到输出数据;和/或第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据;和/或第四部分执行池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。

以上几个部分的运算元件可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。

在一些实施例中,分发配置模块的信号输入也可直接有外部信号输入,采用直接控制或解析控制的方式。

在一些实施例中,pe组织可以为三维组织,甚至于多维组织。

在一些实施例中,pe的分组也可以按照列来组织,不同的分组方式也可以在运行过程中进行切换。

在一些实施例中,多个分组后的pe也可以执行同一个输入对应的不同运算操作。

在一些实施例中,计算单元可以是任意的计算模块,从简单的计算模块到完成复杂功能的计算模块。

本领域技术人员应当理解的是,本公开计算装置及方法除了进行神经网络计算之外,还可进行图像处理、视频处理计算等;且神经网络也不限于卷积神经网络,还可以是全连接神经网络、rbm神经网络、及循环神经网络(rnn,recurrentneuralnetworks)等;且不限于卷积层,还可以是全连接层、pooling层等。

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

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