CN110084364B - 一种深度神经网络压缩方法和装置 - Google Patents

一种深度神经网络压缩方法和装置 Download PDF

Info

Publication number
CN110084364B
CN110084364B CN201810072791.7A CN201810072791A CN110084364B CN 110084364 B CN110084364 B CN 110084364B CN 201810072791 A CN201810072791 A CN 201810072791A CN 110084364 B CN110084364 B CN 110084364B
Authority
CN
China
Prior art keywords
neural network
sub
matrices
matrix
compression
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.)
Active
Application number
CN201810072791.7A
Other languages
English (en)
Other versions
CN110084364A (zh
Inventor
李鑫
孟通
江帆
韩松
单羿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Technology Beijing Ltd
Original Assignee
Xilinx Technology Beijing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xilinx Technology Beijing Ltd filed Critical Xilinx Technology Beijing Ltd
Priority to CN201810072791.7A priority Critical patent/CN110084364B/zh
Publication of CN110084364A publication Critical patent/CN110084364A/zh
Application granted granted Critical
Publication of CN110084364B publication Critical patent/CN110084364B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

提出了一种深度神经网络压缩方法和装置。神经网络的神经元之间的连接关系通常由多个矩阵来表示。根据本发明的神经网络压缩方法(900)包括:将所述多个矩阵的所有行进行跨矩阵重排(S910),其中,重排后的矩阵行按序分块为多个子矩阵;对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率(S920);按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络(S930)。本发明可以保证并行计算处理单元负载均衡,从而达到释放储存资源、加快计算速度、降低功耗的效果。

Description

一种深度神经网络压缩方法和装置
技术领域
本发明涉及人工神经网络,更具体涉及一种深度神经网络压缩方法和装置。
背景技术
人工神经网络(Artificial Neural Networks, ANN),也简称神经网络(NNs),是一种模仿动物神经网络的行为特征,进行分布式并行信息处理的数学计算模型。近年来,神经网络发展很快,被广泛应用于诸多领域,如图像识别、语音识别、自然语言处理、天气预报、基因表达、内容推送等等。
神经网络中,有大量彼此连接的节点 (也称 “神经元”),并且具备两个特性:1)每个神经元,通过某种特定的输出函数 (也叫激活函数,activation function),计算处理来自其它相邻神经元的加权输入值;2) 神经元之间的信息传递强度,用所谓权值来定义,算法会不断自我学习,调整这个加权值。
早期的神经网络只有输入和输出层两层,无法处理复杂的逻辑,限制了其实用性。而深度神经网络(Deep Neural Network, DNN)通过在输入和输出层之间添加隐藏的中间层,革命性地改变了这一点。图1示出了一种深度神经网络的模型。
语音识别(Speech Recognition),是将语音的模拟信号顺序映射到一个具体的单词集合上。近年来,人工神经网络的方法在语音识别领域取得的效果已经远远超出了所有传统方法,正在成为全行业的主流。其中,深度神经网络有着极为广泛的应用。
循环神经网络(Recurrent Neural Networks, RNN)是一种常用的深度神经网络模型,不同于传统前向神经网络(Feed-forward Neural Network)的是,循环神经网络引入了定向循环,能够处理那些输入之间前后关联的问题。在语音识别中,信号的前后关联很强,例如识别句子中的单词,和该单词前面的单词序列关系十分紧密。因此,循环神经网络在语音识别领域有着非常广泛的应用。
为了解决对长期信息的记忆问题,Hochreiter和Schmidhuber于1997年提出了长短时记忆(Long Short-Term Memory, LSTM)模型。LSTM神经网络是RNN的一种,将普通RNN当中简单的重复神经网络模块改变为复杂的连接交互关系。LSTM神经网络在语音识别中也取得了非常好的应用效果。
图2示出了一种应用于语音识别领域的LSTM网络模型。
然而,通过近几年的迅速发展,神经网络的规模不断增长,已公开的比较先进的神经网络可达数百层、数亿个连接,属于计算和访存密集型应用。在神经网络逐渐变大的情况下,模型压缩就变得极为重要。
深度神经网络中,神经元的连接关系在数学上可以表示为一系列矩阵。经过训练后的网络虽然预测准确,效果奇佳,但其矩阵都是稠密的,即“矩阵中充满了非零元素”,从而导致大量的存储和计算资源被消耗,不但降低速度,而且增加成本,这样一来,在移动端的推广就面临着巨大的困难,极大的制约了神经网络的应用空间。
近年来,广泛的研究表明,通过训练得到的神经网络模型矩阵中,仅有部分权值较大的元素代表着重要连接,而其他权值较小的元素可以被移除(置为零),与此同时对应的神经元也被剪枝(pruning)。剪枝后的网络精度会下降,但是可以通过重训(finetune),对仍然保留在模型矩阵中权值的大小进行调整,从而减小精度损失。剪枝可以将神经网络中的稠密矩阵稀疏化,能够有效的降低存储量、减少计算量,在保持网络预测精度的同时实现加速。
图3示出了利用剪枝、重训来压缩神经网络的示意图。图4示出了剪枝前后的神经网络的示意图。
由于缺少专门针对稀疏矩阵的计算逻辑设计,CPU与GPU无法充分享受到模型稀疏化带来的好处,取得的加速有限。相比而言,剪枝对于专用的稀疏神经网络加速器而言显得极为重要。基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)这一高性能硬件载体实现的稀疏神经网络加速器,相比于主流的CPU和GPU,具有一个数量级以上的能效比优势。然而,现有的LSTM深度神经网络中,通过传统的剪枝、重训的方式来压缩神经网络,导致计算量大、压缩率下降、压缩效果不理想,特别是不能够充分发挥FPGA的效能。
发明内容
本发明实施例提供一种深度神经网络压缩方法和装置,用以解决现有技术中有关神经网络的计算量大、压缩率下降、压缩效果不理想等缺陷,实现并行计算处理单元负载均衡,从而达到释放储存资源、加快计算速度、降低功耗的效果,使得充分发挥FPGA等硬件实现结构的效能。
为实现本发明目的,根据本发明的第一方面,提供一种神经网络压缩方法。所述神经网络的神经元之间的连接关系由多个矩阵来表示。所述方法可以包括:将所述多个矩阵的所有矩阵行进行跨矩阵重排,其中,重排后的矩阵行按序分块为多个子矩阵;对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率;按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络。
优选地,所述方法可以进一步包括对所述压缩后的神经网络进行重训的步骤。
优选地,所述的将所述多个矩阵的所有矩阵行进行跨矩阵重排的步骤可以进一步包括:将所述多个矩阵在矩阵行的方向上顺次堆叠,形成大矩阵;通过从大矩阵中每隔N行抽取一行,从而形成按序分块的N个大小相同的子矩阵。这里,所述N根据用于实现所述神经网络的计算单元的个数而确定,且这些计算单元能够以并行方式进行计算。
优选地,所述的对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率的步骤可以进一步包括:获得压缩前的各个子矩阵所组成的神经网络的错误率;分别对多个子矩阵按照相同的压缩率进行压缩,获得压缩后的各个子矩阵所组成的神经网络的错误率;通过尝试不同的压缩率,找到错误率差值在阈值水平内的最大压缩率,找到的这个压缩率被确定为神经网络的初始压缩率。
优选地,所述的按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络的步骤可以进一步包括:将各个子矩阵中的元素按绝对值排序,从小到大对子矩阵中的非零元素进行置零,直到达到指定的压缩率。
为实现本发明目的,根据本发明的第二方面,提供一种神经网络压缩装置。所述神经网络的神经元之间的连接关系由多个矩阵来表示。所述装置可以包括:重排分块单元,用于将所述多个矩阵的所有矩阵行进行跨矩阵重排,其中,重排后的矩阵行按序分块为多个子矩阵;敏感度分析单元,用于对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率;压缩单元,用于按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络。
优选地,所述装置可以进一步包括重训单元,用于对所述压缩后的神经网络进行重训。
优选地,所述重排分块单元可以进一步包括:堆叠子单元,用于将所述多个矩阵在矩阵行的方向上顺次堆叠,形成大矩阵;抽取分块子单元,用于通过从大矩阵中每隔N行抽取一行,从而形成按序分块的N个大小相同的子矩阵。这里,所述N根据用于实现所述神经网络的计算单元的个数而确定,且这些计算单元能够以并行方式进行计算。
优选地,所述敏感度分析单元可以进一步包括:压缩前错误率获得子单元,用于获得压缩前的各个子矩阵所组成的神经网络的错误率;压缩后错误率获得子单元,用于分别对多个子矩阵按照相同的压缩率进行压缩,获得压缩后的各个子矩阵所组成的神经网络的错误率;初始压缩率确定子单元,用于通过尝试不同的压缩率,找到压缩前后的错误率差值在阈值水平内的最大压缩率,找到的这个压缩率被确定为神经网络的初始压缩率。
优选地,所述压缩单元可以进一步包括:排序置零子单元,用于将各个子矩阵中的元素按绝对值排序,从小到大对子矩阵中的非零元素进行置零,直到达到指定的压缩率。
为实现本发明目的,根据本发明的第三方面,提供一种计算机可读介质,用于记录可由处理器执行的指令,所述指令在被处理器执行时,使得处理器执行对神经网络进行压缩的方法,包括如下操作:将所述多个矩阵的所有矩阵行进行跨矩阵重排,其中,重排后的矩阵行按序分块为多个子矩阵;对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率;按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络。
通过采用本发明的方法,可以将压缩原始的稠密网络,生成精度基本保持不变但实际参数大大减少的新网络,解决了运算中有效数据占比较低的问题,极大的减小了存储空间(使得片上存储成为可能),有效地提高了运算效率。
本发明所述的一种深度神经网络压缩方法和装置,针对FPGA等平台的工作特点,通过矩阵分块重排,能够让LSTM神经网络中的i、f、c、o四种矩阵在稀疏度不同的情况下,考虑FPGA等硬件平台多个内核并行计算的特点,保证各个PE中参与运算的矩阵非零元个数相近,实现并行计算处理单元(process element, PE)负载均衡,从而达到释放储存资源、加快计算速度、降低功耗的全方位综合性能优化的效果。
本发明通过矩阵分块重排,使得硬件并行计算时各个PE都负载均衡,有效解决了在压缩时i、f、c、o矩阵因为属性不同,稠密度不同,导致压缩率下降的问题。对硬件而言,只需要在执行完矩阵向量乘法之后,添加一个调序模块,硬件实现简单,改动较小。
附图说明
下面参考附图结合实施例说明本发明。
图1示出了一种深度神经网络的模型。
图2示出了一种应用于语音识别领域的LSTM网络模型。
图3示出了利用剪枝、重训来压缩神经网络的示意图。
图4示出了剪枝前后的神经网络的示意图。
图5示出了各个处理单元负载均衡以减少计算时间的例子。
图6示出了矩阵向量相乘的示意图。
图7示出了针对单个矩阵进行稀疏化的负载均衡的示意图。
图8示出了根据本发明的针对多个矩阵进行稀疏化的负载均衡的示意图。
图9是根据本发明的神经网络压缩方法的流程图。
图10是根据本发明的神经网络压缩装置的示意框图。
具体实施方式
附图仅用于示例说明,不能理解为对本发明的限制。下面结合附图和实施例对本发明的技术方案做进一步的说明。
下文中,通过LSTM神经网络中网络稀疏化的示例来作为本发明的一个优选实施例,用于具体地描述根据本发明的对神经网络进行压缩的方法。
LSTM神经网络中,前向计算主要是一系列矩阵与向量乘法的组合,如下公式所示:
Figure 975674DEST_PATH_IMAGE001
公式中给出了两种LSTM:右边是最简单的LSTM结构;左边是LSTMP结构,其主要特点是在简单LSTM的基础上添加了窥视(peephole)和投影(projection)操作。无论是LSTM还是LSTMP结构,其中都主要包括c(单元cell)、i(输入门input gate)、f(遗忘门forgetgate)、o(输出门output gate)四种矩阵,即Wcx、Wix、Wfx、Wox、Wcr(h)、Wir(h)、Wfr(h)、Wor(h)。这四种共八个矩阵占据了前向计算时绝大部分计算量。网络稀疏化主要就是将矩阵中的元素置零,只有非零元素参与计算,从而提高效率。专用硬件加速器(如FPGA),主要通过并行计算和流水设计进行加速,如果并行计算各处理单元负载均衡,会减少等待时间,提高整体计算效率。
图5给出了一个保证单个矩阵计算时各个处理单元负载均衡,以减少计算时间的例子。
如果只是对单个矩阵依次采取并行计算的方式进行加速,只要在单个矩阵中保证各处理单元负载均衡就足够了。然而,如果想同时对i、f、c、o四种矩阵进行加速,一种负载均衡的想法,就是让i、f、c、o四类矩阵获得一样的稀疏度,但是这样相当于给网络稀疏化添加了限制条件,会影响稀疏化的效果。
本发明的目的在于提供一种针对语音识别中LSTM深度神经网络的稀疏化方法,针对FPGA等平台的工作特点,通过矩阵分块重排,能够让i、f、c、o四种矩阵在稀疏度不同的情况下,依然保证并行计算处理单元(process element, PE)负载均衡,从而达到释放储存资源、加快计算速度、降低功耗的全方位综合性能优化的效果。
图6示出了矩阵向量相乘的示意图。
下面通过图7和图8的图例来展示本发明与先前方法的区别。
先前的方法是针对单个矩阵的,逐个保证负载均衡即可,对矩阵之间的稠密度无要求。图7示出了针对单个矩阵进行稀疏化的负载均衡的示意图。
如图7中所示,Wix、Wfx等矩阵为1024行,512列,都要与向量x相乘,x的维度为512。对每个矩阵进行稀疏化,并将矩阵划分为32个子矩阵,采用32个PE并行计算,可以大大提高效率。由于矩阵向量相乘是依次进行的,所以只需要保证每个矩阵划分的32个子矩阵之间负载均衡,即稠密度相近,不需要保证各个矩阵之间的稠密度也相近。如图7中所示,稀疏化之后Wix非零元个数较多,而Wfx非零元个数较少。关于这一方法,可参见中国发明专利申请公布CN107239825A(申请日为2016年12月5日、最早优先权日为2016年8月22日)的记载,在此通过引用将该申请公布的全部内容并入到本发明的说明书中,以资参考。
本发明是针对i、f、c、o矩阵组的,要求同时保证负载均衡,因此要求矩阵之间的稠密度相近。图8示出了根据本发明的针对多个矩阵进行稀疏化的负载均衡的示意图。
如图8中所示,Wix、Wfx、Wcx、Wox顺次堆叠,形成Wifco_x大矩阵,维度为4096行,512列,同样与维度为512的向量x相乘。这里将对Wifco_x大矩阵划分为128个子矩阵,采用128个PE并行计算。
根据本发明的优选实施例,对如图8中所示的矩阵组进行稀疏化压缩的具体步骤如下。
首先,需要对Wifco_x按照隔N=128行抽取的方式进行重排。应注意,这里的矩阵行重排是跨矩阵进行的。因此,生成的新矩阵从上到下可以命名为ABCD矩阵。将ABCD矩阵各行按序依次组合,形成128个子矩阵并与128个PE关联起来。同理,对Wifco_r采用同样的方式进行处理,视为EFGH矩阵,形成128个子矩阵。
然后,对ABCD和EFGH矩阵的子矩阵进行敏感度分析。分别对ABCD/EFGH矩阵的128个子矩阵按照相同稠密度进行压缩,对比压缩前后的词错误率(word error ratio, WER),从而确定ABCD/EFGH矩阵的初始稠密度,即神经网络的初始压缩率。更具体地说,获得压缩前的各个子矩阵所组成的神经网络的错误率;分别对多个子矩阵按照相同的压缩率进行压缩,获得压缩后的各个子矩阵所组成的神经网络的错误率;通过尝试不同的压缩率,找到压缩前后的错误率差值在阈值水平内的最大压缩率,找到的这个压缩率被确定为神经网络的初始压缩率。
最后,根据上一步骤中确定的初始压缩率对矩阵ABCD/EFGH的128个子矩阵进行压缩。具体地说,将子矩阵中的元素按绝对值排序,从小到大对子矩阵中的非零元素置零,直到达到指定的压缩率。由于128个子矩阵采用的是完全相同的压缩率,其非零元个数也是均衡的。
可选地,在压缩步骤之后,可以对压缩后的神经网络进行重训(finetune)。从而在不改变压缩率的情况下提升其预测准确率,以减小压缩带来的精度损失。
基于上述技术方案可知,本发明一种考虑负载均衡的LSTM深度神经网络压缩方法具有以下有益的效果。
通过采用该方法,可以将原始的稠密网络经过一系列独特的压缩操作,生成精度基本保持不变,但实际参数大大减少的新网络,解决了运算中有效数据占比较低的问题,极大地减小了存储空间(使得片上存储成为可能),有效地提高了运算效率。
PE之间负载不均衡会导致硬件实际性能与理论峰值性能之间的显著差异,因为各个PE中加载的是压缩后的部分网络模型(即矩阵的一部分非零元),且PE之间共享输入数据,运算量较小的PE会等待运算量较大的PE,导致空载周期。负载越是不均衡,空载周期越长。在网络压缩时充分考虑FPGA等硬件平台多个内核并行计算的特点,保证各个PE中参与运算的矩阵非零元个数相近,从而保证各个PE负载均衡,可以极大地提升硬件平台的资源利用率。
本发明通过矩阵分块重排,使得硬件并行计算时各个PE都负载均衡,有效解决了在压缩时i、f、c、o矩阵因为属性不同,稠密度不同,导致压缩率下降的问题。对硬件而言,只需要在执行完矩阵向量乘法之后,添加一个调序模块,硬件实现简单,改动较小。
尽管在优选实施例中,神经网络被具体化为LSTM神经网络,但本领域技术人员应该理解,本发明的思想同样适用于更一般的人工神经网络、深度神经网络或循环神经网络(RNN)。
下面将根据本发明,给出更一般的方法与装置的实施例。
图9是根据本发明的神经网络压缩方法的流程图。
本领域技术人员应该理解,神经网络的神经元之间的连接关系由多个矩阵来表示。如上所详细描述的,在LSTM神经网络的例子中,需要对i、f、c、o四种类型的矩阵进行稀疏化压缩。
如图9所示,根据本发明的对神经网络进行压缩的方法900开始于步骤S910,即重排分块步骤,将多个矩阵的所有矩阵行进行跨矩阵重排,其中,重排后的矩阵行按序分块为多个子矩阵。
具体地说,所述的重排分块步骤可以进一步包括:将所述多个矩阵在矩阵行的方向上顺次堆叠,形成大矩阵;通过从大矩阵中每隔N行抽取一行,从而形成按序分块的N个大小相同的子矩阵。
关于这里N的取值,可以根据用于实现所述神经网络的计算单元的个数而确定N的取值,且这些计算单元能够以并行方式进行计算。例如,在优选实施例中,每隔128行(N=128)抽取一行,形成128个大小相同的子矩阵,且这128个子矩阵分别由对应的128个PE进行相应的并行运算,从而有效提升了计算资源的利用率和效率,降低了计算等待时间。
本领域技术人员应当理解,尽管优选实施例中示例的由四个矩阵堆叠而成的大矩阵维度为4096行和512列(列数与向量x的维度相同),在不同的应用场合,矩阵与向量的维度可能会有不同变化。相应地,计算资源的数目(例如PE的数目)也会因为硬件资源的不同而变化。因此,本领域技术人员应当能够根据具体应用场景和具体可利用的计算资源的情况来确定如何对多个矩阵进行重排、抽取、分块,以及怎样与计算资源的数目相配合。
在某些情况下,由于矩阵维度较大而计算资源数目较少,PE可能需要被重复利用。在此情况下,则本发明的方法中的一些步骤需要被迭代地执行。
如前所述,本发明通过矩阵分块重排,使得硬件并行计算时各个PE都负载均衡,有效解决了在压缩时i、f、c、o矩阵因为属性不同,稠密度不同,导致压缩率下降的问题。
在步骤S920,即敏感度分析步骤,对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率。
在具体实施中,所述的敏感度分析步骤可以进一步包括:获得压缩前的各个子矩阵所组成的神经网络的错误率;分别对多个子矩阵按照相同的压缩率进行压缩,获得压缩后的各个子矩阵所组成的神经网络的错误率;通过尝试不同的压缩率,找到压缩前后的错误率差值在阈值水平内的最大压缩率,找到的这个压缩率被确定为神经网络的初始压缩率。
在步骤S930,即压缩步骤,按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络。
具体地说,所述的压缩步骤可以进一步包括:将各个子矩阵中的元素按绝对值排序,从小到大对子矩阵中的非零元素进行置零,直到达到指定的压缩率。
如前所述,通过采用该方法,可以生成精度基本保持不变,但实际参数大大减少的新网络,解决了运算中有效数据占比较低的问题,极大地减小了存储空间,有效地提高了运算效率。
可选地,本方法可以进一步包括重训步骤(未示出),用于对所述压缩后的神经网络进行重训。由此,在不改变压缩率的情况下提升其预测准确率,以减小压缩带来的精度损失。
根据之前的解释与描述,所述神经网络可以是循环神经网络(RNN),更具体而言,可以是长短时记忆(LSTM)神经网络。
图10是根据本发明的神经网络压缩装置的示意框图。
如上所述,神经网络的神经元之间的连接关系由多个矩阵来表示。如图10中所示,根据本发明的对神经网络进行压缩的装置1000至少包括重排分块单元1010,用于将多个矩阵的所有矩阵行进行跨矩阵重排,其中,重排后的矩阵行按序分块为多个子矩阵。重排分块单元1010与图9中的重排分块步骤S910相对应。
更具体地,所述重排分块单元1010可以进一步包括堆叠子单元和抽取分块子单元(都未示出)。堆叠子单元用于将所述多个矩阵在矩阵行的方向上顺次堆叠,形成大矩阵;而抽取分块子单元用于通过从大矩阵中每隔N行抽取一行,从而形成按序分块的N个大小相同的子矩阵。如前所述,这里所述的N根据用于实现所述神经网络的计算单元的个数而确定,且这些计算单元能够以并行方式进行计算。
装置1000还包括敏感度分析单元1020,用于对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率。敏感度分析单元1020与图9中的敏感度分析步骤S920相对应。
更具体地,所述敏感度分析单元1020可以进一步包括(尽管在附图中均未示出):压缩前错误率获得子单元,用于获得压缩前的各个子矩阵所组成的神经网络的错误率;压缩后错误率获得子单元,用于分别对多个子矩阵按照相同的压缩率进行压缩,获得压缩后的各个子矩阵所组成的神经网络的错误率;初始压缩率确定子单元,用于通过尝试不同的压缩率,找到压缩前后的错误率差值在阈值水平内的最大压缩率,找到的这个压缩率被确定为神经网络的初始压缩率。
装置1000进一步包括压缩单元1030,用于按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络。压缩单元1030与图9中的压缩步骤S930相对应。
更具体地,所述压缩单元1030可以进一步包括排序置零子单元(未示出),用于将各个子矩阵中的元素按绝对值排序,从小到大对子矩阵中的非零元素进行置零,直到达到指定的压缩率。
尽管未示出,装置1000还可以包括重训单元,用于对所述压缩后的神经网络进行重训。由此,在不改变压缩率的情况下提升其预测准确率,以减小压缩带来的精度损失。
此外,对整个硬件系统而言,与这里的装置1000相对应,需要在执行完矩阵向量乘法之后,添加一个对矩阵进行调序的模块,这样的模块实现简单,对整个硬件系统而言改动较小。
本领域普通技术人员应该认识到,本发明的方法可以实现为计算机程序。如上结合图9和10所述,根据上述实施例的方法可以执行一个或多个程序,包括指令来使得计算机或处理器执行结合附图所述的算法。这些程序可以使用各种类型的非瞬时计算机可读介质存储并提供给计算机或处理器。非瞬时计算机可读介质包括各种类型的有形存贮介质。非瞬时计算机可读介质的示例包括磁性记录介质(诸如软盘、磁带和硬盘驱动器)、磁光记录介质(诸如磁光盘)、CD-ROM(紧凑盘只读存储器)、CD-R、CD-R/W以及半导体存储器(诸如ROM、PROM(可编程ROM)、EPROM(可擦写PROM)、闪存ROM和RAM(随机存取存储器))。进一步,这些程序可以通过使用各种类型的瞬时计算机可读介质而提供给计算机。瞬时计算机可读介质的示例包括电信号、光信号和电磁波。瞬时计算机可读介质可以用于通过诸如电线和光纤的有线通信路径或无线通信路径提供程序给计算机。
因此,根据本发明,还可以提议一种计算机程序或一种计算机可读介质,用于记录可由处理器执行的指令,所述指令在被处理器执行时,使得处理器执行对神经网络进行压缩的方法,包括如下操作:将所述多个矩阵的所有矩阵行进行跨矩阵重排,其中,重排后的矩阵行按序分块为多个子矩阵;对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率;按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络。
上面已经描述了本发明的各种实施例和实施情形。但是,本发明的精神和范围不限于此。本领域技术人员将能够根据本发明的教导而做出更多的应用,而这些应用都在本发明的范围之内。
也就是说,本发明的上述实施例仅仅是为清楚说明本发明所做的举例,而非对本发明实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其他不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、替换或改进等,均应包含在本发明权利要求的保护范围之内。

Claims (11)

1.一种神经网络压缩方法,所述神经网络的神经元之间的连接关系由多个矩阵来表示,其特征在于,所述方法包括:
将所述多个矩阵的所有矩阵行进行跨矩阵重排,其中,重排后的矩阵行按序分块为多个子矩阵;
对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率;
按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络,
其中,所述方法进一步包括:在执行完矩阵向量乘法之后,针对矩阵进行调序。
2.如权利要求1所述的方法,其特征在于,所述方法进一步包括对所述压缩后的神经网络进行重训的步骤。
3.如权利要求1所述的方法,其特征在于,所述的将所述多个矩阵的所有矩阵行进行跨矩阵重排的步骤进一步包括:
将所述多个矩阵在矩阵行的方向上顺次堆叠,形成大矩阵;
通过从大矩阵中每隔N行抽取一行,从而形成按序分块的N个大小相同的子矩阵,其中,所述N根据用于实现所述神经网络的计算单元的个数而确定,且这些计算单元能够以并行方式进行计算。
4.如权利要求1所述的方法,其特征在于,所述的对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率的步骤进一步包括:
获得压缩前的各个子矩阵所组成的神经网络的错误率;
分别对多个子矩阵按照相同的压缩率进行压缩,获得压缩后的各个子矩阵所组成的神经网络的错误率;
通过尝试不同的压缩率,找到压缩前后的错误率差值在阈值水平内的最大压缩率,找到的这个压缩率被确定为神经网络的初始压缩率。
5.如权利要求1所述的方法,其特征在于,所述的按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络的步骤进一步包括:
将各个子矩阵中的元素按绝对值排序,从小到大对子矩阵中的非零元素进行置零,直到达到指定的压缩率。
6.一种神经网络压缩装置,所述神经网络的神经元之间的连接关系由多个矩阵来表示,其特征在于,所述装置包括:
重排分块单元,用于将所述多个矩阵的所有矩阵行进行跨矩阵重排,其中,重排后的矩阵行按序分块为多个子矩阵;
敏感度分析单元,用于对多个子矩阵进行敏感度分析,以确定神经网络的初始压缩率;
压缩单元,用于按照所确定的初始压缩率对所述多个子矩阵进行压缩,以获得压缩后的神经网络,
其中,所述装置进一步包括调序模块,用于在执行完矩阵向量乘法之后,针对矩阵进行调序。
7.如权利要求6所述的装置,其特征在于,所述装置进一步包括重训单元,用于对所述压缩后的神经网络进行重训。
8.如权利要求6所述的装置,其特征在于,所述重排分块单元进一步包括:
堆叠子单元,用于将所述多个矩阵在矩阵行的方向上顺次堆叠,形成大矩阵;
抽取分块子单元,用于通过从大矩阵中每隔N行抽取一行,从而形成按序分块的N个大小相同的子矩阵,其中,所述N根据用于实现所述神经网络的计算单元的个数而确定,且这些计算单元能够以并行方式进行计算。
9.如权利要求6所述的装置,其特征在于,所述敏感度分析单元进一步包括:
压缩前错误率获得子单元,用于获得压缩前的各个子矩阵所组成的神经网络的错误率;
压缩后错误率获得子单元,用于分别对多个子矩阵按照相同的压缩率进行压缩,获得压缩后的各个子矩阵所组成的神经网络的错误率;
初始压缩率确定子单元,用于通过尝试不同的压缩率,找到压缩前后的错误率差值在阈值水平内的最大压缩率,找到的这个压缩率被确定为神经网络的初始压缩率。
10.如权利要求6所述的装置,其特征在于,所述压缩单元进一步包括:
排序置零子单元,用于将各个子矩阵中的元素按绝对值排序,从小到大对子矩阵中的非零元素进行置零,直到达到指定的压缩率。
11.一种计算机可读介质,用于记录可由处理器执行的指令,所述指令在被处理器执行时,使得处理器执行如权利要求1所述的神经网络压缩方法。
CN201810072791.7A 2018-01-25 2018-01-25 一种深度神经网络压缩方法和装置 Active CN110084364B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810072791.7A CN110084364B (zh) 2018-01-25 2018-01-25 一种深度神经网络压缩方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810072791.7A CN110084364B (zh) 2018-01-25 2018-01-25 一种深度神经网络压缩方法和装置

Publications (2)

Publication Number Publication Date
CN110084364A CN110084364A (zh) 2019-08-02
CN110084364B true CN110084364B (zh) 2021-08-27

Family

ID=67411975

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810072791.7A Active CN110084364B (zh) 2018-01-25 2018-01-25 一种深度神经网络压缩方法和装置

Country Status (1)

Country Link
CN (1) CN110084364B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110472735A (zh) * 2019-08-14 2019-11-19 北京中科寒武纪科技有限公司 神经网络的稀疏方法及相关产品
CN110490314B (zh) * 2019-08-14 2024-01-09 中科寒武纪科技股份有限公司 神经网络的稀疏方法及相关产品
GB2588980A (en) * 2019-11-12 2021-05-19 Samsung Electronics Co Ltd Method and system for neutral network execution distribution
CN111126589B (zh) 2019-12-31 2022-05-20 昆仑芯(北京)科技有限公司 神经网络数据处理装置、方法和电子设备
CN117634711B (zh) * 2024-01-25 2024-05-14 北京壁仞科技开发有限公司 张量维度切分方法、系统、设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106779068A (zh) * 2016-12-05 2017-05-31 北京深鉴智能科技有限公司 调整人工神经网络的方法和装置
CN107239825A (zh) * 2016-08-22 2017-10-10 北京深鉴智能科技有限公司 考虑负载均衡的深度神经网络压缩方法
CN107392305A (zh) * 2016-05-13 2017-11-24 三星电子株式会社 实现和执行神经网络的方法及计算机可读介质
CN107590533A (zh) * 2017-08-29 2018-01-16 中国科学院计算技术研究所 一种用于深度神经网络的压缩装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107392305A (zh) * 2016-05-13 2017-11-24 三星电子株式会社 实现和执行神经网络的方法及计算机可读介质
CN107239825A (zh) * 2016-08-22 2017-10-10 北京深鉴智能科技有限公司 考虑负载均衡的深度神经网络压缩方法
CN106779068A (zh) * 2016-12-05 2017-05-31 北京深鉴智能科技有限公司 调整人工神经网络的方法和装置
CN107590533A (zh) * 2017-08-29 2018-01-16 中国科学院计算技术研究所 一种用于深度神经网络的压缩装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
EIE: Efficient Inference Engine on Compressed Deep Neural Network;Song Han 等;《arXiv:1602.01528v2 [cs.CV]》;20160503;全文 *
ESE: Efficient Speech Recognition Engine with Sparse LSTM on FPGA;Song Han 等;《arXiv:1612.00694v2 [cs.CL]》;20170220;第3节和第6.3节 *

Also Published As

Publication number Publication date
CN110084364A (zh) 2019-08-02

Similar Documents

Publication Publication Date Title
CN110084364B (zh) 一种深度神经网络压缩方法和装置
CN107239825B (zh) 考虑负载均衡的深度神经网络压缩方法
US10984308B2 (en) Compression method for deep neural networks with load balance
CN110378468B (zh) 一种基于结构化剪枝和低比特量化的神经网络加速器
CN107729999B (zh) 考虑矩阵相关性的深度神经网络压缩方法
US20180157969A1 (en) Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network
EP3192016B1 (en) Computing system for training neural networks
CN109543830B (zh) 一种用于卷积神经网络加速器的拆分累加器
JP2022501675A (ja) データ処理方法、装置、コンピュータデバイス、及び記憶媒体
US20170193368A1 (en) Conditional parallel processing in fully-connected neural networks
CN114127740A (zh) 人工智能模型的分布式训练中的数据并行性
CN105488563A (zh) 面向深度学习的稀疏自适应神经网络、算法及实现装置
TWI737228B (zh) 基於記憶體內運算電路架構之量化方法及其系統
CN110874626A (zh) 一种量化方法及装置
CN110119805A (zh) 基于回声状态网络分类的卷积神经网络算法
US20220207374A1 (en) Mixed-granularity-based joint sparse method for neural network
Polat et al. GPU‐accelerated and mixed norm regularized online extreme learning machine
WO2021013117A1 (en) Systems and methods for providing block-wise sparsity in a neural network
CN114742036A (zh) 一种预训练语言模型的组合式模型压缩方法及系统
Fukushi et al. A GPU Implementation Method of Deep Neural Networks Based on Data Swapping
US20220405616A1 (en) Replica processing unit for boltzmann machine
KR102647521B1 (ko) Ann 모델과 npu의 최적화
TWI813414B (zh) 用於最佳化神經網路訓練之電腦實施之方法、系統及非暫時性電腦可讀取儲存媒體
US20220261652A1 (en) Training a Neural Network
US20230229729A1 (en) Apparatus for solving circuit equations of processing elements using neural network and method for controlling the same

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200908

Address after: Unit 01-19, 10 / F, 101, 6 / F, building 5, yard 5, Anding Road, Chaoyang District, Beijing 100029

Applicant after: Xilinx Electronic Technology (Beijing) Co., Ltd

Address before: 100083, 17 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant before: BEIJING DEEPHI TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant