CN118052256A - 利用分块n:m结构化权重稀疏性的dnn加速 - Google Patents
利用分块n:m结构化权重稀疏性的dnn加速 Download PDFInfo
- Publication number
- CN118052256A CN118052256A CN202311519641.3A CN202311519641A CN118052256A CN 118052256 A CN118052256 A CN 118052256A CN 202311519641 A CN202311519641 A CN 202311519641A CN 118052256 A CN118052256 A CN 118052256A
- Authority
- CN
- China
- Prior art keywords
- buffer
- block
- pes
- elements
- sparsity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000000903 blocking effect Effects 0.000 title description 4
- 230000001133 acceleration Effects 0.000 title description 3
- 239000000872 buffer Substances 0.000 claims abstract description 65
- 230000004913 activation Effects 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 17
- 241001442055 Vipera berus Species 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000001537 neural effect Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000013138 pruning Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
加速器核心包括第一缓冲器和第二缓冲器以及至少一组k个处理元件(PE)。第一缓冲器接收至少一组分块稀疏化的第一元素。每一组分块稀疏化的第一元素的块大小(k,c)包括k行和c列,其中k大于或等于2,k乘以p等于K,并且c乘以q等于C,其中K是第一元素张量的输出通道维度,C是第一元素张量的输入通道数量,p是整数,并且q是整数。第二缓冲器接收第二元素。每个相应组的PE从与该组PE相对应的第一元素块接收k行第一元素,并且接收与从第一缓冲器接收的第一元素相对应的第二元素。
Description
相关申请的交叉引用
本申请要求2022年11月15日提交的美国临时申请第63/425678号的优先权权益,其公开内容通过引用整体结合于此。
技术领域
本文公开的主题涉及深度神经网络(Deep Neural Network,DNN)。更具体地,本文公开的主题涉及软件和硬件协同设计技术,其引入并利用DNN层中的稀疏性来高效地加速DNN的计算。
背景技术
神经处理单元(neural processing unit,NPU)用于加速诸如卷积神经网络(convolution neural network,CNN)的深度学习算法的计算。卷积层计算基于在输入张量(也称为输入特征图)上滑动卷积核。使用不同的核对多个输入进行卷积,以产生多个输出张量(也称为输出特征图)。在每个核位置处,计算基本上是输入像素和所有输入维度中的核权重的点积。剪枝方法目的是在可以被跳过的权重(即,零值)中引入稀疏性,这帮助降低计算复杂度以及降低存储器大小要求。权重值中的稀疏性可以是细粒度的,或者可以是粗粒度的。细粒度稀疏性可以实现高稀疏性比率,但是可能不是硬件友好的。
发明内容
示例实施例提供了一种加速器核心,该加速器核心可以包括第一缓冲器、第二缓冲器和至少两组k个处理元件。第一缓冲器可以被配置为接收至少一组分块稀疏化的第一元素,其中每一组分块稀疏化的第一元素可以包括M个第一元素块。每个块的块大小(k,c)可以包括k行和c列,其中k大于或等于2,k乘以p等于K,c乘以q等于C,其中K是第一元素张量的输出通道维度,C是第一元素张量的输入通道数量,M是整数,p是整数,并且q是整数。第二缓冲器可以被配置为接收第二元素。每个相应组的处理元件可以被配置为从第一缓冲器接收来自与该组PE相对应的第一元素块的k行第一元素,并且可以被配置为从第二缓冲器接收与从第一缓冲器接收的第一元素相对应的第二元素。在一个实施例中,块大小(k,c)可以是(1,4)、(2,1)、(2,2)、(4,1)、(2,4)、(4,4)和(8,1)之一。在另一实施例中,至少一组分块稀疏化的第一元素可以以N:M的分块结构化稀疏性布置,其中N是整数。在又一实施例中,N:M的分块结构化稀疏性可以是2:4的分块结构化稀疏性。在再一实施例中,加速器核心还可以包括至少一个第二缓冲器,其中每个相应的第二缓冲器可以与对应的一组处理元件相关联。在一个实施例中,每个相应的第二缓冲器向与第二缓冲器相对应的一组处理元件中的k个处理元件广播第二元素。在另一实施例中,每个处理元件生成由该处理元件接收的第一元素和第二元素的点积。在又一实施例中,第一元素可以是权重元素,并且第二元素可以是激活元素。
示例实施例提供了一种加速器核心,该加速器核心可以包括权重缓冲器、激活缓冲器以及至少两组处理元件(PE),每一组PE包括k个PE。权重缓冲器可以被配置为接收至少一组分块稀疏化的权重元素,其中每一组分块稀疏化的权重元素可以包括M个权重元素块。每个块的块大小(k,c)可以包括k行和c列,其中k大于或等于2,k乘以p等于K,c乘以q等于C,其中K是权重元素张量的输出通道维度,C是权重元素张量的输入通道数量,M是整数,p是整数,并且q是整数。激活缓冲器可以被配置为接收激活元素。每个相应组的处理元件可以被配置为从权重缓冲器接收来自与该组处理元件相对应的权重元素块的k行权重元素,并且可以被配置为从激活缓冲器接收与从权重缓冲器接收的权重元素相对应的激活元素。在一个实施例中,块大小(k,c)可以是(1,4)、(2,1)、(2,2)、(4,1)、(2,4)、(4,4)和(8,1)之一。在另一实施例中,至少一组分块稀疏化的权重元素可以以N:M的分块结构化稀疏性布置,其中N是整数。在又一实施例中,N:M的分块结构化稀疏性可以是2:4的分块结构化稀疏性。在再一实施例中,加速器核心还可以包括至少一个激活缓冲器,其中每个相应的激活缓冲器可以与对应的一组处理元件相关联。在一个实施例中,每个相应的激活缓冲器向与该激活缓冲器相对应的一组处理元件中的k个处理元件广播激活元素。在另一实施例中,每个处理元件生成由该处理元件接收的权重元素和激活元素的点积。
示例实施例提供了一种方法,该方法可以包括:由第一缓冲器接收至少一组分块稀疏化的第一元素,其中每一组分块稀疏化的第一元素可以包括M个第一元素块,每个块的块大小(k,c)可以包括k行和c列,其中k大于或等于2,k乘以p等于K,并且c乘以q等于C,其中K是第一元素张量的输出通道维度,C是第一元素张量的输入通道数量,M是整数,p是整数,并且q是整数;由第二缓冲器接收第二元素;以及由至少两组处理元件从第一缓冲器接收来自对应的第一元素块的k行第一元素,每一组处理元件包括k个处理元件;以及由每一组处理元件从第二缓冲器接收与由每一组处理元件从第一缓冲器接收的第一元素相对应的第二元素。在一个实施例中,块大小(k,c)可以是(1,4)、(2,1)、(2,2)、(4,1)、(2,4)、(4,4)和(8,1)之一,并且至少一组分块稀疏化的第一元素可以以N:M的分块结构化稀疏性布置。在另一实施例中,N:M的分块结构化稀疏性可以是2:4的分块结构化稀疏性,其中N是整数。在又一实施例中,第二缓冲器可以是至少一个第二缓冲器,其中每个相应的第二缓冲器与对应的一组处理元件相关联,并且该方法还可以包括:从每个相应的第二缓冲器向与第二缓冲器相对应的一组处理元件中的k个处理元件广播第二元素。在再一实施例中,第一元素可以是权重元素,并且第二元素可以是激活元素。
附图说明
在以下章节中,将参考附图中所示的示例性实施例来描述本文公开的主题的各方面,其中:
图1描绘了根据本文公开的主题的卷积核的分块稀疏性布置的示例实施例;
图2描绘了针对细粒度稀疏性而配置的传统加速器的硬件的示例实施例的框图;
图3描绘了根据本文公开的主题的分块稀疏性加速器的硬件的示例实施例的框图;以及
图4描绘了根据本文公开的主题的可以包括利用分块稀疏性的DNN的电子设备。
具体实施方式
在以下详细描述中,阐述了许多具体细节,以便提供对本公开的透彻理解。然而,本领域技术人员将理解,所公开的方面可以在没有这些具体细节的情况下实践。在其他情况下,没有详细描述众所周知的方法、过程、组件和电路,以免模糊本文公开的主题。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定的特征、结构或特性可以被包括在本文公开的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或具有类似含义的其他短语)在本说明书各处的出现不一定都是指同一实施例。此外,在一个或多个实施例中,特定的特征、结构或特性可以以任何合适的方式组合。在这点上,如本文所使用的,单词“示例性”意味着“用作示例、实例或说明”。在本文中描述为“示例性”的任何实施例都不应被解释为比其他实施例必然优选或有利。另外,在一个或多个实施例中,特定的特征、结构或特性可以以任何合适的方式组合。此外,取决于本文讨论的上下文,单数术语可以包括对应的复数形式,并且复数术语可以包括对应的单数形式。类似地,带连字符的术语(例如,“二维(two-dimensional)”、“预定(pre-determined)”、“像素特定(pixel-specific)”等)偶尔可以与对应的不带连字符的版本(例如,“二维(two dimensional)”、“预定(predetermined)”、“像素特定(pixel specific)”等)互换使用,大写条目(例如,“计数器时钟(Counter Clock)”、“行选择(Row Select)”、“像素输出(PIXOUT)”等)可以与对应的非大写版本(例如,“计数器时钟(counter clock)”、“行选择(row select)”、“像素输出(pixout)”等)互换使用。这种偶尔的互换使用不应被视为彼此不一致。
此外,取决于本文讨论的上下文,单数术语可以包括对应的复数形式,复数术语可以包括对应的单数形式。还应注意,本文示出和讨论的各种附图(包括组件图)仅用于说明目的,且未按比例绘制。例如,为了清楚起见,一些元件的尺寸可以相对于其他元件被夸大。此外,如果认为适当的话,在附图当中重复附图标记以指示对应和/或类似的元件。
本文使用的术语仅用于描述一些示例实施例的目的,并不旨在限制所要求保护的主题。如本文所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文清楚地另外指出。还将理解,术语“包括”和/或“包含”在本说明书中使用时指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。如本文所使用的,术语“第一”、“第二”等用作它们前面的名词的标签,且不暗示任何类型的排序(例如,空间、时间、逻辑等),除非如此明确定义。此外,可以在两个或更多个附图中使用相同的附图标记来指代具有相同或相似功能的部分、组件、块、电路、单元或模块。然而,这种用法仅仅是为了简化说明和便于讨论;这并不意味着这些组件或单元的构造或架构细节在所有实施例中都是相同的,或者这些共同引用的部分/模块是实施本文公开的一些示例实施例的唯一方式。
将理解,当元件或层被称为“在另一元件或层上”、“连接到另一元件或层”或者“耦合到另一元件或层”时,它可以直接在另一元件或层上、连接到另一元件或层或者耦合到另一元件或层,或者可以存在中间元件或层。相比之下,当一个元件被称为“直接在另一元件或层上”、“直接连接到另一元件或层”或者“直接耦合到另一元件或层”时,不存在中间元件或层。相同的数字始终指代相同的元件。如本文所使用的,术语“和/或”包括一个或多个相关列出项目的任何和所有组合。
除非另有定义,否则本文使用的所有术语(包括技术术语和科学术语)具有与本主题所属领域的普通技术人员通常理解的含义相同的含义。还将理解,术语(诸如在常用词典中定义的术语)应当被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且除非在此明确定义,否则不应以理想化或过于正式的意义来解释。
如本文所使用的,术语“模块”是指被配置为提供本文结合模块描述的功能的软件、固件和/或硬件的任何组合。例如,软件可以体现为软件包、代码和/或指令集或指令,并且在本文描述的任何实施方式中使用的术语“硬件”可以包括例如单独的或任何组合的配件、硬连线电路、可编程电路、状态机电路和/或存储由可编程电路执行的指令的固件。这些模块可以共同地或单独地体现为形成更大系统的一部分的电路,例如但不限于集成电路(integrated circuit,IC)、片上系统(system on-a-chip,SoC)、配件等。
本文公开的主题提供了一种软件/硬件协同设计技术,以对引入并利用DNN层中的稀疏性的DNN计算进行高效加速。软件方面可以用于在DNN权重(例如,Conv2D层的核)中引入可能具有相对低的元数据开销的结构化稀疏性模式。所引入的稀疏性模式可以是针对50%的稀疏性比率而形成分块2:4(2/4)稀疏性模式的粗粒度稀疏性模式。硬件方面可以通过使用相对低开销的电路跳过无效乘法(即,与零的乘法)来利用所引入的稀疏性。开销硬件电路可以在一组处理元件(processing element,PE)之间分摊稀疏性,该组PE共享相同输入并处理分块结构的同一块中具有权重的输入。相应地,本文公开的主题可以用于构建具有改进的面积/功效特性的高效NPU IP核心。
与基于结构化细粒度2:4(即通用的N:M)稀疏性的现有技术相比,本文公开的主题利用粗粒度2:4稀疏性模式,粗粒度2:4稀疏性模式使用的硬件开销占用量比结构化细粒度网络所使用的更小。在一个实施例中,本文公开的主题提供了在DNN权重中引入粗粒度稀疏性模式的分块2:4(或通用的N:M)剪枝方法,粗粒度稀疏性模式可以在硬件加速器中被高效利用,使得加速器具有低存储器占用量并以高效且高性能的计算进行操作。硬件方面具有通过跳过无效计算来利用稀疏性的相对低的开销,从而对DNN计算进行加速。
与细粒度稀疏性相比,硬件可以更高效地处理粗粒度稀疏性,诸如本文公开的分块粗粒度稀疏性。硬件(HW)加速中的处理稀疏性在计算数据路径和控制单元中都引进了逻辑开销。分块稀疏性可以通过在一组乘加(Multiply and Accumulate,MAC)单元(点积单元)上分摊或分布稀疏性开销来帮助减少开销。它还可以允许每一组MAC单元共享(即,重用)相同的输入,因为MAC单元可以共享相同的稀疏性模式。
结构化且平衡的稀疏性模式也可以通过2:4的分块稀疏性剪枝来利用。2:4的稀疏性提供了可以在硬件设计中被高效利用的平衡且可预测的稀疏性模式。细粒度稀疏性可以在每个MAC单元上引进硬件开销,这增加了面积/功率成本,并且减少了MAC单元之间的输入重用/共享。
图1描绘了根据本文公开的主题的卷积核的分块稀疏性布置100的示例实施例。分块稀疏性布置100包括K个输出通道维度、C个输入通道维度。每个方形101(仅指示了其中一个方形101)代表例如权重矩阵的元素。稀疏性块大小可以由(k,c)定义,其中k是广播维度(例如,卷积层中的输出通道(K)维度)中的块维度(即,块的行数),c是卷积层中的缩减维度(例如,输入通道(C维度))中的块维度(即,块的列数)。例如,图1中描绘的稀疏性块大小102是(2,2)稀疏性块。其他稀疏性块大小是可能的,诸如但不限于(2,1)、(2,2)、(4,1)、(2,4)、(4,4)和(8,1)。如图1所描绘的,示例稀疏性组大小103包括四个块——其中两个块具有全非零元素(即灰色阴影区域),两个块可以具有全零元素(即白色区域)。每个稀疏性组103a-103d描绘了不同的2:4稀疏性组,也就是说,每个稀疏性组具有不同的2:4分块稀疏性模式。具体地,每个稀疏性组具有四个块,其中四个块中只有两个块具有零元素,另外两个块具有非零元素。然而,应当理解,本文公开的主题不限于2:4的分块稀疏性模式,并且通常适用于N:M稀疏性结构模式。随着稀疏性块变得更粗,与密集网络的精度相比,网络的精度可能降低。
HW/SW协同设计的软件(SW)方面包括块大小和分块稀疏性模式,分块稀疏性模式可以是随机稀疏性模式或结构化稀疏性模式。HW/SW协同设计的硬件(HW)方面包括PE(即,MAC单元)的集群,其中与针对细粒度稀疏性而配置的PE的开销相比,每个集群开销具有相对小的大小。也就是说,PE集群的累积硬件开销小于与针对细粒度稀疏性而配置的加速器中的每个单独PE相关联的累积硬件开销(其包括每个PE的开销电路,例如输入多路复用器和伴随输入路由配置的布线)。分块稀疏性的HW方面支持块大小(k,c),其中(k,c)的块大小中的k维度允许稀疏性逻辑和激活在硬件加速器的k个PE之间重用(分摊)。例如,与细粒度稀疏性加速器配置相比,k=2、4或8的块大小分别使累积开销最小化50%、75%和87%。
图2描绘了针对细粒度稀疏性而配置的传统加速器200的硬件的示例实施例的框图。传统加速器200包括激活存储器201和多个PE 201a-201n。为了简单起见,没有示出权重和输出存储器。每个PE 201包括开销硬件电路203和乘法累加(MAC)单元204。MAC单元204执行点积运算,并且包括乘法器阵列、其后的加法器树和累加器。加法器树将阵列中乘法器的输出在一起求和(即缩减),并且加法器树的结果在累加器中相加。存储在激活存储器201中的激活值被输出到开销硬件电路203a-203n中的每一个。存储在每个相应的开销硬件电路203中的激活值被输入到对应的MAC单元204并由其处理。
图3描绘了根据本文公开的主题的分块稀疏性加速器300的硬件的示例实施例的框图。加速器300包括激活存储器301和多个PE集群302a-302n。每个PE集群302x包括开销硬件电路303x和多个MAC单元304x,1-304x,k。存储在激活存储器301中的激活值被输出到开销硬件电路303a-303n中的每一个。每个相应的开销硬件电路303x向与开销硬件电路303x对应的多个MAC单元304x,1-304x,k广播激活值。集群的MAC单元304处理所广播的激活值。与图2所描绘的传统加速器200相比,加速器300的开销硬件电路比加速器200的开销硬件电路少k倍。
块大小(k,c)中的c维度提供了优于从不同MAC单元304“借用”非零权重的情形的好处。通过“借用”非零权重,将传统加速器200(图2)中的MAC单元204a中具有零权重值的第一乘法器视为调度计算。可以跳过这种无效的乘零运算,并且可以使用来自为MAC单元204a调度的相同点积输入的下一非零权重值。替代地,可以从例如MAC单元204b的调度计算中路由(即,借用)非零权重值,其替换为MAC单元204a中的第一乘法器调度的零权重值。因为路由或“借用”的权重值来自不同的MAC单元204b,所以计算的输出应当使用MAC单元204a内不同(附加)的加法器树进行求和,然后将结果路由回MAC单元204b的累加器。未被配置为利用分块结构化稀疏性的传统加速器200的配置涉及MAC单元204内多个加法器树的额外硬件开销。当使用N:M结构化稀疏性(诸如2:4结构化稀疏性)时,c维度不添加硬件。然而,它对于具有随机稀疏性模式的权重可能是有用的。原因在于N:M是预测的结构且更容易在每个MAC阵列单元(例如,MAC 304a)内使用,并且不需要借用被调度在不同MAC阵列单元中进行处理的非零运算。
应当注意,加速器核心维度与输入张量(图1)无关。在输入张量的输入维度小于加速器核心维度的情形下,于是部分核心被使用,而剩余部分未得到充分利用。如果张量输入维度大于加速器核心维度,则输入张量被划分成更小的片,并且向核心计算单独地提供每个片。
表1示出了使用具有2:4稀疏性模式的不同块大小的分块稀疏性并且其中第一层(即,RGB层)没有剪枝的Resenet-50网络的推断精度结果。从表1中可以看出,使用分块稀疏性的推断精度结果与密集网络配置的推断精度结果相比更好。
表1
图4描绘了根据本文公开的主题的可以包括利用分块稀疏性的DNN的电子设备400。电子设备400和电子设备400的各种系统组件可以由一个或多个模块形成。电子设备400可以包括通过总线490彼此耦合的控制器(或CPU)410、输入/输出设备420(诸如但不限于小键盘、键盘、显示器、触摸屏显示器、2D图像传感器、3D图像传感器)、存储器430、接口440、GPU 450、成像处理单元460、神经处理单元470、TOF处理单元480。在一个实施例中,神经处理单元470可以被配置为利用根据本文公开的主题的分块稀疏性。在一个实施例中,2D图像传感器和/或3D图像传感器可以是成像处理单元460的一部分。在另一实施例中,3D图像传感器可以是TOF处理单元480的一部分。控制器410可以包括例如至少一个微处理器、至少一个数字信号处理器、至少一个微控制器等。存储器430可以被配置为存储将由控制器410使用的命令代码和/或存储用户数据。
接口440可以被配置为包括无线接口,无线接口被配置为使用RF信号向例如无线通信网络发送数据或从例如无线通信网络接收数据。无线接口440可以包括例如天线。电子设备400还可以用于通信系统的通信接口协议,诸如但不限于码分多址(Code DivisionMultiple Access,CDMA)、全球移动通信系统(Global System for MobileCommunication,GSM)、北美数字通信(North American Digital Communication,NADC)、扩展时分多址(Extended Time Division Multiple Access,ETDMA)、宽带CDMA(WidebandCDMA,WCDMA)、CDMA2000、WiFi、市政WiFi(Municipal Wi-Fi,Muni WiFi)、蓝牙、数字增强型无绳电信(Digital Enhanced Cordless Telecommunication,DECT)、无线通用串行总线(Wireless Universal Serial Bus,无线USB)、具有无缝切换的快速低时延接入正交频分复用(Fast low-latency access with seamless handoff Orthogonal FrequencyDivision Multiplexing,Flash-OFDM)、IEEE 802.20、通用分组无线电服务(Packet RadioService,GPRS)、iBurst、无线宽带(Wireless Broadband,WiBro)、WiMAX、高级WiMAX、通用移动电信服务-时分双工(Universal Mobile Telecommunication Service-TimeDivision Duplex,UMTS-TDD)、高速分组接入(High Speed Packet Access,HSPA)、演进数据优化(Evolution Data Optimized,EVDO)、高级长期演进(LTE-Advanced)、多信道多点分发服务(Multichannel Multipoint Distribution Service,MMDS)、第五代无线(5G)、第六代无线(6G)等等。
本说明书中描述的主题和操作的实施例可以在数字电子电路中实施,或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中实施,或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以被实施为一个或多个计算机程序,即被编码在计算机存储介质上的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,生成该传播信号以对信息进行编码,以用于传输到合适的接收器装置供数据处理装置执行。计算机存储介质可以是计算机可读存储设备、计算机可读存储衬底、随机或串行存取存储器阵列或设备、或其组合,或者被包括在其中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备),或者被包括在其中。另外,本说明书中描述的操作可以被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
虽然本说明书可以包含许多具体的实施细节,但是这些实施细节不应被解释为对任何要求保护的主题的范围的限制,而是应当被解释为对特定实施例所特有的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实施或以任何合适的子组合实施。此外,尽管特征可能在上面被描述为在某些组合中起作用,并且甚至最初被如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从该组合中被删除,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定的次序描绘了操作,但是这不应被理解为要求这些操作以所示的特定次序或顺序次序执行,或者要求所有示出的操作都被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者打包到多个软件产品中。
因此,本文已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。在一些情况下,权利要求中阐述的动作可以以不同的次序来执行,并且仍然实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定次序或顺序次序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
如本领域技术人员将认识到的,本文描述的创新概念可以在广泛的应用范围内进行修改和变化。相应地,所要求保护的主题的范围不应限于以上讨论的任何具体示例性教导,而是由所附权利要求来定义。
Claims (20)
1.一种加速器核心,包括:
第一缓冲器,被配置为接收至少一组分块稀疏化的第一元素,每一组分块稀疏化的第一元素包括M个第一元素块,每个块的块大小(k,c)包括k行和c列,其中k大于或等于2,k乘以p等于K,c乘以q等于C,其中K是第一元素张量的输出通道维度,C是所述第一元素张量的输入通道数量,M是整数,p是整数,并且q是整数;
第二缓冲器,被配置为接收第二元素;以及
至少两组处理元件(PE),每一组PE包括k个PE,每个相应组的PE被配置为从所述第一缓冲器接收来自与所述组PE相对应的第一元素块的k行第一元素,并且被配置为从所述第二缓冲器接收与从所述第一缓冲器接收的第一元素相对应的第二元素。
2.根据权利要求1所述的加速器核心,其中,所述块大小(k,c)包括(1,4)、(2,1)、(2,2)、(4,1)、(2,4)、(4,4)和(8,1)之一。
3.根据权利要求1所述的加速器核心,其中,所述至少一组分块稀疏化的第一元素以N:M的分块结构化稀疏性布置,其中,N是整数。
4.根据权利要求3所述的加速器核心,其中,所述N:M的分块结构化稀疏性包括2:4的分块结构化稀疏性。
5.根据权利要求1所述的加速器核心,还包括至少一个第二缓冲器,每个相应的第二缓冲器与对应的一组PE相关联。
6.根据权利要求5所述的加速器核心,其中,每个相应的第二缓冲器向与所述第二缓冲器相对应的一组PE中的所述k个PE广播第二元素。
7.根据权利要求1所述的加速器核心,其中,每个PE生成由所述PE接收的所述第一元素和所述第二元素的点积。
8.根据权利要求7所述的加速器核心,其中,所述第一元素包括权重元素,并且所述第二元素包括激活元素。
9.一种加速器核心,包括:
权重缓冲器,被配置为接收至少一组分块稀疏化的权重元素,每一组分块稀疏化的权重元素包括M个权重元素块,每个块的块大小(k,c)包括k行和c列,其中k大于或等于2,k乘以p等于K,c乘以q等于C,其中K是权重元素张量的输出通道维度,C是所述权重元素张量的输入通道数量,M是整数,p是整数,并且q是整数;
激活缓冲器,被配置为接收激活元素;以及
至少两组处理元件(PE),每一组PE包括k个PE,每个相应组的PE被配置为从所述权重缓冲器接收来自与所述组PE相对应的权重元素块的k行权重元素,并且被配置为从所述激活缓冲器接收与从所述权重缓冲器接收的权重元素相对应的激活元素。
10.根据权利要求9所述的加速器核心,其中,所述块大小(k,c)包括(1,4)、(2,1)、(2,2)、(4,1)、(2,4)、(4,4)和(8,1)之一。
11.根据权利要求9所述的加速器核心,其中,所述至少一组分块稀疏化的权重元素以N:M的分块结构化稀疏性布置,其中,N是整数。
12.根据权利要求11所述的加速器核心,其中,所述N:M的分块结构化稀疏性包括2:4的分块结构化稀疏性。
13.根据权利要求9所述的加速器核心,还包括至少一个激活缓冲器,每个相应的激活缓冲器与对应的一组PE相关联。
14.根据权利要求13所述的加速器核心,其中,每个相应的激活缓冲器向与所述激活缓冲器相对应的一组PE中的所述k个PE广播激活元素。
15.根据权利要求9所述的加速器核心,其中,每个PE生成由所述PE接收的所述权重元素和所述激活元素的点积。
16.一种方法,包括:
由第一缓冲器接收至少一组分块稀疏化的第一元素,每一组分块稀疏化的第一元素包括M个第一元素块,每个块的块大小(k,c)包括k行和c列,其中k大于或等于2,k乘以p等于K,并且c乘以q等于C,其中K是第一元素张量的输出通道维度,C是所述第一元素张量的输入通道数量,M是整数,p是整数,并且q是整数;
由第二缓冲器接收第二元素;以及
由至少两组处理元件(PE)从所述第一缓冲器接收来自对应的第一元素块的k行第一元素,每一组PE包括k个PE;以及
由每一组PE从所述第二缓冲器接收与由每一组PE从所述第一缓冲器接收的第一元素相对应的第二元素。
17.根据权利要求16所述的方法,其中,所述块大小(k,c)包括(1,4)、(2,1)、(2,2)、(4,1)、(2,4)、(4,4)和(8,1)之一,并且
其中,所述至少一组分块稀疏化的第一元素以N:M的分块结构化稀疏性布置。
18.根据权利要求17所述的方法,其中,所述N:M的分块结构化稀疏性包括2:4的分块结构化稀疏性,其中,N是整数。
19.根据权利要求16所述的方法,其中,所述第二缓冲器包括至少一个第二缓冲器,其中每个相应的第二缓冲器与对应的一组PE相关联,并且
所述方法还包括:
从每个相应的第二缓冲器向对应于所述第二缓冲器的一组PE中的所述k个PE广播第二元素。
20.根据权利要求16所述的方法,其中,所述第一元素包括权重元素,并且所述第二元素包括激活元素。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/425,678 | 2022-11-15 | ||
US18/097,200 US20240160483A1 (en) | 2022-11-15 | 2023-01-13 | Dnns acceleration with block-wise n:m structured weight sparsity |
US18/097,200 | 2023-01-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118052256A true CN118052256A (zh) | 2024-05-17 |
Family
ID=91045681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311519641.3A Pending CN118052256A (zh) | 2022-11-15 | 2023-11-15 | 利用分块n:m结构化权重稀疏性的dnn加速 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118052256A (zh) |
-
2023
- 2023-11-15 CN CN202311519641.3A patent/CN118052256A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7349438B2 (ja) | ニューラル・ネットワーク・アクセラレータ | |
KR20170135752A (ko) | 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계 | |
US20230351151A1 (en) | Neural processor | |
US10776694B2 (en) | Optimized neural network input stride method and apparatus | |
US20200034148A1 (en) | Compute near memory convolution accelerator | |
JP2020091853A (ja) | Gemmデータフロー加速器半導体回路 | |
Mohanty et al. | A high-performance VLSI architecture for reconfigurable FIR using distributed arithmetic | |
CN113515261A (zh) | 乘法器单元及计算浮点值的点积的方法和装置 | |
CN118052256A (zh) | 利用分块n:m结构化权重稀疏性的dnn加速 | |
US20240160483A1 (en) | Dnns acceleration with block-wise n:m structured weight sparsity | |
KR20220168975A (ko) | 신경망 가속기 | |
EP4109346A1 (en) | Depthwise-convolution implementation on a neural processing core | |
Choi et al. | MLogNet: A logarithmic quantization-based accelerator for depthwise separable convolution | |
Qureshi et al. | NeuroMAX: a high throughput, multi-threaded, log-based accelerator for convolutional neural networks | |
US20240119270A1 (en) | Weight-sparse npu with fine-grained structured sparsity | |
JP2023542261A (ja) | 複数のアキュムレータを有するシストリックアレイセル | |
US20210150313A1 (en) | Electronic device and method for inference binary and ternary neural networks | |
CN117744723A (zh) | 神经处理单元 | |
US20240095505A1 (en) | Hybrid-sparse npu with fine-grained structured sparsity | |
US20230153586A1 (en) | Accelerate neural networks with compression at different levels | |
KR20220166730A (ko) | 신경 처리 장치의 코어 및 신경망 계층의 입력 특징 맵 값을 처리하는 방법 | |
CN117744724A (zh) | 神经处理单元 | |
KR20240040614A (ko) | 극희소성 딥 러닝 에지 추론 가속기 | |
CN113496269A (zh) | 神经网络装置 | |
US20240162916A1 (en) | Runtime reconfigurable compression format conversion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |