CN111222632A - 计算装置、计算方法及相关产品 - Google Patents

计算装置、计算方法及相关产品 Download PDF

Info

Publication number
CN111222632A
CN111222632A CN201811424173.0A CN201811424173A CN111222632A CN 111222632 A CN111222632 A CN 111222632A CN 201811424173 A CN201811424173 A CN 201811424173A CN 111222632 A CN111222632 A CN 111222632A
Authority
CN
China
Prior art keywords
bits
data
neuron
processing circuit
bit
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
CN201811424173.0A
Other languages
English (en)
Other versions
CN111222632B (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 CN201811424173.0A priority Critical patent/CN111222632B/zh
Priority to PCT/CN2019/109552 priority patent/WO2020073874A1/zh
Publication of CN111222632A publication Critical patent/CN111222632A/zh
Application granted granted Critical
Publication of CN111222632B publication Critical patent/CN111222632B/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Memory System (AREA)

Abstract

本发明公开了一种计算装置,该计算装置应用于神经网络芯片,该神经网络芯片设置于板卡上,该板卡包括:存储器件,用于存储数据;接口装置,用于实现神经网络芯片与外部设备之间的数据传输;控制器件,用于对神经网络芯片的状态进行监控,上述计算装置包括:运算单元、控制器单元和存储单元。采用本发明实施例能够减少神经网络的计算时间和计算能耗。

Description

计算装置、计算方法及相关产品
技术领域
本发明涉及数据处理领域,尤其涉及一种计算装置、计算方法及相关产品。
背景技术
神经网络(neural network)已经获得了非常成功的应用,但是大规模神经网络的运算需要消耗大量的计算时间和计算能耗,对处理平台带来严峻挑战。因此,减少神经网络的计算时间和计算能耗成为一个亟待解决的问题。
发明内容
本发明实施例提供一种计算装置、计算方法及相关产品,能够减少神经网络的计算时间和计算能耗。
第一方面,本发明实施例提供一种计算装置,包括:
所述计算装置用于执行网络模型的计算,所述计算装置用于执行神经网络运算;所述计算装置包括:运算单元、控制器单元以及存储单元;
所述存储单元,用于存储权值和输入神经元,所述权值包括重要比特位和非重要比特位;
所述控制器单元,用于获取所述权值的重要比特位和非重要比特位,以及所述输入神经元,并将所述权值的重要比特位和非重要比特位、所述输入神经元传输给所述运算单元;
所述运算单元,用于将所述输入神经元和所述重要比特位进行运算,得到输出神经元的第一运算结果;
以及若所述第一运算结果小于或等于预设阈值,则跳过当前输出神经元的运算;
若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元。
第二方面,本发明实施例还提供了一种机器学习运算装置,所述机器学习运算装置包括一个或多个如第一方面所述的计算装置,用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述计算装置共享同一控制***或拥有各自的控制***;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
第三方面,本发明实施例还提供了一种组合处理装置,所述组合处理装置包括如第二方面所述的机器学习运算装置,通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
第四方面,本发明实施例还提供了一种神经网络芯片,所述机器学习芯片包括如第二方面所述的机器学习运算装置或如第三方面所述的组合处理装置。
第五方面,本发明实施例还提供了一种电子设备,所述电子设备包括如第四方面所述的芯片。
第六方面,本发明实施例还提供了一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如第六方面所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
第七方面,本发明实施例还提供了一种计算方法,包括:
获取所述权值的重要比特位和非重要比特位,以及所述输入神经元;
将所述输入神经元和所述重要比特位进行运算,得到输出神经元的第一运算结果;
若所述第一运算结果小于或等于预设阈值,则跳过当前输出神经元的运算;
若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元。
第八方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第七方面中所描述的部分或全部步骤。
第九方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第七方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,在本发明实施例的方案中,获取权值的重要比特位和非重要比特位,以及输入神经元,将输入神经元和重要比特位进行运算,得到输出神经元的第一运算结果,若第一运算结果小于或等于预设阈值,则跳过当前输出神经元的运算,若第一运算结果大于预设阈值,则将输入神经元与非重要比特位之间进行运算,得到第二运算结果,将第一运算结果与第二运算结果之和作为输出神经元,进而,如果某个输出神经元的预测结果为不需要进行运算,则跳过该输出神经元的运算过程。新的运算装置中集成了运算方法,能够预测并跳过不需要进行运算的输出神经元。从而减少神经网络的计算时间和计算能耗。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A为本发明实施例提供的一种计算装置的结构示意图;
图1B为本申请实施例提供的一种分层存储装置结构示意图。
图1C为本申请实施例提供的一种3T SRAM存储单元的结构示意图。
图1D为本申请实施例提供的一种数据处理装置结构示意图。
图1E为本申请实施例提供的另一种数据处理装置结构示意图。
图2是本申请实施例提供的一种计算装置的结构示意图;
图3是本申请一个实施例提供的计算装置的结构图;
图4是本申请另一个实施例提供的计算装置的结构图;
图5是本申请实施例提供的主处理电路的结构图;
图6是本申请实施例提供的另一种计算装置的结构图;
图7是本申请实施例提供的树型模块的结构示意图;
图8是本申请实施例提供的又一种计算装置的结构图;
图9是本申请实施例提供的还一种计算装置的结构图;
图10是本申请实施例提供的一种组合处理装置的结构图;
图11是本申请实施例提供的一种计算装置的结构示意图;
图12是本申请实施例提供的另一种组合处理装置的结构图;
图13是本申请实施例提供的一种板卡的结构示意图;
图14为本发明实施例提供的一种计算方法的流程示意图。
具体实施方式
以下分别进行详细说明。
本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参见图1A,图1A为本发明实施例提供的一种计算装置的结构示意图。如图1所示,该计算装置100包括:
所述存储单元1019,用于存储权值和输入神经元,所述权值包括重要比特位和非重要比特位;
所述控制器单元1029,用于获取所述权值的重要比特位和非重要比特位,以及所述输入神经元,并将所述权值的重要比特位和非重要比特位、所述输入神经元传输给所述运算单元1039;
所述运算单元1039,用于将所述输入神经元和所述重要比特位进行运算,得到输出神经元的第一运算结果;
以及若所述第一运算结果小于或等于预设阈值,则跳过当前输出神经元的运算;
若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元。
其中,存储单元1019中存储的数据,输入神经元或者,权值,其包括浮点型数据和定点型数据,将浮点型数据中的符号位和指数部分指定为重要比特位,将底数部分指定为非重要比特位,将定点型数据中的符号位和数值部分的前x比特位指定为重要比特位,将数值部分的剩余比特指定为非重要比特位,其中,x为大于等于0且小于m的正整数,m为定点型数据的总比特位。将重要比特位存放在错误检查和纠正ECC(Error Correcting Code:简称ECC)内存进行精确存储,将非重要比特位存放在非ECC内存都进行非精确存储。
上述预设阈值可以由用户自行设置或者***默认,例如,预设阈值可以为0,或者,也可以为其他整数,或者,小数。
在一个可能的示例中,若所述输入神经元以Nin表示,该输入神经元包括n个比特位,其中,n1个比特位为重要比特位和n2个非重要比特位,若n1个比特位对应的值以N1in表示,该n2个比特位对应的值以N2in表示,则n1+n2=n,Nin=N1in+N2in,n为正整数,n1为自然数且小于n。
在一个可能的示例中,所述n1个比特位的位置是连续的,或者,不连续的。
在一个可能的示例中,若所述权值以W表示,该权值包括w个比特位,其中,w1个比特位为重要比特位和w2个非重要比特位,若该w1个比特位对应的值以W1表示,该w2个比特位对应的值为W2表示,则w1+w2=w,W=W1+W2,w为正整数,w1为自然数且小于w。
在一个可能的示例中,所述n1个比特位的位置是连续的,或者,不连续的。
在一个可能的示例中,在所述输入神经元为多个时,所述运算单元1039包括多个乘法器和至少一个加法器;
所述多个乘法器和所述至少一个加法器,用于按照如下公式计算所述输出神经元:
Figure BDA0001880894390000061
其中,运算单元1039包括多个乘法器和至少一个加法器,运算单元通过多个乘法器和至少一个加法器完成上述运算。T为输入神经元的数量,Nout为输出神经元,N1in(i)是第i个输入神经元的重要比特位,N2in(i)表示第i个输入神经元的非重要比特位,W1(i)为第i个权值的重要比特位,W2(i)为第i个权值的非重要比特位,Nin(i)表示第i个输入神经元的值,W(i)表示第i个权值的值,Nin(i)=N1in(i)+N2in(i)且W(i)=W1(i)+W2(i);
优先计算Nout中的
Figure BDA0001880894390000062
并将
Figure BDA0001880894390000063
作为所述第一运算结果。
具体实现中,输出神经元的计算公式如下:
Figure BDA0001880894390000064
其变换形式如下:
Figure BDA0001880894390000065
其中,
Figure BDA0001880894390000066
可运用于神经网络模型的连接层、卷积层或者lstm层运算,因为这些运算用到了这种内积操作。
在一个可能的示例中,所述运算单元1039还包括比较器,所述运算单元1039具体用于:在所述比较器的比较结果为所述第一运算结果小于或等于预设阈值时,则跳过所述输出神经元的运算;若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元方面,所述运算单元具体用于:
Figure BDA0001880894390000067
小于或等于所述预设阈值,则跳过当前输出神经元的运算;
Figure BDA0001880894390000068
大于所述预设阈值,则继续运算Nout,并输出最终的Nout
其中,上述运算单元1039还包括比较器,比较器主要用于比较运算。上述第一运算结果若小于或等于预设阈值,则跳过当前输入神经元的运算,进行执行下一次输入神经元的内积运算,在第一运算结果大于预设阈值时,则继续运算
Figure BDA0001880894390000071
最终输出神经元Nout如下:
Figure BDA0001880894390000072
可以看出,在本发明实施例的方案中,获取权值的重要比特位和非重要比特位,以及输入神经元,将输入神经元和重要比特位进行运算,得到输出神经元的第一运算结果,若第一运算结果小于或等于预设阈值,则跳过当前输出神经元的运算,若第一运算结果大于预设阈值,则将输入神经元与非重要比特位之间进行运算,得到第二运算结果,将第一运算结果与第二运算结果之和作为输出神经元,进而,如果某个输出神经元的预测结果为不需要进行运算,则跳过该输出神经元的运算过程。新的运算装置中集成了运算方法,能够预测并跳过不需要进行运算的输出神经元。从而减少神经网络的计算时间和计算能耗。
在一个可能的示例中,所述运算单元包括:一个主处理电路和多个从处理电路;
所述主处理电路用于将所述输入神经元拆分为多个数据块,将所述权值的重要比特位广播给所述多个从处理电路,将所述多个数据块分发给所述多个从处理电路;
所述从处理电路,用于将接收到的数据块与权重的重要比特位进行运算,得到部分结果,将所述部分结果发送给所述主处理电路;
所述主处理电路,还具体用于将接收到的所有部分结果拼接,得到所述第一运算结果。
在一个可能的示例中,所述运算单元还包括一个或多个分支处理电路,每个分支处理电路连接至少一个从处理电路,
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、广播数据以及运算指令。
在一个可能的示例中,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的p个从处理电路、第q行的p个从处理电路以及第1列的q个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于确定所述输入神经元为分发数据,权值的重要比特位为广播数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据。
在一个可能的示例中,所述主处理电路包括:激活处理电路、加法处理电路中的一种或任意组合。
在一个可能的示例中,所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
在一个可能的示例中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算。
参阅图1B,图1B为本申请实施例提供的一种分层存储装置结构示意图,如图1B所示,该装置包括:精确存储单元和非精确存储单元,精确存储单元用于存储数据中的重要比特位,非精确存储单元用于存储数据中的非重要比特位。
精确存储单元采用错误检查和纠正ECC内存,非精确存储单元采用非ECC内存。
进一步地,分层存储装置存储的数据为神经网络参数,包括输入神经元、权值和输出神经元,精确存储单元存储输入神经元、输出神经元以及权值的重要比特位,非精确存储单元存储输入神经元、输出神经元以及权值的非重要比特位。
进一步地,分层存储装置存储的数据包括浮点型数据和定点型数据,将浮点型数据中的符号位和指数部分指定为重要比特位,将底数部分指定为非重要比特位,将定点型数据中的符号位和数值部分的前x比特位指定为重要比特位,将数值部分的剩余比特指定为非重要比特位,其中,x为大于等于0且小于m的正整数,m为定点型数据的总比特位。将重要比特位存放在ECC内存进行精确存储,将非重要比特位存放在非ECC内存都进行非精确存储。
进一步地,ECC内存包括有ECC校验的DRAM(Dynamic Random Access Memory,简称:DRAM)动态随机存取存储器和有ECC校验的SRAM(StaticRandom-AccessMemory,简称SRAM)静态随机存取存储器;其中,有ECC校验的SRAM可采用3T SRAM。
进一步地,非ECC内存包括非ECC校验的DRAM和非ECC校验的SRAM,非ECC校验的SRAM可采用3TSRAM。
其中,3T SRAM中存放个每一个比特的单元由3个MOS管组成。
参阅图1C,图1C为本申请实施例提供的一种3T SRAM存储单元的结构示意图,如图1C所示,3T SRAM存储单元由3个MOS组成,分别是M1(第一MOS管),M2(第二MOS管)和M3(第三MOS管)。M1用于门控,M2和M3用于存储。
M1栅极与字线WL(Word Line)电连接,源极与位线BL(Bit Line)电连接;M2栅极与M3源极连接,并通过电阻R2与工作电压Vdd连接,M2漏极接地;M3栅极与M2源极、M1漏极连接,并通过电阻R1与工作电压Vdd连接,M3漏极接地。WL用来控制存储单元的门控访问,BL来进行存储单元的读写。当进行读操作时,拉高WL,从BL中读出位即可。当进行写操作时,拉高WL,拉高或者拉低BL,由于BL的驱动能力比存储单元强,会强制覆盖原来的状态。
本申请的存储装置采用近似存储技术,能够充分挖掘神经网络的容错能力,将神经参数进行近似存储,参数中重要的比特位采用精确存储,不重要的比特位采用非精确存储,从而减少存储开销和访存能耗开销。
本申请的实施例提供了一种数据处理装置,该装置与近似存储技术相对应的加速装置,参阅图1D,图1D为本申请实施例提供的一种数据处理装置的结构示意图,该数据处理装置包括:非精确运算单元、指令控制单元和上述的分层存储装置。
分层存储装置接收指令和运算参数,并将运算参数中的重要比特位和指令存储于精确存储单元,将运算参数中的非重要比特位存储于非精确存储单元。
指令控制单元接收分层存储装置中的指令,并将指令进行译码生成控制信息控制非精确运算单元进行计算操作。
非精确运算单元接收分层存储装置中的运算参数,依据控制信息进行运算,并将运算结果传输至分层存储装置进行存储或输出。
进一步地,非精确运算单元为神经网络处理器。进一步地,上述运算参数为神经网络参数,分层存储装置用来存储神经网络的神经元,权值和指令,将神经元的重要比特位、权值的重要比特位和指令存储在精确存储单元,神经元的非重要比特位和权值的非重要比特位存储在非精确存储单元。非精确运算单元接收分层存储装置中的输入神经元和权值,依据控制信息完成神经网络运算得到输出神经元,并将输出神经元重新传输至分层存储装置进行存储或输出。
进一步地,非精确运算单元可以有两种计算模式:(1)非精确运算单元直接接收来自分层存储装置的精确存储单元中的输入神经元的重要比特位和权值的重要比特位进行计算;(2)非精确运算单元接收重要比特位和非重要比特位拼接完整的输入神经元和权值进行计算,其中,输入神经元和权值的重要比特位和非重要比特位在存储单元中读取时进行拼接。
进一步地,参阅图1E,如图1E所示,数据处理装置还包括预处理模块,用于对输入的原始数据进行预处理并传输至存储装置,预处理包括切分、高斯滤波、二值化、正则化、归一化等等。
进一步地,数据处理装置还包括指令缓存、输入神经元分层缓存、权值分层缓存和输出神经元分层缓存,其中,指令缓存设置在分层存储装置和指令控制单元之间,用于存储专用指令;输入神经元分层缓存设置在存储装置和非精确运算单元之间,用于缓存输入神经元,输入神经元分层缓存包括输入神经元精确缓存和输入神经元非精确缓存,分别缓存输入神经元的重要比特位和非重要比特位;权值分层缓存设置在存储装置和非精确运算单元之间,用于缓存权值数据,权值分层缓存包括权值精确缓存和权值非精确缓存,分别缓存权值的重要比特位和非重要比特位;输出神经元分层缓存设置在存储装置和非精确运算单元之间,用于缓存输出神经元,所述输出神经元分层缓存包括输出神经元精确缓存和输出神经元非精确缓存,分别缓存输出神经元的重要比特位和非重要比特位。
进一步地,数据处理装置还包括直接数据存取单元DMA(direct memory access),用于在存储装置、指令缓存、权值分层缓存、输入神经元分层缓存和输出神经元分层缓存中进行数据或者指令读写。
进一步地,上述指令缓存、输入神经元分层缓存、权值分层缓存和输出神经元分层缓存均采用3T SRAM。
进一步地,非精确运算单元包括但不限于三个部分,第一部分乘法器,第二部分加法树,第三部分为激活函数单元。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2;第二部分将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为U的向量,U大于1,过程为:out=in1[1]+in1[2]+...+in1[U];或者,将输入数据(in1)通过加法树累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[U]+in2;或者,将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过称为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可通过其他的非线性函数将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。
非精确运算单元还可以包括池化单元,池化单元将输入数据(in)通过池化运算得到输出数据(out),过程为out=pool(in),其中pool为池化运算,池化运算包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
非精确运算单元执行运算包括几个部分,第一部分是将输入数据1和输入数据2相乘,得到相乘之后的数据;第二部分执行加法树运算,用于将输入数据1通过加法树逐级相加,或者将所述输入数据1通过加法树逐级相加后和输入数据2相加得到输出数据;第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据。以上几个部分的运算可以自由组合,从而实现各种不同功能的运算。
本申请的数据处理装置能够充分利用近似存储技术,并充分挖掘神经网络的容错能力,减少神经网络的计算量和神经网络访存量,从而减少计算能耗和访存能耗。通过采用针对多层人工神经网络运算的专用SIMD指令和定制的运算单元,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持;通过采用针对多层人工神经网络运算算法的专用非精确存储的片上缓存,充分挖掘了输入神经元和权值数据的重要性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。
以上仅是示例性的说明,但本申请并不限于此,数据处理装置可以包括非神经网络处理器,例如,通用运算处理器,通用运算具有相应的通用运算指令和数据,例如,标量算数运算、标量逻辑运算等,通用运算处理器例如但不限于包括一个或多个乘法器、一个或多个加法器,执行例如加法、乘法等基本运算。
在本实施例中,计算装置100是以模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application-specific integrated circuit,ASIC),执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。此外,以上存储单元1019、控制器单元1029和运算单元1039可通过图2~图13所示的装置来实现。
参阅图2,提供了一种计算装置,该计算装置用于执行机器学习计算,该计算装置包括:控制器单元11和运算单元12,其中,控制器单元11与运算单元12连接,该运算单元12包括:一个主处理电路和多个从处理电路;
控制器单元11,用于获取输入数据以及计算指令;在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制器单元11,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
可选的,上述计算装置还可以包括:该存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
可选的,该控制器单元包括:指令存储单元110、指令处理单元111和存储队列单元113;
指令存储单元110,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表所示。
操作码 寄存器或立即数 寄存器/立即数 ...
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
Figure BDA0001880894390000141
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为p维数据,p为大于等于1的整数,例如,p=1时,为1维数据,即向量,如p=2时,为2维数据,即矩阵,如p=3或3以上时,为多维张量。
可选的,该控制器单元还可以包括:
所述依赖关系处理单元108,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
在另一种可选实施例中,运算单元12如图4所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图4所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的p个从处理电路、第q行的p个从处理电路以及第1列的q个从处理电路,需要说明的是,如图4所示的K个从处理电路仅包括第1行的p个从处理电路、第q行的p个从处理电路以及第1列的q个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
可选的,如图5所示,该主处理电路还可以包括:转换处理电路114、激活处理电路115、加法处理电路116中的一种或任意组合;
转换处理电路114,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路115,用于执行主处理电路内数据的激活运算;
加法处理电路116,用于执行加法运算或累加运算。
所述主处理电路,用于将确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
下面通过神经网络运算指令来说明如图2所示的计算装置的具体计算方法。对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
在一种可选的实施方案中,如图6所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
上述树型模块具有收发功能,例如如图6所示,该树型模块即为发送功能,如图11所示,该树型模块即为接收功能。
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
可选的,该树型模块可以为p叉树结构,例如,如图7所示的二叉树结构,当然也可以为三叉树结构,该p可以为大于等于2的整数。本申请具体实施方式并不限制上述p的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图7所示的倒数第一层的节点。
可选的,上述运算单元可以携带单独的缓存,如图8所示,可以包括:神经元缓存单元,该神经元缓存单元63缓存该从处理电路的输入神经元向量数据和输出神经元值数据。
如图9所示,该运算单元还可以包括:权值缓存单元64,用于缓存该从处理电路在计算过程中需要的权值数据。
在一种可选实施例中,运算单元12如图3所示,可以包括分支处理电路103;其具体的连接结构如图3所示,其中,
主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;
分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。
在一种可选实施例中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:
控制器单元从存储单元内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路;
主处理电路确定该输入神经元矩阵x为广播数据,确定权值矩阵w为分发数据,将权值矩阵w拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将输入神经元矩阵x广播给8个从处理电路,
从处理电路并行执行8个子矩阵与输入神经元矩阵x的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;
主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制器单元,控制器单元将该最终结果y输出或存储至存储单元内。
如图2所示的计算装置执行神经网络正向运算指令的方法具体可以为:
控制器单元从指令存储单元内提取神经网络正向运算指令、神经网络运算指令对应的操作域以及至少一个操作码,控制器单元将该操作域传输至数据访问单元,将该至少一个操作码发送至运算单元。
控制器单元从存储单元内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元的主处理电路,控制器单元从存储单元内提取输入数据Xi,将该输入数据Xi发送至主处理电路。
主处理电路依据该至少一个操作码确定为乘法运算,确定输入数据Xi为广播数据,确定权值数据为分发数据,将权值w拆分成p个数据块;
控制器单元的指令处理单元依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、输入数据Xi以广播的方式发送给多个从处理电路,将该p个数据块分发给该多个从处理电路(例如具有p个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该输入数据Xi与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏置指令将该累加结果执行加偏置b得到最终结果,将该最终结果发送至该控制器单元。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
本申请还揭露了一个机器学习运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给***设备。***设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制***,也可以有各自独立的控制***;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。图10为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图12所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其他处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上***,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图13,图13提供了一种板卡,上述板卡除了包括上述芯片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接口传递至所述芯片,实现数据转移。可选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
具体实现中,输出神经元的上述第一运算结果,即
Figure BDA0001880894390000211
是再分成m1*m2份,并由m1个从运算模块来做的,m2>=1,即是m次(m拍)。k*m份的数据在从运算模块里算完后可以传给主运算模块,让主运算模块累加,k>=2。对于上述的主+互联模块+从的架构来说,也可以在互联(例如,K树(如图7所示))模块里累加。
进一步地,从运算模块里的乘法器可以是并行乘法器,也可以是串行乘法器,例如,串行乘法器。因为此专利分成重要比特位和非重要比特位的方法,导致重要比特位的位宽是浮动的。比如总位数是16位,重要比特位可以是3,5,8位。因此使用并行乘法器来运算,必须要做16*16,那就非常浪费。反之用串行来做,就可以只用一部分乘法器实现3、5、8乘法,功耗就更理想。
参见图14,图14为本发明实施例提供的一种计算方法的流程示意图。如图14所示,该方法包括:
1401、获取所述权值的重要比特位和非重要比特位,以及所述输入神经元。
1402、将所述输入神经元和所述重要比特位进行运算,得到输出神经元的第一运算结果。
1403、若所述第一运算结果小于或等于预设阈值,则跳过当前输出神经元的运算。
1404、若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元。
在一种可行的实施例中,若所述输入神经元以Nin表示,该输入神经元包括n个比特位,其中,n1个比特位为重要比特位和n2个非重要比特位,若n1个比特位对应的值以N1in表示,该n2个比特位对应的值以N2in表示,则n1+n2=n,Nin=N1in+N2in,n为正整数,n1为自然数且小于n。
在一种可行的实施例中,所述n1个比特位的位置是连续的,或者,不连续的。
在一种可行的实施例中,若所述权值以W表示,该权值包括w个比特位,其中,w1个比特位为重要比特位和w2个非重要比特位,若该w1个比特位对应的值以W1表示,该w2个比特位对应的值为W2表示,则w1+w2=w,W=W1+W2,w为正整数,w1为自然数且小于w。
在一种可行的实施例中,所述n1个比特位的位置是连续的,或者,不连续的。
在一种可行的实施例中,在所述输入神经元为多个时,可包括如下步骤:
按照如下公式计算所述输出神经元:
Figure BDA0001880894390000221
其中,T为输入神经元的数量,Nout为输出神经元,N1in(i)是第i个输入神经元的重要比特位,N2in(i)表示第i个输入神经元的非重要比特位,W1(i)为第i个权值的重要比特位,W2(i)为第i个权值的非重要比特位,Nin(i)表示第i个输入神经元的值,W(i)表示第i个权值的值,Nin(i)=N1in(i)+N2in(i)且W(i)=W1(i)+W2(i);
优先计算Nout中的
Figure BDA0001880894390000222
并将
Figure BDA0001880894390000223
作为所述第一运算结果。
在一种可行的实施例中,在所述若所述第一运算结果小于或等于预设阈值,则跳过所述输出神经元的运算;若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元方面,可包括如下步骤:
Figure BDA0001880894390000224
小于或等于所述预设阈值,则跳过当前输出神经元的运算;
Figure BDA0001880894390000225
大于所述预设阈值,则继续运算Nout,并输出最终的Nout
需要说明的是,图14所示的方法的各个步骤的具体实现过程可参见上述计算装置的具体实现过程,在此不再叙述。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本发明实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以采用硬件的形式实现。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。

Claims (22)

1.一种计算装置,其特征在于,所述计算装置用于执行神经网络运算;所述计算装置包括:运算单元、控制器单元以及存储单元;
所述存储单元,用于存储权值和输入神经元,所述权值包括重要比特位和非重要比特位;
所述控制器单元,用于获取所述权值的重要比特位和非重要比特位,以及所述输入神经元,并将所述权值的重要比特位和非重要比特位、所述输入神经元传输给所述运算单元;
所述运算单元,用于将所述输入神经元和所述重要比特位进行运算,得到输出神经元的第一运算结果;
以及若所述第一运算结果小于或等于预设阈值,则跳过当前输出神经元的运算;
若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元。
2.根据权利要求1所述的计算装置,其特征在于,若所述输入神经元以Nin表示,该输入神经元包括n个比特位,其中,n1个比特位为重要比特位和n2个非重要比特位,若n1个比特位对应的值以N1in表示,该n2个比特位对应的值以N2in表示,则n1+n2=n,Nin=N1in+N2in,n为正整数,n1为自然数且小于n。
3.根据权利要求1或2所述的计算装置,其特征在于,若所述权值以W表示,该权值包括w个比特位,其中,w1个比特位为重要比特位和w2个非重要比特位,若该w1个比特位对应的值以W1表示,该w2个比特位对应的值为W2表示,则w1+w2=w,W=W1+W2,w为正整数,w1为自然数且小于w。
4.根据权利要求3所述的计算装置,其特征在于,在所述输入神经元为多个时,所述运算单元包括多个乘法器和至少一个加法器;
所述多个乘法器和所述至少一个加法器,用于按照如下公式计算所述输出神经元:
Figure FDA0001880894380000021
其中,T为输入神经元的数量,Nout为输出神经元,N1in(i)是第i个输入神经元的重要比特位,N2in(i)表示第i个输入神经元的非重要比特位,W1(i)为第i个权值的重要比特位,W2(i)为第i个权值的非重要比特位,Nin(i)表示第i个输入神经元的值,W(i)表示第i个权值的值,Nin(i)=N1in(i)+N2in(i)且W(i)=W1(i)+W2(i);
优先计算Nout中的
Figure FDA0001880894380000022
并将
Figure FDA0001880894380000023
作为所述第一运算结果。
5.根据权利要求4所述的计算装置,其特征在于,所述运算单元还包括比较器,所述运算单元具体用于:
在所述比较器的比较结果为所述第一运算结果小于或等于预设阈值时,则跳过所述输出神经元的运算;若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元方面,所述运算单元具体用于:
Figure FDA0001880894380000024
小于或等于所述预设阈值,则跳过当前输出神经元的运算;
Figure FDA0001880894380000025
大于所述预设阈值,则继续运算Nout,并输出最终的Nout
6.根据权利要求1-5任一项所述的计算装置,其特征在于,
所述运算单元包括:一个主处理电路和多个从处理电路;
所述主处理电路用于将所述输入神经元拆分为多个数据块,将所述权值的重要比特位广播给所述多个从处理电路,将所述多个数据块分发给所述多个从处理电路;
所述从处理电路,用于将接收到的数据块与权重的重要比特位进行运算,得到部分结果,将所述部分结果发送给所述主处理电路;
所述主处理电路,还具体用于将接收到的所有部分结果拼接,得到所述第一运算结果。
7.根据权利要求6所述的计算装置,其特征在于,所述运算单元还包括一个或多个分支处理电路,每个分支处理电路连接至少一个从处理电路,
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、广播数据以及运算指令。
8.根据权利要求6或7所述的计算装置,其特征在于,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的p个从处理电路、第q行的p个从处理电路以及第1列的q个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于确定所述输入神经元为分发数据,权值的重要比特位为广播数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据。
9.根据权利要求6-8任意一项所述的装置,其特征在于,所述主处理电路包括:激活处理电路、加法处理电路中的一种或任意组合。
10.根据权利要求6-9任一项所述的计算装置,其特征在于,所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
11.根据权利要求9所述的计算装置,其特征在于,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算。
12.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求1-11任一项所述的计算装置,用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述计算装置共享同一控制***或拥有各自的控制***;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
13.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求12所述的机器学习运算装置,通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
14.根据权利要求13所述的组合处理装置,其特征在于,还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
15.一种神经网络芯片,其特征在于,所述机器学习芯片包括如权利要求12所述的机器学习运算装置或如权利要求13所述的组合处理装置或如权利要求14所述的组合处理装置。
16.一种电子设备,其特征在于,所述电子设备包括如所述权利要求15所述的芯片。
17.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求15所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
18.一种计算方法,其特征在于,包括:
获取权值的重要比特位和非重要比特位,以及输入神经元;
将所述输入神经元和所述重要比特位进行运算,得到输出神经元的第一运算结果;
若所述第一运算结果小于或等于预设阈值,则跳过当前输出神经元的运算;
若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元。
19.根据权利要求18所述的方法,其特征在于,若所述输入神经元以Nin表示,该输入神经元包括n个比特位,其中,n1个比特位为重要比特位和n2个非重要比特位,若n1个比特位对应的值以N1in表示,该n2个比特位对应的值以N2in表示,则n1+n2=n,Nin=N1in+N2in,n为正整数,n1为自然数且小于n。
20.根据权利要求18或19所述的方法,其特征在于,若所述权值以W表示,该权值包括w个比特位,其中,w1个比特位为重要比特位和w2个非重要比特位,若该w1个比特位对应的值以W1表示,该w2个比特位对应的值为W2表示,则w1+w2=w,W=W1+W2,w为正整数,w1为自然数且小于w。
21.根据权利要求20所述的方法,其特征在于,在所述输入神经元为多个时,包括:
按照如下公式计算所述输出神经元:
Figure FDA0001880894380000051
其中,T为输入神经元的数量,Nout为输出神经元,N1in(i)是第i个输入神经元的重要比特位,N2in(i)表示第i个输入神经元的非重要比特位,W1(i)为第i个权值的重要比特位,W2(i)为第i个权值的非重要比特位,Nin(i)表示第i个输入神经元的值,W(i)表示第i个权值的值,Nin(i)=N1in(i)+N2in(i)且W(i)=W1(i)+W2(i);
优先计算Nout中的
Figure FDA0001880894380000061
并将
Figure FDA0001880894380000062
作为所述第一运算结果。
22.根据权利要求21所述的方法,其特征在于,在所述若所述第一运算结果小于或等于预设阈值,则跳过所述输出神经元的运算;若所述第一运算结果大于所述预设阈值,则将所述输入神经元与所述非重要比特位之间进行运算,得到第二运算结果,将所述第一运算结果与所述第二运算结果之和作为输出神经元方面,包括:
Figure FDA0001880894380000063
小于或等于所述预设阈值,则跳过当前输出神经元的运算;
Figure FDA0001880894380000064
大于所述预设阈值,则继续运算Nout,并输出最终的Nout
CN201811424173.0A 2018-10-12 2018-11-27 计算装置、计算方法及相关产品 Active CN111222632B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811424173.0A CN111222632B (zh) 2018-11-27 2018-11-27 计算装置、计算方法及相关产品
PCT/CN2019/109552 WO2020073874A1 (zh) 2018-10-12 2019-09-30 机器学习运算的分配***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811424173.0A CN111222632B (zh) 2018-11-27 2018-11-27 计算装置、计算方法及相关产品

Publications (2)

Publication Number Publication Date
CN111222632A true CN111222632A (zh) 2020-06-02
CN111222632B CN111222632B (zh) 2023-06-30

Family

ID=70830353

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811424173.0A Active CN111222632B (zh) 2018-10-12 2018-11-27 计算装置、计算方法及相关产品

Country Status (1)

Country Link
CN (1) CN111222632B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524175A (en) * 1992-10-29 1996-06-04 Hitachi, Ltd. Neuro-computer system for executing a plurality of controlling algorithms
CN106991477A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种人工神经网络压缩编码装置和方法
US20170277628A1 (en) * 2016-03-24 2017-09-28 Somnath Paul Technologies for memory management of neural networks with sparse connectivity
WO2017185335A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行batch normalization运算的装置和方法
WO2017185418A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
WO2018058427A1 (zh) * 2016-09-29 2018-04-05 北京中科寒武纪科技有限公司 神经网络运算装置及方法
WO2018112892A1 (zh) * 2016-12-23 2018-06-28 北京中科寒武纪科技有限公司 一种支持快速人工神经网络运算的装置及方法
WO2018112699A1 (zh) * 2016-12-19 2018-06-28 上海寒武纪信息科技有限公司 人工神经网络反向训练装置和方法
WO2018121118A1 (zh) * 2016-12-26 2018-07-05 上海寒武纪信息科技有限公司 计算装置和方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524175A (en) * 1992-10-29 1996-06-04 Hitachi, Ltd. Neuro-computer system for executing a plurality of controlling algorithms
CN106991477A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种人工神经网络压缩编码装置和方法
CN108427990A (zh) * 2016-01-20 2018-08-21 北京中科寒武纪科技有限公司 神经网络计算***和方法
US20170277628A1 (en) * 2016-03-24 2017-09-28 Somnath Paul Technologies for memory management of neural networks with sparse connectivity
WO2017185335A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行batch normalization运算的装置和方法
WO2017185418A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
WO2018058427A1 (zh) * 2016-09-29 2018-04-05 北京中科寒武纪科技有限公司 神经网络运算装置及方法
WO2018112699A1 (zh) * 2016-12-19 2018-06-28 上海寒武纪信息科技有限公司 人工神经网络反向训练装置和方法
WO2018112892A1 (zh) * 2016-12-23 2018-06-28 北京中科寒武纪科技有限公司 一种支持快速人工神经网络运算的装置及方法
WO2018121118A1 (zh) * 2016-12-26 2018-07-05 上海寒武纪信息科技有限公司 计算装置和方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
周伟雄,靳东明,***: "模拟神经元电路实现研究现状与进展", no. 03 *
石争浩,冯亚宁,张遂南,黄士坦: "基于HPI的神经网络图像匹配多处理机***", no. 11 *

Also Published As

Publication number Publication date
CN111222632B (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
CN109543832B (zh) 一种计算装置及板卡
CN109522052B (zh) 一种计算装置及板卡
WO2019218896A1 (zh) 计算方法以及相关产品
CN110163363B (zh) 一种计算装置及方法
CN109685201B (zh) 运算方法、装置及相关产品
CN110059797B (zh) 一种计算装置及相关产品
CN111045728B (zh) 一种计算装置及相关产品
CN111047022A (zh) 一种计算装置及相关产品
CN111488976A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN110059809B (zh) 一种计算装置及相关产品
CN111930681A (zh) 一种计算装置及相关产品
CN111488963A (zh) 神经网络计算装置和方法
CN111079908A (zh) 片上网络数据处理方法、存储介质、计算机设备和装置
CN111368967B (zh) 一种神经网络计算装置和方法
CN109740730B (zh) 运算方法、装置及相关产品
CN111047021A (zh) 一种计算装置及相关产品
CN111178492A (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
CN111198714B (zh) 重训练方法及相关产品
CN111368987B (zh) 一种神经网络计算装置和方法
CN111368986B (zh) 一种神经网络计算装置和方法
CN111368990B (zh) 一种神经网络计算装置和方法
CN111367567B (zh) 一种神经网络计算装置和方法
CN111078625B (zh) 片上网络处理***和片上网络数据处理方法
CN111078623B (zh) 片上网络处理***和片上网络数据处理方法
CN111078624B (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