神经网络优化方法与流程

文档序号:17132049发布日期:2019-03-16 01:24阅读:634来源:国知局
神经网络优化方法与流程

本申请涉及人工神经网络技术领域,尤其是一种神经网络优化方法。



背景技术:

随着神经网络技术的崛起,适应不同应用场景的神经网络硬件应运而生。神经网络的推理预测能力强但计算量大,因此如何提升神经网络计算的速度和降低神经网络能耗成为了关键。

相关技术中,神经网络训练过程和推断过程对于网络计算的加速都有着较为迫切的需求。网络训练基本都在云端利用gpu完成,不同硬件的并行化方法和通信方法会大大影响神经网络训练的速度,因此主要从提高并行化计算能力和降低通信开销的角度来提升神经网络计算速度。神经网络的能耗可以分成计算能耗和访存能耗两个方面。通过输出固定(outputstationary)、权重固定(weightstationary)的不同数据复用方式,可以有效地降低神经网络的访存能耗。

但上述对于神经网络计算的研究都侧重于低能耗或加快计算速度中的一者,没有考虑到在复杂的应用环境中神经网络的加速和能量感知可能存在一定矛盾,在降低能耗时可以以牺牲速度为代价或者以能量,而降低神经网络计算的时间又可能会产生更多能耗的问题。



技术实现要素:

为至少在一定程度上克服相关技术中对于神经网络计算的研究都侧重于低能耗或加快计算速度中的一者,没有考虑到在复杂的应用环境中神经网络的加速和能量感知可能存在一定矛盾,在降低能耗时可以以牺牲速度为代价或者以能量,而降低神经网络计算的时间又可能会产生更多能耗的问题,本申请提供一种神经网络优化方法。

预设建模参数,所述建模参数包括网络参数和硬件参数;

基于所述建模参数构建神经网络能耗模型;

基于所述建模参数构建神经网络时间模型;

对所述神经网络能耗模型和神经网络时间模型进行双目标优化。

进一步的,所述能耗计算公式为e=v*t*e,v为需要读写/计算的数据量,t为需要重复读写/计算的次数,e为单位能耗。

进一步的,所述单位能耗包括读写能耗和计算能耗。

进一步的,所述构建神经网络能耗模型包括:对神经网络能耗进行逐层建模,得到卷积层能耗模型、全连接层能耗模型、rnn层能耗模型、池化层能耗模型。

进一步的,所述神经网络时间模型包括时间开销,所述时间开销包括卷积层时间开销和全连接层时间开销。

进一步的,所述时间开销计算方法为时间开销tz=max(tio,toperation),tio为读写时间,toperation为计算时间。

进一步的,所述对所述神经网络能耗模型和神经网络时间模型进行双目标优化,包括:

使用tm计算流程对所述神经网络时间模型进行缓存分割;

使用ap计算流程对所述神经网络能耗模型进行阵列分割;

选取所述缓存分割满足要求条件小所述对应能耗最小的阵列分割方法。

进一步的,所述选取所述缓存分割满足要求条件小所述对应能耗最小的阵列分割方法,包括:

设定任务时间tmax;

计算使用tm计算流程缓存分割神经网络时间模型所需时间ttm;

计算使用ap计算流程阵列分割神经网络能耗模型所需能耗eap;

选取最小的所需能耗eap0以及并计算最小的所需能耗eap0所需时间tap0;

比较tmax和tap0的大小,根据比较结果判断设定任务时间是否满足要求;

若设定任务时间满足要求,比较tmax和ttm的大小,根据比较结果输出对所述神经网络能耗模型和神经网络时间模型进行双目标优化结果。

进一步的,所述根据比较结果判断设定任务时间是否满足要求,包括:

若tmax>tap0,判定设定任务时间满足要求;

否则判定任务无法在指定时间内完成,需重新设定任务时间。

进一步的,所述根据比较结果输出对所述神经网络能耗模型和神经网络时间模型进行双目标优化结果,包括:

若tmax<ttm,调整建模参数,重新对所述神经网络能耗模型进行阵列分割;

计算使用ap计算流程阵列分割神经网络能耗模型所需能耗eap’,并选取最小能耗eap0’对应的建模参数、阵列分割方法为双目标优化结果;

否则,选取tm计算流程对应的建模参数和缓存分割方法为双目标优化结果。

本申请的实施例提供的技术方案可以包括以下有益效果:

本申请神经网络优化方法包括:预设建模参数,基于所述建模参数构建神经网络能耗模型和神经网络时间模型;对所述神经网络能耗模型和神经网络时间模型进行双目标优化。本申请从网络的硬件计算流程的角度对神经网络进行时间与能耗建模,对时间、能耗逐层预测,同时分析时间、能耗开销的主导建模参数,通过改进建模参数、改变阵列分割方法与缓存分割方法对神经网络进行时间与能耗双目标优化从而改进神经网络模型。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1是本申请一个实施例提供的一种神经网络优化方法的流程图。

具体实施方式

下面结合附图和实施例对本发明进行详细的描述。

图1是本申请一个实施例提供的一种神经网络优化方法的流程图。

如图1所示,本实施例的神经网络优化方法包括:

s1:预设建模参数,所述建模参数包括网络参数和硬件参数;

s2:基于所述建模参数构建神经网络能耗模型;

s3:基于所述建模参数构建神经网络时间模型;

s4:对所述神经网络能耗模型和神经网络时间模型进行双目标优化。

神经网络结构中,存在卷积层(conv)、全连接层(fc)、池化层(pool)三种不同的结构,分别对应于特征提取、特征连接、特征压缩三种任务。不同网络结构的层数、层类型都不同,而不同层的特征也不尽相同。例如,卷积层的计算量大、全连接层的数据量大,这种对资源要求的不均衡性需要专门的硬件架构设计来实现。

一些神经网络结构中还包括rnn(循环神经网络,recurrentneuralnetworks)层或cnn(卷积神经网络,convolutionalneuralnetworks)层以完成特定任务。

硬件例如选取thinker芯片,thinker芯片由pe阵列、片上存储系统、有限状态控制机和io、译码器组成。

所述建模参数包括网络参数和硬件参数,所述网络参数和硬件参数如表1所示。

表1建模参数表

通过构建构建神经网络能耗模型和神经网络时间模型,并同时对能耗与时间进行双目标优化,通过调整建模参数实现在给定任务时间条件下最低能耗的神经网络算法。

作为本发明可选的一种实现方式,所述能耗计算公式为e=v*t*e,v为需要读写/计算的数据量,t为需要重复读写/计算的次数,e为单位能耗。

需要读写/计算的数据量v和需要重复读写/计算的次数t可以利用网络参数和硬件参数计算得出;而对于单位能耗e,不同存储层级的访存能耗不同,因此需要逐层进行分析。

不同存储层级的访存能耗如表2所示.

表2不同存储层级的访存归一化能耗

如果数据在两种存储机构之间传输,选择能耗较高的作为本次数据传输的能耗。例如,当数据从dram传入片上缓存sram时,将能耗确定为200个能耗单位。

作为本发明可选的一种实现方式,所述单位能耗包括读写能耗和计算能耗。

作为本发明可选的一种实现方式,所述构建神经网络能耗模型包括:对神经网络能耗进行逐层建模,得到卷积层能耗模型、全连接层能耗模型、rnn层能耗模型、池化层能耗模型。

作为本发明可选的一种实现方式,所述单位能耗e0计算方法包括:

分别构建卷积层能耗模型、全连接层能耗模型、rnn层能耗模型、池化层能耗模型;

分别计算所述卷积层能耗模型、全连接层能耗模型、rnn层能耗模型、池化层能耗模型对应的单位读写/计算的能耗e0。

作为本发明可选的一种实现方式,所述单位能耗包括读写能耗和计算能耗。

卷积层能耗模型中能耗计算如下:

对于一个完整的样本而言,计算完一个卷积层,其能耗为:

e1=e1io+e1operation(1)

e1io为卷积层读写能耗,e1operation为计算能耗。

读写能耗e1io=e1weightio+e1inputio+e1outputio(2)

e1weightio为权重能耗,e1inputio为输入能耗,e1outputio为输出能耗。

分别计算权重能耗e1weightio,输入能耗e1inputio,输出能耗e1outputio如下:

(1)权重能耗e1weightio

e1weightio=e1dram_buffer+e1buffer_pe(3)

e1dram_buffer为从dram读到缓存的能耗,e1buffer_pe为从缓存到pe阵列的能耗。

nw为单位卷积层的权重总量,rddram_conv为dram向缓存写入权重的轮数。

单位卷积层的权重总量nw=γchout_iki2chin_i(5),dram向缓存读取1字节数据的能耗edram_buffer例如为200个能耗单位。

权重与重复导入的次数与片上缓存的大小有关。如果片上缓存能够存储该层的所有权重数据,那么每个数据只需导入一次,后续的访存只涉及缓存与pe阵列的交互;反之,当pe需要重复使用权重数据时,需要使用的权重数据并未存储在缓存中,需要进行重复的访问。在一个pe阵列计算周期中,可以得到二维输出图中个输出点,因此输入数据需要分次导入到pe阵列中,即在缓存容量不够的情况下,同一权重重复导入的总次数为因此,

由于需要重复读写的次数为缓存向pe阵列读取1字节数据的能耗ebuffer_pe例如为6个能耗单位,因此,

(2)输入能耗e1inputio

输入数据需要从dram经过缓存、寄存器到达pe阵列,并需要在pe阵列中完成传输。因此,e1inputio=e1dram_buffer+e1buffer_register+e1register_pe+e1pe_tran(8)。

e1dram_buffer为从dram到缓存的能耗,e1buffer_register为从缓存到寄存器的能耗,e1register_pe为从寄存器到pe阵列的能耗,e1pe_tran为每一个输入到pe阵列左侧第一个pe的数据右向传递的能耗。

需要说明的是,由于填充的存在,输入的总量与输入特征图的点数可能不同。倘若填充为空,则不发生填充,原输入尺寸不变。如果填充为相同尺寸,即使输入输出图大小不变,原输入尺寸也会发生变化,在后续计算中使用变化后的长宽。

其中,hin_iwin_ichin_iα为单位卷积层的输入数据总量,sconvdatabuffer为数据大小。由于thinker优先将输入点全部复用完毕,因此输入点无需重复导入到buffer当中。

寄存器文件(registerfile)添加于缓存和pe阵列之间,可以避免输入数据的重复输入。表示让行pe并行所需要的输入行数,s为横向步长,纵向步长为hui+si-ki。在横向滑动的过程中,数据均只读取一次,故纵向需要滑动的次数为ebuffer_register为buffer到寄存器单位字节传输的能耗为6。

为输入数据的重复导入次数,chin_iki2*hout_iwout_i为需要输入的输入数据总数为输出的点数与每个输出点对应输入点的个数的乘积,eregister_pe为寄存器到pe阵列单位字节传输的能耗为2。

由于输入数据复用,每一个输入到pe阵列左侧第一个pe的数据,都要进行右向传递。所以每个输入点的重复访存次数为读取一个字节数据的能耗epe_tran例如为2。

(3)输出能耗e1outputio

输出数据的总量为βchout_ihout_iwout_i。对于输出而言,输出需要先进行pe间的传递,再传入缓存中,缓存中无法存放的数据再导入到dram中去等待下一次计算。

因此,e1outputio=e1peout_tran+e1pe_buffer+e1buffer_dram(13)

每个pe计算产生的输出点都需要先传递到最左侧pe中去。考虑一行pe,在一个周期的计算中能产生个数为的输出点,这些点都需要传输到最左侧的pe中,共需要进行访存次。因此,平均每个输出点需要访存次。

输出数据总量为βchout_ihout_iwout_i,单位字节的传输能耗为epeout_tran,例如为2个能耗单位。

计算能耗

在一层conv计算中共需输出chin_ihin_iwin_i个点,每个点需要进行ki2chin_i次乘加操作。

在一些实施例中,对于指定样本而言,完成所有卷积层操作所消耗的能量为所有卷积层消耗能量的总和。

在一些实施例中,ap计算流和tm计算流中,各样本都是串行计算的,因此多个样本时能耗只需将不同样本的能耗相加。

全连接层能耗模型中能耗计算如下:

e2=e2io+e2operation(18)

全连接层在thinker芯片中是多样本、逐层计算的。计算了一个批量fc运算的读写能耗,其公式为:

e2io=e2weightio+e2inputio+e2outputio(19)

(1)e2weightio的计算方法包括:

将fc层的权重读写能耗分为两部分:

e2weightio=e2dram_buffer+e2buffer_pe(20)

与卷积层同理,可得:

其中,bs为批的大小。

(2)e2inputio的计算方法包括:

不同于conv层的是,fc层的输入不需经过为卷积输入重用设计的寄存器,因此e2inputio由三部分构成:

e2inputio==e2dram_buffer+e2buffer_pe+e2pe_tran(24)

其中,epeinput_tran为单位传输能耗,例如为2个能耗单位。

(3)e2outputio的计算方法包括:

e2outputio=e2pe_out_tran+e2pe_buffer+e2buffer_dram(29)

其中:

e2pe_buffer=fci+1bs*β*epe_buffer(31)

e2buffer_dram=relu(fci+1bs-sfcdatabuffer)*β*ebuffer_dram(32)

其中epeoutput_tran、epe_buffer和ebuffer_dram为在各存储层单位传输能耗,分别为2、6、200个能耗单位。

当网络中存在多个fc层时,一个批量的fc计算总能耗为所有fc层读写能耗之和。

计算能耗e2operation的计算方法包括:

在计算过程中,共有fci+1bs个输出点,每个输出点需要进行的乘加操作次数为fci。进行单位字节乘加运算所需的能耗为eoperation,那么该部分的能耗为:e2operation=fci+1bs*fci*αγeoperation(33)。

rnn层能耗模型中能耗计算如下:

当网络中存在多个rnn层时,一个批量的rnn计算总能耗为每层计算能耗之和。

rnn中应用最为普遍的即为lstm结构的序列模型,以下rnn能耗分析主要针对lstm结构进行分析。

rnn中,一个lstm单元的计算流程包括:

fi=σ(wxfxt+whfht-1+bf)

it=σ(wxixt+whiht-1+bi)

ot=σ(wxoxt+whoht-1+bo)

thinker芯片利用普通pe和超级pe两种pe来计算rnn层。其中,wx_gatext_gate+wh_gateht-1_gate+bgate部分的计算即为fc层计算的原理,在普通pe中进行计算。计算完成后,数据导入超级pe进行rnn-gating的计算:计算sigmoid或tanh函数,得到各类门函数向量,并经过乘加计算得到ct和ht。

首先计算单rnn层一个批的能耗。考虑到rnn拆分为fc和rnn-gating两个部分,计算了一个批量rnn运算迭代次数为iteration的能耗,rnn层能耗的表达式为:

(1)rnn-fc能耗的计算包括:

这两部分的能耗计算与fc层的能耗计算原理基本相同。其与fc层能耗计算的不同之处在于权重矩阵、输入向量和输出向量的维度需要进行调整。对于rnn而言,其fc层计算的统一形式为:

fct=wx_gatext_gate+wh_gateht-1_gate+bgate(35)

其中,gate可以取i/f/o/g,分别对应lstm中的四个门。在具体实现中,wx_gate和wh_gate会被横向连接整合成为一个wgate,xt_gate和ht-1_gate会纵向连接整合成为xgate,因此wgate维度为olen_i*(ilen-i+olen_i),xgate维度为1*(ilen-i+olen_i),与fc层的参数fci和fci+1对应起来,即:

fci=ilen-i+olen_i

fci+1=olen_i

从而可以划归到fc层能耗模型中进行分析。值得注意的是,对于每一个lstm单元,fc操作需要重复四次,对应门的个数。在此不再赘述。

(2)gating访存能耗的计算包括:

如上所述,在gating计算中,主要可以分为两种计算:(a)简单的tanh/sigmoid函数计算;(b)元素对元素的乘法计算因此可以进一步表示为:

的计算包括:

tanh/sigmoid主要用于计算4个门函数和ct,即需要对向量长度为olen_i的5组数据进行逐元素的tanh/sigmoid操作,所需进行操作的总数为bs*5olen_i。该计算在pe中进行,数据需要从dram导入buffer,再从buffer导入pe,最后进行导出。假设进行单位字节dram到buffer传输的能耗为edram_buffer,单位字节从buffer到pe传输的能耗为ebuffer_pe,单位字节从pe到buffer、从buffer到dram的能耗分别为ebuffer_dram和epe_buffer。每个数据都至多进行一次这种操作,而数据在dram和buffer之间的交互只在buffer尺寸无法容纳所有输入点时才发生,因此可以总结出如下公式:

的计算主要包含ct的计算和ht计算两部分。对于ht而言,只需要进行一次逐元素的乘法操作,故数据的读入只涉及共2olen_i个输入数据,数据的写出涉及olen_i个数据。与上面tanh/sigmoid的计算同理:

对于ct而言,除乘法之外还需要进行一次累加的操作。对于一个输出数据而言,需要进行两次乘法操作,再将两个乘积进行求和,因此其中的一个乘积需要读出到buffer当中,再导入pe中的寄存器完成求和。同理,可得该部分的能耗为:

gating计算能耗的计算

对于gating而言,可能出现的三种操作分别是:tanh/sigmoid,乘法,加法。假设三种操作分别对应的单位字节操作能耗为:etanh/sigmoid、emultiply、eadd值例如均为1,可以计算三种操作需要执行的次数分别为:5olen_i、3olen_i、olen_i。为此,可以计算为:

池化层能耗模型中能耗计算如下:

对于池化操作而言,由于不同层、不同样本之间不存在数据复用,因此可以首先考虑单层、单样本的能耗。同样,将池化操作的能耗分为读写能耗与计算能耗讨论。

建立了池化操作的能耗模型。如果需要计算多层、多样本的结果,只需进行求和操作。

e4=e4io+e4operation(41)

池化层读写能耗e4io的计算

thinker支持最大池化操作,其作用为减少输出图的高度和宽度,而维持通道数不变。其输入图和输出图有维度高度关系:宽度关系:则总的池化块数目为:

x=hout_i*wout_i*chin_i(42)

池化操作的数据读写能耗可以分为输入数据和输出数据两种类型,每个类型需要完成从dram、缓存、pe阵列的读写交互。由于数据无需重复导入,这部分的能耗模型较为简单,即:

其中:

为输入数据的读入能耗,是输出数据的写出能耗。

计算能耗的计算涉及需要输入的总数据数。值得注意的是,输入的总数据数同样不等于输入特征图的大小,而需要从输出图的大小和核的大小出发进行反推,即:e4operation=pi*pi*hout_i*wout_i*chout_i*eoperation(44)。

作为本发明可选的一种实现方式,所述神经网络时间模型包括时间开销,所述时间开销包括卷积层时间开销和全连接层时间开销。

作为本发明可选的一种实现方式,所述时间开销计算方法为时间开销tz=max(tio,toperation),tio为读写时间,toperation为计算时间。

作为本发明可选的一种实现方式,所述神经网络时间模型包括:卷积层时间模型、全连接层时间模型。

thinker芯片而言,时间的开销主要取决于计算量、数据量较大的卷积操作和全连接操作(包括全连接层和rnn中的全连接操作)。由于时间的“遮挡”效应,耗时较少的rnn-gating以及池化操作无需进行模型构建。下面,从卷积层和全连接层两个方面进行时间的建模分析。

作为本发明可选的一种实现方式,所述卷积层时间模型和全连接层时间模型中包括时间开销,所述时间开销计算方法为时间开销tz=max(tio,toperation),tio为读写时间,toperation为计算时间。

卷积层时间模型包括:

读写时间的计算包括:

由于thinker计算的流程,卷积层是单层、单样本计逐一计算的,因此首先分析一个样本中一层卷积运算所需的时间。

数据的读写需要经过dram、缓存、pe等若干层次。在数据导入片上缓存之后,数据的传输时间很快,因此这部分可以忽略不计。所以,tio将被简化为数据在dram和缓存的交互中消耗的时间。

在thinker芯片中,输入、输出数据和权重是从dram导入到两个不同的缓存中去的,这两部分的带宽有所不同,可以根据神经网络的架构适应性地做出改变。输入、输出数据共用带宽bwdataconv,权重数据的带宽为bwweightconv。在一层网络中,输入、输出数据的总量为hin_iwin_ichin_iα+hout_iwout_ichout_iβ,权重数据总量为因此可以分别计算出输入、输出数据的读写时间以及权重数据的读写时间。这两者中较大的一者即为tio,因此:

计算时间toperation的计算包括:

对于一个样本的一层卷积网络,它的计算需要pe阵列进行若干轮的运算。在一轮计算中,pe阵列将并行计算若干输出点,在若干轮后可以计算完该层的所有输出点。假设完成一层网络计算需要的轮数为roundconvlayer,每一轮需要的时间为troundconv,那么计算时间可以表示为:

toperation=roundconvlayer*troundconv(46)。

由于thinker每行复用输入数据,hout_iwout_i是总计需要输入的总行数,而每轮可计算行的数据,因此总共需要轮才能将输入全部计算完;而对于一组输入的数据,权重同理需要输入次。

每个输出点中包含了次乘加运算,因此进行一轮计算耗费的时间即为这些顺序进行的乘加运算所需要的时间:

因此,一个样本中计算一个卷积层的时间即为:

一个样本中所有卷积层的运算时间,只需将逐层时间求和;如果要计算一个批量中所有样本的卷积层运算时间,只需在一个样本总时间的基础上乘以批的大小bs。

全连接层时间模型包括:

由于fc层中一个批量的不同样本是并行计算的,因此直接分析一个批量数据的一层fc运算时间。

读写时间的计算只考虑数据在dram和缓存之间的交互。假设输入、输出数据所分配的带宽为bwdata_fc,权重所分配的带宽为bwweight_fc,而输入输出数据总次数为(fciα*rddram_in_fc+fci+1β)*bs,权重总输入次数为fcifci+1γ*rddram_weight_fc,读写时间公式:

计算时间的计算包括:roundfclayer和tround_fc:

其中:

可以理解的是,一个批量中所有fc层的运算时间,只需将逐层时间求和。

模型的硬件参数也是可变的,因此可以通过调整算法测试不同硬件参数下同一网络的运算时间和能耗,通过调整各种硬件参数(如带宽、缓存大小、pe阵列的尺寸和通道数),可能可以得到在硬件面积限制情况下的最优解,从硬件设计的角度最小化时间和能耗,在时间、能耗逐层预测的同时分析时间、能耗开销的主导建模参数,因此可以对硬件的设计起到一定的帮助。

作为本发明可选的一种实现方式,所述对所述神经网络能耗模型和神经网络时间模型进行双目标优化,包括:

使用tm计算流程对所述神经网络时间模型进行缓存分割;

使用ap计算流程对所述神经网络能耗模型进行阵列分割;

选取所述缓存分割满足要求条件小所述对应能耗最小的阵列分割方法。

thinker芯片支持ap和tm两种计算流程。ap的全称为array-partitioning,即阵列分割;tm的全称为time-multiplexing,即时分复用。这两者的区别在于,对于同样的网络推断过程,计算顺序不同。对于tm计算流程,网络推断按照层的顺序逐一执行,同一时间所有pe阵列都计算同一层。但是对于ap计算流,阵列的划分进行了一些调整,因此在同一时间pe阵列可能同时计算多层。由于ap计算流可以同时计算多种类型的层,这大大平衡了卷积运算计算量高、数据量小和全连接操作计算量小、数据量大的特点,从而可能缩短时间。但是,由于tm计算流程的数据复用次数多,这导致数据重复传输的次数少,从而能耗较小。

作为本发明可选的一种实现方式,所述选取所述缓存分割满足要求条件小所述对应能耗最小的阵列分割方法,包括:

设定任务时间tmax;

计算使用tm计算流程缓存分割神经网络时间模型所需时间ttm;

计算使用ap计算流程阵列分割神经网络能耗模型所需能耗eap;

选取最小的所需能耗eap0以及并计算最小的所需能耗eap0所需时间tap0;

比较tmax和tap0的大小,根据比较结果判断设定任务时间是否满足要求;

若设定任务时间满足要求,比较tmax和ttm的大小,根据比较结果输出对所述神经网络能耗模型和神经网络时间模型进行双目标优化结果。

作为本发明可选的一种实现方式,所述根据比较结果判断设定任务时间是否满足要求,包括:

若tmax>tap0,判定设定任务时间满足要求;

否则判定任务无法在指定时间内完成,需重新设定任务时间。

作为本发明可选的一种实现方式,所述根据比较结果输出对所述神经网络能耗模型和神经网络时间模型进行双目标优化结果,包括:

若tmax<ttm,调整建模参数,重新对所述神经网络能耗模型进行阵列分割;

计算使用ap计算流程阵列分割神经网络能耗模型所需能耗eap’,并选取最小能耗eap0’对应的建模参数、阵列分割方法为双目标优化结果;

否则,选取tm计算流程对应的建模参数和缓存分割方法为双目标优化结果。

在实际执行的过程中,为了达到同时执行不同层的目的,不仅调整要调整可执行的pe数,还要调整缓存的分配情况。由于thinker芯片的总缓存大小和阵列大小给定,而且只进行纵向切割是比较合理的方式,因此需要循环遍历的参数包括分配给conv的阵列列数数据缓存空间大小sconvdatabuffer和权重缓存空间大小sconvweightbuffer。

在建模过程中可以得知,网络计算的时间开销具有“隐藏效应”。“隐藏效应”指某一层的时间计算可以拆分为计算时间和数据传输时间,而该层的总时间应为两者中的最大值。而数据传输时间又取数据传输时间和权重传输时间中的较大值。为了进一步研究时间开销,需要研究每层时间消耗的主导因素。为此,以lrcn典型神经网络为例,lrcn典型神经网络对于fc操作,tm和ap0两种计算流程都是权重读写的时间开销大,占主导地位;而对于conv操作,基本上来说是计算时间占主导地位。全连接层计算量小而数据量大。

tm计算流程的数据读写时间、权重读写时间和计算时间差异很大。卷积层的计算时间开销远远大于数据读写时间、权重读写;在这种情况下,当pe阵列忙于计算的很长一段时间内,数据传输却处在空闲状态;而在进行fc计算时,pe阵列却因权重读写耗时太久而出现了闲置。而ap0的时间逐层开销中,数据读写时间、权重读写时间和计算时间进行了较好的平衡。因此,通过大幅调高本来占比特别小的卷积运算的时间可以有效降低总时间。fc层的时间开销由权重读写主导,如果要缩短fc时间势必需要增大分配给fc权重的缓存比例或者通过增加缓存总量或增大数据传输带宽的方法降低总时间。

神经网络能耗模型和神经网络时间模型的硬件参数也是可变的,因此可以通过调整算法测试不同硬件参数下同一网络的运算时间和能耗,能对硬件的设计起到一定的帮助。通过调整各种硬件参数(如带宽、缓存大小、pe阵列的尺寸和通道数),可能可以得到在硬件面积限制情况下的最优解,从硬件设计的角度最小化时间和能耗。

因此使用tm计算流程对所述神经网络时间模型进行缓存分割;使用ap计算流程对所述神经网络能耗模型进行阵列分割;选取所述缓存分割满足要求条件小所述对应能耗最小的阵列分割方法可以为以后硬件的设计提供帮助,并且可以实现在不同任务时间的条件下会有不同的最优解。

本实施例中,从网络的硬件计算流程的角度对神经网络进行时间与能耗建模,在时间、能耗逐层预测,同时分析时间、能耗开销的主导建模参数,通过改进建模参数、阵列分割方法与缓存分割方法对神经网络进行时间与能耗双目标优化从而改进神经网络模型。进一步的,通过逐层建模,在不同任务时间的条件下会有不同的最优解。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

需要说明的是,本发明不局限于上述最佳实施方式,本领域技术人员在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是具有与本申请相同或相近似的技术方案,均落在本发明的保护范围之内。

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