当前位置: 首页 > 专利查询>南京大学专利>正文

一种应用于卷积神经网络训练的可重构硬件加速器制造技术

技术编号:36609896 阅读:14 留言:0更新日期:2023-02-08 09:57
本申请提供一种应用于卷积神经网络训练的可重构硬件加速器。该可重构硬件加速器包括:缓存架构、运算处理阵列、功能模块和主控制器,缓存架构包括输入缓存架构和输出缓存架构,运算处理阵列包括多个以二维数组方式排列的运算处理模块,在使用时利用输入缓存架构按预设数据分组方式对待运算数据进行重新排列和分组后,发送给运算处理模块进行处理,并通过在不同的训练阶段动态调整运算处理阵列中的每个运算处理模块的内部数据连接方式,以使运算处理模块按移动步长进行与候选训练阶段相对应的卷积运算处理。整个装置的计算方式较为灵活,可并行处理多通道运算,而且仅采用硬件架构即可满足不同训练阶段的计算需求,因而具有较高的模型训练效率。具有较高的模型训练效率。具有较高的模型训练效率。

【技术实现步骤摘要】
一种应用于卷积神经网络训练的可重构硬件加速器


[0001]本申请涉及计算机及电子信息
,特别涉及一种应用于卷积神经网络训练的可重构硬件加速器。

技术介绍

[0002]近些年来,卷积神经网络(Convolutional Neural Networks,CNN)模型广泛应用在计算机视觉、语音识别和自然语言处理等诸多领域,随着识别准确率的要求逐渐提高,CNN模型的结构越来越庞大,其中包含的参数也越来越多,进而导致CNN模型的训练也变得愈加复杂和耗时,并且因为在线学习和数据隐私方面的考虑,在资源有限的边缘计算平台训练CNN模型具有广泛需求,因此,需要对CNN模型的训练进行加速。
[0003]CNN模型的训练阶段主要包括前向传播(forward propagation,FP)阶段、反向传播(backward propagation,BP)阶段和权重梯度(weight gradient,WG)计算阶段,在FP阶段,按照从前往后的顺序,将CNN模型中每层的输入激活值(即前一层的输出激活值)与该层对应的卷积核权重进行卷积计算,并通过激活函数得到该层的输出激活值,如此逐层向后计算,最终利用损失函数评估输出的预测标签与真实标签之间的偏差并计算损失;在BP阶段,利用FP阶段计算出的损失,按照从后往前的顺序,将每层的输入误差值(即后一层的误差值)与该层对应的卷积核权重进行卷积计算,得到该层的误差值,如此逐层向前计算,最终得到CNN模型中每一层的误差值;最后在WG阶段,根据链式法则,将前一层的输出激活值与当前层的误差值进行卷积运算,最终得到当前层的权重梯度,如此逐层计算,最终得到整个CNN模型中每层的更新卷积核权重,进而完成整个CNN模型的训练。
[0004]目前通常可以采用基于FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)开发的硬件加速器对CNN模型进行训练,但是该硬件加速器仅具有结构单一的处理单元,不仅硬件结构较为简单,而且实现的计算功能也较为单一,在训练时通常还需要对计算过程进行额外的拆解重组,并且需要重复读取数据,因而训练效率较低,无法满足CNN模型高效的训练需求。

技术实现思路

[0005]本申请提供了一种应用于卷积神经网络训练的可重构硬件加速器,可用于解决现有的硬件架构训练效率较低的技术问题。
[0006]为了解决上述技术问题,本申请实施例公开了如下技术方案:
[0007]一种应用于卷积神经网络训练的可重构硬件加速器,包括缓存架构、运算处理阵列、功能模块和主控制器,其中:
[0008]所述缓存架构包括输入缓存架构和输出缓存架构;所述输入缓存架构用于存储待训练网络层在候选训练阶段的待运算数据,以及将所述待运算数据按预设数据分组方式进行重新排列和分组后,输入到所述运算处理阵列中,所述候选训练阶段为所有训练阶段中任一训练阶段;
[0009]所述运算处理阵列包括多个以二维数组方式排列的运算处理模块,以及与每行运算处理模块连接的缩放舍入模块;所述运算处理模块用于接收所述输入缓存架构输入的数据,并根据所述主控制器的指令,按预设移动步长进行与所述候选训练阶段相对应的卷积运算处理后,将卷积运算结果输入到对应的缩放舍入模块;所述缩放舍入模块用于对所述卷积运算结果进行数据格式转换后,发送给所述输出缓存架构进行存储;
[0010]所述功能模块用于对所述输出缓存架构中的数据进行激活操作或池化操作,以及在训练完成后,对所述待训练网络层中的待训练卷积核的权重值进行权值更新;
[0011]所述主控制器用于根据所述待训练卷积核的数量以及所述候选训练阶段下所述待训练网络层输入通道的数量,确定所述数据分组方式;以及,根据所述候选训练阶段以及所述移动步长,调整所述运算处理模块的内部数据连接方式,以使所述运算处理模块执行与所述移动步长和所述候选训练阶段相对应的卷积运算处理。
[0012]在一种可实现方式中,所述输入缓存架构包括第一输入架构和第二输入架构;
[0013]所述第一输入架构包括第一输入缓存模块和第一输入预取模块,所述第一输入缓存模块用于存储所述待运算数据中的第一输入数据,所述第一输入预取模块与所述运算处理阵列中每个运算处理模块连接,用于将所述第一输入数据按所述数据分组方式进行重新排列和分组后,确定每组第一目标数据对应的所述运算处理阵列中的目标列,并将每组第一目标数据发送给对应目标列中的每个运算处理模块;
[0014]所述第二输入架构包括第二输入缓存模块和第二输入预取模块,所述第二输入缓存模块用于存储所述待运算数据中的第二输入数据,所述第二输入预取模块与所述运算处理阵列中每个运算处理模块连接,用于将所述第二输入数据按所述数据分组方式进行重新排列和分组后,确定每组第二目标数据对应的所述运算处理阵列中的目标行,并将每组第二目标数据发送给对应目标行中的每个运算处理模块。
[0015]在一种可实现方式中,所述第二输入预取模块将所述第二目标数据发送给对应目标行中的所有运算处理模块时,是按照预设的时钟周期,将所述第二目标数据中每个数据依次发送给对应目标行中的所有运算处理模块。
[0016]在一种可实现方式中,如果所述候选训练阶段为FP阶段,则所述第一输入数据为所述待训练网络层中多个待训练卷积核的权重值,所述第二输入数据为所述待训练网络层的多通道输入激活值;
[0017]如果所述候选训练阶段为BP阶段,则所述第一输入数据为所述待训练网络层中多个旋转卷积核的权重值,所述第二输入数据是根据所述待训练网络层的多通道输入误差值确定的,所述旋转卷积核为将所述待训练卷积核旋转一百八十度后得到的矩阵;
[0018]如果所述候选训练阶段为WG阶段,则所述第一输入数据是根据所述待训练网络层的多通道误差值确定的,所述第二输入数据为所述待训练网络层的多通道输入激活值。
[0019]在一种可实现方式中,所述运算处理模块包括MAC阵列、加法器组、多路选择器组以及部分和FIFO队列;
[0020]所述MAC阵列包括多个以二维数组方式排列的MAC,所述MAC的数量及排列方式与目标权重矩阵的尺寸相同,所述目标权重矩阵为目标待训练卷积核中目标通道的权重矩阵,所述目标待训练卷积核为多个待训练卷积核中任一待训练卷积核,所述目标通道为所述目标待训练卷积核中的任一通道;
[0021]所述MAC包括第一外部端口、第二外部端口、内部端口、乘法器、加法器、多路选择器和寄存器,用于将所述第一外部端口的输入数据与所述第二外部端口的输入数据相乘后,再与所述内部端口的输入数据相加,得到中间结果,并根据所述主控制器的指令,将所述中间结果按与所述候选训练阶段相对应的路径进行传递,其中,所述第一外部端口的输入数据为接收到的第一目标数据中与所述MAC的位置相对应的目标位置处的第一目标值,所述第二外部端口的输入数据为接收到的第二目标数据中需与所述第一目标值相乘的所有第二目标值,所述内部端口的输入数据为卷积运算过程中的部分和、前一个MAC传递的结果或者所述MAC输出的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用于卷积神经网络训练的可重构硬件加速器,其特征在于,包括缓存架构、运算处理阵列、功能模块和主控制器,其中:所述缓存架构包括输入缓存架构和输出缓存架构;所述输入缓存架构用于存储待训练网络层在候选训练阶段的待运算数据,以及将所述待运算数据按预设数据分组方式进行重新排列和分组后,输入到所述运算处理阵列中,所述候选训练阶段为所有训练阶段中任一训练阶段;所述运算处理阵列包括多个以二维数组方式排列的运算处理模块,以及与每行运算处理模块连接的缩放舍入模块;所述运算处理模块用于接收所述输入缓存架构输入的数据,并根据所述主控制器的指令,按预设移动步长进行与所述候选训练阶段相对应的卷积运算处理后,将卷积运算结果输入到对应的缩放舍入模块;所述缩放舍入模块用于对所述卷积运算结果进行数据格式转换后,发送给所述输出缓存架构进行存储;所述功能模块用于对所述输出缓存架构中的数据进行激活操作或池化操作,以及在训练完成后,对所述待训练网络层中的待训练卷积核的权重值进行权值更新;所述主控制器用于根据所述待训练卷积核的数量以及所述候选训练阶段下所述待训练网络层输入通道的数量,确定所述数据分组方式;以及,根据所述候选训练阶段以及所述移动步长,调整所述运算处理模块的内部数据连接方式,以使所述运算处理模块执行与所述移动步长和所述候选训练阶段相对应的卷积运算处理。2.根据权利要求1所述的可重构硬件加速器,其特征在于,所述输入缓存架构包括第一输入架构和第二输入架构;所述第一输入架构包括第一输入缓存模块和第一输入预取模块,所述第一输入缓存模块用于存储所述待运算数据中的第一输入数据,所述第一输入预取模块与所述运算处理阵列中每个运算处理模块连接,用于将所述第一输入数据按所述数据分组方式进行重新排列和分组后,确定每组第一目标数据对应的所述运算处理阵列中的目标列,并将每组第一目标数据发送给对应目标列中的每个运算处理模块;所述第二输入架构包括第二输入缓存模块和第二输入预取模块,所述第二输入缓存模块用于存储所述待运算数据中的第二输入数据,所述第二输入预取模块与所述运算处理阵列中每个运算处理模块连接,用于将所述第二输入数据按所述数据分组方式进行重新排列和分组后,确定每组第二目标数据对应的所述运算处理阵列中的目标行,并将每组第二目标数据发送给对应目标行中的每个运算处理模块。3.根据权利要求2所述的可重构硬件加速器,其特征在于,所述第二输入预取模块将所述第二目标数据发送给对应目标行中的所有运算处理模块时,是按照预设的时钟周期,将所述第二目标数据中每个数据依次发送给对应目标行中的所有运算处理模块。4.根据权利要求2所述的可重构硬件加速器,其特征在于,如果所述候选训练阶段为FP阶段,则所述第一输入数据为所述待训练网络层中多个待训练卷积核的权重值,所述第二输入数据为所述待训练网络层的多通道输入激活值;如果所述候选训练阶段为BP阶段,则所述第一输入数据为所述待训练网络层中多个旋转卷积核的权重值,所述第二输入数据是根据所述待训练网络层的多通道输入误差值确定的,所述旋转卷积核为将所述待训练卷积核旋转一百八十...

【专利技术属性】
技术研发人员:王中风邵海阔林军
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1