System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于集成电路设计,具体涉及一种用于卷积神经网络推理的数据重用及运算硬件加速器。
技术介绍
1、随着现代技术的数字化、自动化、智能化,以深度学习为主要途径的人工智能算法飞速发展。在智能安防、智能驾驶、图像处理、自然语言处理等等领域,深度学习算法均展现出极高的运算精度和优秀的可移植性。而现如今,卷积运算已经成为大多数深度神经网络算法的共同常用算子,因此,对该算子进行优化可以很大程度上提高整个深度神经网络的运算性能。
2、卷积神经网络相比其他的神经网络,在很多任务上有更高的实现性能、更低的部署难度和更好的可解释性。但同时,近年来研究者们对于更高精度更高智能化程度的要求使得卷积神经网络的参数量和运算复杂度飞速增长,网络的迭代速度已经远远超过了执行硬件的更新速度,而如智能驾驶等边缘计算应用场景下的硬件系统又很难配备高功耗和高价格的图形处理器,导致高算力和带宽需求的神经网络算法很难在常规硬件上进行部署。因而,有必要针对卷积神经网络运算提出专用硬件架构,在高能效比实现的前提下同时满足卷积神经网络的高算力需求。
技术实现思路
1、为了克服现有技术的不足,本专利技术的目的在于提出一种用于卷积神经网络推理的数据重用及运算硬件加速器,以期能够实现高运算吞吐、高能效比、低功耗、灵活可拓展性的卷积神经网络硬件加速运算,该加速硬件器可以广泛应用于计算机视觉、自然语言处理等使用卷积神经网络算法实现的领域。
2、本专利技术提供的用于卷积神经网络推理的数据重用及运算硬件加速器,其结
3、本专利技术所述硬件加速器用于执行2d卷积算子、组卷积算子、深度可分离卷积算子及计算行为类似的变体卷积算子。为避免混淆,对卷积计算中各参数进行定义:定义输入特征图大小为hi×wi,输入通道数为ic;定义权重核大小为kh×kw,权重输入通道为ic(与特征图输入通道相等),权重核个数为oc;定义输出特征图大小为ho×wo,特征图输出通道数为oc(与权重核个数相等);块运算过程中,运算单元阵列每行计算tic个输入通道的部分和,每列计算toc个输出通道的部分和。
4、所述第一读写控制逻辑,负责对卷积运算中的输入特征图进行缓存。行缓冲在整个硬件架构中的位置为片上或片外存储器与片上数据分发网络之间,在运算单元阵列加载输入特征图的过程中,输入特征图中的像素值被加载到行缓冲中进行存储,之后像素值会被输出给片上数据分发网络,进而用于运算单元阵列的卷积计算输入;行缓冲大小为tic×(kh×wi),意为:对输入特征图中tic个相邻输入通道的每kh个相邻行中的像素值进行缓存,每行的像素值有wi个。
5、所述片上分发网络,负责对行缓冲的输出数据进行排序,之后将输入特征图按规则分发给运算单元阵列。在当前块的运算阶段,输入特征图在被加载到行缓冲的同时,行缓冲输出tic×kh个值给片上分发网络,该输入数据为tic个输入通道,每个输入通道的特征图中的kh行1列像素值。片上分发网络对行缓冲的输出数据进行重新排序,使每个运算单元单周期获得的数据来自各个输入通道,之后以广播形式输出给运算单元阵列。
6、所述运算单元阵列,负责卷积运算的乘累加操作。运算单元为加法树结构,每个叶节点为1个乘法器,共有tic个乘法器。运算单元阵列由hn×wn个运算单元排列组成,其中hn=kh,wn=kw×toc,每周期可以执行tic个输入通道,toc个输出通道中kh×kw卷积滑动窗口的乘累加运算。整个运算单元阵列维护有2×(tic×toc×(kh×kw))个权重寄存器,负责存放来自片上分发网络预取的权重数据。权重寄存器实际硬件包含当前工作和影子共2套,采用乒乓缓冲的方式运转,以实现:对后续下一次块运算输入权重的预取(影子权重寄存器中完成)和当前块运算输入权重供给运算单元阵列(当前工作权重寄存器中完成)可以分别独立进行。每周期每个运算单元接受来自片上分发网络的输入特征图以及来自权重寄存器的输入权重,进行乘累加计算生成部分和,部分和经过后续加法树累加后,与来自上一行运算单元的部分和输出累加,从运算单元中输出,给到下一行运算单元。运算单元阵列在行方向上共享输入特征图数据,在列方向上以累加的方式向下将当前行的部分和传递给下一行。
7、所述片上收集网络,负责对运算单元阵列中每列的部分和输出进行正确聚合,并将输出的部分和写入。在运算单元阵列完成对权重与输入特征图的乘累加运算之后,每kw列的生成部分和会向下累加从运算单元阵列输出,并最终经过片上收集网络生成1个kh×kw卷积滑动窗口的部分和。片上收集网络的输入以kw列为一组,以脉动累加的形式进行部分和收集。片上收集网络实现部分和选通逻辑,保证卷积运算起始与结束阶段的累加逻辑正确。片上收集网络的累加完成后,将输出部分和与累加和缓冲中的已累加部分和相加,结果保存回累加和缓冲。
8、所述第二读写控制逻辑,负责储存输出特征图像素值对应的累加和。每周期运算单元阵列运算会输出一部分累加和,每个输出特征图的像素值需要对多周期运算单元阵列计算的结果进行累加。在这个过程完成之前,累加和缓冲将暂存部分累加和,并在输出特征图对应的所有块运算结果累加完成时给出有效数据和相关信号,将结果输出给片上或片外存储。
9、神经网络中,某一层卷积运算按顺序被拆分为多次块运算,每次块运算之间相互独立。输入特征图和权重输入硬件,运算单元阵列进行乘累加运算,及输出特征图输出硬件的过程均按照该顺序实现。
10、进一步地,在某次卷积运算中,硬件加速器的处理流程如下:
11、(1)预加载过程,权重从权重存储器中被加载到运算单元阵列中的权重寄存器。同时启动输入特征图加载,输入特征图从存储器中传入行缓冲。
12、(2)首行运算过程,当行缓冲初次完全填充以及权重寄存器初次完全填充之后,启动运算单元阵列的计算。此时行缓冲中的输入数据通过片上分发网络进入运算单元阵列,与权重寄存器中的权重进行乘累加运算。在该阶段当前工作权重寄存器完成填充,可以同时启动对下一次块运算使用的影子权重寄存器的填充过程。
13、每周期行缓冲的一列输入运算单元阵列,由此规律逐周期进行输入特征图供给。同时运算单元阵列中的部分和累加至每列底部运算单元连接的片上收集网络,并在其中与累加和缓冲中原先的累加和进行相加,最终重新存入累加和缓冲。
14、(3)运算过程:当行缓冲的每一列全部消耗掉时,该行缓冲中用于存储最旧行标号对应输入特征图的tic行将不会在后续的卷积运算中被使用到。从存储器中传入新一行的输入特征图给行缓冲中最旧行标号对应的该tic行,同时该输入特征图会旁路给片上分发网络,进而传入运算单元阵列,作为下一行输出特征图卷积运算所需的输入。后续重复该过程,直到该tic行被重新填满,此时已重新完成了对行缓冲每一列的轮询。重复(3)过程,直到该本文档来自技高网...
【技术保护点】
1.用于卷积神经网络推理的数据重用及运算硬件加速器,其特征在于,用于执行2D卷积算子、组卷积算子、深度可分离卷积算子及计算行为类似的变体卷积算子;对卷积计算中各参数定义如下:输入特征图大小为Hi×Wi,输入通道数为IC;权重核大小为Kh×Kw,权重输入通道为IC,与特征图输入通道相等,权重核个数为OC;输出特征图大小为Ho×Wo,特征图输出通道数为OC,与权重核个数相等;块运算过程中,运算单元阵列每行计算TIC个输入通道的部分和,每列计算TOC个输出通道的部分和;硬件加速器结构包括运算单元及由其组织形成的阵列、片上数据分发网络和收集网络、用于输入特征图中间缓存的行缓冲及相关的第一读写控制逻辑、用于输出部分和缓存的累加和缓冲及相关的第二读写控制逻辑;其中:
2.根据权利要求1所述的用于卷积神经网络推理的数据重用及运算硬件加速器,其特征在于,处理流程如下:
【技术特征摘要】
1.用于卷积神经网络推理的数据重用及运算硬件加速器,其特征在于,用于执行2d卷积算子、组卷积算子、深度可分离卷积算子及计算行为类似的变体卷积算子;对卷积计算中各参数定义如下:输入特征图大小为hi×wi,输入通道数为ic;权重核大小为kh×kw,权重输入通道为ic,与特征图输入通道相等,权重核个数为oc;输出特征图大小为ho×wo,特征图输出通道数为oc,与权重核个数相等;块运算过程中,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。