零系数跳过卷积神经网络引擎制造技术

技术编号:17346816 阅读:43 留言:0更新日期:2018-02-25 12:21
本发明专利技术公开了零系数跳过卷积神经网络引擎。诸如卷积神经网络的卷积引擎通过实现零跳过而有效地对稀疏的核进行操作。输入图块被加载并且通过根据核中的系数的行和列索引使图块移位,来针对非零系数的输入图块计算累加和。每个系数被单独应用于图块,并且在移动到下一个非零系数之前将结果写入累加缓冲器。可以通过这种方式实现3D或4D卷积,其中累加缓冲器的不同区域存储对于沿着一个维度的不同索引的累加和。图像被完全处理,并且在移动到下一个图像之前将每个图像的结果存储在累加缓冲器中。

Zero coefficient skip convolution neural network engine

The invention discloses a zero coefficient skip convolution neural network engine. The convolution engine, such as the convolution neural network, operates effectively on the sparse kernel by realizing zero skipping. The input block is loaded and the block is shifted by the row and column index of the coefficients in the kernel to calculate the additions to the input block for non zero coefficients. Each coefficient is used individually for the block, and the result is written to the accumulator buffer before moving to the next non zero coefficient. 3D or 4D convolutions can be implemented in this way, where the accumulation of different regions of the accumulator buffer are stored for the accumulation of different indexes along one dimension. The image is completely processed, and the results of each image are stored in the accumulator buffer before moving to the next image.

【技术实现步骤摘要】
零系数跳过卷积神经网络引擎背景相关申请本申请要求享有于2016年8月11日提交的且标题为“ZEROCOEFFICIENTSKIPPINGCONVOLUTIONNEURALNETWORKENGINE”的序列号为62/373,518的美国临时申请的权益,在此通过引用以其整体并入。专利
本专利技术涉及用于执行矩阵卷积(诸如,用于实现卷积神经网络)的系统和方法。专利技术背景使用卷积神经网络(CNN)的许多机器学习应用需要非常高的计算和存储带宽。减少该需求的一种方法是对系数进行零修剪,并且当系数为零时跳过计算。这些现有的软件和硬件优化技术基于矩阵乘法。一个示例是(BaoyuanLiu、MinWang1、HassanForoosh1、MarshallTappen以及MariannaPenksy)在稀疏卷积神经网络(SparseConvolutionalNeuralNetworks)中和(SongHanCVA组,斯坦福大学)在深层神经网络模型压缩和高效推理引擎(DeepNeuralNetworkModelCompressionandEfficientInferenceEngine)中描述的稀疏矩阵乘法技术,两者在此通过引用以其整体并入。在本文中公开的系统和方法提供了用于实现CNN的改进方法。附图简述为了使本专利技术的优点容易理解,通过参考在附图中所示的具体实施例,将呈现上面简要描述的本专利技术的更加具体的描述。应理解,这些附图只描绘了本专利技术的典型实施例,且因此不能被看作对其范围的限制,通过使用附图,将结合附加的特征和细节描述和解释本专利技术,其中:图1是根据在本文中描述的方法所使用和生成的数据结构的示意性框图;图2是根据本专利技术的实施例的、用于计算核(kernel)与输入数据的卷积的部件的示意性框图;以及图3A和图3B是根据本专利技术的实施例的、用于计算核与输入数据的卷积的方法的过程流程图;以及图4是在其中可以实现在本文中公开的系统和方法的计算设备的图。详细描述将容易理解的是,如在本文中的附图中一般性地描述和图示的,本专利技术的部件可以以各种不同的配置来布置和设计。因此,如在附图中表示的本专利技术的实施例的下列更详细的描述不旨在限制本专利技术所要求保护的范围,而是仅代表根据本专利技术的当前预期的实施例的特定示例。通过参照附图将最好地理解当前描述的实施例,其中,相同的零件自始至终由相同的数字表示。根据本专利技术的实施例可以被体现为装置、方法或计算机程序产品。因此,本专利技术可采用完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等等)或把在本文中通常全部可以被称为“模块”或“系统”的软件方面和硬件方面组合的实施例的形式。此外,本专利技术可采用计算机程序产品的形式,该计算机程序产品体现在具有在介质中体现的计算机可用程序代码的任何有形表达介质中。可以使用一个或更多个计算机可用的或计算机可读的介质的任意组合,包括非暂态介质。例如,计算机可读介质可包括在下列各项中的一项或更多项:便携式计算机磁盘、硬盘、随机存取存储器(RAM)设备、只读存储器(ROM)设备、可擦除可编程只读存储器(EPROM或闪速存储器)设备、便携式光盘只读存储器(CDROM)、光学储存设备、磁储存设备。在选定的实施例中,计算机可读介质可包括任何非暂态介质,其可包含、存储、传递、传播或传输由指令执行系统、装置或设备使用的、或与指令执行系统、装置或设备结合使用的程序。用于执行本专利技术的操作的计算机程序代码可用一种或更多种编程语言(包括面向对象编程语言,诸如,Java、Smalltalk、C++等等,以及常规程序编程语言,诸如,“C”编程语言或类似编程语言)的任意组合编写。程序代码可以作为独立软件包在独立的硬件单元上在计算机系统上整体执行,部分地在与计算机间隔一定距离的远程计算机上执行,或完全在远程计算机或服务器上执行。在后者的场景中,远程计算机可通过任意类型的网络(包括局域网(LAN)或广域网(WAN))连接到计算机,或者可连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。以下参考根据本专利技术的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述本专利技术。应理解的是,可通过计算机程序指令或代码实现在流程图说明和/或框图中的每个框、以及在流程图说明和/或框图中的框的组合。这些计算机程序指令可被提供到通用计算机的、专用计算机的或用于生产机器的其他可编程数据处理装置的处理器,使得经由计算机的或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图中和/或在框图的一个或更多个框中所指定的功能/行为。这些计算机程序指令还可被存储在非暂态计算机可读介质中,非暂态计算机可读介质可以指导计算机或其他可编程数据处理装置以特定方式起作用,使得在计算机可读介质中储存的指令产生制品,该制品包括实现在流程图和/或框图的一个或更多个框中所指定的功能/行为的指令工具。计算机程序指令还可被载入到计算机或其他可编程数据处理装置,以使将在计算机或其他可编程装置上执行的一系列操作步骤产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实施流程图和/或框图中的一个或更多个框中指定的功能/行为的过程。基于矩阵乘法的架构具有要求复制原始2D图像数据以形成输入矩阵的基本问题。并且因此增加了本已非常高的存储带宽需求。存在用于CNN的基于卷积的架构,例如,由VinayakGokhale、JonghoonJin、AysegulDundar、BerinMartini和EugenioCulurciello在用于深层神经网络的240G-ops/s移动协处理器(A240G-ops/sMobileCoprocessorforDeepNeuralNetworks)中描述的方法,其在此通过引用的方式并入本文。我们的解决方案将零系数跳过(zerocoefficientskipping)与新颖的卷积引擎相结合。这显著降低了计算和存储带宽。传统的卷积是通过每次将整个核移动穿过所输入的2D图像来生成一个结果来完成的。我们的引擎每次只将一个核系数应用于所输入的2D图像的很大一部分(图块(tile))。由于每次只使用一个核系数,因此跳过乘以零系数,以实现高得多的性能。如果核被提前压缩,这就进一步允许使用低成本的核解压缩器,低成本的核解压缩器每次仅解压缩一个系数。在另一方面,使用累加而不是求和进行卷积。这也使得能够对CNN输入的第三维起作用,因为第三维自然适合于累加过程的一部分。这还进一步允许以交错方式执行来自不同核的卷积。这增加了类似于矩阵乘法的输入图像数据的重新使用。使用合理大小的累加缓冲器,多核累加卷积神经网络引擎可以一起在多个核上执行卷积。来自不同核的这些卷积有效地共享相同的2D输入图像数据以减小输入图像数据带宽。此外,该相同的累加缓冲器允许在系统中的所有乘法器上一次对一个系数实行卷积,这允许系数一次流入一个,而没有太多缓冲。参考图1,可以在CNN算法的背景中使用本文公开的用于计算核与值(诸如,图像的像素值)的数组的卷积的装置和方法。特别地,可以向算法输入三维图像。例如,该输入可以是图像100的阵列。因此,每个图像的每个像素可以表示通常被称为“体素(voxel)”的三维(3D空间)的体积。在所示实施例中,存在kz个本文档来自技高网...
零系数跳过卷积神经网络引擎

【技术保护点】
一种用于执行卷积的方法,所述方法包括:提供系数C(kz,Z,kx,ky)的数组,所述系数C(kz,Z,kx,ky)的数组定义了Z维度、kz维度、kx维度和ky维度;提供多个输入图像,每个输入图像对应于在所述kz维度中的索引;(a)通过电子设备将在多个图块位置中的下一个图块位置选为当前图块位置;(b)通过电子设备将在所述多个输入图像中的下一个输入图像I(kz1)选为当前图像,并且将与所述当前图像对应的索引kz1选为当前kz索引;(c)通过所述电子设备将在所述当前图块位置处的所述当前图像I(kz1)的图块作为所述当前图块加载到缓冲器中;(d)对于具有在所述kz维度等于kz1的索引的系数的数组中的系数C(kz1,Z,kx,ky)的至少一部分中的每个系数,通过所述电子设备单独地并且按照顺序地执行以下操作:根据在所述ky维度中的所述每个系数的ky索引,设置所述当前图块的ky移位量;根据在所述kx维度中的所述每个系数的kx索引,设置所述当前图块的kx移位量;将所述ky移位量和所述kx移位量应用于所述当前图块,以获得移位的图块;将所述移位的图块乘以所述每个系数,以获得一组乘积;将所述一组乘积加到在累加缓冲器中存储的一组累加的和,以获得一组更新的和;以及采用所述一组更新的和来重写所述一组累加的和;(e)执行(b)至(d),直到已根据(b)至(d)处理了在所述多个图像中的所有输入图像为止;(f)输出所述累加的和的当前值作为输出图像;(g)执行(a)至(f),直到已根据(a)至(f)处理了在所述多个图块位置中的所有图块位置为止;其中,所述ky移位量和所述kx移位量被选择为使得当(f)完成时,所述累加的和是所述当前图块与所述多个图像的三维卷积。...

【技术特征摘要】
2016.08.11 US 62/373,518;2017.08.08 US 15/671,829;1.一种用于执行卷积的方法,所述方法包括:提供系数C(kz,Z,kx,ky)的数组,所述系数C(kz,Z,kx,ky)的数组定义了Z维度、kz维度、kx维度和ky维度;提供多个输入图像,每个输入图像对应于在所述kz维度中的索引;(a)通过电子设备将在多个图块位置中的下一个图块位置选为当前图块位置;(b)通过电子设备将在所述多个输入图像中的下一个输入图像I(kz1)选为当前图像,并且将与所述当前图像对应的索引kz1选为当前kz索引;(c)通过所述电子设备将在所述当前图块位置处的所述当前图像I(kz1)的图块作为所述当前图块加载到缓冲器中;(d)对于具有在所述kz维度等于kz1的索引的系数的数组中的系数C(kz1,Z,kx,ky)的至少一部分中的每个系数,通过所述电子设备单独地并且按照顺序地执行以下操作:根据在所述ky维度中的所述每个系数的ky索引,设置所述当前图块的ky移位量;根据在所述kx维度中的所述每个系数的kx索引,设置所述当前图块的kx移位量;将所述ky移位量和所述kx移位量应用于所述当前图块,以获得移位的图块;将所述移位的图块乘以所述每个系数,以获得一组乘积;将所述一组乘积加到在累加缓冲器中存储的一组累加的和,以获得一组更新的和;以及采用所述一组更新的和来重写所述一组累加的和;(e)执行(b)至(d),直到已根据(b)至(d)处理了在所述多个图像中的所有输入图像为止;(f)输出所述累加的和的当前值作为输出图像;(g)执行(a)至(f),直到已根据(a)至(f)处理了在所述多个图块位置中的所有图块位置为止;其中,所述ky移位量和所述kx移位量被选择为使得当(f)完成时,所述累加的和是所述当前图块与所述多个图像的三维卷积。2.根据权利要求1所述的方法,其中,执行(d)是在没有在所述缓冲器中重写或重新加载所述当前图块的情况下执行的。3.根据权利要求1所述的方法,其中,具有所述当前kz索引的所述系数的数组中的系数的至少一部分仅包括具有所述当前kz索引的所述系数的数组中的系数中的非零系数。4.根据权利要求1所述的方法,其中,(d)还包括解压缩多个核,每个核包括具有所述当前kz索引的所述系数的数组中的系数以及在所述Z维度中的唯一索引。5.根据权利要求4所述的方法,其中,解压缩所述多个核中的每个核包括获得一组条目,每个条目包括所述每个核的一个系数、所述一个系数的所述kx索引和所述ky索引。6.根据权利要求5所述的方法,其中,所述一组条目不包括对于所述系数的数组中的等于零的系数的条目。7.根据权利要求1所述的方法,其中,将所述ky移位量和所述kx移位量应用于所述当前图块以获得移位的图块包括:根据所述ky移位量,在所述缓冲器中选择起始地址;自所述起始地址开始从所述缓冲器读取图像数据;根据所述kx移位量使所述图像数据移位,以获得移位的数据。8.根据权利要求1所述的方法,其中,将所述移位的图块乘以所述每个系数以获得所述一组乘积包括:使用乘法器阵列使移位的部分中的每一行同时乘以所述每个系数。9.根据权利要求1所述的方法,其中,所述系数的数组限定卷积神经网络(CNN)。10.根据权利要求1所述的方法,其中,所述累加的和包括多组累加的和,每组累加的和与沿所述Z维度的不同的Z索引对应;其中,将所述一组乘积加到在所述累加缓冲器中存储的所述一组累加的和以获得所述一组更新的和以及采用所述一组更新的和来重写所述一组累加的和,包括:将所述一组乘积加到与所述每个系数的Z索引对应的、所述多个累加的和中的一组累加的和,以获得一组更新的和;以及采用所述一组更新的和来重写与所述每个系数的Z索引对应的、所述多个累加的和中的所...

【专利技术属性】
技术研发人员:罗文杰
申请(专利权)人:图芯芯片技术有限公司
类型:发明
国别省市:美国,US

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

1