神经网络计算装置、神经网络计算方法及相关产品转让专利

申请号 : CN201811654177.8

文献号 : CN109740739B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 不公告发明人

申请人 : 中科寒武纪科技股份有限公司

摘要 :

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

权利要求 :

1.一种神经网络计算装置,其特征在于,所述神经网络计算装置用于训练神经网络模型,所述神经网络模型中包括第i层的神经网络训练运算,i为正整数,所述神经网络模型的输入神经元数据的至少一部分数据为定点数格式,且所述定点数格式的位数数量小于预设数量,所述神经网络模型的权值数据为稀疏的权值数据;所述神经网络计算装置包括:运算单元、控制器单元以及存储单元;所述控制器单元,用于获取所述第i层的输入神经元数据以及所述第i层的权值数据,并将所述第i层的输入神经元数据和所述第i层的权值数据发送给所述运算单元;

所述运算单元,用于确定所述第i层的输入神经元数据中的摆放顺序,根据所述摆放顺序进行组划分,得到多个组,并对所述第i层的权值数据中与所述摆放顺序中的一个维度对应的目标参数进行处理,得到处理后的目标参数;

所述运算单元,还用于对所述多个组中每一组的数据做处理,得到多个值,每一组对应一个值;将处理后的所述第i层的权值数据中的元素值从小到大进行排序;按照预设比例将排序后的所述i层的权值数据中的绝对值小于预设阈值的组中数据稀疏为0,得到稀疏后的所述第i层的权值数据,将该稀疏后的所述第i层的权值数据以及所述多个组的数据执行所述第i层的训练运算,得到所述第i层的权值梯度;

所述运算单元,还用于将稀疏后的所述第i层的权值数据与所述权值梯度进行相乘,得到更新后的权值数据;

其中,所述运算单元、所述控制器单元以及所述存储单元均采用硬件的形式实现且均为集成电路,各功能单元集成在一个处理单元中,或者,各个单元单独物理存在。

2.根据权利要求1所述的装置,其特征在于,所述第i层的神经网络训练运算中包括第i层正向运算和第i层反向运算。

3.根据权利要求1或2所述的装置,其特征在于,所述第i层为卷积层或者全连接层。

4.根据权利要求3所述的装置,其特征在于,在所述根据所述摆放顺序进行组划分方面,所述运算单元具体用于:在所述第i层为卷积层时,沿所述摆放顺序的最内层维度进行组划分;

或者,

在所述第i层为全连接层时,按照所述输入神经元数据的行维度进行组划分。

5.根据权利要求1或2所述的装置,其特征在于,在所述对所述多个组中每一组的数据做处理方面,所述运算单元具体用于:选取所述多个组中每一组的最大值,得到所述多个值;

或者,

确定所述多个组中每一组的均值,得到所述多个值。

6.根据权利要求1或2所述的装置,其特征在于,所述装置还包括:配置解析单元和映射单元,存储器中预先存储稀疏处理指令以及预设配置数据时,其中,所述配置解析单元,用于根据所述预设配置数据设置映射模式;

所述映射单元,用于根据所述映射模式对所述第i层的输入神经元数据和所述第i层的权值数据进行映射处理,得到输入神经元-权值对,所述输入神经元-权值对为映射处理后的输入神经元数据与权值数据之间的映射关系;

在所述将所述第i层的输入神经元数据和所述第i层的权值数据发送给所述运算单元方面,所述控制器单元具体用于:将映射处理后的所述第i层的输入神经元数据和所述第i层的权值数据发送给所述运算单元。

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

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

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

或者,所述机器学习运算装置应用于组合处理装置,所述组合处理装置还包括通用互联接口和其他处理装置;

所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。

8.一种神经网络芯片,其特征在于,所述机器学习芯片包括如权利要求7所述的机器学习运算装置。

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

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

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

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

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

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

11.一种神经网络计算方法,其特征在于,应用于神经网络计算装置,所述神经网络计算装置包括:运算单元、控制器单元以及存储单元;所述神经网络计算装置用于训练神经网络模型,所述神经网络模型中包括第i层的神经网络训练运算,i为正整数,所述神经网络模型的输入神经元数据的至少一部分数据为定点数格式,且所述定点数格式的位数数量小于预设数量,所述神经网络模型的权值数据为稀疏的权值数据,所述方法包括:所述控制器单元获取所述第i层的输入神经元数据以及所述第i层的权值数据;

所述运算单元确定所述第i层的输入神经元数据中的摆放顺序,根据所述摆放顺序进行组划分,得到多个组,并对所述第i层的权值数据中与所述摆放顺序中的一个维度对应的目标参数进行处理,得到处理后的目标参数;

所述运算单元对所述多个组中每一组的数据做处理,得到多个值,每一组对应一个值;

将处理后的所述第i层的权值数据中的元素值从小到大进行排序;

所述运算单元按照预设比例将排序后的所述i层的权值数据中的绝对值小于预设阈值的组中数据稀疏为0,得到稀疏后的所述第i层的权值数据,将该稀疏后的所述第i层的权值数据以及所述多个组的数据执行所述第i层的训练运算,得到所述第i层的权值梯度;

所述运算单元将稀疏后的所述第i层的权值数据与所述权值梯度进行相乘,得到更新后的权值数据;

其中,所述运算单元、所述控制器单元以及所述存储单元均采用硬件的形式实现且均为集成电路,各功能单元集成在一个处理单元中,或者,各个单元单独物理存在。

12.根据权利要求11所述的方法,其特征在于,所述第i层的神经网络训练运算中包括第i层正向运算和第i层反向运算。

13.根据权利要求11或12所述的方法,其特征在于,所述第i层为卷积层或者全连接层。

14.根据权利要求13所述的方法,其特征在于,所述根据所述摆放顺序进行组划分,包括:在所述第i层为卷积层时,沿所述摆放顺序的最内层维度进行组划分;

或者,

在所述第i层为全连接层时,按照所述输入神经元的行维度进行组划分。

15.根据权利要求11或12所述的方法,其特征在于,所述对所述多个组中每一组的数据做处理,包括:选取所述多个组中每一组的最大值,得到所述多个值;

或者,

确定所述多个组中每一组的均值,得到所述多个值。

16.根据权利要求11或12所述的方法,其特征在于,所述方法还包括:根据预设配置数据设置映射模式;

根据所述映射模式对所述第i层的输入神经元数据和所述第i层的权值数据进行映射处理,得到输入神经元-权值对,所述输入神经元-权值对为映射处理后的输入神经元数据与权值数据之间的映射关系;

所述确定所述第i层的输入神经元数据中的摆放顺序,包括:

确定映射处理后的所述第i层的输入神经元数据中的摆放顺序。

说明书 :

神经网络计算装置、神经网络计算方法及相关产品

技术领域

[0001] 本发明涉及数据处理领域,尤其涉及一种神经网络计算装置、神经网络计算方法及相关产品。

背景技术

[0002] 稀疏模型中的权值数据params以一定比例为0。稀疏模型可在基本不降低神经网络推理准确度的情况下加快网络运行速度,如何优化稀疏模型的加速特性的问题亟待解决。

发明内容

[0003] 本发明实施例提供一种神经网络计算装置、神经网络计算方法及相关产品,能够更好地发挥稀疏特性,使得网络推理速度更快。
[0004] 第一方面,本发明实施例提供一种神经网络计算装置,所述神经网络计算装置用于训练神经网络模型,所述神经网络模型中包括第i层的神经网络训练运算,i为正整数,所述神经网络模型的输入神经元数据的至少一部分数据为定点数格式,且所述定点数格式的位数数量小于预设数量,所述神经网络模型的权值数据为稀疏的权值数据;所述神经网络计算装置包括:运算单元、控制器单元以及存储单元;
[0005] 所述控制器单元,用于获取所述第i层的输入神经元数据以及所述第i层的权值数据,并将所述第i层的输入神经元数据和所述第i层的权值数据发送给所述运算单元;
[0006] 所述运算单元,用于确定所述第i层的输入神经元数据中的摆放顺序,根据所述摆放顺序进行组划分,得到多个组,并对所述第i层的权值数据中与所述摆放顺序中的一个维度对应的目标参数进行处理,得到处理后的目标参数;
[0007] 所述运算单元,还用于对所述多个组中每一组的数据做处理,得到多个值,每一组对应一个值;将处理后的所述第i层的权值数据中的元素值从小到大进行排序;按照预设比例将排序后的所述i层的权值数据中的绝对值小于预设阈值的组中数据稀疏为0,得到稀疏后的所述第i层的权值数据,将该稀疏后的所述第i层的权值数据以及所述多个组的数据执行所述第i层的训练运算,得到所述第i层的权值梯度;
[0008] 所述运算单元,还用于将稀疏后的所述第i层的权值数据与所述权值梯度进行相乘,得到更新后的权值数据。
[0009] 第二方面,本发明实施例还提供了一种机器学习运算装置,所述机器学习运算装置包括一个或多个如第一方面所述的神经网络计算装置,用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
[0010] 当所述机器学习运算装置包含多个所述神经网络计算装置时,所述多个所述神经网络计算装置间可以通过特定的结构进行连接并传输数据;
[0011] 其中,多个所述神经网络计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述神经网络计算装置共享同一控制系统或拥有各自的控制系统;多个所述神经网络计算装置共享内存或者拥有各自的内存;多个所述神经网络计算装置的互联方式是任意互联拓扑。
[0012] 第三方面,本发明实施例还提供了一种组合处理装置,所述组合处理装置包括如第二方面所述的机器学习运算装置,通用互联接口和其他处理装置;
[0013] 所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
[0014] 第四方面,本发明实施例还提供了一种神经网络芯片,所述机器学习芯片包括如第二方面所述的机器学习运算装置或如第三方面所述的组合处理装置。
[0015] 第五方面,本发明实施例还提供了一种电子设备,所述电子设备包括如第四方面所述的芯片。
[0016] 第六方面,本发明实施例还提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如第五方面所述的神经网络芯片;
[0017] 其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
[0018] 所述存储器件,用于存储数据;
[0019] 所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
[0020] 所述控制器件,用于对所述芯片的状态进行监控。
[0021] 第七方面,本发明实施例还提供了一种神经网络计算方法,应用于神经网络计算装置,所述神经网络计算装置用于训练神经网络模型,所述神经网络模型中包括第i层的神经网络训练运算,i为正整数;所述神经网络模型的输入神经元数据的至少一部分数据为定点数格式,且所述定点数格式的位数数量小于预设数量,所述神经网络模型的权值数据为稀疏的权值数据;所述方法包括:
[0022] 获取所述第i层的输入神经元数据以及所述第i层的权值数据;
[0023] 确定所述第i层的输入神经元数据中的摆放顺序,根据所述摆放顺序进行组划分,得到多个组,并对所述第i层的权值数据中与所述摆放顺序中的一个维度对应的目标参数进行处理,得到处理后的目标参数;
[0024] 对所述多个组中每一组的数据做处理,得到多个值,每一组对应一个值;将处理后的所述第i层的权值数据中的元素值从小到大进行排序;
[0025] 按照预设比例将排序后的所述i层的权值数据中的绝对值小于预设阈值的组中数据稀疏为0,得到稀疏后的所述第i层的权值数据,将该稀疏后的所述第i层的权值数据以及所述多个组的数据执行所述第i层的训练运算,得到所述第i层的权值梯度;
[0026] 将稀疏后的所述第i层的权值数据与所述权值梯度进行相乘,得到更新后的权值数据。
[0027] 可以看出,在本发明实施例的方案中,神经网络计算装置用于训练神经网络模型,神经网络模型中包括第i层的神经网络训练运算,i为正整数,神经网络模型的输入神经元数据的至少一部分数据为定点数格式,且定点数格式的位数数量小于预设数量,神经网络模型的权值数据为稀疏的权值数据;神经网络计算装置包括:运算单元、控制器单元以及存储单元,控制器单元获取第i层的输入神经元数据以及第i层的权值数据,并将第i层的输入神经元数据和第i层的权值数据发送给运算单元,运算单元确定第i层的输入神经元数据中的摆放顺序,根据摆放顺序进行组划分,得到多个组,并对第i层的权值数据中与摆放顺序中的一个维度对应的目标参数进行处理,得到处理后的目标参数,运算单元对多个组中每一组的数据做处理,得到多个值,每一组对应一个值,将处理后的第i层的权值数据中的元素值从小到大进行排序,按照预设比例将排序后的i层的权值数据中的绝对值小于预设阈值的组中数据稀疏为0,得到稀疏后的第i层的权值数据,将该稀疏后的第i层的权值数据以及多个组的数据执行第i层的训练运算,得到第i层的权值梯度,运算单元将稀疏后的第i层的权值数据与权值梯度进行相乘,得到更新后的权值数据,如此,能够更好地发挥稀疏特性,使得网络推理速度更快。
[0028] 本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

[0029] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030] 图1A为本发明实施例提供的一种神经网络计算装置的结构示意图;
[0031] 图1B为本申请实施例提供的稀疏模式1的处理过程示意图;
[0032] 图1C为本申请实施例提供的稀疏模式2的处理过程示意图;
[0033] 图1D为本申请实施例提供的稀疏模式3的处理过程示意图;
[0034] 图1E为本发明施例提供一种定点数据的数据结构示意图;
[0035] 图1F为卷积1的M个卷积核数据示意图;
[0036] 图1G为卷积2输入数据示意图;
[0037] 图2是本申请实施例提供的一种神经网络计算装置的结构示意图;
[0038] 图3是本申请一个实施例提供的神经网络计算装置的结构图;
[0039] 图4是本申请另一个实施例提供的神经网络计算装置的结构图;
[0040] 图5是本申请实施例提供的主处理电路的结构图;
[0041] 图6是本申请实施例提供的另一种神经网络计算装置的结构图;
[0042] 图7是本申请实施例提供的树型模块的结构示意图;
[0043] 图8是本申请实施例提供的又一种神经网络计算装置的结构图;
[0044] 图9是本申请实施例提供的还一种神经网络计算装置的结构图;
[0045] 图10是本申请实施例提供的一种组合处理装置的结构图;
[0046] 图11是本申请实施例提供的一种神经网络计算装置的结构示意图;
[0047] 图12是本申请实施例提供的另一种组合处理装置的结构图;
[0048] 图13是本申请实施例提供的一种板卡的结构示意图;
[0049] 图14为本发明实施例提供的一种组稀疏训练方法的流程示意图;

具体实施方式

[0050] 以下分别进行详细说明。
[0051] 本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0052] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0053] 电子设备可以包括各种具有无线通信功能的手持设备、车载设备、无线耳机、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,UE),移动台(mobile station,MS),终端设备(terminal device)等等,电子设备例如可以为智能手机、平板电脑、耳机盒等等。为方便描述,上面提到的设备统称为电子设备。
[0054] 上述电子设备可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
[0055] 请参见图1A,图1A为本发明实施例提供的一种神经网络计算装置100的结构示意图。如图1A所示,该神经网络计算装置100包括:存储单元1019、控制器单元1029和运算单元1039。
[0056] 在一个可能的示例中,所述控制器单元1029,用于获取第i层的输入神经元数据以及所述第i层的权值数据,并将所述第i层的输入神经元数据和所述第i层的权值数据发送给所述运算单元;
[0057] 所述运算单元1039,用于确定所述第i层的输入神经元数据中的摆放顺序,根据所述摆放顺序进行组划分,得到多个组,并对所述第i层的权值数据中与所述摆放顺序中的一个维度对应的目标参数进行处理,得到处理后的目标参数;
[0058] 所述运算单元1039,还用于对所述多个组中每一组的数据做处理,得到多个值,每一组对应一个值;将处理后的所述第i层的权值数据中的元素值从小到大进行排序;按照预设比例将排序后的所述i层的权值数据中的绝对值小于预设阈值的组中数据稀疏为0,得到稀疏后的所述第i层的权值数据,将该稀疏后的所述第i层的权值数据以及所述多个组的数据执行所述第i层的训练运算,得到所述第i层的权值梯度;
[0059] 所述运算单元1039,还用于将稀疏后的所述第i层的权值数据与所述权值梯度进行相乘,得到更新后的权值数据。
[0060] 其中,上述预设阈值、预设比例均可以由用户自行设置或者系统默认。目标参数为摆放顺序中的一个维度对应的一个目标参数(维度参数),例如,目标参数可以为每一组的数据量,则处理后的目标参数的大小由运算单元位宽与数据位宽的比值决定。
[0061] 其中,所述神经网络模型中包括第i层的神经网络训练运算,i为正整数,所述第i层的神经网络训练运算中包括第i层正向运算和第i层反向运算。
[0062] 另外,更新后的权值数据可以用于下一次的反向训练。
[0063] 在一个可能的示例中,所述存储单元1019,用于存储第i层的输入神经元数据和所述第i层的权值数据;
[0064] 所述控制器单元1029,用于从所述存储单元1019中读取所述第i层的输入神经元数据和所述第i层的权值数据。
[0065] 或者,
[0066] 所述控制器单元1029,用于从外部设备中获取所述第i层的输入神经元数据和所述第i层的权值数据。
[0067] 其中,上述外部设备可以为触控面板、键盘、信号采集器等等,在此不做限定,该信号采集器可以用于采集以下至少一种信号:语音信号、图像信号、感应信号等等,在此不做限定,感应信号可以为重力传感器采集的信号、超声波传感器采集的信号、接近传感器采集的信号等等,在此不做限定。
[0068] 在一个可能的示例中,上述第i层为神经网络模型的任一层,例如,第i层为卷积层,又例如,第i层为全连接层。
[0069] 在一个可能的示例中,在所述根据所述摆放顺序进行组划分方面,所述运算单元1039具体用于:
[0070] 在所述第i层为卷积层时,沿所述摆放顺序的最内层维度进行组划分,则上述目标参数对应的一个维度可以为该最内层维度;
[0071] 或者,
[0072] 在所述第i层为全连接层时,按照所述输入神经元的行维度进行组划分,则上述目标参数对应的一个维度可以为该行维度。
[0073] 在一个可能的示例中,在所述第i层为卷积层时,所述第i层的输入神经元数据的四个维度为(N,C,H,W),其中,N表示输入神经元数据的batch_size,C表示输入神经元数据的通道数,H表示输入神经元数据的高度,W表示输入神经元数据的宽度;所述第i层的权值数据的四个维度为(M,C,KH,KW),M表示卷积核的数量,C表示卷积核的通道数,KH表示卷积核的高度,KW表示卷积核的宽度。
[0074] 具体实现中,在神经网络卷积层中,假设,其输入神经元数据的形状为(N,C,H,W),其中,N表示输入神经元数据的batch_size,C表示输入神经元数据的通道数,H表示输入神经元数据的高度,W表示输入神经元数据的宽度。假设,其权值数据的形状为(M,C,KH,KW),其中M表示卷积核的数量,C表示每个卷积核的通道数,KH和KW分别表示每个卷积核的高和宽。
[0075] 在一个可能的示例中,在所述第j层为全连接层时,所述第j层的输入神经元数据的形状为(n,nin),其中,n表示输入神经元数据的batch_size,nin表示输入神经元数据的长度,所述输入神经元数据对应的权值数据的形状为(nout,nin),其中,nout表示全连接层每个输出神经元数据的长度。
[0076] 具体实现中,在全连接层中,假设其输入神经元数据的形状为(n,nin),其中,n表示输入神经元数据的batch_size,nin表示每一个输入神经元数据的长度。假设,其权值数据的形状为(nout,nin),其中,nout表示全连接层每个输出神经元数据的长度,nin表示每个输入神经元数据的长度。
[0077] 在一个可能的示例中,在所述对所述多个组中每一组的数据做处理方面,所述运算单元1039具体用于:
[0078] 选取所述多个组中每一组的最大值,得到所述多个值;
[0079] 或者,
[0080] 确定所述多个组中每一组的均值,得到所述多个值。
[0081] 在一个可能的示例中,预设比例可以由用户例如设置或者系统默认,例如,针对第i层为卷积层时,如预设比例为20%-60%、10%-80%、10%~90%、30%~80%等等,在此不作限定,又例如,针对第i层为全连接层时,预设比例可以由用户例如设置或者系统默认,例如,预设比例为50%-80%,或者,40%-90%。
[0082] 上述稀疏处理算法,也可以称之为组稀疏处理算法。上述稀疏处理算法可应用在训练方法的权值更新步骤中,即正向和/或反向运算不做该稀疏方法,相当于,给权值更新步骤增加一个预处理,先对网络权值做稀疏处理,再更新稀疏处理后的权值,再将处理后的数据用于正向或者反向运算。
[0083] 下面以8位数据为例解释组稀疏训练原理:
[0084] 举例说明下,在第i层为卷积层时,假设底层数据摆放顺序为NHWC,那么,将沿C维度做组划分即把摆放顺序在最后的维度做组划分,按照上述对卷积层数据块形状的描述,在卷积层中,组稀疏在输入神经元数据上的分组划分窗口为(1,2,1,1),窗口滑动步长为(1,2,1,1),组稀疏在权值数据上的分组划分窗口为(1,2,1,1),窗口滑动步长为(1,2,1,1)。按照上述对全连接层数据块形状的描述,在全连接层中,组稀疏在输入神经元数据上的分组划分窗口为(1,2),窗口滑动步长为(1,2),组稀疏在权值数据上的分组划分窗口为(1,
2),窗口滑动步长为(1,2)。
[0085] 进一步可选地,每个组中的数据个数等同于一个数据单位中的数据个数。次优的,例如,处理器是n位,较少位定点数是m位,组数可以n/m向下取整-1的任意值。例如n是64,m是8,则可以有一组,即8个8位定点数合为一组,或者,也可以有4组,即4个8位定点数合为一组,一共两组。每组中的数据要么同时稀疏为0,要么都不稀疏。以上述卷积为例,具体过程为:
[0086] 神经网络计算装置100可先对每个组中的数据做处理,每个组经过处理后得到一个值,而权值数据矩阵形状也相应的从(N,C,H,W)变成了(N,C/2,H,W),(N,C/2,H,W)中的每一个数据都代表了一个长度为2的组,然后将处理后的形状为(N,C/2,H,W)的矩阵中的数值从小到大排序,最后按一定比例将绝对值较小的数据所对应的组中数据稀疏为0。
[0087] 该神经网络计算装置可应用在训练过程的权值数据更新步骤中,即正向和反向运算不做该稀疏方法,相当于给权值数据更新步骤增加一个预处理,先对网络权值数据做稀疏处理,再更新稀疏处理后的权值数据.
[0088] 该神经网络计算装置可应用在训练过程的权值数据更新步骤中,即正向和反向运算不做该稀疏方法,相当于给权值数据更新步骤增加一个预处理,先对网络权值数据做稀疏处理,再更新稀疏处理后的权值数据.
[0089] 举例说明下,例如,底层硬件以16位为一个数据单位,因此在8bit模型中,两个8bit数据占用一个16位数据单元。如下进行具体说明。
[0090] 底层运算单元为16位,采用4位定点表示法时:
[0091] 4位 4位 4位 4位
[0092] 即,一个16位运算单元可以摆放4个数。
[0093] 底层运算单元为16位,采用8位定点表示法时:
[0094]8位 8位
[0095] 即,一个16位运算单元可以摆放2个数。
[0096] 具体实现中,上述神经网络计算装置可将一个宽位运算单元对应的多个窄位数据同时稀疏为0,单元运算时所取的多个窄位数据都为0,则该运算单元无需做计算,能够有效节约网络计算时间。以底层运算单元为16位为例,若当前网络层有100个4位定点数,神经网络运算时将会做25次单元运算。每个运算单元取4个4位定点数,如果这4个定点数都为0(应用上述组稀疏算法的结果),那么底层硬件无需做运算,直接输出为0,可加快网络推理速度,如果4个定点数不同时为0(应用普通稀疏算法的结果),那么该运算单元还是要参与计算,还是要耗费运算时间,网络推理速度提升有限。
[0097] 具体地,以一个16位数据单元为例,如下:
[0098]4位 4位 4位 4位
0 1 -0.5 0.7
0.2 1 2 1.9
-2.1 1.25 2 3
1 3 4 3
[0099] 假设上表中每一行是16位,存放4个数,每个数是用4位定点表示,且运算单元每次取的4个4位定点数恰好是上面的一行。上述组稀疏算法将每一行(即每一组)的最大值(也可是平均值、最小值、加权平均值等)提取出来,得到一个4*1的矩阵:[1,2,3,4]T,矩阵中的每一个数都对应着一个组;然后将4*1的矩阵中的数据按绝对值从小到大排列,按稀疏比例将较小的数稀疏为0,例如稀疏比例为50%,那么将前两组数将会被稀疏为0,稀疏后的数据结果,保证稀疏的单位为组,即每组中的数据要么同时稀疏为0,要么都不稀疏:
[0100] 4位 4位 4位 4位0 0 0 0
0 0 0 0
-2.1 1.25 2 3
1 3 4 3
[0101] 从上述描述中可以看出,进行排序的矩阵并非原矩阵,原矩阵数据量/排序矩阵数据量等于每个组的数据量,每个组的数据量是由:运算单元位宽/定点数位宽决定的。
[0102] 采用传统稀疏训练模式得到的模型稀疏位置比较分散,不能保证单个数据单位中的多个较少位定点数都为0,在推理过程中也就不能充分利用稀疏特性,得到的加速效果有限。而本发明实施例中,神经网络计算装置是一种增加了更强约束的稀疏训练工具,目的是使同一个数据单位中的多个较少位定点数能同时稀疏为0,此神经网络计算装置可更好发挥稀疏模型的加速特性。
[0103] 基于上述本发明实施例,训练较少位定点数网络模型时,组稀疏训练工具得到的模型可更好的发挥稀疏特性,使得网络推理速度更快。
[0104] 在一个可能的示例中,所述存储单元1019,用于存储数据和指令;所述控制器单元1029,用于从所述存储单元中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;所述运算单元1039,用于响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果。
[0105] 其中,运算单元1039可支持多种数据类型的运算,根据指令要求选择相应的运算器完成对应运算,例如,数据类型可以为16位定点数据或者32位浮点数据等。举例说明下,指令是矩阵加矩阵,选择加法器;指令是矩阵乘矩阵,选择乘法器和加法器,指令是16位定点运算指令,接收该指令进行16位定点运算,等等。当然,上述第一数据可以包括第i层的输入神经元数据和第i层的权值数据。
[0106] 其中,上述数据可至少包括定点数据,当然还可以包括以下至少一种数据类型:整型数据、离散型数据、连续型数据、幂次型数据、浮点型数据,数据表示的长度可为32位长度浮点数据,16位长度定点数据,16位长度浮点数据,8位长度定点数据,4位长度定点数据等等;数据可包括以下至少一种:输入神经元数据、权值数据和偏置数据。
[0107] 进一步可选地,神经网络计算装置还可以包括:配置解析单元、映射单元、指令缓存单元、指令处理单元以及稀疏单元;
[0108] 在第一指令为所述稀疏处理指令以及第一数据还包括预设配置数据时,其中,所述配置解析单元,用于根据所述预设配置数据设置映射模式;
[0109] 所述映射单元,用于根据所述映射模式对所述第i层的输入神经元和所述第i层权值数据进行映射处理,得到输入神经元-权值对,所述输入神经元-权值对为映射处理后的输入神经元数据与权值数据之间的映射关系。
[0110] 可选地,所述指令缓存单元,用于接收由所述控制器单元发送的目标指令;
[0111] 所述指令处理单元,用于将所述目标指令译码为运算指令;由所述运算单元对所述输入神经元-权值对执行运算操作,得到运算结果。
[0112] 可选地,在所述将所述第i层的输入神经元数据和所述第i层的权值数据发送给所述运算单元方面,所述控制器单元1029具体用于:
[0113] 将映射处理后的所述第i层的输入神经元数据和所述第i层的权值数据发送给所述运算单元1039。
[0114] 其中,预设配置数据可包括以下至少一种:数据类型,或者,稀疏参数。目标指令为矩阵乘矩阵计算指令,其译码后得到运算指令,该运算指令可以包括乘法运算指令和加法运算指令。第一指令包括至少一个目标指令。
[0115] 可选地,稀疏单元,用于依据所述稀疏参数对所述运算结果进行稀疏处理,得到稀疏处理后的运算结果。
[0116] 可选地,所述稀疏参数包括稀疏模式;所述映射单元根据所述映射模式对所述输入神经元和所述权值进行映射处理,具体为:
[0117] 当处于所述稀疏模式为第一稀疏模式时,获取所述第一稀疏模式对应的权值稀疏序列,并依据该权值稀疏序列对所述权值进行映射处理;
[0118] 当处于所述稀疏模式为第二稀疏模式时,获取所述第二稀疏模式对应的神经元稀疏序列,并依据该神经元稀疏序列对所述输入神经元进行映射处理;
[0119] 当处于所述稀疏模式为第三稀疏模式时,获取所述第三稀疏模式对应的权值稀疏序列和神经元稀疏序列,并依据该权值稀疏序列和神经元稀疏序列对所述输入神经元和所述权值数据进行映射处理。
[0120] 可选地,稀疏参数可包括以下至少一种:稀疏标志,稀疏率,稀疏模式等。
[0121] 其中,稀疏标志用于确定是否进行稀疏处理,例如,可以用0表示不进行稀疏处理,1表示进行稀疏处理,也可以用1表示不进行稀疏处理,0表示进行稀疏处理。可以理解,还可以用根据需求灵活选择稀疏标志的表示方式。在进行稀疏处理的情况下,稀疏率表示每次进行稀疏处理神经元数据和/或权值数据的比例,例如5%,10%,25%等等。稀疏模式表示稀疏处理的具体模式,本申请实施例中,稀疏模式主要至少包括3种:稀疏模式1,仅权值稀疏处理;稀疏模式2,仅神经元数据稀疏处理;稀疏模式3,权值和神经元数据均稀疏处理,当然,稀疏模式还可以为以上至少两种模式组合,例如,稀疏模式1+稀疏模式2。另外,在未作稀疏处理的情况下,对应的稀疏模式记作模式0。又例如,神经元数据的稀疏率和权值数据的稀疏率还可不一样,例如,本申请实施例提供一种稀疏率的表示方式(A,B),其中,A为神经元数据的稀疏率,B为权值数据的稀疏率,例如为(5%,6%),即神经元数据的稀疏率为
5%,权值数据的稀疏率为6%。
[0122] 可选地,在没有稀疏标志的情况下,至少包括以下四种稀疏模式:稀疏模式0,不做稀疏;稀疏模式1,仅权值数据稀疏;稀疏模式2,仅神经元数据稀疏;稀疏模式3,权值和神经元数据都稀疏。
[0123] 举例来说,上一层的输出神经元数据作为下一层的输入神经元数据时候,因为输出神经元数据已作稀疏处理,所以在下一层运算里,假如,稀疏的标准不改变,输入神经元数据就不需要重复做稀疏。
[0124] 其中,所述配置解析单元由神经网络的配置数据解析获得的稀疏模式进而设置映射单元的处理模式,即根据不同的稀疏模式对应不同的映射模式。
[0125] 可选地,存储单元中预先存储稀疏模式与映射模式之间的映射关系,进而,依据该映射关系确定与稀疏模式对应的映射模式,在不同的映射模式下,根据神经元稀疏序列和权值稀疏序列做稀疏化,当然,映射关系不一定存储在存储单元中,还可以存储在片外存储器上,或者,还可以存储在其他设备(具备存储器功能的电子设备)上。存储单元中可预先存储权值稀疏序列和/或神经元稀疏序列。
[0126] 可选地,所述稀疏单元依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:
[0127] 对神经元数据的元素绝对值排序,根据稀疏率计算获得需要稀疏的元素个数,根据需要稀疏的元素个数对排序后的神经元数据的元素作稀疏处理,并将稀疏后的稀疏神经元数据和神经元稀疏序列发送至所述控制器单元11。
[0128] 其中,可对输出神经元的元素绝对值进行排序,根据稀疏率计算获得需要稀疏的元素个数,然后对输出神经元的元素绝对值小于预设阈值的元素作稀疏处理,即置其值为0,预设阈值可由用户自行设置或者系统默认,稀疏率可动态调整。
[0129] 可选地,所述稀疏单元依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:
[0130] 神经元数据为0的元素保持0不变,神经元数据在预设取值区间内的元素置为0。
[0131] 其中,神经元数据为0的元素保持0不变,神经元数据在预设取值区间内的元素置为0值,预设取值空间可以由用户自行设置或者系统默认。
[0132] 举例说明下,如图1B所示,图1B为稀疏模式1的示例图。其中,稀疏权值数据只包括权值中非零的数据只存储w1,w5,w8,w9的权值数据,权值稀疏序列用于索引稀疏权值,如权值稀疏序列为100010011表示w1,w5,w8,w9的权值为非零值,而w2,w3,w4,w6,w7为0。稀疏序列的表示方式并不唯一,可以使用0表示非稀疏,即数值非零,用1表示稀疏,即数值为零,也可以采用其他可行方式。根据权值稀疏序列,选择对应的输入神经元数据,如图1B中选择d1,d5,d8,d9输入神经元数据,通过对输入神经元数据和权值数据的映射,获得对应的输入神经元-权值对。
[0133] 再举例说明下,如图1C所示,图1C为本申请实施例提供的稀疏模式2的示例图,其中稀疏神经元数据只包括神经元中非零的数据,如图1C只存储d1,d3,d5,d8的神经元数据,神经元稀疏序列用于索引稀疏神经元数据,如神经元稀疏序列101010010表示d1,d3,d5,d8的神经元为非零值,而d2,d4,d6,d7,d9为0。应当认识到,稀疏序列的表示方式并不唯一,可以使用0表示非稀疏,即数值非零,用1表示稀疏,即数值为零,也可以采用其他可行方式。根据神经元稀疏序列,选择对应的权值数据,如图1C中选择w1,w3,w5,w8的权值数据,通过对输入神经元数据和权值数据进行映射处理,得到对应的输入神经元-权值对。
[0134] 再举例说明下,如图1D所示,图1D为本申请实施例提供的稀疏模式3的示例图,即根据神经元稀疏序列和权值稀疏序列,选择为非零值的输入神经元数据和权值数据,如图1D所示,选择神经元数据d1,d5,d8和权值数据w1,w5,w8,通过对输入神经元数据和权值数据的映射处理,得到对应的输入神经元-权值对
[0135] 下面介绍定点数据的结构,参加图1E,图1E为本申请实施例提供一种定点数据的数据结构示意图。如图1E所示有符号的定点数据,该定点数据占X比特位,该定点数据又可称为X位定点数据。其中,该X位定点数据包括占1比特的符号位、M比特的整数位和N比特的小数位,X-1=M+N。对于无符号的定点数据,只包括M比特的整数位和N比特的小数位,即X=M+N。
[0136] 相比于32位浮点数据表示形式,本发明采用的短位定点数据表示形式除了占用比特位数更少外,对于网路模型中同一层、同一类型的数据,如第一个卷积层的所有卷积核、输入神经元或者偏置数据,还另外设置了一个标志位记录定点数据的小数点位置,该标志位即为Point Location。这样可以根据输入数据的分布来调整上述标志位的大小,从而达到调整定点数据的精度与定点数据可表示范围。
[0137] 可选地,本发明实施例中,摆放顺序可以由用户自行设置或者系统默认,如图1F和图1G,该顺序将按上述示意图代表的C维度坐标变化最快的方式摆放输入数据,例如NHWC和NWHC等。其中,C表示数据块最内层的维度,该N表示数据块最外层的维度,H和W是中间层的维度。这样的效果是C的数据是挨在一起的,由此易于提高运算的并行度,更易于多个特征图(Feature map)进行并行运算。
[0138] 在本实施例中,神经网络计算装置100是以模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application-specific integrated circuit,ASIC),执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。此外,以上存储单元1019、控制器单元1029和运算单元1039可通过图2~图13所示的装置来实现。
[0139] 参阅图2,提供了一种计算装置,该计算装置用于执行机器学习计算,该计算装置包括:控制器单元11和运算单元12,其中,控制器单元11与运算单元12连接,该运算单元12包括:一个主处理电路和多个从处理电路;
[0140] 控制器单元11,用于获取输入数据以及计算指令;在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
[0141] 上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
[0142] 控制器单元11,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
[0143] 主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
[0144] 多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
[0145] 主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
[0146] 本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
[0147] 可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
[0148] 对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
[0149] 上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
[0150] 对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
[0151] 可选的,上述计算装置还可以包括:该存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
[0152] 可选的,该控制器单元包括:指令存储单元110、指令处理单元111和存储队列单元113;
[0153] 指令存储单元110,用于存储所述人工神经网络运算关联的计算指令;
[0154] 所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;
[0155] 存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
[0156] 举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
[0157] 在一种可选方案中,该计算指令的结构可以如下表所示。
[0158] 操作码 寄存器或立即数 寄存器/立即数 ...
[0159] 上表中的省略号表示可以包括多个寄存器或立即数。
[0160] 在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
[0161]
[0162] 上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
[0163] 可选的,该控制器单元还可以包括:
[0164] 所述依赖关系处理单元108,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
[0165] 所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
[0166] 依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
[0167] 在另一种可选实施例中,运算单元12如图4所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图4所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图4所示的K个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
[0168] K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
[0169] 可选的,如图5所示,该主处理电路还可以包括:转换处理电路110、激活处理电路111、加法处理电路112中的一种或任意组合;
[0170] 转换处理电路110,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
[0171] 激活处理电路111,用于执行主处理电路内数据的激活运算;
[0172] 加法处理电路112,用于执行加法运算或累加运算。
[0173] 所述主处理电路,用于将确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
[0174] 所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
[0175] 所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
[0176] 所述从处理电路包括:乘法处理电路;
[0177] 所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
[0178] 转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
[0179] 累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
[0180] 另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
[0181] 下面通过神经网络运算指令来说明如图2所示的计算装置的具体计算方法。对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
[0182] 在一种可选的实施方案中,如图6所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
[0183] 上述树型模块具有收发功能,例如如图6所示,该树型模块即为发送功能,如图11所示,该树型模块即为接收功能。
[0184] 所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
[0185] 可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
[0186] 可选的,该树型模块可以为n叉树结构,例如,如图7所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图7所示的倒数第一层的节点。
[0187] 可选的,上述运算单元可以携带单独的缓存,如图8所示,可以包括:神经元缓存单元,该神经元缓存单元63缓存该从处理电路的输入神经元向量数据和输出神经元值数据。
[0188] 如图9所示,该运算单元还可以包括:权值缓存单元64,用于缓存该从处理电路在计算过程中需要的权值数据。
[0189] 在一种可选实施例中,运算单元12如图3所示,可以包括分支处理电路103;其具体的连接结构如图3所示,其中,
[0190] 主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;
[0191] 分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。
[0192] 在一种可选实施例中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:
[0193] 控制器单元从存储单元内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路;
[0194] 主处理电路确定该输入神经元矩阵x为广播数据,确定权值矩阵w为分发数据,将权值矩阵w拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将输入神经元矩阵x广播给8个从处理电路,
[0195] 从处理电路并行执行8个子矩阵与输入神经元矩阵x的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;
[0196] 主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制器单元,控制器单元将该最终结果y输出或存储至存储单元内。
[0197] 如图2所示的计算装置执行神经网络正向运算指令的方法具体可以为:
[0198] 控制器单元从指令存储单元内提取神经网络正向运算指令、神经网络运算指令对应的操作域以及至少一个操作码,控制器单元将该操作域传输至数据访问单元,将该至少一个操作码发送至运算单元。
[0199] 控制器单元从存储单元内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元的主处理电路,控制器单元从存储单元内提取输入数据Xi,将该输入数据Xi发送至主处理电路。
[0200] 主处理电路依据该至少一个操作码确定为乘法运算,确定输入数据Xi为广播数据,确定权值数据为分发数据,将权值w拆分成n个数据块;
[0201] 控制器单元的指令处理单元依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、输入数据Xi以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该输入数据Xi与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏置指令将该累加结果执行加偏置b得到最终结果,将该最终结果发送至该控制器单元。
[0202] 另外,加法运算和乘法运算的顺序可以调换。
[0203] 本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
[0204] 本申请还揭露了一个机器学习运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
[0205] 该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
[0206] 本申请还揭露了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。图10为组合处理装置的示意图。
[0207] 其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
[0208] 通用互联接口,用于在所述机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
[0209] 可选的,该结构如图12所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其他处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
[0210] 该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
[0211] 在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
[0212] 在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
[0213] 在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图13,图13提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
[0214] 所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
[0215] DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
[0216] 在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
[0217] 所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。可选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
[0218] 所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
[0219] 在一些实施例里,申请了一种电子设备,其包括了上述板卡。
[0220] 电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0221] 所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
[0222] 进一步地,从运算模块里的乘法器可以是并行乘法器,也可以是串行乘法器,例如,串行乘法器。因为此专利分成重要比特位和非重要比特位的方法,导致重要比特位的位宽是浮动的。比如总位数是16位,重要比特位可以是3,5,8位。因此使用并行乘法器来运算,必须要做16*16,那就非常浪费。反之用串行来做,就可以只用一部分乘法器实现3、5、8乘法,功耗就更理想。
[0223] 参见图14,图14为本发明实施例提供的一种神经网络计算方法的流程示意图。该方法应用于神经网络计算装置,所述神经网络计算装置用于训练神经网络模型,所述神经网络模型中包括第i层的神经网络训练运算,i为正整数;所述神经网络模型的输入神经元数据的至少一部分数据为定点数格式,且所述定点数格式的位数数量小于预设数量,所述神经网络模型的权值数据为稀疏的权值数据,如图14所示,该方法包括:
[0224] 1401、获取所述第i层的输入神经元数据以及所述第i层的权值数据。
[0225] 1402、确定所述第i层的输入神经元数据中的摆放顺序,根据所述摆放顺序进行组划分,得到多个组,并对所述第i层的权值数据中与所述摆放顺序中的一个维度对应的目标参数进行处理,得到处理后的目标参数。
[0226] 1403、对所述多个组中每一组的数据做处理,得到多个值,每一组对应一个值;将处理后的所述第i层的权值数据中的元素值从小到大进行排序。
[0227] 1404、按照预设比例将排序后的所述i层的权值数据中的绝对值小于预设阈值的组中数据稀疏为0,得到稀疏后的所述第i层的权值数据,将该稀疏后的所述第i层的权值数据以及所述多个组的数据执行所述第i层的训练运算,得到所述第i层的权值梯度。
[0228] 1405、将稀疏后的所述第i层的权值数据与所述权值梯度进行相乘,得到更新后的权值数据。
[0229] 在一个可能的示例中,所述第i层的神经网络训练运算中包括第i层正向运算和第i层反向运算。
[0230] 在一个可能的示例中,上述步骤1401,获取第i层的输入神经元数据以及所述第i层的权值数据,可以按照如下方式实施:
[0231] 从存储单元中读取所述第i层的输入神经元数据和所述第i层的权值数据。
[0232] 或者,
[0233] 从外部设备中获取所述第i层的输入神经元数据和所述第i层的权值数据。
[0234] 在一个可能的示例中,所述第i层为卷积层或者全连接层。
[0235] 在一个可能的示例中,上述步骤1402,根据所述摆放顺序进行组划分,可以按照如下方式实施:
[0236] 在所述第i层为卷积层时,沿所述摆放顺序的最内层维度进行组划分;
[0237] 或者,
[0238] 在所述第i层为全连接层时,按照所述输入神经元的行维度进行组划分。
[0239] 在一个可能的示例中,在所述第i层为卷积层时,所述第i层的输入神经元数据的四个维度为(N,C,H,W),其中,N表示输入神经元数据的batch_size,C表示输入神经元数据的通道数,H表示输入神经元数据的高度,W表示输入神经元数据的宽度;所述第i层的权值数据的四个维度为(M,C,KH,KW),M表示卷积核的数量,C表示卷积核的通道数,KH表示卷积核的高度,KW表示卷积核的宽度。
[0240] 在一个可能的示例中,在所述第j层为全连接层时,所述第j层的输入神经元数据的形状为(n,nin),其中,n表示输入神经元数据的batch_size,nin表示输入神经元数据的长度,所述输入神经元数据对应的权值数据的形状为(nout,nin),其中,nout表示全连接层每个输出神经元数据的长度。
[0241] 在一个可能的示例中,上述步骤1403,对所述多个组中每一组的数据做处理,可按照如下方式实施
[0242] 选取所述多个组中每一组的最大值,得到所述多个值;
[0243] 或者,
[0244] 确定所述多个组中每一组的均值,得到所述多个值。
[0245] 在一个可能的示例中,上述步骤1401-步骤1402之间,还可以包括如下步骤:
[0246] A1、根据预设配置数据设置映射模式;
[0247] A2、根据所述映射模式对所述第i层的输入神经元数据和所述第i层的权值数据进行映射处理,得到输入神经元-权值对,所述输入神经元-权值对为映射处理后的输入神经元数据与权值数据之间的映射关系;
[0248] 在上述步骤1402,确定所述第i层的输入神经元数据中的摆放顺序,可按照如下方式实施:
[0249] 确定映射处理后的所述第i层的输入神经元数据中的摆放顺序。
[0250] 在一个可能的示例中,上述步骤A2,根据所述映射模式对所述第i层的输入神经元和所述第i层的权值数据进行映射处理,可按照如下方式实施:
[0251] 当处于稀疏模式为稀疏模式1时,获取所述稀疏模式1对应的权值稀疏序列,并依据该权值稀疏序列对所述第i层的权值数据进行映射处理;
[0252] 当处于稀疏模式为稀疏模式2时,获取所述稀疏模式2对应的神经元稀疏序列,并依据该神经元稀疏序列对所述第i层的输入神经元数据进行映射处理;
[0253] 当处于稀疏模式为稀疏模式3时,获取所述稀疏模式3对应的权值稀疏序列和神经元稀疏序列,并依据该权值稀疏序列和神经元稀疏序列对所述第i层的输入神经元和所述第i层的权值数据进行映射处理。
[0254] 需要说明的是,图14所示的方法的各个步骤的具体实现过程可参见上述神经网络计算装置的具体实现过程,在此不再叙述。
[0255] 本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
[0256] 本发明实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
[0257] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0258] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0259] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0260] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0261] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以采用硬件的形式实现。
[0262] 以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。