CN110490317B - 神经网络运算装置及运算方法 - Google Patents

神经网络运算装置及运算方法 Download PDF

Info

Publication number
CN110490317B
CN110490317B CN201910985467.9A CN201910985467A CN110490317B CN 110490317 B CN110490317 B CN 110490317B CN 201910985467 A CN201910985467 A CN 201910985467A CN 110490317 B CN110490317 B CN 110490317B
Authority
CN
China
Prior art keywords
processing circuit
circuit
neural network
vector
data
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
CN201910985467.9A
Other languages
English (en)
Other versions
CN110490317A (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 CN201910985467.9A priority Critical patent/CN110490317B/zh
Publication of CN110490317A publication Critical patent/CN110490317A/zh
Application granted granted Critical
Publication of CN110490317B publication Critical patent/CN110490317B/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

Abstract

本申请涉及一种神经网络运算装置和运算方法,可以选择将同一所述处理电路中的向量子单元的运算结果进行不同的处理。这可以使得神经网络运算过程中得到的向量子单元得到的运算结果可以有更多元的后续处理方式,进而很好的利用神经网络训练阶段的数据稀疏性,大大减少神经网络的运算量,提高运算速度。

Description

神经网络运算装置及运算方法
技术领域
本申请涉及处理器技术领域,特别是涉及一种神经网络运算装置及运算方法。
背景技术
深度神经网络是目前许多人工智能应用的基础,其在语音识别、图像处理、数据分析、广告推荐系统、汽车自动驾驶等多方面得到了突破性的应用,使得深度神经网络被应用在了生活的各个方面。但是,巨大运算量一直制约着深度神经网络的更快速的发展和更广泛的应用。
深度神经网络的运算主要包括两部分,前向传播和后向传递。然而传统的加速器大多可以较好的支持神经网络的前向传播过程的数据运算,但是在后向传递过程的数据运算上表现并不理想。
发明内容
基于此,有必要针对上述技术问题,提供一种能够利用神经网络训练阶段的数据稀疏性,提高运算速度的神经网络运算装置及运算方法。
一种神经网络运算装置,包括:控制电路、至少一个处理电路和映射处理电路,其中,所述处理电路包括多个向量子单元,
所述控制电路用于向各个处理电路的向量子单元发送计算指令,向所述映射处理电路发送映射指令;
所述向量子单元,用于根据所述计算指令对待运算数据执行数据运算;
所述映射处理电路,用于根据所述映射指令将同一所述处理电路中的向量子单元的运算结果选择发送至一个或多个后续处理电路,所述后续处理电路用于根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果。
在其中一个可选地实施例中,所述映射处理电路具体用于当所述神经网络运算装置用于处理前向传播运算时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路。
在其中一个可选地实施例中,所述映射处理电路具体用于根据所述映射指令选择将同一所述处理电路中的向量子单元的运算结果发送至同一后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路。
在其中一个可选地实施例中,所述映射处理电路具体用于当所述神经网络运算装置用于处理反向传播的运算时,选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路。
在其中一个可选地实施例中,所述映射处理电路具体用于根据所述映射指令选择将同一所述处理电路中不同向量子单元的运算结果分别发送至不同的后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路。
在其中一个可选地实施例中,所述处理电路还包括:突触缓存,所述突触缓存与各个所述向量子单元连接,所述突触缓存用于存储权值,
所述向量子单元,还用于接收所述控制电路的I/O指令,并根据所述I/O指令从所述突触缓存中提取所述权值进行数据运算,所述权值为一种所述待运算数据。
在其中一个可选地实施例中,所述处理电路还包括:索引电路以及索引缓存,所述索引缓存连接所述索引电路,所述索引电路连接所述向量子单元,
所述索引缓存用于存储权值索引;
所述索引电路用于接收所述控制电路的I/O指令,并根据所述I/O指令从所述索引缓存中提取所述权值索引,并基于所述权值索引从输入神经元中选择有效神经元,将所述有效神经元作为待运算数据发送至所述向量子单元进行数据运算。
在其中一个可选地实施例中,所述运算装置还包括:神经元缓存,所述神经元缓存连接所述索引电路,
所述神经元缓存用于存储输入神经元和/或梯度,所述索引电路用于从所述神经元缓存中获取所述输入神经元,以基于所述权值索引从所述输入神经元中选择所述有效神经元。
在其中一个可选地实施例中,所述装置还包括梯度缓存,和选择电路,所述选择电路连接所述梯度缓存和所述向量子元,
所述梯度缓存用于存储输出神经元和/或梯度;
所述选择电路用于接收所述控制电路的I/O指令,并根据所述I/O指令从所述梯度缓存中读取所述输出神经元梯度,根据所述控制电路的压缩指令以及预设梯度阈值从读取的所述梯度中选择有效梯度,将所述有效梯度作为所述待运算数据发送至向量子单元进行数据运算。
在其中一个可选地实施例中,所述处理电路还包括:编码电路,所述编码电路连接所述控制电路,
在神经网络的训练阶段的剪枝时,所述编码电路根据所述控制电路的编码指令将所述权值从高稀疏模式压缩到低稀疏模式,以进行所述神经网络的剪枝。
在其中一个可选地实施例中,所述装置还包括解码电路,所述解码电路连接所述索引缓存,所述解码电路用于从所述索引缓存中获取权值索引,并根据所述权值索引解码稀疏模式的权值得到稠密格式的权值,将所述稠密格式的权值作为待运算数据发送至所述向量子单元进行数据运算。
在其中一个可选地实施例中,所述向量子单元包含乘法器和加法器,
所述乘法器用于在训练阶段的前向传播、后向传递的反向传播以及后向传递的梯度更新阶段,根据所述控制电路的计算指令执行乘法运算;
所述加法器用于在所述训练阶段的后向传递的梯度更新阶段,根据所述控制电路的计算指令执行加法运算。
在其中一个可选地实施例中,所述向量子单元的输入端连接一比较器,所述比较器用于根据预设阈值筛选所述待运算数据,并将筛选后的待运算数据发送至所述向量子单元进行数据运算。
在其中一个可选地实施例中,所述后续处理电路包括:加法树和算术逻辑单元ALU,所述加法树的输入端连接所述映射处理电路,所述ALU连接所述加法树的输出端,
所述加法树用于根据控制电路的计算指令对接收的所述向量子单元的运算结果进行加和运算,得到加和结果;
所述ALU用于根据所述控制电路的计算指令对所述加和结果进行后续操作和非线性运算。
一种机器学习运算装置,所述机器学习运算装置包括一个或多个本申请任一实施例中所述的神经网络运算装置,用于从其他处理装置中获取输入神经元和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给外围设备;
当所述机器学习运算装置包含多个神经网络运算装置时,所述多个神经网络运算装置间通过快速外围设备互连总线PCIE总线进行互联并传输数据;多个神经网络运算装置共享同一控制系统或拥有各自的控制系统;多个所述神经网络运算装置的互联方式是任意互联拓扑。
一种组合处理装置,所述组合处理装置包括上述的机器学习运算装置,通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置通过所述通用互联接口通信,所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
一种神经网络芯片,所述神经网络芯片包括上述的机器学习运算装置或上述的组合处理装置。
一种电子设备,所述电子设备包括上述的神经网络芯片。
一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及任一实施例中所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述神经网络芯片与外围设备之间的数据传输;
所述控制器件,用于对所述神经网络芯片的状态进行监控。
在其中一个可选地实施例中,所述的板卡,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述神经网络芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述神经网络芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
一种神经网络运算方法,应用于本申请任一实施例所述的神经网络运算装置,所述方法包括:
处理电路的多个向量子单元根据控制电路的计算指令对接收的待运算数据进行数据运算;
映射处理电路根据所述映射指令将同一所述处理电路中的向量子单元的运算结果选择发送至一个或多个后续处理电路;
后续处理电路根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果。
在其中一个可选地实施例中,所述映射处理电路根据所述映射指令将同一所述处理电路中的向量子单元的运算结果选择发送至一个或多个后续处理电路,所述后续处理电路用于根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果,包括:
当所述神经网络运算装置用于处理前向传播运算时,映射处理电路选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路。
在其中一个可选地实施例中,所述当所述神经网络运算装置用于处理前向传播运算时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,包括:
映射处理电路根据所述映射指令选择将同一所述处理电路中的向量子单元的运算结果发送至同一后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路。
在其中一个可选地实施例中,所述映射处理电路根据所述映射指令将同一所述处理电路中的向量子单元的运算结果选择发送至一个或多个后续处理电路,所述后续处理电路用于根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果,包括:
当所述神经网络运算装置用于处理反向传播运算时,所述映射处理电路选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路。
在其中一个可选地实施例中,所述当所述神经网络运算装置用于处理前向传播运算时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,包括:
映射处理电路根据所述映射指令选择将同一所述处理电路中不同向量子单元的运算结果分别发送至不同的后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路。
在其中一个可选地实施例中,所述方法还包括:
向量子单元根据所述控制电路的I/O指令从突触缓存中提取权值,并将所述权值作为所述待运算数据进行数据运算。
在其中一个可选地实施例中,所述方法还包括:
索引电路接收所述控制电路的I/O指令,并根据所述I/O指令从索引缓存中提取所述权值索引,并基于所述权值索引从输入神经元中选择有效神经元,将所述有效神经元作为所待运算数据发送至对应的所述向量子单元进行数据运算。
在其中一个可选地实施例中,所述方法还包括:
选择电路根据所述控制电路的压缩指令以及预设梯度阈值选择有效梯度,将所述有效梯度作为所述待运算数据发送至对应的所述向量子单元进行数据运算。
在其中一个可选地实施例中,所述方法还包括:
在神经网络的训练阶段的剪枝时,所述编码电路根据所述控制电路的编码指令将所述权值从高稀疏模式压缩到低稀疏模式,以进行所述神经网络的剪枝。
在其中一个可选地实施例中,所述方法还包括:
解码电路从所述索引缓存中获取权值索引,并根据所述权值索引解码稀疏模式的权值得到稠密格式的权值,将所述稠密格式的权值作为所述待运算数据发送至对应的所述向量子单元进行数据运算。
在其中一个可选地实施例中,所述处理电路的多个向量子单元根据控制电路的计算指令对接收的待运算数据进行数据运算包括:
控制电路在前向传播、反向传播的阶段,控制所述向量子单元执行乘法运算;
控制电路在梯度更新阶段,控制所述向量子单元执行加法运算。
在其中一个可选地实施例中,所述后续处理电路根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果,包括:
所述加法树根据控制电路的计算指令对接收的所述向量子单元的运算结果进行加和运算,得到加和结果;和/或,
所述ALU根据所述控制电路的计算指令对所述加和结果进行后续操作和非线性运算。
上述神经网络运算装置和运算方法,可以选择将同一所述处理电路中的向量子单元的运算结果发送至同一后续处理电路,或者将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路。这可以使得神经网络运算过程中得到的向量子单元得到的运算结果可以有更多元的后续处理方式,进而很好的利用神经网络训练阶段的数据稀疏性,大大减少神经网络的运算量,提高运算速度。
附图说明
图1为一个实施例中神经网络运算装置的结构框图;
图2为一个实施例中映射处理电路的两种模式示意图;
图3为另一个实施例中神经网络运算装置的结构框图;
图4为另一个实施例中索引电路工作示意图;
图5为另一个实施例中神经网络运算装置的结构框图;
图6为另一个实施例中压缩编码电路工作示意图;
图7a为一个实施例中全连接层的稀疏数据流;
图7b为一个实施例中全连接层的稀疏数据流;
图7c为一个实施例中全连接层的稀疏数据流;
图8为一个实施例中前向传播过程的数据流向的示意图;
图9为一个实施例中后向传递过程的传播阶段的数据流向的示意图;
图10为一个实施例中后向传递过程的梯度更新阶段的数据流向的示意图;
图11为一个实施例中实施例中组合处理装置的结构框图;
图12为另一个实施例中实施例中组合处理装置的结构框图;
图13为一个实施例中实施例中板卡的结构框图;
图14为一个实施例中神经网络运算方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在其中一个实施例中,如图1所示,提出了一种神经网络运算装置10,该装置包括:控制电路(图中未示出)、至少一个处理电路(PE)100和映射处理电路(Mapping Module)200。其中,所述处理电路100包括多个向量子单元(V)。
具体地,所述控制电路用于向各个处理电路的向量子单元发送计算指令,向所述映射处理电路发送映射指令。该处理电路100中的向量子单元(V),用于根据所述计算指令对待运算数据执行数据运算。
具体地,该映射处理电路200可以根据所述映射指令将同一所述处理电路中的向量子单元的运算结果选择发送至一个或多个后续处理电路。
在实际应用时映射处理电路200可以根据运算需求,选择向量子单元的运算结果发送至目标后续处理单元,执行需要的后续操作,进而通过目标后续处理单元执行运算得到期望的运算结果。
映射处理电路200可以根据预设条件选择不同的映射模式,映射模式包括但不限于一对一模式和交叉模式。
具体地,映射处理电路200在一对一模式下选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路。进一步地,在一对一模式,可以设置处理电路与后续处理电路一一对应,即在该模式下,映射处理电路200选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路。一般情况下,对于有m个处理电路100的神经网络运算装置,每个处理电路100里面有n个向量子单元,需要有t(t =max(m,n))个t输入的后续处理电路用以充分且高效地支持上述两种模式。
映射处理电路200在交叉模式下选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路。进一步地,在交叉模式,映射处理电路200选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路。即在交叉模式下,每个后续处理电路能够接收每个处理电路100的预设向量子单元(该预设向量子单元可以是预设位置的向量子单元)的运算结果(输出)。
下面以两个处理电路(PE0,PE1)和两个后续处理电路(X0,X1)为例来说明映射处理电路的不同映射模式。
如图2所示,两个处理电路PE0和PE1均包含两个向量子单元。PE0包含向量子单元V0,V1;PE1包含向量子单元V2,V3
一对一模式下,映射处理电路200选择将向量子单元V0和V1的运算结果均发送至后续处理电路X0,选择将向量子单元V2和V3的运算结果均发送至后续处理电路X1
交叉模式下,映射处理电路200选择将向量子单元V0与向量子单元V2的运算结果(输出)发送给后续处理电路X0;映射处理电路200控制向量子单元V1与向量子单元V3的运算结果(输出)发送给后续处理电路X1
在其中一个实施例中,映射处理电路的预设条件可以为:在处理神经网络训练阶段的前向传播阶段的运算时,选择一对一模式。在处理神经网络训练阶段的反向传播阶段的运算时,选择交叉模式。可选地,在处理神经网络训练阶段的梯度更新阶段的运算时,若权值更新的方法比较复杂,需通过拆分步骤完成权值更新,该拆分的步骤若需要将向量子单元的运算结果进一步做后续处理,则可以通过映射处理电路200有目的控制向量子单元的运算结果发送至后续处理电路的过程,以尽快完成期望的后续运算,高效的得到期望的运算结果。
例如,AdaGrad算法(一种深度学习优化函数)的权值更新的过程较为复杂,其计算公式为:
Figure 393477DEST_PATH_IMAGE001
可以通过拆分步骤的方式完成AaGrad算法的权值更新过程,该过程涉及映射处理电路选择使用一对一模式。
具体地,首先计算并存储当前的权值更新量;而后,重新载入并在处理电路中求得各权值更新量的平方值,即;之后,映射处理电路在一对一模式下选择将各个向量子单元将得到的传递给后续处理电路中的加法树,利用加法树完成权值更新量平方值()的加和;最后,将加和结果发送给后续处理电路中的算术逻辑单元ALU(arithmetic and logicunit),ALU完成非线性运算,得到更新权值的权值更新参数
Figure 166261DEST_PATH_IMAGE002
,并将该权值更新参数发送给对应的处理电路完成对当前权值的更新操作。
本实施例中的神经网络运算装置,根据预设条件选择将同一所述处理电路中的向量子单元的运算结果发送至同一后续处理电路,或者将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路。这可以使得神经网络运算过程中得到的向量子单元得到的运算结果可以有更多元的后续处理方式,进而很好的利用神经网络训练阶段的数据稀疏性,大大减少神经网络的运算量,提高运算速度。
本申请神经网络运算装置10的控制电路可以平衡神经网络运算中的训练和推理。在其中一个实施例中,针对该控制电路,还提出了对应的VLIW型的指令以及一个基于库的编程模型来支持神经网络训练阶段具有稀疏性的数据的运算。具体地,这个库是特定的基于张量的库,其由高级语言(如C/C++等)常见的元素和运算操作来作为功能接口。不同类型层的前向阶段和训练阶段可以概括为高层级的功能,从而可以由用户直接调用。除了考虑灵活性之外,该库还可以通过语序相对低层级的功能(如向量乘法)来完成用户定义的函数。通过内置的编译器编译并且优化原始代码,生成高效的指令。更具体地,首先定义神经网络模型,并创建一个神经网络描述文件,并且随机生成初始权值或者用户定义的权值作为数据文件,而后结合输入数据,这些文件被发送给编程模型中,从而生成相应的代码,来完成稠密的推理或训练、稀疏的推理或训练。
可选地,如图3所示,神经网络运算装置可以包含后续处理电路300,用于根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果。可选地,该后续处理电300可以包括加法树(AT)310和/或ALU 320。加法树310用于根据控制电路的计算指令对接收的所述向量子单元的运算结果进行加和运算,得到加和结果;所述ALU 320用于根据控制电路的计算指令对所述加和结果进行后续操作和非线性运算。例如进行激活层的激活函数运算,池化层的取最大值/平均值操作等。需要说明的是,ALU阶段可以被跳过,因此,该装置可以能够灵活支持运算操作。
在其中一个实施例中,请继续参见图3,每一处理电路100还可以包含突触缓存(SB),该突触缓存与各个所述向量子单元连接,所述突触缓存用于存储权值。
处理电路的向量子单元,还用于接收所述控制电路的I/O指令,并根据所述I/O指令从所述突触缓存(SB)中提取所述权值进行数据运算,所述权值为一种所述待运算数据。
在其中一个实施例中,请继续参见图3,每一处理电路100还可以包含索引电路(IM)以及索引缓存(INB),索引缓存连接索引电路(IM),所述索引电路连接所述向量子单元,所述索引缓存(INB)用于存储权值索引;所述索引电路(IM)用于从所述索引缓存中获取权值索引,并基于所述权值索引从输入神经元中选择有效神经元,将所述有效神经元作为待运算数据发送至所述向量子单元进行数据运算。有效神经元可以为神经网络训练阶段的前向传播阶段的需进行运算的输入神经元。
图4为索引电路基于权值索引选择有效神经元的示意图。具体地,图4的过程可以选择出索引值为“1”的输入神经元。
在其中一个实施例中,神经网络处理装置的每一处理电路上均设置私有的突触缓存和/或索引缓存,这能够提供私有的连接,不同处理电路间的突触缓存、索引缓存是相对独立的,从而能够减轻网络冲突;而且,相比于全局共享的突触缓存、索引缓存,私有的突触缓存、索引缓存能够避免由突触缓存、索引缓存和处理电路之间的不平衡的延迟所引起的较长的关键路径。
在其中一个实施例中,如图5所示,神经网络运算装置10还包括神经元缓存(NB),所述神经元缓存连接所述索引电路。该神经元缓存(NB)用于存储输入神经元和/或梯度。所述索引电路(IM)可以用于从所述神经元缓存中获取所述输入神经元,以基于所述权值索引从所述输入神经元中选择所述有效神经元。
在其中一个实施例中,继续参见图5,神经网络运算装置10还包括:梯度缓存(GB)和选择电路(SM),所述选择电路(SM)连接所述梯度缓存(GB)和所述向量子元,该梯度缓存(GB)用于存储输出神经元和/或梯度。
选择电路(SM)用于接收所述控制电路的I/O指令,并根据所述I/O指令从所述梯度缓存中读取所述输出神经元梯度,根据所述控制电路的压缩指令以及预设梯度阈值从读取的所述梯度中选择有效梯度,将所述有效梯度作为所述待运算数据发送至向量子单元进行数据运算。
具体地,选择电路(SM)可以将神经元与梯度阈值进行比较,得到每个神经元的标志位,其中,每个标志位表示对应的神经元是否无用,预设神经元无用用“0”表示,否则用“1”表示。如图6所示为一个提高输入神经元稀疏性的示例,选择电路将输入神经元与输入阈值(针对输入神经元设置的梯度阈值该输入阈值可以为零值)进行比较,得到输入神经元的标志位,其中,每个标志位表示对应的输入神经元是否无用,预设输入神经元无用用“0”表示,否则用“1”表示。需要说明的是,可以根据需求将梯度阈值设置为大于0的数值,该设置可以跳过更多的计算,进一步提高神经网络中神经元和/或梯度的稀疏性。因此,该选择电路(SM)可以用于在神经网络训练阶段的反向传播或梯度更新时,提高神经元梯度的稀疏性。
在其中一个实施例中,继续参见图5,神经网络运算装置10还包括:编码电路(EM),所述编码电路连接所述控制电路,在神经网络的训练阶段的剪枝时,所述编码电路根据所述控制电路的编码指令将所述权值从高稀疏模式压缩到低稀疏模式,以进行所述神经网络的剪枝。这种操作对于训练阶段通过迭代剪枝从稠密神经网络转换到稀疏神经网络是重要的,但是该操作很少执行,因通常情况下编码电路在每次剪枝阶段才会被激活。
在其中一个实施例中,继续参见图5,上述神经网络运算装置在每一处理电路中还设置了解码电路(DM),解码电路(DM)连接所述索引缓存(INB)。
所述解码电路(DM)用于从所述索引缓存(INB)中获取权值索引,并根据所述权值索引解码稀疏模式的权值得到稠密格式的权值,将所述稠密格式的权值作为待运算数据发送至所述向量子单元进行数据运算。
由于输入神经元和/或梯度与输出神经元和/或梯度被分别用于不同神经网络的训练阶段的计算,本申请实施例的神经网络运算装置将将输入神经元和/或梯度与输出神经元和/或梯度分别存储,利于神经网络运算装置充分利用这些数据的数据特性和访存特征,分阶段使用这些数据。
进一步地,神经网络运算装置10还包括直接内存存取DMA(Direct MemoryAccess),用于处理片上存储和片下存储之间的数据交换。
通过权衡可扩展性、性能和能耗开销,在考虑了不同的缓存规模之后,本申请中的神经网络运算装置设置的片上存储(神经元缓存、梯度缓存、突出缓存以及索引缓存)分别采用如下规模:神经元缓存(NB)为32 KB,梯度缓存(GB)为32 KB。并设置了对应与处理电路个数(32个)的突出缓存和索引缓存,每组突出缓存以及索引缓存8 KB。通过实践证明,该方案选择了一个较小的缓存规模较佳的数据替换策略,可以对不同类型的数据在片上的缓存进行数据重用,进一步提高了片上数据利用率。
在其中一个实施例中,继续参见图3,每个向量子单元(V)包含乘法器和加法器,所述乘法器用于在训练阶段的前向传播、后向传递的反向传播以及后向传递的梯度更新阶段,根据所述控制电路的计算指令执行乘法运算,所述加法器用于在所述训练阶段的后向传递的梯度更新阶段,根据所述控制电路的计算指令根据预设信号执行加法运算。可选地,向量子单元(V)在执行运算时加法器可以被跳过,即向量子单元可以只完成乘法运算,不进行局部累加。因此,向量子单元(V)可以完成逐元素乘法和乘法-累加运算。
可选地,向量子单元的输入端连接一比较器,所述比较器用于根据预设阈值筛选所述待运算数据,并将筛选后的待运算数据发送至所述向量子单元进行数据运算。例如,该设置可以选择输入值为零时不进行运算。该设置在后向传递的梯度更新阶段可能会被应用。
本申请的神经网络运算装置可以高效的完成神经网络涉及的六种基本向量运算。这六种基本向量运算可以基本涵盖现有的神经网络层的运算。具体地,神经网络的前向传播过程会涉及(1)、(2)和(6)的运算;后向传递的反向传播阶段会涉及(3)、(4)和(6)的运算,后向传递的梯度更新阶段会涉及(5)和(6)的运算。六种向量运算表示如下:
Figure 503701DEST_PATH_IMAGE003
其中,i表示第m对数据的第i个向量,j表示在一个向量中第j个元素,x表示一个输入,f标识一些不可避免的“琐碎”运算,例如乘法、指数、随机数生成等,.*表述n输入的逐元素乘法。
下面以两个向量输入A0,……,Am-1和B0,……,Bm-1为例说明上述神经网络运算装置完成六种基本向量运算的过程。
关于运算(1)
Figure 209489DEST_PATH_IMAGE004
的运算过程如下:每个处理电路接收A和B的n个维度的数据,发送给n个向量子单元;向量子单元完成乘法运算后,发送给映射处理电路;映射处理电路采用一对一模式传递向量子单元的运算结果给加法树完成加和操作;直到得到C后,进行存储。
关于运算(2)
Figure 872552DEST_PATH_IMAGE005
的运算过程如下:与
Figure 663790DEST_PATH_IMAGE006
的运算过程类似,只是在加和运算完毕后,需送入ALU中进行非线性运算(如激活运算),得到C,进行存储。
关于运算(3)
Figure 592870DEST_PATH_IMAGE007
的运算过程如下:每个处理电路接收C的n个维度所对应的A和B,发送给n个向量子单元;向量子单元完成乘法-累加操作,直到得到C后,进行存储。
关于运算(4)
Figure 684323DEST_PATH_IMAGE008
的运算过程如下:与
Figure 252707DEST_PATH_IMAGE009
的操作类似,只是在得到累加结果后,需送入ALU,进行非线性运算后得到C进行存储。
关于运算(5)
Figure 84DEST_PATH_IMAGE010
的运算过程如下:每个PE接收C的n个维度所对应的A和B,发送给n个向量子单元;向量子单元完成乘法-累加操作,得到C后,进行存储。
关于运算(6)
Figure 413747DEST_PATH_IMAGE011
的运算过程如下:读取A的信息,发送给ALU,完成非线性运算,得到C后,进行存储。
由于上述6中基本的向量运算可以涵盖了神经网络的运算,因此,本申请中的神经网络运算装置可以基本实现神经网络的各种运算,适用范围广。
如图7a, 图7b, 图7c所示,这些图中, ni是第i个输入神经元, oj是第j个输出神经元; sij表示第i个输入神经元和第j个输出神经元之间的权值, gj是第j个输出神经元所对应的梯度值, goi是第i个输入神经元所对应的梯度值。其中, gj是已知数据, goi是待求数据,在图7a,图7b,图7c中i可以为0,1,2,3,j可以为0,1,2,3。
第一阶段,稀疏数据的前向传播,包括如下步骤:
每个PE用于执行一个单独的输出神经元的相关运算,即PE0和PE1分别用于计算输出神经元o0和o1,具体数据流向如图8所示。
具体地,从NB中获取输入神经元,并且广播给各PE。每个PE中的IM基于私有的INB中获取的稀疏权值索引和输入神经元的值,对输入神经元数据和私有的SB中的权值数据进行筛选得到所需要运算的输入神经元和权值,即在PE0中选出n1, n2,在PE1中选出n0, n3。而后,将待运算的数据发送各向量子单元。映射处理电路选择一对一模式,完成输出神经元的部分和或者最终结果。该过程涉及的运算包含前述的向量运算(1)(不带有激活函数的内积运算)和(2)(带有激活函数的内积运算)。在计算完成之后,将输出神经元送入GB中存储。
第二阶段,后向传递的传播阶段,包括如下步骤:
该过程的稀疏数据流向请参见图9。具体地,每个PE计算输入神经元的梯度值的中间结果。从GB中获取输出神经元梯度,并将该输出神经元梯度发送给SM来选出有效梯度,即大于预先设定的梯度阈值(如,零值)。筛选出的有效梯度发送给各PE,每个PE接收一个输出神经元梯度,即PE0接收g0,PE1接收g3。每个PE从各自的私有SB中获取权值,并将该权值通过DM由稀疏格式解码成稠密格式。输出神经元梯度被广播给向量子单元,完成与权值的乘法运算。映射处理电路选择交叉模式。该过程通过逐元素乘法得到输入神经元梯度的部分/最终运算结果。涉及的向量运算包含前述的运算(3)和(4)。最后NB接收运算后的输入神经元梯度。
第三阶段,后向传递的梯度更新阶段,包括如下步骤:
该过程中,一个PE用于计算同一个输出神经元所对应的权值,即PE0处理s10和s20,具体数据流向如图10所示。具体包括:从NB中获取输入神经元,并且广播给各PE。IM基于稀疏权值的索引筛选出所需要的输入神经元,如PE0得到n1, n2,PE1得到n0, n3。GB中获取输出神经元梯度,并将其发送给SM来筛选出所需要的有效的梯度值,即大于给定阈值的梯度。在PE中,每个向量子单元计算一个权值,并且基于给定的参数p来更新权值,即
Figure 562969DEST_PATH_IMAGE012
,其中,
Figure 302255DEST_PATH_IMAGE013
是给定的学习率参数。更新的权值数据在计算之后存储在对应的处理电路的SB中。
需要说明的是,对于其他的权值更新策略,本申请中的神经网络运算装置可以采用相似的方法或者增加少量的步骤来支持这些方法。例如,对于动量更新算法,其最终的权值更新量是将上一轮迭代的权值更新量乘以一个参数m加上当前计算得到的权值更新量而成。因此,对于该方法只需要在更新权值之前在增加基本步骤,即存储当前的权值更新量,载入先前的权值更新量并根据预先定义的动量参数m进行加权,而后将加权后的权值更新量与当前的权值更新量进行相加后,再用于更新权值。又如较为复杂的权值更新方法,如AdaGrad算法的权值更新的过程。该过程可以参见上文中关于AdaGrad算法的权值更新的记载,在此不再重复说明。
在其中一个实施例中还提出了一个机器学习运算装置,其包括一个或多个上述实施例中的神经网络运算装置,用于从其他处理装置中获取神经元数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当该机器学习运算装置包含一个以上神经网络运算装置时,神经网络运算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,这些神经网络运算装置可以共享同一控制系统,也可以有各自独立的控制系统。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
在另一个可选地实施例中,本申请还提出了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其他处理装置。机器学习运算装置与其他处理装置通过所述通用互联接口通信,机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。图11为组合处理装置的示意图。
其中,该其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用或专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入神经元,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储器件(存储单元/模块)中的数据并传输给其他处理装置。
可选的,如图12所示,上述组合处理装置还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其他处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还提出一种神经网络芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,提出了一种神经网络芯片封装结构,其包括了上述神经网络芯片。
在一些实施例里,提出了一种板卡,其包括了上述神经网络芯片封装结构。参阅图13,图13提供了一种板卡,上述板卡除了包括上述神经网络芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述神经网络芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述神经网络芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double DataRate SDRAM,双倍速率同步动态随机存储器,人们习惯称为DDR)。
DDR(Double Data Rate,双倍速率)不需要提高时钟频率就能加倍提高的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述神经网络芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述神经网络芯片封装结构内的神经网络芯片电连接。所述接口装置用于实现所述神经网络芯片与外围设备(例如服务器或计算机)之间的数据传输。该接口装置可以包含存储接口(Memory interface)等等。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述神经网络芯片,实现数据转移。优选的,当采用PCIE 3.0 X 16接口传输时,理论带宽可达到1(SM)0MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述神经网络芯片的计算结果仍由所述接口装置传送回外围设备(例如服务器)。
所述控制器件与所述神经网络芯片电连接。所述控制器件用于对所述神经网络芯片的状态进行监控。具体的,所述神经网络芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。所述神经网络芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述神经网络芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
基于同样的发明构思,如图14所示,本申请还提出了一种神经网络运算方法,该方法被上述的神经网络运算装置10执行,该方法包括:
步骤S101,处理电路的多个向量子单元根据控制电路的计算指令对接收的待运算数据进行数据运算。
具体地,该向量子单元包含乘法器和加法器,所述乘法器用于根据控制电路的计算指令执行乘法运算,所述加法器用于根据控制电路的计算指令执行加法运算。更具体地,控制电路在前向传播、反向传播的阶段,控制所述向量子单元执行乘法运算;控制电路在梯度更新阶段,控制所述向量子单元执行加法运算。可选地,向量子单元(V)在执行运算时加法器可以被跳过,即向量子单元可以只完成乘法运算,不进行局部累加。因此,向量子单元(V)可以完成逐元素乘法和乘法-累加运算。
可选地,向量子单元的输入端连接一比较器,所述比较器用于根据预设阈值筛选所述待运算数据,并将筛选后的待运算数据发送至所述向量子单元进行数据运算。例如,该设置可以选择输入值为零时不进行运算。该设置在后向传递的梯度更新阶段可能会被应用。
步骤S102,映射处理电路根据所述映射指令将同一所述处理电路中的向量子单元的运算结果选择发送至一个或多个后续处理电路。
具体地,在神经网络训练阶段的不同阶段,映射处理电路200可以选择不同的模式将各个向量子单元得到运算结果按照后续运算的需求发送至对应的后续处理电路。具体地,映射处理电路200可以选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路。可选地,同一所述处理电路的向量子单元共用权值。映射处理电路200可以选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路。可选地,映射处理电路200可以选择选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路。进一步地,映射处理电路200可以选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路。
例如,在进行前向传播运算时,映射处理电路选择采用到一对一模式,此时映射处理电路选择将向量子单元(V)的运算结果发送至同一后续处理电路300。进一步地,当所述神经网络运算装置用于处理前向传播运算时,映射处理电路根据所述映射指令选择将同一所述处理电路中的向量子单元的运算结果发送至同一后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路。
在进行反向传播运算时,映射处理电路选择采用到交叉模式,此时映射处理电路选择将向量子单元(V)的运算结果发送至多个后续处理电路300。进一步地,当所述神经网络运算装置用于处理反向传播运算时,映射处理电路根据所述映射指令选择将同一所述处理电路中不同向量子单元的运算结果分别发送至不同的后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路。
可选地,在神经网络的训练阶段的梯度更新运算时,若涉及的梯度更新方案较为复杂,其在被拆分的过程中也可能应用到映射处理电路配合采用合适的模式。例如,AdaGrad算法权值更新的过程可能就涉及了映射处理电路选择使用一对一模式。这些映射处理电路模式的选择,在前文中的剪枝之后的稀疏全连接层的实施例中已经记载,在此不再做详细记载。
步骤S103,后续处理电路根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果。
具体地,后续处理电路300可以包括加法树310和/或ALU 320。加法树可以根据控制电路的计算指令对接收的所述向量子单元的运算结果进行加和运算,得到加和结果;所述ALU可以根据控制电路的计算指令对所述加和结果进行后续操作和非线性运算,例如进行激活层的激活函数运算,池化层的取最大值或平均值操作等。
本实施例中的神经网络运算方法,根据预设条件选择将同一所述处理电路中的向量子单元的运算结果发送至同一后续处理电路,或者将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路。这可以使得神经网络运算过程中得到的向量子单元得到的运算结果可以有更多元的后续处理方式,这可以很好的利用神经网络训练阶段的数据稀疏性,能够大大减少神经网络的运算量,提高运算速度。
在其中一个实施例中,上述神经网络运算方法还可以包括:向量子单元根据所述控制电路的I/O指令从突触缓存中提取权值,并将所述权值作为所述待运算数据进行数据运算。
在其中一个实施例中,上述神经网络运算方法还可以包括:索引电路接收所述控制电路的I/O指令,并根据所述I/O指令从索引缓存中提取所述权值索引,并基于所述权值索引从输入神经元中选择有效神经元,将所述有效神经元作为所待运算数据发送至对应的所述向量子单元进行数据运算。
在其中一个实施例中,上述神经网络运算方法还可以包括:选择电路根据所述控制电路的压缩指令以及预设梯度阈值选择有效梯度,将所述有效梯度作为所述待运算数据发送至对应的所述向量子单元进行数据运算。
在其中一个实施例中,上述神经网络运算方法还可以包括:在神经网络的训练阶段的剪枝时,所述编码电路根据所述控制电路的编码指令将所述权值从高稀疏模式压缩到低稀疏模式,以进行所述神经网络的剪枝。
在其中一个实施例中,上述神经网络运算方法还可以包括:解码电路从所述索引缓存中获取权值索引,并根据所述权值索引解码稀疏模式的权值得到稠密格式的权值,将所述稠密格式的权值作为所述待运算数据发送至对应的所述向量子单元进行数据运算。
应该理解的是,虽然图14的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图14中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本披露各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random AccessMemory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、 高带宽内存HBM(High-Bandwidth Memory)、混合存储立方 HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (32)

1.一种神经网络运算装置,其特征在于,包括:控制电路、至少一个处理电路和映射处理电路,其中,所述处理电路包括多个向量子单元,
所述控制电路用于向各个处理电路的向量子单元发送计算指令,向所述映射处理电路发送映射指令;
所述向量子单元,用于根据所述计算指令对待运算数据执行数据运算;
所述映射处理电路在执行一对一模式时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路;在执行交叉模式时,选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路。
2.根据权利要求1所述的装置,其特征在于,所述映射处理电路具体用于当所述神经网络运算装置用于处理前向传播运算时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路。
3.根据权利要求2所述的装置,其特征在于,所述映射处理电路具体用于根据所述映射指令选择将同一所述处理电路中的向量子单元的运算结果发送至同一后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路。
4.根据权利要求1所述的装置,其特征在于,所述映射处理电路具体用于当所述神经网络运算装置用于处理反向传播的运算时,选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路。
5.根据权利要求4所述的装置,其特征在于,所述映射处理电路具体用于根据所述映射指令选择将同一所述处理电路中不同向量子单元的运算结果分别发送至不同的后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路。
6.根据权利要求1所述的装置,其特征在于,所述处理电路还包括:突触缓存,所述突触缓存与各个所述向量子单元连接,所述突触缓存用于存储权值,
所述向量子单元,还用于接收所述控制电路的I/O指令,并根据所述I/O指令从所述突触缓存中提取所述权值进行数据运算,所述权值为一种所述待运算数据。
7.根据权利要求1所述的装置,其特征在于,所述处理电路还包括:索引电路以及索引缓存,所述索引缓存连接所述索引电路,所述索引电路连接所述向量子单元,
所述索引缓存用于存储权值索引;
所述索引电路用于接收所述控制电路的I/O指令,并根据所述I/O指令从所述索引缓存中提取所述权值索引,并基于所述权值索引从输入神经元中选择有效神经元,将所述有效神经元作为待运算数据发送至所述向量子单元进行数据运算。
8.根据权利要求7所述的装置,其特征在于,所述运算装置还包括:神经元缓存,所述神经元缓存连接所述索引电路,
所述神经元缓存用于存储输入神经元和/或梯度,所述索引电路用于从所述神经元缓存中获取所述输入神经元,以基于所述权值索引从所述输入神经元中选择所述有效神经元。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括梯度缓存,和选择电路,所述选择电路连接所述梯度缓存和所述向量子单元,
所述梯度缓存用于存储输出神经元和/或梯度;
所述选择电路用于接收所述控制电路的I/O指令,并根据所述I/O指令从所述梯度缓存中读取所述输出神经元梯度,根据所述控制电路的压缩指令以及预设梯度阈值从读取的所述梯度中选择有效梯度,将所述有效梯度作为所述待运算数据发送至向量子单元进行数据运算。
10.根据权利要求9所述的装置,其特征在于,所述处理电路还包括:编码电路,所述编码电路连接所述控制电路,
在神经网络的训练阶段的剪枝时,所述编码电路根据所述控制电路的编码指令将所述权值从高稀疏模式压缩到低稀疏模式,以进行所述神经网络的剪枝。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括解码电路,所述解码电路连接所述索引缓存,所述解码电路用于从所述索引缓存中获取权值索引,并根据所述权值索引解码稀疏模式的权值得到稠密格式的权值,将所述稠密格式的权值作为待运算数据发送至所述向量子单元进行数据运算。
12.根据权利要求1至11任意一项所述的装置,其特征在于,所述向量子单元包含乘法器和加法器,
所述乘法器用于在训练阶段的前向传播、后向传递的反向传播以及后向传递的梯度更新阶段,根据所述控制电路的计算指令执行乘法运算;
所述加法器用于在所述训练阶段的后向传递的梯度更新阶段,根据所述控制电路的计算指令执行加法运算。
13.根据权利要求12所述的装置,其特征在于,所述向量子单元的输入端连接一比较器,所述比较器用于根据预设阈值筛选所述待运算数据,并将筛选后的待运算数据发送至所述向量子单元进行数据运算。
14.根据权利要求13所述的装置,其特征在于,所述后续处理电路包括:加法树和算术逻辑单元ALU,所述加法树的输入端连接所述映射处理电路,所述ALU连接所述加法树的输出端,
所述加法树用于根据控制电路的计算指令对接收的所述向量子单元的运算结果进行加和运算,得到加和结果;
所述ALU用于根据所述控制电路的计算指令对所述加和结果进行后续操作和非线性运算。
15.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求1-14任一项所述的神经网络运算装置,用于从其他处理装置中获取输入神经元和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给外围设备;
当所述机器学习运算装置包含多个神经网络运算装置时,所述多个神经网络运算装置间通过快速外围设备互连总线PCIE总线进行互联并传输数据;多个神经网络运算装置共享同一控制系统或拥有各自的控制系统;多个所述神经网络运算装置的互联方式是任意互联拓扑。
16.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求15所述的机器学习运算装置,通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置通过所述通用互联接口通信,所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
17.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求15所述的机器学习运算装置或如权利要求16所述的组合处理装置。
18.一种电子设备,其特征在于,所述电子设备包括如权利要求17所述的神经网络芯片。
19.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求17所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述神经网络芯片与外围设备之间的数据传输;
所述控制器件,用于对所述神经网络芯片的状态进行监控。
20.根据权利要求19所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述神经网络芯片通过总线连接,所述存储单元为:双倍速率同步动态随机存储器DDR;
所述神经网络芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
21.一种神经网络运算方法,其特征在于,所述方法包括:
处理电路的多个向量子单元根据控制电路的计算指令对接收的待运算数据进行数据运算;
映射处理电路在执行一对一模式时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路;在执行交叉模式时,选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路;
后续处理电路根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果。
22.根据权利要求21所述的方法,其特征在于,所述映射处理电路在执行一对一模式时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路;在执行交叉模式时,选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路,所述后续处理电路用于根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果,包括:
当所述神经网络运算装置用于处理前向传播运算时,映射处理电路选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路。
23.根据权利要求22所述的方法,其特征在于,所述当所述神经网络运算装置用于处理前向传播运算时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,包括:
映射处理电路根据映射指令选择将同一所述处理电路中的向量子单元的运算结果发送至同一后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路。
24.根据权利要求21所述的方法,其特征在于,所述映射处理电路在执行一对一模式时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,且将不同所述处理电路的运算结果发送至不同的后续处理电路;在执行交叉模式时,选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路,所述后续处理电路用于根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果,包括:
当所述神经网络运算装置用于处理反向传播运算时,所述映射处理电路选择将同一所述处理电路中的向量子单元的运算结果发送至多个后续处理电路。
25.根据权利要求24所述的方法,其特征在于,所述当所述神经网络运算装置用于处理前向传播运算时,选择将同一所述处理电路中的向量子单元的运算结果发送至一个后续处理电路,包括:
映射处理电路根据映射指令选择将同一所述处理电路中不同向量子单元的运算结果分别发送至不同的后续处理电路,且将各所述处理电路中相同位置的向量子单元的运算结果发送至同一后续处理电路。
26.根据权利要求21所述的方法,其特征在于,所述方法还包括:
向量子单元根据所述控制电路的I/O指令从突触缓存中提取权值,并将所述权值作为所述待运算数据进行数据运算。
27.根据权利要求26所述的方法,其特征在于,所述方法还包括:
索引电路接收所述控制电路的I/O指令,并根据所述I/O指令从索引缓存中提取所述权值索引,并基于所述权值索引从输入神经元中选择有效神经元,将所述有效神经元作为所待运算数据发送至对应的所述向量子单元进行数据运算。
28.根据权利要求21所述的方法,其特征在于,所述方法还包括:
选择电路根据所述控制电路的压缩指令以及预设梯度阈值选择有效梯度,将所述有效梯度作为所述待运算数据发送至对应的所述向量子单元进行数据运算。
29.根据权利要求28所述的方法,其特征在于,在所述方法应用于权利要求10所述的神经网络运算装置时,所述方法还包括:
在神经网络的训练阶段的剪枝时,编码电路根据所述控制电路的编码指令将权值从高稀疏模式压缩到低稀疏模式,以进行所述神经网络的剪枝。
30.根据权利要求29所述的方法,在所述方法应用于权利要求11所述的神经网络运算装置时,其特征在于,所述方法还包括:
解码电路从索引缓存中获取权值索引,并根据所述权值索引解码稀疏模式的权值得到稠密格式的权值,将所述稠密格式的权值作为所述待运算数据发送至对应的所述向量子单元进行数据运算。
31.根据权利要求21-30任一项所述的方法,其特征在于,所述处理电路的多个向量子单元根据控制电路的计算指令对接收的待运算数据进行数据运算包括:
控制电路在前向传播、反向传播的阶段,控制所述向量子单元执行乘法运算;
控制电路在梯度更新阶段,控制所述向量子单元执行加法运算。
32.根据权利要求31所述的方法,其特征在于,所述后续处理电路包括:加法树和ALU,所述后续处理电路根据所述控制电路的计算指令对接收的所述向量子单元的运算结果执行后续处理,得到运算结果,包括:
所述加法树根据控制电路的计算指令对接收的所述向量子单元的运算结果进行加和运算,得到加和结果;和/或,
所述ALU根据所述控制电路的计算指令对所述加和结果进行后续操作和非线性运算。
CN201910985467.9A 2019-10-17 2019-10-17 神经网络运算装置及运算方法 Active CN110490317B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910985467.9A CN110490317B (zh) 2019-10-17 2019-10-17 神经网络运算装置及运算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910985467.9A CN110490317B (zh) 2019-10-17 2019-10-17 神经网络运算装置及运算方法

Publications (2)

Publication Number Publication Date
CN110490317A CN110490317A (zh) 2019-11-22
CN110490317B true CN110490317B (zh) 2020-03-10

Family

ID=68544796

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910985467.9A Active CN110490317B (zh) 2019-10-17 2019-10-17 神经网络运算装置及运算方法

Country Status (1)

Country Link
CN (1) CN110490317B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506518B (zh) * 2020-04-13 2022-12-20 湘潭大学 一种数据存储控制方法及装置
CN113159293B (zh) * 2021-04-27 2022-05-06 清华大学 一种用于存算融合架构的神经网络剪枝装置及方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5444820A (en) * 1993-12-09 1995-08-22 Long Island Lighting Company Adaptive system and method for predicting response times in a service environment
WO2016094330A2 (en) * 2014-12-08 2016-06-16 20/20 Genesystems, Inc Methods and machine learning systems for predicting the liklihood or risk of having cancer
US20170330069A1 (en) * 2016-05-11 2017-11-16 Kneron Inc. Multi-layer artificial neural network and controlling method thereof
CN106650924B (zh) * 2016-10-27 2019-05-14 中国科学院计算技术研究所 一种基于时间维和空间维数据流压缩的处理器、设计方法
CN109840589B (zh) * 2019-01-25 2021-09-24 深兰人工智能芯片研究院(江苏)有限公司 一种在fpga上运行卷积神经网络的方法和装置
CN110033087A (zh) * 2019-04-18 2019-07-19 合肥天毅网络传媒有限公司 基于神经网络处理器及其使用方法

Also Published As

Publication number Publication date
CN110490317A (zh) 2019-11-22

Similar Documents

Publication Publication Date Title
CN109104876B (zh) 一种运算装置及相关产品
CN111221578B (zh) 计算装置以及计算方法
CN109003132B (zh) 广告推荐方法及相关产品
US11307865B2 (en) Data processing apparatus and method
JP6880160B2 (ja) 計算装置と計算方法
CN108320018B (zh) 一种人工神经网络运算的装置及方法
CN108171328B (zh) 一种神经网络处理器和采用其执行的卷积运算方法
CN110490317B (zh) 神经网络运算装置及运算方法
CN111353598A (zh) 一种神经网络压缩方法、电子设备及计算机可读介质
CN111930681B (zh) 一种计算装置及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN112966729B (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN111047021B (zh) 一种计算装置及相关产品
CN111178492A (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
CN111198714B (zh) 重训练方法及相关产品
CN114003198A (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN113469337A (zh) 用于优化神经网络模型的编译方法及其相关产品
US20200150971A1 (en) Data processing apparatus and method
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
CN112766475A (zh) 处理部件及人工智能处理器
CN111382848A (zh) 一种计算装置及相关产品
CN111047024A (zh) 一种计算装置及相关产品
CN114692847B (zh) 数据处理电路、数据处理方法及相关产品
CN113469333B (zh) 执行神经网络模型的人工智能处理器、方法及相关产品
CN115599738A (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
CP03 Change of name, title or address

Address after: 100191 room 1601, floor 16, block D, Zhizhen building, No.7, Zhichun Road, Haidian District, Beijing

Patentee after: Zhongke Cambrian Technology Co., Ltd

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Patentee before: Cambricon Technologies Corporation Ltd.

CP03 Change of name, title or address