掌桥专利:专业的专利平台
掌桥专利
首页

一种计算设备及神经网络的加速方法

文献发布时间:2023-06-19 10:51:07


一种计算设备及神经网络的加速方法

技术领域

本申请涉及神经网络领域,尤其涉及一种计算设备及神经网络的加速方法。

背景技术

长短期记忆网络(long short-term memory,LSTM)是一种时间递归神经网络,由于其独特的设计结构,适合于处理和预测时间序列中间隔和延迟非常长的重要事件。LSTM可以采用忆阻器阵列来处理矩阵乘法运算,忆阻器阵列的外围电路主要包括模数转换器(digital-to-analog converter,ADC),由于ADC在LSTM硬件系统中的硬件开销较大,导致功耗很高。

发明内容

本申请实施例提供一种计算设备及神经网络的加速方法,减少了硬件资源的开销,降低了功耗。

第一方面,本申请实施例提供一种计算设备,包括:计算阵列,包括多个计算单元,用于将输入数据与预设的权重矩阵进行计算,获得第一计算结果,其中,第一计算结果为模拟信号形式,输入数据为数字信号形式;模拟运算电路,连接计算阵列,用于对第一计算结果进行逐点运算,获得第二计算结果,其中,第二计算结果为模拟信号形式;模数转换电路,连接模拟运算电路,用于将第二计算结果转换为数字信号,获得第三计算结果。通过首先将第一计算结果输入到模拟运算电路,然后将模拟运算电路输出的第二计算结果输入到模数转换电路,减少了模拟转换电路在神经网络中的硬件开销,从而降低了功耗。并且,通过模数转换电路将模拟信号转换为数字信号,使得在片上网络传输数字信号,从而可以较为高效地实现多个瓷片协同工作来实现较大规模的神经网络。

在一种可能的设计中,激活函数电路,用于对第一计算结果执行激活函数计算,获得第一中间结果;逐点计算电路,连接激活函数电路,用于对第一中间结果执行逐点计算。通过引入激活函数电路和逐点计算电路,提高神经网络运算的准确性。

在另一种可能的设计中,权重矩阵是根据模拟运算电路的电路特性获得的误差项确定的。通过引入电路特性调整神经网络模型的权重矩阵,提高神经网络的推理精度。

在另一种可能的设计中,误差项包括误差项的一阶导数的关系表达式;模拟运算电路,还用于根据误差项的一阶导数的关系表达式调整模拟运算电路所实现的对应算子的输出值,所述模拟运算电路所实现的对应算子的输出值用于调整初始权重矩阵以获得所述权重矩阵。通过误差项的一阶导数的关系表达式调整神经网络模型的权重矩阵,提高神经网络的推理精度。

在另一种可能的设计中,所述模拟运算电路,还用于通过所述激活函数的一阶导数的理论关系表达式与所述误差项的一阶导数的关系表达式之和进行训练,调整所述模拟运算电路所实现的对应算子的输出值。

在另一种可能的设计中,误差项包括误差项的关系表达式;模拟运算电路,还用于根据误差项的关系表达式调整模拟运算电路所实现的对应算子的输出值。进而通过调整后的模拟运算电路所实现的对应算子的输出值调整神经网络模型的权重矩阵,从而提高神经网络的推理精度。

在另一种可能的设计中,所述模拟运算电路,还用于通过所述模拟运算电路的理论关系表达式与所述误差项的关系表达式之和进行训练,调整所述模拟运算电路所实现的对应算子的输出值。

在另一种可能的设计中,该计算设备应用于长短期记忆网络LSTM系统。

第二方面,本申请实施例提供了一种神经网络的加速方法,该方法为第一方面提供的计算设备中的计算阵列、模拟运算电路和模数转换电路所执行的方法,执行如上述第一方面相同的流程和步骤。

第三方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一方面的方法。

第四方面,本申请提供了一种计算机程序产品,计算机程序产品用于存储计算机程序,当计算机程序在计算机上运行时,使得计算机执行上述任一方面的方法。

附图说明

为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。

图1是本申请实施例提供的一种神经网络芯片的结构示意图;

图2是本申请实施例提供的一种权重矩阵的示意图;

图3是本申请实施例提供的一种计算单元的示意图;

图4是本申请实施例提供的一种神经网络处理单元的结构示意图;

图5是本申请实施例提供的一种计算设备的结构示意图;

图6是本申请实施例提供的一种tanh函数电路的示意图;

图7是本申请实施例提供的一种σ函数电路的示意图;

图8是本申请实施例提供的一种逐点乘法电路的示意图;

图9是本申请实施例提供的另一种计算设备的结构示意图;

图10是本申请实施例提供的一种训练模型部署的示意图;

图11是本申请实施例提供的一种电路特性的示意图;

图12是本申请实施例提供的一种输出值调整方法的流程图;

图13是本申请实施例提供的一种神经网络的加速方法的流程示意图。

具体实施方式

下面结合本申请实施例中的附图对本申请实施例进行描述。

人工神经网络(artificial neural network,ANN),简称为神经网络(neuralnetwork,NN)或类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络可以包括卷积神经网络(convolutional neural network,CNN)、深度神经网络(deep neural network,DNN)、多层感知器(multilayer perceptron,MLP)等神经网络。神经网络电路可以由多个神经网络芯片(chip)组成的芯片阵列。

如图1所示,图1是本申请实施例提供的一种神经网络芯片的结构示意图。神经网络芯片可以包括多个神经网络处理单元以及多个路由器。图1以神经网络处理单元为瓷片(tile)为例进行描述。一个tile可以与一个或多个路由器相连,多个结构相同的tile通过路由器相连构成片上网络(network-on-chip,NoC)。其中,每个瓷片可以包括ADC、输入输出缓存器(Input/Output buffer)、内存缓存器(memory buffer)、路由器(router)、忆阻器阵列(ReRAM crossbar array)和模拟运算电路,其中,忆阻器阵列用于将输入数据(例如x

在本申请实施例中,由于神经网络系统的瓷片中包括至少一个ReRAM crossbar(交叉开关),又由于ReRAM具有存储和计算一体的优势,权重可以在计算之前配置到ReRAMcell上,而计算结果可以直接发送给下一层进行流水线计算。权重通常用于表示输入数据对于输出数据的重要程度。在神经网络中,权重通常用一个矩阵表示。如图2所示,图2所示的j行k列的权重矩阵可以是一个神经网络层的一个权重,该权重矩阵中的每一个元素代表一个权重值。

在本申请实施例中,各计算节点中的权重可以通过预先配置完成。具体的,一个权重矩阵中的每个元素被配置在对应的crossbar阵列中的ReRAM cell中,从而,可以通过ReRAM crossbar阵列实现输入数据与配置的权重的矩阵乘加操作。后续将对如何通过crossbar实现矩阵乘加运算进行简要介绍。

为了描述清楚,下面对ReRAM crossbar如何实现矩阵乘法和加法操作进行简单的描述。如图2所示,图2所示的j行k列的权重矩阵可以是一个神经网络层的一个权重,该权重矩阵中的每一个元素代表一个权重值。图3是本申请实施例提供的一种计算单元中的一个ReRAM crossbar的结构示意图。为了描述方便,本申请实施例可以将ReRAM crossbar简称为crossbar。如图3所示,crossbar包括多个ReRAM cell,如G1,1、G2,1等。所述多个ReRAMcell构成一个神经网络矩阵。在本申请实施例中,可以在配置神经网络的过程中,将图2所示的权重从图3所示的crossbar的位线(如图3中输入端口402所示)输入crossbar中,使得权重中的每个元素被配置到相应的ReRAM cell中。例如,图2中的权重元素W0,0被配置到图3的G1,1中,图2中的权重元素W1,0被配置到图3的G2,1中等等。每一个权重元素对应一个ReRAM cell。在执行神经网络计算时,输入数据通过crossbar的字线(如图3所示的输入端口404)输入crossbar。可以理解的是,输入数据可以通过电压表示,从而使得输入数据与ReRAM cell中配置的权重值实现点乘运算,得到的计算结果以输出电压的形式从crossbar每一列的输出端(如图3所示的输出端口406)输出。

本申请涉及的神经网络可以为长短期记忆(long short-term memory,LSTM)网络,长短期记忆网络是一种时间递归神经网络,由于其独特的设计结构,适合于处理和预测时间序列中间隔和延迟非常长的重要事件。由于长短期记忆网络适合于处理时间或序列相关的输入输出信息,目前被广泛应用于语音识别、机器翻译、图片-文字转换、机器问答或视频-文字转换等领域,获得了好的效果。长短期记忆网络的前向计算流程:对于时间t=1,......,T,根据输入序列X=(x

具体计算方式如下所示:

f

i

o

h

上述公式中的第1行至第4行做矩阵乘法运算,第5行和第6行做逐点乘法(⊙符号)和逐点加法(+符号)运算。可以看出,相比于其他神经网络模型,LSTM神经网络模型要求进行向量的逐点乘法以及逐点加法。并且需要支持两种不同类型的激活函数(σ函数和tanh函数)。

如图4所示,图4是一种神经网络处理单元的结构示意图。该神经网络处理单元可以为一个瓷片,该瓷片包括内存阵列(memory array)、缓存阵列(buffer array)、数据流控制器(dataflow controller)、多个ReRAM crossbar、多个Mult和多个SFU。其中,Mult和SFU均为数字电路的运算单元。该神经网络处理单元执行如下流程:首先通过忆阻器阵列处理矩阵乘法得到计算结果,然后将该计算结果通过ADC转为数字信号,最后通过激活函数和逐点运算对数字信号进行处理。又如图4所示,忆阻器阵列的周围部署有外围电路,该外围电路主要是模数转换器ADC。由于忆阻器阵列输出的每一路模拟信号都需要模数转换电路转换为数字信号,这样需要较多的模数转换电路,因此模数转换器在硬件系统中开销较大,导致功耗很高。为了解决上述技术问题,本申请实施例提供了如下解决方案。

如图5所示,图5是本申请实施例提供的一种计算设备的结构示意图。该计算设备可以为上述提及的经过改进的神经网络处理单元(例如瓷片),该计算设备至少包括:

计算阵列501,包括多个计算单元,用于将输入数据与预设的权重矩阵进行计算,获得第一计算结果,其中,所述第一计算结果为模拟信号形式,所述输入数据为数字信号形式。该计算阵列501可以为忆阻器阵列。计算阵列501的具体计算方法可以参考上述针对图2和图3的描述内容。

模拟运算电路502,连接所述计算阵列,用于对所述第一计算结果进行逐点运算,获得第二计算结果,其中,所述第二计算结果为模拟信号形式。

具体的,模拟运算电路502还可以包括激活函数电路和逐点计算电路,其中,激活函数电路用于对所述第一计算结果执行激活函数计算,获得第一中间结果。逐点计算电路,连接所述激活函数电路,用于对所述第一中间结果执行逐点计算。其中,激活函数电路包括σ函数电路和tanh函数电路,逐点计算电路包括逐点加法电路和逐点乘法电路。其中,各个模拟运算电路的电路结构可以参考图6-图8。图6是本申请实施例提供的一种tanh函数电路的示意图。图7是本申请实施例提供的一种σ函数电路的示意图。图8是本申请实施例提供的一种逐点乘法电路的示意图。各个模拟运算电路由多个元器件连接构成。

模数转换电路503,连接所述模拟运算电路,用于将所述第二计算结果转换为数字信号,获得第三计算结果。

需要说明的是,由于模拟信号不适合在片上网络传输,本申请实施例通过模数转换电路将模拟信号转换为数字信号,使得在片上网络传输数字信号,从而可以较为高效地实现多个瓷片协同工作来实现较大规模的LSTM网络。

可选的,该计算设备还可以包括路由器,连接模数转换电路,由多个相同结构的瓷片通过路由器连接构成LSTM网络的片上网络,任意一个瓷片处理后的数据可以通过路由器组成的片上网络发送给其他瓷片,该计算设备可以用于LSTM网络的数据运算。

可选的,该计算设备还可以包括存储器,连接模数转换电路,用于存储输入数据和输出数据。

在本申请实施例中,每个瓷片可以包括16个尺寸为128*128的忆阻器阵列。瓷片上的存储器可以采用增强动态随机存取存储器(enhance dynamic random access memory,eDRAM)和静态随机存取存储器(static random-access memory,SRAM)。模数转换电路503可以使用1.3GHz采样频率,从而实现低功耗。

如图9所示,图9是本申请实施例提供的另一种的计算设备的结构示意图。首先通过计算阵列对输入数据与预设的权重矩阵进行计算,获得第一计算结果。然后将第一计算结果输入到模拟运算电路,然后将模拟运算电路输出的第二计算结果输入到模数转换电路。在此过程中,多路模拟信号通过模拟运算电路之后,减少了模拟信号输出的路数,因此可以使用较少的模数转换电路进行处理。采用本申请实施例的技术方案,减小了模数转换器在LSTM网络的硬件系统中硬件开销,从而降低了电路功耗。

如表1所示,表1为分别采用计算设备A和计算设备B的硬件效率(功耗效率和面积效率)的对比示意表。从表1可以看出,计算设备A相对于计算设备B,功耗效率提高了79.6%,面积效率提高了3.28倍。

表1

可选的,由于模拟运算电路实现激活函数、逐点乘法和逐点加法过程中会引入误差,因此本申请实施例可以首先对LSTM网络模型进行训练,调整模拟运算电路的输出值,进而调整LSTM网络模型的初始权重矩阵,然后通过调整后的权重矩阵来实现上述计算过程。如图10所示,图10是本申请实施例提供的一种训练模型部署的示意图,首先对LSTM网络模型进行训练,然后将训练后的LSTM网络模型部署到LSTM加速器上进行运算。其中,该LSTM加速器为包含有图5所示的计算设备的神经网络电路。

其中,所述权重矩阵为根据所述模拟运算电路的电路特性获得的误差项确定的,可以按照相同的方法分别提取σ函数电路、tanh函数电路、逐点加法电路或逐点乘法电路的电路特性并进行分析,从而调整LSTM网络模型的初始权重矩阵获得调整后的权重矩阵。其中,误差项可以包括所述误差项的关系表达式和所述误差项的一阶导数的关系表达式。可以通过如下方法确定误差项。

首先,可以提取模拟运算电路的电路特性,其中,电路特性可以包括输入值与输出值之间的对应关系的实际值。具体的,可以电路仿真工具(例如HSPICE等)对实际设计中采用的硬件电路进行仿真。对于各模拟运算电路,一个输入值对应一个输出值,最后可以得到从输入到输出的电路特性的散点关系。如图11所示,通过电路仿真得到模拟运算电路的电路特性的散点数据,图中以tanh函数电路为例进行展示,其他模拟运算电路的结果类似,此处不再一一描述。

然后,可以根据模拟运算电路的电路特性,确定误差项的关系表达式和所述误差项的一阶导数的关系表达式。可以通过数字分析工具(例如MATLAB)对各个模拟运算电路的误差项进行拟合。包括如下步骤:

步骤1,可以将上述步骤得到的模拟运算电路的电路特性的实际值与该模拟运算电路的输入输出的理论值进行相减,得到多个散点数据的误差项。又如图11所示,模拟运算电路的电路特性的实际值与该模拟运算电路的理论值存在差异,可以将实际值与理论值进行相减得到多个散点数据的误差项。

步骤2,对上述多个散点数据的误差项进行拟合,得到误差项的连续的关系表达式。可以采用分段多项式近似的拟合方式。

以下对激活函数(即σ函数和tanh函数)的一阶导数的误差进行提取和拟合。

步骤3,根据上述步骤得到的模拟运算电路的电路特性的实际值,确定离散的电路特性的一阶导数的关系表达式。

步骤4,可以按照与步骤1相同方法,确定误差项的一阶导数的离散的关系表达式。

步骤5,可以采用分段多项式近似的拟合方式,将误差项的一阶导数的离散的关系表达式拟合成连续的关系表达式。

最后,在训练LSTM网络模型调用模拟运算电路所实现的对应算子时,通过上述步骤得到的误差项的关系表达式和所述误差项的一阶导数的关系表达式,调整所述模拟运算电路对应的算子的输出值,以便调整LSTM网络模型的权重矩阵。如图12所示,图12是本申请实施例提供的一种输出值调整方法的流程图。在此过程中,需要判断训练过程是否为前向传播或是反向传播,以及判断在反向传播时是否调用了激活函数。其中,前向传播表示输入数据在训练模型中从前向后依次递进传播得到输出结果的过程。由于经过前向传播后得到的输出结果与训练样本的真实值存在一定误差项,因此可以利用该误差项,从后往前依次求各个参数的偏导,进而调整训练模型的权重矩阵,该反向过程称为反向传播。

可选的,模拟运算电路502,还用于根据所述误差项的一阶导数的关系表达式调整所述模拟运算电路所实现的对应算子的输出值,所述模拟运算电路所实现的对应算子的输出值用于调整初始权重矩阵以获得所述权重矩阵。进一步的,当在反向传播过程中调用所述激活函数的一阶导数时,通过所述激活函数的一阶导数的理论关系表达式与所述误差项的一阶导数的关系表达式之和进行训练,调整所述模拟运算电路所实现的对应算子的输出值。当在反向传播过程中未调用所述激活函数的一阶导数时,通过所述激活函数的一阶导数的理论关系表达式进行训练,调整所述模拟运算电路所实现的对应算子的输出值。

可选的,模拟运算电路502,还用于根据所述误差项的关系表达式调整所述模拟运算电路所实现的对应算子的输出值。进而根据调整后的模拟运算电路所实现的对应算子的输出值进行前向传播,然后利用前向传播得到的输出结果进行反向传播,调整LSTM网络模型的权重矩阵。进一步的,当在前向传播过程中调用所述模拟运算电路所实现的对应算子时,通过所述模拟运算电路的理论关系表达式与所述误差项的关系表达式之和进行训练。

通过引入电路特性调整LSTM网络模型的权重矩阵,提高LSTM网络的推理精度。此外,通过上述训练流程中对反向传播过程的修改,提高了引入电路特性的准确程度,并且保证了训练方法的收敛性。

如图13所示,图13是本申请实施例提供的一种神经网络的加速方法的流程示意图。本申请实施例中步骤主要包括:

S1301,将输入数据与预设的权重矩阵进行计算,获得第一计算结果,其中,所述第一计算结果为模拟信号形式,所述输入数据为数字信号形式。

其中,所述权重矩阵为根据模拟运算电路的电路特性获得的误差项确定的。

可选的,所述误差项包括所述误差项的一阶导数的关系表达式;所述将输入数据与预设的权重矩阵进行计算,获得第一计算结果之前,可以根据所述误差项的一阶导数的关系表达式调整所述模拟运算电路所实现的对应算子的输出值,所述模拟运算电路所实现的对应算子的输出值用于调整初始权重矩阵以获得所述权重矩阵。进一步的,通过所述激活函数的一阶导数的理论关系表达式与所述误差项的一阶导数的关系表达式之和进行训练,调整所述模拟运算电路所实现的对应算子的输出值。

可选的,所述误差项包括所述误差项的关系表达式;所述将输入数据与预设的权重矩阵进行计算,获得第一计算结果之前,可以根据误差项的关系表达式调整模拟运算电路所实现的对应算子的输出值。进一步的,可以通过所述模拟运算电路的理论关系表达式与所述误差项的关系表达式之和进行训练,调整所述模拟运算电路所实现的对应算子的输出值。通过调整后的模拟运算电路所实现的对应算子的输出值调整神经网络模型的权重矩阵,从而提高神经网络的推理精度。

S1302,对所述第一计算结果进行逐点运算,获得第二计算结果,其中,所述第二计算结果为模拟信号形式。

具体的,对所述第一计算结果执行激活函数计算,获得第一中间结果;对所述第一中间结果执行逐点计算。

S1303,将所述第二计算结果转换为数字信号,获得第三计算结果。

具体实现过程可以对应参照图5所示的设备实施例的相应描述,执行上述实施例中计算设备所执行的流程。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。

以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 一种计算设备及神经网络的加速方法
  • 一种深度卷积神经网络的压缩及加速方法、神经网络模型及其应用
技术分类

06120112706965