CN107239825B - 考虑负载均衡的深度神经网络压缩方法 - Google Patents

考虑负载均衡的深度神经网络压缩方法 Download PDF

Info

Publication number
CN107239825B
CN107239825B CN201611105081.7A CN201611105081A CN107239825B CN 107239825 B CN107239825 B CN 107239825B CN 201611105081 A CN201611105081 A CN 201611105081A CN 107239825 B CN107239825 B CN 107239825B
Authority
CN
China
Prior art keywords
matrix
neural network
sub
compression
training
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
CN201611105081.7A
Other languages
English (en)
Other versions
CN107239825A (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
Priority claimed from US15/242,624 external-priority patent/US20180046903A1/en
Priority claimed from US15/242,622 external-priority patent/US10621486B2/en
Application filed by Xilinx Technology Beijing Ltd filed Critical Xilinx Technology Beijing Ltd
Priority to US15/390,556 priority Critical patent/US10984308B2/en
Publication of CN107239825A publication Critical patent/CN107239825A/zh
Application granted granted Critical
Publication of CN107239825B publication Critical patent/CN107239825B/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/06Creation of reference templates; Training of speech recognition systems, e.g. adaptation to the characteristics of the speaker's voice
    • G10L15/063Training
    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/16Speech classification or search using artificial neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)

Abstract

本申请公开了一种对神经网络进行压缩的方法,所述神经网络的神经元的连接关系被多个矩阵多表示,包括:分块步骤,对所述多个矩阵进行分块,把每个矩阵分为多个子矩阵;压缩步骤,对每个子矩阵进行压缩,从而把每个子矩阵压缩为稀疏矩阵;和编码步骤,对压缩后的每个稀疏子矩阵按照进行编码。本发明提出一种对神经网络进行压缩的装置。

Description

考虑负载均衡的深度神经网络压缩方法
本申请要求于2016年8月22日提交的美国专利申请No.15/242,622、和于2016年8月22日提交的美国专利申请No.15/242,624的优先权。
发明领域
本发明涉及考虑负载均衡的深度神经网络压缩方法及装置。
背景技术
人工神经网络的压缩
人工神经网络(Artificial Neural Networks,ANNs),也简称神经网络(NNs),是一种模仿动物神经网络的行为特征,进行分布式并行信息处理的数学计算模型。近年来,神经网络发展很快,被广泛应用于诸多领域,如图像识别、语音识别、自然语言处理、天气预报、基因表达、内容推送等等。
神经网络中,有大量彼此连接的节点(也称“神经元”)。神经网络具备两个特性:1)每个神经元,通过某种特定的输出函数(也叫激活函数Activation Function),计算处理来自其它相邻神经元的加权输入值;2)神经元之间的信息传递强度用所谓的权值来定义,算法会不断自我学习,调整这个权值。
早期的神经网络只有输入和输出层两层,无法处理复杂的逻辑,因此限制了其实用性。
如图1所示,深度神经网络(Deep Neural Networks,DNNs)通过在输入层和输出层之间添加隐藏的中间层,革命性地改变了这一点。
循环神经网络(Recurrent Neural Networks,RNNs)是一种常用的深度神经网络模型。不同于传统前向神经网络(Feed-forward Neural Networks),循环神经网络引入了定向循环,能够处理输入之间前后关联的问题。在语音识别中,信号的前后关联很强,例如识别句子中的单词和该单词前面的单词序列关系十分紧密。因此,循环神经网络在语音识别领域有着非常广泛的应用。
然而,通过近几年的迅速发展,神经网络的规模不断增长,已公开的比较先进的神经网络可达数百层、数亿个连接,属于计算和访存密集型应用。在神经网络逐渐变大的情况下,模型压缩就变得极为重要。
深度神经网络中,神经元的连接关系在数学上可以表示为一系列矩阵。经过训练后的网络虽然预测准确,但其矩阵都是稠密的,即“矩阵中充满了非零元素”,从而导致大量的存储和计算资源被消耗。这不但降低了速度,而且增加了成本。这样一来,在移动端推广应用就面临着巨大的困难,极大的制约了神经网络的发展。
图2示出了一种利用剪切、重训的压缩神经网络的示意图。
近年来,广泛的研究表明,在通过训练得到的神经网络模型矩阵中,仅有部分权值较大的元素代表着重要连接,而其他权值较小的元素可以被移除(置为零),
图3示出了对应的神经元被剪枝(pruning)。剪枝后的神经网络精度会下降,但是可以通过重训(fine tune),对仍然保留在模型矩阵中的权值大小进行调整,从而减小精度损失。
模型压缩可以将神经网络中的稠密矩阵稀疏化,能够有效的降低存储量、减少计算量,在保持精度的同时实现加速。模型压缩对于专用的稀疏神经网络加速器而言,显得极为重要。
CRS和CCS
如前所述,对于稀疏矩阵的处理,为了减少内存,往往需要对矩阵进行压缩存储,比较经典的存储方法包括:行压缩(Compressed Row Storage CRS)和列压缩存储(Compressed Column Storage CCS)。
为了利用激励函数的稀疏性,可以将编码稀疏权重矩阵W存入压缩列存储(CCS)格式的变量中。
对于W矩阵每列Wj,我们存储一个包含非零权重的向量v,以及等长向量z,向量z用于编码v的相应条目之前零的个数,v和z各自由一个四位数值表示。如果超过15个零出现在一个非零的条目,在向量v中添加一个零。例如,以下列被编码为:
[0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3]
v=[1,2,0,3],z=[2,0,15,2]。
所有列的v和z的都存储在一对大阵列中,其中指针向量p指向每个列的向量的开始。p指针向量中的最后一项指向超过最后一个向量元素,这样pj+1-pj给出了第j列中的非零数(包括填补的零)。
通过压缩列存储格式(CCS format)中列存储稀疏矩阵,使得利用激励函数的稀疏性变得容易。只需要用每个非零激励与其相应列中的所有非零元素相乘。
美国专利US Patent 9317482“UNIVERSAL FPGA/ASIC MATRIX-VECTORMULTIPLICATION ARCHITECTURE”中更详细地披露了如何使用Compressed Sparse Row(CSR)在基于CPU和GPU的方案中,其中也采用Compressed Variable Length Bit Vector(CVBV)format。
语音识别Speech Recognition
语音识别(Speech Recognition),是将语言的模拟信号顺序映射到一个具体的单词集合上。近年来,人工神经网络的方法在语音识别领域取得的效果已经远远超出了所有传统方法,正在成为全行业的主流。其中,深度神经网络有着极为广泛的应用。
图4示出了一种使用神经网络的语音识别引擎的例子。在图4的模型中,涉及利用深度学习模型来计算语音输出概率,即输入语音串与各种匹配候选之间相似度预测。通过本发明的方案,可以利用例如FPGA来加速实现图4的DNN部分。
图5进一步示出了应用于图4的语音识别引擎的深度学习模型。
图5a中显示了包含CNN(卷积神经网络)、LSTM(长短时记忆模型)、DNN(深度神经网络)、Softmax等模块的深度学习模型。
图5b是本发明所旨在应用的学习模型,使用了多层LSTM。
图5b的网络模型中,输入是一段语音片段。例如,约1秒的语音,被依次切割为100帧,每帧的特性可以由浮动型向量表示。
LSTM(长短时记忆)
在语音识别领域,为了解决对长期信息的记忆问题,Hochreiter&Schmidhuber于1997年提出了长短时记忆(Long Short-Term Memory,LSTM)模型。
图6示出了在语音识别领域所的使用一种LSTM网络模型。LSTM神经网络是RNN的一种,将普通RNN当中简单的重复神经网络模块改变为复杂的连接交互关系。LSTM神经网络在语音识别中也取得了非常好的应用效果。
关于LSTM的更多信息,可以参见如下文章:Sak H,Senior A W,Beaufays F.Longshort-term memory recurrent neural network architectures for large scaleacoustic modeling[C]//INTERSPEECH.2014:338-342,Sak H,Senior A,Beaufays F.Longshort-term memory based recurrent neural network architectures for largevocabulary speech recognition[J].arXiv preprint arXiv:1402.1128,2014.
如上所述,LSTM是一种类型的RNN。RNN与DNN的区别在于,RNN是时间依赖型的。具体而言,时刻T的输入依赖于时刻T-1的输出,即,当前帧的计算需要前一帧的计算结果。
图6所示的LSTM的结构中,各个参数的意义如下:
-i、f、o分别代表三个gate,g为cell的特征输入;
-粗线代表上一帧的输出;
-每个gate有一个权值矩阵,T时刻输入与T-1的输出经过gate时的计算量较大;
-虚线代表peephole,peephole以及三个叉乘符号对应的操作均为element-wiseoperation,计算量较小。
如图7所示,为了减小LSTM层的计算量,需要再额外引入一个投影层进行降维。
图7对应的计算公式为:
it=σ(Wixxt+Wiryt-1+Wicct-1+bi)
ft=σ(Wfxxt+Wrfyt-1+Wcfct-1+bf)
ct=ft⊙ct-1+it⊙g(Wcxxt+Wcryt-1+bc)
ot=σ(Woxxt+Woryt-1+Wocct+bo)
mt=ot⊙h(ct)
yt=Wyrmt
Wic,Wcf,Woc即是peephole,对应示意图中的三条虚线。计算中单元(cell)作为操作数的运算均为向量间的element-wise operation。也可以将其理解成向量和对角矩阵的乘法,此时权值矩阵是对角矩阵。
近年来,广泛的研究表明,通过训练得到的神经网络模型矩阵中,仅有部分权值较大的元素代表着主要连接,发挥着关键作用,而其他权值较小的元素发挥的作用较小,可以被移除(置为零),与此同时对应的神经元也被剪枝(pruning)。剪枝后的网络通过重训(fine-tune),调整仍然保留在模型矩阵中权值的大小,可以保证网络的精度不下降。模型压缩可以将稠密的神经网络变成稀疏的神经网络,能够有效的减少计算量、降低访存量,从而实现加速。
然而,CPU与GPU无法充分享受到网络模型稀疏化后带来的好处,取得的加速有限。基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)这一高性能硬件载体实现的稀疏神经网络加速器,相比于主流的CPU和GPU,具有一个数量级以上的能效比优势。然而,为了充分发挥其效能,也对神经网络的压缩提出了诸如负载均衡等更高的要求。
因此,本发明的目的在于提供一种考虑负载均衡的深度神经网络的压缩方法,其旨在针对FPGA等平台的工作特点,实现多个处理单元(Process Element,PE)负载均衡的神经网络模型压缩,从而达到释放储存资源、加快计算速度、降低功耗的全方位综合性能优化的效果。
发明内容
为此,在一方面,本发明提出一种对神经网络进行压缩的方法,所述神经网络的神经元的连接关系被多个矩阵多表示,包括:分块步骤,对所述多个矩阵进行分块,把每个矩阵分为多个子矩阵;压缩步骤,对每个子矩阵进行压缩,从而把每个子矩阵压缩为稀疏矩阵;和编码步骤,对压缩后的每个稀疏子矩阵按照进行编码。
在另一方面,本发明提出一种压缩神经网络的方法,所述神经网络的神经元之间的连接关系以多个矩阵表示,所述方法包括:分块步骤,对所述多个矩阵进行分块,把每个矩阵分为多个子矩阵;敏感度分析步骤,用于分析所述多个矩阵中的每个矩阵的敏感度,以及确定各个矩阵的初始压缩比;压缩步骤,用于基于所述初始压缩比对所述各个矩阵的子矩阵进行压缩,以获得压缩后的神经网络;和重训步骤,用于重训所述压缩后的神经网络。
在另一方面,本发明提出一种对神经网络进行压缩的装置,所述神经网络的神经元的连接关系被多个矩阵多表示,包括:分块单元,用于对所述多个矩阵进行分块,把每个矩阵分为多个子矩阵;压缩单元,用于对每个子矩阵进行压缩,从而把每个子矩阵压缩为稀疏矩阵;和编码单元,用于对压缩后的每个稀疏子矩阵按照进行编码。
在另一方面,本发明提出一种压缩神经网络的装置,所述神经网络的神经元之间的连接关系以多个矩阵表示,所述装置包括:分块单元,用于对所述多个矩阵进行分块,把每个矩阵分为多个子矩阵;敏感度分析单元,用于分析所述多个矩阵中的每个矩阵的敏感度,以及确定各个矩阵的初始压缩比;压缩单元,用于基于所述初始压缩比对所述各个矩阵的子矩阵进行压缩,以获得压缩后的神经网络;和重训单元,用于重训所述压缩后的神经网络。
附图说明
图1示出了一种深度神经网络(Deep Neural Networks,DNNs)的模型。
图2示出了一种利用剪切、重训的压缩神经网络的示意图。
图3示出了剪枝后的神经网络,其中一部分神经元被剪枝。
图4示出了一种使用神经网络的语音识别引擎的例子。
图5示出了应用于语音识别引擎的深度学习模型。
图6示出了应用于语音识别领域的一种LSTM网络模型。
图7示出了一种改进的LSTM网络模型。
图8示出了一种LSTM神经网络的压缩方法。
图9示出了敏感度测试的具体步骤。
图10显示了对LSTM网络应用敏感度测试的得到的相应曲线。
图11示出了确定最终稠密度序列并进行剪枝的具体步骤。
图12示出了通过“压缩试验-稠密度序列调整”迭代调整初始稠密度序列的具体子步骤。
图13示出了对神经网络进行重训的具体步骤。
图14示出了矩阵与向量相乘的运算的示例。
图15示出了不考虑负载均衡进行矩阵压缩的一个示例性结果。
图16示出了因负载不均衡产生空载周期的一个示例。
图17示出了对稠密矩阵进行分块的示例。
图18示出了考虑负载均衡进行矩阵压缩的一个示例性结果。
图19示出了按照稀疏矩阵储存方式进行储存的示例。
图20示出了考虑负载均衡的压缩方法的流程图。
图21示出了根据本发明的考虑负载均衡的压缩方法与常规压缩方法在不同压缩率下的加速比。
具体实施方式
发明人过去的研究成果
如发明人之前的文章“Learning both weights and connections forefficient neural networks”中,已经提出了一种通过修剪来压缩神经网络(例如,CNN)的方法。所述方法包括如下步骤。
初始化步骤,把卷积层、FC层的权重初始化为随机值,其中生成了具有完全连接的ANN,所述连接具有权重参数,
训练步骤,训练所述ANN,根据ANN的精度,来调整ANN的权重,直到所述精度达到预定标准。所述训练步骤基于随机梯度下降算法来调整所述ANN的权重,即随机调整权重值,基于ANN的精度变化来进行选择。关于随机梯度算法的介绍,可以参见上述“Learning bothweights and connections for efficient neural networks”。此外,所述精度可以量化为,针对训练数据集,ANN的预测结果和正确结果之间的差异。
修剪步骤,基于预定的条件,发现ANN中的不重要的连接,修剪所述不重要的连接。具体而言,被修剪的连接的权重参数不再被保存。例如,所述预定条件包括以下任意之一:连接的权重参数为0;或连接的权重参数小于预定值。
微调步骤,将被修剪的连接重新设置为权重参数值为零的连接,即,恢复所述被修剪的连接,并分配权重值为0。
迭代步骤,判断ANN的精度达到预定标准。如果没有,重复上述训练、修剪、微调步骤。
本发明提出的改进
本发明提供了一种多次迭代的深度神经网络的压缩方法。
图8示出了根据本发明的一个实施例的一种适用于LSTM神经网络的压缩方法,其中通过多次迭代操作来实现神经网络的压缩。
根据图8的实施例,每次迭代操作具体包括敏感度分析、剪枝、重训三个步骤。下面对每个步骤进行具体说明。
步骤8100,敏感度测试(sensitivity analysis)。
在该步骤中,例如,针对LSTM网络中所有矩阵进行敏感度分析,以确定不同矩阵的初始稠密度(或者初始压缩比)。
图9示出了敏感度测试的具体步骤。
如图9所示,在步骤8110,例如,对LSTM网络中的各个矩阵尝试按照不同稠密度进行压缩(所选择的稠密度例如是0.1,0.2,…,0.9,对矩阵的具体压缩方法参考步骤8200)。然后,测量以不同稠密度压缩的网络的词错误率(Word Error Rate,WER)。
在识别一段单词序列时,可能存在一些单词被错误地插入、删除或替换的情况。例如,对于包含N个单词的一段初始识别文字而言,如果有I个单词被插入、D个单词被删除以及S个文字被替换,那么WER为:
WER=(I+D+S)/N,
其中,WER通常由百分比表示。通常而言,压缩后网络的WER会变大,这意味着压缩后网络的精度会变差。
在步骤8120,对于一个矩阵,以稠密度为横坐标,WER为纵坐标,绘制神经网络中该矩阵在不同稠密度下的WER曲线。针对每个矩阵都绘制所述稠密度-WER曲线。
在步骤8130,对于一个矩阵,从曲线中寻找WER剧烈变化的点所对应的稠密度为该矩阵的初始稠密度。针对每个矩阵都获得所述初始稠密度。
在本实施例中,选取稠密度-WER曲线的拐点所对应的稠密度作为该矩阵的初始稠密度。具体而言,在一次迭代中拐点以如下方法确定:
已知压缩前(即稠密度为1)的初始网络WER为:WER(initial);
针对不同稠密度得到相应的压缩后的网络WER为:WER(0.1)、WER(0.2)、···、WER(0.9);
计算ΔWER,即:WER(0.1)与WER(initial)进行比较、WER(0.2)与WER(initial)进行比较、···、WER(0.9)与WER(initial)进行比较;
基于计算得到的ΔWER,拐点指的是ΔWER小于一定阈值的所有点当中具有最小稠密度的那个点。应当理解,可以基于其他策略选取曲线中WER剧烈变化的点,这些策略也包含在本发明的范围中。
在一个示例中,对于一个3层LSTM网络,其中每层有9个稠密矩阵需要压缩:Wix、Wfx、Wcx、Wox、Wir、Wfr、Wcr、Wor、Wrm,这样一共有27个稠密矩阵需要压缩。
首先,对每个矩阵,按照稠密度从0.1到0.9,以步长0.1做9次试验,测试整个网络在9次试验中的WER,并绘制相应稠密度-WER曲线。这样,针对27个矩阵,一共获得27条曲线。
然后,针对每个矩阵,从该矩阵对应的稠密度-WER曲线中(例如,针对第一层LSTM中的Wix矩阵绘制的曲线),找到WER剧烈变化的点。
这里,认为相比于本轮迭代的初始网络的WER,ΔWER变化小于1%的所有点当中具有最小稠密度的那个点为拐点。
例如,假设初始网络的WER为24%,则选取曲线中WER小于25%的所有点当中具有最小稠密度的那个点作为拐点。取拐点对应的稠密度作为该Wix的初始稠密度。
这样,可以得到一个长度为27的初始稠密度序列,分别对应每个矩阵的初始稠密度。因此可以以该初始稠密度序列指导压缩。
一个初始稠密度序列的例子如下(矩阵排列顺序为Wcx、Wix、Wfx、Wox、Wcr、Wir、Wfr、Wor、Wrm):
densityList=[0.2,0.1,0.1,0.1,0.3,0.3,0.1,0.1,0.3,
0.5,0.1,0.1,0.1,0.2,0.1,0.1,0.1,0.3,
0.4,0.3,0.1,0.2,0.3,0.3,0.1,0.2,0.5]
图10示出了一个单层LSTM网络中9个矩阵的相应稠密度-WER曲线。可以看到,不同矩阵对于压缩的敏感度大相径庭,其中,w_g_x,w_r_m,w_g_r相对于其他矩阵而言较为敏感,即在稠密度-WER曲线中存在max(ΔWER)>1的点。
步骤8200,确定最终稠密度序列(density determination)并进行剪枝(Pruning)。
图11示出了确定最终稠密度序列并进行剪枝的具体步骤。
如图11所示,图8的步骤8200可以包括若干子步骤。
首先,在步骤8210,基于步骤8100中确定的初始稠密度序列,指导每一个对应的矩阵进行初次压缩试验。
然后,在步骤8215,基于初次压缩试验的结果,测试压缩后网络的WER。如果压缩前后网络的ΔWER超过某一阈值ε(例如,4%),则进行到下一步骤8220。
在步骤8220,通过“压缩试验-稠密度序列调整”迭代来调整初始稠密度序列。在步骤8225,获得最终稠密度序列。
如果ΔWER未超过该阈值ε,则直接进行到步骤8225,初始稠密度序列即为最终稠密度序列。
最后,在步骤8230,基于最终稠密度序列指导LSTM网络进行剪枝。
下面,对图11的各子步骤进行详细说明。
步骤8210,进行初次压缩试验
根据研究中获得的经验,矩阵中绝对值比较大的权值对应着比较强的神经元连接关系。因此,在本实施例中,基于矩阵中元素的绝对值进行矩阵压缩。应当理解,可以基于其他策略对矩阵进行压缩,这些策略也包含在本发明的范围中。
根据本发明的一个实施例,对每个矩阵中的所有元素按照绝对值从小到大进行排序。然后,基于步骤8100中确定的该矩阵的初始稠密度对该矩阵进行压缩,只保留对应的稠密度所对应比例的绝对值较大的元素,并且将其余元素置零。例如,如果该矩阵的初始稠密度为0.4,那么,保留该矩阵中绝对值较大的前40%的元素,将剩余60%元素置零。
步骤8215,判断压缩前后网络的ΔWER超过某一阈值ε(例如,4%)。
步骤8220,如果压缩前后网络的ΔWER超过所述阈值ε(例如,4%),则通过“压缩试验-稠密度序列调整”迭代。
步骤8225,通过在步骤8220调整初始稠密度序列,获得最终稠密度序列。
图12示出了通过“压缩试验-稠密度序列调整”迭代调整初始稠密度序列的具体步骤。
如图12所示,在步骤8221,对相对敏感的矩阵的稠密度进行调整。即,上浮相对敏感的矩阵的稠密度,例如,上浮0.05。基于该稠密度,对相应矩阵进行压缩试验。
在本实施例中,压缩试验的策略与初次压缩试验相同,但是应当理解,可以选择其他策略对矩阵进行压缩,这些策略也包含在本发明的范围中。
然后,计算压缩后的网络的WER,若WER仍不满足目标,则继续上浮相对敏感的矩阵的稠密度,例如上浮0.1。基于该稠密度,对相应矩阵进行压缩试验。以此类推,直到压缩前后网络的ΔWER在所述阈值ε(例如,4%)以下。
可选地或依次地,在步骤8222,可以继续对相对不敏感的矩阵的稠密度进行微调,从而使压缩前后网络的ΔWER在某一阈值ε’(例如,3.5%)以下。这样,可以进一步提高压缩后的网络的准确度。
如图12所示,对相对不敏感的矩阵的稠密度的微调过程类似于前述对相对敏感的矩阵的稠密度的微调过程。
在一个示例中,神经网络的原始WER为24.2%,步骤8100中获得的初始稠密度序列为:
densityList=[0.2,0.1,0.1,0.1,0.3,0.3,0.1,0.1,0.3,
0.5,0.1,0.1,0.1,0.2,0.1,0.1,0.1,0.3,
0.4,0.3,0.1,0.2,0.3,0.3,0.1,0.2,0.5]
按照初始稠密度序列对网络进行剪枝,压缩后的网络的WER恶化为32%,此时需要调整初始稠密度序列。具体步骤如下:
根据步骤8100的结果得知,第一层LSTM中的矩阵Wcx,Wcr,Wir,Wrm、第二层中矩阵的Wcx,Wcr,Wrm、和第三层中矩阵的Wcx,Wix,Wox,Wcr,Wir,Wor,Wrm相对敏感,其余矩阵相对不敏感。
首先,对上述相对敏感的矩阵,按0.05的步长增大其对应的初始稠密度。
然后,基于上浮的稠密度对神经网络阵进行压缩试验。通过计算得到压缩后网络的WER为27.7%。此时,满足压缩前后网络ΔWER<4%的要求,停止调整相对敏感的矩阵的稠密度。
根据本发明的另一实施例,可选地,可以对相对不敏感的矩阵的初始稠密度进行微调,使压缩前后网络ΔWER<3.5%。在本示例中,省略该步骤。
因此,通过“压缩试验-稠密度序列调整”迭代调整得到的最终稠密度序列为:
densityList=[0.25,0.1,0.1,0.1,0.35,0.35,0.1,0.1,0.35,
0.55,0.1,0.1,0.1,0.25,0.1,0.1,0.1,0.35,
0.45,0.35,0.1,0.25,0.35,0.35,0.1,0.25,0.55]
此时,压缩后的神经网络的整体稠密度约为0.24。
步骤8230,基于最终稠密度进行剪枝(Pruning)。
例如,在本实施例中,同样基于矩阵中元素的绝对值对矩阵进行剪枝。
具体地,对每个矩阵中的所有元素按照绝对值从小到大进行排序;然后,基于最终稠密度序列对各矩阵进行压缩,对于每个矩阵,只保留相应稠密度对应的绝对值较大的元素,并且将其余元素置零。
在步骤8300,重训(fine tuning)
对神经网络的训练是对损失函数进行优化的过程。损失函数指的是在给定输入下,神经网络模型预测的结果与真实结果之间的差别。希望损失函数的值尽可能小。
对神经网络的训练的本质在于寻找最优解。重训即指在已有的一个可能的离最优解很近的次优解的情况下,搜索最优解,也就是在一定的基础上继续训练。
例如,对于LSTM深度神经网络,在步骤8200剪枝操作以后,在保留下来的权值的基础上继续训练,寻找最优解,就是一个重训的过程。
图13示出了对神经网络进行重训的具体步骤。
如图13所示,输入是在步骤8200剪枝操作之后的神经网络。
在步骤8310中,首先,用训练集训练步骤8200得到的稀疏神经网络并进行权值矩阵更新。
然后,在步骤8320,判断该矩阵是否收敛到局部最优解。
如果未收敛到局部最优解,则返回步骤8310,重复训练集训练和权值矩阵更新的步骤。
如果收敛到最优解,则进行到步骤8330,获得最终神经网络。
在本发明一个实施例中,重训时采用梯度下降法来更新权值矩阵。
具体地,梯度下降法基于这样的观察:
如果实值函数F(x)在点a处可微且有定义,那么函数F(x)在a点沿着梯度相反的方向-
Figure BDA0001171181660000101
下降最快。因而,如果:
Figure BDA0001171181660000102
对于γ>0为一个够小数值时成立,那么F(a)≥F(b),其中a是向量。
考虑到这一点,我们可以从函数F的局部极小值的初始估计x0出发,并考虑如下序列x0,x1,x2,…使得:
Figure BDA0001171181660000103
因此可得到:
Figure BDA0001171181660000107
如果顺利的话,序列(xn)收敛到期望的极值。注意每次迭代步长γ可以改变。
这里,将F(x)理解为损失函数,就可以理解梯度下降法使得模型预测损失减小的原理。
在一个示例中,参考论文DSD:Regularizing Deep Neural Networks withDense-Sparse-Dense Training Flow in NIPS 2016,对LSTM深度神经网络的重训方法如下:
Figure BDA0001171181660000104
这里,W是权值矩阵,η代表学习率,也就是随机梯度下降法的步长,f是损失函数,
Figure BDA0001171181660000105
是对损失函数求梯度,x是训练数据,t+1代表更新权值。
上式的含义是:用权值矩阵减去学习率与损失函数梯度的乘积,来更新权值矩阵。
在另一个示例中,保持网络中各个矩阵压缩后非零元素的分布的方法是使用掩码(mask)矩阵,该掩码矩阵仅包括0和1元素,用于记录压缩后矩阵非零元素的分布信息。
通常带掩码的重训方法如下:
Figure BDA0001171181660000106
Mask=(W(0)≠0)
也就是,对计算出来的梯度乘以掩码矩阵,保证梯度矩阵变成与掩码矩阵相同的形状,用来更新权值矩阵。
下面,详细说明重训过程和收敛判断准则的一个具体示例。
在该示例中,重训的输入为:待训练的网络、学习率、最大训练轮数、keep_lr_iters(保持原学习率的轮数)、start_halving_impr(用于确定改变学习率的时机,例如0.01)、end_halving_impr(用于终止训练,例如0.001)、halving_factor(例如0.5)、数据集(训练集、交叉验证集、测试集)等。
此外,重训的输入还包括学习动量、num-stream、batch-size等参数,这里暂时省略这些参数。重训的输出为:训练后的网络。
重训的具体过程如下:
1、对待训练的初始模型采用交叉验证数据集测试平均损失(cross loss,后面简称“loss”),作为衡量网络训练好坏的初始标准;
2、迭代训练:
·迭代训练分为多个“epoch”进行(这里,训练集中所有数据运行一遍称为一个epoch,后面简称“一轮”),迭代的总轮数不会超过最大训练轮数max_iters;
·在每一轮中,采用训练数据集,利用梯度下降法,更新网络中矩阵的权值;
·每轮训练结束后,保存训练出的网络,并对其采用交叉验证数据集测试平均损失loss,如果此时的loss比上一轮有效训练的loss(记为loss_prev)大,则拒绝本次训练(下一轮的训练还是基于上一轮训练结果),否则接受本次训练(下一轮训练基于本轮训练结果),并存储本轮的loss;
·学习率的动态改变及训练终止的条件:涉及到输入参数start_halving_impr、end_halving_impr、halving_factor等,每轮训练结束后,根据(loss_prev-loss)/loss_prev计算improvement并记为real_impr,其表示本轮被接受的训练结果的loss相比于上一轮被接受的训练结果的loss相对提升的大小,然后根据real_impr进行处理:
1)如果迭代轮数小于keep_lr_iters,则不改变学习率;
2)如果real_impr小于start_halving_impr(例如0.01),即本轮训练相比于上一轮提升已经到某个较小的限度内,说明接近局部最优解了,则使得学习率减小(乘以halving_factor,通常是折半),从而减小梯度下降法的步长,以更小的步子接近局部最优解;
3)如果real_impr小于end_halving_impr(例如0.001),即本轮训练相比于上一轮相对提升比较小了,认为训练已经达到终点并终止训练(但是如果训练轮数小于min_iters,则会继续训练至min_iters轮)。
因此,训练结束的情况可能包括以下四种:
1、训满min_iters轮,中间未出现real_impr小于end_halving_impr,则取第min_iters轮的结果;
2、训满min_iters轮,中间出现了real_impr小于end_halving_impr,则取前min_iters轮中loss最小的那一轮训练结果;
3、正常训练超过min_iters轮,但是小于max_iters轮,出现real_impr小于end_halving_impr,则取最后一轮,也就是loss最小的那一轮的训练结果;
4、正常训练到max_iters轮,未出现real_impr小于end_halving_impr,取第max_iters轮的结果。
应注意,上述示例描述了一种重训过程以及用于确定矩阵是否收敛到局部最优解的判断准则。然而,在实际操作中,为了提高压缩效率,不必须等到收敛结果,可以取中间结果,然后进行下一轮压缩。
此外,判断准则还包括判断经过训练后的网络的WER是否满足一定标准等,这些判断准则也包含在本发明的范围中。
通过重训,网络的WER下降,从而减少了压缩带来的精度损失。例如,通过重训,一个稠密度为0.24的LSTM网络的WER可以从27.7%下降到25.8%。
迭代步骤(iteration)
返回参照图8,如上文所述,本发明通过多次迭代操作、即重复上述步骤8100、8200、8300而将神经网络压缩至期望稠密度。
例如,在一个示例中,希望最终网络稠密度为0.14。
在第一轮迭代中,通过步骤8300得到稠密度为0.24、WER为25.8%的网络。
重复上述步骤8100、8200、8300对该网络继续进行多轮压缩。
例如,在第二轮压缩后,网络的稠密度为0.18,WER为24.7%。
继续第三轮压缩后,网络稠密度为0.14,WER为24.6%,达到目标。
本发明提出的进一步改进
如上文所述,对于神经网络模型,一般通过对其进行压缩而将稠密的神经网络变成稀疏的神经网络,从而有效的减少计算量、降低访存量,实现加速。
举例而言,LSTM计算涉及9个稀疏矩阵,分别为:Wix、Wir、Wfx、Wfr、Wcx、Wcr、Wox、Wor和Wry。为了提高运算效率,对需要运算的矩阵进行压缩并存储。
如图14所示,这里涉及的主要运算都是矩阵与向量相乘。
对于稠密矩阵,由于每一个元素(包括0)都参与运算,多个PE并行计算不会产生负载不均衡的问题。然而,由于这里使用了压缩技术,对稠密矩阵进行了稀疏化,实际上存储和参与运算的元素都是非零元素,因此也导致产生负载不均衡的问题。
图15示出了不考虑负载均衡进行矩阵压缩的一个示例性结果。不考虑负载均衡,即,对稠密矩阵直接进行压缩。
如图15所示,以PE0、PE1为例。压缩后,PE0中有14个非零元素,因此需要较长计算时间;而PE1中仅有5个非零元素,因此需要较短计算时间。由于二者在进行矩阵向量相乘运算时,需要共享输入向量,所以即使PE1首先完成计算,也需要等待PE0,因而产生了空载的时间。
图16示出了因PE之间负载不均衡产生空载周期的示例。可见,PE之间负载越不均衡,空载周期越长。
为解决上述问题,本发明提出一种考虑负载均衡的压缩方法。
该方法的本质在于,在对稠密矩阵进行压缩之前,先将稠密矩阵分割成大小相似的稠密子矩阵,其中,各子矩阵中含有相似数目的非零元素。
具体地,使用本发明的压缩方法进行矩阵压缩和储存包括以下步骤:
首先,在进行稠密矩阵压缩之前对矩阵进行分块;
然后,以相同的压缩率对每个稠密子矩阵进行压缩;
最后,对压缩后的每个稀疏子矩阵按照稀疏矩阵的特有格式进行存储。
下面,对矩阵分块、矩阵压缩和稀疏矩阵存储进行详细说明。
矩阵分块
由于单个矩阵与向量相乘是在N个PE中同时进行的,所以,需要首先对矩阵进行分块。即,将矩阵分成N个子矩阵,并且将数据相应地分给各个PE。
由于希望每个PE中非零元素较为均衡,从而保证均衡的计算时间,希望对每个稠密矩阵分块后,各子矩阵大小相似并且每个子矩阵中具有相似数量的非零元素。
在本发明的一个实施例中,对每个稠密矩阵以每隔N行抽取的方式进行分割,从而形成N个大小相似的子矩阵。这里,选择隔N行抽取的方式分割矩阵是为了使分割后的子矩阵更倾向于具有相似数量的非零元素。这样,在以相同压缩率对子矩阵进行压缩后,每个PE中的非零元素较为均衡。
图17示出了按行循环将2048*512的稠密矩阵分为32个子矩阵的示例,每个子矩阵的大小为64*512。例如,所述32个子矩阵可以对应于32个计算单元(PE),或其它个数(例如16、8、4个)的计算单元。
应理解,也可以采用其他矩阵分块策略用于形成非零元素较为均衡的子矩阵,这些策略也包括在本发明的范围内。
矩阵压缩为稀疏矩阵
在分块后,以相同的压缩率对每个子矩阵进行压缩。例如,将各子矩阵中的元素按绝对值从小到大进行排序,保留与相应压缩率相对应比例的绝对值较大的元素,并将其余元素置零。
由于这N个子矩阵采用完全相同的压缩率,压缩后,其非零元素个数也是均衡的。
图18示出了考虑负载均衡进行矩阵压缩的一个示例性结果。
如图18所示,以PE0、PE1为例,考虑负载均衡进行压缩后,PE0中有10个非零元素,PE1中有9个非零元素。PE0和PE1二者的计算时间相似,从而减少了空载周期,进而缩短了计算周期。
稀疏矩阵编码存储
对压缩后的稀疏子矩阵进行储存。通过使用稀疏矩阵特有的格式进行储存,可以大大减小储存空间。其中,使用真值、相对行索引和列指针三个向量来表示原来的稀疏矩阵。
图19示出了一种具体的存储方法,其示出了由被框选的行组成的子矩阵按照稀疏矩阵存储格式存储的结果。
关于该储存方法的具体内容,可以参照发明人之一过去发表的研究论文:EIE:Efficient Inference Engine on Compressed Deep Neural Network.。此外,可以采用行压缩(Compressed Row Storage CRS)和列压缩存储(Compressed Column Storage CCS)。
LSTM神经网络的压缩
图20示出了根据本发明的一个实施例的适用于LSTM神经网络的压缩方法。
根据图20的实施例,每次迭代操作具体包括矩阵分块、敏感度分析、剪枝、重训4个步骤。下面对每个步骤进行具体说明。
步骤2010,矩阵分块。
在该步骤中,结合硬件中PE的个数(假设为N),对每一个待压缩的矩阵按每隔N行进行抽取的方式,将其分割成N个大小相似的子矩阵。
步骤2020,敏感度测试。
在该步骤中,针对LSTM网络中的各个矩阵尝试按照不同压缩率进行压缩,基于以不同压缩率压缩后的网络的词错误率,确定各矩阵的初始压缩率。
例如参照图8、图9的记载可知,在敏感度测试过程中,也涉及以不同的压缩比对矩阵进行压缩。所述敏感度测试步骤2020中的压缩步骤,可以进一步参考图8的步骤8200以及图11的流程记载。
因此,通过步骤2010的矩阵分块步骤,可以进一步提高敏感度测试步骤2020的速度和效率,从而实现了优化。
步骤2030,压缩步骤。
基于步骤2020中确定的压缩率对相应子矩阵进行压缩。
具体地,将各子矩阵中的元素按绝对值从小到大进行排序,保留与相应压缩率相对应比例的绝对值较大的元素,并将其余元素置零。
由于这N个子矩阵采用完全相同的压缩率,压缩后,其非零元素个数也是均衡的。
关于所述压缩操作的更多信息,可以进一步参考图8的步骤8200以及图11、12的流程记载。
步骤2040,重训步骤。
对步骤2030中得到的神经网络进行重训,从而在不改变压缩率的情况下重新提升网络的准确率,减小压缩带来的精度损耗。
具体地,首先,使用训练集对该神经网络进行训练,并进行权值矩阵更新;然后,判断该矩阵是否收敛到局部最优解。如果未收敛到局部最优解,则返回继续训练;如果收敛到最优解,则把该神经网络作为最终神经网络。
关于所述重训操作的更多信息,可以进一步参考图8的步骤8300以及图13的流程记载。
图21示出了根据本发明的考虑负载均衡的压缩方法和不考虑负载均衡的压缩方法在不同压缩率下取得的加速比。可见,通过本发明的考虑负载均衡的压缩方法,网络的运算效率得到提高。
技术效果
基于上述技术方案可知,本发明提出考虑负载均衡的压缩方法具有以下有益效果:
1、通过采用该方法,可以将原始的稠密网络经过一系列独特的压缩操作,生成精度基本保持不变,但实际参数大大减少的新网络,从而解决运算中有效数据占比较低的问题,极大的减小了存储空间,有效的提高了运算效率;
2、如上文所述,PE之间负载不均衡会导致硬件实际性能与理论峰值性能之间存在显著差异。通过采用本发明的压缩方法,在网络压缩时充分考虑FPGA等硬件平台多个内核并行计算的特点,使各个PE中参与运算的矩阵非零元个数相似,从而保证各个PE的负载均衡,极大的提升硬件平台的资源利用率。
以上实施例仅仅以LSTM网络作为说明本发明的例子。应当理解,本发明可以不限于LSTM神经网络,而是可以应用到其他各种神经网络。

Claims (17)

1.一种通过硬件平台进行神经网络计算的方法,所述神经网络的神经元之间的连接关系以多个矩阵表示,使用硬件平台中的N个计算单元来实现使输入数据通过神经网络的计算,所述N个计算单元能够以并行方式进行计算,所述方法包括:
分块步骤,对所述多个矩阵进行分块,把每个矩阵分为N个大小相似的子矩阵,其中,各子矩阵中含有相似数目的非零元素;
压缩步骤,对每个子矩阵进行压缩,从而把每个子矩阵压缩为稀疏矩阵;
编码步骤,对压缩后的每个稀疏子矩阵进行编码;
分块计算步骤,把编码后的N个稀疏子矩阵以并行方式分别相应地提供给所述N个计算单元以进行神经网络计算。
2.根据权利要求1所述的方法,所述分块步骤进一步包括:
对每个矩阵以每隔N行抽取的方式进行分割,从而形成N个大小相似的子矩阵。
3.根据权利要求1所述的方法,所述压缩步骤包括:以相同的压缩率对每个子矩阵进行压缩。
4.根据权利要求3所述的方法,所述压缩步骤包括:将各子矩阵中的元素按绝对值从小到大进行排序,保留与相应压缩率相对应比例的绝对值较大的元素,并将其余元素置零。
5.根据权利要求1所述的方法,所述编码步骤包括:以行压缩(Compressed RowStorage CRS)或列压缩存储(Compressed Column Storage CCS)方式来编码所述稀疏子矩阵。
6.一种通过硬件平台进行神经网络计算的方法,所述神经网络的神经元之间的连接关系以多个矩阵表示,使用硬件平台中的N个计算单元来实现使输入数据通过神经网络的计算,所述N个计算单元能够以并行方式进行计算,所述方法包括:
分块步骤,对所述多个矩阵进行分块,把每个矩阵分为N个大小相似的子矩阵,其中,各子矩阵中含有相似数目的非零元素;
敏感度分析步骤,用于分析所述多个矩阵中的每个矩阵的敏感度,以及确定各个矩阵的初始压缩比;
压缩步骤,用于基于所述初始压缩比对所述各个矩阵的子矩阵进行压缩,以获得压缩后的神经网络;
重训步骤,用于重训所述压缩后的神经网络;
分块计算步骤,把重训后的神经网络中的各个子矩阵以并行方式分别相应地提供给所述N个计算单元以进行神经网络计算。
7.根据权利要求6所述的方法,还包括:
迭代执行所述分块步骤、所述敏感度分析步骤、所述压缩步骤、所述重训步骤。
8.根据权利要求6所述的方法,所述神经网络是LSTM神经网络。
9.根据权利要求6所述的方法,所述分块步骤进一步包括:
对每个矩阵以每隔N行抽取的方式进行分割,从而形成N个大小相似的子矩阵。
10.根据权利要求6所述的方法,其中,所述敏感度分析步骤进一步包括:
获得压缩前的神经网络词错误率WERinitial
基于不同压缩比d1、d2、…dn来压缩所述神经网络,得到压缩后的各个神经网络词错误率WERd1、WERd2,…WERdn
基于所述各个神经网络词错误率WERd1、WERd2,…WERdn,从所述多个不同压缩比中选择一个作为初始压缩比。
11.根据权利要求10所述的方法,其中,从所述多个不同压缩比中选择一个作为初始压缩比包括:
计算各个ΔWER,即WERinitial与WERd1、WERd2,…WERdn的差值;
基于所述各个ΔWER,选择满足ΔWER小于预定阈值的所有压缩比d1、d2、…dn之中最大的压缩比。
12.根据权利要求6所述的方法,其中,所述压缩步骤进一步包括:
基于各个矩阵的初始压缩比对相应矩阵进行剪枝(pruning)操作。
13.根据权利要求6所述的方法,其中,所述压缩步骤进一步包括:
第一压缩步骤,基于所述各个矩阵的初始压缩比,压缩所述神经网络的各个矩阵的子矩阵;
调整步骤,基于所述第一压缩步骤后的神经网络的词错误率(WER),调整所述各个矩阵的初始压缩比,以获得各个矩阵的调整压缩比;
第二压缩步骤,基于所述各个矩阵的调整压缩比,压缩所述神经网络的各个矩阵的子矩阵,以获得压缩后的神经网络。
14.根据权利要求6所述的方法,其中,所述重训步骤进一步包括:
训练步骤,使用训练集训练所述神经网络,并进行权值矩阵更新;
判断步骤,判断该矩阵是否收敛到局部最优解;
如果未收敛到局部最优解,则返回所述训练步骤;
如果收敛到最优解,则把所述神经网络作为最终神经网络。
15.根据权利要求14所述的方法,其中,所述训练步骤包括:
输入训练集数据,计算损失函数对网络参数的导数,求得梯度矩阵;
采用随机梯度下降法,更新网络中的权值矩阵,其中,更新后的权值矩阵=更新前的权值矩阵-学习率*梯度矩阵;
针对更新网络中的权值矩阵,计算网络的平均损失;
判断本轮训练是否有效,其中,如果平均损失比上一轮有效训练的平均损失大,则本轮训练无效;如果平均损失比上一轮有效训练的平均损失小,则本轮训练有效;
如果本轮训练无效,且没有达到最大训练轮数,则调整学习率,在上一轮有效训练的基础上继续训练;
如果本轮训练有效,则进行判断步骤。
16.一种通过硬件平台进行神经网络计算的装置,所述神经网络的神经元之间的连接关系以多个矩阵表示,使用硬件平台中的N个计算单元来实现使输入数据通过神经网络的计算,所述N个计算单元能够以并行方式进行计算,所述装置包括:
分块单元,用于对所述多个矩阵进行分块,把每个矩阵分为N个大小相似的子矩阵,其中,各子矩阵中含有相似数目的非零元素;
压缩单元,用于对每个子矩阵进行压缩,从而把每个子矩阵压缩为稀疏矩阵;
编码单元,用于对压缩后的每个稀疏子矩阵进行编码;
分块计算单元,把编码后的N个稀疏子矩阵以并行方式分别相应地提供给所述N个计算单元以进行神经网络计算。
17.一种通过硬件平台进行神经网络计算的装置,所述神经网络的神经元之间的连接关系以多个矩阵表示,使用硬件平台中的N个计算单元来实现使输入数据通过神经网络的计算,所述N个计算单元能够以并行方式进行计算,所述装置包括:
分块单元,用于对所述多个矩阵进行分块,把每个矩阵分为N个大小相似的子矩阵,其中,各子矩阵中含有相似数目的非零元素;
敏感度分析单元,用于分析所述多个矩阵中的每个矩阵的敏感度,以及确定各个矩阵的初始压缩比;
压缩单元,用于基于所述初始压缩比对所述各个矩阵的子矩阵进行压缩,以获得压缩后的神经网络;
重训单元,用于重训所述压缩后的神经网络;
分块计算单元,把重训后的神经网络中的各个子矩阵以并行方式分别相应地提供给所述N个计算单元以进行神经网络计算。
CN201611105081.7A 2016-08-12 2016-12-05 考虑负载均衡的深度神经网络压缩方法 Active CN107239825B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/390,556 US10984308B2 (en) 2016-08-12 2016-12-26 Compression method for deep neural networks with load balance

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/242,624 US20180046903A1 (en) 2016-08-12 2016-08-22 Deep processing unit (dpu) for implementing an artificial neural network (ann)
US15/242,622 US10621486B2 (en) 2016-08-12 2016-08-22 Method for optimizing an artificial neural network (ANN)
US15/242,624 2016-08-22
US15/242,622 2016-08-22

Publications (2)

Publication Number Publication Date
CN107239825A CN107239825A (zh) 2017-10-10
CN107239825B true CN107239825B (zh) 2021-04-09

Family

ID=59983010

Family Applications (4)

Application Number Title Priority Date Filing Date
CN201611105480.3A Active CN107679617B (zh) 2016-08-12 2016-12-05 多次迭代的深度神经网络压缩方法
CN201611105491.1A Active CN107689948B (zh) 2016-08-12 2016-12-05 应用于神经网络硬件加速系统的高效数据访存管理装置
CN201611104482.0A Active CN107689224B (zh) 2016-08-12 2016-12-05 合理使用掩码的深度神经网络压缩方法
CN201611105081.7A Active CN107239825B (zh) 2016-08-12 2016-12-05 考虑负载均衡的深度神经网络压缩方法

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN201611105480.3A Active CN107679617B (zh) 2016-08-12 2016-12-05 多次迭代的深度神经网络压缩方法
CN201611105491.1A Active CN107689948B (zh) 2016-08-12 2016-12-05 应用于神经网络硬件加速系统的高效数据访存管理装置
CN201611104482.0A Active CN107689224B (zh) 2016-08-12 2016-12-05 合理使用掩码的深度神经网络压缩方法

Country Status (1)

Country Link
CN (4) CN107679617B (zh)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017218889A1 (de) * 2017-10-23 2019-04-25 Robert Bosch Gmbh Unscharf parametriertes KI-Modul sowie Verfahren zum Betreiben
US11651223B2 (en) * 2017-10-27 2023-05-16 Baidu Usa Llc Systems and methods for block-sparse recurrent neural networks
CN107977704B (zh) * 2017-11-10 2020-07-31 中国科学院计算技术研究所 权重数据存储方法和基于该方法的神经网络处理器
CN107832835A (zh) * 2017-11-14 2018-03-23 贵阳海信网络科技有限公司 一种卷积神经网络的轻量化方法及装置
CN107832439B (zh) 2017-11-16 2019-03-08 百度在线网络技术(北京)有限公司 多轮状态追踪的方法、系统及终端设备
CN109902812B (zh) * 2017-12-11 2020-10-09 中科寒武纪科技股份有限公司 板卡和神经网络运算方法
CN108170529A (zh) * 2017-12-26 2018-06-15 北京工业大学 一种基于长短期记忆网络的云数据中心负载预测方法
CN108038546B (zh) 2017-12-29 2021-02-09 百度在线网络技术(北京)有限公司 用于压缩神经网络的方法和装置
CN109791628B (zh) * 2017-12-29 2022-12-27 清华大学 神经网络模型分块压缩方法、训练方法、计算装置及系统
EP3624019A4 (en) 2017-12-30 2021-03-24 Cambricon Technologies Corporation Limited CHIP DEVICE WITH INTEGRATED CIRCUIT AND ASSOCIATED PRODUCT
CN109993292B (zh) * 2017-12-30 2020-08-04 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109993291B (zh) * 2017-12-30 2020-07-07 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109993290B (zh) 2017-12-30 2021-08-06 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN113807510B (zh) 2017-12-30 2024-05-10 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN108280514B (zh) * 2018-01-05 2020-10-16 中国科学技术大学 基于fpga的稀疏神经网络加速系统和设计方法
CN110084364B (zh) * 2018-01-25 2021-08-27 赛灵思电子科技(北京)有限公司 一种深度神经网络压缩方法和装置
CN110110853B (zh) * 2018-02-01 2021-07-30 赛灵思电子科技(北京)有限公司 一种深度神经网络压缩方法、装置及计算机可读介质
EP3750113A1 (en) * 2018-02-09 2020-12-16 DeepMind Technologies Limited Contiguous sparsity pattern neural networks
CN110197262B (zh) * 2018-02-24 2021-07-30 赛灵思电子科技(北京)有限公司 用于lstm网络的硬件加速器
CN108540338B (zh) * 2018-03-08 2021-08-31 西安电子科技大学 基于深度循环神经网络的应用层通信协议识别的方法
CN108510063B (zh) * 2018-04-08 2020-03-20 清华大学 一种应用于卷积神经网络的加速方法和加速器
WO2019219846A1 (en) * 2018-05-17 2019-11-21 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Concepts for distributed learning of neural networks and/or transmission of parameterization updates therefor
CN110797021B (zh) * 2018-05-24 2022-06-07 腾讯科技(深圳)有限公司 混合语音识别网络训练方法、混合语音识别方法、装置及存储介质
CN108665067B (zh) * 2018-05-29 2020-05-29 北京大学 用于深度神经网络频繁传输的压缩方法及系统
US10832139B2 (en) * 2018-06-22 2020-11-10 Moffett Technologies Co. Limited Neural network acceleration and embedding compression systems and methods with activation sparsification
CN109102064B (zh) * 2018-06-26 2020-11-13 杭州雄迈集成电路技术股份有限公司 一种高精度的神经网络量化压缩方法
CN110659731B (zh) * 2018-06-30 2022-05-17 华为技术有限公司 一种神经网络训练方法及装置
CN109063835B (zh) * 2018-07-11 2021-07-09 中国科学技术大学 神经网络的压缩装置及方法
EP3690679A4 (en) 2018-08-06 2021-02-17 Huawei Technologies Co., Ltd. MATRIX PROCESSING PROCESS AND APPARATUS, AND LOGIC CIRCUIT
CN110874550A (zh) * 2018-08-31 2020-03-10 华为技术有限公司 数据处理方法、装置、设备和系统
WO2020062312A1 (zh) * 2018-09-30 2020-04-02 华为技术有限公司 信号处理装置和信号处理方法
CN109104197B (zh) * 2018-11-12 2022-02-11 合肥工业大学 应用于卷积神经网络的非还原稀疏数据的编译码电路及其编译码方法
CN111382852B (zh) * 2018-12-28 2022-12-09 上海寒武纪信息科技有限公司 数据处理装置、方法、芯片及电子设备
CN111291884A (zh) * 2018-12-10 2020-06-16 中科寒武纪科技股份有限公司 神经网络剪枝方法、装置、电子设备及计算机可读介质
CN111353591A (zh) * 2018-12-20 2020-06-30 中科寒武纪科技股份有限公司 一种计算装置及相关产品
CN111383157B (zh) * 2018-12-29 2023-04-14 北京市商汤科技开发有限公司 图像处理方法、装置、车载运算平台、电子设备及系统
CN113168554B (zh) * 2018-12-29 2023-11-28 华为技术有限公司 一种神经网络压缩方法及装置
CN109800869B (zh) * 2018-12-29 2021-03-05 深圳云天励飞技术有限公司 数据压缩方法及相关装置
CN109784490B (zh) * 2019-02-02 2020-07-03 北京地平线机器人技术研发有限公司 神经网络的训练方法、装置和电子设备
CN111626305B (zh) * 2019-02-28 2023-04-18 阿里巴巴集团控股有限公司 目标检测方法、装置和设备
CN109938696A (zh) * 2019-03-22 2019-06-28 江南大学 神经电信号压缩感知处理方法及电路
CN109978144B (zh) * 2019-03-29 2021-04-13 联想(北京)有限公司 一种模型压缩方法和系统
CN110399972B (zh) * 2019-07-22 2021-05-25 上海商汤智能科技有限公司 数据处理方法、装置及电子设备
CN110704024B (zh) * 2019-09-28 2022-03-08 中昊芯英(杭州)科技有限公司 一种矩阵处理装置、方法及处理设备
CN110705996B (zh) * 2019-10-17 2022-10-11 支付宝(杭州)信息技术有限公司 基于特征掩码的用户行为识别方法、系统、及装置
CN112699990B (zh) * 2019-10-22 2024-06-07 杭州海康威视数字技术股份有限公司 神经网络模型训练方法、装置及电子设备
CN111078840B (zh) * 2019-12-20 2022-04-08 浙江大学 一种基于文档向量的电影评论情感分析方法
CN111126600A (zh) * 2019-12-20 2020-05-08 上海寒武纪信息科技有限公司 神经网络模型的训练方法、数据处理方法和相关产品
US20210209462A1 (en) * 2020-01-07 2021-07-08 Alibaba Group Holding Limited Method and system for processing a neural network
KR20210106131A (ko) 2020-02-20 2021-08-30 삼성전자주식회사 전자 장치 및 그의 제어 방법
CN115280272A (zh) * 2020-04-03 2022-11-01 北京希姆计算科技有限公司 数据存取电路和方法
KR20210126398A (ko) * 2020-04-10 2021-10-20 에스케이하이닉스 주식회사 시스톨릭 어레이를 갖는 신경망 연산 장치
CN111711511B (zh) * 2020-06-16 2021-07-13 电子科技大学 频域数据有损压缩方法
CN111553471A (zh) * 2020-07-13 2020-08-18 北京欣奕华数字科技有限公司 一种数据分析处理方法及装置
CN112132062B (zh) * 2020-09-25 2021-06-29 中南大学 一种基于剪枝压缩神经网络的遥感图像分类方法
CN112286447A (zh) * 2020-10-14 2021-01-29 天津津航计算技术研究所 一种新型软件硬件协同raid改进系统
CN112230851A (zh) * 2020-10-14 2021-01-15 天津津航计算技术研究所 一种新型软件硬件协同raid改进方法
CN112270352A (zh) * 2020-10-26 2021-01-26 中山大学 一种基于并行剪枝优化的决策树生成方法及装置
CN112396178A (zh) * 2020-11-12 2021-02-23 江苏禹空间科技有限公司 一种提高cnn网络压缩效率的方法
WO2022133623A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Accelerated scale-out performance of deep learning training workload with embedding tables
CN112883982B (zh) * 2021-01-08 2023-04-18 西北工业大学 一种面向神经网络稀疏特征的数据去零编码及封装方法
US20220343145A1 (en) * 2021-04-21 2022-10-27 Alibaba Singapore Holding Private Limited Method and system for graph neural network acceleration
CN113794709B (zh) * 2021-09-07 2022-06-24 北京理工大学 一种用于二值稀疏矩阵的混合编码方法
CN113947185B (zh) * 2021-09-30 2022-11-18 北京达佳互联信息技术有限公司 任务处理网络生成、任务处理方法、装置、电子设备及存储介质
CN116187408B (zh) * 2023-04-23 2023-07-21 成都甄识科技有限公司 稀疏加速单元、计算方法及稀疏神经网络硬件加速系统
CN117170588B (zh) * 2023-11-01 2024-01-26 北京壁仞科技开发有限公司 用于对张量数据的布局进行转换的方法、设备和介质
CN117634711B (zh) * 2024-01-25 2024-05-14 北京壁仞科技开发有限公司 张量维度切分方法、系统、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105184369A (zh) * 2015-09-08 2015-12-23 杭州朗和科技有限公司 用于深度学习模型的矩阵压缩方法和装置
CN105260794A (zh) * 2015-10-12 2016-01-20 上海交通大学 一种云数据中心的负载预测方法
CN105593843A (zh) * 2013-08-30 2016-05-18 微软技术许可有限责任公司 稀疏矩阵数据结构

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997044743A1 (de) * 1996-05-23 1997-11-27 Siemens Aktiengesellschaft Verfahren zur optimierung eines fuzzy-regelsatzes durch einen rechner
CN102129397A (zh) * 2010-12-29 2011-07-20 深圳市永达电子股份有限公司 一种自适应磁盘阵列故障预测方法及系统
US9053430B2 (en) * 2012-11-19 2015-06-09 Qualcomm Incorporated Method and apparatus for inferring logical dependencies between random processes
US9400955B2 (en) * 2013-12-13 2016-07-26 Amazon Technologies, Inc. Reducing dynamic range of low-rank decomposition matrices
US20150206050A1 (en) * 2014-01-23 2015-07-23 Qualcomm Incorporated Configuring neural network for low spiking rate
US9324321B2 (en) * 2014-03-07 2016-04-26 Microsoft Technology Licensing, Llc Low-footprint adaptation and personalization for a deep neural network
US9202178B2 (en) * 2014-03-11 2015-12-01 Sas Institute Inc. Computerized cluster analysis framework for decorrelated cluster identification in datasets
US10242313B2 (en) * 2014-07-18 2019-03-26 James LaRue Joint proximity association template for neural networks
CN104217433B (zh) * 2014-08-29 2017-06-06 华为技术有限公司 一种分析图像的方法及装置
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
CN105184362B (zh) * 2015-08-21 2018-02-02 中国科学院自动化研究所 基于参数量化的深度卷积神经网络的加速与压缩方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105593843A (zh) * 2013-08-30 2016-05-18 微软技术许可有限责任公司 稀疏矩阵数据结构
CN105184369A (zh) * 2015-09-08 2015-12-23 杭州朗和科技有限公司 用于深度学习模型的矩阵压缩方法和装置
CN105260794A (zh) * 2015-10-12 2016-01-20 上海交通大学 一种云数据中心的负载预测方法

Also Published As

Publication number Publication date
CN107679617B (zh) 2021-04-09
CN107679617A (zh) 2018-02-09
CN107689224B (zh) 2020-09-01
CN107239825A (zh) 2017-10-10
CN107689948B (zh) 2020-09-01
CN107689948A (zh) 2018-02-13
CN107689224A (zh) 2018-02-13

Similar Documents

Publication Publication Date Title
CN107239825B (zh) 考虑负载均衡的深度神经网络压缩方法
CN107729999B (zh) 考虑矩阵相关性的深度神经网络压缩方法
US10984308B2 (en) Compression method for deep neural networks with load balance
CN107688850B (zh) 一种深度神经网络压缩方法
US10762426B2 (en) Multi-iteration compression for deep neural networks
CN107688849B (zh) 一种动态策略定点化训练方法及装置
CN107679618B (zh) 一种静态策略定点化训练方法及装置
US20180046915A1 (en) Compression of deep neural networks with proper use of mask
CN110084364B (zh) 一种深度神经网络压缩方法和装置
CN105488563A (zh) 面向深度学习的稀疏自适应神经网络、算法及实现装置
CN110929798A (zh) 基于结构优化稀疏卷积神经网络的图像分类方法及介质
CN113269312B (zh) 一种联合量化与剪枝搜索的模型压缩方法及其系统
CN114239861A (zh) 基于多教师联合指导量化的模型压缩方法及系统
US20220207374A1 (en) Mixed-granularity-based joint sparse method for neural network
IL297848A (en) Drift adjustment to neutralize changes in drift coefficients for analog boosters
US11710026B2 (en) Optimization for artificial neural network model and neural processing unit
CN111967528A (zh) 基于稀疏编码的深度学习网络结构搜索的图像识别方法
CN116384471A (zh) 模型剪枝方法、装置、计算机设备、存储介质和程序产品
Zhou et al. Deep adaptive network: An efficient deep neural network with sparse binary connections
CN114444654A (zh) 一种面向nas的免训练神经网络性能评估方法、装置和设备
CN116457794A (zh) 用于神经网络模型的组平衡式稀疏激活特征图
CN114519423A (zh) 用于压缩神经网络的方法和装置
CN112508194B (zh) 模型压缩方法、系统和计算设备
KR102647521B1 (ko) Ann 모델과 npu의 최적화
TWI813414B (zh) 用於最佳化神經網路訓練之電腦實施之方法、系統及非暫時性電腦可讀取儲存媒體

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20180115

Address after: 100083 Beijing city Haidian District Wangzhuang Road No. 1 Building No. 4 hospital 8 floor No. 807

Applicant after: Beijing insight Technology Co., Ltd.

Address before: 100084 Beijing city Haidian District Wangzhuang Road No. 1 Building No. 4 hospital 17 floor No. 1706

Applicant before: Beijing deep Intelligent Technology Co., Ltd.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20180606

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

Applicant after: Beijing deep Intelligent Technology Co., Ltd.

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

Applicant before: Beijing insight Technology Co., Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200903

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.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant