一种神经网络加速装置
文献发布时间:2023-06-19 10:24:22
技术领域
本申请涉及计算机技术领域,尤其涉及一种神经网络加速装置。
背景技术
神经网络算法在人工智能领域中得到了广泛的应用,尤其是在语音识别、图像处理和自动驾驶等细分领域。卷积神经网络算法在模型训练和应用需要大量的计算,但受限于器算法和计算本身的特性,传统的计算芯片已经无法满足计算需求,需要通过加速器对神经网络进行加速。
现有技术中,已有为GPU(Graphics Processing Unit,图形处理器)/DPU(Deeplearning Processing Unit,深度学习处理器)/NPU(Neural Network Processing Unit,神经网络处理器)设计的神经网络加速器,但是,此类神经网络加速器采用通用的设计,计算效率低,内存带宽需求大,消耗硬件资源多。
发明内容
本申请提供一种神经网络加速装置,能够针对不同的神经网络的结构进行设计,减少了内存带宽需求,提高了计算效率。
本申请提供一种神经网络加速装置,所述装置用于承载预设神经网络的运行;所述装置包括卷积计算单元、与所述卷积计算单元的输入端连接的输入特征图单元和权重单元、以及与所述卷积计算单元的输出端连接的输出特征图单元;
其中,所述卷积计算单元是基于所述预设神经网络的结构确定的。
根据本申请提供的一种神经网络加速装置,所述卷积计算单元包括顺次连接的乘法器阵列、加法树阵列和累加器阵列。
根据本申请提供的一种神经网络加速装置,所述乘法器阵列包括若干个乘法器基本单元,所述乘法器基本单元的数量是基于所述预设神经网络中每个时钟周期并行计算的输出通道数,以及每个时钟周期并行计算的像素个数确定的。
根据本申请提供的一种神经网络加速装置,所述加法树阵列包括若干个加法树基本单元,所述加法树基本单元的数量是基于所述预设神经网络中每个时钟周期并行计算的输出通道数,以及每个时钟周期并行计算的像素个数确定的。
根据本申请提供的一种神经网络加速装置,所述累加器阵列中的加法器数量是基于所述预设神经网络中每个时钟周期并行计算的像素个数,以及每个时钟周期并行计算的输入通道数确定的。
根据本申请提供的一种神经网络加速装置,所述乘法器基本单元用于对输入特征图和权重进行相乘,得到多个乘法结果。
根据本申请提供的一种神经网络加速装置,所述加法树基本单元用于对所述乘法器阵列包含的任一乘法器基本单元输出的多个乘法结果进行两两相加,得到加法结果。
根据本申请提供的一种神经网络加速装置,所述累加器阵列用于对所述加法树阵列输出的多个加法结果进行累加,得到输出特征图。
根据本申请提供的一种神经网络加速装置,所述输入特征图单元包括相互连接的输入特征图DMA模块和输入特征图缓存模块,所述权重单元包括相互连接的权重DMA模块和权重缓存模块,所述输出特征图单元包括相互连接的输出特征图DMA模块和输出特征图缓存模块。
根据本申请提供的一种神经网络加速装置,所述卷积计算单元的数量是基于所述预设神经网络的计算量确定的。
本申请提供的神经网络加速装置,包括卷积计算单元、与卷积计算单元的输入端连接的输入特征图单元和权重单元、以及与卷积计算单元的输出端连接的输出特征图单元,由于卷积计算单元是基于预设神经网络的结构确定的,使得该装置能够用于承载预设神经网络的运行,针对不同的神经网络的结构进行设计,提高了预设神经网络的计算效率,同时,预设神经网络的计算是在该装置中完成的,无需中央处理器参与,减少了内存带宽需求和硬件资源消耗。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的神经网络加速装置的结构示意图;
图2为本申请提供的卷积计算单元的结构示意图;
图3为本申请提供的累加器阵列的示意图;
图4为本申请提供的乘法器基本单元的示意图;
图5为本申请提供的输入特征图单元的示意图;
图6为本申请提供的权重单元的示意图;
图7是本申请提供的加法树基本单元的示意图;
图8为本申请提供的神经网络加速装置的工作原理图;
图9为本申请提供的卷积计算单元的工作原理图;
附图标记:
100:神经网络加速装置; 110:卷积计算单元;
120:输入特征图单元; 130:权重单元;
140:输出特征图单元; 1101:乘法器阵列;
1102:加法树阵列; 1103:累加器阵列。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请提供的神经网络加速装置的结构示意图,如图1所示,神经网络加速装置100用于承载预设神经网络的运行。
神经网络加速装置100包括卷积计算单元110、与卷积计算单元110的输入端连接的输入特征图单元120和权重单元130,以及与卷积计算单元110的输出端连接的输出特征图单元140;其中,卷积计算单元110是基于预设神经网络的结构确定的。
具体地,预设神经网络为需要进行训练和/或应用的神经网络模型。预设神经网络可以为卷积神经网络、循环神经网络和长短时记忆神经网络等,本申请实施例对于预设神经网络的类型不作具体限定。
预设神经网络的运行由神经网络加速装置100承载。神经网络加速装置100通过输入特征图单元120从内存中读取输入特征图,通过权重单元130从内存中读取权重。输入特征图单元120和权重单元130分别将获取的输入特征图和权重输入至卷积计算单元110,由卷积计算单元110进行卷积运算,生成输出特征图,并通过输出特征图单元140写入至内存中。
卷积计算单元110是基于预设神经网络的结构确定的。预设神经网络可以分为输入层、隐藏层和输出层。其中,隐藏层的层数和功能都不是固定的。例如,隐藏层可以进一步划分为卷积层、激活层和池化层等。卷积计算单元110主要执行预设神经网络训练和/或应用中的卷积运算,因此,预设神经网络中层数以及每层中的神经元数量都是直接决定了卷积计算单元110的计算量。
本申请实施例提供的神经网络加速装置,包括卷积计算单元、与卷积计算单元的输入端连接的输入特征图单元和权重单元、以及与卷积计算单元的输出端连接的输出特征图单元,由于卷积计算单元是基于预设神经网络的结构确定的,使得该装置能够用于承载预设神经网络的运行,针对不同的神经网络的结构进行设计,提高了预设神经网络的计算效率,同时,预设神经网络的计算是在该装置中完成的,无需中央处理器参与,减少了内存带宽需求和硬件资源消耗。
基于上述实施例,图2为本申请提供的卷积计算单元的结构示意图,如图2所示,卷积计算单元110包括顺次连接的乘法器阵列1101、加法树阵列1102和累加器阵列1103。
具体地,根据卷积计算的原理与步骤,卷积计算单元110包括乘法器阵列1101、加法树阵列1102和累加器阵列1103。其中,乘法器阵列1101与加法树阵列1102相连,将输入特征图与权重计算后得到的乘法结果输出至加法树阵列1102。加法树阵列1102和累加器阵列1103相连,在输入通道上对乘法结果进行两两相加后的加法结果输出至累加器阵列1103。
基于上述任一实施例,乘法器阵列1101包括若干个乘法器基本单元,乘法器基本单元的数量是基于预设神经网络中每个时钟周期并行计算的输出通道数,以及每个时钟周期并行计算的像素个数确定的。
具体地,乘法器是一种完成两个互不相关的模拟信号相乘作用的电子器件,可以将两个二进制数相乘。乘法器基本单元为完成乘法运算的基本单元。
乘法器阵列1101包括若干个乘法器基本单元。乘法器阵列1101的计算量由若干个乘法器基本单元完成。
乘法器阵列1101在每个时钟周期的计算量可以为每一乘法器阵列基本单元在每个时钟周期的计算量、每个时钟周期并行计算的像素个数和预设神经网络中每个时钟周期并行计算的输出通道数的乘积。
相应地,乘法器基本单元的数量可以通过如下公式进行确定:
NUM
式中,NUM
基于上述任一实施例,加法树阵列1102包括若干个加法树基本单元,加法树基本单元的数量是基于预设神经网络中每个时钟周期并行计算的输出通道数,以及每个时钟周期并行计算的像素个数确定的。
具体地,加法树阵列1102包括若干个加法树基本单元,加法树阵列1102的计算量由若干个加法树基本单元完成。
加法树阵列1102在每个时钟周期的计算量可以为每一加法树基本单元在每个时钟周期的计算量、每个时钟周期并行计算的像素个数和预设神经网络中每个时钟周期并行计算的输出通道数的乘积。
相应地,加法树基本单元的数量可以通过如下公式进行确定:
NUM
式中,NUM
基于上述任一实施例,累加器阵列1103中的加法器数量是基于预设神经网络中每个时钟周期并行计算的像素个数,以及每个时钟周期并行计算的输入通道数确定的。
具体地,累加器阵列1103在每个时钟周期的计算量可以为每一个加法器在每个时钟周期的计算量、预设神经网络中每个时钟周期并行计算的像素个数和每个时钟周期并行计算的输入通道数的乘积。
相应地,累加器阵列1103中的加法器数量可以为:
NUM
式中,NUM
图3为本申请提供的累加器阵列的示意图,如图3所示,该累加器中的加法器数量为预设神经网络中每个时钟周期并行计算的输入通道数ICP与每个时钟周期并行计算的像素个数PXP的乘积,图中每一个方格表示一个加法器。
基于上述任一实施例,乘法器基本单元用于对输入特征图和权重进行相乘,得到多个乘法结果。
具体地,图4为本申请提供的乘法器基本单元的示意图,如图4所示,该乘法器基本单元用于对输入特征图和权重进行相乘,在输入通道方向上得到多个乘法结果。
图5为本申请提供的输入特征图单元的示意图,图6为本申请提供的权重单元的示意图,如图5和图6所示,输入特征图单元用于从内存中读取输入特征图,权重单元用于从内存中读取权重。
上述图中,PXP为每个时钟周期并行计算的像素个数,ICP为预设神经网络中每个时钟周期并行计算的输入通道数,OCP为预设神经网络中每个时钟周期并行计算的输出通道数。
基于上述任一实施例,图7是本申请提供的加法树基本单元的示意图,如图7所示,加法树基本单元用于对乘法器阵列包含的任一乘法器基本单元输出的多个乘法结果进行两两相加,得到加法结果。
基于上述任一实施例,累加器阵列1103用于对加法树阵列输出的多个加法结果进行累加,得到输出特征图。
基于上述任一实施例,输入特征图单元120包括相互连接的输入特征图DMA模块和输入特征图缓存模块,权重单元130包括相互连接的权重DMA模块和权重缓存模块,输出特征图单元140包括相互连接的输出特征图DMA模块和输出特征图缓存模块。
具体地,输入特征图DMA模块、权重DMA模块和输出特征图DMA模块均采用DMA控制器(Direct Memory Access,直接存储器访问)。
DMA控制器允许不同速度的硬件装置来沟通,而不需要依赖于中央处理器的大量中断负载。DMA控制器将数据从一个地址空间复制到另外一个地址空间。当中央处理器初始化数据传输动作,该传输动作本身是由DMA控制器来实行和完成。例如,输入特征图DMA模块采用DMA控制器直接从芯片内存中读取输入特征图,权重DMA模块采用DMA控制器直接从芯片内存中读取权重,该过程不需要中央处理器参与。卷积计算单元110完成卷积计算后,输出特征图DMA模块采用DMA控制器将输出特征图直接传输至芯片内存中供中央处理器使用。
输入特征图缓存模块用于缓存神经网络加速装置100从芯片内存中读取的输入特征图,权重缓存模块用于缓存神经网络加速装置100从芯片内存中读取的权重,输出特征图缓存模块用于缓存神经网络加速装置100向芯片内存中写入的输出特征图,通过设置缓存模块,减少了神经网络加速装置100访问芯片内存的次数,同时,还解决了神经网络加速装置100内部的输入特征图单元120、权重单元130、卷积计算单元110和输出特征图单元140之间的处理速度差异。
本申请实施例提供的神经网络加速装置,通过采用DMA控制器实现从内存中直接读取和写入数据,减少了中央处理器在数据交换中的参与,减少了内存带宽需求,提高了计算效率。此外,通过采用缓存模块,减少了神经网络加速装置访问芯片内存的次数,解决了神经网络加速装置内部各个单元之间处理速度的差异,避免了数据的频繁调用和读取,减少了硬件资源的消耗。
基于上述任一实施例,卷积计算单元110的数量是基于预设神经网络的计算量确定的。
具体地,神经网络加速装置100中的卷积计算单元110可以为若干个。
预设神经网络的计算量可以根据输入特征图的批次大小、特征图的高、特征图的宽、特征图的通道数和卷积核的大小等因素确定。预设神经网络的计算量都是通过卷积神经计算单元110完成的。例如,卷积计算单元110的数量可以为预设神经网络的计算量除以每一卷积计算单元110的计算量的商。
本申请实施例提供的神经网络加速装置,卷积计算单元的数量可以根据预设神经网络的计算量进行确定,能够适应运行不同神经网络的需要。
基于上述任一实施例,图8为本申请提供的神经网络加速装置的工作原理图,如图8所示,神经网络加速装置包括卷积计算单元、与卷积计算单元的输入端连接的输入特征图单元和权重单元,以及与卷积计算单元的输出端连接的输出特征图单元。
输入特征图单元包括相互连接的输入特征图DMA模块和输入特征图缓存模块,权重单元包括相互连接的权重DMA模块和权重缓存模块,输出特征图单元包括相互连接的输出特征图DMA模块和输出特征图缓存模块。
其中,输入特征图DMA模块和权重DMA模块与内存相连,直接从内存中读取输入特征图和权重,输出特征图DMA模块与内存相连,直接向内存中写入输出特征图。数据传输过程无需中央处理器参与,减少了内存带宽需求,大大提高了计算效率。
图9为本申请提供的卷积计算单元的工作原理图,如图9所示,卷积计算单元包括顺次连接的乘法器阵列、加法树阵列和累加器阵列。卷积计算过程在卷积计算单元中完成,乘法器阵列负责接收输入特征图单元和权重单元的数据,进行乘法运算,得到的乘法运算结果发送给加法树阵列,加法树阵列在输入通道方向对乘法结果进行两两相加,得到的加法结果发送至累加器阵列。累加器阵列经过多次累加后生成输出特征图,并将其发送至输出特征图单元。
图中,PXP为每个时钟周期并行计算的像素个数,ICP为预设神经网络中每个时钟周期并行计算的输入通道数,OCP为预设神经网络中每个时钟周期并行计算的输出通道数,ATN为每个输入通道方向的加法树阵列基本单元中加法器的个数。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
- 神经网络加速器、数据处理装置及神经网络加速方法
- 神经网络加速方法、装置、神经网络加速芯片及存储介质