一种神经网络计算装置和方法转让专利

申请号 : CN201811592205.8

文献号 : CN111368990B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名

申请人 : 上海寒武纪信息科技有限公司

摘要 :

本申请提供了一种神经网络计算装置及方法,所述装置用于执行人工神经网络训练计算;所述神经网络训练运算包括神经网络多层训练运算,本申请提供的技术方案具有成本低、能耗低的优点。

权利要求 :

1.一种神经网络计算装置,所述装置用于执行人工神经网络训练计算;所述神经网络训练运算包括神经网络多层训练运算,所述多层训练运算中包括至少一层第i层,所述第i层的正向运算或反向运算中至少有部分数据为定点数据运算,上述i为大于等于1的整数;

所述计算装置包括:控制器单元、运算单元和转换单元,其中,控制器单元与运算单元以及转换单元连接;所述第i层训练运算中包括第i层正向运算和第i层反向运算;

控制器单元,用于获取第i层的输入神经元数据、第i层权值数据以及第i层正向计算指令;

控制器单元,还用于解析该第i层计算指令得到多个正向运算指令,将第i层输入神经元数据以及第i层权值数据发送给转换单元,将该多个运算指令发送给运算单元;

转换单元,用于将该第i层输入神经元数据以及第i层权值数据中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据或混合数据发送给运算单元,所述混合数据包括:部分定点数据以及部分浮点数据;

所述转换单元,还用于依据float = int * scale执行浮点类型与定点类型的转换;其中,float为浮点类型数据,int为定点类型数据值,scale为定点类型的缩放比例值;

运算单元,用于依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的正向输出结果;

所述混合运算包括:对部分定点数据执行定点运算以及对部分浮点数据执行浮点运算。

2.根据权利要求1所述的计算装置,其特征在于,

控制器单元,还用于获取第i层的输入神经元数据、第i层权值数据、第i层输入神经元梯度以及第i层反向计算指令;

控制器单元,还用于解析该第i层计算指令得到多个反向运算指令,将第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度发送给转换单元,将该多个运算指令发送给运算单元;

转换单元,还用于将该第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据和混合数据发送给运算单元,该混合数据包括:部分定点数据以及部分浮点数据;

运算单元,还用于依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的权值梯度以及第i层输出结果梯度;采用第i层的权值梯度与第i层权值进行更新。

3.根据权利要求1所述的装置,其特征在于,

所述转换单元,具体用于将第i层输入神经元数据的部分转换成部分定点输入神经元数据以及将第i层权值数据的部分转换成部分定点权值数据;将部分定点输入神经元数据以及部分定点权值数据发送给运算单元,将部分输入神经元数据和部分权值数据发送给运算单元;

运算单元,具体用于将部分定点输入神经元数据以及部分定点权值数据执行定点数据运算得到部分定点正向输出结果,将部分定点正向输出结果发送给转换单元,转换单元,具体用于将该部分定点正向输出结果执行定点与浮点转换得到第一部分浮点正向输出结果,将第一部分浮点正向输出结果发送给运算单元;

运算单元,具体用于将部分输入神经元数据和部分权值数据执行运算得到第二部分浮点正向运算结果,将第一部分浮点正向运算结果和第二部分浮点正向运算结果结合起来得到第i层正向输出结果。

4.根据权利要求1‑3任意一项所述的计算装置,其特征在于,

所述转换单元,具体用于将第i层输入神经元数据的部分转换成部分定点输入神经元数据、将第i层权值数据的部分转换成部分定点权值数据以及将第i层输入神经元梯度转换成部分定点输入神经元梯度;将部分定点输入神经元数据、部分定点输入神经元梯度以及部分定点权值数据发送给运算单元,将部分输入神经元数据、部分输入神经元梯度和部分权值数据发送给运算单元;

运算单元,具体用于将部分定点输入神经元梯度以及部分定点输入数据执行定点数据运算得到部分第i层权值梯度,将部分定点输入神经元梯度与部分定点权值数据执行定点数据运算得到部分第i层输出结果梯度,将部分第i层权值梯度以及部分第i层输出结果梯度发送给转换单元,转换单元,具体用于将该部分第i层权值梯度以及部分第i层输出结果梯度执行定点与浮点转换得到第一部分第i层权值梯度以及第一部分第i层输出结果梯度,将第一部分第i层权值梯度以及第一部分第i层输出结果梯度发送给运算单元;

运算单元,具体用于将部分输入神经元梯度以及部分输入数据执行运算得到第二部分第i层权值梯度,将部分输入神经元梯度与部分权值数据执行运算得到第二部分第i层输出结果梯度,将第一部分第i层权值梯度和第二部分第i层权值梯度结合起来得到第i层权值梯度,将第一部分第i层输出结果梯度和第二部分第i层输出结果梯度结合起来得到第i层输出结果梯度。

5.根据权利要求1所述的计算装置,其特征在于,

所述转换单元,具体用于依据float = int * scale ‑ offset执行浮点类型与定点类型的转换,其中,offset为偏置值。

6.根据权利要求1所述的装置,其特征在于,所述获取第i层输入神经元梯度的方法具体包括:所述控制器单元,具体用于接收第i+1层输出结果梯度,将第i+1层输出结果梯度发送至运算单元;

所述运算单元,具体用于依据第i+1层输出结果梯度得到第i层输入神经元梯度;

第i层输入神经元梯度=f′*第i+1层输出结果梯度;

其中f′为激活函数f的导函数。

7.根据权利要求1所述的装置,其特征在于,所述运算单元包括:主处理电路和多个从处理电路;其中,所述主处理电路,用于对数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;

多个从处理电路,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;

主处理电路,用于依据多个中间结果得到第i层正向输出结果、第i层输出结果梯度、第i层权值梯度,并依据第i层权值梯度对第i层权值进行更新。

8.根据权利要求7所述的装置,其特征在于,

所述主处理电路,具体用于将该第i层输入神经元数据分发发送给各个从处理电路,将第i层输入神经元梯度传送到各个从处理电路,每个从处理电路将第i层输入神经元梯度in_gradient中与该从处理电路相对应的标量数据以及第i层输入神经元数据相乘,得到每个从处理电路的第i层的原始权值更新梯度向量dw_original,采用原始权值更新梯度向量dw_original与每个从处理电路的权值相乘得到各个从处理电路的更新权值。

9.根据权利要求8所述的装置,其特征在于,

所述主处理电路,具体用于在所有层的原始权值更新梯度向量计算得到后,计算所有层的原始权值更新梯度的平方和sumsq_diff, 然后对sumsq_diff进行开方得到l2norm_diff,如果l2norm_diff大于clip_gradient,计算缩放因子scale_factor = clip_gradient / l2norm_diff,所有的原始权值更新梯度dw_original分别乘以缩放因子scale_factor,得到权值更新梯度dw’,将更新梯度dw’发送给每个从处理电路;

从处理电路,具体用于使用权值更新梯度dw’乘以权值得到第i层各个从处理电路的更新权值。

10.根据权利要求7‑9任意一项所述的装置, 其特征在于,所述主处理电路以及从处理电路均包括存储模块;

所述存储模块,用于存储数据;

所述存储模块还包括至少一个共享区域,所述共享区域为主处理电路或从处理电路共享使用的存储空间。

11.根据权利要求7‑9任意一项所述的装置, 其特征在于,所述运算单元还包括:分支处理电路;

所述分支处理电路设置在主处理电路与多个从处理电路之间,实现主处理电路与多个从处理电路之间的数据以及运算指令的转发。

12.根据权利要求11所述的装置,其特征在于,所述分支处理电路包括:存储模块,所述存储模块包括至少一个共享区域,所述共享区域为主处理电路和从处理电路共享使用的存储空间。

13.根据权利要求12所述的装置,其特征在于,所述装置还包括树型模块,所述互连模块为由多个节点构成的n叉树通路,所述n叉树的上游节点的数据同样地发送至下游得了n个节点,以及将下游的n个节点返回的数据进行合并后发送给上游节点,所述n为大于等于2的整数。

14.根据权利要求6所述的装置,其中,所述激活函数f是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数;

所述运算指令包括:CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令或MOVE指令。

15.根据权利要求7‑9任意一项所述的装置,其中,所述主处理电路包括第一存储单元、第一运算单元、第一数据依赖关系判定单元和第一存储单元,其中:神经元缓存单元,用于缓存主处理电路在计算过程中用到的输入数据和输出数据;

第一运算单元,完成主处理电路的各种运算功能;

第一数据依赖关系判定单元,用于从第一存储单元读取输入的神经元向量,并通过互连模块发送给从处理电路;以及接收互连模块的中间结果向量,将中间结果向量发送到第一运算单元。

16.根据权利要求15所述的装置,其特征在于,所述第一运算单元包括:向量加法单元和激活运算单元;

所述向量加法单元,用于将偏置数据与所述中间结果对位相加得到偏置结果;

所述激活运算单元,用于将所述偏置结果执行激活函数操作。

17.根据权利要求7‑9任意一项所述的装置,其中,每个从处理电路包括第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元,其中:第二运算单元,用于执行算数逻辑运算;

第二数据依赖关系判定单元,用于对第二存储单元和第三存储单元的执行读写操作;

第二存储单元,用于缓存输入神经元向量的数据以及该从处理电路计算得到的输出神经元值;

第三存储单元,用于缓存该从处理电路在计算过程中需要的权值向量。

18.根据权利要求17所述的装置,其特征在于,所述第二计算单元包括:向量乘单元和累加单元;

所述向量乘单元,用于执行点积运算中的向量乘运算;

所述累加单元,用于执行点积运算中的累加运算。

19.一种神经网络训练方法,其特征在于,所述方法用于神经网络计算装置,;所述神经网络训练运算包括神经网络多层训练运算,所述多层训练运算中包括至少一层第i层,所述第i层的正向运算或反向运算中至少有部分数据为定点数据运算,上述i为大于等于1的整数;所述计算装置包括:控制器单元、运算单元和转换单元,其中,控制器单元与运算单元以及转换单元连接;所述第i层训练运算中包括第i层正向运算和第i层反向运算;

所述第i层正向运算包括:

控制器单元获取第i层的输入神经元数据、第i层权值数据以及第i层正向计算指令;解析该第i层计算指令得到多个正向运算指令,将第i层输入神经元数据以及第i层权值数据发送给转换单元,将该多个运算指令发送给运算单元;

转换单元将该第i层输入神经元数据以及第i层权值数据中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据或混合数据发送给运算单元,所述混合数据包括:部分定点数据以及部分浮点数据;

所述执行浮点类型与定点类型转换具体包括:

所述转换单元依据float= int * scale执行浮点类型与定点类型的转换;其中,float为浮点类型数值,int为定点类型数据值,scale为定点类型的缩放比例值;

运算单元依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的正向输出结果;

所述混合运算包括:对部分定点数据执行定点运算以及对部分浮点数据执行浮点运算。

20.根据权利要求19所述的方法,其特征在于,

所述第i层反向运算包括:

控制器单元获取第i层的输入神经元数据、第i层权值数据、第i层输入神经元梯度以及第i层反向计算指令;解析该第i层计算指令得到多个反向运算指令,将第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度发送给转换单元,将该多个运算指令发送给运算单元;

转换单元将该第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据或混合数据发送给运算单元,该混合数据包括:部分定点数据以及部分浮点数据;

运算单元依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的权值梯度以及第i层输出结果梯度;采用第i层的权值梯度与第i层权值进行更新。

21.根据权利要求19所述的方法,其特征在于,所述转换单元将该第i层输入神经元数据以及第i层权值数据中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据和混合数据发送给运算单元,所述混合数据包括:部分定点数据以及部分浮点数据;运算单元依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的正向输出结果具体包括:所述转换单元将第i层输入神经元数据的部分转换成部分定点输入神经元数据以及将第i层权值数据的部分转换成部分定点权值数据;将部分定点输入神经元数据以及部分定点权值数据发送给运算单元,将部分输入神经元数据和部分权值数据发送给运算单元;

运算单元将部分定点输入神经元数据以及部分定点权值数据执行定点数据运算得到部分定点正向输出结果,将部分定点正向输出结果发送给转换单元,转换单元将该部分定点正向输出结果执行定点与浮点转换得到第一部分浮点正向输出结果,将第一部分浮点正向输出结果发送给运算单元;

运算单元将部分输入神经元数据和部分权值数据执行运算得到第二部分浮点正向运算结果,将第一部分浮点正向运算结果和第二部分浮点正向运算结果结合起来得到第i层正向输出结果。

22.根据权利要求19所述的方法,其特征在于,所述转换单元将该第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据和混合数据发送给运算单元,该混合数据包括:部分定点数据以及部分浮点数据;运算单元依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的权值梯度以及第i层输出结果梯度;采用第i层的权值梯度与第i层权值进行更新具体包括:所述转换单元将第i层输入神经元数据的部分转换成部分定点输入神经元数据、将第i层权值数据的部分转换成部分定点权值数据以及将第i层输入神经元梯度转换成部分定点输入神经元梯度;将部分定点输入神经元数据、部分定点输入神经元梯度以及部分定点权值数据发送给运算单元,将部分输入神经元数据、部分输入神经元梯度和部分权值数据发送给运算单元;

运算单元将部分定点输入神经元梯度以及部分定点输入数据执行定点数据运算得到部分第i层权值梯度,将部分定点输入神经元梯度与部分定点权值数据执行定点数据运算得到部分第i层输出结果梯度,将部分第i层权值梯度以及部分第i层输出结果梯度发送给转换单元,转换单元将该部分第i层权值梯度以及部分第i层输出结果梯度执行定点与浮点转换得到第一部分第i层权值梯度以及第一部分第i层输出结果梯度,将第一部分第i层权值梯度以及第一部分第i层输出结果梯度发送给运算单元;

运算单元将部分输入神经元梯度以及部分输入数据执行运算得到第二部分第i层权值梯度,将部分输入神经元梯度与部分权值数据执行运算得到第二部分第i层输出结果梯度,将第一部分第i层权值梯度和第二部分第i层权值梯度结合起来得到第i层权值梯度,将第一部分第i层输出结果梯度和第二部分第i层输出结果梯度结合起来得到第i层输出结果梯度。

23.根据权利要求19所述的方法,其特征在于,所述依据float = int* scale执行浮点类型与定点类型的转换具体包括:依据float = int * scale‑ offset执行浮点类型与定点类型的转换,其中,offset为偏置值。

24.一种神经网络训练运算装置,其特征在于,所述神经网络训练运算装置包括一个或多个如权利要求1‑18任一项所述的计算装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的运算,将执行结果通过I/O接口传递给其他处理装置;

当所述神经网络训练运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;

其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络训练运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。

25.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求24所述的神经网络训练运算装置,通用互联接口和其他处理装置;

所述神经网络训练运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。

26.根据权利要求25所述的组合处理装置,其特征在于,还包括:存储装置,该存储装置分别与所述神经网络训练运算装置和所述其他处理装置连接,用于保存所述神经网络训练运算装置和所述其他处理装置的数据。

27.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求1所述的计算装置或如权利要求24所述的神经网络训练运算装置或如权利要求25所述的组合处理装置。

28.一种电子设备,其特征在于,所述电子设备包括如所述权利要求27所述的芯片。

29.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求27所述的神经网络芯片;

其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;

所述存储器件,用于存储数据;

所述接口装置,用于实现所述芯片与外部设备之间的数据传输;

所述控制器件,用于对所述芯片的状态进行监控。

30.根据权利要求29所述的板卡,其特征在于,

所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;

所述接口装置为:标准PCIE接口。

说明书 :

一种神经网络计算装置和方法

技术领域

[0001] 本申请总体上涉及人工神经网络,具体地涉及一种神经网络计算装置和方法。

背景技术

[0002] 神经网络又称人工神经网络,人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。人工神经网络涉及到多种算法,其中全连接层作为人工神经网络中的一种重要算法,被广泛的应用在各种人工神经网络模型中。
[0003] 现有的神经网络运算基于通用处理器进行神经网络运算,现有的通用处理器,仅仅支持浮点数据的运算,对于神经网络运算,尤其涉及到比较复杂的运算,因此其运算量大,并且内存要求高,现有的神经网络运算基于浮点数据来运算对内存要求较高,因此现有的方案能耗高、成本高。

发明内容

[0004] 本申请的一个方面提供了一种神经网络计算装置及方法,该装置及方法采用定点数据进行运算,相对于浮点数据,定点数据能够节省内存,减少运算量,因此其具有降低能耗,降低成本的优点。
[0005] 一方面,提供一种神经网络计算装置,所述装置用于执行人工神经网络训练计算;所述神经网络训练运算包括神经网络多层训练运算,所述多层训练运算中包括至少一层第i层,所述第i层的正向运算或反向运算中至少有部分数据为定点数据运算,上述i为大于等于1的整数;所述计算装置包括:控制器单元、运算单元和转换单元,其中,控制器单元与运算单元以及转换单元连接;所述第i层训练运算中包括第i层正向运算和第i层反向运算;
[0006] 控制器单元,用于获取第i层的输入神经元数据、第i层权值数据以及第i层正向计算指令;
[0007] 控制器单元,还用于解析该第i层计算指令得到多个正向运算指令,将第i层输入神经元数据以及第i层权值数据发送给转换单元,将该多个运算指令发送给运算单元;
[0008] 转换单元,用于将该第i层输入神经元数据以及第i层权值数据中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据和混合数据发送给运算单元,所述混合数据包括:部分定点数据以及部分浮点数据;
[0009] 所述转换单元,还用于依据float=int*scale执行浮点类型与定点类型的转换;其中,float为浮点类型数值,int为定点类型数据值,scale为定点类型的缩放比例值;
[0010] 运算单元,用于依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的正向输出结果;
[0011] 所述混合运算包括:对部分定点数据执行定点运算以及对部分浮点数据执行浮点运算。
[0012] 另一方面,提供一种神经网络训练方法,所述方法用于神经网络计算装置,;所述神经网络训练运算包括神经网络多层训练运算,所述多层训练运算中包括至少一层第i层,所述第i层的正向运算或反向运算中至少有部分数据为定点数据运算,上述i为大于等于1的整数;所述计算装置包括:控制器单元、运算单元和转换单元,其中,控制器单元与运算单元以及转换单元连接;所述第i层训练运算中包括第i层正向运算和第i层反向运算;
[0013] 所述第i层正向运算包括:
[0014] 控制器单元获取第i层的输入神经元数据、第i层权值数据以及第i层正向计算指令;解析该第i层计算指令得到多个正向运算指令,将第i层输入神经元数据以及第i层权值数据发送给转换单元,将该多个运算指令发送给运算单元;
[0015] 转换单元将该第i层输入神经元数据以及第i层权值数据中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据或混合数据发送给运算单元,所述混合数据包括:部分定点数据以及部分浮点数据;
[0016] 运算单元依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的正向输出结果;
[0017] 可选的,所述第i层反向运算包括:
[0018] 控制器单元获取第i层的输入神经元数据、第i层权值数据、第i层输入神经元梯度以及第i层反向计算指令;解析该第i层计算指令得到多个反向运算指令,将第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度发送给转换单元,将该多个运算指令发送给运算单元;
[0019] 转换单元将该第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据或混合数据发送给运算单元,该混合数据包括:部分定点数据以及部分浮点数据;
[0020] 所述执行浮点类型与定点类型转换具体包括:
[0021] 所述转换单元依据float=int*scale执行浮点类型与定点类型的转换;其中,float为浮点类型数据,int为定点类型数据值,scale为定点类型的缩放比例值;
[0022] 运算单元依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的权值梯度以及第i层输出结果梯度;采用第i层的权值梯度与第i层权值进行更新;
[0023] 所述混合运算包括:对部分定点数据执行定点运算以及对部分浮点数据执行浮点运算。
[0024] 又一方面,提供一种神经网络训练运算装置,所述神经网络训练运算装置包括一个或多个第一方面的计算装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的运算,将执行结果通过I/O接口传递给其他处理装置;
[0025] 当所述神经网络训练运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
[0026] 其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络训练运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
[0027] 还一方面,提供一种组合处理装置,所述组合处理装置包括又一方面的神经网络训练运算装置,通用互联接口和其他处理装置;
[0028] 所述神经网络训练运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
[0029] 下一方面,提供一种神经网络芯片,所述神经网络芯片包括一方面的计算装置或另一方面的神经网络训练运算装置或还一方面的组合处理装置。
[0030] 另外,还提供一种电子设备,所述电子设备包括如所述权利要求24所述的芯片。
[0031] 最后,提供一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及上述神经网络芯片;
[0032] 其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
[0033] 所述存储器件,用于存储数据;
[0034] 所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
[0035] 所述控制器件,用于对所述芯片的状态进行监控。

附图说明

[0036] 为了更完整地理解本申请及其优势,现在将参考结合附图的以下描述,其中:
[0037] 图1示出了根据本申请实施例的神经网络计算装置的整体结构的示例框图。
[0038] 图2示意性示出了根据本申请实施例的另一神经网络计算装置的结构示意图。
[0039] 图2a示意性示出了根据本申请实施例的运算单元的结构示意图。
[0040] 图2b示意性示出了根据本申请实施例的运算单元的另一结构示意图。
[0041] 图2c示意性示出了根据本申请实施例的树型模块的发送示意图。
[0042] 图2d示意性示出了根据本申请实施例的树型模块的接收示意图。
[0043] 图3示意性示出了根据本申请实施例的运算单元的又一结构示意图。
[0044] 图4示意性示出了根据本申请实施例的组合处理装置的结构示意图。
[0045] 图5示意性示出了根据本申请实施例的板卡的结构示意图。

具体实施方式

[0046] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0047] 本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
[0048] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0049] 电子设备可以包括各种具有无线通信功能的手持设备、车载设备、无线耳机、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,UE),移动台(mobile station,MS),终端设备(terminal device)等等,电子设备例如可以为智能手机、平板电脑、耳机盒等等。为方便描述,上面提到的设备统称为电子设备或电子装置。
[0050] 上述电子设备或电子装置可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
[0051] 下面对本申请实施例进行详细介绍。
[0052] 首先介绍本申请使用的计算装置。参阅图1,提供了一种神经网络计算装置,该计算装置用于执行神经网络训练计算,上述神经网络训练运算包括神经网络多层训练运算,上述多层训练运算中包括至少一层第i层,所述第i层的正向运算或反向运算中至少有部分数据为定点数据运算,上述i为大于等于1的整数;该计算装置包括:控制器单元11、运算单元12和转换单元13,其中,控制器单元11与运算单元12以及转换单元13(上述转换单元可以单独设置,也可以集成在控制器单元或运算单元内)连接;上述第i层训练运算中包括第i层正向运算和第i层反向运算;
[0053] 该第i层正向运算可以包括:
[0054] 控制器单元11,用于获取第i层的输入神经元数据、第i层权值数据以及第i层正向计算指令;在一种可选方案中,具体的,获取输入神经元数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚;数据输入输出单元,用于从外部设备或外部存储器读取输入神经元数据或正向计算指令。
[0055] 上述正向计算指令包括但不限于:卷积运算指令、矩阵乘法指令、向量乘法指令、激活指令等等,本申请具体实施方式并不限制上述正向计算指令的具体表现形式或具体的类别。
[0056] 控制器单元11,还用于解析该第i层计算指令得到多个正向运算指令,将第i层输入神经元数据以及第i层权值数据发送给转换单元13,将该多个运算指令发送给运算单元12;
[0057] 转换单元13,用于将该第i层输入神经元数据以及第i层权值数据中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据和混合数据发送给运算单元,该混合数据包括:部分定点数据以及部分浮点数据;
[0058] 运算单元12,用于依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的正向输出结果。
[0059] 该第i层反向运算可以包括:
[0060] 控制器单元11,用于获取第i层的输入神经元数据、第i层权值数据、第i层输入神经元梯度以及第i层反向计算指令;在一种可选方案中,具体的,获取输入神经元数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚;数据输入输出单元,用于从外部设备或外部存储器读取输入神经元数据或反向计算指令。
[0061] 上述反向计算指令包括但不限于:矩阵乘法指令、向量乘法指令等等,本申请具体实施方式并不限制上述反向计算指令的具体表现形式或具体的类别。
[0062] 控制器单元11,还用于解析该第i层计算指令得到多个反向运算指令,将第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度发送给转换单元13,将该多个运算指令发送给运算单元12;
[0063] 转换单元13,用于将该第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据或混合数据发送给运算单元,该混合数据包括:部分定点数据以及部分浮点数据;
[0064] 转换单元13,具体用于依据float=int*scale执行浮点类型与定点类型的转换;其中,float为浮点类型数据,int为定点类型数据值,scale为定点类型的缩放比例值;
[0065] 可选的,上述公式中还可以添加offset,具体的,float=int*scale-offset,上述offset为偏置值。上述偏置值用于表示int*scale与float的偏差。
[0066] Scale=δ*2point/maxabc;
[0067] 其中,maxabc可以为浮点类型的元素值中最大绝对值,该δ为经验值(厂家自行设定),其为整数且小于定点位宽的最大值。例如定点位宽为8bit,定点位宽最大值为255。
[0068]
[0069] 其中,width为定点数的位宽。
[0070] 运算单元12,用于依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的权值梯度以及第i层输出结果梯度;采用第i层的权值梯度与第i层权值进行更新。
[0071] 该混合运算包括:对部分定点数据执行定点运算以及对部分浮点数据执行浮点运算。
[0072] 本申请提供的技术方案设置了转换单元,该转换单元在执行神经网络的第i层训练运算时,可以将输入神经元数据、权值数据、输入数据神经元梯度中的全部或部分转换成定点数据或混合数据,相对于浮点数据,定点数据的存储空间较少,这样通过较小的内存空间即能够实现神经网络的训练,因此本申请提供的计算装置可以降低内存的容量,降低成本,另外,本申请提供的技术方案从第i层训练运算中存在至少部分定点数据的运算,相对于浮点数据的运算,其运算量降低,因此其具有运算快的优点。
[0073] 对于神经网络训练中的训练运算可以为神经网络中的一层的训练运算即第i层的训练运算,对于其他层的训练运算可以采用常规的训练运算方法,也可以采用本申请中类似第i层的训练运算方法。对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络正向运算执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元(即正向输出结果)作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),上述某些操作包括但不限于:激活操作等操作,同时,将上一层的权值也替换为下一层的权值。在反向运算中,当下一层人工神经网络的反向运算执行完成后,上一层运算指令会将运算单元中计算出的输出神经元梯度(即输出结果梯度)作为上一层的输入神经元梯度进行运算(或者是对该输出神经元梯度进行某些操作再作为上一层的输入神经元梯度),同时将权值以及输入神经元数据替换为上一层的正向运算的权值以及输入神经元数据。
[0074] 对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L‑1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
[0075] 可选的,转换单元13,具体用于将第i层输入神经元数据的部分转换成部分定点输入神经元数据以及将第i层权值数据的部分转换成部分定点权值数据;将部分定点输入神经元数据以及部分定点权值数据发送给运算单元,将部分输入神经元数据(未执行浮点与定点转换的剩余浮点数据)和部分权值数据(未执行浮点与定点转换的剩余浮点数据)发送给运算单元;
[0076] 运算单元,具体用于将部分定点输入神经元数据以及部分定点权值数据执行定点数据运算得到部分定点正向输出结果,将部分定点正向输出结果发送给转换单元,[0077] 转换单元,具体用于将该部分定点正向输出结果执行定点与浮点转换得到第一部分浮点正向输出结果,将第一部分浮点正向输出结果发送给运算单元;
[0078] 运算单元,具体用于将部分输入神经元数据和部分权值数据执行运算(浮点运算)得到第二部分浮点正向运算结果,将第一部分浮点正向运算结果和第二部分浮点正向运算结果结合起来得到第i层正向输出结果。
[0079] 可选的,转换单元13,具体用于将第i层输入神经元数据的部分转换成部分定点输入神经元数据、将第i层权值数据的部分转换成部分定点权值数据以及将第i层输入神经元梯度转换成部分定点输入神经元梯度;将部分定点输入神经元数据、部分定点输入神经元梯度以及部分定点权值数据发送给运算单元,将部分输入神经元数据(未执行浮点与定点转换的剩余浮点数据)、部分输入神经元梯度和部分权值数据(未执行浮点与定点转换的剩余浮点数据)发送给运算单元;
[0080] 运算单元,具体用于将部分定点输入神经元梯度以及部分定点输入数据执行定点数据运算得到部分第i层权值梯度,将部分定点输入神经元梯度与部分定点权值数据执行定点数据运算得到部分第i层输出结果梯度,将部分第i层权值梯度以及部分第i层输出结果梯度发送给转换单元,
[0081] 转换单元,具体用于将该部分第i层权值梯度以及部分第i层输出结果梯度执行定点与浮点转换得到第一部分第i层权值梯度以及第一部分第i层输出结果梯度,将第一部分第i层权值梯度以及第一部分第i层输出结果梯度发送给运算单元;
[0082] 运算单元,具体用于将部分输入神经元梯度以及部分输入数据执行运算(浮点)得到第二部分第i层权值梯度,将部分输入神经元梯度与部分权值数据执行运算得到第二部分第i层输出结果梯度,将第一部分第i层权值梯度和第二部分第i层权值梯度结合起来得到第i层权值梯度,将第一部分第i层输出结果梯度和第二部分第i层输出结果梯度结合起来得到第i层输出结果梯度。
[0083] 可选的,上述获取第i层输入神经元梯度的方法具体可以包括:
[0084] 第i层输入神经元梯度=f′*第i+1层输出结果梯度;
[0085] 其中f′为激活函数f的导函数。
[0086] 可选的,参阅图2a,上述运算单元可以包括:一个主处理电路101和多个从处理电路102,其中,
[0087] 主处理电路101,用于对数据(包括输入神经元数据、权值数据、输入神经元梯度中的一种或任意组合,另外,该数据可以为定点数据或浮点数据)执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
[0088] 多个从处理电路102,用于依据从所述主处理电路传输的数据(可以为定点数据也可以为浮点数据)以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
[0089] 主处理电路101,用于依据多个中间结果得到第i层正向输出结果、第i层输出结果梯度、第i层权值梯度,并依据第i层权值梯度对第i层权值进行更新。
[0090] 可选的,上述激活函数f是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数;
[0091] 所述运算指令包括:CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令或MOVE指令。
[0092] 可选的,主处理电路包括第一存储单元、第一运算单元、第一数据依赖关系判定单元和第一存储单元,其中:
[0093] 神经元缓存单元,用于缓存主处理电路在计算过程中用到的输入数据和输出数据;
[0094] 第一运算单元,完成主处理电路的各种运算功能;
[0095] 第一数据依赖关系判定单元,用于从第一存储单元读取输入的神经元向量,并通过互连模块发送给从处理电路;以及接收互连模块的中间结果向量,将中间结果向量发送到第一运算单元。
[0096] 可选的,第一运算单元包括:向量加法单元和激活运算单元;
[0097] 所述向量加法单元,用于将偏置数据与所述中间结果对位相加得到偏置结果;
[0098] 所述激活运算单元,用于将所述偏置结果执行激活函数操作。
[0099] 可选的,主每个从处理电路包括第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元,其中:
[0100] 第二运算单元,用于执行算数逻辑运算;
[0101] 第二数据依赖关系判定单元,用于对第二存储单元和第三存储单元的执行读写操作;
[0102] 第二存储单元,用于缓存输入神经元向量的数据以及该从处理电路计算得到的输出神经元值;
[0103] 第三存储单元,用于缓存该从处理电路在计算过程中需要的权值向量。
[0104] 可选的,主所述第二计算单元包括:向量乘单元和累加单元;
[0105] 所述向量乘单元,用于执行点积运算中的向量乘运算;
[0106] 所述累加单元,用于执行点积运算中的累加运算。
[0107] 上述权值更新的过程可以包括:
[0108] 主处理电路101,具体用于将该第i层输入神经元数据分发发送给各个从处理电路,将第i层输入神经元梯度传送到各个从处理电路102,每个从处理电路102将第i层输入神经元梯度in_gradient中与该从处理电路相对应的标量数据以及第i层输入神经元数据相乘,得到每个从处理电路的第i层的原始权值更新梯度向量dw_original,在算出所有层的原始权值更新梯度向量之后,为了限制权值的梯度范围,主处理电路可以对原始权值更新梯度进行限制处理,具体的,主处理电路,具体用于计算所有层的原始权值更新梯度的平方和sumsq_diff,然后对sumsq_diff进行开方得到l2norm_diff,如果l2norm_diff大于clip_gradient(一个设定的正常数),计算缩放因子scale_factor=clip_gradient/l2norm_diff,所有的原始权值更新梯度dw_original分别乘以缩放因子scale_factor,得到权值更新梯度dw’,将更新梯度dw’发送给每个从处理电路;从处理电路,具体用于使用权值更新梯度dw’乘以权值得到第i层各个从处理电路的更新权值。
[0109] 本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗,对于反向运算,也可以将数据进行拆分,类似正向运算,也可以提高运算速度。
[0110] 可选的,上述主处理电路以及从处理电路均可以包括:存储模块,该存储模块,用于存储主处理电路或从处理电路的数据。需要说明的是,上述存储模块在主处理电路与从处理电路之间可以共享,即在主处理电路的存储模块中划分一个或多个区域为共享区域,该共享区域的存储空间可以有多个从处理模块共享使用(包括读取或写入数据);从处理电路的存储模块中也可以划分一个或多个区域为共享区域,该共享区域的存储空间可以由主处理模块共享使用(包括读取或写入数据)。
[0111] 此技术方案设置了存储模块的区域共享的方案,相对于存储模块固定的方案,互相连接的主处理电路与多个从处理电路之间的存储模块共享,能够避免因为存储区域不足导致计算无法进行的问题,另外,存储模块共享能够有效的降低主处理电路的存储区域的存储空间的设置,这样大大降低了主处理电路的成本。另外,本方案相对于从外部设备提取数据来说,减少了数据读入或写入的开销,对于本计算装置,如从外部设置读入或写入数据,其需要经过控制器单元、转换单元等部件的转发,这样对于神经网络运算来说需要经过多个部件,这样在数据读写时开销很大,能耗也大,而适当的在主处理电路以及从处理电路中设置一部分共享区域,这样在自身的存储模块的空间不够时,无需存储在外部设备,直接在运算单元内部存储即可,大大降低了开销。
[0112] 可选的,参阅图2,上述计算装置还可以包括:该存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入神经元数据、权值数据、输入神经元梯度和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
[0113] 可选的,该控制器单元包括:指令存储单元110、指令处理单元111和存储队列单元113;
[0114] 指令存储单元110,用于存储所述人工神经网络运算关联的计算指令;
[0115] 所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;
[0116] 存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
[0117] 举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
[0118] 在一种可选方案中,该计算指令的结构可以如下表所示。
[0119] 操作码 寄存器或立即数 寄存器/立即数 ...
[0120] 上表中的省略号表示可以包括多个寄存器或立即数。
[0121] 在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
[0122]
[0123] 上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
[0124] 在另一种可选实施例中,参阅图2a,该运算单元12如图2a所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图2b所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图2b所示的K个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
[0125] K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
[0126] 可选的,上述转换单元可以设置在主处理电路101内。
[0127] 上述主处理电路还可以包括:
[0128] 激活处理电路111,用于执行主处理电路内数据的激活运算或激活求导运算;
[0129] 加法处理电路112,用于执行加法运算或累加运算。
[0130] 所述主处理电路,用于将确定所述输入神经元数据为广播数据,权值数据为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
[0131] 所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将中间结果传输给所述主处理电路;
[0132] 所述主处理电路,用于第i层正向输出结果、第i层输出结果梯度、第i层权值梯度,并依据第i层权值梯度对第i层权值进行更新。
[0133] 所述从处理电路包括:乘法处理电路;
[0134] 所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
[0135] 转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
[0136] 累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
[0137] 另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
[0138] 下面通过神经网络运算指令来说明如图1所示的计算装置的具体计算方法。对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
[0139] 在一种可选的实施方案中,如图2c所示,所述装置还可以包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
[0140] 上述树型模块具有收发功能,例如如图2c所示,该树型模块即为发送功能,如图2d所示,该树型模块即为接收功能。
[0141] 所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据以及运算指令。
[0142] 可选的,该树型模块为计算装置的可选择结构,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
[0143] 可选的,该树型模块可以为n叉树结构,例如,如图2c所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点。
[0144] 可选的,上述运算单元内的主处理电路可以携带单独的缓存,具体的,可以包括:神经元缓存单元,该神经元缓存单元缓存该从处理电路的输入神经元向量数据和输出神经元值数据。该主处理电路还可以包括:权值缓存单元,用于缓存该从处理电路在计算过程中需要的权值数据。
[0145] 在一种可选实施例中,运算单元12如图3所示,可以包括分支处理电路103;其具体的连接结构如图3所示,其中,
[0146] 主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;
[0147] 分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。
[0148] 可选的,上述分支处理电路103可以设置存储模块,该存储模块可以划分一个或多个共享区域,主处理电路以及从处理电路,具体用于对该共享区域执行数据的写入或读取操作。在分支处理电路103内设置该共享区域能够方便主处理电路以及从处理电路存储数据,并且其数据存储的读取或写入的开销很小,这样能够节省从处理电路以及主处理电路的存储模块的容量,降低计算装置的成本。
[0149] 在一种可选实施例中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:
[0150] 控制器单元从存储单元内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路;
[0151] 主处理电路确定该输入神经元矩阵x为广播数据,确定权值矩阵w为分发数据,将权值矩阵w拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将输入神经元矩阵x广播给8个从处理电路,
[0152] 从处理电路并行执行8个子矩阵与输入神经元矩阵x的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;
[0153] 主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制器单元,控制器单元将该最终结果y输出或存储至存储单元内。
[0154] 上述将8个中间结果排列得到wx的运算结果的实现具体可以为,对于矩阵乘以矩阵,确定8个子矩阵对应的输入神经元矩阵x的部分元素,提取8个子矩阵中行数最小值,部分元素的列数最小值,将行数最小值以及列数最小值即为中间结果在运算结果中的位置。
[0155] 如图1所示的计算装置执行神经网络正向运算指令的方法具体可以为:
[0156] 控制器单元从指令存储单元内提取神经网络正向运算指令、神经网络运算指令对应的操作域以及至少一个操作码,控制器单元将该操作域传输至数据访问单元,将该至少一个操作码发送至运算单元。
[0157] 控制器单元从存储单元内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元的主处理电路,控制器单元从存储单元内提取输入数据Xi,将该输入数据Xi发送至主处理电路。
[0158] 主处理电路依据该至少一个操作码确定为乘法运算,将输入数据Xi转换为定点输入数据Xi,将权值数据转换为定点权值数据,确定定点输入数据Xi为广播数据,确定定点权值数据为分发数据,将定点权值w拆分成n个定点数据块;
[0159] 控制器单元的指令处理单元依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、输入数据Xi以广播的方式发送给多个从处理电路,将该n个定点数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该定点输入数据Xi与接收到的定点数据块执行定点乘法运算得到定点中间结果,将该定点中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,将该累加结果转换成浮点累加结果,依据该偏置指令将该浮点累加结果执行加偏置b得到最终结果,将该最终结果发送至该控制器单元。
[0160] 本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
[0161] 本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络训练计算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
[0162] 该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
[0163] 本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。图4为组合处理装置的示意图。
[0164] 其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
[0165] 通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
[0166] 可选的,该结构如图4所示,还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
[0167] 该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
[0168] 在一些实施例里,还申请了一种芯片,其包括了上述神经网络运算装置或组合处理装置。
[0169] 在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
[0170] 在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图5,图5提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
[0171] 所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDRSDRAM(英文:Double DataRateSDRAM,双倍速率同步动态随机存储器)。
[0172] DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
[0173] 在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
[0174] 所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE3.0X16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
[0175] 所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
[0176] 在一些实施例里,申请了一种电子设备,其包括了上述板卡。
[0177] 电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0178] 所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
[0179] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0180] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0181] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0182] 上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个物理部件内,或者也可以分布到多个物理部件上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0183] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,可读存储器可以包括:闪存盘、只读存储器(read‑only memory,ROM)、随机存取器(random access memory,RAM)或光盘等。
[0184] 以上对本申请实施例进行了详细介绍,本申请中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。