CN114341825A - 用于在神经网络中提供向量稀疏化的方法及*** - Google Patents
用于在神经网络中提供向量稀疏化的方法及*** Download PDFInfo
- Publication number
- CN114341825A CN114341825A CN202080061247.8A CN202080061247A CN114341825A CN 114341825 A CN114341825 A CN 114341825A CN 202080061247 A CN202080061247 A CN 202080061247A CN 114341825 A CN114341825 A CN 114341825A
- Authority
- CN
- China
- Prior art keywords
- matrix
- neural network
- vectors
- processor
- vector
- 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
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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本公开涉及一种用于在神经网络中提供向量稀疏化的方法及***。在一些实施例中,用于在神经网络中提供向量稀疏性的示例性方法包括:将与神经网络相关联的矩阵划分为多个向量;从所述多个向量中选择非零元素的第一子集以形成剪枝矩阵;以及输出剪枝矩阵,并使用所述剪枝矩阵执行神经网络。这种方法能够解决不规则的工作负载是执行现有的大多数的神经网络的瓶颈。
Description
本公开要求申请号为62/893,768,于2019年8月29日提交的美国临时申请的优先权,全文通过引用并入本文。
背景技术
现今的神经网络往往包含多个节点和多个层,然而,这降低了执行效率并增加了延迟。因此,对神经网络提出输入稀疏性、输出稀疏性、权重稀疏性或以上的组合,以提高执行效率并减少延迟。的确,人工神经网络的稀疏性能更准确反映人脑中的神经元是如何处理信息的。
然而,现有技术中,人工神经网络的稀疏性通常提供总体上较差的加速率(例如,稀疏神经网络的不规则的工作负载是执行现有的大多数的神经网络的瓶颈)或缺乏准确性,从而诸如中央处理器(CPU)或图形处理单元(GPU)的硬件仍然保持低效。
发明内容
在一些实施例中,一种示例性的用于在神经网络中提供向量稀疏化的方法,包括:将与神经网络相关联的矩阵划分为多个向量;从多个向量中选择非零元素的第一子集以形成剪枝矩阵;以及输出剪枝矩阵,并使用所述剪枝矩阵执行所述神经网络。
在一些实施例中,一种示例性的用于在神经网络中提供向量稀疏化的***,包括:至少一个存储器,用于存储指令;以及至少一个处理器,用于执行指令,以使***执行:将与神经网络相关联的矩阵划分为多个向量;从多个向量中选择非零元素的第一子集以形成剪枝矩阵;以及输出剪枝矩阵,并使用所述剪枝矩阵执行所述神经网络。
在一些实施例中,一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由至少一个处理器执行,以使计算机执行一种用于在神经网络中提供向量稀疏化的方法,该方法包括:将与神经网络相关联的矩阵划分为多个向量;从多个向量中选择非零元素的第一子集以形成剪枝矩阵;以及输出剪枝矩阵,并使用所述剪枝矩阵执行所述神经网络。
在一些实施例中,一种示例性的用于执行神经网络的处理器,包括:存储器,用于存储压缩向量中的各个元素在原始向量中的相关偏移量;和至少一个核,用于解码第一多个压缩向量中的各个元素的偏移量,并基于解码得到的偏移量执行第一操作数和第二操作数的矩阵乘法,其中,第一操作数包括第一多个压缩向量。
本公开的附加特征和优点的一部分将在以下详细描述中阐明,另一部分可从描述中可显而易见地认识到或通过实践本公开学习到。本公开的这些特征和优点可通过所附权利要求中特别指出的元素和组合来实现和获得。
应当理解,前面的概括描述和后续的详细描述仅是示例性和说明性的,而不是用于限制本公开实施例。
附图说明
构成说明书一部分的附图和说明书描述一起阐明了若干个实施例,并与说明书描述一起解释了本公开实施例的原理和特征。在附图中:
图1是根据本公开实施例的神经网络的示意图;
图2A是根据本公开实施例的一示例性的神经网络加速器架构的示意图;
图2B是根据本公开实施例的一示例性的包括神经网络加速器的云***的示意图;
图3A是对矩阵进行通用稀疏化(generic sparsifying)的示意图;
图3B是对矩阵进行统一稀疏化(unified sparsifying)的示意图;
图4是根据本公开实施例的矩阵的向量划分的示意图;
图5是根据本公开实施例的一示例性的矩阵编码的示意图;
图6A是根据本公开实施例的一示例性的用于在神经网络中提供向量稀疏化(vector-wise sparsity in a neural network)的方法的流程图;
图6B是根据本公开实施例的另一示例性的用于在神经网络中提供向量稀疏化(vector-wise sparsity in a neural network)的方法的流程图;
图7是根据本公开实施例的一示例性的向量矩阵乘法的示意图;
图8是根据本公开实施例的一示例性的处理器的示意图;
图9是根据本公开实施例的将矩阵乘法映射到同一线程束中的工作元组(worktuples in a warp)的示意图;
图10是根据本公开实施例的一示例性的现有的稠密模式和向量稀疏模式下由线程组对元素进行处理的示意图;
图11是根据本公开实施例的一示例性的处理器架构的示意图;
图12是根据本公开实施例的一示例性的基于线程束的稀疏矩阵乘法(SWMM,Sparse Warp Matrix Multiply)和基于线程束的稀疏矩阵乘法累积(SWMMA,Sparse WarpMatrix Multiply Accumulate)的执行流的示意图;
图13是根据本公开实施例的卷积神经网络(CNN)负载中的权重矩阵中的准确度与稀疏度的示意图;
图14是根据本公开实施例的递归神经网络(RNN)负载的权重矩阵中的双语评估替补(BLEU)分数与稀疏度的示意图;
图15是根据本公开实施例的在基于稠密神经网络的统一计算设备架构(CUDA)的核上归一化加速的示意图。
具体实施方式
现在将参考示例性的实施例进行详细描述,一些示例在附图中说明。下面的描述引用的附图中,相同数字在不同附图中表示相同或类似的元素,除非另有说明。下文列出的示例性实施例的实现并不代表与本公开一致的所有实现,相反,它们仅仅是所附权利要求中的与本公开相关的方面一致的装置、***和方法。
现有的权重稀疏化技术包括通用稀疏化和统一稀疏化。通用稀疏化将权重矩阵中除绝对值最大的元素的四个元素(或任何其他预定数目的元素)的所有元素归为零。然而,在通用稀疏后的神经网络中,工作负载可能是不规则的,因为非零元素的位置可从权重矩阵内的任何地方选择。统一稀疏化基于选定空间的L1(级别1)或L2(级别2)标准(norm)将权重矩阵中不在一个或多个选定空间内的所有元素归为零。不同的统一稀疏化技术具有不同的空间约束,例如,列级、行级、块级、过滤器级、通道级、或类似的空间约束。然而,统一稀疏化的输出准确性可能显著降低。
此外,广义矩阵乘法(GEMM)具有持续的先进性,因为它是许多神经网络的基本基元(primitives)。而且已开发的张量核可作为16×16矩阵乘法运算的硬件加速器。不幸的是,由于张量核只关注稠密矩阵乘法的加速,因此稀疏GEMM不能利用这个硬件加速器。
本公开的一些实施例涉及一种用于在神经网络中提供向量稀疏化的***及方法。此外,本公开的一些实施例涉及用于执行神经网络的处理器。有利的是,示例性实施例可以通过减少执行神经网络所需的数学运算和内存传输来提高速度和功率效率。此外,本公开实施例可以在任何处理器上使用,例如中央处理器(CPU)或任何其他通用或专用的处理电路。在一些实施例中,通过使用图形处理单元(GPU)来实现实施例可进一步提高速度。
本文公开的装置、***和方法可用于各种神经网络架构,如深度神经网络(DNN),卷积神经网络(CNN)、递归神经网络(RNN)等,并且可以是各种配置,例如CPU、GPU、神经网络处理单元(NPU)、现场可编程门阵列(FPGA)、张量处理单元(TPU)、专用集成电路(ASIC)、等等。
图1是神经网络(NN)100的示意图。如图1所示,神经网络100可以包括输入层120,输入层120用于接收诸如输入110-1至输入110-m的输入。输入可以包括由神经网络100处理的图像、文本或任何其他结构化或非结构化数据。在一些实施例中,神经网络100可以同时接受多个输入。例如,在图1中,神经网络100可以同时接收多达m个输入。附加地或替代地,输入层120可以快速且连续地接收多达m个输入,例如,输入110-1是输入层120在一个周期内接收的输入,第二输入是输入层120在第二周期接收的输入,在第二周期内,输入层120将来自输入110-1的数据推送到第一隐藏层,诸如此类。任何数目的输入可以是同时输入、快速且连续的输入,或者类似输入。
输入层120可包括一个或多个节点,例如,节点120-1、节点120-2、…、节点120-a。每个节点可以将激活函数应用于相应的输入(例如,输入110-1至输入110-m中的一个或多个)并通过与节点相关联的特定权重对激活函数的输出进行加权。激活函数可包括Heaviside阶跃函数、高斯函数、多重二次函数、反多重二次函数、sigmoidal函数、或类似函数。权重可以包括介于0.0和1.0之间的正值,或任何其他允许一个层中的一些节点的输出比该层中的其他节点的输出规模更大或更小的数值。
如图1进一步描述的,神经网络100可以包括一个或多个隐藏层,例如隐藏层130-1至隐藏层130-n。每个隐藏层可以包括一个或多个节点。例如,在图1中,隐藏层130-1包括节点130-1-1、节点130-1-2、节点130-1-3、…、节点130-1-b,并且隐藏层130-n包括节点130-n-1、节点130-n-2、节点130-n-3、…、节点130-n-c。与输入层120的节点类似,隐藏层的节点可以将激活函数应用于前一层的连接节点的输出,并通过与节点相关联的特定权重对激活函数的输出进行加权。
如图1中进一步描述的,神经网络100可以包括用于完成输出(例如输出150-1、输出150-2、…、输出150-d)的输出层140。输出层140可包括一个或多个节点,例如,节点140-1、节点140-2、…、节点140-d。与输入层120和隐藏层的节点类似,输出层140的节点可以将激活函数应用于前一层的连接节点的输出,并通过与节点相关联的特定权重对激活函数的输出进行加权。
尽管在图1中描述全连接,但神经网络的各个层100可以使用任何连接方案。例如,可以使用卷积方案、稀疏连接方案或类似连接方案连接一个或多个层(例如,输入层120、隐藏层130-1、…、隐藏层130-n、输出层140等)。这样的实施例在当前层和前一层之间使用比图1所示更少的连接。
此外,尽管在图1中描述前馈网络,但神经网络100可以另外或替代地使用反向传播(例如,通过使用长-短记忆节点或类似节点)。因此,尽管神经网络100被描绘为类似于卷积神经网络(CNN),但神经网络100可以包括递归神经网络(RNN)或任何其他神经网络。
图2A是根据本公开实施例的一示例性的神经网络加速器架构的示意图。在本公开的上下文中,神经网络加速器也可以被称为机器学习加速器或深度学习加速器。在一些实施例中,加速器架构200可称为NPU架构200。如图2A所示,加速器架构200包括多个核202、命令处理器204、直接存储器访问(DMA)单元208、联合测试动作组(JTAG)/测试访问端(TAP)控制器210,***设备接口212、总线214等。
可以理解,核202可以基于通信数据执行算法操作。核202可包括一个或多个处理元件,处理元件可包括包含在一个或多个处理单元中的单指令多数据(SIMD)架构,该一个或多个处理单元被配置为基于从命令处理器204接收到的命令执行一个或多个操作(例如,乘法、加法、乘法累加(MAC)等)。为了在通信数据包上执行操作,核202可以包括一个或多个处理元件,用于处理数据包中的信息。每个处理元件可以包括任意数量的处理单元。根据本公开实施例,加速器架构200可以包括多个核202,例如,四个核。在一些实施例中,多个核202可以彼此通信耦接。例如,多个核202可以与一个单向环形总线耦接,并可支持用于大型神经网络模型的高效流水线。
命令处理器204可以与主机单元220交互并将相关命令和数据传送给相应的核202。在一些实施例中,命令处理器204可以在内核模式驱动程序(KMD)的监督下与主机单元交互。在一些实施例中,命令处理器204可以修改给每个核202的相关命令,从而各个核202可以尽可能多地并行工作。修改后的命令可以存储在指令缓冲器中。在一些实施例中,命令处理器204可以被配置成协调一个或多个核202并行执行。
DMA单元208可以协助在主机存储器221和加速器架构200之间传递数据。例如,DMA单元208可以协助从主机存储器221加载数据或指令到核202中的本地存储器。DMA单元208还可以协助在多个加速器之间传递数据。DMA单元208可以允许片外设备访问片内和片外的存储器而不会导致主机CPU中断。另外,DMA单元208可以协助在加速器架构200的组件之间传递数据。例如,DMA单元208可以协助在多个核202之间或在每个核的内部传递数据。因此,DMA单元208还可以生成存储器地址和启动内存读写周期。DMA单元208还可以包含多个可由一个或多个处理器写入和读取的硬件寄存器,包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器和其他类型的寄存器。这些寄存器可以指定源、目标、传输方向(I/O设备读取或写入I/O设备)、传输单元的大小和在一个脉冲中传输的字节数的某种组合。可以理解,加速器架构200可以包括第二DMA单元,用于在其他加速器架构之间传输数据以允许多个加速器架构之间直接通信而不涉及主机CPU。
JTAG/TAP控制器210可以指定专用调试端口来实现串行通信接口(例如JTAG接口),从而低开销地访问加速器,且无需对***地址和数据总线进行外部直接访问。JTAG/TAP控制器210还可以具有片上测试访问接口(例如,TAP接口),该接口实现访问一组测试寄存器的协议,这些测试寄存器呈现各个部分的芯片逻辑电平水平和设备能力。
***接口212(例如PCIe接口)如果存在,则通常用作芯片间总线,以提供加速器和其他设备之间的通信。
总线214(例如I2C总线)包括芯片内总线和芯片间总线。芯片内总线按照***架构的要求将所有内部组件相互连接,但不是所有组件都与其他任何一个组件连接,每个组件连接一些其需要与之通信的其他组件。芯片间总线连接加速器与其他设备,如片外存储器或者***设备。例如,总线214可以提供跨核的高速通信,并且也可以将核202与其他单元连接,例如片外存储器或***设备。通常,如果存在***接口212(例如,芯片间总线),则总线214仅与芯片内总线有关,尽管在某些实现中,它可能仍然涉及一些专用总线间通信。
加速器架构200还可以与主机单元220通信。主机单元220可以是一个或多个处理单元(例如,X86中央处理器)。如图2A所示,主机单元220可以与主机存储器221相关联。在一些实施例中,主机存储器221可以是与主机单元220相关联的集成存储器或外部存储器。在一些实施例中,主机存储器221可以包括主机盘,主机盘是外部存储器,用于为主机单元220提供附加存储器。主机存储器221可以是双倍数据速率同步动态随机存取存储器(例如DDRSDRAM)或类似存储器。主机存储器221可以用于存储大量数据,与集成在加速器芯片内的片上存储器相比,其存取速度较慢,因此充当更高级别的缓存。存储在主机存储器221中的数据可以被传送用于执行神经网络模型的加速器架构200。
在一些实施例中,具有主机单元220和主机存储器221的主机***可以包括编译器(未示出)。编译器是将以一种编程语言编写的计算机代码转换为用于加速器架构200的指令来创建可执行程序的程序或计算机软件。在机器学习的应用程序中,编译器可以执行各种操作,例如,预处理、词法分析、解析、语义分析、输入程序到中间表示的转换、神经网络的初始化、代码优化和代码生成,或以上组合。例如,编译器可以编译神经网络以生成静态参数,例如神经元之间的连接和神经元的权重。
在一些实施例中,包括编译器的主机***可以向加速器架构200推送一个或多个命令。如上所述,这些命令可以由加速器架构200的命令处理器204进一步处理、临时存储在加速器架构200的指令缓冲器(未示出)中,并分配给相应的一个或多个核(例如,图2A中的核202)或处理元件。这些命令中的一些命令可以指示DMA单元(例如,图2A的DMA单元208)从主机存储器(例如,图2A的主机存储器221)加载指令和数据到加速器架构200。然后,将加载的指令分发给已分配相应的任务的每个核(例如,图2A的核202),这些一个或多个核处理这些指令。
可以理解,由核202接收的前面几个指令可以指示核202将来自主机存储器221的数据加载/存储到核内的一个或多个本地存储器中(例如,该核的一个本地存储器)。每个核202然后可以启动指令流水线,指令流水线包括从指令缓冲器中提取指令(例如,经由序列器),解码指令(例如,经由图2A的DMA单元208),生成本地存储器地址(例如,对应于操作数),读取源数据,执行或加载/存储操作,然后写回结果。
根据一些实施例,加速器架构200还可以包括具有存储器块(例如,4块8GB第二代高带宽内存(HBM2))的全局存储器(未示出),其作为主存储器。在一些实施例中,全局存储器可以存储通过DMA单元208从主机存储器221得到的指令和数据。然后可以将指令分发给已分配了相应任务的每个核的指令缓冲器,每个核可以相应地处理这些指令。
在一些实施例中,加速器架构200可进一步包括存储器控制器(未示出),用于管理从全局存储器的特定内存块(例如,HBM2)读取或写入数据。例如,内存控制器可以管理从另一个加速器的核(例如,来自DMA单元208或对应于另一加速器的DMA单元)或从核202(例如,来自核202的本地存储器)读写数据。应该理解,在加速器架构200中可以设置多个存储器控制器。例如,在全局存储器中,每个存储器块(例如,HBM2)都有一个存储器控制器。
存储器控制器可以生成存储器地址并启动内存读取或写入周期。内存控制器可以包含若干个硬件寄存器,这些硬件寄存器可以由一个或多个处理器写入和读取。这些寄存器包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器、和其他类型的寄存器。这些寄存器可以指定源、目标、传输方向(从输入/输出设备读取或写入输入/输出设备)、传输单元的大小、在一个脉冲要传输的字节数,或存储器控制器的其他典型特征。
可以理解,图2A的加速器架构200可用于各种神经网络,例如DNN(例如CNN、RNN等)。此外,在一些实施例中,可以针对各种处理架构进行配置,例如,NPU、GPU、FPGA、TPU、ASIC、和任何其他类型的异构加速器处理单元(HAPU)、等等。
图2B是根据本公开实施例的一示例性的包括神经网络加速器200的云***的示意图。如图2B所示,云***230可以提供具有人工智能(AI)能力的云服务,并且可以包括多个计算服务器(例如,232和234)。在一些实施例中,计算服务器232可以例如包括图2A所示的神经网络架构200。为了简单和清晰,图2B中以简化的方式示出了神经网络加速器架构200。
借助神经网络加速器架构200,云***230可提供图像识别、面部识别、翻译、3D建模等多个扩展AI能力。可以理解,神经网络加速器架构200可以以其他形式部署到计算设备。例如,神经网络加速器架构200还可以集成在诸如智能手机、平板电脑和可穿戴设备的计算设备中。
此外,虽然神经网络加速器架构如图2A-2B所示,但可以理解的是,可以使用任何提供并行计算能力的加速器。
图3A用于表示与神经网络相关联的一矩阵(例如,权重矩阵)301的通用稀疏化300。例如,通用稀疏化300可以将矩阵301缩减为稀疏矩阵305,以减少执行神经网络所需的计算量。尽管矩阵301被描述为4×4矩阵,但矩阵301可以是任何大小。
因此,如图3A所示,通用稀疏化300可以包括:从矩阵301中选择一个或多个元素,例如元素303a、303b、303c和303d。尽管被描述为选择四个元素,但通用稀疏化300可以使用任何预定数量的元素。考虑到元素303a、303b、303c和303d具有四个最大的绝对值,因此选择了元素303a、303b、303c和303d。如稀疏矩阵305所示,通用稀疏化300还可以包括将非选定的元素归零。因此如图3A所示,通用稀疏化300对矩阵301实施了75%的稀疏化。此外,稀疏度可以取决于预定的元素数量和矩阵301的大小。
图3B用于表示与神经网络相关联的一矩阵(例如,权重矩阵)351的统一稀疏化350。例如,统一稀疏化350可以将矩阵351缩减为稀疏矩阵355,以减少执行神经网络所需的计算量。尽管矩阵351被描述为4×4矩阵,但矩阵351可以是任何大小。
因此,如图3B所示,统一稀疏化350可以包括:从矩阵351中选择一个或多个元素,例如元素353a、353b、353c和353d。尽管图上描述为选择四个元素,但统一稀疏化350可以使用任何预定数量的元素。元素353a、353b、353c和353d可由于其在所选列内而被选择。尽管描述为选择一列,但统一稀疏化350可以选择任何预定数量的空间,例如列、行、块、过滤器、通道等。如稀疏矩阵355所示,统一稀疏化350还可以包括将非选定的元素归零。因此,如图3B所示,统一稀疏化350对矩阵351实施了75%的权重稀疏。此外,稀疏度可取决于预定的列数和矩阵351的大小。
然而,通用稀疏化300可能无法对不归零的元素选择提供空间预测性,因为具有最大绝对值的元素可能分布在矩阵301中的任何位置。因此,用于稀疏矩阵乘法的软件/硬件必须处理通用稀疏化的矩阵中选定元素的位置的随机性,这会导致巨大的性能开销。因而,对于大型矩阵301,跟踪简化矩阵301与相应稀疏输入的乘法需要大量内存。然而,统一稀疏化350可能无法在神经网络中提供可接受的精准度水平。本公开的一些实施例实现与统一稀疏化350类似的加速同时却没有类似的精准度损失。例如,本公开的一些实施例可以将矩阵划划分为向量(如图4所示),并在每个向量上强制稀疏(如图5所示)。
图4是根据本公开实施例的矩阵401的向量划分400的示意图。矩阵401与神经网络相关,例如,矩阵401可以是权重矩阵、输入矩阵、输出矩阵或类似矩阵。例如,向量划分400可将矩阵401分为大小为L的向量(“L维向量”)。矩阵401被描绘为M×N矩阵。在一些实施例中,如果M×N矩阵没有均匀地划分为L维向量,向量划分400可以包括用零填充一个或多个残差向量,使得每个向量具有相同大小。
如图4所示.通过将矩阵401划分为向量(例如,401-0,401-1等),每个向量可以通过相对于矩阵401的坐标(例如,V(0,0)、V(0,1)、V(1,0)等)来标识,并且一个向量内的每个元素可以是由相对于该向量的偏移量(例如,E(0),E(1),…,E(L-1))来标识。
图5是根据本公开实施例的一示例性对矩阵501进行编码500的示意图。矩阵501与神经网络相关。例如,矩阵501可以是权重矩阵、输入矩阵、输出矩阵等。如图5所示,矩阵501可分为大小为8的四个向量(例如V0、V1、V2和V3)。对于这四个向量V0、V1、V2和V3中的每一个,至多可以选择两个(或任何预定数目)的非零元素并将其编码为一个编码矩阵502中的压缩向量(compact vector),该编码矩阵502与它们在偏移矩阵503中的偏移量相关联。这些向量V0、V1、V2和V3可以被编码为相同长度K(例如,图5中的K=2)。如果一个向量(例如V1)具有比压缩向量的长度K更少的非零元素,则对应的压缩向量可以用零填充。尽管图上用4×8矩阵501来描述,但8维向量V0、V1、V2和V3(例如,L=8)和二维压缩向量(例如,K=2)、矩阵501、向量V0、V1、V2和V3以及对应的压缩向量可以是任何大小的。
在一些实施例中,M×N矩阵的编码可包括将M×N矩阵划分为L维向量。因此,M×N矩阵可能具有M*[N/L]个向量。如果M×N矩阵没有均匀地划分为L维向量,则编码可包括用零填充一个或多个残差向量(residual vectors),从而使每个向量大小相同。编码还可以包括在每个向量中选择预定数目K(K<=L)的非零元素并将选出的非零元素编码为对应的K维压缩向量,对应K维压缩向量具有原始向量中的相关偏移量。如果一个向量比K具有更少的非零元素,空元素在对应的K维压缩向量中可以用零填充。编码还可以包括计数每个向量中非零元素的数目NNZ并将K设置为矩阵中所有向量的NNZ中的最大值。如此,在这样实施例中,矩阵中的所有非零元素可以被编码成压缩向量。
可以理解,尽管在本公开的图4至图5所示的实施例和许多其他实施例使用行向量,但本文所述的向量划分和编码既可以按行执行,也可以按列执行。
理论上,可能需要log2 L个比特来编码L维向量中的每个偏移量索引。因此,编码的总体压缩比为:
其中P表示用于存储元素的数值的比特数。例如,对图5所示的4×8的16比特浮点(FP16)矩阵501进行编码的一个示例性的实施例中,其中L=8,K=2,因为偏移量在[0,7]范围内,偏移矩阵503的每个元素可以用3个比特表示,因此,压缩比是3.37。如果K被设置为一个向量中非零元素的最大数目,则当所有向量具有相同数目的非零元素时,编码可以达到增强压缩比。
图6A-6B分别是根据本公开实施例的示例性的用于在神经网络中提供向量稀疏化(sparsity in a neural network)的方法600和650的流程图。示例性的方法600和650可以由至少一个处理器(例如,图2A-2B所示的加速器架构200或主机单元220、图8所示的处理器800、图11所示的处理器1100等)执行。此外,方法600和650也可以通过计算机程序产品来实现,该计算机程序产品体现在一种计算机可读介质中,包括计算机可执行指令,计算机可执行指令可由如图2A-2B、图8和图11所示的***或架构的计算机执行。
如图6A所示,在步骤601中,至少一个处理器将一个与神经网络相关联的矩阵划分为多个向量。该矩阵可以是权重矩阵、输入矩阵、输出矩阵等。例如,如图4所解释的,至少一个处理器将M×N矩阵划分为多个L维向量。在一些实施例中,如果M×N矩阵没有被均匀地划分为L维向量,则方法600可以包括用零填充一个或多个残差向量(residual vectors),使得每个向量都是相同的大小L。可以理解,步骤601的划分可以是按照列或按照行。
在步骤603中,至少一个处理器可以从多个向量中选择非零元素的子集以形成剪枝矩阵(pruned matrix)。例如,对于每个L维向量,至少一个处理器可以选择K个非零元素。K是预定数且小于或等于L。在一些实施例中,K可以被设置为矩阵中所有向量中的非零元素的数目的最大值。因此,矩阵中的所有非零元素被选出以形成剪枝矩阵。可替代地,根据预定标准在矩阵中选出比所有非零元素更少的非零元素。例如,可以选择绝对值最大的K个非零元素来形成剪枝矩阵。在一些实施例中,选择可以包括对多个向量的每个向量中未选出的非零元素进行归零,以形成剪枝矩阵。
可选地,在步骤605中,所述至少一个处理器可将所选的非零元素的子集编码为压缩向量,压缩向量具有所选的非零元素的子集在多个向量中的相关偏移量。如果一个向量具有比压缩向量的长度更少的非零元素,对应的压缩向量可以用零填充。
可选地,在步骤605,所述至少一个处理器将选出的非零元素的子集编码为压缩向量,压缩向量具有对应向量内所选非零元素的子集的相关偏移。如果向量的非零元素少于压缩向量的长度,则对应的压缩向量可以用零填充。
方法600可进一步包括附加步骤。例如,在步骤607,至少一个处理器可以输出剪枝矩阵,并使用剪枝矩阵执行神经网络。该至少一个处理器可以执行具有压缩向量和相关偏移量(图6A未示出)的神经网络。例如,该至少一个处理器可以提取相关偏移量,通过将压缩向量中的与提取到的偏移量相关的元素与矩阵中的与提取到的偏移量对应的元素相乘来执行压缩向量与矩阵的相乘。附加地或可选地,该至少一个处理器可以使用剪枝矩阵(图6A中未示出)重新训练神经网络。重新训练可包括以下至少一项:修改剪枝矩阵的一个或多个元素;修改神经网络的一个或多个节点的激活函数。
图6B是根据本公开实施例的另一示例性的用于在神经网络中提供向量稀疏化的方法650的流程图。如图6B所示,在步骤651中,所述至少一个处理器将与神经网络相关联的矩阵划分为多个向量。在一些实施例中,矩阵可以是权重矩阵。例如,如图4所解释的,一个M×N矩阵被划分为多个L维向量。在一些实施例中,如果M×N矩阵不均匀地划分为L维向量,方法650可以包括使用零填充一个或多个残差向量,从而使每个向量具有相同大小L。可以指出的是,这种划分可以是按列或按行划分。
在步骤653中,至少一个处理器可以从多个向量中的一个或多个向量选择非零元素的子集以形成剪枝矩阵。例如,对于每个L维向量,至少一个处理器可以选择K个非零元素。K是预定数值并且小于或等于L。在一些实施例中,K可以被设置为矩阵中所有向量的非零元素的数目的最大值。因此,矩阵中的所有非零元素被选出以组成剪枝矩阵。可替代性地,根据预定标准从矩阵中选出比所有非零元素更少非零元素。例如,可以选择绝对值最大的K个非零元素组成剪枝矩阵。在一些实施例中,选择可以包括将多个向量的每个向量中未被选中的非零元素归零以形成剪枝矩阵。
在步骤655中,至少一个处理器可以使用剪枝矩阵重新训练神经网络。例如,该矩阵是权重矩阵,并且重新训练可包括将测试数据集或训练数据集应用于神经网络,该神经网络使用经由步骤651、653获得的剪枝权重矩阵,重新训练还包括相应地修改神经网络以减少应用测试数据集或训练数据集之后计算的一个或多个相关损失函数。在一些实施例中,重新训练可包括修改权重矩阵的一个或多个元素,或修改神经网络的一个或多个节点的一个或多个激活函数。
在步骤657,至少一个处理器可确定经过重新训练的神经网络是否已经收敛。例如,如果已经达到期望的稀疏度水平,如果神经网络的准确度已经下降到阈值以下,或者如果与神经网络相关联的任何其他数值已经达到或超过预定阈值,则可能发生收敛。如果发生收敛,则方法650可以结束,如果不是,则方法650可以继续迭代,正如图6B所示。
本公开的一些实施例可以提供一定的灵活性去指定收敛条件(例如,可接受的错误率),收敛条件通常在不同的应用中有所不同。例如,如果应用程序对延迟而不是准确性更敏感,则可以将最大准确度下降(maximum accuracy drop)设置得更高,以获得更多稀疏性。可替代地,可以将最大准确度下降设置得足够小,以确保准确性。
尽管上文针对一次迭代进行了描述,但方法650可以进一步包括迭代选择:在步骤653中,进一步从多个向量中的一个或多个向量中迭代地选择非零元素的第二子集,以形成第二剪枝矩阵,并在步骤655,使用第二剪枝矩阵重新训练神经网络。在一些实施例中,选择非零元素的第二子集可以包括减少在第一次迭代中使用的预定数量,以及从多个向量的每个向量中按照减少的预定数量选择最大非零元素。
这种迭代可以在达到所需稀疏度水平或神经网络的准确性降至阈值之下以后结束。在这类实施例中,可执行或存储在最终迭代中获得的神经网络(或者是在准确性已降至阈值以下的实施例中,可执行或存储在倒数第二次迭代中获得的神经网络),或以其他方式最终确定。因此,如关于步骤657所述,如果重新训练的神经网络的准确性低于阈值,则可以停止迭代。
可选地,在步骤659中,至少一个处理器可以将重新训练的非零元素的子集编码为压缩向量,压缩向量具有所选的非零元素的子集在多个向量中的相关偏移量。如果一个向量的非零元素少于压缩向量的长度,则相应的压缩向量可以用零填充。
方法650可进一步包括附加步骤。例如,至少一个处理器可以输出重新训练得到的剪枝矩阵或具有相关偏移的压缩向量(如果存在编码步骤),以使用剪枝矩阵(图6B中未示出)执行神经网络。附加地或可选地,该至少一个处理器可以执行具有压缩向量和相关偏移量的神经网络(图6B未示出)。例如,至少一个处理器可以获取偏移量,并通过将压缩向量中的与提取得的偏移量相关的元素与矩阵中的与提取得的偏移量对应的元素相乘来执行压缩向量和矩阵的乘法。
图7是根据本公开实施例的一示例性的向量矩阵乘法700的示意图。在一些实施例中,矩阵乘法700可与图5的编码500、图6A的方法600或图6B的方法650组合。例如,矩阵乘法700可以利用经由图5的编码500、图6A的方法600或图6B的方法650产生的编码矩阵。
矩阵乘法700可以包括三个矩阵:矩阵A、稠密矩阵(dense matrix)B和稠密矩阵C,其中C=A×B。矩阵A、B和C的大小分别为4×8、8×6和4×6。在传统的稠密矩阵乘法中,不考虑稀疏性,需要计算矩阵A的每一行和矩阵B的每一列的乘积。因此,矩阵C的每一行需要48(48=8×6)次乘法。如图7所示,在根据本公开的一些实施例进行修剪和编码之后,4×8矩阵A成为4×2编码矩阵A 701,其具有相同大小的相关联的偏移矩阵703。因此,矩阵乘法700可能只需要矩阵B 705的元素的子集来计算乘积矩阵C 707。例如,由于编码矩阵A 701的第一行在偏移量1和6(例如,列1和6)处具有非零元素,则矩阵C中的第一行c0相当于NZ0*b1+NZ1*b6,其中b1和b6代表矩阵B中相应的行1和6。因此,在图7的示例中,仅执行12(12=2×6)次乘法,从而缩减75%的乘法计算。应当理解,可以使用本文描述的向量稀疏化技术来实现任何级别的乘法缩减。
图8是根据本公开实施例的示例性的处理器800的示意图。处理器800可以执行图4的划分400、图5的编码500、图6A的方法600、图6B的方法650、图7的矩阵乘法700或本公开的其他实施例。处理器800可以是CPU(例如,图2A-2B的主机单元220)、GPU、NPU(例如,图2A-2B的加速器架构200)、TPU、FPGA、ASIC等,或者是上述处理单元的一部分。
如图8所示,处理器800可以包括一级(L1)指令高速缓存801,一个或多个子核803和存储器IO 805。尽管图8中显示了四个子核803-1、803-2、803-3和803-4,但处理器800中可以包括任意数量的子核803。在一些实施例中,子核可以包括线程束调度器8031、单指令多数据(SIMD)调度单元8032、一个或多个张量核8033、用于多种数据类型的处理器阵列(例如,统一计算设备架构(CUDA))核)和特殊功能单元(SFU)8034、加载/存储单元(LD/ST)8035和寄存器文件8036。张量核8033可以提供多种执行模式:浮点16(FP16)模式、混合精度模式、FP32模式和FP64模式。在FP16/FP32/FP64模式下,所有矩阵的元素均是FP16/FP32/FP64。在混合精度模式下,张量核8033使用浮点32(FP32)累加器,并将结果写回FP32矩阵。在计算期间,在子核803中的张量核8033(例如,两个张量核)可通过线程束(wrap)同时使用。
存储器IO 805可以包括统一的一级(L1)数据高速缓存(cache)、共享存储器8051和纹理存储器8052。一级(L1)数据高速缓存和共享存储器8051可以在多个子核803之间共享。
WMMA可以计算将三个矩阵A、B和C相乘并累加,得到矩阵D,其中D=A×B+C。要执行WMMA,将线程束中的多条线程分成线程组。此外,为了更好地重用数据,许多线程组可以作为一个工作元组一起工作。例如,假设A、B、C和D是16×16矩阵,一个线程束中的32个线程被分成8个线程组以执行WMMA。一个线程组中的所有线程一起计算4×4×4个分片的乘法。两个线程组作为一个工作元组(work tuple)一起工作。工作元组i包括线程组i和线程组i+4。
图9是根据本公开实施例的将矩阵乘法映射到线程束的工作元组(work tuplesin a warp)的示意图。在一些实施例中,映射可由图2A-2B所示的加速器架构200、图8所示的处理器800或图11所示的处理器1100来实现或利用。尽管矩阵A、B、C和D在图9所示中为16×16矩阵,但应理解,这些矩阵可以具有其他大小。
具体地,图9描绘了一个WMMA操作中的每个工作元组的元素处理。矩阵A可以在行方向上与四个工作元组0-3相关,矩阵B可以在列方向上与四个工作元组0-3相关。矩阵C和D可以以平铺方式(in tile-wise)均匀地映射到四个工作元组0-3。因此,乘积矩阵D的计算任务被均匀地划分为四个工作元组。每个工作元组可以负责计算D的一个8×8的分片。例如,工作元组0计算D的[0:7,0:7]。要做到这一点,工作元组0需要将A[0:7,0:15]和B[0:15,0:7]相乘,将8×8的乘积切片与C[0:7,0:7]相加,并将结果保存到D的[0:7,0:7]。
图10是根据本公开实施例的示例性的在现有稠密模式1001(左)和向量稀疏模式1002(右)下由线程组对元素进行处理的示意图。在稠密模式1001中,在编译期间,WMMA操作可能会分解为四组机器级HMMA(半精度矩阵乘法累加)指令。对于两个线程组,一个工作元组可以计算一组HMMA指令中的8×8×4矩阵乘法。用于混合精度模式的一组HMMA指令可以包括四条HMMA指令(如图10(左)的1001所示)。
在向量稀疏模式1002下,代替稠密模式1001下四条HMMA指令为一组,一组稀疏HMMA(SHMMA)指令可包括:
SHMMA.FETCHIDX RO;
SHMMA.EXEC.F32.F32 RD,RA,RB,RC。
指令SHMMA.FETCHIDX可以从RO获取矩阵A的一行元素的偏移量索引并存到偏移寄存器。指令SHMMA.EXEC.F32.F32可以对偏移寄存器进行解码,以确定从RB中获取矩阵B的哪些行,并计算矩阵A和矩阵B的乘法,并将结果与矩阵C累加。值得注意的是,尽管有SHMMA指令的说明,但实际上,任何硬件加速器上的任何适当矩阵乘法累积指令可用于实现本文所述的示例性处理。
对于稀疏WMMA(SWMMA)操作,可以有多组SHMMA指令。如图10右侧所示,SWMMA操作可以包括四组SHMMA指令,即组0、组1、组2和组3。每个线程组通过一组SHMMA指令计算矩阵B的8个列。与稠密模式1001不同,在向量稀疏模式1002中,两个线程组可以计算矩阵A的同一行。D的i行可以通过将矩阵A的i行中的四个非零元素分别与矩阵B相应的四行进行相乘来计算,然后将结果与C的i行累加。要进行乘法的矩阵B的四行由保存在偏移寄存器中的四个偏移量索引确定。
图11是根据本公开实施例的一示例性的处理器架构1100的示意图。图11仅示出了处理器1100的一部分,在一些实施例中,处理器1100可以应用于图8的子核803。如图11所示,处理器1100可以包括存储器(例如,寄存器文件1101)、多条操作数总线1103(例如,操作数总线1103-1、操作数总线1103-2和操作数总线1103-3)和至少一个核1105(例如,核1105-1和核1105-2)。存储器可以包括寄存器文件1101,寄存器文件1101可以包括偏移寄存器11011。在一些实施例中,偏移寄存器11011可以是专用的偏移寄存器,并由SHMMA指令隐式访问。
核1105(例如,张量核)可以解码存储在存储器中的偏移量(例如,解码偏移寄存器11011),并对来自第一操作数总线(例如,操作数总线1103-1)的第一操作数和来自第二操作数总线(例如,操作数总线1103-2)的第二操作数执行矩阵乘法。在一些实施例中,第一操作数可以是矩阵A,矩阵A可以被以本公开中的任何方法(例如,图5的编码500、图6A的方法600或图6B的方法650)编码过,且矩阵A包括多个压缩向量,压缩向量的元素在原始向量内的对应偏移量存储在存储器(例如,在偏移寄存器11011中)中。第二个操作数可以是另一个矩阵B。解码偏移量可以包括确定要提取矩阵B的哪些行或列。因此,参考图7所示,核1105可以执行编码矩阵A的多个压缩向量与从矩阵B提取出的相应行或列的乘法。此外,核1105可以将矩阵A和B的矩阵相乘结果与来自第三操作数总线(例如,操作数总线1103-3)的第三操作数进行累加。
在一些实施例中,核1105可以包括一组或多组处理单元。每组处理单元对应于一个线程组。例如,如图11所示,核1105-1可以包括两个八位字节单元(octet unit)0和1。八位字节单元0包括两组四点积(DP)单元,一组对应于线程组0,另一组对应于线程组4。
核1105还可以包括多个缓冲器。如图11所示,缓冲器A可以连接到操作数总线1103-1和连接到对应于线程组0或线程组4的一组处理单元(例如DP单元)。缓冲器B可以连接到操作数总线1103-2和连接到至少一组处理单元,例如,对应于线程组0和线程组4的两组处理单元。在一些实施例中,缓冲器B可以是乒乓(ping-pong)缓冲器,包括第一部分和第二部分,第一部分用于存储要由处理单元读取的数据,第二部分用于从存储器(例如,寄存器文件11011)加载数据。核1105还可以包括连接在操作数总线1103-2和缓冲器B之间的多路复用器。此外,核1105还可以包括第三缓冲器(例如,累加器缓冲器),第三缓冲器连接到操作数总线1103-3和一组处理单元,例如,对应于线程组0或线程组4的一组DP单元。因此,核1105可以将来自操作数总线1103-1的第一个操作数和来自操作数总线1103-2的第二个操作数的矩阵相乘的结果与来自操作数总线1103-3的第三个操作数累加起来。在计算之后,核1105写回计算结果。
在一些实施例中,SWMMA操作可以由图11的处理器1100实现。每个核1105包括两个八位字节单元。在一个八位字节单元(例如八位字节单元0、八位字节单元1、八位字节单元2或八位字节单元3)中,有八个DP单元,每个DP单元每个周期计算一个4维向量点积。在执行期间,一个工作元组可以映射到一个八位字节单元,因此每个线程组分别拥有四个DP单元。八位字节单元可以具有操作数缓冲器,用于在执行一组SHMMA指令时向工作元组提供数据。每个线程组可以同时有操作数A和操作数C的操作数缓冲器,例如,缓冲器A和累加器缓冲器。此外,操作数B的操作数缓冲器(例如,缓冲器B)可以在同一工作元组中存储两个线程组共享的数据。当八位字节单元从每组HMMA指令中加载4×8分片时,现有的缓冲器B只需要保存4×8的FP16数值。在一些实施例中,缓冲器B的大小可以加倍,以容纳操作数B的四行。缓冲器B可以是乒乓缓冲器,一部分可以由DP读取,另一部分从存储器(例如,寄存器文件11011)加载数据。在一些实施例中,缓冲器A中的操作数A可以被广播到它所连接的四个DP单元,以便八位字节单元中的所有DP单元都可以读取操作数A中的同一行。这样,线程组可以每个时钟周期计算操作数A的一行和操作数B的四列的点积。
图12示出根据本公开实施例的一示例性的SWMMA执行流。该示例性的SWMMA执行流可由图8所示的处理器800或图11所示的处理器1100实现。可使用SHMMA指令执行SWMMA执行流。
如图12所示,矩阵A可以是被向量编码的16*4矩阵,该矩阵带有相关16×4偏移矩阵(L=16,K=4)。编码矩阵A的四行可以映射到一个工作元组。工作元组i计算行4i到行4i+3。例如,在执行组0中的指令时,可以提取并解码偏移矩阵的第一行,其包含4个元素:4、6、8和9。稠密矩阵B中的对应行(例如,行4、行6、行8和行9)可被提取并与编码矩阵A的第一行相乘。乘法结果可与稠密矩阵C的第一行累加。由于偏移矩阵中的所有偏移量都在[0,15]范围内,每个偏移量可能需要4个比特的存储空间。因此,编码矩阵A的每一行可能需要16个比特的存储空间来存储4个偏移量,这4个偏移量可以存储在一个寄存器中。
举例说明。
为了证明使用本公开的用于执行神经网络的技术能够提高潜在效率,我们开发并执行了多个仿真,对图像分类、图像字幕和机器翻译三个领域的五个流行神经网络进行了仿真。使用现有的通用稀疏化方法和使用本公开的向量稀疏化方法对神经网络进行训练,训练是在一个具有四个NVIDIA Tesla V100 GPU的一个独立的DGX-1设备上进行。矩阵乘法是使用CUTLASS实现的,CUTLASS是一个开源的高性能GEMM模板库。
对于图像分类应用,选择基于2012年ImageNet大规模视觉识别挑战(ImageNetILSVRC-2012)数据集的四个CNN、AlexNet、VGG-16、ResNet-18和ResNet-50。对于图像字幕应用,使用展示和讲述(Show and Tell)模型,该模型包括一个Inception V3模型,Inception V3模型具有的长短时记忆(LSTM)层附接到CNN的最后一层。默认情况下,LSTM层具有512个单元。Show and Tell模型已应用于Obj ects in Context(MSCOCO)数据集且最小批量大小设置为64。对于机器翻译应用,神经机器翻译(NMT)模型使用的体系结构包括2层LSTM编码器、4层LSTM解码器和注意力模块。NMT模型使用2016年机器翻译会议(WMT 16)的英德(English-German)数据集。双语评估替补(BiLingualEvaluation Understudy,BLEU)分数被用作NMT模型的衡量标准。
在示例中,首先使用默认的训练方法训练工作负载,以得到参考模型的准确度。然后对参考的稠密模型采用向量稀疏化方法。训练过程的权重、激活和梯度以及基于CUDA核的推理核均使用FP32。对于基于张量核的核,为避免精准度损失,每层的FP32的权重和输入激活可动态缩减到FP16。输出激活则仍使用FP32。
在根据本公开实施例的向量稀疏化方法中,引入向量大小L。表格1显示了CNN和RNN在通用稀疏化和向量稀疏化之间的准确性比较,其中Generic指通用稀疏化,VectorSparse指本公开的实施例的向量稀疏化。
表格1
如表格1所示,每个权重矩阵由四个L配置稀疏化:8、16、32和64。虽然只显示了75%稀疏度的结果,但在不丧失普遍性的情况下,对各种稀疏度进行了探索。结果表明,无论稀疏度如何,较大的向量大小(例如,L=16)对准确性产生微小影响。在某些情况下,较小的向量大小(如L=8)可能会导致准确性显著下降。既然准确性对更大的向量大小并不敏感,则在一些实施例中,L=16可以被选择为较优选的向量大小,其需要4个比特来存储偏移量索引,并且支持更细粒度的平铺策略。在这些示例中,当稀疏度为75%且L=16时,向量稀疏化的准确性下降在1%以内。
图13是根据本公开实施例的卷积神经网络(CNN)负载的权重矩阵中准确度与稀疏度的图形描述。图14是根据本公开实施例的递归神经网络(RNN)负载的权重矩阵中双语评估替补(BLEU)分数与稀疏度的图形描述。图13-14中,CNN和RNN模型分别采用L=8和16的向量稀疏化方法、通用稀疏化方法和统一化稀疏方法进行稀疏。
如图13所示,所有CNN模型以L=16进行向量稀疏化时,在稀疏度达到80%之前可以保持准确性。类似地,如图14所示,当稀疏度不超过75%时,RNN的准确性与参考模型相当。如果向量大小L设置为8,则模型准确性下降的速度比L=16时的准确性下降的速度更快。在稀疏度为75%的情况下,L=8的方***性损失可能超过2%,这是因为L=8可能会对删除元素施加太多空间约束。图13-14表明RNN对L=8的修剪比CNN更具弹性。然而,它们在L=8的稀疏化时的准确性仍然无法与L=16时相比。因此,可以证明稀疏性和准确性之间的权衡。对于给定向量大小L,较高的稀疏度可以通过牺牲准确性来实现更好的性能。可以理解,这种权衡可根据具体应用进行。此外,与统一稀疏化相比,向量稀疏化在修剪权重方面具有更大的灵活性,因此当L不是非常小时,向量稀疏化可以产生与通用稀疏化类似的拓扑结构。例如,当进行L=16的稀疏化时,75%的稀疏度足以保证准确性。因此,在每个16维向量中保留4个非零元素。由于线程束尺寸32是165的倍数,L=16也有利于CUDA核。
图15是根据本公开实施例的在基于稠密神经网络的统一计算设备架构(CUDA)的核上归一化加速的示意图。在图15中,根据本公开实施例(例如图11的1105),CUDA CoreDense是指在CUDA Core上运行的被用作基线的稠密神经网络,CUDA Core Generic是指在CUDA Core上运行的通用稀疏化后的神经网络,CUDA Core Unified是指在CUDA Core上运行的统一稀疏化后的神经网络,CUDA Core Vector wise Sparse是指在CUDA Core上运行的向量稀疏化后的神经网络,Tensor Core Dense是指在张量核上运行的稠密神经网络,Tensor Core Vector-wise Sparse是指在张量核上运行的向量稀疏化后的神经网络。向量稀疏化后的神经网络具有75%的稀疏性,通用稀疏化后的神经网络具有96%的稀疏性,统一稀疏化后的神经网络具有50%的稀疏性。全部的结果都归一化到CUDA Core Dense。
如图15所示,Tensor Core Dense比CUDA Core Dense更快,CUDA Core Generic比CUDA Core Dense慢20%。可替代地,CUDA Core Unified平均比CUDA Core Dense快1.50倍。平均而言,Tensor Core Vector-wise Sparse比作为基线的Tensor Core Dense快2.65倍。导致性能提高的原因可能是:首先,在宽松的空间约束下,向量稀疏化后的神经网络得益于高稀疏性,因此CUDA Core Vector-wise Sparse比基线有64%的性能增益;其次,基于所公开的SHMMA指令和架构,这些向量稀疏化的神经网络可以利用强大的张量核,与CUDACore Vector-wise Sparse相比,它可以额外提高61%的性能。此外,Tensor Core Vector-wise Sparse比Tensor Core Dense有1.49倍的加速。
在向量稀疏模式下,根据本公开实施例的核(例如,图11的张量核1105)可能需要为操作数B提供一个4*大数值的缓冲器(例如,缓冲器B),以保存FP16的4×16个数值并启用乒乓缓冲器。此外,可以为每个八位字节单元添加偏移寄存器。每个八位字节单元中的缓冲器B的现有大小为512B(512=4×8×16),每个核需要有两个八位字节单元,因此缓冲器大小为1KB。因此,向量稀疏模式可能需要4KB的缓冲器B。如果处理器(例如,图8的处理器800或图11的处理器1100)具有8个核,则可能需要4KB的缓冲器。
表格2
表格2显示了使用CACTI 7的设计的开销分析。4KB的静态随机存取存储器(SRAM)在22nm的处理节点上占用0.019mm2。0.4ns的周期时间比NVIDIA Tesla V100 GPU的标称周期时间(1530MHz时为0.65ns)更小,如此不会产生任何时间开销。由于V100 GPU采用12nm制程,因此面积缩小至0.007mm2。此外,如果一个核(例如,图11的张量核1105)需要两个额外的寄存器作为两个八位字节的偏移寄存器,那么处理器需要16个额外的偏移寄存器来将操作数提取到缓冲器B。如果V100 GPU的面积为815mm2,那么总的面积开销可以忽略不计。
本公开实施例可应用于许多产品、环境和场景。例如,本公开的一些实施例可应用于处理器(例如CPU)、阿里NPU(例如汉光NPU)、阿里云、阿里PIM-AI(用于AI的存储器中的处理器)、阿里DPU(数据库加速单元)、阿里AI平台、GPU、TPU等。
可以使用以下句子进一步描述本公开实施例。
1、一种用于在神经网络中提供向量稀疏化的方法,包括:
将与神经网络相关联的矩阵划分为多个向量;
从所述多个向量中选择非零元素的第一子集以形成剪枝矩阵;和
输出所述剪枝矩阵,并使用所述剪枝矩阵执行所述神经网络。
2、根据权利要求1所述的方法,进一步包括:使用零填充所述多个向量中的残差向量。
3、根据权利要求1或2所述的方法,进一步包括:使用剪枝矩阵重新训练神经网络。
4、根据权利要求3所述的方法,所述重新训练包括以下至少一项:修改剪枝矩阵的一个或多个元素,或者修改神经网络的一个或多个节点的一个或多个激活函数。
5、根据权利要求3或4所述的方法,进一步包括:迭代执行的以下步骤:
从所述多个向量中选择非零元素的第二子集以形成第二剪枝矩阵;和
使用第二剪枝矩阵重新训练神经网络。
6、根据权利要求5所述的方法,其中,选择非零元素的第一子集还包括:从所述多个向量中的每个向量中选择预定数目的最大非零元素。
7、根据权利要求6所述的方法,其中,选择非零元素的第二子集进一步包括:
减少预定数目;和
从所述多个向量中的每个向量中按照减少后的预定数目选择其中的最大非零元素。
8、根据权利要求5-7中任一个所述的方法,进一步包括:如果重新训练的神经网络的准确性低于阈值,则停止迭代。
9、根据权利要求1-8中任一个所述的方法,其中,选择非零元素的子集包括对在所述多个向量中的每个向量中未选择的非零元素进行归零。
10、根据权利要求1-9中任一个所述的方法,进一步包括:将选定的非零元素的子集编码为压缩向量,压缩向量具有所选非零元素的子集在一个或多个向量内的相关偏移量。
11、根据权利要求10所述的方法,其中,所述压缩向量具有预定长度,则编码所选择的非零元素的子集还包括:如果为压缩向量选定的非零元素比预定长度更少,则以零填充压缩向量中的所选非零元素以外的元素。
12、根据权利要求10或11所述的方法,进一步包括:
提取偏移量;
通过将压缩向量中与提取到的偏移量相关的元素与一矩阵中与偏移量对应的元素相乘,来执行压缩向量与该矩阵的乘法。
13、根据权利要求1-12中任一个所述的方法,其中,矩阵是权重矩阵。
14、一种用于在神经网络中提供向量稀疏化的***,包括:
至少一存储器,用于存储指令;和
至少一个处理器,用于执行所述指令以使所述***执行以下步骤:
将与神经网络相关联的矩阵划分为多个向量;
从所述多个向量中选择非零元素的第一子集以形成剪枝矩阵;和
输出剪枝矩阵,并使用所述剪枝矩阵执行所述神经网络。
15、根据权利要求14所述的***,其中,所述至少一个处理器进一步执行指令,以使得***执行使用零填充多个向量中的残差向量。
16.根据权利要求14或15所述的***,其中,所述至少一个处理器进一步执行指令,使***使用剪枝矩阵重新训练神经网络。
17、根据权利要求16所述的***,其中,所述至少一个处理器进一步执行指令,使***执行修改剪枝矩阵的一个或多个元素,或者修改神经网络的一个或多个节点的一个或多个激活函数。
18、根据权利要求16或17所述的***,其中,所述至少一个处理器还执行指令以使***迭代执行以下步骤:
从所述多个向量中选择非零元素的第二子集以形成第二剪枝矩阵;和
使用第二剪枝矩阵重新训练神经网络。
19、根据权利要求18所述的***,其中,所述至少一个处理器进一步执行指令,使***执行从所述多个向量中的每个向量中选择预定数目的最大非零元素。
20、根据权利要求19所述的***,其中,所述至少一个处理器进一步执行指令,使***执行以下步骤:
减少预定数目;和
从所述多个向量中的每个向量中按照减少后的预定数目选择其中的最大非零元素。
21、根据权利要求18-10中任一个所述的***,其中,所述至少一个处理器进一步执行指令,使***执行如果重新训练的神经网络的准确性低于阈值,则停止迭代。
22、根据权利要求14-21中任一个所述的***,其中,所述至少一个处理器进一步执行指令,使***执行对在所述多个向量中的每个向量中未选择的非零元素进行归零。
23、根据权利要求14-22中任一个所述的***,其中,所述至少一个处理器进一步执行指令,使***执行将选定的非零元素的子集编码为压缩向量,该压缩向量具有所选非零元素的子集在一个或多个向量中的相关偏移。
24、根据权利要求23所述的***,其中,所述压缩向量具有预定长度,所述至少一个处理器进一步执行指令,使***执行以下步骤:
如果为压缩向量选择的非零元素比预定长度更少,则以零填充压缩向量中的所选非零元素以外的元素。
25、根据权利要求23或24所述的***,其中,所述至少一个处理器执行指令以使***执行以下步骤:
提取偏移量;
通过将压缩向量中与提取到的偏移量相关的元素与一矩阵中与偏移量对应的元素相乘,来执行压缩向量与该矩阵的乘法。
26、根据权利要求14-25中任一个所述的***,其中,矩阵是权重矩阵。
27、一种存储指令集的非暂时性计算机可读存储介质,所述指令集由至少一个处理器执行使计算机执行在神经网络中提供向量稀疏化的方法,该方法包括:
将与神经网络相关联的矩阵划分为多个向量;
从所述多个向量中选择非零元素的第一子集以形成剪枝矩阵;和
输出所述剪枝矩阵,并使用所述剪枝矩阵执行所述神经网络。
28、根据权利要求27所述的非暂时性计算机可读存储介质,其中,所述指令集由至少一个处理器执行使所述计算机进一步执行:使用零填充所述多个向量中的残差向量。
29、根据权利要求27或28所述的非暂时性计算机可读存储介质,其中,所述指令集由所述至少一个处理器执行使所述计算机进一步执行:使用剪枝矩阵重新训练神经网络。
30、根据权利要求29所述的非暂时性计算机可读存储介质,其中,所述重新训练包括以下至少一项:修改剪枝矩阵的一个或多个元素,或者修改神经网络的一个或多个节点的一个或多个激活函数。
31、根据权利要求29或30所述的非暂时性计算机可读存储介质,其中,所述指令集由所述至少一个处理器执行使所述计算机进一步执行:
从所述多个向量中选择非零元素的第二子集以形成第二剪枝矩阵;和
使用第二剪枝矩阵重新训练神经网络。
32、根据权利要求31所述的非暂时性计算机可读存储介质,其中,选择非零元素的第一子集还包括:从所述多个向量中的每个向量中选择预定数目的最大非零元素。
33、根据权利要求32所述的非暂时性计算机可读存储介质,其中,选择非零元素的第二子集进一步包括:
减少预定数目;和
从所述多个向量中的每个向量中按照减少后的预定数目选择其中的最大非零元素。
34、根据权利要求31-33中任一个所述的非暂时性计算机可读存储介质,其中,所述指令集由所述至少一个处理器执行使所述计算机进一步执行:
如果重新训练的神经网络的准确性低于阈值,则停止迭代。
35、根据权利要求27-34中任一个所述的非暂时性计算机可读存储介质,其中,选择非零元素的子集包括对在所述多个向量中的每个向量中未选择的非零元素进行归零。
36、根据权利要求27-35中任一个所述的非暂时性计算机可读存储介质,其中,所述指令集由所述至少一个处理器执行使所述计算机进一步执行:
将选定的非零元素的子集编码为压缩向量,该压缩向量具有所选非零元素的子集在一个或多个向量中的相关偏移量。
37、根据权利要求36所述的非暂时性计算机可读存储介质,其中,所述压缩向量具有预定长度,则编码所选择的非零元素的子集还包括:如果为压缩向量选择的非零元素比预定长度更少,则使用零填充压缩向量中的所选非零元素以外的元素。
38、根据权利要求36或37所述的非暂时性计算机可读存储介质,其中,可由所述至少一个处理器执行的指令集使所述计算机进一步执行以下步骤:
提取偏移量;
通过将压缩向量中与提取到的偏移量相关的元素与一矩阵中与偏移量对应的元素相乘,来执行压缩向量与该矩阵的乘法。
39、根据权利要求27-38中任一个所述的非暂时性计算机可读存储介质,其中,矩阵是权重矩阵。
40、一种用于执行神经网络的处理器,包括:
存储器,用于存储压缩向量中的各个元素在原始向量中的相关偏移量;和
至少一个核,用于:解码第一多个压缩向量中的各个元素的偏移量,并基于解码获得的偏移量执行第一操作数和第二操作数的矩阵乘法,其中,第一操作数包括第一多个压缩向量。
41、根据权利要求40所述的处理器,其中,所述至少一个核被配置为:决定从第二个操作数提取那些行或列。
42、根据权利要求41所述的处理器,其中,所述至少一个核进一步配置成将第一操作数的多个压缩向量与第一操作的提取出的相应行或列进行相乘。
43、根据权利要求40所述的处理器,进一步包括多个操作数总线,所述多个操作数总线包括连接到所述至少一个核以提供所述第一操作数的第一操作数总线和连接到所述至少一个核以提供所述第二操作数的第二操作数总线。
44、根据权利要求43所述的处理器,其中,所述至少一个核中的每一个包括:
一组或多组处理单元,每组处理单元对应到线程组;
第一缓冲器,连接到第一操作数总线和第一组处理单元;
第二缓冲器,连接到第二操作数总线和所述一个或多组处理单元中的至少一组。
45、根据权利要求44所述的处理器,其中,所述第二缓冲器包括第一部分和第二部分,第一部分用于存储由处理单元读取的数据,第二部分用于从寄存器文件加载数据。
46、根据权利要求44所述的处理器,其中,处理单元是点积(DP)单元。
47、根据权利要求44所述的处理器,其中,所述至少一个核中的每一个还包括:
多路复用器,连接在第二操作数总线和第二缓冲器之间。
48、根据权利要求44所述的处理器,其中,所述至少一个核中的每一个包括:连接到第三操作数总线和第一组处理单元的第三缓冲器,所述至少一个核用于将第一个操作数和第二个操作数的矩阵乘法结果与来自第三个操作数总线的第三个操作数累加。
这里以方法步的步骤或过程的上下文来描述各个示例性的实施例,这些实施例一方面可由计算机程序产品实现,具体体现在计算机可读介质中,并且包括例如在网络环境中由计算机执行的程序代码的计算机可执行指令。计算机可读介质可以包括可移动和不可移动存储设备,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、光盘(CD)、数字多功能光盘(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 (23)
1.一种用于在神经网络中提供向量稀疏化的方法,包括:
将与神经网络相关联的矩阵划分为多个向量;
从所述多个向量中选择非零元素的第一子集以形成剪枝矩阵;以及
输出所述剪枝矩阵,并使用所述剪枝矩阵执行所述神经网络。
2.根据权利要求1所述的方法,还包括:使用零填充所述多个向量中的残差向量。
3.根据权利要求1所述的方法,还包括:使用所述剪枝矩阵重新训练神经网络。
4.根据权利要求3所述的方法,还包括:
从所述多个向量中选择非零元素的第二子集以形成第二剪枝矩阵;以及
使用所述第二剪枝矩阵重新训练神经网络。
5.根据权利要求4所述的方法,其中,所述从所述多个向量中选择非零元素的第一子集以形成剪枝矩阵包括:从所述多个向量中的每个向量中选择预定数目的最大非零元素。
6.根据权利要求5所述的方法,其中,所述从所述多个向量中选择非零元素的第二子集以形成第二剪枝矩阵包括:减少预定数目;以及
从所述多个向量中的每个向量中按照减少后的预定数目选择其中的最大非零元素。
7.根据权利要求5所述的方法,还包括:如果重新训练的神经网络的准确性低于阈值,则停止迭代。
8.根据权利要求1所述的方法,还包括:
将选定的非零元素的子集编码为压缩向量,其中,所述压缩向量具有所选非零元素的子集在一个或多个向量内的相关偏移量。
9.一种用于在神经网络中提供向量稀疏化的***,包括:
至少一个存储器,用于存储指令;和
至少一个处理器,用于执行所述指令以使所述***执行以下步骤:
将与神经网络相关联的矩阵划分为多个向量;
从所述多个向量中选择非零元素的第一子集以形成剪枝矩阵;以及
输出所述剪枝矩阵,并使用所述剪枝矩阵执行所述神经网络。
10.根据权利要求9所述的***,其中,所述至少一个处理器进一步执行指令,以使得***执行将选定的非零元素的子集编码为压缩向量,其中,所述压缩向量具有所选非零元素的子集在一个或多个向量内的相关偏移量。
11.一种存储指令集的非暂时性计算机可读存储介质,所述指令集由至少一个处理器执行,以使计算机执行用于在神经网络中提供向量稀疏化的方法,所述方法包括:
将与神经网络相关联的矩阵划分为多个向量;
从所述多个向量中选择非零元素的第一子集以形成剪枝矩阵;以及
输出所述剪枝矩阵,并使用所述剪枝矩阵执行所述神经网络。
12.根据权利要求11所述的非暂时性计算机可读存储介质,其中,所述指令集由所述至少一个处理器执行以使计算机进一步执行:使用剪枝矩阵重新训练神经网络。
13.根据权利要求12所述的非暂时性计算机可读存储介质,其中,所述指令集由所述至少一个处理器执行以使计算机迭代地执行:
从所述多个向量中选择非零元素的第二子集以形成第二剪枝矩阵;以及
使用所述第二剪枝矩阵重新训练神经网络。
14.根据权利要求13所述的非暂时性计算机可读存储介质,其中,所述选择非零元素的第一子集还包括:从所述多个向量中的每个向量中选择预定数目的最大非零元素,所述选择非零元素的第二子集进一步包括:
减少预定数目;以及
从所述多个向量中的每个向量中按照减少后的预定数目选择其中的最大非零元素。
15.根据权利要求14所述的非暂时性计算机可读存储介质,其中,所述指令集由所述至少一个处理器执行以使计算机进一步执行:
如果重新训练的神经网络的准确性低于阈值,则停止迭代。
16.根据权利要求11所述的非暂时性计算机可读存储介质,其中,所述指令集由所述至少一个处理器执行以使计算机进一步执行:
将选定的非零元素的子集编码为压缩向量,所述压缩向量具有所选非零元素的子集在一个或多个向量内的相关偏移。
17.一种用于执行神经网络的处理器,包括:
存储器,用于存储压缩向量中的各个元素在原始向量中的相关偏移量;以及
至少一个核,用于:解码第一多个压缩向量中的各个元素的偏移量,并基于解码获得的偏移量执行第一操作数和第二操作数的矩阵乘法,其中,第一操作数包括第一多个压缩向量。
18.根据权利要求17所述的处理器,其中,所述至少一个核被配置为:确定从所述第二个操作数提取的行或列。
19.根据权利要求17所述的处理器,还包括:
多个操作数总线,所述多个操作数总线包括连接到所述至少一个核以提供所述第一操作数的第一操作数总线和连接到所述至少一个核以提供所述第二操作数的第二操作数总线。
20.根据权利要求19所述的处理器,其中,所述至少一个核的每个核包括:
一组或多组处理单元,每组处理单元对应到线程组;
第一缓冲器,连接到所述第一操作数总线和所述一组或多组处理单元的第一组处理单元;
第二缓冲器,连接到所述第二操作数总线和所述一个或多组处理单元中的至少一组。
21.根据权利要求20所述的处理器,其中,所述第二缓冲器包括第一部分和第二部分,第一部分用于存储由所述处理单元读取的数据,第二部分用于从寄存器文件加载数据。
22.根据权利要求20所述的处理器,其中,所述至少一个核的每个核还包括:
多路复用器,连接在上述第二操作数总线和所述第二缓冲器之间。
23.根据权利要求20所述的处理器,其中,所述至少一个核的每个核还包括:
连接到第三操作数总线和所述第一组处理单元的第三缓冲器,所述至少一个核用于将第一个操作数和第二个操作数的矩阵乘法结果与来自第三个操作数总线的第三个操作数累加。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962893768P | 2019-08-29 | 2019-08-29 | |
US62/893,768 | 2019-08-29 | ||
PCT/US2020/043279 WO2021040921A1 (en) | 2019-08-29 | 2020-07-23 | Systems and methods for providing vector-wise sparsity in a neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114341825A true CN114341825A (zh) | 2022-04-12 |
Family
ID=74679887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080061247.8A Pending CN114341825A (zh) | 2019-08-29 | 2020-07-23 | 用于在神经网络中提供向量稀疏化的方法及*** |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210065005A1 (zh) |
CN (1) | CN114341825A (zh) |
WO (1) | WO2021040921A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024001841A1 (zh) * | 2022-06-27 | 2024-01-04 | 华为技术有限公司 | 一种数据计算方法以及相关设备 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111010883B (zh) | 2018-08-06 | 2022-07-12 | 华为技术有限公司 | 矩阵的处理方法、装置及逻辑电路 |
CN111198670B (zh) * | 2018-11-20 | 2021-01-29 | 华为技术有限公司 | 执行矩阵乘法运算的方法、电路及soc |
US11681922B2 (en) * | 2019-11-26 | 2023-06-20 | Numenta, Inc. | Performing inference and training using sparse neural network |
US11366875B2 (en) * | 2020-03-13 | 2022-06-21 | Alibaba Group Holding Limited | Method and device for matrix multiplication optimization using vector registers |
CN112286864B (zh) * | 2020-12-24 | 2021-06-04 | 北京清微智能科技有限公司 | 加速可重构处理器运行的稀疏化数据处理方法及*** |
US20220300816A1 (en) * | 2021-03-19 | 2022-09-22 | Rebellions Inc. | Neural processing device and method for pruning thereof |
CN113722668B (zh) * | 2021-07-22 | 2023-10-31 | 平头哥(上海)半导体技术有限公司 | 处理单元、相关装置和张量运算方法 |
US12001510B2 (en) * | 2021-11-17 | 2024-06-04 | Beijing Transtreams Technology Co. Ltd. | Method and apparatus for length-aware local tiling in a sparse attention module in a transformer |
WO2023119522A1 (ja) * | 2021-12-22 | 2023-06-29 | 日本電気株式会社 | スパース化対象層決定装置、スパース化対象層決定方法及び、プログラム |
CN115248664B (zh) * | 2022-09-22 | 2023-01-10 | 北京东远润兴科技有限公司 | 数据的读写方法、装置、设备及存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9055338B2 (en) * | 2007-03-13 | 2015-06-09 | Nokia Corporation | System and method for video encoding and decoding |
KR100922732B1 (ko) * | 2007-12-10 | 2009-10-22 | 한국전자통신연구원 | 메모리 액세스 충돌 감소 장치 및 방법 |
US8676874B2 (en) * | 2010-12-06 | 2014-03-18 | International Business Machines Corporation | Data structure for tiling and packetizing a sparse matrix |
US9367519B2 (en) * | 2013-08-30 | 2016-06-14 | Microsoft Technology Licensing, Llc | Sparse matrix data structure |
US11423311B2 (en) * | 2015-06-04 | 2022-08-23 | Samsung Electronics Co., Ltd. | Automatic tuning of artificial neural networks |
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
US11907843B2 (en) * | 2016-06-30 | 2024-02-20 | Intel Corporation | Importance-aware model pruning and re-training for efficient convolutional neural networks |
US10984308B2 (en) * | 2016-08-12 | 2021-04-20 | Xilinx Technology Beijing Limited | Compression method for deep neural networks with load balance |
US10832123B2 (en) * | 2016-08-12 | 2020-11-10 | Xilinx Technology Beijing Limited | Compression of deep neural networks with proper use of mask |
EP3340129B1 (en) * | 2016-12-21 | 2019-01-30 | Axis AB | Artificial neural network class-based pruning |
US11250325B2 (en) * | 2017-12-12 | 2022-02-15 | Samsung Electronics Co., Ltd. | Self-pruning neural networks for weight parameter reduction |
US10572568B2 (en) * | 2018-03-28 | 2020-02-25 | Intel Corporation | Accelerator for sparse-dense matrix multiplication |
US10929503B2 (en) * | 2018-12-21 | 2021-02-23 | Intel Corporation | Apparatus and method for a masked multiply instruction to support neural network pruning operations |
US11907821B2 (en) * | 2019-09-27 | 2024-02-20 | Deepmind Technologies Limited | Population-based training of machine learning models |
-
2020
- 2020-07-23 CN CN202080061247.8A patent/CN114341825A/zh active Pending
- 2020-07-23 US US16/937,202 patent/US20210065005A1/en active Pending
- 2020-07-23 WO PCT/US2020/043279 patent/WO2021040921A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024001841A1 (zh) * | 2022-06-27 | 2024-01-04 | 华为技术有限公司 | 一种数据计算方法以及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2021040921A1 (en) | 2021-03-04 |
US20210065005A1 (en) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114341825A (zh) | 用于在神经网络中提供向量稀疏化的方法及*** | |
US11586601B2 (en) | Apparatus and method for representation of a sparse matrix in a neural network | |
US20210264220A1 (en) | Method and system for updating embedding tables for machine learning models | |
US10354733B1 (en) | Software-defined memory bandwidth reduction by hierarchical stream buffering for general matrix multiplication in a programmable IC | |
US11500811B2 (en) | Apparatuses and methods for map reduce | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
US11551028B2 (en) | Structured weight based sparsity in an artificial neural network | |
CN113139648B (zh) | 执行神经网络模型的pim架构的数据布局优化 | |
US11921814B2 (en) | Method and device for matrix multiplication optimization using vector registers | |
US11775832B2 (en) | Device and method for artificial neural network operation | |
US20220076095A1 (en) | Multi-level sparse neural networks with dynamic rerouting | |
EP3844610B1 (en) | Method and system for performing parallel computation | |
US20210319289A1 (en) | Frequency domain neural network accelerator | |
US11562217B2 (en) | Apparatuses and methods for approximating nonlinear function | |
US20190050514A1 (en) | Fault injection using hybrid simulation model | |
WO2022047802A1 (en) | Processing-in-memory device and data processing method thereof | |
US11500680B2 (en) | Systolic array-friendly data placement and control based on masked write | |
CN113077042B (zh) | 卷积神经网络的数据重用与高效处理方法 | |
US20220067509A1 (en) | System and method for learning from partial compressed representation | |
US20210357730A1 (en) | Multi-size convolutional layer background | |
CN113906448A (zh) | 用于在神经网络中提供分块稀疏性的***和方法 | |
US20210209462A1 (en) | Method and system for processing a neural network | |
WO2022061728A1 (en) | System and method for region of interest quality controllable video coding | |
CN113159272B (zh) | 一种用于处理神经网络的方法和*** | |
US11915138B2 (en) | Method and device for reducing a size of a neural network model |
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 |