CN114503125A - 结构化剪枝方法、***和计算机可读介质 - Google Patents
结构化剪枝方法、***和计算机可读介质 Download PDFInfo
- Publication number
- CN114503125A CN114503125A CN202080070371.0A CN202080070371A CN114503125A CN 114503125 A CN114503125 A CN 114503125A CN 202080070371 A CN202080070371 A CN 202080070371A CN 114503125 A CN114503125 A CN 114503125A
- Authority
- CN
- China
- Prior art keywords
- sub
- pattern
- row
- pruning
- input weight
- 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
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Machine Translation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种结构化剪枝方法、***和计算机可读介质。该结构化剪枝方法包括:接收输入权重模式;基于分块行列剪枝方法从输入权重模式获得输出权重模式,分块行列剪枝方法包括:将输入权重模式划分为子模式的网状网络,输入权重模式的每行包括第一数量的子模式的子行,输入权重模式的每列包括第二数量的子模式的子列;从每个子模式剪除相应的一个或多个子列以实现预定列稀疏度;以及在对于输入权重模式的每行,输入权重模式的相应行中的子模式的至少一个子行未剪除的约束下,从每个子模式剪除相应的一个或多个子行以实现预定行稀疏度。本公开实施例降低了与权重模式相关联的存储和计算成本。
Description
技术领域
本公开涉及神经网络技术领域,具体而言,涉及一种用于机器学习模型的结构化剪枝方法、***和计算机可读介质。
背景技术
随着神经网络技术的出现和发展,各种类型的神经网络模型已经被探索并应用于许多现实世界的应用,例如,包括语音识别、自然语言处理(natural languageprocessing,NLP)、预测、数据验证、风险管理等。给定特定的应用,例如语音识别,神经网络模型可以被训练以从训练样本中学习与该应用相关的规则和模式(pattern)。这些学习到的规则和模式以神经网络模型的层内和层间节点之间的连接(connection)的权重(或强度)的形式表示和存储,并且其通常使用权重矩阵(weight matrix)表示。
对于现实世界的应用,这种权重矩阵通常尺寸非常大,因此占用大量存储器,从而导致较大的存储开销。而且,当使用神经网络模型执行预测或决策(例如,确定声音是否由某个人发出)时,需要对权重矩阵执行大量的乘法和加法/累加运算以产生这种预测或决策的输出。当每次执行预测或决策时,这无疑会进一步导致巨大的计算成本或开销。这些存储和计算开销严重地影响了神经网络在存储和耗时方面的可用性和性能,且可能限制神经网络在具有高存储和计算能力的计算***中的使用。
发明内容
本发明内容部分介绍结构化剪枝(structured pruning)的简化概念,其将在下面的具体实施方式部分中进一步描述。本发明内容部分不是为了标识所要求保护的主题的基本特征,也不是为了用于限制所要求保护的主题的范围。
本公开描述了用于机器学习模型的结构化剪枝的示例性的实施例。
在一些实施例中,可以接收机器学习模型(例如神经网络模型)的输入权重模式(input weight pattern)。可以对输入权重模式执行分块行列剪枝(block-wise row andcolumn pruning,BRCP)算法,以产生用于机器学习模型的输出权重模式(output weightpattern)。分块行列剪枝算法可以包括将输入权重模式划分为多个子模式(sub-pattern)。例如,输入权重模式的每行可以被划分为第一数量的子行(即,第一数量的子模式的子行),并且输入权重模式的每列可以被划分为第二数量的子列(即,第二数量的子模式的子列)。分块行列剪枝算法还可以包括在输入权重模式的每行中的至少一个子行未剪除的约束下,从多个子模式中剪除子列和子行以分别实现预定列稀疏度和预定行稀疏度。在一些实施例中,第一数量可以与第二数量相同,也可以与第二数量不相同。
本公开实施例提供了结构化剪枝方法、***和计算机可读介质,降低了与权重模式相关联的存储和计算成本。
附图说明
具体实施方式部分参照附图进行阐述。在附图中,参考编号的最左边的数字标识参考编号首次出现在其中的图。在不同的附图中使用相同的参考编号表示相似或相同的项目。
图1示出了其中可以使用结构化剪枝***的示例性环境。
图2A示出了更详细的示例性结构化剪枝***。
图2B示出了可用于实现结构化剪枝***的示例性神经网络处理架构。
图2C示出了包括示例性神经网络处理架构以实现示例性结构化剪枝***的示例性云***。
图3示出了示例性结构化剪枝方法。
图4示出了示例性分块行列剪枝(block-wise row and column pruning,BRCP)算法。
图5示出了示例性解码过程。
图6示出了从由BRCP算法获得的输出权重模式到紧凑形式的压缩权重模式的示例性转换。
图7A、7B和7C示出了用于BRCP算法的示例性层级硬件设计。
图8A和8B示出了数据流,该数据流示出了图7A、7B和7C中描述的示例性硬件设计是如何有效地支持BRCP算法的。
图9示出了示例性行对齐策略(row alignment strategy)。
具体实施方式
如上所述,用于任何现实世界应用的现有机器学习模型(例如,神经网络模型)通常包括大尺寸权重矩阵,大尺寸权重矩阵占用大量存储空间且需要对权重矩阵进行大量的计算操作(例如,乘法和加法/累加操作)以产生现实世界应用的预测或确定的输出。这无疑影响了在日常生活应用中机器学习模型的可用性和性能,且可能限制机器学习模型在具有大存储和计算能力的大规模计算***中的使用。
本公开描述了一种示例性结构化剪枝***。结构化剪枝***可以以结构化方式将机器学习模型的输入权重模式(例如,权重矩阵)转换为比输入权重模式更稀疏的输出权重模式,并且可以以硬件友好的方式进一步压缩输出权重模式,即,以便于使用硬件进行计算的方式组织压缩权重模式。在一些实施例中,采用输出权重模式或压缩权重模式的神经网络模型的识别精确度可以与采用输入权重模式的神经网络模型的识别精确度相似。在一些实施例中,机器学习模型可以包括具有一个或多个权重模式的学习模型,其可以包括,但不限于,神经网络模型(例如,递归神经网络(recurrent neural network)、长短期记忆网络(long short-term memory network)等)、聚类模型(例如,层次聚类模型(hierarchicalclustering model)等)、贝叶斯网络(Bayesian network)等。
在一些实施例中,结构化剪枝***可以接收机器学习模型(例如,神经网络模型)的输入权重模式,并对输入权重模式应用分块行列剪枝(BRCP)算法以生成输出权重模式。在一些实施例中,BRCP算法可以包括将输入权重模式划分为多个子模式(sub-pattern,例如,n行和m列的块(block),其中n和m是大于1的正整数),其中输入权重模式的每行包括第一数量的子模式的子行(sub-row),并且输入权重模式的每列包括第二数量的子模式的子列(sub-column)。然后,BRCP算法可以包括在输入权重模式的每行中的至少一个子行未剪除的约束下,从多个子模式中剪除子列和子行以分别实现预定列稀疏度(sparsity)和预定行稀疏度。在一些实施例中,剪除子列或子行对应于将子列或子行中的所有元素设置为零。
在一些实施例中,在获得输出权重模式时,结构化剪枝***可以通过从输出权重模式中移除剪除的子列和子行来进一步压缩输出权重模式,以生成压缩权重模式,该压缩权重模式便于通过流水线硬件或诸如ASIC(Application-Specific Integrated Circuit,即专用集成电路)、FPGA(Field-Programmable Gate Array,即现场可编程门阵列)的多个处理单元、或其他硬件进行并行计算。
在一些实施例中,本公开描述的由结构化剪枝***执行的功能可以由多个单独的单元或服务执行。例如,接收服务可以接收输入权重模式,剪除服务可以对输入权重模式应用BRCP算法以生成输出权重模式,而压缩服务可以将输出权重模式压缩成硬件友好的紧凑的或稠密的权重模式。
此外,尽管在本公开描述的示例中,结构化剪枝***可以被实现为安装在单个设备中的软件和/或硬件,但在其他示例中,结构化剪枝***可以被实现和分布在多个设备中或者作为网络上的一个或多个服务器中和/或在云计算架构中提供的服务。
本公开描述了多个不同的实现和实施例。下面描述适合于实践各种实现的示例框架。接下来,本公开描述用于实现结构化剪枝***的示例性***、设备和过程。
示例性***
图1示出了可用于实现结构化剪枝***的示例性环境100。环境100可以包括结构化剪枝***102。在本示例中,结构化剪枝***102被描述为作为单个实体存在。在一些实例中,结构化剪枝***102可以包括在客户端设备104中。可选地,结构化剪枝***102可以包括一个或多个客户端设备。在其他实例中,结构化剪枝***102可以包括在通过网络108彼此通信数据的多个服务器106-1、106-2、……、106-N(其统称为服务器106)中。在一些实施例中,多个服务器106可以作为云或数据中心存在。
在一些实施例中,客户端设备104可以实现为各种计算设备中的任何一种,其包括但不限于,台式计算机、笔记本或便携式计算机、手持设备、上网本、互联网设备、平板或板式计算机、移动设备(例如,移动电话、个人数字助理、智能电话等)等,或其组合。客户端设备104可以经由网络108与多个服务器106数据通信,且可以从多个服务器106请求服务。
在一些实施例中,结构化剪枝***102的功能可以由客户端设备104提供或包括在客户端设备104中。在一些实例中,结构化剪枝***104的功能可以包括在多个服务器106中和/或分布在多个服务器106之间。例如,多个服务器106中的第一服务器可以包括结构化剪枝***102的部分功能,而结构化剪枝***102的其他功能可以包括在多个服务器106中的第二服务器中。附加地或可选地,结构化剪枝***102的功能可以包括在和分布在客户端设备104和多个服务器106中。此外,在一些实施例中,例如,结构化剪枝***102的一些或全部功能可以包括在云计算***或架构中,并且可以作为服务提供给客户端设备104。
网络108可以是无线或有线网络、或其组合。网络108可以是彼此互连的单个网络的集合且作为单个大型网络(例如,因特网或内联网)起作用。这些单个网络的示例包括,但不限于,电话网络、电缆网络、局域网(Local Area Network,LAN)、广域网(Wide AreaNetwork,WAN)和城域网(Metropolitan Area Network,MAN)。此外,单个网络可以是无线或有线网络、或其组合。有线网络可以包括电载体连接(例如,通信电缆等)和/或光载体或连接(例如,光纤连接等)。无线网络可以包括,例如,WiFi网络、其他射频网络(例如,Zigbee等)等。
在一些实施例中,结构化剪枝***104可以从客户端设备104的用户接收指令,以将与机器学习模型(例如,神经网络模型)相关联的输入权重模式转换为占用较少存储空间并且采用神经网络模型的输入来产生输出需要更少计算操作(例如,乘法和加法/累加操作)的输出权重模式。响应于接收输入权重模式,结构化剪枝***104可执行剪枝和压缩操作,以从输入权重模式获得较稀疏且计算强度较小的权重模式,并将获得的权重模式返回给客户端设备104,或将获得的权重模式存储在指定位置,例如一个或多个服务器106中的一个服务器的存储设备。
示例性结构化剪枝***
图2A示出了更详细的结构化剪枝***102。在一些实施例中,结构化剪枝***102包括,但不限于,一个或多个处理器202、存储器204、一个或多个应用或服务206(例如,剪枝应用或服务、压缩应用或服务等)和程序数据208。在一些实施例中,结构化剪枝***102还可以包括网络接口210和输入/输出(I/O)接口212。处理器202被配置为执行从网络接口210接收的、从输入/输出接口212接收的和/或存储在存储器204中的指令。附加地或可选地,结构化剪枝***102的一些或全部功能可以使用结构化剪枝***102中提供的ASIC(Application-Specific Integrated Circuit,即专用集成电路)、FPGA(Field-Programmable Gate Array,即现场可编程门阵列)或其他硬件来实现。在一些实施例中,一个或多个处理器202可以包括,但不限于,神经网络处理单元(neural network processingunit,NPU)、图形处理单元(graphic processing unit,GPU)、张量处理单元(tensorprocessing unit,TPU)、微处理器、专用指令集处理器(application-specificinstruction-set processor)、物理处理单元(physics processing unit,PPU)、数字信号处理器等。
存储器204可以包括诸如随机存取存储器(RAM)的易失性存储器形式的计算机可读介质和/或诸如只读存储器(ROM)或闪存RAM的非易失性存储器形式的计算机可读介质。存储器204是示例性的计算机可读介质。
计算机可读介质可以包括易失性或非易失性类型、可移动或不可移动介质,其可以使用任何方法或技术实现信息存储。信息可以包括计算机可读指令、数据结构、程序模块或其他数据。示例性计算机存储介质包括,但不限于,相变存储器(phase-change memory,PRAM)、静态随机存取存储器(static random access memory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、其他类型的随机存取存储器(random-accessmemory,RAM)、只读存储器(read-only memory,ROM)、电可擦除可编程只读存储器(electronically erasable programmable read-only memory,EEPROM)、快速闪存或其他内部存储技术、压缩磁盘只读存储器(compact disk read-only memory,CD-ROM)、数字多功能盘(digital versatile disc,DVD)或其他光存储设备、盒式磁带、磁盘存储器或其他磁存储设备、或可用于存储可由计算设备访问的信息的任何其他非传输介质。如本文所定义的,计算机可读介质不包括暂时性介质,例如,调制数据信号和载波。
在一些实施例中,结构化剪枝***102还可以包括权重模式数据库214,其被配置为存储在剪枝和压缩之后获得的结果权重模式的数据(例如,输出权重模式和/或压缩权重模式的数据)。
在一些实施例中,结构化剪枝***102可以使用神经网络处理架构或包括神经网络处理架构的云***来实现,以进一步提高吞吐量和功率效率(power efficiency)。另外地或可选地,结构化剪枝***102也可以使用能够执行并行计算的任何加速器来实现。
图2B示出了可用于实现结构化剪枝***102的示例性神经网络处理架构216。在一些实施例中,神经网络处理架构216可包括异构计算单元(heterogeneous computationunit,HCU)218、主机单元220和主机存储器222。异构计算单元218可以包括用于有利于和执行神经网络计算任务的专用计算设备或硬件。作为示例而非限制,异构计算单元218可以执行包括与机器学习算法相关联的操作的算法操作。
在一些实施例中,异构计算单元218可以是加速器,其可以包括,但不限于,神经网络处理单元(NPU)、图形处理单元(GPU)、张量处理单元(TPU)、微处理器、专用指令集处理器、物理处理单元(PPU)、数字信号处理器等。
在一些实施例中,异构计算单元218可包括一个或多个计算单元224、存储器层级结构226、控制器228和互连单元230。计算单元224可以访问存储器层级结构226以读写存储器层级结构226中的数据,并且可以进一步对数据执行诸如算术操作(例如,乘法、加法、乘-累加等)的操作。在一些实施例中,计算单元224还可以包括多个引擎,其被配置为执行各种类型的操作。作为示例而非限制,计算单元224可以包括标量引擎232和向量引擎234。标量引擎232可执行标量运算,例如,标量乘积、卷积等。向量引擎234可执行向量运算,例如,向量加法、向量乘积等。
在一些实施例中,存储器层级结构226可包括用作主存储器的片上存储器(例如,4块8GB第二代高带宽存储器(second generation of high bandwidth memory,HBM2))。存储器层级结构226可以被配置为存储数据和可执行指令,并且允许例如神经网络处理架构216的其他组件(例如,异构计算单元(HCU)218和主机单元220)、异构计算单元218(例如,计算单元224和互连单元230)和/或神经网络处理架构216外部的设备来高速访问存储的数据和/或存储的指令。
在一些实施例中,互连单元230可以提供或有利于异构计算单元218与异构计算单元218外部的其他设备或单元(例如,主机单元220、一个或多个其他HCU)之间的数据和/或指令的通信。在一些实施例中,互连单元230可包括***组件互连高速(peripheralcomponent interconnect express,PCIe)接口236和芯片互连(inter-chip connection)238。PCIe接口236可以提供或有利于异构计算单元218和主机单元220之间的数据和/或指令的通信。芯片互连238可用作芯片互连总线(inter-chip bus),以将异构计算单元218与诸如其他HCU、片外存储器和/或***设备的其他设备连接。
在一些实施例中,控制器228可以被配置为控制和协调异构计算单元218中包括的其他组件的操作。例如,控制器228可以控制和协调异构计算单元218中的不同组件(例如标量引擎232、向量引擎234和/或互连单元230)以有利于这些组件之间的并行操作或同步操作。
在一些实施例中,主机存储器222可以是片外存储器,例如,包括神经网络处理架构216的主机***或设备的一个或多个处理单元的存储器。在一些实施例中,主机存储器222可以包括DDR存储器(例如,DDR SDRAM)等,并且主机存储器222可以被配置为以与集成在一个或多个处理单元内的片上存储器相比较慢的访问速度存储大量数据,以充当更高层级的高速缓存。
在一些实施例中,主机单元220可以包括一个或多个处理单元(例如,X86中央处理单元(central processing unit,CPU))。在一些实施例中,具有主机单元220和主机存储器222的主机***或设备还可以包括编译器(图中未示出)。编译器可以是被配置为将以特定编程语言编写的计算机代码转换为可由异构计算单元218读取和执行的指令的程序或计算机软件。在机器学习应用中,编译器可以执行各种操作,这些操作可以包括,但不限于,预处理、词法分析、语法解析、语义分析、将输入程序转换为中间表示、代码优化和代码生成、或其任何组合。
图2C示出了包括神经网络处理架构216以实现结构化剪枝***102的示例性云***240。云***240可以提供具有机器学习和人工智能(artificial intelligence,AI)能力的云服务,并且云***240可以包括多个服务器,例如,服务器242-1、242-2……242-K(统称为服务器242),其中K是正整数。在一些实施例中,服务器242中的一个或多个服务器可以包括神经网络处理架构216。通过使用神经网络处理架构216,云***240可以提供结构化剪枝***102的部分或全部功能,以及诸如图像识别、面部识别、翻译、3D建模等其他机器学习和人工智能能力。
在一些实施例中,尽管上文描述了云***240,但在一些实例中,提供结构化剪枝***102的部分或全部功能的神经网络处理架构216可以部署在其他类型的计算设备中,这些计算设备可以包括,但不限于,移动设备、平板计算机、可穿戴设备、台式计算机等。
示例性方法
图3是描述结构化剪枝方法的示意图。图3的方法可以但不是必需在图1的环境中实现,也不是必须使用图2A的***。为了便于解释,参考图1和图2A描述了方法300。然而,可选地,方法300可以在其他环境中和/或使用其他***来实现。
在计算机可执行指令的一般上下文中描述方法300。通常,计算机可执行指令可以包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、过程、模块、函数等。此外,示例性方法被说明为逻辑流程图中的框集合,该逻辑流程图表示可以在硬件、软件、固件、或其组合中实现的操作序列。描述该方法的顺序并不旨在被解释为限制,并且可以以任何顺序组合任何数量的所描述的方法框以实现该方法或替代方法。另外,在不脱离本文所述主题的精神和范围的情况下,可以从该方法中省略单个框。在软件的上下文中,框表示计算机指令,当由一个或多个处理器执行计算机指令时,该一个或多个处理器执行所述操作。在硬件的上下文中,部分或全部框可以表示执行所述操作的专用集成电路(application specific integrated circuit,ASIC)或其他物理组件。
返回参考图3,在框302,结构化剪枝***102可以接收输入权重模式。
在一些实施例中,结构化剪枝***102可以从客户端设备104接收输入权重模式的数据。输入权重模式可以是使用训练样本集通过训练算法训练机器学习模型后获得的权重模式。在一些实施例中,机器学习模型可以包括具有权重模式的学习模型,例如神经网络模型。在不丧失一般性的情况下,为了描述起见,以下使用神经网络模型作为机器学习模型的示例。以下描述还可适用于包括权重模式的任何其他机器学习模型,该权重模式的一些元素可被剪除以实现本公开中描述的结构化剪枝的目的。
在一些实施例中,输入权重模式可以是存储神经网络模型的某一层的权重信息的数据结构。可选地,输入权重模式可以是一个或多个数据结构,其中每个数据结构存储神经网络模型的多个层中对应层的权重信息。
在一些实施例中,存储神经网络模型的层的权重信息的数据结构可以包括,例如,尺寸为N×M的矩阵,其中N和M是大于1的正整数,具有存储非零权重值的至少一个阵列(array)和存储这些非零权重值的对应索引的另一个阵列的多个阵列,等等。在本示例中,为了说明,输入权重模式被描述为与神经网络模型的某一层相关联的矩阵格式的数据结构,并且可以以类似的方式对神经网络模型的其他层的数据结构进行处理。此外,在数据结构不是矩阵格式的情况下,可以应用适当的转换以将数据结构转换为矩阵格式。
在框304,结构化剪枝***102可基于指定的剪枝算法从输入权重模式获得输出权重模式。
在一些实施例中,结构化剪枝***102可以通过应用指定的剪枝算法来对输入权重模式进行剪除以获得输出权重模式。在一些实施例中,指定的剪枝算法可以包括分块行列剪枝(BRCP)算法。
作为示例而非限制,在框304-2,BRCP算法可以包括将输入权重模式划分为多个子模式,其中输入权重模式的每行包括第一数量的子模式的子行,输入权重模式的每列包括第二数量的子模式的子列。在框304-4,BRCP算法还可以包括在输入权重模式的每行中的至少一个子行未剪除的约束下,从多个子模式中剪除子列和子行以分别实现预定列稀疏度和预定行稀疏度。BRCP算法的更多细节将在后面的部分中描述。
在一些实施例中,结构化剪枝***102可将输入权重模式划分为多个子模式。作为示例而非限制,结构化剪枝***102可以将输入权重模式(例如,尺寸为N×M的权重矩阵)划分为K个堆(bank),其中每个堆被划分为L个块(block,即子模式),其中N、M、K和L是大于1的整数,N大于L,并且M大于K。换句话说,输入权重模式的每行被划分为(并且包括)K个子行,每个子行来自于K个相应子模式中相应的一个子模式。类似地,输入权重模式的每列被分成(并且包括)L个子列,每个子列来自于L个相应子模式中相应的一个子模式。有关这种划分的更多细节可以在后面的部分中找到。
在一些实施例中,对子列(或子行)进行剪除可以包括将子列(或子行)中的元素设置为零。在一些实施例中,向量(例如子列或子行)的范数可以对应于向量的每个元素的平方之和的平方根。在一些实施例中,(例如,矩阵形式的)数据的稀疏度是数据中零值的度量(即,矩阵中具有零值的元素的百分比的度量)。数据的高稀疏度对应于数据中大量元素的值为零。例如,某一结构(例如,矩阵、列、或行等)中数据的稀疏度为90%,意味着数据中90%的元素(即,诸如矩阵、列、或行等结构中的元素)的值为零。
在一些实施例中,从多个子模式中剪除子列以实现预定列稀疏度可包括响应于确定子模式的子列的范数小于预定子列阈值,对子模式的子列进行剪除。
在一些实施例中,在输入权重模式的每行中至少一个子行未剪除的约束下,从多个子模式剪除子行以实现预定行稀疏度可以包括响应于确定子模式的子行的范数小于预定子行阈值,对子模式的子行进行剪除。
附加地或可选地,在输入权重模式的每行中至少一个子行未剪除的约束下,从多个子模式中剪除子行以实现预定行稀疏度可以包括确定输入权重模式的特定行中所有子行的相应范数小于预定子行阈值;以及保留输入权重模式的特定行中所有子行的相应范数中最高范数的至少一个子行,以及剪除输入权重模式的特定子行中的剩余子行。
在一些实施例中,可以分别基于预定列稀疏度和预定行稀疏度来确定子列阈值和子行阈值。作为示例而非限制,可以计算输入权重模式中多个子模式的相应子列范数和子行范数,并且可以确定能够达到预定列稀疏度和预定行稀疏度的子列范数和子行范数的截止值,以及将其分别设置为子列阈值和子行阈值。
在一些实施例中,如果结构化剪枝***102访问与输入权重模式相关联的神经网络模型,则结构化剪枝***102还可以确定采用输出权重模式的神经网络模型的精确度。具体地,如上所述,输入权重模式可以是在使用训练样本集通过训练算法训练神经网络模型之后获得的权重模式,并且可以使用测试样本集来确定采用输入权重模式的神经网络模型的精确度。在一些实施例中,在使用指定的剪枝算法(例如,BRCP算法)从输入权重模式获得输出权重模式之后,结构化剪枝***102还可以使用相同的测试样本集确定采用输出权重模式的神经网络模型的精确度,并将该确定的采用输出权重模式的神经网络模型的精确度与采用输入权重模式的神经网络模型的精确度进行比较。
如果采用输出权重模式的神经网络模型的精确度不小于采用输入权重模式的神经网络模型的精确度的预定百分比(例如,1%、2%、3%等),则结构化剪枝***102可以接受输出权重模式。否则,结构化剪枝***102可自动减少列稀疏度和/或行稀疏度,并在输入权重模式上重新应用BRCP算法以产生新的输出权重模式,直到具有新的输出权重模式的神经网络具有不小于采用输入权重模式的神经网络模型的精确度的预定百分比的精确度。
可选地,结构化剪枝***102可以通知客户端设备104的用户采用输出权重模式的神经网络模型的精确度降低超过预定百分比,并等待来自用户的精确度的这种降低是否是可接受的或者是否需要结构化剪枝***102使用不同的列稀疏度和/或行稀疏度再次执行剪枝算法的指令。
在框306,结构化剪枝***102可压缩输出权重模式以生成紧凑形式的压缩权重模式。
在一些实施例中,结构化剪枝***102可以通过从输出权重模式中移除其中元素的值为全零的子列和子行来压缩输出权重模式以产生紧凑形式的压缩权重模式。
在框308,结构化剪枝***102可存储压缩权重模式。
在一些实施例中,结构化剪枝***102可以将压缩权重模式存储在存储器204中,例如,权重模式数据库210,或者将压缩权重模式发送到客户端设备104或一个或多个服务器106中的一个服务器以供存储。
本文所述的任何方法的任何动作可以至少部分地由处理器或其它电子设备基于存储在一个或多个计算机可读介质上的指令来执行。作为示例而非限制,本文描述的任何方法的任何动作可以在配置有可存储在一个或多个计算机可读介质上的可执行指令的一个或多个处理器的控制下执行。
示例性结构化剪枝算法
如前述说明中所述,结构化剪枝***102可在输入权重模式上应用称为分块行列剪枝(BRCP)算法的指定剪枝算法,以产生输出权重模式。为了进一步理解BRCP算法,在下文中从三个方面对该算法进行了详细的描述:(1)算法原型,旨在实现权重和索引的高整体存储或存储器减少,以及实现高效解码;(2)算法硬件协同设计,通过分析算法的特性和硬件设计可能遇到的一个或多个约束来实现;(3)硬件感知算法设计,采用算法的特性和一个或多个约束作为指导。
在一些实施例中,剪除神经网络的一层的权重模式(例如,权重矩阵)中的整个列,这相当于去除相应的输入激活(activation)。另一方面,剪除权重模式中的整个行,这相当于去除相应的输出激活。具体地,由于丢失了激活信息,这两种类型的剪除只能达到有限的剪枝率(pruning ratio)。相反,保留激活信息可以有利于实现高剪枝率。
在一些实施例中,BRCP算法被配置为避免整个列和/或整个行被去除,从而通过避免丢失激活信息来有利于实现高剪枝率。
表1详细示出了BRCP算法的示例。图4示出了示例性的分块行列剪枝(BRCP)算法400。根据表1和图4,BRCP算法首先可以将权重模式(在本例中为权重矩阵W∈Rm×n)分成多个堆(在本例中为两个堆,即W0∈Rm×n1和W1∈Rm×n2,其中m为行数,n为列数,)。在本示例中,尽管该权重模式被划分为两个堆,但在其他情况下,权重模式可以被划分为两个以上的堆,例如,三个堆、四个堆等。在一些实施例中,从权重模式中划分的堆的数量可以取决于权重模式的尺寸大小、用于探索稀疏度的粒度程度、可用于并行处理堆的处理单元的数量、或由结构化剪枝***102的管理员设置的任何其他标准。
表1:BRCP算法
在一些实施例中,在将权重模式划分为多个堆(例如,在本示例中为两个堆)之后,然后BRCP算法可以将每个堆划分为块(即,子模式),其中b是每个块(即,子模式)中的行数(即,子行),在一些实施例中,可以在每个块内单独地执行列剪除,而不是在整个权重模式(即,整个权重矩阵W)内。在本例中,由于权重模式被分成两个堆,因此权重模式的每行也被分成两个半行(half-row,即,两个子行)。在一些实施例中,然而,如果权重模式被分成两个以上的堆,则权重模式的每行可以被分成两个以上的子行。两个堆仅用于说明,当权重模式被划分为两个以上堆时,可以扩展和应用下文描述的算法。
在执行列剪除之后,可以在整个权重模式(即,整个权重矩阵W)上执行行剪除,并具有(堆专有的)约束,即:对于权重模式中的任何行,允许剪除两个半行中的至多一个,或者换句话说,两个半行中的至少一个未剪除。该约束避免了权重模式中的任何行被完全剪除,从而避免了相应输出激活的删除。在一些实施例中,如果权重模式的每行可被划分为不只两个子行,则约束可包括权重模式的任何行中的至少一个子行未剪除。
在一些实施例中,为了使输出权重模式(即,采用输出权重模式的神经网络模型)硬件友好地获得高速度提升,可以使用算法硬件协同设计方法,使得对剪枝算法的任何优化都可以是硬件感知的。在一些实施例中,对于诸如输出权重模式的剪枝矩阵,知道与保留的权重(即,由于诸如BRCP算法的剪枝算法,输出权重模式中被保留且未剪除的元素)相关联的激活的坐标是重要的。因此,在计算期间,需要解码,从与输出权重模式相关联的神经网络层的输入(即,输入向量)中选择与保留的权重相关联的激活。图5示出了示例性的解码过程500。在图5中,每个保留的权重可以有一个用于解码的索引。如果执行不规则或随机剪除,这些索引可能是任意的和随机的,因此需要在整个输入向量上进行搜索。考虑到解码的带宽可能是有限的,对于不规则或随机剪除,解码通常不能被加速。因此,增加由公共索引共享的权重(或权重模式中的元素)的数量可以有助于提高或加速与权重模式相关联的计算性能。
在一些实施例中,BRCP算法中的b值(子模式中的子行数)是决定由公共索引共享的权重(即,权重模式中的元素)的数量的因子。因此,b值越大,索引的数量越少,解码可以越快。在一些实施例中,给定块(即,子模式)的稀疏度为p,在本示例中用于解码权重模式的半行所耗费的时间为这也是用于解码整个块所耗费的时间。因此,解码块的平均延时为在一些实施例中,如果有足够的硬件资源可用,可以并行解码两个堆的多个块以提高总体吞吐量。如果g表示被并行解码的组(group)的数量,则用于解码权重模式的每行所耗费的平均时间可表示为如下公式(1),公式(1)为:
在一些实施例中,为了提高硬件资源的利用率,解码器和处理引擎(processengine,PE)可以以相同的速度操作而无需彼此等待。例如,如果s表示可用的处理引擎的数量,则计算一个组(group)所耗费的时间满足如下公式(2)和(3)中定义的约束,公式(2)为:
公式(2)可以简化为:
s=b (3)
基于以上分析,BRCP算法可以同时提高剪枝率和剪枝性能。在一些实施例中,对于硬件设计,s可以被设置为等于b,以确保解码器和处理引擎的利用率。此外,在一些实施例中,例如,只要硬件资源可用或硬件资源的成本是可接受的,g可以被设置为足够大以改善解码和计算的并行性。
在一些实施例中,对于算法设计,公式(2)表明增加可以帮助提高解码性能。因此,b可以基于的最优值来确定,该最优值也可以受制于片上存储器预算。在一些实施例中,给定整体稀疏度p包括列稀疏度pc和行稀疏度pr,还可以对列稀疏度pc施加多个约束,以允许硬件设计友好。作为示例而非限制,该多个约束可以包括:(1)所有块(即,子模式)都具有相同的列稀疏度pc,以降低解码的复杂度;(2)n·pc是s的倍数,以便处理引擎可以全速运行。这可以通过相应地取舍或更改行稀疏度pr来实现。
在一些实施例中,分块列剪除和堆专有的行剪除使得BRCP算法能够对输出权重模式实现较高的剪枝率,而与输入权重模式相比没有精确度损失,同时显著降低索引和解码的复杂性。此外,BRCP算法执行权重模式或矩阵(即,输出权重模式或矩阵)的恢复(restoration)和计算,而不需要将权重模式转换到频域,因此由BRCP算法引起的存储或存储器的减少可以导致计算的全面减少。此外,通过约束每个块(即,每个子模式)具有相同的列稀疏度pc,且在行方向上划分块(即,子模式),BRCP算法具有硬件友好性且能获得卓越的加速。在一些实施例中,作为稀疏权重模式的输出权重模式可以采用保留的元素(即,权重)的相对位置压缩成紧凑形式。例如,图6示出了从输出权重模式到压缩权重模式的示例性转换或压缩600。
示例性硬件架构设计
图7A、7B和7C示出了支持BRCP算法的示例性层级硬件设计。图7A示出了长短期记忆(Long Short Term Memory,LSTM)层的示例性硬件设计。图7B示出了门(Gate)的示例性硬件设计。图7C示出了稀疏组计算引擎(Sparse Group Compute Engine,SGCE)的示例性硬件设计。在本例中,虽然使用了长短期记忆(LSTM)来说明,但所描述的BRCP算法和硬件设计也可以应用于其他类型的神经网络模型。顶层阻塞块(top-level blocking block)是LSTM层的门。作为示例而非限制,如图4所示,门可以包括多个功能门,例如,单元门(cellgate)、遗忘门(forget gate)、输入门(input gate)、和输出门(output gate)。在一些实施例中,功能门(functional gate)可以包括两个点积引擎(Dot Product Engine,DPE)和激活函数单元,且负责执行计算f(xWx+hWh+bias),其中f(.)表示函数,例如,该函数可以是sigmoid或tanh函数。
在一些实施例中,可以并行处理多个权重块(即,权重子模式)以提高计算吞吐量。在本示例中,每个点积引擎(DPE)可以用多个稀疏组计算引擎(SGCE)构建,这些稀疏组计算引擎(SGCE)用于处理一组块,例如,如图7B所示,来自堆0的一个块和来自堆1的另一个块。在本例中,尽管描述了一组中的两个块,但一组可以包括两个以上的块,并且稀疏组计算引擎(SGCE)可以用于相应地处理一组中的两个以上的块。
在一些实施例中,SGCE可包括多个稀疏块计算引擎(Sparse Block ComputeEngine,SBCE),其可用作基本处理基元(basic processing primitive)。作为示例而非限制,如图7C所示,SBCE可以将解码的激活和相应的权重作为输入,并且计算块的部分和(partial sum,PS)。此外,每个SBCE可以使用用于临时存储解码的激活的激活缓冲器。在一些实施例中,解码的激活和相应的权重可以被输入到处理引擎中以计算乘法和累加(即,加法)。
由于行剪除的性质,来自不同堆的子行可能不会彼此对齐。在一些实施例中,为了解决这种潜在的不对齐,可以使用行对齐逻辑来跳过对已剪除的子行的计算,并确保相同行的子行的部分和可以正确地被相加或累加。
在一些实施例中,由于所有SGCE遵循相同的处理流水线,因此可以在SGCE之间共享多个功能组件,这些功能组件可以包括,但不限于,权重存储器、索引存储器、权重和索引加载/存储的控制逻辑、索引解码逻辑、和处理引擎。另一方面,每个SGCE可能有其自己的输入和隐藏状态(hidden state)。在一些实施例中,可以使用查找表来实现分段线性函数(piece-wise linear function),以近似用于实现激活函数的sigmoid和tanh函数。此外,可以采用分治策略(divide-and-conquer strategy)来设计控制逻辑。在一些实施例中,可以在每个DPE中部署微控制器,以最大限度地利用共享资源并保证功能的正确性。可选地,在一些实施例中,全局控制逻辑可以跨多个DPE或多个功能门(functional gate)存在。在一些实施例中,将复杂的全局控制划分为多个微控制可以显著降低设计的复杂性,并且由于每个DPE可以独立运行可以具有突出的可扩展性,而局部控制器可以帮助减少通信延迟。
图8A和8B示出了数据流,该数据流示出了图7A、7B和7C中描述的结构是如何有效地支持BRCP算法的。如上所述,输入权重模式(以及因此输出权重模式)可以被划分为多个堆。为了描述起见,在不失一般性的情况下,本例中描述了两个堆。然而,以下描述可以被推广到当权重模式被划分为两个以上堆的情况。
作为示例而非限制,如图8A所示,输出权重模式(在本例中其是稀疏权重矩阵)可以被压缩并以紧凑的形式存储。压缩的或稠密的权重矩阵然后可以被分成两个堆(即,本示例中的堆0和堆1),并且每个堆还可以被分成多个块。例如,如图8B所示,来自不同堆的两个块(即,子模式)可以形成一个组,并且可以由处理引擎独立地处理。
在一些实施例中,块中的每个子行还可以划分为向量。如图8B所示,同一子行中的向量以相同的方式阴影化(shade)。在一些实施例中,可以并行处理多个组。如图8B所示,每个堆的向量被馈送到相应的用于点积计算的处理引擎中,以产生部分和(PS)。在一些实施例中,可以跳过对已剪除子行的计算,同时可以使用行对齐逻辑来将来自两个堆的相应部分和对齐。可以通过相加偏置(bias)并应用激活函数来生成和获得最终结果。
在一些实施例中,还可以使用压缩稀疏行(compressed sparse row,CSR)格式来编码输出权重模式(即,稀疏权重矩阵),以便在BRCP算法所导致的索引存储成本降低的基础上进一步降低存储开销。CSR格式通过三个(一维)阵列(array)表示矩阵,这些阵列分别包括非零值、行范围(extent of row)和列索引。该CSR格式指示两个非零元素之间的相对距离。在一些实施例中,可以从索引存储器加载索引并且可以将索引发送到激活检测器,以产生馈送到SGCE中用于计算的适当的激活。可能需要索引解码器来从向量中选择有用的激活(例如,非零激活)。在一些实施例中,为了性能起见,解码器可以保持在高带宽,这需要多个实例。
在一些实施例中,为了解决平衡和路由这些多个高带宽组件(例如,索引解码器)的设计挑战,可以缩小激活检测器的接口宽度。例如,如图7B所示的激活检测器的输入接口可以是n比特宽,其中n<<m。在一些实施例中,由于计算整个权重矩阵(即,权重模式)所耗费的时间,乒乓缓冲器可进一步用于隐藏与数据加载相关联的时延。在一些实施例中,如果一个缓冲器用于计算,则另一个缓冲器可用于加载数据以供下一层处理。此外,由于解码速率是每个解码器每个周期一个激活(one activation per cycle per decoder),聚合的输出带宽(aggregated output bandwidth)可以随着并行操作的解码器的总数量线性地增加。
在一些实施例中,需要将一组的多个块(在本示例中的两个块)的部分和相加以产生点积的最终结果。由于行剪除可能导致多个块之间的一些不对齐,因此提出了行对齐方案来解决这些不对齐。图9示出了示例性行对齐策略900。在一些实施例中,多个缓冲器可用于临时存储由一组的多个块生成和获得的部分和,每个块对应一个缓冲器。例如,如图9所示,两个缓冲器分别用于临时存储由一组的两个块(例如,来自堆0的左块和来自堆1的右块)生成和获得的部分和。如果一个半行被剪除,则可以通过跳过一个步骤将部分和存储到缓冲器中,并且可以在该跳过一个步骤的过程中将该缓冲器重置为零。可以通过依次从两个缓冲器中获取相应的部分和来执行求和。例如,如图9所示,<l0,l1,…,li>可以表示左块的非零部分和,<r0,r1,…,ri>可以表示右块的非零部分和,其中i表示对应块中的行索引。最终的点积结果可以通过d0=l0+r0,d1=l1+0,d2=0+r2等来计算。在获取部分和之后,相应的缓冲器条目被释放以接受新的部分和。
在一些实施例中,由于层次化和模块化的结构设计,BRCP的可以高度灵活地实现不同程度的可伸缩性(scalability)和剪枝率。具体地,前述说明中描述的硬件感知剪枝算法设计可以有利于硬件资源的利用。例如,通过调整列稀疏度pc,可以将保留的权重的数量设置为处理引擎的数量的倍数。因此,因为不需要对子列进行零填充,可以简化控制设计。此外,处理引擎的数量可被设计成与组中的块(即,子模式)的数量相匹配,因此解码过程可具有与处理引擎相同的吞吐量,从而可充分利用所有单元。此外,由于每个DPE可以独立工作,并且每个DPE中的SGPE是同构的,因此可以通过并行工作的门的数量或组的数量来扩展结构。由于每个存储器堆(memory bank)的带宽需要满足组的需求,因此存储器堆的数量也可以同时缩放。
尽管在上述示例中使用将权重模式划分为两个堆来说明BRCP算法和相关硬件设计的各种实现,但在一些实施例中,权重模式可以被划分为多个堆,所述多个堆可以多于两个堆,并且上述实现可以相应地推广以应用于这种情况。
在一些实施例中,上述算法(例如,BRCP算法、解码处理等)适合于通过各种类型的硬件平台来实现,这些硬件平台可以包括,但不限于,中央处理单元(central processingunit,CPU)、图形处理单元(graphic processing unit,GPU)、现场可编程门阵列(field-programmable gate array,FPGA)和专用集成电路(application-specific integratedcircuit,ASIC)等。如上所述的块尺寸大小和剪枝率可以根据不同平台的各自特性来配置,以实现最优或期望的加速性能。例如,由于用于支持前述解码处理的FPGA和ASIC的灵活性(例如,为保留的权重选择相应的激活),前述说明中描述的算法适合于通过专用处理架构来实现,例如如上所述的神经网络处理架构216,以及任何其他基于FPGA/ASIC的神经网络加速器。
在一些实施例中,BRCP算法有助于减少机器学习模型的参数数量(例如,神经网络模型的非零权重的数量)和使用该参数(例如,权重)的计算次数,因此加速或加快了计算。此外,如果使用诸如上述的神经网络处理架构216和任何其他基于FPGA/ASIC的神经网络加速器的专用处理架构来实现前述算法,则可以减少本地存储器到外部存储器之间的访问次数,并且还可以减少计算的总次数。此外,通过适当的配置,可以进一步提高加速器的处理性能。
在一些实施例中,对于给定的精确度,较大的块尺寸大小(即,较大的子模式的尺寸大小)有利于实现较高的解码效率,这是因为可以共享相同索引的权重的数量更高,导致算术计算的平均处理速度更高。另一方面,较大的块尺寸大小可导致较低的可实现的稀疏度,并因此导致较少的可实现的计算次数减少。在一些实施例中,给定特定的块尺寸大小,较高的精确度要求可以导致较低的稀疏度,较低的精确度要求可以导致较高的稀疏度。因此,给定特定的应用和精确度要求,可以联合考虑块尺寸大小和稀疏度以实现最优的或期望的计算加速。
结论
尽管已经用特定于结构特征和/或方法动作的语言描述了实施例,但应当理解,权利要求并不一定局限于所描述的特定特征或动作。相反,所述特定特征和动作被公开为实现所要求保护的主题的示例性形式。附加地或可选地,一些或全部操作可以由一个或多个ASIC、FPGA、或其他硬件来实现。
Claims (20)
1.一种用于机器学习模型的结构化剪枝方法,包括:
接收输入权重模式;
基于分块行列剪枝方法从所述输入权重模式获得输出权重模式,所述分块行列剪枝方法包括:
将所述输入权重模式划分为子模式的网状网络,所述输入权重模式的每行包括第一数量的子模式的子行,所述输入权重模式的每列包括第二数量的子模式的子列;
从每个子模式剪除相应的一个或多个子列以实现预定列稀疏度;以及
在对于所述输入权重模式的每行,所述输入权重模式的相应行中的子模式的至少一个子行未剪除的约束下,从每个子模式剪除相应的一个或多个子行以实现预定行稀疏度。
2.根据权利要求1所述的结构化剪枝方法,其中,剪除相应的一个或多个子列包括:
将相应的一个或多个子列中的所有权重值设置为零。
3.根据权利要求1所述的结构化剪枝方法,其中,所述方法还包括:
通过从所述输出权重模式中移除权重值为全零的子列和子行,以紧凑形式压缩所述输出权重模式。
4.根据权利要求1所述的结构化剪枝方法,其中,从所述子模式的网状网络的每个子模式剪除相应的一个或多个子列以实现预定列稀疏性包括:
响应于确定子模式的子列的范数小于第一预定阈值,剪除所述子模式的子列。
5.根据权利要求4所述的结构化剪枝方法,其中,所述子列的范数包括所述子列的每个元素的平方之和的平方根。
6.根据权利要求1所述的结构化剪枝方法,其中,在约束下从所述子模式的网状网络的每个子模式中剪除相应的一个或多个子行以实现预定行稀疏度包括:
响应于确定子模式的子行的范数小于第二预定阈值,剪除所述子模式的子行。
7.根据权利要求6所述的结构化剪枝方法,其中,在约束下从所述子模式的网状网络的每个子模式中剪除相应的一个或多个子行以实现预定行稀疏度还包括:
确定所述输入权重模式的特定行中的所有子行的相应范数小于所述第二预定阈值;以及
保留所述输入权重模式的特定行中的所有子行的相应范数中最高范数的至少一个子行,并剪除所述输入权重模式的特定子行中的剩余子行。
8.根据权利要求1所述的结构化剪枝方法,其中,从每个子模式剪除相应的一个或多个子列以实现预定列稀疏度包括:
从每个子模式剪除相应的一个或多个子列,使得所述输出权重模式中子列的稀疏度在预定列稀疏度附近的预定范围内。
9.一种计算机可读介质,所述计算机可读介质用于存储可执行指令,在执行所述可执行指令时,所述一个或多个处理器执行以下动作:
接收输入权重模式;
基于分块行列剪枝方法从所述输入权重模式获得输出权重模式,所述分块行列剪枝方法包括:
将所述输入权重模式划分为子模式的网状网络,所述输入权重模式的每行包括第一数量的子模式的子行,所述输入权重模式的每列包括第二数量的子模式的子列;
从每个子模式剪除相应的一个或多个子列以实现预定列稀疏度;以及
在对于所述输入权重模式的每行,所述输入权重模式的相应行中的子模式的至少一个子行未剪除的约束下,从每个子模式剪除相应的一个或多个子行以实现预定行稀疏度。
10.根据权利要求9所述的计算机可读介质,其中,剪除相应的一个或多个子列包括:
将相应的一个或多个子列中的所有权重值设置为零。
11.根据权利要求9所述的计算机可读介质,其中,所述动作还包括:
通过从所述输出权重模式中移除权重值为全零的子列和子行,以紧凑形式压缩所述输出权重模式。
12.根据权利要求9所述的计算机可读介质,其中,从所述子模式的网状网络的每个子模式中剪除相应的一个或多个子列以实现预定列稀疏度包括:
响应于确定子模式的子列的范数小于第一预定阈值,剪除所述子模式的子列。
13.根据权利要求12所述的计算机可读介质,其中,所述子列的范数包括所述子列的每个元素的平方之和的平方根。
14.根据权利要求9所述的计算机可读介质,其中,在约束下从所述子模式的网状网络的每个子模式中剪除相应的一个或多个子行以实现预定行稀疏度包括:
响应于确定子模式的子行的范数小于第二预定阈值,剪除所述子模式的子行。
15.根据权利要求14所述的计算机可读介质,其中,在约束下从所述子模式的网状网络的每个子模式中剪除相应的一个或多个子行以实现预定行稀疏度还包括:
确定所述输入权重模式的特定行中的所有子行的相应范数小于所述第二预定阈值;以及
保留所述输入权重模式的特定行中的所有子行的相应范数中最高范数的至少一个子行,并剪除所述输入权重模式的特定子行中的剩余子行。
16.根据权利要求9所述的计算机可读介质,其中,从每个子模式剪除相应的一个或多个子列以实现预定列稀疏度包括:
从每个子模式剪除相应的一个或多个子列,使得所述输出权重模式中子列的稀疏度在预定列稀疏度附近的预定范围内。
17.一种用于机器学习模型的结构化剪枝***,包括:
一个或多个神经网络处理单元;
存储器,用于存储可执行指令,在所述一个或多个神经网络处理单元执行所述可执行指令时,使得所述一个或多个神经网络处理单元执行以下动作:
接收输入权重模式;
基于分块行列剪枝方法从所述输入权重模式获得输出权重模式,所述分块行列剪枝方法包括:
将所述输入权重模式划分为子模式的网状网络,所述输入权重模式的每行包括第一数量的子模式的子行,所述输入权重模式的每列包括第二数量的子模式的子列;
从每个子模式剪除相应的一个或多个子列以实现预定列稀疏度;以及
在对于所述输入权重模式的每行,所述输入权重模式的相应行中的子模式的至少一个子行未剪除的约束下,从每个子模式剪除相应的一个或多个子行以实现预定行稀疏度。
18.根据权利要求17所述的结构化剪枝***,其中,剪除相应的一个或多个子列包括:
将相应的一个或多个子列中的所有权重值设置为零,
所述动作还包括:
通过从所述输出权重模式中移除权重值为全零的子列和子行,以紧凑形式压缩所述输出权重模式。
19.根据权利要求17所述的结构化剪枝***,其中,从所述子模式的网状网络的每个子模式中剪除相应的一个或多个子列以实现预定列稀疏度包括:
响应于确定子模式的子列的范数小于第一预定阈值,剪除所述子模式的子列。
20.根据权利要求17所述的结构化剪枝***,其中,在约束下从所述子模式的网状网络的每个子模式中剪除相应的一个或多个子行以实现预定行稀疏度包括:
响应于确定子模式的子行的范数小于第二预定阈值,剪除所述子模式的子行;
确定所述输入权重模式的特定行中的所有子行的相应范数小于所述第二预定阈值;以及
保留所述输入权重模式的特定行中的所有子行的相应范数中最高范数的至少一个子行,并剪除所述输入权重模式的特定子行中的剩余子行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/664,616 US11816574B2 (en) | 2019-10-25 | 2019-10-25 | Structured pruning for machine learning model |
US16/664,616 | 2019-10-25 | ||
PCT/US2020/056084 WO2021080873A1 (en) | 2019-10-25 | 2020-10-16 | Structured pruning for machine learning model |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114503125A true CN114503125A (zh) | 2022-05-13 |
Family
ID=75585246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080070371.0A Pending CN114503125A (zh) | 2019-10-25 | 2020-10-16 | 结构化剪枝方法、***和计算机可读介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11816574B2 (zh) |
CN (1) | CN114503125A (zh) |
WO (1) | WO2021080873A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11763156B2 (en) * | 2019-11-15 | 2023-09-19 | Microsoft Technology Licensing, Llc | Neural network compression based on bank-balanced sparsity |
US20210264239A1 (en) * | 2020-02-20 | 2021-08-26 | Tencent America LLC | Method and apparatus for neural network optimized matrix-matrix multiplication (nnmm) |
CN111507473B (zh) * | 2020-04-20 | 2023-05-12 | 上海交通大学 | 一种基于Crossbar架构的剪枝方法及*** |
US11657285B2 (en) * | 2020-07-30 | 2023-05-23 | Xfusion Digital Technologies Co., Ltd. | Methods, systems, and media for random semi-structured row-wise pruning in neural networks |
US20220147826A1 (en) * | 2020-11-06 | 2022-05-12 | Moffett Technologies Co., Limited | Method and system for convolution with workload-balanced activation sparsity |
US20220310068A1 (en) * | 2021-03-25 | 2022-09-29 | Kwai Inc. | Methods and devices for structured pruning for automatic speech recognition |
US20220383121A1 (en) * | 2021-05-25 | 2022-12-01 | Applied Materials, Inc. | Dynamic activation sparsity in neural networks |
CN113947185B (zh) * | 2021-09-30 | 2022-11-18 | 北京达佳互联信息技术有限公司 | 任务处理网络生成、任务处理方法、装置、电子设备及存储介质 |
US20230360642A1 (en) * | 2022-05-09 | 2023-11-09 | International Business Machines Corporation | Self-supervised speech recognition |
WO2024020675A1 (en) * | 2022-07-26 | 2024-02-01 | Deeplite Inc. | Tensor decomposition rank exploration for neural network compression |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5288645A (en) | 1992-09-04 | 1994-02-22 | Mtm Engineering, Inc. | Hydrogen evolution analyzer |
US9372877B2 (en) | 2014-05-05 | 2016-06-21 | Microsoft Technology Licensing, Llc | Sparse datatable data structure |
WO2017156547A1 (en) | 2016-03-11 | 2017-09-14 | Magic Leap, Inc. | Structure learning in convolutional neural networks |
US20180082181A1 (en) | 2016-05-13 | 2018-03-22 | Samsung Electronics, Co. Ltd. | Neural Network Reordering, Weight Compression, and Processing |
US10885437B2 (en) | 2016-05-18 | 2021-01-05 | Nec Corporation | Security system using a convolutional neural network with pruned filters |
US11315018B2 (en) | 2016-10-21 | 2022-04-26 | Nvidia Corporation | Systems and methods for pruning neural networks for resource efficient inference |
CN106548234A (zh) | 2016-11-17 | 2017-03-29 | 北京图森互联科技有限责任公司 | 一种神经网络剪枝方法及装置 |
EP3340129B1 (en) * | 2016-12-21 | 2019-01-30 | Axis AB | Artificial neural network class-based pruning |
US10127495B1 (en) * | 2017-04-14 | 2018-11-13 | Rohan Bopardikar | Reducing the size of a neural network through reduction of the weight matrices |
US11651223B2 (en) | 2017-10-27 | 2023-05-16 | Baidu Usa Llc | Systems and methods for block-sparse recurrent neural networks |
US11250325B2 (en) | 2017-12-12 | 2022-02-15 | Samsung Electronics Co., Ltd. | Self-pruning neural networks for weight parameter reduction |
US10657426B2 (en) | 2018-01-25 | 2020-05-19 | Samsung Electronics Co., Ltd. | Accelerating long short-term memory networks via selective pruning |
US11562244B2 (en) | 2018-02-07 | 2023-01-24 | Royal Bank Of Canada | Robust pruned neural networks via adversarial training |
US11392829B1 (en) * | 2018-05-02 | 2022-07-19 | Nvidia Corporation | Managing data sparsity for neural networks |
US11423312B2 (en) * | 2018-05-14 | 2022-08-23 | Samsung Electronics Co., Ltd | Method and apparatus for universal pruning and compression of deep convolutional neural networks under joint sparsity constraints |
US20190362235A1 (en) | 2018-05-23 | 2019-11-28 | Xiaofan Xu | Hybrid neural network pruning |
WO2019237000A1 (en) * | 2018-06-07 | 2019-12-12 | Google Llc | Systems and methods for evaluating a loss function or a gradient of a loss function via dual decomposition |
US11694081B2 (en) * | 2019-05-15 | 2023-07-04 | Advanced Micro Devices, Inc. | Accelerating neural networks with one shot skip layer pruning |
-
2019
- 2019-10-25 US US16/664,616 patent/US11816574B2/en active Active
-
2020
- 2020-10-16 WO PCT/US2020/056084 patent/WO2021080873A1/en active Application Filing
- 2020-10-16 CN CN202080070371.0A patent/CN114503125A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021080873A1 (en) | 2021-04-29 |
US20210125071A1 (en) | 2021-04-29 |
US11816574B2 (en) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114503125A (zh) | 结构化剪枝方法、***和计算机可读介质 | |
US11507846B2 (en) | Representing a neural network utilizing paths within the network to improve a performance of the neural network | |
US11127167B2 (en) | Efficient matrix format suitable for neural networks | |
Albericio et al. | Cnvlutin: Ineffectual-neuron-free deep neural network computing | |
US20190147324A1 (en) | Neural Network Architecture Using Convolution Engines | |
CN111950695A (zh) | 使用一个或更多个神经网络进行语法迁移 | |
Mittal | A survey of accelerator architectures for 3D convolution neural networks | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
US11886980B2 (en) | Neural network accelerator using logarithmic-based arithmetic | |
US11961001B2 (en) | Parallel forward and backward propagation | |
US20190095791A1 (en) | Learning affinity via a spatial propagation neural network | |
US11972354B2 (en) | Representing a neural network utilizing paths within the network to improve a performance of the neural network | |
US20200151571A1 (en) | Transposed sparse matrix multiply by dense matrix for neural network training | |
US11144291B1 (en) | Loop-oriented neural network compilation | |
US11295236B2 (en) | Machine learning in heterogeneous processing systems | |
CN114118347A (zh) | 用于神经网络量化的细粒度每向量缩放 | |
US20220284294A1 (en) | Artificial neural networks generated by low discrepancy sequences | |
Ma et al. | Accelerating deep neural network filter pruning with mask-aware convolutional computations on modern CPUs | |
Li et al. | Enabling high performance deep learning networks on embedded systems | |
Lee et al. | Implication of Optimizing NPU Dataflows on Neural Architecture Search for Mobile Devices | |
US20220129755A1 (en) | Incorporating a ternary matrix into a neural network | |
Faber et al. | Platform agnostic streaming data application performance models | |
CN116127685A (zh) | 使用机器学习执行模拟 | |
US11704562B1 (en) | Architecture for virtual instructions | |
Huang et al. | Hardware-friendly compression and hardware acceleration for transformer: A survey |
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 |