CN110909870A - 训练装置及方法 - Google Patents

训练装置及方法 Download PDF

Info

Publication number
CN110909870A
CN110909870A CN201811074120.0A CN201811074120A CN110909870A CN 110909870 A CN110909870 A CN 110909870A CN 201811074120 A CN201811074120 A CN 201811074120A CN 110909870 A CN110909870 A CN 110909870A
Authority
CN
China
Prior art keywords
data
unit
parameter
neural network
nth
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.)
Granted
Application number
CN201811074120.0A
Other languages
English (en)
Other versions
CN110909870B (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201811074120.0A priority Critical patent/CN110909870B/zh
Publication of CN110909870A publication Critical patent/CN110909870A/zh
Application granted granted Critical
Publication of CN110909870B publication Critical patent/CN110909870B/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/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

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

Abstract

本公开涉及一种训练装置及方法,该装置包括:参数压缩单元根据接收到的神经网络的模型数据,确定神经网络的待压缩参数,并对待压缩参数进行压缩处理,获得与神经网络对应的语义向量;参数存储单元储与神经网络对应的语义向量,并在接收到数据读取指令时,向参数解压缩单元或运算单元发送语义向量;参数解压缩单元在接收到语义向量时,对语义向量进行解压缩处理,获得神经网络的解压缩参数,并向运算单元发送解压缩参数;运算单元对接收到的语义向量或解压缩参数对神经网络进行训练。本公开可以对待压缩参数进行压缩,从而有效减少神经网络的模型大小、降低了对内存的需求,从而有效提高了神经网络的数据处理速度。

Description

训练装置及方法
技术领域
本公开涉及计算机技术领域,尤其涉及一种训练装置及方法。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算通常基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的正向运算以及正向或反向训练运算,这些运算的计算量大,功耗高。
发明内容
有鉴于此,本公开提出了一种训练装置及方法以实现神经网络的训练,并实现训练中参数的实时压缩及解压缩。
根据本公开的一方面,提出了一种支持压缩及解压缩的神经网络训练装置,所述装置用于执行神经网络的训练,所述装置包括:
参数压缩单元,用于根据接收到的神经网络的模型数据,确定所述神经网络的待压缩参数,并利用编码器对所述待压缩参数进行压缩处理,获得与所述神经网络对应的语义向量;
参数存储单元,连接到所述参数压缩单元,用于存储与所述神经网络对应的语义向量,并在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量;
参数解压缩单元,连接到所述参数存储单元,用于在接收到语义向量时,利用解码器对所述语义向量进行解压缩处理,获得所述神经网络的解压缩参数,并向所述运算单元发送所述解压缩参数;及
运算单元,分别连接到所述参数存储单元和所述参数解压缩单元,用于对接收到的所述语义向量或所述解压缩参数对所述神经网络进行训练。
根据本公开的另一方面,提出了一种神经网络芯片,所述机器学习芯片包括机器学习运算装置或如组合处理装置,其中,所述机器学习运算装置包括一个或多个所述的支持压缩及解压缩的神经网络训练装置,用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;当所述机器学习运算装置包含多个所述训练装置时,所述多个所述训练装置间可以通过特定的结构进行连接并传输数据;其中,多个所述训练装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述训练装置共享同一控制***或拥有各自的控制***;多个所述训练装置共享内存或者拥有各自的内存;多个所述训练装置的互联方式是任意互联拓扑;
所述组合处理装置包括所述的机器学习运算装置,通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作;
所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
根据本公开的另一方面,提出了一种电子设备,所述电子设备包括所述的神经网络芯片。
根据本公开的另一方面,提出了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控,其中,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
根据本公开的另一方面,提出了一种支持压缩及解压缩的神经网络训练方法,所述方法运用于神经网络训练装置中以执行神经网络的训练,所述神经网络训练装置包括参数压缩单元、参数存储单元、参数解压缩单元、运算单元,所述方法包括:
参数压缩单元根据接收到的神经网络的模型数据,确定所述神经网络的待压缩参数,并利用编码器对所述待压缩参数进行压缩处理,获得与所述神经网络对应的语义向量;
参数存储单元存储与所述神经网络对应的语义向量,并在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量;
参数解压缩单元在接收到语义向量时,利用解码器对所述语义向量进行解压缩处理,获得所述神经网络的解压缩参数,并向所述运算单元发送所述解压缩参数;及
运算单元对接收到的所述语义向量或所述解压缩参数对所述神经网络进行训练。
本公开可以对待压缩参数进行压缩,从而有效减少神经网络的模型大小、降低了对内存的需求,从而有效提高了神经网络的数据处理速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
图2示出了根据本公开一实施方式的参数压缩及解压缩的示意图。
图3示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
图4示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
图5示出了根据本公开一实施方式的缓存模块示意图。
图6示出了根据本公开一实施方式的主处理电路的框图。
图7示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
图8示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
图9示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
图10示出了根据本公开一实施方式的压缩及解压缩过程示意图。
图11示出了根据本公开一实施方式的压缩及解压缩过程示意图。
图12示出了根据本公开一实施方式的组合处理装置的示意图。
图13示出了根据本公开一实施方式的组合处理装置的示意图。
图14示出了根据本公开一实施方式的板卡的示意图。
图15示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
对神经网络(neural networks)进行训练(training)需要耗费巨大的存储、计算、能耗开销。在训练过程中,如果可以对神经网络进行实时压缩(compression)和解压缩(decompression)能够减少存储量、计算量和能耗。然而传统的计算平台,如CPU,GPU等,以及大多数专用加速器都无法对神经网络进行实时压缩和解压缩。
本公开针对以上问题,提出了一种支持压缩及解压缩的神经网络训练装置,以实现在对神经网络进行训练时,对神经网络进行实时压缩及解压缩,从而减少存储量、计算量和能耗。
请参阅图1,图1示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
如图1所示,所述装置包括参数压缩单元10、参数存储单元20、参数解压缩单元30及运算单元40,参数压缩单元10连接于参数存储单元20,参数存储单元20连接于参数解压缩单元30,运算单元40连接于参数存储单元20及参数解压缩单元30。
参数压缩单元10,用于根据接收到的神经网络的模型数据,确定所述神经网络的待压缩参数,并利用编码器对所述待压缩参数进行压缩处理,获得与所述神经网络对应的语义向量,其中,所述待压缩参数包括所述神经网络的权值。
在一种可能的实施方式中,神经网络的模型数据可以包括神经网络的输入向量、神经元(neuron),权值(weight),梯度(gradient),拓扑结构、学习率、激活函数及其他参数。
参数压缩单元10可以对神经网络的模型数据进行压缩,将其中的多维数据压缩成为低维数据,减小数据的向量长度,从而减小了存储参数的内存压力。
例如,可以将神经网络的权值进行压缩,将多维的权值压缩成一个定长的语义向量,所述的语义向量包括压缩前的权值的信息,应该明白的是,在选择权值进行压缩时,可以选择任意数量的权值进行压缩。
在一种可能的实施方式中,所述编码器可以包括CNN(卷积神经网络,Convolutional Neural Network)、RNN(循环神经网络,Recurrent Neural Network)、BiRNN(双向RNN,Bidirectional RNN)、GRU(门控循环单元,Gated Recurrent Unit)、LSTM(长短期记忆网络,Long Short-Term Memory)等神经网络中的一种或多种,所述编码器还可以采用熵编码、量化编码、映射编码等方法对神经网络的模型数据进行压缩。
例如,可以选择RNN作为编码器对权值进行编码压缩,下面以编码器为RNN为例进行说明。
请参阅图2,图2示出了根据本公开一实施方式的参数压缩及解压缩的示意图。
当采用RNN对所述待压缩参数进行编码压缩时,可以采用逐层贪婪算法来训练深度网络。
如图2所示,RNN包括输入层和多个隐藏层(两层为举例),在通过逐层贪婪算法对所述待压缩参数进行压缩时,首先,通过多个向量(神经网络的输入向量以及权值)来训练RNN的第一层,RNN的第一层将多个向量转化为由第一层的隐藏单元激活值组成的第一中间向量;然后,通过将所述中间向量作为RNN的第二层的输入,RNN的第二层将第一层传来的中间向量转化为第二层的隐藏单元激活值组成的第二中间向量;然后,对后面的隐藏层采用相同的策略,将前一层的输出作为下一层的输入,依次对RNN模型进行训练;最后,可以将当前时刻隐藏层的最后一层作为隐藏层的语义向量。
在RNN中,当前时刻隐藏层状态是由上一时刻的隐藏层状态和当前时刻的输入决定的,例如,可用公式:ht=f(ht-1,xt)来表示,其中,ht为当前时刻(t时刻)的隐藏层状态,ht-1为上一时刻(t-1时刻)的隐藏层状态,xt为当前时刻隐藏层的输入。
获得了各个时刻的隐藏层状态以后,再将各个时刻(T1~Tx时刻,x为大于1的整数)的隐藏层状态(hT1~hTx)汇总,以生成最后的语义向量c,c=q({hT1,...,hTx}),q表示某种非线性函数。
然而,在RNN网络中,当前时刻计算完后无法看见前面时刻的隐藏层状态,所以可用最后一个时刻(Tx时刻)的隐藏层状态作为语义向量c,即c=hTx。
在一种可能的实施方式中,还可以使用反向传播算法调整各层的参数。
在一种可能的实施方式中,所述参数压缩单元10还用于判断所述待压缩参数是否稀疏,并在所述待压缩参数稀疏时,向所述参数存储单元发送与所述语义向量对应的稀疏化标记。
这里的稀疏是指待压缩参数矩阵中包括有绝对值小于等于预设阈值,或者为0的数据较多。
在一种可能的实施方式中,所述稀疏化标记例如可用bool变量进行标记。
参数存储单元20,用于存储与所述神经网络对应的语义向量,并在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量。
在一种可能的实施方式中,参数存储单元20还可以存储神经网络的输入向量及稀疏化标记。
在一种可能的实施方式中,所述数据读取指令可以由支持压缩及解压缩的神经网络运算装置以外的控制器发出,也可以由支持压缩及解压缩的神经网络运算装置中的运算单元及参数解压缩单元发出。
在一种可能的实施方式中,所述参数存储单元10在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量,还包括:
在接收到所述数据读取指令,且所述参数存储单元中未存储与所述语义向量对应的稀疏化标记时,向所述参数解压缩单元发送所述语义向量。
在接收到所述数据读取指令,且所述参数存储单元中存储有与所述语义向量对应的稀疏化标记时,向所述运算单元发送所述语义向量。
参数解压缩单元30,用于在接收到语义向量时,利用解码器对所述语义向量进行解压缩处理,获得所述神经网络的解压缩参数,并向所述运算单元发送所述解压缩参数。
参数解压缩单元30可将语义向量进行解码解压缩,从而可以获得与所述待压缩参数数目相同的解压缩参数,所述解压缩参数包括所述待压缩参数的信息。
例如,当待压缩参数为N个权值时,参数解压缩单元30可以将语义向量解码解压缩为N个解压缩参数,所述N个解压缩参数与N个权值基本等同。
在一种可能的实施方式中,所述解码器可以包括CNN(卷及神经网络,Convolutional Neural Network)、RNN(循环神经网络,Recurrent neural networks)、BiRNN(双向RNN,Bidirectional RNN)、GRU(门控循环单元,Gated Recurrent Unit)、LSTM(长短期记忆网络,Long Short-Term Memory)等神经网络中的一种或多种,所述解码器还可以采用熵编码、量化编码、映射编码等方法对神经网络的模型数据进行解压缩。
解码器的选择可以与编码器对应,例如,当编码器选择CNN时,解码器可以为CNN。但是,解码器及编码器的选择也可以是任意的,例如,当编码器选择CNN时,解码器可以选择CNN、RNN等任意一种或者多种。
下面以解码器为RNN为例对解码过程进行说明。
请参阅图2。如图2所示,参数解压缩单元30对语义向量进行解压缩的RNN模型包括多个隐藏层(图中1层作为示例)及输出层,输出层用于输出解压缩参数。
参数解压缩单元30对语义向量解压缩的过程可以视为参数压缩单元10压缩所述待压缩参数过程的逆过程,在解压缩的阶段,可以根据已经生成的输出序列来预测下一个输出,从而将所述隐藏层的语义向量解压缩为所述解压缩参数。
在RNN中,解码过程可以根据给定的前述的语义向量c和已经生成的输出序列y1,y2,…yt-1来预测下一个输出yt。
运算单元40,分别连接到所述参数存储单元和所述参数解压缩单元,用于对接收到的所述语义向量或所述解压缩参数对所述神经网络进行训练。
其中,神经网络的训练包括正向运算、反向运算及权值更新等。
在一种可能的实施方式中,反向运算可以包括:偏执运算、全连接运算、矩阵乘法(GEMM)运算、矩阵向量积(GEMV)运算、激活运算中的一种或任意组合。
在一种可能的实施方式中,神经网络可以包含n层,n为大于或等于2的整数。
神经网络的正向训练通常执行正向运算,在正向运算中,每一层使用自己的输入数据和权值按照层的类型所指定的运算规则计算得到相应的输出数据。
神经网络的正向运算过程(也叫推理,inference)是逐层处理各层的输入数据,经过一定的计算,得到输出数据的过程,具有如下特征:
某一层的输入:
某一层的输入可以是神经网络的输入数据;
某一层的输入可以是其他层的输出;
某一层的输入可以是本层上一时刻的输出(对应于循环神经网络的情况);
某一层可以同时从多个上述输入源获取输入;
某一层的输出:
某一层的输出可以作为神经网络的输出结果;
某一层的输出可以是其它层的输入;
某一层的输出可以是下一时刻本层的输入(循环神经网络的情况);
某一层的输出可以向上述多个输出方向输出结果;
具体地,所述神经网络中的层的运算的类型包括但不限于以下几种:
卷积层(即执行卷积运算);
全连接层(即执行全连接运算);
归一化(规则化)层:包括LRN(Local Response Normalization)层,BN(BatchNormalization)层等类型;
池化层;
激活层:包括但不限于以下类型Sigmoid层,ReLU层,PReLu层,LeakyReLu层,Tanh层;
层的反向运算,每一层的反向运算需要执行两部分运算:一部分是使用可能是稀疏表示的输出数据梯度和可能是稀疏表示的输入数据计算出权值的梯度(用于在“权值更新”步骤更新本层的权值),另一部分是使用可能是稀疏表示的输出数据梯度和可能是稀疏表示的权值,计算出输入数据梯度(用于作为反向运算中下一层的输出数据梯度以供其进行反向运算);
反向运算按照与正向运算相反的顺序,从最后一层开始反向传递梯度。
在一种可能的实施方式中,某一层反向计算得到的输出数据梯度可以来自:
神经网络最后的损失函数(lost function或者cost function)回传的梯度;
其它层的输入数据梯度;
本层上一时刻的输入数据梯度(对应于循环神经网络的情况);
某一层可以同时从多个上述源获取输出数据梯度;
在执行完神经网络的反向运算之后,就计算出了各层的权值的梯度,然后在运算单元中使用权值梯度对权值进行更新;
上文中提到的运算都是神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出数据作为下一层的输入数据进行运算(或者是对该输出数据进行某些操作再作为下一层的输入数据),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入数据梯度作为下一层的输出数据梯度进行运算(或者是对该输入数据梯度进行某些操作再作为下一层的输出数据梯度),同时将权值替换为下一层的权值
在一种可能的实施方式中,当待压缩参数为神经网络的权值时,若权值稀疏,则对其进行压缩后的语义向量可以直接被运算单元40用于对神经网络进行训练;若权值非稀疏,则其对应的语义向量需要进行解压缩后生成解压缩参数,所述解压缩参数可以直接被运算单元40用于对神经网络进行训练。
在一种可能的实施方式中,所述对接收到的所述语义向量或所述解压缩参数对所述神经网络进行训练,可以包括:
依据所述语义向量或解压缩参数确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
依据所述第n输出结果得到第n输出结果梯度,依据所述语义向量或解压缩参数获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;
依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为竖向数据块和横向数据块;
依据第二数据块以并行方式执行神经网络中的运算得到运算结果,其中,所述第二数据块与所述处理后的第一数据块关联;
对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值。
本公开所述的支持压缩及解压缩的神经网络运算装置可以通过硬件电路(例如但不限于专用集成电路ASIC)实现,并且可将参数压缩单元10、参数存储单元20、参数解压缩单元30及运算单元40整合在一个独立的芯片(例如神经网络芯片)内。
本公开所述的支持压缩及解压缩的神经网络运算装置可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
通过以上装置,本公开根据接收到的神经网络的模型数据,确定所述神经网络的待压缩参数,并利用编码器对所述待压缩参数进行压缩处理,获得与所述神经网络对应的语义向量,其中,所述待压缩参数包括所述神经网络的权值,存储与所述神经网络对应的语义向量,并在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量,在接收到语义向量时,利用解码器对所述语义向量进行解压缩处理,获得所述神经网络的解压缩参数,并向所述运算单元发送所述解压缩参数,运算单元利用接收到的所述语义向量或所述解压缩参数进行神经网络的训练,本公开可以对待压缩参数进行压缩,从而有效减少神经网络的模型大小、降低了对内存的需求,从而有效提高了神经网络的数据处理速度。
请参阅图3,图3示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
所述的训练装置用于执行神经网络的训练,该神经网络包含n层,n为大于或等于2的整数,如图3所示,所述训练装置包括运算单元40、控制器单元11、参数压缩单元10及参数解压缩单元30,所述运算单元40包括:一个主处理电路401和多个从处理电路402。
参数解压缩单元30,用于接收语义向量,利用解码器对所述语义向量进行解压缩处理,获得神经网络的解压缩参数,其中所述语义向量为神经网络的模型数据压缩后数据。
参数解压缩单元30可将语义向量进行解码解压缩,从而可以获得与所述待压缩参数数目相同的解压缩参数,所述解压缩参数包括所述待压缩参数的信息。
控制器单元11,电连接于参数解压缩单元30,用于获取解压缩参数,根据所述解压缩参数确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果,并所述第n输出结果发送给所述主处理电路。
主处理电路401,电连接于所述控制器单元11,用于依据所述第n输出结果得到第n输出结果梯度,依据所述解压缩参数获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为竖向数据块和横向数据块;依据所述第n反向运算指令将第一数据块发送至与所述主处理电路相连的多个从处理电路中的至少一个从处理电路。
在一种可能的实施方式中,所述第n输出结果梯度为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
所述多个从处理电路402,电连接于所述主处理电路401,用于依据第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的从处理电路传输给所述主处理电路,其中,所述第二数据块为所述从处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联。
所述主处理电路401,还用于对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新。
所述控制器单元11,还用于将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值;
参数压缩单元10,电连接于所述控制器单元、所述主处理单元、所述从处理单元,用于将所述控制器单元、所述主处理单元、所述从处理单元产生的数据作为待压缩数据,并利用编码器对所述待压缩数据进行压缩,获得对应的语义向量。
在一种可能的实施方式中,还可以使用反向传播算法调整神经网络各层的参数,例如权值等。
在一种可能的实施方式中,所述主处理电路401还用于在所述第n反向运算指令为乘法指令时,确定所述第n层输入数据以及所述第n层权值组数据均为横向数据块,所述第n输出结果梯度为竖向数据块;在所述第n反向运算指令为卷积指令时,确定所述第n层输入数据以及所述第n层权值组数据均为竖向数据块,所述第n输出结果梯度为横向数据块。
在一种可能的实施方式中,所述第n输出结果梯度为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
在一种可能的实施方式中,所述第n层输入数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
在一种可能的实施方式中,所述n层权值组数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
通过上述神经网络训练装置,本公开通过参数解压缩单元的解码器对所述语义向量进行解压缩处理,获得神经网络的解压缩参数,控制器单元根据所述解压缩参数确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果,并所述第n输出结果发送给所述主处理电路,所述主处理电路依据所述第n输出结果得到第n输出结果梯度,依据所述解压缩参数获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为竖向数据块和横向数据块;依据所述第n反向运算指令将第一数据块发送至与所述主处理电路相连的多个从处理电路中的至少一个从处理电路,所述多个从处理电路,依据第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的从处理电路传输给所述主处理电路,所述主处理电路对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新,所述控制器单元将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,参数压缩单元将所述控制器单元、所述主处理单元、所述从处理单元产生的数据作为待压缩数据,并利用编码器对所述待压缩数据进行压缩,获得对应的语义向量。本公开可以对待压缩参数进行压缩,从而有效减少神经网络的模型大小、降低了对内存的需求,从而有效提高了神经网络的数据处理速度。
请参阅图4,图4示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
如图4所示,所述训练装置还可以包括:
存储单元50,电连接于所述参数压缩单元10、所述参数解压缩单元30,可以用于存储所述语义向量。在参数压缩单元10完成对神经网络的参数的压缩后,可以通过存储单元50存储压缩后生成的语义向量。
在一种可能的实施方式中,所述存储单元50可以包括缓存502、寄存器501及数据I/O单元503。
在本实施方式中,缓存502可以为高速缓存,缓存502可以包括神经元缓存及权值缓存。神经元缓存,用于存储神经网络中与神经元相关的数据,权值缓存,用于存储神经网络与权值相关的数据。
其中,所述存储单元包括:寄存器501、缓存502中任意组合。
请参阅图5,图5示出了根据本公开一实施方式的缓存模块示意图。
如图5所示,所述神经元缓存可以包括:
输入神经元缓存5021,用于存储神经网络中与输入神经元相关的数据,其中,所述输入神经元缓存5021还包括输入神经元索引缓存5030、输入神经元梯度缓存5031,所述输入神经元索引缓存5030用于存储输入神经元索引,所述输入神经元梯度缓存5031用于存储反向计算过程中输入神经元梯度;
输出神经元缓存5024,用于存储神经网络中与输出神经元相关的数据,其中,所述输出神经元缓存5024可以包括输出神经元索引缓存5040、输出神经元梯度缓存5041,所述输出神经元索引缓存5040用于存储输出神经元索引,所述输出神经元梯度缓存5041用于存储反向计算过程中输出神经元梯度。
所述权值缓存包括:
输入权值缓存5027,用于存储神经网络中与输入权值相关的数据,其中,所述输入权值缓存5027可以包括输入权值索引缓存5050、输入权值梯度缓存5051,所述输入权值索引缓存5050用于存储输入权值,所述输入权值梯度缓存5051用于存储反向计算过程中输入权值梯度;
输出权值缓存5029,用于存储神经网络中与输出权值相关的数据,其中,所述输出权值缓存还包括输出权值索引缓存5060、输出权值梯度缓存5061,所述输出权值索引缓存5060用于存储输出权值索引,所述输出权值梯度缓存5061用于存储反向计算过程中输出权值梯度。
当然,以上对缓存502的划分为示例性的,并非用于限制本公开,除上述的举例外,缓存中的各个单元可以复用,在缓存实现复用时,缓存502中的缓存单元可以减少,也可以增多。例如,输入神经元缓存5021中的输入神经元索引缓存5030既可以用作存储输入神经元索引,也可以用于存储输入神经元梯度,在需要存储不同数据的时候,输入神经元索引缓存5021可以用于存储其他任意类型的数据,本公开不做限定。
直接内存访问单元15,电连接于所述存储单元50,用于从所述存储单元50获取所述语义向量或保存所述语义向量到存储单元。
在一种可能的实施方式中,所述参数压缩单元30还用于判断所述待压缩参数是否稀疏,并在所述待压缩参数稀疏时,向所述存储单元50发送与所述语义向量对应的稀疏化标记;
所述存储单元50,还用于存储所述稀疏化标记,
所述存储单元50,还用于在接收到所述数据读取指令时,向所述参数解压缩单元或控制器单元发送所述语义向量,包括:
在接收到所述数据读取指令,且所述参数存储单元50中存储有与所述语义向量对应的稀疏化标记时,向所述控制器单元11发送所述语义向量;
所述控制器单元11,还用于获取所述语义向量,根据所述语义向量确定确定第一层输入数据和第一层权值组数据。
在一种可能的实施方式中,所述存储单元50在接收到数据读取指令时,向所述参数解压缩单元30或运算单元40发送所述语义向量,还包括:
在接收到所述数据读取指令,且所述存储单元50中未存储与所述语义向量对应的稀疏化标记时,向所述参数解压缩单30元发送所述语义向量。
在一种可能的实施方式中,所述控制器单元11可以包括:指令存储单元110、指令处理单元111和存储队列单元113。
所述指令存储单元110,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;
所述存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
在一种可能的实施方式中,所述控制器单元11还包括包括:依赖关系处理单元;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
图6示出了根据本公开一实施方式的主处理电路的框图。
在一种可能的实施方式中,如图6所示,主处理电路401还可以包括:转换处理电路4011、激活处理电路4012、加法处理电路4013中的一种或任意组合。
转换处理电路4011,用于将主处理电路401接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换)。
激活处理电路4012,用于执行主处理电路401内数据的激活运算。
加法处理电路4013,用于执行加法运算或累加运算。
在一种可能的实施方式中,所述从处理电路可以包括:乘法处理电路。
所述乘法处理电路,可以用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
请参阅图7,图7示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
在一种可能的实施方式中,如图7所示,所述运算单元40还可以包括:树型模块60,所述树型模块60包括:一个根端口601和多个支端口602,所述树型模块60的根端口601连接所述主处理电路401,所述树型模块60的多个支端口602分别连接多个从处理电路中的一个从处理电路402;
所述树型模块60,用于转发所述主处理电路401与所述多个从处理电路402之间的数据块、权值正向运算指令以及反向运算指令。
在一种可选的实施方案中,如图7所示,所述运算单元包括:树型模块60,所述树型模块包括:一个根端口601和多个支端口602,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
所述树型模块60,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
可选的,该树型模块60为训练装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
可选的,该树型模块60可以为e叉树结构,例如,如图7所示的二叉树结构,当然也可以为三叉树结构,e为大于或等于2的整数。本公开具体实施方式并不限制上述e的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图7所示的倒数第一层的节点。
图8示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
在一种可能的实施方式中,如图8所示,所述运算单元40还可以包括:分支处理电路403。
所述主处理电路401,用于将一个输入神经元分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路403;
所述分支处理电路403,用于转发所述主处理电路401与所述多个从处理电路402之间的数据块、权值以及运算指令;
所述多个从处理电路402,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路402;
所述主处理电路401,用于将分支处理电路403发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元11。
图9示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练装置的框图。
在一种可能的实施方式中,如图9所示,所述多个从处理电路502可以呈阵列分布;每个从处理电路402与相邻的其他从处理电路402连接,所述主处理电路401连接所述多个从处理电路402中的K个从处理电路402,所述K个从处理电路402为:第1行的a个从处理电路402、第b行的a个从处理电路402以及第1列的b个从处理电路402;
所述K个从处理电路402,用于在所述主处理电路401以及多个从处理电路402之间的数据以及指令的转发;
所述主处理电路401,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路402;
所述K个从处理电路402,用于转换所述主处理电路401与所述多个从处理电路402之间的数据;
所述多个从处理电路402,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路402;
所述主处理电路401,用于将所述K个从处理电路402发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元11。
应该说明的是,上述的训练装置示出了参数解压缩单元30及参数压缩单元10在运算单元40以外的情形,在其他的实施方式中,参数压缩单元10和/或参数解压缩单元30也可以在运算单元40中,或者参数压缩单元10和/或参数解压缩单元30也可以设置在控制器单元50中。
参数压缩单元10及参数解压缩单元30也可以采用其他方法压缩及解压缩。例如,参数压缩单元10及参数解压缩单元30可以采用映射编码的方式进行压缩及解压缩。当然参数压缩单元10及参数解压缩单元30可以是分离的单元,也可以是合并的单元。
在一种可能的实施方式中,参数压缩单元10可以利用复用器(MUX)对稀疏的待压缩参数进行压缩以生成定长语义向量,实现待压缩参数的压缩。与之相对的,参数解压缩单元30可以利用分用器(DEMUX)对定长语义向量进行解压缩,从而获得解压缩参数。
下面以参数压缩单元10采用MUX,参数解压缩单元30采用DEMUX为例对压缩及解压缩过程进行说明。
请参阅图10,图10示出了根据本公开一实施方式的压缩及解压缩过程示意图。
如图10所示,当待压缩参数为稀疏神经元时,可以利用神经元索引对神经元的数据进行判断,并利用MUX获取压缩后的非零神经元,可以将非零神经元及神经元索引作为定长语义向量,以便参数解压缩单元30进行解压缩。与之对应的,当参数解压缩单元30获得定长语义向量时,通过非零神经元及神经元索引进行判断,并通过DEMUX解压缩获得解压缩参数(神经元)。
在一种可能的实施方式中,参数压缩单元10可以采用量化编码、熵编码的方法实现待压缩参数的压缩,以获取压缩参数(定长语义向量)。与之对应的,参数解压缩单元30可以采用熵解码、量化解码的方法对定长语义向量进行解压缩,以获取解压缩参数。
下面以参数压缩单元10采用量化编码、熵编码的方法实现权值矩阵的压缩,参数解压缩单元30采用熵解码、量化解码的方法实现解码为例对压缩及解压缩过程进行说明。
请参阅图11,图11示出了根据本公开一实施方式的压缩及解压缩过程示意图。
如图11所示,参数压缩单元10可以对权值矩阵通过量化编码的方法实现量化,以获取对应的密码本及字典,然后通过熵编码的方法对密码本及字典进行处理以获取处理后的密码本及字典,将处理后的密码本及字典作为压缩后的定长语义向量。与之对应的,当参数解压缩单元10接收到定长语义向量后,可以对定长语义向量进行熵解码以获取熵解码后的密码本及字典,其次,利用量化解码的方法对熵解码后的密码本及字典进行解码以获取解压缩参数(解压缩后的权值矩阵)。
当然,在其他实施方式中,参数压缩单元10及参数解压缩单元30还可以采用其他方法实现压缩及解压缩,本公开不做限定。
本公开还提供一种机器学习运算装置,其包括一个或多个在本公开中提到的训练装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给***设备。***设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上训练装置时,训练装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制***,也可以有各自独立的控制***;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本公开还提供一种组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。
请参阅图12,图12示出了根据本公开一实施方式的组合处理装置的示意图。
如图12所示的其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
请参阅图13,图13示出了根据本公开一实施方式的组合处理装置的示意图。
如图13所示,该装置还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其他处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上***,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,本公开还提供一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本公开还提供一种板卡,其包括了上述芯片封装结构。
请参阅图14,参阅图1,4,图14示出了根据本公开一实施方式的板卡的示意图。
如图14所示,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,本公开还提供一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
请参阅图15,图15示出了根据本公开一实施方式的支持压缩及解压缩的神经网络训练方法的流程图。
如图15所示,所述方法运用于神经网络训练装置中以执行神经网络的训练,所述神经网络训练装置包括参数压缩单元、参数存储单元、参数解压缩单元、运算单元,所述方法包括:
步骤S110,参数压缩单元根据接收到的神经网络的模型数据,确定所述神经网络的待压缩参数,并利用编码器对所述待压缩参数进行压缩处理,获得与所述神经网络对应的语义向量;
步骤S120,参数存储单元存储与所述神经网络对应的语义向量,并在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量;
步骤S130,参数解压缩单元在接收到语义向量时,利用解码器对所述语义向量进行解压缩处理,获得所述神经网络的解压缩参数,并向所述运算单元发送所述解压缩参数;及
步骤S140,运算单元对接收到的所述语义向量或所述解压缩参数对所述神经网络进行训练。
通过以上方法,本公开根据接收到的神经网络的模型数据,确定所述神经网络的待压缩参数,并利用编码器对所述待压缩参数进行压缩处理,获得与所述神经网络对应的语义向量,存储与所述神经网络对应的语义向量,并在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量,在接收到语义向量时,利用解码器对所述语义向量进行解压缩处理,获得所述神经网络的解压缩参数,并向所述运算单元发送所述解压缩参数,运算单元利用接收到的所述语义向量或所述解压缩参数进行神经网络的训练,本公开可以对待压缩参数进行压缩,从而有效减少神经网络的模型大小、降低了对内存的需求,从而有效提高了神经网络的数据处理速度。
在一种可能的实施方式中,所述方法还包括:
所述参数压缩单元判断所述待压缩参数是否稀疏,并在所述待压缩参数稀疏时,向所述参数存储单元发送与所述语义向量对应的稀疏化标记;
所述参数存储单元存储所述稀疏化标记,
其中,所述参数存储单元在接收到所述数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量,包括:
在接收到所述数据读取指令,且所述参数存储单元中存储有与所述语义向量对应的稀疏化标记时,向所述运算单元发送所述语义向量。
在一种可能的实施方式中,所述参数存储单元在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量,还包括:
在接收到所述数据读取指令,且所述参数存储单元中未存储与所述语义向量对应的稀疏化标记时,向所述参数解压缩单元发送所述语义向量。
在一种可能的实施方式中,该神经网络包含n层,n为大于或等于2的整数,所述运算单元对接收到的所述语义向量或所述解压缩参数对所述神经网络进行训练,包括:
依据所述语义向量或解压缩参数确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
依据所述第n输出结果得到第n输出结果梯度,依据所述语义向量或解压缩参数获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;
依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为竖向数据块和横向数据块;
依据第二数据块以并行方式执行神经网络中的运算得到运算结果,其中,所述第二数据块与所述处理后的第一数据块关联;
对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值。
在一种可能的实施方式中,所述装置还包括控制器单元,其中,所述运算单元包括一个主处理电路和多个从处理电路,所述方法还包括:
所述控制器单元获取所述解压缩参数,根据所述解压缩参数确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果,并所述第n输出结果发送给所述主处理电路;
所述主处理电路依据所述第n输出结果得到第n输出结果梯度,依据所述解压缩参数获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为竖向数据块和横向数据块;依据所述第n反向运算指令将第一数据块发送至与所述主处理电路相连的多个从处理电路中的至少一个从处理电路;
所述多个从处理电路依据第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的从处理电路传输给所述主处理电路,其中,所述第二数据块为所述从处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
所述控制器单元将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值;
所述参数压缩单元将所述控制器单元、所述主处理单元、所述从处理单元产生的数据作为待压缩数据,并利用编码器对所述待压缩数据进行压缩,获得对应的语义向量。
在一种可能的实施方式中,所述装置还包括直接内存访问单元,所述方法还包括:
直接内存访问单元从所述存储单元获取所述语义向量或保存所述语义向量到存储单元;
其中,所述参数存储单元包括:寄存器、缓存中任意组合。
在一种可能的实施方式中,所述缓存包括神经元缓存,所述神经元缓存包括输入神经元缓存及输出神经元缓存,所述输入神经元缓存包括输入神经元索引缓存、输入神经元梯度缓存,所述输出神经元缓存包括输出神经元索引缓存、输出神经元梯度缓存,其中,所述缓存中的神经元缓存存储神经网络中与神经元相关的数据,包括:
神经元缓存存储神经网络中与神经元相关的数据;
输入神经元缓存存储神经网络中与输入神经元相关的数据,其中,所述输入神经元索引缓存存储输入神经元索引,所述输入神经元梯度缓存存储反向计算过程中输入神经元梯度;
输出神经元缓存存储神经网络中与输出神经元相关的数据,其中,所述输出神经元梯度缓存存储反向计算过程中输出神经元梯度。
在一种可能的实施方式中,所述缓存包括权值缓存,所述权值缓存包括输入权值缓存及输出权值缓存,所述输入权值缓存包括输入权值索引缓存、输入权值梯度缓存,所述输出权值缓存包括输出权值索引缓存、输出权值梯度缓存,其中,所述缓存中的神经元缓存存储神经网络中与神经元相关的数据,包括:
权值缓存存储神经网络与权值相关的数据;
输入权值缓存存储神经网络中与输入权值相关的数据,其中,所述输入权值索引缓存存储输入权值,所述输入权值梯度缓存存储反向计算过程中输入权值梯度;
输出权值缓存存储神经网络中与输出权值相关的数据,其中,所述输出权值索引缓存存储输出权值索引,所述输出权值梯度缓存存储反向计算过程中输出权值梯度。
在一种可能的实施方式中,所述解压缩参数包括神经元、神经元梯度、权值、权值梯度。
在一种可能的实施方式中,所述控制器单元包括:指令存储单元、指令处理单元和存储队列单元、依赖关系处理单元,其中,
所述指令存储单元存储所述人工神经网络运算关联的计算指令;
所述指令处理单元对所述计算指令解析得到多个运算指令;
所述存储队列单元存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令;
所述依赖关系处理单元确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
在一种可能的实施方式中,所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路,其中,
所述树型模块转发所述主处理电路与所述多个从处理电路之间的数据块、权值正向运算指令以及反向运算指令。
在一种可能的实施方式中,所述运算单元还包括分支处理电路,
所述主处理电路将一个输入神经元分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一种可能的实施方式中,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的K个从处理电路,所述K个从处理电路为:第1行的a个从处理电路、第b行的a个从处理电路以及第1列的b个从处理电路;
所述K个从处理电路在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
应该说明的是,上述的神经网络训练方法为前述的神经网络训练装置对应的方法项,其具体介绍请参考之前对装置项的描述,在此不再赘述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (29)

1.一种支持压缩及解压缩的神经网络训练装置,所述装置用于执行神经网络的训练,其特征在于,所述装置包括:
参数压缩单元,用于根据接收到的神经网络的模型数据,确定所述神经网络的待压缩参数,并利用编码器对所述待压缩参数进行压缩处理,获得与所述神经网络对应的语义向量;
参数存储单元,连接到所述参数压缩单元,用于存储与所述神经网络对应的语义向量,并在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量;
参数解压缩单元,连接到所述参数存储单元,用于在接收到语义向量时,利用解码器对所述语义向量进行解压缩处理,获得所述神经网络的解压缩参数,并向所述运算单元发送所述解压缩参数;及
运算单元,分别连接到所述参数存储单元和所述参数解压缩单元,用于对接收到的所述语义向量或所述解压缩参数对所述神经网络进行训练。
2.根据权利要求1所述的装置,其特征在于,
所述参数压缩单元还用于判断所述待压缩参数是否稀疏,并在所述待压缩参数稀疏时,向所述参数存储单元发送与所述语义向量对应的稀疏化标记;
所述参数存储单元,还用于存储所述稀疏化标记,
其中,所述参数存储单元在接收到所述数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量,包括:
在接收到所述数据读取指令,且所述参数存储单元中存储有与所述语义向量对应的稀疏化标记时,向所述运算单元发送所述语义向量。
3.根据权利要求2所述的装置,其特征在于,所述参数存储单元在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量,还包括:
在接收到所述数据读取指令,且所述参数存储单元中未存储与所述语义向量对应的稀疏化标记时,向所述参数解压缩单元发送所述语义向量。
4.根据权利要求1所述的装置,其特征在于,该神经网络包含n层,n为大于或等于2的整数,所述对接收到的所述语义向量或所述解压缩参数对所述神经网络进行正向训练或者反向训练,包括:
依据所述语义向量或解压缩参数确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
依据所述第n输出结果得到第n输出结果梯度,依据所述语义向量或解压缩参数获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;
依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为竖向数据块和横向数据块;
依据第二数据块以并行方式执行神经网络中的运算得到运算结果,其中,所述第二数据块与所述处理后的第一数据块关联;
对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值。
5.根据权利要求1所述的装置,其特征在于,该神经网络包含n层,n为大于或等于2的整数,所述装置还包括控制器单元,其中,所述运算单元包括一个主处理电路和多个从处理电路;
所述控制器单元,电连接于所述参数解压缩单元,用于获取所述解压缩参数,根据所述解压缩参数确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果,并所述第n输出结果发送给所述主处理电路;
所述主处理电路,电连接于所述控制器单元,用于依据所述第n输出结果得到第n输出结果梯度,依据所述解压缩参数获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为竖向数据块和横向数据块;依据所述第n反向运算指令将第一数据块发送至与所述主处理电路相连的多个从处理电路中的至少一个从处理电路;
所述多个从处理电路,电连接于所述主处理电路,用于依据第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的从处理电路传输给所述主处理电路,其中,所述第二数据块为所述从处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路,还用于对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
所述控制器单元,还用于将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值;
所述参数压缩单元,电连接于所述控制器单元、所述主处理单元、所述从处理单元,还用于将所述控制器单元、所述主处理单元、所述从处理单元产生的数据作为待压缩数据,并利用编码器对所述待压缩数据进行压缩,获得对应的语义向量。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
存储单元,电连接于所述参数压缩单元、所述参数解压缩单元,用于存储所述语义向量;
直接内存访问单元,电连接于所述存储单元,用于从所述存储单元获取所述语义向量或保存所述语义向量到存储单元;
其中,所述存储单元包括:寄存器、缓存中任意组合。
7.根据权利要求6所述装置,其特征在于,所述缓存包括:
神经元缓存,用于存储神经网络中与神经元相关的数据;
所述神经元缓存包括:
输入神经元缓存,用于存储神经网络中与输入神经元相关的数据,其中,所述输入神经元缓存还包括输入神经元索引缓存、输入神经元梯度缓存,所述输入神经元索引缓存用于存储输入神经元索引,所述输入神经元梯度缓存用于存储反向计算过程中输入神经元梯度;
输出神经元缓存,用于存储神经网络中与输出神经元相关的数据,其中,所述输出神经元缓存还包括输出神经元索引缓存、输出神经元梯度缓存,所述输出神经元索引缓存用于存储输出神经元索引,所述输出神经元梯度缓存用于存储反向计算过程中输出神经元梯度。
8.根据权利要求6所述的装置,其特征在于,所述缓存包括:
权值缓存,用于存储神经网络与权值相关的数据;
所述权值缓存包括:
输入权值缓存,用于存储神经网络中与输入权值相关的数据,其中,所述输入权值缓存还包括输入权值索引缓存、输入权值梯度缓存,所述输入权值索引缓存用于存储输入权值,所述输入权值梯度缓存用于存储反向计算过程中输入权值梯度;
输出权值缓存,用于存储神经网络中与输出权值相关的数据,其中,所述输出权值缓存还包括输出权值索引缓存、输出权值梯度缓存,所述输出权值索引缓存用于存储输出权值索引,所述输出权值梯度缓存用于存储反向计算过程中输出权值梯度。
9.根据权利要求5所述的装置,其特征在于,所述解压缩参数包括神经元、神经元梯度、权值、权值梯度。
10.根据权利要求5所述的装置,其特征在于,所述控制器单元包括:指令存储单元、指令处理单元和存储队列单元、依赖关系处理单元;
所述指令存储单元,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元,用于对所述计算指令解析得到多个运算指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
11.根据权利要求5所述的装置,其特征在于,所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值正向运算指令以及反向运算指令。
12.根据权利要求9所述的装置,其特征在于,所述运算单元还包括分支处理电路,
所述主处理电路,用于将一个输入神经元分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
13.根据权利要求9所述的装置,其特征在于,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的K个从处理电路,所述K个从处理电路为:第1行的a个从处理电路、第b行的a个从处理电路以及第1列的b个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
14.一种神经网络芯片,其特征在于,所述机器学习芯片包括机器学习运算装置或如组合处理装置,其中,
所述机器学习运算装置包括一个或多个如权利要求1-13任一项所述的支持压缩及解压缩的神经网络训练装置,用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;当所述机器学习运算装置包含多个所述训练装置时,所述多个所述训练装置间可以通过特定的结构进行连接并传输数据;其中,多个所述训练装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述训练装置共享同一控制***或拥有各自的控制***;多个所述训练装置共享内存或者拥有各自的内存;多个所述训练装置的互联方式是任意互联拓扑;
所述组合处理装置包括所述的机器学习运算装置,通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作;
所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
15.一种电子设备,其特征在于,所述电子设备包括如所述权利要求14所述的芯片。
16.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求14所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控,其中,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
17.一种支持压缩及解压缩的神经网络训练方法,其特征在于,所述方法运用于神经网络训练装置中以执行神经网络的训练,所述神经网络训练装置包括参数压缩单元、参数存储单元、参数解压缩单元、运算单元,所述方法包括:
参数压缩单元根据接收到的神经网络的模型数据,确定所述神经网络的待压缩参数,并利用编码器对所述待压缩参数进行压缩处理,获得与所述神经网络对应的语义向量;
参数存储单元存储与所述神经网络对应的语义向量,并在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量;
参数解压缩单元在接收到语义向量时,利用解码器对所述语义向量进行解压缩处理,获得所述神经网络的解压缩参数,并向所述运算单元发送所述解压缩参数;及
运算单元对接收到的所述语义向量或所述解压缩参数对所述神经网络进行训练。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
所述参数压缩单元判断所述待压缩参数是否稀疏,并在所述待压缩参数稀疏时,向所述参数存储单元发送与所述语义向量对应的稀疏化标记;
所述参数存储单元存储所述稀疏化标记,
其中,所述参数存储单元在接收到所述数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量,包括:
在接收到所述数据读取指令,且所述参数存储单元中存储有与所述语义向量对应的稀疏化标记时,向所述运算单元发送所述语义向量。
19.根据权利要求18所述的方法,其特征在于,所述参数存储单元在接收到数据读取指令时,向所述参数解压缩单元或运算单元发送所述语义向量,还包括:
在接收到所述数据读取指令,且所述参数存储单元中未存储与所述语义向量对应的稀疏化标记时,向所述参数解压缩单元发送所述语义向量。
20.根据权利要求1所述的方法,其特征在于,该神经网络包含n层,n为大于或等于2的整数,所述运算单元对接收到的所述语义向量或所述解压缩参数对所述神经网络进行训练,包括:
依据所述语义向量或解压缩参数确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
依据所述第n输出结果得到第n输出结果梯度,依据所述语义向量或解压缩参数获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;
依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为竖向数据块和横向数据块;
依据第二数据块以并行方式执行神经网络中的运算得到运算结果,其中,所述第二数据块与所述处理后的第一数据块关联;
对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值。
21.根据权利要求17所述的方法,其特征在于,该神经网络包含n层,n为大于或等于2的整数,所述装置还包括控制器单元,其中,所述运算单元包括一个主处理电路和多个从处理电路;
所述控制器单元获取所述解压缩参数,根据所述解压缩参数确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果,并所述第n输出结果发送给所述主处理电路;
所述主处理电路依据所述第n输出结果得到第n输出结果梯度,依据所述解压缩参数获取第n层反向运算的第n反向运算指令以及所述第n反向运算指令所需的第n层输入数据以及第n层权值组数据;依据所述第n反向运算指令将所述第n输出结果梯度、第n层输入数据以及第n层权值组数据划分为竖向数据块和横向数据块;依据所述第n反向运算指令将第一数据块发送至与所述主处理电路相连的多个从处理电路中的至少一个从处理电路;
所述多个从处理电路依据第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的从处理电路传输给所述主处理电路,其中,所述第二数据块为所述从处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;
所述控制器单元将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层反向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括至少二个权值;
所述参数压缩单元将所述控制器单元、所述主处理单元、所述从处理单元产生的数据作为待压缩数据,并利用编码器对所述待压缩数据进行压缩,获得对应的语义向量。
22.根据权利要求17所述的方法,其特征在于,所述装置还包括直接内存访问单元,所述方法还包括:
直接内存访问单元从所述存储单元获取所述语义向量或保存所述语义向量到存储单元;
其中,所述参数存储单元包括:寄存器、缓存中任意组合。
23.根据权利要求18所述方法,其特征在于,所述缓存包括神经元缓存,所述神经元缓存包括输入神经元缓存及输出神经元缓存,所述输入神经元缓存包括输入神经元索引缓存、输入神经元梯度缓存,所述输出神经元缓存包括输出神经元索引缓存、输出神经元梯度缓存,其中,所述缓存中的神经元缓存存储神经网络中与神经元相关的数据,包括:
神经元缓存存储神经网络中与神经元相关的数据;
输入神经元缓存存储神经网络中与输入神经元相关的数据,其中,所述输入神经元索引缓存存储输入神经元索引,所述输入神经元梯度缓存存储反向计算过程中输入神经元梯度;
输出神经元缓存存储神经网络中与输出神经元相关的数据,其中,所述输出神经元梯度缓存存储反向计算过程中输出神经元梯度。
24.根据权利要求18所述的装置,其特征在于,所述缓存包括权值缓存,所述权值缓存包括输入权值缓存及输出权值缓存,所述输入权值缓存包括输入权值索引缓存、输入权值梯度缓存,所述输出权值缓存包括输出权值索引缓存、输出权值梯度缓存,其中,所述缓存中的神经元缓存存储神经网络中与神经元相关的数据,包括:
权值缓存存储神经网络与权值相关的数据;
输入权值缓存存储神经网络中与输入权值相关的数据,其中,所述输入权值索引缓存存储输入权值,所述输入权值梯度缓存存储反向计算过程中输入权值梯度;
输出权值缓存存储神经网络中与输出权值相关的数据,其中,所述输出权值索引缓存存储输出权值索引,所述输出权值梯度缓存存储反向计算过程中输出权值梯度。
25.根据权利要求17所述的方法,其特征在于,所述解压缩参数包括神经元、神经元梯度、权值、权值梯度。
26.根据权利要求17所述的方法,其特征在于,所述控制器单元包括:指令存储单元、指令处理单元和存储队列单元、依赖关系处理单元,其中,
所述指令存储单元存储所述人工神经网络运算关联的计算指令;
所述指令处理单元对所述计算指令解析得到多个运算指令;
所述存储队列单元存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令;
所述依赖关系处理单元确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
27.根据权利要求17所述的方法,其特征在于,所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路,其中,
所述树型模块转发所述主处理电路与所述多个从处理电路之间的数据块、权值正向运算指令以及反向运算指令。
28.根据权利要求21所述的方法,其特征在于,所述运算单元还包括分支处理电路,
所述主处理电路将一个输入神经元分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
29.根据权利要求21所述的方法,其特征在于,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的K个从处理电路,所述K个从处理电路为:第1行的a个从处理电路、第b行的a个从处理电路以及第1列的b个从处理电路;
所述K个从处理电路在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
CN201811074120.0A 2018-09-14 2018-09-14 训练装置及方法 Active CN110909870B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811074120.0A CN110909870B (zh) 2018-09-14 2018-09-14 训练装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811074120.0A CN110909870B (zh) 2018-09-14 2018-09-14 训练装置及方法

Publications (2)

Publication Number Publication Date
CN110909870A true CN110909870A (zh) 2020-03-24
CN110909870B CN110909870B (zh) 2022-12-09

Family

ID=69812223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811074120.0A Active CN110909870B (zh) 2018-09-14 2018-09-14 训练装置及方法

Country Status (1)

Country Link
CN (1) CN110909870B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651207A (zh) * 2020-08-06 2020-09-11 腾讯科技(深圳)有限公司 一种神经网络模型运算芯片、方法、装置、设备及介质
CN112261023A (zh) * 2020-10-15 2021-01-22 苏州浪潮智能科技有限公司 一种卷积神经网络的数据传输方法和装置
CN113033785A (zh) * 2021-02-26 2021-06-25 上海阵量智能科技有限公司 芯片、神经网络训练***、内存管理方法及装置、设备
CN113326927A (zh) * 2021-08-03 2021-08-31 北京壁仞科技开发有限公司 优化神经网络的运算的方法、装置和计算机设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130238865A1 (en) * 2012-03-06 2013-09-12 Fujitsu Limited Decompression apparatus and decompression method
CN103649905A (zh) * 2011-03-10 2014-03-19 特克斯特怀茨有限责任公司 用于统一信息表示的方法和***及其应用
WO2016186564A1 (en) * 2015-05-21 2016-11-24 Zeropoint Technologies Ab Methods, devices and systems for semantic-value data compression and decompression
US20170032035A1 (en) * 2015-07-28 2017-02-02 Microsoft Technology Licensing, Llc Representation Learning Using Multi-Task Deep Neural Networks
WO2017177901A1 (zh) * 2016-04-12 2017-10-19 芋头科技(杭州)有限公司 一种语义匹配方法及智能设备
US20180026650A1 (en) * 2016-07-25 2018-01-25 Fujitsu Limited Encoding device, encoding method and search method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103649905A (zh) * 2011-03-10 2014-03-19 特克斯特怀茨有限责任公司 用于统一信息表示的方法和***及其应用
US20130238865A1 (en) * 2012-03-06 2013-09-12 Fujitsu Limited Decompression apparatus and decompression method
WO2016186564A1 (en) * 2015-05-21 2016-11-24 Zeropoint Technologies Ab Methods, devices and systems for semantic-value data compression and decompression
US20170032035A1 (en) * 2015-07-28 2017-02-02 Microsoft Technology Licensing, Llc Representation Learning Using Multi-Task Deep Neural Networks
WO2017177901A1 (zh) * 2016-04-12 2017-10-19 芋头科技(杭州)有限公司 一种语义匹配方法及智能设备
US20180026650A1 (en) * 2016-07-25 2018-01-25 Fujitsu Limited Encoding device, encoding method and search method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
伍小芹等: "基于神经网络生成图像语义的算法研究", 《计算机工程与应用》 *
李明亮等: "基于神经网络的分形图像压缩与解压缩", 《河南科技大学学报(自然科学版)》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651207A (zh) * 2020-08-06 2020-09-11 腾讯科技(深圳)有限公司 一种神经网络模型运算芯片、方法、装置、设备及介质
CN111651207B (zh) * 2020-08-06 2020-11-17 腾讯科技(深圳)有限公司 一种神经网络模型运算芯片、方法、装置、设备及介质
CN112261023A (zh) * 2020-10-15 2021-01-22 苏州浪潮智能科技有限公司 一种卷积神经网络的数据传输方法和装置
CN113033785A (zh) * 2021-02-26 2021-06-25 上海阵量智能科技有限公司 芯片、神经网络训练***、内存管理方法及装置、设备
CN113033785B (zh) * 2021-02-26 2024-01-09 上海阵量智能科技有限公司 芯片、神经网络训练***、内存管理方法及装置、设备
CN113326927A (zh) * 2021-08-03 2021-08-31 北京壁仞科技开发有限公司 优化神经网络的运算的方法、装置和计算机设备
CN113326927B (zh) * 2021-08-03 2022-04-22 北京壁仞科技开发有限公司 优化神经网络的运算的方法、装置和计算机设备

Also Published As

Publication number Publication date
CN110909870B (zh) 2022-12-09

Similar Documents

Publication Publication Date Title
CN109104876B (zh) 一种运算装置及相关产品
CN110909870B (zh) 训练装置及方法
CN109522052B (zh) 一种计算装置及板卡
TWI795519B (zh) 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡及執行機器學習計算的方法
CN110163363B (zh) 一种计算装置及方法
CN111353591A (zh) 一种计算装置及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN111930681B (zh) 一种计算装置及相关产品
TW201931216A (zh) 集成電路芯片裝置及相關產品
CN111488963A (zh) 神经网络计算装置和方法
CN109711538B (zh) 运算方法、装置及相关产品
CN109740730B (zh) 运算方法、装置及相关产品
CN109740729B (zh) 运算方法、装置及相关产品
CN113238976B (zh) 缓存控制器、集成电路装置及板卡
CN111382853B (zh) 数据处理装置、方法、芯片及电子设备
CN111047024B (zh) 一种计算装置及相关产品
CN111382852B (zh) 数据处理装置、方法、芯片及电子设备
CN111382856B (zh) 数据处理装置、方法、芯片及电子设备
CN111382848A (zh) 一种计算装置及相关产品
CN111047023B (zh) 一种计算装置及相关产品
WO2019165939A1 (zh) 一种计算装置及相关产品
CN111291871A (zh) 一种计算装置及相关产品
CN112394992A (zh) 半精度浮点转八位整形指令处理装置、方法及相关产品
CN112394990A (zh) 浮点转半精度浮点指令处理装置、方法及相关产品
CN111381878A (zh) 数据处理装置、方法、芯片及电子设备

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
GR01 Patent grant
GR01 Patent grant