CN115066692A - 用于表示神经网络中的稀疏矩阵的装置和方法 - Google Patents
用于表示神经网络中的稀疏矩阵的装置和方法 Download PDFInfo
- Publication number
- CN115066692A CN115066692A CN202180012162.5A CN202180012162A CN115066692A CN 115066692 A CN115066692 A CN 115066692A CN 202180012162 A CN202180012162 A CN 202180012162A CN 115066692 A CN115066692 A CN 115066692A
- Authority
- CN
- China
- Prior art keywords
- level bitmap
- sub
- sparse matrix
- sparse
- block
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 89
- 238000000034 method Methods 0.000 title claims abstract description 65
- 239000011159 matrix material Substances 0.000 claims abstract description 267
- 238000012545 processing Methods 0.000 claims abstract description 96
- 230000004044 response Effects 0.000 claims abstract description 23
- 230000015654 memory Effects 0.000 claims description 81
- 239000013598 vector Substances 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 230000004913 activation Effects 0.000 description 9
- 238000001994 activation Methods 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006837 decompression Effects 0.000 description 5
- 238000010606 normalization Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013138 pruning Methods 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本公开涉及一种用于表示神经网络中的稀疏矩阵的装置和方法。在一些实施例中,示例性的操作单元包括:缓冲器,用于存储神经网络中的稀疏矩阵的表示;稀疏引擎,与所述缓冲器通信耦合;处理阵列,与所述稀疏引擎通信耦合,并包括使用稀疏矩阵执行神经网络的电路。所述稀疏引擎包括执行以下操作的电路:从所述缓冲器读取稀疏矩阵的表示,该表示包括第一级位图、第二级位图和元素数组;解压缩第一级位图以确定稀疏矩阵的每个块是否包括非零元素;以及响应于块包括非零元素,使用元素阵列解压缩第二级位图以获得稀疏矩阵的包括非零元素的块。
Description
本公开要求申请号为16/783,069,于2020年2月5日提交的美国申请的优先权,并通过引用并入本文。
背景技术
现今的神经网络往往包含多个节点和多个层,然而,这降低了执行效率并增加了延迟。由此,对神经网络提出了输入稀疏性、输出稀疏性、权重稀疏性或以上的组合,以提高执行效率并减少延迟。的确,人工神经网络的稀疏性能更准确反映人脑中的神经元是如何处理信息的。但神经网络中的稀疏矩阵会导致存储和计算效率的显著降低。例如,它们需要不必要的大量存储空间,这些存储空间大部分被零元素占用。此外,对稀疏矩阵的计算涉及到大量的对零元素的不必要操作(如加法和乘法)。
发明内容
在一些实施例中,示例性的操作单元包括用于存储神经网络中的稀疏矩阵的表示的缓冲器、与缓冲器通信耦合的稀疏引擎以及与稀疏引擎通信耦合的处理阵列。稀疏引擎包括执行以下操作的电路:从缓冲器读取稀疏矩阵的表示,稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;解压缩第一级位图以确定稀疏矩阵的每个块是否包括非零元素;以及响应于块包括非零元素,使用元素数组解压缩第二级位图以获得稀疏矩阵的包括非零元素的块。处理阵列包括用于使用稀疏矩阵执行神经网络的电路。
在一些实施例中,示例性的处理核包括本地存储器和与本地存储器通信耦合的操作单元。所述操作单元包括用于存储神经网络中的稀疏矩阵的表示的缓冲器、与缓冲器通信耦合的稀疏引擎以及与稀疏引擎通信耦合的处理阵列。稀疏引擎包括执行以下操作的电路:从缓冲器读取稀疏矩阵的表示,稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;解压缩第一级位图以确定稀疏矩阵的每个块是否包括非零元素;以及响应于块包括非零元素,使用元素数组解压缩第二级位图以获得稀疏矩阵的包括非零元素的块。处理阵列包括用于使用稀疏矩阵执行神经网络的电路。
在一些实施例中,示例性的执行神经网络的方法包括:读取稀疏矩阵的表示,稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;解压缩第一级位图以确定稀疏矩阵的每个块是否包括非零元素;以及响应于块包括非零元素,使用所述元素数组解压缩第二级位图以获得稀疏矩阵的包括非零元素的块;使用稀疏矩阵执行神经网络。
在一些实施例中,示例性的非暂时性的计算机可读存储介质存储一组指令,该组指令由一个或多个处理设备执行时,使得操作单元执行一种方法,该方法包括:读取神经网络中的稀疏矩阵的表示,稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;解压缩第一级位图以确定稀疏矩阵的每个块是否包括非零元素;响应于块包括非零元素,使用元素数组解压缩第二级位图以获得稀疏矩阵的包括非零元素的块;和使用稀疏矩阵执行神经网络。
本公开的其他特征和优点,部分地将在以下描述中详细说明,部分地将基于描述是显而易见的或者在本公开实施例的实践中学习得到。本公开的特征和优点将通过所附权利要求中特别指出的元素和组合来实现和获得。
应当理解,上述一般描述和以下详细描述仅是示例性和解释性的,并不限制本公开实施例。
附图说明
构成本公开的一部分的附图用于说明多个实施例,并与描述一起解释本公开实施例的原理和特征。在图中:
图1A是根据本公开的一些实施例提供的一示例性的对神经网络中的矩阵进行稀疏化的示意图;
图1B是根据本公开的一些实施例提供的另一示例性的对神经网络中的矩阵进行稀疏化的示意图;
图2A是根据本公开的一些实施例提供的一示例性的神经网络异构加速处理单元(heterogeneous acceleration processing unit,HAPU)的架构的示意图;
图2B是根据本公开的一些实施例提供的一示例性的神经网络异构加速处理单元的核的架构的示意图;
图2C是根据本公开的一些实施例提供的一示例性的包括神经网络异构加速处理单元架构的云系统的示意图;
图3是根据本公开的一些实施例提供的一示例性的神经网络中的稀疏矩阵的表示方法的示意图;
图4是根据本公开的一些实施例提供的另一示例性的神经网络中的稀疏矩阵的表示方法的示意图;
图5A是根据本公开的一些实施例提供的一示例性的操作单元的示意图;
图5B是根据本公开的一些实施例提供的一示例性的稀疏引擎的示意图;
图6是根据本公开的一些实施例提供的一示例性的用于表示神经网络中的稀疏矩阵的方法的流程图;
图7是根据本公开的一些实施例提供的一示例性的用于解压缩神经网络中的稀疏矩阵的表示的方法的流程图。
具体实施方式
下面将详细介绍示例性的实施例,其示例在附图中示出。下面参照附图进行描述,其中除非另有说明,否则不同附图中相同数字表示相同的或类似元素。示例性的实施例的以下描述所阐述的实现并不代表与本公开一致的所有实现,相反,它们仅仅是与所附权利要求中所述的与本公开相关的方面一致的装置、系统和方法的示例。
在神经网络中,稀疏矩阵有许多传统的稀疏表示。例如,压缩稀疏行(CompressedSparse Row,CSR)或压缩稀疏列(Compressed Sparse Column,CSC)采用非零元素加索引的格式来表示稀疏矩阵。如果矩阵的稀疏度不高,那这些表示会占用巨大的存储空间来存储索引。此外,硬件很难解压缩这些格式的表示。本公开的实施例可以改进传统的稀疏表示。例如,在本公开的一些实施例中,可以减少用于存储稀疏矩阵的表示的存储空间。在本公开的一些实施例中,表示的格式是硬件友好的,并且其具有简单的解压缩过程和更高的解压缩吞吐量。
可以理解,本公开的矩阵或稀疏矩阵可以是任何矩阵或稀疏矩阵。例如,矩阵或稀疏矩阵可以是与神经网络相关联的权重矩阵、激活矩阵等。在本公开的一些实施例中,可以通过稀疏化(例如修剪)矩阵来获得神经网络中的稀疏矩阵。量化也可用于降低元素值(例如,权重或激活)的精度,从而降低存储成本和计算量。
图1A是根据本公开的一些实施例提供的一示例性对神经网络中的矩阵进行稀疏化110的示意图。例如,稀疏化110将矩阵111缩减为稀疏矩阵115,以减少执行神经网络所需的计算量。尽管矩阵111被描述为4×4的二维(2D)矩阵,但矩阵111可以是任何尺寸或任何维度,例如一维(1D)或三维(3D)。
因此,如图1A所示,稀疏化110包括从矩阵111中选择一个或多个元素,例如元素113a、113b、113c和113d。尽管稀疏化110被描述为选择四个元素,但稀疏化110可以使用任何预定数量的元素。元素113a、113b、113c和113d因为其具有四个最大的绝对值而被选择。稀疏化110还包括将未被选择的元素归零,如稀疏矩阵115所示。因此,如图1A所示,稀疏化110在矩阵111实施了75%的稀疏化。此外,稀疏化的程度取决于元素的预定数量和矩阵111的大小。
图1B是根据本公开的一些实施例提供的另一示例性的对神经网络中的矩阵进行稀疏化120的示意图。例如,稀疏化120将矩阵121缩减为稀疏矩阵125,以减少执行神经网络所需的计算量。尽管矩阵121被描绘为4×4矩阵,但矩阵121可以是任何尺寸或任何维度,例如为一维(1D)或三维(3D)。
因此,如图1B所示,稀疏化120包括从矩阵121中选择一个或多个元素,例如元素123a、123b、123c和123d。尽管稀疏化120被描述为选择四个元素,但稀疏化120可以使用任何预定数量的元素。元素123a、123b、123c和123d因为其位于选定列中而被选择。尽管稀疏化120被描述为选择一列,但稀疏化120可以选择任何预定数量的块,例如,向量、列、行、滤波器、通道等。稀疏化120还包括将未被选择的元素归零,如稀疏矩阵125所示。因此,如图1B所示,稀疏化120在矩阵121上实施了75%的稀疏化。此外,稀疏化的程度取决于预定列数和矩阵121的大小。
由于具有最大绝对值的元素可能分布在矩阵111中的任何位置,因此图1A的稀疏化110在选择不设置为零的元素时无法提供空间可预测性。因此,图1A的稀疏矩阵115具有随机非零元素分布和非结构化的稀疏性。但图1B的稀疏化120提供空间可预测性,因为其非零元素是根据特定规则选择的(例如,每行的第一个元素)。因此,图1B的稀疏矩阵125具有规律的非零元素分布和结构化的稀疏性。可以理解,图1A的稀疏化110和图1B的稀疏化120是生成稀疏矩阵的示例,而不是限制,稀疏矩阵115和稀疏矩阵125是示例性的稀疏矩阵。例如,由于理论上使用较少的激进的稀疏技术以获得更准确的结果与使用较多的激进的稀疏技术以节省计算量之间存在权衡,因此矩阵的稀疏程度取决于结果的目的。本公开的实施例也可以使用其他具有不同稀疏度和非零元素分布的稀疏矩阵以及其他稀疏化方法。
图2A示出了根据本公开的一些实施例提供的一示例性的神经网络异构加速处理单元(HAPU)的架构200。在本公开的上下文中,神经网络异构加速处理单元也可以被称为机器学习加速器或深度学习加速器。在一些实施例中,HAPU的架构200被称为神经网络处理单元(neural network processing unit,NPU)的架构200。如图2A所示,HAPU的架构200包括多个核202、命令处理器204、直接存储器访问(direct memory access,DMA)单元208、联合测试动作组/测试访问端口(Joint Test Action Group/Test Access Port,JTAG/TAP)控制器210、外围接口212、总线214等。
可以理解,核202基于通信数据执行算法操作。核202可包括一个或多个处理元件,该一个或多个处理元件可包括单指令多数据(single instruction multiple data,SIMD)架构,单指令多数据架构可包括一个或多个处理单元,该一个或多个处理单元用于基于从命令处理器204接收的命令执行一个或多个操作(例如,乘法、加法、乘-累加等)。为了对所传送的数据包执行操作,核202包括用于处理数据包中的信息的一个或多个处理元件。每个处理元件可以包括任意数量的处理单元。根据本公开的一些实施例,HAPU的架构200包括多个核202,例如四个核。在一些实施例中,多个核202彼此通信耦合。例如,多个核202与支持大型神经网络模型的高效流水线的单向环形总线连接。下面将参考图2B详细说明核202的架构。
命令处理器204与主机单元220交互,并将相关命令和数据传送给相应核202。在一些实施例中,命令处理器204在内核模式驱动器(kernel mode driver,KMD)的监督下与主机单元交互。在一些实施例中,命令处理器204修改传送给每个核202的相关命令,以便多个核202尽可能地并行工作。修改后的命令可以存储在指令缓冲器(未显示)。在一些实施例中,命令处理器204用于协调一个或多个核202并行执行。
DMA单元208可以协助在主机存储器221和HAPU的架构200之间传送数据。例如,DMA单元208可以协助将数据或指令从主机存储器221加载到核202的本地存储器中。DMA单元208还可以协助在多个HAPU之间传输数据。DMA单元208可以允许片外设备访问片内存储器和片外存储器而不引起主机CPU中断。此外,DMA单元208可以协助在HAPU的架构200内的各部件之间传输数据。例如,DMA单元208可以协助在多个核202之间或每个核内传输数据。因此,DMA单元208还可以生成存储器地址并启动存储器读取或写入周期。DMA单元208还可以包含可由一个或多个处理器写入和读取的若干个硬件寄存器,该若干个硬件寄存器包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器和其他类型的寄存器。这些寄存器可以指定传输的源、目标、方向(从输入/输出(I/O)设备读取或写入数据到I/O设备)、传输单元的大小和在一次脉冲中传输的字节数量。可以理解,HAPU的架构200可包括第二个DMA单元,用于在其他HAPU架构之间传输数据,以允许多个HAPU的架构直接通信而不涉及主机CPU。
JTAG/TAP控制器210可以指定一个专用调试端口实现串行通信接口(例如JTAG接口),以低开销地访问HAPU,并无需直接访问外部系统地址和数据总线。JTAG/TAP控制器210还可以具有片上测试访问接口(例如,TAP接口),该接口实现访问一组测试寄存器的协议,这组测试寄存器用于呈现芯片逻辑电平和各个部件的设备能力。
如果存在外围接口212(例如PCIe接口),则其通常用作芯片间总线,以提供HAPU和其他设备之间的通信。
总线214(例如I2C总线)可包括芯片内总线和芯片间总线。芯片内总线按照系统架构的要求将所有内部组件相互连接。虽然并非所有组件都连接到每个其他组件,但所有组件都与它们需要与之通信的其他组件有一定的连接。芯片间总线将HAPU与其他设备连接(例如片外存储器或外围设备)。例如,总线214可以提供跨核的高速通信,并且还可以将核202与其他单元(例如片外存储器或外围设备)连接。通常,如果存在外围接口212(例如,芯片间总线),则总线214仅与芯片内总线相关,但在一些实现中,总线214仍与专用的总线间通信相关。
加速器架构200还可以与主机单元220通信。主机单元220可以是一个或多个处理单元(例如,X86中央处理单元)。如图2A所示,主机单元220可与主机存储器221相关联。在一些实施例中,主机存储器221是与主机单元220相关联的集成存储器或外部存储器。在一些实施例中,主机存储器221包括主机磁盘,主机磁盘是用于向主机单元220提供额外存储器的外部存储器。主机存储器221可以是双数据速率同步动态随机存取存储器(例如,DDR-SDRAM)等。与集成在HAPU芯片内的片上存储器相比,主机存储器221作为更高级别的高速缓存,以较慢的访问速度存储大量数据。存储在主机存储器221中的数据可以被传输到HAPU架构200,以用于执行神经网络模型。
在一些实施例中,具有主机单元220和主机存储器221的主机系统包括编译器(未示出)。编译器是将用一种编程语言编写的计算机代码转换为用于HAPU架构200的指令以创建可执行程序的程序或计算机软件。在机器学习的应用程序中,编译器可以执行各种操作,例如,预处理、词法分析、解析、语义分析、将输入程序转换为中间表示、神经网络初始化、代码优化、代码生成,或以上组合。例如,编译器编译神经网络以生成静态参数,例如,神经元之间的连接和神经元的权重。
在一些实施例中,包括编译器的主机系统将一个或多个命令推送到HAPU的架构200。如上所述,这些命令可由HAPU的架构200的命令处理器204进一步处理,它们可临时存储在HAPU架构200的指令缓冲器中,并分发给相应的一个或多个核(例如,图2A中的核202)或处理元件。一些命令可以指示DMA单元(例如,图2A的DMA单元208)将指令和数据从主机存储器(例如,图2A的主机存储器221)加载到HAPU的架构200中,然后,这些被加载的指令被分发给指派了相应任务的每个核(例如,图2A的核202),由这一个或多个核处理这些指令。
可以理解,核202接收到的前几条指令可以指示核202将数据从主机存储器221加载/存储到核的一个或多个本地存储器(例如,图2B的本地存储器2032)。然后,每个核202可以启动指令流水线,指令流水线涉及(例如,通过定序器)从指令缓冲器提取指令,(例如,通过图2A的DMA单元208)解码指令,生成(例如,对应于操作数的)本地存储器地址,读取源数据,执行加载/存储操作,然后写回结果。
根据一些实施例,HAPU的架构200还包括全局存储器(未示出),其具有用作主存储器的存储块(例如,4块8GB的第二代高带宽存储器(HBM2))。在一些实施例中,全局存储器存储经由DMA单元208从主机存储器221获取的指令和数据,然后,这些指令被分发到指派了相应任务的每个核的指令缓冲器,由核相应地处理这些指令。
在一些实施例中,HAPU的架构200还包括存储器控制器(未示出),存储器控制器用于管理从和向全局存储器内的特定存储器块(例如HBM2)读和写数据。例如,存储器控制器管理来自另一HAPU的核(例如,来自DMA单元208或对应于另一HAPU的DMA单元)的读/写数据,或管理来自核202(例如,来自核202中的本地存储器)的读/写数据。可以理解,在HAPU的架构200中可以设置多个存储器控制器。例如,全局存储器中的每个存储块(例如HBM2)都有一个存储器控制器。
存储器控制器可以生成存储器地址并启动存储器读或写周期。存储器控制器可以包含若干个由一个或多个处理器写入和读取的硬件寄存器。这些寄存器可以包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器以及其他类型的寄存器。这些寄存器可以指定传输的源、目标、方向(从输入/输出(I/O)设备读取或写入I/O设备)、传输单元的大小、在一次脉冲中传输的字节数或其他存储器控制器的典型特征。
根据本公开的一些实施例,图2A的HAPU的架构200用于卷积神经网络(Convolutional Neural Network,CNN),但应理解,图2A的HAPU的架构200可用于各种神经网络,例如,深度神经网络(Deep Neural Network,DNN)、递归神经网络(Recurrent NeuralNetwork,RNN)等。此外,一些实施例可以针对各种处理架构进行配置,例如,神经网络处理单元(neural processing unit,NPU)、图形处理单元(graphic processing unit,GPU)、张量处理单元(tensor processing unit,TPU)、任何其他类型的HAPU等。
图2B示出了根据本公开的一些实施例的示例性的核的架构。如图2B所示,核202包括一个或多个操作单元,例如第一操作单元2020和第二操作单元2022、存储器引擎2024、定序器2026、指令缓冲器2028、常量缓冲器2030、本地存储器2032等。
一个或多个操作单元包括第一操作单元2020和第二操作单元2022。第一操作单元2020可用于对接收到的数据(例如,矩阵)执行操作。在一些实施例中,第一操作单元2020包括用于执行一个或多个操作(例如,乘法、加法、乘-累积、元素操作等)的一个或多个处理单元。在一些实施例中,第一操作单元2020用于加速卷积运算或矩阵乘法运算的执行。
第二操作单元2022可用于执行池化操作、插值操作、感兴趣区域(region-of-interest,ROI)操作等。在一些实施例中,第二操作单元2022包括插值单元、池化数据路径等。
存储器引擎2024可用于在相应的核202的内部或在两个核之间执行数据拷贝。DMA单元208可以协助在相应的核内或两个核之间拷贝数据。DMA单元208可以协助在相应的核内或两个核之间拷贝数据。例如,DMA单元208支持存储器引擎2024将数据从本地存储器(例如,图2B的本地存储器2032)拷贝到相应的操作单元中。存储器引擎2024还可用于执行矩阵转置,以使矩阵适合于在操作单元中使用。
定序器2026与指令缓冲器2028耦合,并可用于提取出命令并将命令分发给核202的各个组件。例如,定序器2026将卷积命令或乘法命令分发给第一操作单元2020,将池化命令分发给第二操作单元2022,或者将数据拷贝命令分发给存储器引擎2024。定序器2026还可用于监视神经网络任务的执行,并并行化神经网络任务的多个子任务以提高执行效率。在一些实施例中,第一操作单元2020、第二操作单元2022和存储器引擎2024根据存储在指令缓冲器2028中的指令,在定序器2026的控制下并行运行。
指令缓冲器2028可用于存储属于相应核202的指令。在一些实施例中,指令缓冲器2028与定序器2026耦合,并向定序器2026提供指令。在一些实施例中,存储在指令缓冲器2028中的指令由命令处理器204传输或修改。
常量缓冲器2030可用于存储常量值。在一些实施例中,存储在常量缓冲器2030中的常量值可由诸如第一操作单元2020或第二操作单元2022之类的操作单元用于批量归一化、量化、反量化等。
本地存储器2032可提供具有快速读/写速度的存储空间。为了减少与全局存储器的可能交互,可以将本地存储器2032的存储空间构建成大容量。有了巨大的存储空间,大部分数据访问都在核202内执行,从而减少了数据访问造成的延迟。在一些实施例中,为了最小化数据加载延迟和能量消耗,集成在芯片上的静态随机存取存储器(static randomaccess memory,SRAM)被用作本地存储器2032。在一些实施例中,本地存储器2032具有192MB或更大的容量。根据本公开的一些实施例,本地存储器2032均匀分布在芯片上,以减轻密集布线和发热问题。
图2C示出了根据本公开的一些实施例提供的一示例性的包括HAPU架构200的云系统的示意图。如图2C所示,云系统230可以提供具有人工智能(artificial intelligence,AI)能力的云服务,并且可以包括多个计算服务器(例如计算服务器232和234)。在一些实施例中,计算服务器232例如集成了图2A中的神经网络HAPU的架构200。为了简单明了,图2C中以简化的方式示出了神经网络HAPU的架构200。
借助神经网络HAPU的架构200,云系统230可以提供图像识别、面部识别、翻译、3D建模等扩展AI功能。可以理解,神经网络HAPU的架构200可以以其他形式部署到计算设备中。例如,神经网络HAPU的架构200还可以集成在例如智能手机、平板电脑和可穿戴设备的计算设备中。
此外,可以理解,虽然图2A-图2B示出了神经网络HAPU的架构,但本公开可以使用任何提供执行并行计算能力的HAPU。
图3是根据本公开的一些实施例提供的一示例性的神经网络中的稀疏矩阵的表示方法300的示意图。如图3所示,表示方法300包括将稀疏矩阵301变换或压缩为表示303。可以理解,稀疏矩阵301可以是任何稀疏矩阵,例如与神经网络相关联的权重矩阵、激活矩阵等。尽管矩阵301被描述为6×9的二维(2D)矩阵,但它可以是任意大小或任意维度。
稀疏矩阵301包括许多非零(NZ)元素,例如NZ0、NZ1、……、NZ6,它们随机或有规律地分布在矩阵中。稀疏矩阵301被划分为多个块。块可以是任何大小或形状,包括但不限于正方形、长方形、立方体、长方体、向量、列、行、过滤器、通道等。在一些实施例中,根据超参数(例如压缩比、非零元素的分布、稀疏化方法、存储需求等)将稀疏矩阵301划分为块。如图3所示,稀疏矩阵301分为六个3×3的块,分别为块0、块1、……、块5。
稀疏矩阵301可以由表示303表示。表示303可以包括多个级别的位图(bitmap,BM)。例如,表示303包括第一级位图3031,以指示块级别的稀疏度,例如,指示稀疏矩阵301的块是否包括非零元素。如图3所示,第一级位图3031包括六个元素B0、B1、……、B5,每个元素指示对应的块(块0、块1、……、或块5)是否包括非零元素。B0、B1、……、和B5分别对应于块0、块1、……、和块5。B0设置为1表示块0至少有一个非零元素,而B1设置为0表示块1没有任何非零元素,依此类推。尽管第一级位图3031显示为向量,但它可以是任何其他大小或形式,例如2D矩阵。
此外,表示303还包括第二级位图3032,以指示每个块的稀疏度,例如,对于具有非零元素的每个块,指示该块的每个元素是否为非零元素。例如,第二级位图3032包括一个或多个部分(例如,部分3032a),每个部分对应于一个具有非零元素的块。对于没有非零元素的块(例如块1或块5)或对于第一级位图3031中的零元素(例如B1或B5),第二级位图3032没有与之对应的部分。一个或多个部分被布置在与第一级位图3031的结构相对应的第二级位图3032的结构中。第二级位图3032的每个部分包括多个元素,每个元素指示对应块中的一个元素是否为非零元素。如图3所示,例如,第二级位图3032的部分3032a对应于第一级位图3031的B3或稀疏矩阵301的块3。稀疏矩阵301的块3包括两个非零元素:位置(0,0)处的NZ3和位置(2,0)处的NZ4。第二级位图3032的部分3032a包括两个元素,即位置(0,0)处的E(0,0)和位置(2,0)处的E(2,0),它们被设置为1以指示这些位置处存在非零元素。尽管第二级位图3032显示为3×N矩阵,但第二级位图3032可以是任何其他大小或形式,例如1D矩阵。
在一些实施例中,表示303包括元素数组3033,其具有稀疏矩阵301的所有非零元素,例如NZ0、NZ1、……、NZ6。非零元素布置在与第二级位图3032的结构相对应的结构中。如图3所示,例如,NZ3、NZ4被布置成对应于第二级位图3032的部分3032a,而部分3032a对应于第一级位图3031的B3,从而对应于稀疏矩阵301的块3。具体地,NZ3和NZ4分别对应于第二级位图3032的部分3032a的E(0,0)和E(2,0)。
在一些实施例中,第二级位图3032的一个部分(例如,部分3032a)可进一步划分为多个子块,并用第一子级位图和第二子级位图表示。与第一级位图3031类似,第一子级位图3032a-1包括多个元素以指示子块级别的稀疏度,例如,指示第二级位图3032的部分3032a的每个子块是否包括非零元素。例如,第二级位图3032的部分3032a分为三列。第一子级位图3032a-1可包括三个元素C0、C1和C2,以指示部分3032a的每列是否包括非零元素。C0、C1和C2分别对应于部分3032a的左列、中列和右列。由于部分3032a的左列包括两个非零元素E(0,0)和E(2,0),而部分3032a的中列和右列仅包括零元素,因此C0设置为1,而C1和C2均设置为0。尽管第一子级位图3032a-1显示为具有三个元素的向量,但第一子级位图3032a-1可以是任何其他大小或形式。
与第二级位图3032类似,第二子级位图3032a-2包括一个或多个部分,以指示具有非零元素的子块中的每个元素是否为非零元素。在一些实施例中,对于不具有非零元素的子块(例如,部分3032a的中列或右列)或对于第一子级位图中的零元素(例如,第一子级位图3032a-1的C1或C2),第二子级位图(例如,第二子级位图3032a-2)没有与之对应的部分。第二子级位图3032a-2的每个部分包括多个元素,并且每个元素指示第二级位图3032的部分3032a的对应子块中的每个元素是否为非零元素。第一子级位图3032a-1的结构对应于第二级位图3032的结构,第二子级位图3032a-2的结构对应于第一子级位图3032a-1的结构。例如,如图3所示,第二子级位图3032a-2具有与第一子级位图3032a-1中的C0和第二级位图3032的左列相对应的一个部分。第二子级位图3032a-2的该部分包括三个元素(1,0,1),以对应于第二级位图3032的部分3032a的左列中的三个元素,并指示它们是否为非零元素。尽管第二子级位图3032a-2显示为具有三个元素的向量,但它可以是任何其他大小或形式。
可以理解,在一些实施例中,可以有更深的子级位图3032a-n。例如,类似于稀疏矩阵301或第二级位图3032的部分3032a,第二子级位图3032a-2可以被划分为多个子块,并由其他更深的子级位图表示。
尽管被描述为三个分离的数据,但在一些实施例中,第一级位图3031、第二级位图3032和元素数组3033可以彼此组合。例如,第一级位图3031和第二级位图3032可以这样组合在一起:第一级位图3031的元素(例如B3)后面紧跟着第二级位图3032的对应部分(例如3032a)。作为另一示例,第二级位图3032可以与元素数组3033组合,其方式是第二级位图3032的一个部分(例如,部分3032a)后面紧跟着元素数组3033的对应非零元素(例如,NZ3和NZ4)。作为另一示例,第一级位图3031、第二级位图3032和元素数组3033可以组合,其方式是第一级位图3031的元素(例如B3)的后面紧跟着第二级位图3032的对应部分(例如部分3032a),然后后面紧跟着元素数组3033的对应的非零元素(例如NZ3和NZ4)。
图4是根据本公开的一些实施例提供的另一示例性的神经网络中的稀疏矩阵的表示方法400的示意图。如图4所示,表示方法400包括将稀疏矩阵401变换或压缩为表示403。可以理解,稀疏矩阵401可以是任何稀疏矩阵,例如与神经网络相关联的权重矩阵、激活矩阵等。尽管矩阵401被描绘为3D矩阵,但它可以具有任何大小或维度。
稀疏矩阵401是一个W×H×C的3D矩阵,包括在矩阵401中随机或规律分布的许多非零(NZ)元素。稀疏矩阵401可以被划分为多个块。块可以是任何大小或形状,包括但不限于正方形、长方形、立方体、长方体、向量、列、行、过滤器、通道等。如图4所示,稀疏矩阵401被划分为多个列,例如N列,其中N=W×H。例如,列(0,0)包括两个非零元素NZ0和NZ1,列(W-1,H-1)包括三个非零元素NZ(n-2)、NZ(n-1)和NZn。
稀疏矩阵401可由表示403表示。表示403包括多个级别的位图。例如,表示403包括第一级位图4031、第二级位图4032等。第一级位图4031指示稀疏矩阵401的每列是否包括非零元素。如图4所示,第一级位图4031包括多个元素(例如,N个元素),每个元素指示对应的列是否包括非零元素。如果第一级位图4031的一个元素所对应的列中有一个或多个非零元素,则将其设置为1,如果第一级位图4031的一个元素所对应的列中没有任何非零元素,则将其设置为0。
第二级位图3032指示每个包含一个或多个非零元素的列中的每个元素是否为非零元素。例如,第二级位图3032包括一个或多个部分,每个部分对应于稀疏矩阵401的一个列。对于没有非零元素的列或对于第一级位图4031中的零元素,第二级位图4032没有对应的部分。在一些实施例中,第二级位图4032的一个或多个部分被布置在与第一级位图4031的结构相对应的结构中。第二级位图4032的每个部分包括多个元素,并且每个元素指示对应列中的每个元素是非零元素还是零元素。
应该理解,尽管显示为组合向量,但第一级位图4031和第二级位图4032可以是任何其他大小或形式。例如,第一级位图4031或第二级位图4032可以是单独的向量或2D矩阵,或者可以组合在另一种结构中,例如第一级位图4031的每个元素后面紧跟第二级位图4032的对应部分。
如图4所示,表示403还包括元素数组4033,元素数组4033具有稀疏矩阵401的所有非零元素,例如NZ0、NZ1、……、NZ(n-2)、NZ(n-1)、NZn。非零元素被布置在与第二级位图4032的结构相对应的结构中。
在一些实施例中,第二级位图4032的一个部分(例如向量)可被进一步划分为多个子块(例如子向量),并用第一子级位图4032-1和第二子级位图4032-2表示。与第一级位图4031类似,第一子级位图4032-1包括多个元素,每个元素指示第二级位图4032的对应部分的一个子块是否包括非零元素。例如,第二级位图4032的向量被划分为多个子向量。第一子级位图3032-1包括与子向量数量相同的元素,每个元素指示向量的一个子向量是否包括非零元素。
与第二级位图4032类似,第二子级位图4032-2包括一个或多个部分,用于指示具有非零元素的子块的每个元素是否为非零元素。在一些实施例中,对于没有非零元素的子块或对于第一子级位图4032-1中的零元素,第二子级位图3032-2不包括与之对应的部分。第二子级位图4032-2的每个部分包括多个元素,并且每个元素可以指示第二级位图4032的对应部分的对应子块中的一个元素是否为非零元素。
在一些实施例中,第一子级位图4032-1的结构对应于第二级位图4032的结构,第二子级位图4032-2的结构对应于第一子级位图4032-1的结构。尽管显示为向量,但第一子级位图4032-1和第二子级位图4032-2可以是任何其他大小或形式。
可以理解,在一些实施例中,可以有更深的子级位图。例如,类似于稀疏矩阵401或第二级位图4032的部分,第二子级位图4032-2可被划分为多个子块,并由其他更深的子级位图表示。
在一些实施例中,元素数组4033与第一级位图4031或第二级位图4032组合。例如,将元素数组4033和第二级位图4032以这样一种方式组合在一起:与稀疏矩阵401的一个列相对应的第二级位图4032的一个部分后面紧跟着元素数组4033的对应的非零元素。
图5A是根据本公开的一些实施例提供的一示例性的操作单元500的示意图。在一些实施例中,操作单元500是包括在核502(例如,图2A-2B的核202)中的第一操作单元(例如,图2B的第一操作单元2020)。操作单元500包括第一缓冲器510、第二缓冲器520和处理阵列530。
第一缓冲器510可用于存储输入数据。在一些实施例中,存储在第一缓冲器510中的数据是处理阵列530用于执行的输入数据(例如,输入特征)。在一些实施例中,从本地存储器5032(例如,图1B中的本地存储器2032)提取输入数据。第一缓冲器510可用于支持在处理阵列530中使用的数据的重用或共享。在一些实施例中,存储在第一缓冲器510中的输入数据是用于卷积操作的激活数据。
第二缓冲器520可用于存储矩阵数据,例如稀疏矩阵(例如权重矩阵)的表示。例如,操作单元500通过存储器引擎(未示出,例如图2B的存储器引擎2024)从本地存储器5032读取、提取或接收稀疏矩阵的表示,并将该表示存储在第二缓冲器520中。在一些实施例中,第二缓冲器520是第一缓冲器510的一部分或者与第一缓冲器510分离。第二缓冲器520是为诸如矩阵或表示之类的数据提供存储空间的任何合适的存储器,例如寄存器、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static RandomAccess Memory,SRAM)等。
操作单元500还包括稀疏引擎590,稀疏引擎590与第二缓冲器520通信耦合,并用于从第二缓冲器520读取数据或将数据写入第二缓冲器520。如图5B所示,稀疏引擎590可包括一个或多个解压缩器,例如第一级解压缩器591和第二级解压缩器592,以解压缩稀疏矩阵的表示。在一些实施例中,稀疏引擎590、第一级解压缩器591或第二级解压缩器592被实现为具有高处理速度的电路。稀疏引擎590从第二缓冲器520读取神经网络中的稀疏矩阵的表示(例如,图3的表示303、图4的表示403等),稀疏矩阵的表示包括第一级位图521(例如,图3的第一级位图3031、图4的第一级位图4031等)、第二级位图522(例如图3的第二级位图3032、图4的第二级位图4032等)和元素数组523(例如图3的元素数组3033、图4的元素数组4033等)。在一些实施例中,稀疏矩阵的表示还包括一个或多个子级位图(例如,图3中的第一子级位图3032a-1、第二子级位图3032a-2、更多子级位图3032a-n以及图4的第一子级位图4032-1、第二子级位图4032-2等)。稀疏引擎590的多个解压缩器包括用于它们之间通信耦合,并允许它们彼此协作来解压缩稀疏矩阵的表示的电路。例如,第一级解压缩器591和第二级解压缩器592相互耦合和通信。第一级解压缩器591解压缩第一级位图521以确定稀疏矩阵的每个块是否包括非零元素。例如,第一级位图的元素设置为1,以指示其对应的块包括非零元素。如果一个块包括非零元素,则第二级解压缩器592使用元素数组523解压缩第二级位图522以获得稀疏矩阵的包括非零元素的块。例如,第二级解压缩器592将第二级位图作为位掩码,使用元素数组来重构稀疏矩阵。第二级位图的一个元素设置为1,以指示其对应的元素是包含在元素数组中的非零元素。在一些实施例中,获得的稀疏矩阵的块与原块相同。在一些实施例中,获得的稀疏矩阵块是原块的变体,但该变体对计算更加硬件友好。第一级解压缩器591可以组合获得的块以获得稀疏矩阵593或其变体。尽管显示为两个单独的单元,但在一些实施例中,第一级解压缩器591和第二级解压缩器592组合为一个解压缩器。
例如,结合图3,稀疏引擎590从第二缓冲器520读取包括第一级位图3031、第二级位图3032和元素数组3033的表示303。第一级解压缩器591可以解压缩第一级位图3031,例如,检查第一级位图3031的每个元素B0、B1、……、或B5,以确定稀疏矩阵301的每个块是否包括非零元素。元素B0、B2-B4被设置为1,表示稀疏矩阵301的块0和块2-4具有非零元素,而B1和B5被设置为0,表示稀疏矩阵301的块1和块5不具有任何非零元素。对于第一级位图3031的元素B0、B2至B4或稀疏矩阵301的块0和块2至块4,第二级解压缩器592可以使用元素数组3033解压缩第二级位图3032,以获得稀疏矩阵301的块0和块2至块4。例如,第二级解压缩器592读取第二级位图3022并检查第二级位图3022的每个元素。对于对应于B3或块3的部分3032a,元素E(0,0)和E(2,0)被设置为1,并分别对应于元素数组3033的非零元素NZ3和NZ4。第二级解压缩器592可通过将NZ3和NZ4分别放置在位置(0,0)和(2,0)处,并用零填充所有其他位置来重构块3。类似地,也可以重构块0、块2和块4。然后,稀疏引擎590可以组合重构块以将表示303转换为稀疏矩阵301或稀疏矩阵301的变体。
在一些实施例中,稀疏引擎590读取的表示还包括一个或多个子级位图(未示出),例如第一子级位图和第二子级位图。稀疏引擎590可包括更多解压器以处理一个或多个子级位图。在一些实施例中,第一级解压缩器591和第二级解压缩器592可以处理一个或多个子级位图。例如,第一级解压缩器591(或第一子级解压缩器(未示出))可以解压缩第一子级位图以确定第二级位图522的一个部分的一个子块是否包括非零元素。如果子块包括非零元素,则第二级解压缩器592(或第二子级解压缩器(未示出))可以解压缩第二子级位图以获得第二级位图522的对应部分的对应子块。
例如,结合图3,稀疏引擎590可以从第二缓冲器520读取包括第一子级位图3032a-1和第二子级位图3032a-2的表示303。第一级解压缩器591可以解压缩第一子级位图3032a-1,例如,检查第一子级位图3032a-1的每个元素C0、C1或C2,以确定部分3032a的每个子块(例如列)是否包括非零元素。元素C0被设置为1,表示部分3032a的左列有一个或多个非零元素,而C1和C2设置为0,表示部分3032a的中列和右列没有任何非零元素。对于第一子级位图3032a-1的元素C0或对于部分3032a的左列,第二级解压缩器592可以对第二子级位图3032a-2进行解压缩,以获得部分3032a的左列。例如,第二级解压缩器592读取第二子级位图3032a-2,并用第二子级位图3032a-2重构部分3032a的左列。第二级解压缩器592可以使用多个零重构部分3032a的中列和右列。类似地,稀疏引擎590可以重构第二级位图3032的其他部分,并解压缩第二级位图3032以获得稀疏矩阵301。
操作单元500还包括处理阵列530,其可以具有多个层(例如,K层)。根据本公开的一些实施例,处理阵列530的每一层可以包括多个处理串,这些处理串可以并行地执行计算。例如,包括在处理阵列530的第一层中的第一处理串包括第一乘法器(例如,点积)540_1和第一累加器(ACC)550_1,第二处理串包括第二乘法器540_2和第二累加器550_2。类似地,第一层中的第i处理串包括第i乘法器540_i和第i累加器550_i.。
在一些实施例中,处理阵列530在SIMD的控制下执行计算。例如,当执行卷积运算时,处理阵列530的每一层使用不同的数据执行相同的指令。
根据本公开的一些实施例,图5A所示的处理阵列530可以包括在核中(例如,图2A或图2B中的核202)。在一些实施例中,当处理阵列530的一层中包括的处理串的数量(例如,i个处理串)小于工作项的数量(例如,B个工作项)时,i个工作项先由处理阵列530执行,随后剩余的工作项(B-i个工作项)由处理阵列530执行。在一些其他实施例中,i个工作项可以由处理阵列530执行,其余工作项可以由另一个核中的另一个处理阵列530执行。
根据本公开的一些实施例,处理阵列530还包括元素操作单元560。在一些实施例中,元素操作单元560被设置在处理串的末端。在一些实施例中,处理阵列530的每一层中的处理串共享元素操作单元560。例如,处理阵列530的第一层中的i个处理串共享元素操作单元560。在一些实施例中,处理阵列530的第一层中的元素操作单元560对累加器550_1到550_i的每个输出值依次执行元素操作。类似地,处理阵列530的第k层中的元素操作单元560对累加器550_1到550_i的每个输出值依次执行元素操作。在一些实施例中,元素操作单元560可用于执行多个元素操作。在一些实施例中,由元素操作单元560执行的元素操作包括激活函数,例如ReLU功能、ReLU6功能、Leaky ReLU功能、Sigmoid功能、Tanh功能等。
在一些实施例中,乘法器540或累加器550用于对不同于元素操作单元560所执行的数据类型的数据类型执行其操作。例如,乘法器540或累加器550对整数类型数据(例如Int 8、Int 16等)执行其操作,而元素操作单元560对浮点类型数据(例如FP24等)执行其操作。因此,根据本公开的一些实施例,处理阵列530还包括反量化器570和量化器580,元素操作单元560设置于两者之间。在一些实施例中,将批量归一化操作合并到反量化器570中,因为反量化器570和批量归一化操作都可以通过常数的乘法运算和加法运算来执行,常数可由常量缓冲器5030(例如,图2B的常量缓冲器2030)提供。在一些实施例中,编译器将批量归一化操作和反量化操作合并到一个操作中。如图5A所示,常量缓冲器5030可以向反量化器570提供常数,用于反量化或批量归一化。
稀疏引擎590可以向处理阵列530提供解压缩后的稀疏矩阵593,处理阵列530可以对解压缩后的稀疏矩阵执行计算(例如,加法、乘法、乘-累加、卷积等)。在一些实施例中,处理阵列530从第一缓冲器510读取输入特征并使用它们进行计算。
图6是根据本公开的一些实施例的提供的一示例性的用于表示神经网络中的稀疏矩阵的方法600的流程图。方法600可以通过图2A或图2C的神经网络的异构加速处理单元架构200来实现。此外,方法600还可以实现为计算机程序产品,该计算机程序产品体现在计算机可读介质,包括由计算机执行的计算机可执行指令,例如程序代码。在一些实施例中,主机单元(例如,图2A或2C的主机单元220)编译软件代码来生成提供给一个或多个HAPU以执行方法600的指令。
如图6所示,在步骤601,将稀疏矩阵划分为多个块。稀疏矩阵可以是任何大小或维度。在一些实施例中,稀疏矩阵是稀疏权重矩阵或稀疏激活矩阵。块可以是任何大小或形状,包括但不限于正方形、长方形、立方体、长方体、向量、列、行、过滤器、通道等。在一些实施例中,根据超参数(例如压缩比、非零元素的分布、稀疏化方法、存储需求等)将稀疏矩阵划分为块。稀疏矩阵可以包括在矩阵中随机或规律分布的许多非零元素。稀疏矩阵的块可以包括一个或多个非零元素,也可以不包括任何非零元素。参考图3,例如,稀疏矩阵301是6×9的2D矩阵,包括许多非零元素,例如NZ0,、NZ1、……、NZ6.。稀疏矩阵301被分为3×3的六个块,即块0、块1、……、块5。
在步骤603,确定第一级位图。第一级位图指示多个块中的每个块是否包括非零元素。第一级位图可以包括多个元素,例如与块的数量相同的元素数量。每个元素对应于一个块,并指示该块是否包含非零元素。参考图3,例如,第一级位图3031包括六个元素B0、B1、……、B5,每个元素指示对应块(块0、块1、……、或块5)是否包括非零元素。B0、B1、……、和B5分别对应于块0、块1、……、和块5。B0被设置为1,表示块0至少有一个非零元素,而B1被设置为0,表示块1没有任何非零元素,依此类推。尽管第一级位图3031显示为向量,但它可以是任何其他大小或形式。
在步骤605,确定第二级位图。第二级位图指示对于包含非零元素的块,该块中的每个元素是否为非零元素。第二级位图可以包括多个部分。每个部分对应一个具有非零元素的块。在一些实施例中,第二级位图的每个部分和其对应块具有相同的大小或形式。每个部分的每个元素都指示对应块的对应元素是否为非零元素。对于没有非零元素的块或第一级位图中的零元素,第二级位图没有对应的部分。第二级位图的一个或多个部分可以布置在与第一级位图的结构相对应的结构中。每个部分的元素被布置在与对应块的结构相对应的结构中。
参考图3,例如,第二级位图3032的部分3032a对应于第一级位图3031的B3或稀疏矩阵301的块3。稀疏矩阵301的块3包括两个非零元素:位置(0,0)处的NZ3和位置(2,0)处的NZ4。第二级位图3032的部分3032a包括两个元素:位置(0,0)处的E(0,0)和位置(2,0)处的E(2,0),其被设置为1以指示这些位置处存在非零元素。尽管显示为3×N矩阵,但第二级位图3032可以是任何其他大小或形式。
在步骤607,形成包括稀疏矩阵中的非零元素的元素数组。非零元素可以布置在与第二级位图的结构相对应的结构中。参考图3,例如,NZ3和NZ4对应于第二级位图3032的部分3032a布置,而第二级位图3032的部分3032a对应于第一级位图3031的B3,从而NZ3和NZ4对应于稀疏矩阵301的块3。具体而言,NZ3和NZ4分别对应于第二级位图3032的部分3032a的E(0,0)和E(2,0)。
在一些实施例中,方法600还包括根据超参数确定在多个块中的每个块的大小或形式,超参数例如压缩比、非零元素的分布、稀疏方法、存储需求等。
在一些实施例中,方法600还包括修剪与神经网络相关联的矩阵以获得稀疏矩阵。例如,通过使用图1A的稀疏化110、图1B的稀疏化120等来修剪矩阵。
在一些实施例中,方法600还包括将第二级位图的一个部分划分为多个子块,确定包括多个元素的第一子级位图以指示第二级位图的该部分的每个子块是否包括非零元素,以及确定包括一个或多个部分的第二子级位图以指示具有非零元素的子块中的每个元素是否为非零元素。在一些实施例中,对于没有非零元素的子块或者对于第一子级位图中的零元素,第二子级位图没有与之对应的部分。第一子级位图的结构对应于第二级位图的结构,第二子级位图的结构对应于第一子级位图的结构。参考图3,例如,第二级位图3032的部分3032a被划分为三列。第一子级位图3032a-1包括三个元素C0、C1和C2,以指示部分3032a的每列是否包括非零元素。C0、C1和C2分别对应于部分3032a的左、中和右列。由于部分3032a的左列包括两个非零元素E(0,0)和E(2,0),而部分3032a的中列和右列仅包括零元素,因此C0被设置为1,而C1和C2均被设置为0。第二子级位图3032a-2具有与第一子级位图3032a-1的C0、第二级位图3032的左列相对应的部分。第二子级位图3032a-2的该部分包括三个元素(1、0、1),对应于第二级位图3032的部分3032a的左列中的三个元素,并指示它们是否为非零元素。
应理解,在一些实施例中,方法600包括确定更深子级别的位图。例如,第二子级位图可以被划分为多个子块,并由其他更深的子级位图表示。
在一些实施例中,方法600包括将第一级位图、第二级位图和元素数组中的至少两个彼此组合。
图7是根据本公开的一些实施例的提供的一示例性的用于解压缩神经网络中的稀疏矩阵的表示的方法700的流程图。方法700可以通过图2A或图2C的神经网络异构加速处理单元的架构200或图5A至图5B中的稀疏引擎590来实现。此外,方法700还可以实现为计算机程序产品,该计算机程序产品体现在计算机可读介质,包括由计算机执行的计算机可执行指令,例如程序代码。
如图7所示,在步骤701,读取神经网络中的稀疏矩阵的表示。稀疏矩阵的表示包括第一级位图、第二级位图和元素数组。在一些实施例中,稀疏矩阵的表示还包括一个或多个子级位图。例如,图5A的稀疏引擎590读取神经网络中的稀疏矩阵的表示(例如,图3的表示303、图4的表示403等),稀疏矩阵的表示包括第一级位图521(例如,图3的第一级位图3031、图4的第一级位图4031等),第二级位图522(例如图3的第二级位图3032、图4的第二级位图4032等)和元素数组523(例如图3的元素数组3033、图4的元素数组4033等)。稀疏矩阵的表示还可以包括一个或多个子级位图(例如,图3的第一子级位图3032a-1、第二子级位图3032a-2、更多子级位图3032a-n、图4的第一子级位图4032-1、第二子级位图4032-2等)。
在步骤703,解压缩第一级位图以确定稀疏矩阵的每个块是否包括非零元素。稀疏矩阵包括多个块。解压缩第一级位图包括检查第一级位图的每个元素。在一些实施例中,将第一级位图的一个元素设置为1以指示其对应的块包括非零元素。例如,图5A的稀疏引擎590(例如,第一级解压缩器591)可以解压缩图3的第一级位图3031,例如,检查第一级位图3031的每个元素B0、B1、……、或B5,以确定稀疏矩阵301的每个块是否包括非零元素。元素B0、B2-B4被设置为1,表示稀疏矩阵301的块0和块2至块4具有非零元素,而B1和B5被设置为0,表示稀疏矩阵301的块1和块5不具有任何非零元素。
在步骤705,响应于块包括非零元素,使用元素数组对第二级位图进行解压缩,以获得稀疏矩阵的包括非零元素的块。在一些实施例中,第二级位图可作为位掩码并使用元素数组重构稀疏矩阵。第二级位图的一个元素被设置为1,以指示其对应的元素是元素数组中包含的非零元素。在一些实施例中,组合所获得的块以获得稀疏矩阵或其变体。例如,图5B的稀疏引擎590(例如,第二级解压缩器592)使用元素数组3033解压缩图3的第二级位图3032,以获得稀疏矩阵301的块0和块2至块4。参考图3,对于与B3或块3对应的部分3032a,元素E(0,0)和E(2,0)被设置为1,并且分别对应于元素数组3033的非零元素NZ3和NZ4。图5B的稀疏引擎590(例如,第二级解压缩器592)可以通过将NZ3和NZ4分别放置在位置(0,0)和(2,0)处,并用零填充所有其他位置来重构块3。类似地,也可以重构块0、块2和块4。图5B的稀疏引擎590(例如,第一级解压缩器591)组合所获得的块(块0和块2-4),以获得稀疏矩阵301。
在步骤707,提供稀疏矩阵。在一些实施例中,所提供的稀疏矩阵与原稀疏矩阵相同,或者是原稀疏矩阵的变体。
在一些实施例中,方法700还包括解压缩第一子级位图以确定第二级位图的每个部分的每个子块是否包括非零元素,并且响应于子块包括非零元素,解压缩第二子级位图以获得第二级位图的对应部分的包括非零元素的子块。例如,结合图3和图5A-5B,表示303包括第一子级位图3032a-1和第二子级位图3032a-2。稀疏引擎590(例如,第一级解压缩器591)对第一子级位图3032a-1进行解压缩,例如,检查第一子级位图3032a-1的每个元素C0、C1和C2,以确定部分3032a的子块(例如列)是否包括非零元素。元素C0被设置为1,指示部分3032a的左列有一个或多个非零元素,而C1和C2被设置为0,表示部分3032a的中列和右列没有任何非零元素。对于第一子级位图3032a-1的元素C0或部分3032a的左列,稀疏引擎590(例如,第二级解压缩器592)可使用第二子级位图3032a-2重构部分3032a的左列,并使用多个零重构部分3032a的中列和右列。类似地,稀疏引擎590可以重构第二级位图3032的其他部分,并解压缩第二级位图3032以获得稀疏矩阵301。
本公开的实施例可以带来许多技术优势。例如,本公开的一些实施例的稀疏矩阵的层次化表示可以减少存储空间。此外,层次化表示是硬件友好的,从而实现简单的解压缩过程和更高的解压缩吞吐量。
在本公开的一些实施例中,超参数用于控制神经网络中的稀疏性的粒度。在一些实施例中,稀疏矩阵的层次化表示表征一个级别(例如,第一级别BM)上的结构化稀疏性和另一个级别(例如,第二级别BM)上的非结构化稀疏性。这可以提高稀疏矩阵的存储和计算效率。
应当理解,本文所公开的实施例可用于各种应用环境,例如人工智能(AI)训练和推理、数据库和大数据分析加速、视频压缩和解压缩等。人工智能相关的应用可涉及基于神经网络的机器学习(machine learning,ML)或深度学习(deep learning,DL)。因此,本公开的实施例可用于各种神经网络架构,例如深度神经网络(deep neural network,DNN)、卷积神经网络(convolutional neural network,CNN)、递归神经网络(recurrent neuralnetwork,RNN)等。例如,本公开的一些实施例可用于DNN的人工智能推理。
本公开的实施例可应用于许多产品。例如,本公开的一些实施例可应用于阿里NPU(Ali-NPU,例如,汉光NPU)、阿里云(Ali-Cloud)、阿里存内AI处理器(Ali PIM-AI)、阿里数据库加速单元(Ali-DPU)、阿里AI平台(Ali-AI platform)、阿里数据中心AI推理芯片(Ali-Data Center AI Inference Chip)、物联网边缘AI芯片(IoT Edge AI Chip)、GPU、TPU等。
下面使用以下权利要求进一步描述实施例。
1、一种表示神经网络中的稀疏矩阵的方法,包括:
将稀疏矩阵划分为多个块;
确定第一级位图,以指示所述多个块中的每个块是否包括非零元素;
确定第二级位图,以指示包含非零元素的块中的每个元素是否为非零元素;和
形成包括所述稀疏矩阵中的非零元素的元素数组。
2、根据权利要求1所述的方法,其中,所述稀疏矩阵是稀疏权重矩阵或稀疏激活矩阵,或者所述块是正方形、长方形、立方体、长方体、向量、列、行、滤波器或通道。
3、根据权利要求1或2所述的方法,还包括:
修剪与神经网络相关的矩阵以获得所述稀疏矩阵。
4、根据权利要求1-3中任一项所述的方法,还包括:
根据压缩比、非零元素分布、稀疏化方法和存储要求中的至少一个,确定所述多个块中的每个块的大小或形式。
5、根据权利要求1至4中任一项所述的方法,其中,确定所述第一级位图包括:
确定多个元素,每个元素对应于一个块,并指示该块是否包括非零元素。
6、根据权利要求1至5中任一项所述的方法,其中,确定所述第二级位图包括:
对于每个包含非零元素的块,确定具有多个元素的每个部分,其中,每个部分的每个元素指示对应块的对应元素是否为非零元素;和
组合一个或多个所确定的部分以形成所述第二级位图。
7、根据权利要求1至6中任一项所述的方法,还包括:
将所述第二级位图的每个部分划分为多个子块;
确定包括多个元素的第一子级位图,以指示所述第二级位图的对应部分的每个子块是否包括非零元素;和
确定包括一个或多个部分的第二子级位图,以指示对于具有非零元素的子块,该子块的每个元素是否为非零元素。
8、根据权利要求1至7中任一项所述的方法,还包括:
将所述第一级位图、所述第二级位图和所述元素数组中的至少两个相互组合。
9、一种执行神经网络的方法,包括:
读取稀疏矩阵的表示,所述稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;
解压缩所述第一级位图以确定所述稀疏矩阵的每个块是否包括非零元素;
响应于块包括非零元素,使用所述元素数组解压缩所述第二级位图以获得所述稀疏矩阵的包括非零元素的块;和
使用所述稀疏矩阵执行神经网络。
10、根据权利要求9所述的方法,其中,解压缩所述第一级位图包括:
检查所述第一级位图的每个元素,以确定所述稀疏矩阵的对应块是否包含非零元素。
11、根据权利要求9或10所述的方法,其中,解压缩所述第二级位图包括:
以所述第二级位图作为位掩码,使用所述元素数组重建所述稀疏矩阵。
12、根据权利要求9至11中任一项所述的方法,其中,所述稀疏矩阵的表示包括第一子级位图和第二子级位图,所述方法还包括:
解压缩所述第一子级位图以确定所述第二级位图的每个部分的每个子块是否包括非零元素;和
响应于子块包含非零元素,解压缩所述第二子级位图以获得所述第二级位图的对应部分的包括非零元素的子块。
13、一种操作单元,包括:
缓冲器,用于存储神经网络中的稀疏矩阵的表示;
稀疏引擎,与所述缓冲器通信耦合;
处理阵列,与所述稀疏引擎通信耦合,所述处理阵列包括使用所述稀疏矩阵执行所述神经网络的电路;
其中,所述稀疏引擎包括执行以下操作的电路:
从所述缓冲器读取所述稀疏矩阵的表示,所述稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;
解压缩所述第一级位图以确定所述稀疏矩阵的每个块是否包括非零元素;
响应于块包括非零元素,使用所述元素数组解压缩所述第二级位图以获得所述稀疏矩阵的包括非零元素的块。
14、根据权利要求13所述的操作单元,其中,所述稀疏引擎包括执行以下操作的电路:
检查所述第一级位图的每个元素,以确定所述稀疏矩阵的对应块是否包含非零元素。
15、根据权利要求13或14所述的操作单元,其中,所述稀疏引擎包括执行以下操作的电路:
以所述第二级位图作为位掩码,使用所述元素数组重建所述稀疏矩阵。
16、根据权利要求13-15中任一项所述的操作单元,其中,所述稀疏矩阵的表示包括第一子级位图和第二子级位图,并且所述稀疏引擎包括执行以下操作的电路:
解压缩所述第一子级位图以确定所述第二级位图的每个部分的每个子块是否包括非零元素;和
响应于子块包括非零元素,解压缩所述第二子级位图以获得所述第二级位图的对应部分的包括非零元素的子块。
17、根据权利要求13-16中任一项所述的操作单元,其中,所述稀疏引擎包括:
第一级解压缩器,包括用于解压缩所述第一级位图的电路;和
第二级解压缩器,与所述第一级解压缩器通信耦合,包括用于解压缩所述第二级位图的电路。
18、根据权利要求13-17中任一项所述的操作单元,其中,所述处理阵列包括多个层,所述多个层中的至少一个层包括使用所述稀疏矩阵执行所述神经网络的电路。
19、一种处理核,包括:
本地存储器;和
操作单元,与所述本地存储器通信耦合,所述操作单元包括:
缓冲器,用于存储神经网络中的稀疏矩阵的表示;
稀疏引擎,与所述缓冲器通信耦合;
处理阵列,与所述稀疏引擎通信耦合,所述处理阵列包括使用所述稀疏矩阵执行所述神经网络的电路;
其中,所述稀疏引擎包括执行以下操作的电路:
从所述缓冲器读取所述稀疏矩阵的表示,所述稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;
解压缩所述第一级位图以确定所述稀疏矩阵的每个块是否包括非零元素;以及
响应于块包括非零元素,使用所述元素数组解压缩所述第二级位图以获得所述稀疏矩阵的包括非零元素的块。
20、根据权利要求19所述的的处理核,其中,所述稀疏引擎包括执行以下操作的电路:
检查所述第一级位图的每个元素,以确定所述稀疏矩阵的对应块是否包含非零元素。
21、根据权利要求19或20所述的处理核,其中,所述稀疏引擎包括执行以下操作的电路:
以所述第二级位图作为位掩码,使用所述元素数组重建所述稀疏矩阵。
22、根据权利要求19至21中任一项所述的处理核,其中,所述稀疏矩阵的表示包括第一子级位图和第二子级位图,并且所述稀疏引擎包括执行以下操作的电路:
解压缩所述第一子级位图以确定所述第二级位图的每个部分的每个子块是否包括非零元素;和
响应于子块包含非零元素,解压缩所述第二子级位图以获得所述第二级位图的对应部分的包含非零元素的子块。
23、根据权利要求19至22中任一项所述的处理核,其中,所述稀疏引擎包括:
第一级解压缩器,包括用于解压缩所述第一级位图的电路;和
第二级解压缩器,与所述第一级解压缩器通信耦合,包括用于解压缩所述第二级位图的电路。
24、根据权利要求19至23中任一项所述的处理核,其中,所述处理阵列包括多个层,所述多个层中的至少一个层包括使用所述稀疏矩阵执行所述神经网络的电路。
25、一种非暂时性的计算机可读存储介质,所述计算机可读存储介质存储一组指令,所述一组指令由一个或多个处理设备执行时,使得操作单元执行一种方法,所述方法包括:
将稀疏矩阵划分为多个块;
确定第一级位图,以指示所述多个块中的每个块是否包括非零元素;
确定第二级位图,以指示包含非零元素的块中的每个元素是否为非零元素;和
形成包括所述稀疏矩阵中的非零元素的元素数组。
26、根据权利要求25所述的计算机可读存储介质,其中,所述稀疏矩阵是稀疏权重矩阵或稀疏激活矩阵,或者所述块是正方形、长方形、立方体、长方体、向量、列、行、滤波器或通道。
27、根据权利要求25或26所述的计算机可读存储介质,其中,所述一组指令可由一个或多个处理设备执行,以使所述操作单元进一步执行:
修剪与所述神经网络相关的矩阵以获得所述稀疏矩阵。
28、根据权利要求25至27中任一项所述的计算机可读存储介质,其中,所述一组指令可由一个或多个处理设备执行,以使所述操作单元进一步执行:
根据压缩比、非零元素分布、稀疏化方法和存储要求中的至少一个,确定所述多个块中的每个块的大小或形式。
29、根据权利要求25至28中任一项所述的计算机可读存储介质,其中,确定所述第一级位图包括:
确定多个元素,每个元素对应于一个块,并指示该块是否包括非零元素。
30、根据权利要求25至29中任一项所述的计算机可读存储介质,其中,所述确定所述第二级位图包括:
对于包含非零元素的块,确定具有多个元素的部分,所述多个元素指示该块的对应元素是否为非零元素;和
组合一个或多个所确定的部分以形成所述第二级位图。
31、根据权利要求25至30中任一项所述的计算机可读存储介质,其中,所述一组指令可由一个或多个处理设备执行,以使所述操作单元进一步执行:
将所述第二级位图的每个部分划分为多个子块;
确定包括多个元素的第一子级位图,以指示所述第二级位图的每个部分的每个子块是否包括非零元素;和
确定包括一个或多个部分的第二子级位图,以指示对于具有非零元素的子块,该子块的每个元素是否为非零元素。
32、根据权利要求25至31中任一项所述的计算机可读存储介质,其中,所述一组指令可由一个或多个处理设备执行,以使所述操作单元进一步执行:
将所述第一级位图、所述第二级位图和所述元素数组中的至少两个相互组合。
33、一种非暂时性的计算机可读存储介质,所述非暂时性的计算机可读存储介质存储一组指令,以使操作单元执行一种方法,所述方法包括:
读取稀疏矩阵的表示,所述表示包括第一级位图、第二级位图和元素数组;
解压缩所述第一级位图以确定所述稀疏矩阵的每个块是否包括非零元素;
响应于块包括非零元素,使用所述元素数组解压缩所述第二级位图以获得所述稀疏矩阵的包括非零元素的块;和
使用所述稀疏矩阵执行所述神经网络。
34、根据权利要求33所述的计算机可读存储介质,其中,解压缩所述第一级位图包括:
检查所述第一级位图的每个元素,以确定所述稀疏矩阵的对应块是否包含非零元素。
35、根据权利要求33或34所述的计算机可读存储介质,其中,解压缩所述第二级位图包括:
以所述第二级位图作为位掩码,使用所述元素数组重建所述稀疏矩阵。
36、根据权利要求33至35中任一项所述的计算机可读存储介质,其中,所述表示包括第一子级位图和第二子级位图,并且所述一组指令可由一个或多个处理设备执行,以使所述操作单元进一步执行:
解压缩所述第一子级位图以确定所述第二级位图的每个部分的每个子块是否包括非零元素;和
响应于子块包含非零元素,解压缩所述第二子级位图以获得所述第二级位图的对应部分的包括非零元素的子块。
上文在方法的步骤或过程的上下文中描述了各种示例性的实施例,一方面,这些方法的步骤或过程可以由包含在计算机可读介质中的计算机程序产品来实现,该计算机程序产品包括由网络环境中的计算机执行的诸如程序代码的计算机可执行指令。计算机可读介质可以包括可移动存储设备和不可移动存储设备,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、光盘、数字通用盘(DVD)等。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。计算机可执行指令、相关数据结构和程序模块表示用于执行本文所公开的方法的步骤的程序代码的示例。这种可执行指令或相关数据结构的特定序列表示用于实现此类步骤或过程中描述的功能的相应动作的示例。
本公开为了说明的目的提供上述描述。它不是穷尽性的,并且不限于所公开的精确形式或实施例。通过考虑本公开的实施例的说明书和实践,对实施例的修改和适应性改编将是显而易见的。例如,所描述的实现包括硬件,但是与本公开一致的系统和方法可以用硬件和软件来实现。此外,虽然某些组件已经被描述为彼此耦合,但这些组件可以彼此集成或以任何合适的方式部署。
此外,虽然这里已经描述了说明性的实施例,但本公开的范围包括在本公开的基础上具有等效元素、修改、省略、组合(例如,将不同实施例的各个方面组合)、适应性改编或改变的任何和所有实施例。权利要求中的元素将基于权利要求中使用的语言广义地解释,并且不限于在本说明书中或申请过程中描述的示例,这些示例将被解释为非排他性的。此外,可以以任何方式修改所公开的方法的步骤,包括重新排序步骤和/或插入或删除步骤。
本公开的特征和优点基于详细说明书是显而易见的,因此,所附权利要求书旨在覆盖落入本公开的实质和范围内的所有系统和方法。如本文所用,不定冠词“a”和“an”表示“一个或多个”。此外,由于通过研究本公开,容易发生许多修改和变化,因此不希望将本公开限制于所示和所描述的确切结构和操作上,因此,所有适当的修改和等同物均落入本公开的保护范围之内。
如本文所用,除非另有特别说明,术语“或”包括所有可能的组合,除非在不可行的情况下。例如,如果声明组件可以包括A或B,则除非另有具体说明或不可行,否则组件可以包括A、B、或A和B。作为第二示例,如果声明组件可以包括A、B或C,则除非另有具体说明或不可行,否则组件可以包括A、B、C、A和B、A和C、B和C、或A和B和C。
从考虑本文公开的实施例的说明书和实践来看,其他实施例将是显而易见的。本说明书和示例仅被视为示例,所公开的实施例的真实范围和实质由权利要求书指示。
Claims (20)
1.一种操作单元,包括:
缓冲器,用于存储神经网络中的稀疏矩阵的表示;
稀疏引擎,与所述缓冲器通信耦合;
处理阵列,与所述稀疏引擎通信耦合,所述处理阵列包括使用所述稀疏矩阵执行所述神经网络的电路;
其中,所述稀疏引擎包括执行以下操作的电路:
从所述缓冲器读取所述稀疏矩阵的表示,所述稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;
解压缩所述第一级位图以确定所述稀疏矩阵的每个块是否包括非零元素;以及
响应于块包括非零元素,使用所述元素数组解压缩所述第二级位图以获得所述稀疏矩阵的包括非零元素的块。
2.根据权利要求1所述的操作单元,其中,所述稀疏引擎包括执行以下操作的电路:
检查所述第一级位图的每个元素,以确定所述稀疏矩阵的对应块是否包含非零元素。
3.根据权利要求1所述的操作单元,其中,所述稀疏引擎包括执行以下操作的电路:
以所述第二级位图作为位掩码,使用所述元素数组重建所述稀疏矩阵。
4.根据权利要求1所述的操作单元,其中,所述稀疏矩阵的表示包括第一子级位图和第二子级位图,并且所述稀疏引擎包括执行以下操作的电路:
解压缩所述第一子级位图以确定所述第二级位图的每个部分的每个子块是否包括非零元素;和
响应于子块包括非零元素,解压缩所述第二子级位图以获得所述第二级位图的对应部分的包括非零元素的子块。
5.根据权利要求1所述的操作单元,其中,所述稀疏引擎包括:
第一级解压缩器,包括用于解压缩所述第一级位图的电路;和
第二级解压缩器,与所述第一级解压缩器通信耦合,包括用于解压缩所述第二级位图的电路。
6.根据权利要求1所述的操作单元,其中,所述处理阵列包括多个层,所述多个层中的至少一个层包括使用所述稀疏矩阵执行所述神经网络的电路。
7.一种处理核,包括:
本地存储器;和
操作单元,与所述本地存储器通信耦合,所述操作单元包括:
缓冲器,用于存储神经网络中的稀疏矩阵的表示;
稀疏引擎,与所述缓冲器通信耦合;
处理阵列,与所述稀疏引擎通信耦合,所述处理阵列包括使用所述稀疏矩阵执行所述神经网络的电路;
其中,所述稀疏引擎包括执行以下操作的电路:
从所述缓冲器读取所述稀疏矩阵的表示,所述稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;
解压缩所述第一级位图以确定所述稀疏矩阵的每个块是否包括非零元素;以及
响应于块包括非零元素,使用所述元素数组解压缩所述第二级位图以获得所述稀疏矩阵的包括非零元素的块。
8.根据权利要求7所述的处理核,其中,所述稀疏引擎包括执行以下操作的电路:
检查所述第一级位图的每个元素,以确定所述稀疏矩阵的对应块是否包含非零元素。
9.根据权利要求7所述的处理核,其中,所述稀疏引擎包括执行以下操作的电路:
以所述第二级位图作为位掩码,使用所述元素数组重建所述稀疏矩阵。
10.根据权利要求7所述的处理核,其中,所述稀疏矩阵的表示包括第一子级位图和第二子级位图,并且所述稀疏引擎包括执行以下操作的电路:
解压缩所述第一子级位图以确定所述第二级位图的每个部分的每个子块是否包括非零元素;和
响应于子块包括非零元素,解压缩所述第二子级位图以获得所述第二级位图的对应部分的包括非零元素的子块。
11.根据权利要求7所述的处理核,其中,所述稀疏引擎包括:
第一级解压缩器,包括用于解压缩所述第一级位图的电路;和
第二级解压缩器,与所述第一级解压缩器通信耦合,包括用于解压缩所述第二级位图的电路。
12.根据权利要求7所述的处理核,其中,所述处理阵列包括多个层,所述多个层中的至少一个层包括使用所述稀疏矩阵执行所述神经网络的电路。
13.一种执行神经网络的方法,包括:
读取稀疏矩阵的表示,所述稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;
解压缩所述第一级位图以确定所述稀疏矩阵的每个块是否包括非零元素;
响应于块包括非零元素,使用所述元素数组解压缩所述第二级位图以获得所述稀疏矩阵的包括非零元素的块;和
使用所述稀疏矩阵执行所述神经网络。
14.根据权利要求13所述的方法,其中,所述解压缩所述第一级位图包括:
检查所述第一级位图的每个元素,以确定所述稀疏矩阵的对应块是否包含非零元素。
15.根据权利要求13所述的方法,其中,所述解压缩所述第二级位图包括:
以所述第二级位图作为位掩码,使用所述元素数组重建所述稀疏矩阵。
16.根据权利要求13所述的方法,其中,所述稀疏矩阵的表示包括第一子级位图和第二子级位图,所述方法还包括:
解压缩所述第一子级位图以确定所述第二级位图的每个部分的每个子块是否包括非零元素;和
响应于子块包括非零元素,解压缩所述第二子级位图以获得所述第二级位图的对应部分的包括非零元素的子块。
17.一种非暂时性的计算机可读存储介质,所述计算机可读存储介质存储一组指令,所述指令由一个或多个处理设备执行时,使得操作单元执行一种方法,所述方法包括:
读取神经网络中的稀疏矩阵的表示,所述稀疏矩阵的表示包括第一级位图、第二级位图和元素数组;
解压缩所述第一级位图以确定所述稀疏矩阵的每个块是否包括非零元素;
响应于块包括非零元素,使用所述元素数组解压缩所述第二级位图以获得所述稀疏矩阵的包括非零元素的块;和
使用所述稀疏矩阵执行所述神经网络。
18.根据权利要求17所述的计算机可读存储介质,其中,所述一组指令由一个或多个处理设备执行,使得所述操作单元执行:
检查所述第一级位图的每个元素,以确定所述稀疏矩阵的对应块是否包含非零元素。
19.根据权利要求17所述的计算机可读存储介质,其中,所述一组指令由一个或多个处理设备执行时,使得所述操作单元执行:
以所述第二级位图作为位掩码,使用所述元素数组重建所述稀疏矩阵。
20.根据权利要求17所述的计算机可读存储介质,其中,所述稀疏矩阵的表示包括第一子级位图和第二子级位图,所述一组指令由一个或多个处理设备执行时,使得所述操作单元执行:
解压缩所述第一子级位图以确定所述第二级位图的每个部分的每个子块是否包括非零元素;和
响应于子块包括非零元素,解压缩所述第二子级位图以获得所述第二级位图的对应部分的包括非零元素的子块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/783,069 US11586601B2 (en) | 2020-02-05 | 2020-02-05 | Apparatus and method for representation of a sparse matrix in a neural network |
US16/783,069 | 2020-02-05 | ||
PCT/US2021/014314 WO2021158374A1 (en) | 2020-02-05 | 2021-01-21 | Apparatus and method for representation of a sparse matrix in a neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115066692A true CN115066692A (zh) | 2022-09-16 |
Family
ID=77061964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180012162.5A Pending CN115066692A (zh) | 2020-02-05 | 2021-01-21 | 用于表示神经网络中的稀疏矩阵的装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11586601B2 (zh) |
CN (1) | CN115066692A (zh) |
WO (1) | WO2021158374A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11804851B2 (en) * | 2020-03-27 | 2023-10-31 | Intel Corporation | Methods, systems, articles of manufacture, and apparatus to decode zero-value-compression data vectors |
CN111798363B (zh) * | 2020-07-06 | 2024-06-04 | 格兰菲智能科技有限公司 | 图形处理器 |
US20220101086A1 (en) * | 2020-09-30 | 2022-03-31 | Stmicroelectronics S.R.L. | Reconfigurable hardware buffer in a neural networks accelerator framework |
US20220138579A1 (en) * | 2020-11-02 | 2022-05-05 | International Business Machines Corporation | Weight repetition on rpu crossbar arrays |
US20220164663A1 (en) * | 2020-11-24 | 2022-05-26 | Arm Limited | Activation Compression Method for Deep Learning Acceleration |
CN116304509A (zh) * | 2021-12-20 | 2023-06-23 | 华为技术有限公司 | 一种矩阵计算方法、芯片以及相关设备 |
US11720252B1 (en) * | 2022-03-04 | 2023-08-08 | Microsoft Technology Licensing, Llc | Method and apparatus for compressing and decompressing sparse data sets |
US11942970B2 (en) | 2022-03-04 | 2024-03-26 | Microsoft Technology Licensing, Llc | Compression circuits and methods using tree based encoding of bit masks |
US20240048152A1 (en) * | 2022-08-03 | 2024-02-08 | Arm Limited | Weight processing for a neural network |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPP702498A0 (en) * | 1998-11-09 | 1998-12-03 | Silverbrook Research Pty Ltd | Image creation method and apparatus (ART77) |
US8775495B2 (en) * | 2006-02-13 | 2014-07-08 | Indiana University Research And Technology | Compression system and method for accelerating sparse matrix computations |
GB2447494A (en) * | 2007-03-15 | 2008-09-17 | Linear Algebra Technologies Lt | A method and circuit for compressing data using a bitmap to identify the location of data values |
GB2537094B (en) * | 2015-02-27 | 2019-02-20 | Sheffield Hallam Univ | Image data compression and decompression |
US10360163B2 (en) * | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US11068780B2 (en) * | 2017-04-01 | 2021-07-20 | Intel Corporation | Technologies for scaling deep learning training |
US10572568B2 (en) * | 2018-03-28 | 2020-02-25 | Intel Corporation | Accelerator for sparse-dense matrix multiplication |
EP3735658A1 (en) * | 2018-07-12 | 2020-11-11 | Huawei Technologies Co. Ltd. | Generating a compressed representation of a neural network with proficient inference speed and power consumption |
SG11202107290QA (en) * | 2019-03-15 | 2021-09-29 | Intel Corp | Sparse optimizations for a matrix accelerator architecture |
US11127167B2 (en) * | 2019-04-29 | 2021-09-21 | Nvidia Corporation | Efficient matrix format suitable for neural networks |
US11195095B2 (en) * | 2019-08-08 | 2021-12-07 | Neuralmagic Inc. | System and method of accelerating execution of a neural network |
US11763156B2 (en) * | 2019-11-15 | 2023-09-19 | Microsoft Technology Licensing, Llc | Neural network compression based on bank-balanced sparsity |
US11663746B2 (en) * | 2019-11-15 | 2023-05-30 | Intel Corporation | Systolic arithmetic on sparse data |
US11127108B2 (en) * | 2019-12-11 | 2021-09-21 | Intel Corporation | Sparse matrix optimization mechanism |
US20210209450A1 (en) * | 2020-01-03 | 2021-07-08 | International Business Machines Corporation | Compressed weight distribution in networks of neural processors |
-
2020
- 2020-02-05 US US16/783,069 patent/US11586601B2/en active Active
-
2021
- 2021-01-21 WO PCT/US2021/014314 patent/WO2021158374A1/en active Application Filing
- 2021-01-21 CN CN202180012162.5A patent/CN115066692A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021158374A1 (en) | 2021-08-12 |
US20210240684A1 (en) | 2021-08-05 |
US11586601B2 (en) | 2023-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11586601B2 (en) | Apparatus and method for representation of a sparse matrix in a neural network | |
US11127167B2 (en) | Efficient matrix format suitable for neural networks | |
US20210065005A1 (en) | Systems and methods for providing vector-wise sparsity in a neural network | |
US20210264220A1 (en) | Method and system for updating embedding tables for machine learning models | |
US11500811B2 (en) | Apparatuses and methods for map reduce | |
US12008475B2 (en) | Transposed sparse matrix multiply by dense matrix for neural network training | |
CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
US11921814B2 (en) | Method and device for matrix multiplication optimization using vector registers | |
US20210319289A1 (en) | Frequency domain neural network accelerator | |
US20220076095A1 (en) | Multi-level sparse neural networks with dynamic rerouting | |
US11948069B2 (en) | Compression of neural network activation data | |
CN115443468A (zh) | 具有摄像头接口的深度学习加速器及随机存取存储器 | |
US11562217B2 (en) | Apparatuses and methods for approximating nonlinear function | |
US10845407B2 (en) | Scalable infield scan coverage for multi-chip module for functional safety mission application | |
JP2023519565A (ja) | 機械学習ジョブ中の改善されたメモリ圧縮転送のためのスパース性に基づく特徴の再順序付け | |
Isik et al. | An energy-efficient reconfigurable autoencoder implementation on fpga | |
US11409839B2 (en) | Programmable and hierarchical control of execution of GEMM operation on accelerator | |
WO2022047802A1 (en) | Processing-in-memory device and data processing method thereof | |
WO2021138842A1 (en) | Methods and apparatuses for processing neural network | |
US20220067509A1 (en) | System and method for learning from partial compressed representation | |
CN113077042B (zh) | 卷积神经网络的数据重用与高效处理方法 | |
US20210357730A1 (en) | Multi-size convolutional layer background | |
CN116997909A (zh) | 稀疏机器学习加速 | |
US20210209462A1 (en) | Method and system for processing a neural network | |
KR20220049325A (ko) | 가속기 및 이를 포함한 전자 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |