在硬件中执行矩阵乘法制造技术

技术编号:39847249 阅读:8 留言:0更新日期:2023-12-29 16:45
本申请公开了在硬件中执行矩阵乘法,描述了使用硬件电路执行矩阵乘法的方法

【技术实现步骤摘要】
在硬件中执行矩阵乘法
[0001]分案说明
[0002]本申请属于申请日为
2018

05

17
日的中国专利技术专利申请
201880019014.4
的分案申请



[0003]本说明书涉及在硬件中执行神经网络计算


技术介绍

[0004]神经网络是机器学习模型,所述机器学习模型采用一个或多个层以针对所接收的输入生成输出,例如分类

除了输出层之外,一些神经网络还包括一个或多个隐藏层

每一个隐藏层的输出被用作对该网络中的另一层
(
例如该网络的下一隐藏层或输出层
)
的输入

网络的每一层根据相应的参数集合的当前值从所接收的输入生成输出


技术实现思路

[0005]总体上,本说明书描述了一种计算神经网络推断的专用硬件电路

[0006]总体上,本说明书中描述的主题的一个创新方面可以体现在使用硬件电路执行矩阵乘法的方法中,所述方法包括以下动作:由硬件电路的矩阵计算单元获取输入激活值和权重输入值,输入激活值和权重输入值均具有第一浮点格式;由矩阵计算单元的乘法电路将输入激活值与权重输入值相乘以生成乘积值,乘积值具有第二浮点格式,所述第二浮点格式具有比第一浮点格式更高的精度并且具有与第一浮点格式的动态范围至少一样大的动态范围;由矩阵计算单元获取第三浮点格式的部分和值,所述第三浮点格式具有比第一浮点格式更高的精度并且具有与第一浮点格式的动态范围至少一样大的动态范围;以及由硬件电路的求和电路,至少对部分和值和乘积值进行组合以生成具有第三浮点格式的更新的部分和值

[0007]此方面的实施例可以包括以下可选特征中的一个或多个

浮点格式的精度可以基于浮点格式中的有效数的可用位的计数来确定,并且浮点格式的动态范围可以基于浮点格式中的指数的可用位的计数来确定

第二浮点格式具有与第一浮点格式相同的动态范围,并且第三浮点格式具有与第一浮点格式相同的动态范围

第三浮点格式具有比第二浮点格式更高的精度

[0008]硬件电路可以被配置为执行具有多个层的神经网络的计算,并且输入激活值和权重输入值可以与多个层中的一个层相关联

[0009]方法可以包括以下动作:获取具有第三浮点格式的第一矩阵计算单体的原始激活值和原始权重值;将原始激活值转换为第一浮点格式以生成输入激活值;并将原始权重值转换为第一浮点格式以生成权重输入值

方法可以进一步包括以下动作:接收以增强的精度处理原始激活值的请求;生成输入值的激活增强精度值,激活增强精度值是激活输入值与原始激活值之间的差的度量;并且生成权重输入值的权重增强精度值,权重增强精度值
是权重输入值与原始权重值之间的差的度量

将激活输入值与权重输入值相乘以生成乘积值可以包括以下动作:由矩阵计算单元的乘法电路将输入值与权重输入值相乘

将输入值与权重增强精度值相乘

将权重输入值与激活增强精度值相乘以及将激活增强精度值与权重增强精度值相乘,并且对乘法的乘积进行组合以生成乘积值

[0010]此方面的其他实施例包括记录在一个或多个计算机存储设备上的均被配置为执行方法的动作的对应的计算机系统

装置和计算机程序

一个或多个计算机的系统可以被配置为借助于安装在系统上的软件

固件

硬件或其任何组合来执行特定操作或动作,所述系统在操作中可以使系统执行动作

一个或多个计算机程序可以被配置为借助于包括指令执行特定操作或动作,所述指令在被数据处理装置执行时,使装置执行动作

[0011]本说明书中描述的主题的另一个创新方面可以体现在包括被配置为执行第一组操作的矩阵计算单元的硬件电路中,所述第一组操作包括:获取激活输入值和权重输入值,激活输入值和权重输入值均具有第一浮点格式;将权重输入值存储在权重寄存器中,权重寄存器被配置为存储具有第一浮点格式的值;使用硬件电路的乘法电路,将激活输入值与权重输入值相乘以生成乘积值,乘积值具有第二浮点格式,第二浮点格式具有比第一浮点格式更高的精度并且具有与第一浮点格式的动态范围至少一样大的动态范围;获取第三浮点格式的部分和值,第三浮点格式具有比第一浮点格式更高的精度并且具有与第一浮点格式的动态范围至少一样大的动态范围;将部分和值存储在寄存器中的和中,寄存器中的和被配置为存储具有第三浮点格式的值;以及使用矩阵计算单元的求和电路,将部分和值与乘积值进行组合以生成具有第三浮点格式的更新的部分和值

[0012]此方面的实施例可以包括以下可选特征中的一个或多个

第一组操作可以包括将激活输入值存储在激活寄存器中,激活寄存器被配置为存储具有第一浮点格式的值

第一组操作可以包括将权重输入值存储在权重寄存器中,权重寄存器被配置为存储具有第一浮点格式的值

第一组操作可以包括将部分和值存储在寄存器中的和中,寄存器中的和被配置为存储具有第三浮点格式的值

硬件电路可以包括矩阵计算单元外部的外部求和电路

第一组操作可以包括接收以增强的精度处理原始激活值的请求;生成输入值的激活增强精度值,激活增强精度值是激活输入值与原始激活值之间的差的度量;并且生成权重输入值的权重增强精度值,权重增强精度值是权重输入值与原始权重值之间的差的度量

将激活输入值与权重输入值相乘以生成乘积值可以包括以下动作:由矩阵计算单元的乘法电路将输入值与权重输入值相乘

将输入值与权重增强精度值相乘

将权重输入值与激活增强精度值相乘以及将激活增强精度值与权重增强精度值相乘

外部求和电路可以被配置为执行包括对乘法的乘积进行组合以生成乘积值的第二组操作

[0013]此方面的其他实施例包括记录在一个或多个计算机存储设备上的均被配置为执行第一组操作和第二组操作的动作的对应的计算机系统

装置和计算机程序

一个或多个计算机的系统可以被配置为借助于安装在系统上的软件

固件

硬件或其任何组合来执行特定操作或动作,所述系统在操作中可以使系统执行动作

一个或多个计算机程序可以被配置为借助于包括指令执行特定操作或动作,所述指令在被数据处理装置执行时,使装置执行动作

[0014]可以实现本说明书中描述的主题的特定实施例,以实现以下优点中的一个或多个

硬件电路可以执行具有减少的溢出和
/
或精度丢失的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种使用硬件电路来执行矩阵乘法的方法,所述方法包括:由所述硬件电路的矩阵计算单元获取激活输入值和权重输入值,所述激活输入值和所述权重输入值各自具有第一浮点格式,其中,所述硬件电路被配置为执行具有多个层的神经网络的计算,其中,所述激活输入值和所述权重输入值与所述多个层中的一个层相关联;其中,所述第一浮点格式是
16
位格式,包括:一个可用位用于符号

八个可用位用于指数

以及七个可用位用于有效数,以表示所述第一浮点格式中的浮点;由所述矩阵计算单元的乘法电路将所述激活输入值与所述权重输入值相乘以生成乘积值,所述乘积值具有第二浮点格式;由所述矩阵计算单元获取第三浮点格式的部分和值;以及由所述硬件电路的求和电路,将至少所述部分和值与所述乘积值组合以生成具有所述第三浮点格式的更新的部分和值
。2.
根据权利要求1所述的方法,其中,浮点格式的精度是基于所述浮点格式中的有效数的可用位的计数来确定的,并且浮点格式的动态范围是基于所述浮点格式中的指数的可用位的计数来确定的
。3.
根据权利要求1所述的方法,其中:所述第二浮点格式具有比所述第一浮点格式更高的精度,并且所述第二浮点格式具有至少与所述第一浮点格式的动态范围一样大的动态范围
。4.
根据权利要求1所述的方法,其中,所述第二浮点格式具有与所述第一浮点格式相同的动态范围,并且所述第三浮点格式具有与所述第一浮点格式相同的动态范围
。5.
根据权利要求1所述的方法,其中,所述第三浮点格式具有比所述第二浮点格式更高的精度
。6.
根据权利要求1所述的方法,其中:所述第三浮点格式具有比所述第一浮点格式更高的精度;并且所述第三浮点格式具有至少与所述第一浮点格式的动态范围一样大的动态范围
。7.
根据权利要求1所述的方法,进一步包括:获取具有所述第三浮点格式的所述第一矩阵计算单元的原始激活值和原始权重值;将所述原始激活值转换为所述第一浮点格式以生成所述激活输入值;并且将所述原始权重值转换为所述第一浮点格式以生成所述权重输入值
。8.
根据权利要求7所述的方法,进一步包括:接收以增强的精度处理所述原始激活值的请求;生成所述输入值的激活增强精度值,所述激活增强精度值是所述激活输入值与所述原始激活值之间的差的度量;以及生成所述权重输入值的权重增强精度值,所述权重增强精度值是所述权重输入值与所述原始权重值之间的差的度量;以及其中,将所述激活输入值与所述权重输入值相乘以生成所述乘积值包括:由所述矩阵计算单元的所述乘法电路,将所述输入值与所述权重输入值相乘,将所述输入值与所述权重增强精度值相乘,将所述权重输入值与所述激活增强精度值相乘,以及
将所述激活增强精度值与所述权重增强精度值相乘,以及将所述乘法的乘积组合以生成所述乘积值
。9.
一种硬件电路,包括:矩阵计算单元,所述矩阵计算单元被配置为执行第一组操作,所述第一组操作包括:获取激活输入值和权重输入值,所述激活输入值和所述权重输入值两者具有第一浮点格式,其中,所述硬件电路被配置为执行具有多个层的神经网络的计算,其中,所述激活输入值和所述权重输入值与所述多个层中的一个层相关联;其中,所述第一浮点格式是
16
位格式,包括:一个可用位用于符号

八个可用位用于指数

以及七个可用位用于有效数,以表示所述第一浮点格式中的浮点;将所述权重输入值存储在权重寄存器中,所述权重寄存器被配置为存储具有所述第一浮点格式的值;使用所述硬件电路的乘法电路,将所述激活输入值与所述权重输入值相乘以生成乘积值,所述乘积值具有第二浮点格式;获取第三浮点格式的部分和值;将所述部分和值存储在寄存器中的和中,所述寄存器中的和被配置为存储具有所述第三浮点格式的值;以及使用所述矩阵计算单元的求和电路,将所述部分和值与所述乘积值组合以生成具有所述第三浮点格式的更新的部分和值
。10.
根据权利要求9所述的硬件电路,其中:所述第二浮点格式具有比所述第一浮点格式更高的精度;并且所述第二浮点格式具有至少与所述第一浮点格式的动态范围一样大的动态范围
。11.
根据权利要求9所述的硬件电路,其中:所述第三浮点格式具有比所述第一浮点格式更高的精度;并且所述第三浮点格式具有至少与所述第一浮点格式的动态范围一样大的动态范围
。12.
根据权利要求9所述的硬件电路,所述第一组操作进一步包括:将所述激活输入值存储在激活寄存器中,所述激活寄存器被配置为存储具有所述第一浮点格式的值
。13.
根据权利要求9所述的硬件电路,所述第一组操作进一步包括:将所述权重输入值存储在权重寄存器中,所述权重寄存器被配置为存储具有所述第一浮点格式的值
。14.
根据权利要求9所述的硬件电路,所述第一组操作进一步包括:将所述部分和值存储在寄存器中的和中,所述寄存器中的和被配置为存储具有所述第三浮点格式的值
。15.
根据权利要求9所述的硬件电路,进一步包括在所述矩阵计算单元外部的外部求和电路,并且其中,所述第一组操作进一步包括:接收以增强的精度处理原始激活值的请求;生成所述输入值的激活增强精度值,所述激活增强精度值是所述激活输入值与所述原始激活值之间的差的度量;以及生...

【专利技术属性】
技术研发人员:安德鲁
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1