运算数据的量化精度调整方法及相关产品与流程

文档序号:22679116发布日期:2020-10-28 12:38阅读:180来源:国知局
运算数据的量化精度调整方法及相关产品与流程

本申请涉及神经网络领域,尤其涉及一种运算数据的量化精度调整方法及相关产品。



背景技术:

人工神经网络(artificialneuralnetwork,即ann),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于cpu(centralprocessingunit,中央处理器)或gpu(英文:graphicsprocessingunit,图形处理器)来实现神经网络的推理(即正向运算),运算中如果对运算数据进行量化处理,其量化精度不变,这样导致量化精度无法与运算数据很好的匹配,降低了计算精度。



技术实现要素:

本申请实施例提供了一种运算数据的量化精度调整方法及相关产品,可提高计算精度。

第一方面,提供一种运算数据的量化精度调整方法,其特征在于,所述方法应用于人工智能处理器,所述方法包括如下步骤:

确定运算数据;获取量化命令,所述量化命令包括量化精度的数据类型以及量化精度;依据所述运算数据以及量化精度的数据类型确定该量化精度的调整策略,依据该调整策略对该量化精度进行调整,以使所述人工智能处理器依据调整后的量化精度对运算数据执行量化操作。

可选的,所述运算数据包括:输入神经元a、输出神经元b、权重w、输入神经元导数输出神经元导数权重导数中的一种或任意组合;

所述量化精度的数据类型具体包括:离散量化精度的指数s或连续量化精度f。

可选的,所述依据所述运算数据以及量化精度的数据类型确定该量化精度的调整策略具体包括:

根据待量化数据绝对值最大值向上调整s或f;

或根据待量化数据绝对值最大值逐步向上调整s或f;

或根据待量化数据分布单步向上调整s或f;

或根据待量化数据分布逐步向上调整s或f;

或根据待量化数据绝对值最大值向下调整s。

可选的,所述运算数据绝对值最大值或所述绝对值最小值的确定方式具体包括:

采用所有层分类寻找绝对值最大值或绝对值最小值;

或采用分层分类别寻找绝对值最大值或绝对值最小值;

或采用分层分类别分组进寻找绝对值最大值或绝对值最小值。

可选的,所述根据待量化数据绝对值最大值向上调整s或f具体包括:

如调整s,确定待量化数据的绝对值最大值amaxnew≥pos时,s_new=「log2(amaxnew)-bitnum+1;其中pos=(2bitnum-1_1)*2s_old;

如调整f,确定待量化数据的绝对值最大值amaxnew≥pos时,

bitnum为量化后的数据的比特位数。

可选的,所述根据待量化数据绝对值最大值逐步向上调整s或f具体包括:

如调整s,确定待量化数据的绝对值最大值amaxnew≥pos时,s_new=s_old+η;其中pos=(2bitnum-1-1)*2s_old

如调整f,确定待量化数据的绝对值最大值amaxnew≥pos时,f_new=f_old+η;其中,pos=(2bitnum-1-1)*f_old;

其中,η为逐步向上调整中单次调整的步长,bitnum为量化后的数据的比特位数。

可选的,所述根据待量化数据分布单步向上调整s或f具体包括:

如调整s,确定待量化数据的统计量zmax=amean+nastd;当zmax≥pos时,s_new=[log2(zmax)-bitnum+1];其中pos=(2bitnum-1-1)*2s_old

如调整f,确定待量化数据的统计量zmax=amean+nastd;当zmax≥pos时;

其中,bitnum为量化后的数据的比特位数,amean为待量化数据的所有元素绝对值的均值,astd为待量化数据的所有元素绝对值的标准差,n为正整数。

可选的,所述根据待量化数据分布逐步向上调整s或f具体包括:

如调整s,确定待量化数据的统计量zmax=amean+nastd;当zmax≥pos时,s_new=s_old+η;其中pos=(2bitnum-1-1)*2s_old

如调整f,确定待量化数据的统计量zmax=amean+nastd;当zmax≥pos时,f_new=f_old+η;其中,pos=(2bitnum-1-1)*f_old;

其中,η为逐步向上调整中单次调整的步长,bitnum为量化后的数据的比特位数,n为正整数。

可选的,所述根据待量化数据绝对值最大值向下调整s具体包括:

确定待量化数据的绝对值最大值且sold>smin时,snew=sold-η;

bitnum为量化后的数据的比特位数,n为正整数,smin为s的最小值。

第二方面,提供一种人工智能处理器,所述人工智能处理器包括:

确定单元,用于确定运算数据;

获取单元,用于获取量化命令,所述量化命令包括量化精度的数据类型以及量化精度;

调整单元,用于依据所述运算数据以及量化精度的数据类型确定该量化精度的调整策略,依据该调整策略对该量化精度进行调整。

第三方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第二方面提供的人工智能处理器。

第四方面,提供一种组合处理装置,所述组合处理装置包括:第三方面提供的神经网络运算装置、通用互联接口和通用处理装置;

所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。

第五方面,提供一种电子设备,所述电子设备包括第二方面提供的人工智能处理器或第三方面提供的神经网络运算装置。

第六方面,提供一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。

第七方面,提供一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行第一方面提供的方法

附图说明

图1是一种神经网络的训练方法示意图。

图2是一种运算数据的量化精度调整方法的流程示意图。

图3a是离散定点数据的表示示意图。

图3b是连续定点数据的表示示意图。

图4a是一种芯片示意图。

图4b是另一种芯片示意图。

图5a为本申请还揭露了一个组合处理装置结构示意图。

图5b为本申请还揭露了一个组合处理装置另一种结构示意图。

图5c为本申请实施例提供的一种神经网络处理器板卡的结构示意图。

图5d为本申请实施例流提供的一种神经网络芯片封装结构的结构示意图。

图5e为本申请实施例流提供的一种神经网络芯片的结构示意图。

图6为本申请实施例流提供的一种神经网络芯片封装结构的示意图。

图6a为本申请实施例流提供的另一种神经网络芯片封装结构的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请提供的运算数据的量化方法可以在处理器内运行,上述处理器可以为通用的处理器,例如中央处理器cpu,也可以是专用的处理器,例如图形处理器gpu,当然也可以在人工智能处理器内实现。本申请对处理器的具体表现形式并不限定。

参阅图1,图1为本申请提供的一种神经网络的一个运算层的训练示意图,如图1所示,该运算层可以为全连接层或卷积层,如该运算层为全连接层,其对应的为全连接运算,例如图1所示的矩阵乘法运算,如该运算层为卷积层,其对应的为卷积运算。如图1所示,该训练包含正向推理(简称推理)和反向训练,如图1所示,该实线所示为正向推理的过程,该虚线为反向训练的过程。如图1所示的正向推理,运算层的输入数据与权值执行运算得到运算层的输出数据,该输出数据可以为该运算层的下一层的输入数据。如图1所示的反向训练过程,运算层的输出数据梯度与权值执行运算得到输入数据梯度,该输出数据梯度与输入数据运算得到权值梯度,该权值梯度用于对本运算层的权值进行更新,该输入数据梯度作为该运算层的下一层的输出数据梯度。

参阅图2,图2提供了一种运算数据的量化精度调整方法,该运算可以包括,正向推理和/或反向训练;该方法由计算芯片执行,该计算芯片可以为通用的处理器,例如中央处理器、图形处理器,当然其也可以为人工智能处理器(如专用的神经网络处理器)。当然上述方法还可以由包含计算芯片的装置来执行,该方法如图2所示,包括如下步骤:

步骤s201、计算芯片确定运算数据;

可选的,上述步骤s201中的运算数据包括但不限于:输入神经元a、输出神经元b、权重w、输入神经元导数输出神经元导数权重导数中的一种或任意组合。

步骤s202、计算芯片获取量化命令,所述量化命令包括量化精度的数据类型以及量化精度;

步骤s203、计算芯片依据所述运算数据以及量化精度的数据类型确定该量化精度的调整策略,依据该调整策略对该量化精度进行调整,以使所述人工智能处理器依据调整后的量化精度对运算数据执行量化操作。

本申请提供的技术方案在确定神经网络运算数据后,通过量化命令确定该量化精度的数据类型以及量化精度,然后依据该运算数据以及量化精度的数据类型来确定量化精度的调整策略,然后依据调整策略对该量化精度进行调整。此种方式能够让运算数据的量化精度与运算数据更加的匹配,避免了因为量化精度不准确影响计算准确度的问题,因此其具有提高计算精度的优点。

可选的,上述量化精度的数据类型具体包括:离散量化精度或连续量化精度。其表示方式可以参见图3a或图3b。

对于连续量化精度本申请中可以用f表示,对于离散量化精度本申请中可以用2s来表示,其中s表示离散量化精度的指数。

可选的,上述依据所述运算数据以及量化精度的数据类型确定该量化精度的调整策略具体包括:

上述调整定点化精度s、f的方法包括但不限于:向上调整s、f(s、f变大)或向下调整s、f(s、f变小)。

对于向上调整s、f的方式,可以为单步向上调整s或f,当然也可以为逐级向上调整s或f。

同理,对于向下调整s、f的方式,可以为单步向下调整s或f,当然也可以为逐级向下调整s或f。

具体的调整方式可以为下述方式的任意一种:

a)计算芯片根据待量化数据绝对值最大值单步向上调整s或f:

计算芯片确定调整之前定点化数据定点精度为s_old,定点可表示范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1)*2s_old。提取待量化数据的绝对值最大值amaxnew当待量化数据的绝对值最大值amaxnew≥pos时,s_new=[log2(amaxnew)-bitnum+1,否则不调整,即保持s_new=s_old。

计算芯片确定调整之前定点化数据定点精度为f_old,定点可表示范围是[neg,pos],其中pos=(2bitnum-1-1)*f_old,neg=-(2bitnum-1)*f_old。当待量化数据的绝对值最大值amaxnew≥pos时,依据公式2-4调整f,否则不调整,即保持f_new=f_old

b)计算芯片根据待量化数据绝对值最大值逐步向上调整s:

计算芯片调整之前定点化数据定点精度为s_old,定点可表示范围是[neg,pos]。当待量化数据的绝对值最大值amaxnew≥pos时,s_new=s_old+η,否则不调整s,即维持s_new=s_old;其中,η为逐步向上调整中单次调整的步长,例如可以为1,当然也可以为其他的数值。

调整之前定点化数据定点精度为f_old,定点可表示范围是[neg,pos]。当待量化数据的绝对值最大值amaxnew≥pos时,f_new=f_old+η,否则不调整f,即维持f_new=f_old;其中,η为逐步向上调整中单次调整的步长,例如可以为1,当然也可以为其他的数值。

c)计算芯片根据待量化数据分布单步向上调整s或f:

计算芯片确定调整之前定点化数据定点精度为s_old,定点可表示范围是[neg,pos]。计算待量化数据的绝对值的统计量,该统计量可以为绝对值的均值amean和n个绝对值的标准差astd之和。具体的,统计量zmax=amean+nastd,n可取正整数,例如3。当zmax≥pos时,s_new=否则不调整s。

计算芯片调整之前定点化数据定点精度为f_old,定点可表示范围是[neg,pos]。该统计量可以为绝对值的均值amean和n个绝对值的标准差astd之和。具体的,统计量zmax=amean+nastd,n可取正整数,例如3。当zmax≥pos时,依据公式2-5计算得到fnew;否则不调整f。

d)计算芯片根据待量化数据分布逐步向上调整s:

计算芯片确定调整之前定点化数据定点精度为s_old,定点可表示范围是[neg,pos]。统计量zmax=amean+nastd,n可取正整数,例如3。当zmax≥pos时,s_new=s_old+η,否则不调整s。

e)计算芯片根据待量化数据绝对值最大值向下调整s:

调整之前s为s_old,定点可表示范围是[neg,pos]。当待量化数据的绝对值最大值amax<且sold>smin时,snew=sold-η,其中n为整数常数,smin为s可以取值范围的最小值(一般为负整数或负无穷)。

优选地n=3,smin=-40。

上述运算数据绝对值最大值或所述绝对值最小值的确定方式具体包括:

a1、计算芯片可以采用所有层分类寻找绝对值最大值;计算芯片确定待运算数据的每个元素为其中可为输入神经元a、输出神经元b、权重w、输入神经元导数输出神经元导数权重导数的第l层的元素值。遍历神经网络的所有层,寻找所有层的每类别数据的绝对值最大值。

a2、计算芯片可以采用分层分类别寻找绝对值最大值;计算芯片确定待运算数据的每个元素为其中可为输入神经元a、输出神经元b、权重w、输入神经元导数输出神经元导数权重导数的第l层的元素值。当然在实际应用中,还可以提取除了1层以外其他层的数据,例如,可以提取λ层的每个类别数据的绝对值最大值,λ为大于等于2的整数。

a3、计算芯片可以采用分层分类别分组进寻找绝对值最大值;计算芯片确定待运算数据的每个元素为其中可为输入神经元a、输出神经元b、权重w、输入神经元导数输出神经元导数权重导数的第l层的元素值。将每层的每类数据分为g组(该g可以为经验值或用户设定值),遍历神经网络的所有层,寻找每层的每个类别的g组数据中每组的绝对值最大值。上述输入神经元a、输出神经元b、权重w、输入神经元导数输出神经元导数权重导数均可以表示一类数据。

上述amin的按数据类别寻找;当还可以分层、分类别或分组寻找。其具体的寻找方式可以采用上述a1、a2或a3的方式,只需将a1、a2或a3中的amax替换成最小值amin即可。

本申请还提供一种计算芯片,所述计算芯片包括:

确定单元,用于确定运算数据;

获取单元,用于获取量化命令,所述量化命令包括量化精度的数据类型以及量化精度;

调整单元,用于依据所述运算数据以及量化精度的数据类型确定该量化精度的调整策略,依据该调整策略对该量化精度进行调整。

本申请还揭露了一个神经网络运算装置,其包括一个或多个在如图4a或如图4b所示的芯片,也可以包括一个或多个人工智能处理器。用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过i/o接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上神如图4a或如图4b所示的芯片时,如图4a或如图4b所示的芯片间可以通过特定的结构进行链接并传输数据,譬如,通过pcie总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。

该神经网络运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。

本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置(即通用处理装置)。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。如5a为组合处理装置的示意图。

其他处理装置,包括中央处理器cpu、图形处理器gpu、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。

通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。

如图5b所示,可选的,该结构还包括存储装置,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。

该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。

请参照图5c,图5c为本申请实施例提供的一种神经网络处理器板卡的结构示意图。如图5c所示,上述神经网络处理器板卡10包括神经网络芯片封装结构11、第一电气及非电气连接装置12和第一基板(substrate)13。

本申请对于神经网络芯片封装结构11的具体结构不作限定,可选的,如图5d所示,上述神经网络芯片封装结构11包括:神经网络芯片111、第二电气及非电气连接装置112、第二基板113。

本申请所涉及的神经网络芯片111的具体形式不作限定,上述的神经网络芯片111包含但不限于将神经网络处理器集成的神经网络晶片,上述晶片可以由硅材料、锗材料、量子材料或分子材料等制成。根据实际情况(例如:较严苛的环境)和不同的应用需求可将上述神经网络晶片进行封装,以使神经网络晶片的大部分被包裹住,而将神经网络晶片上的引脚通过金线等导体连到封装结构的外边,用于和更外层进行电路连接。

本申请对于神经网络芯片111的具体结构不作限定,可选的,请参照图4a或图4b所示的装置。

本申请对于第一基板13和第二基板113的类型不做限定,可以是印制电路板(printedcircuitboard,pcb)或印制线路板(printedwiringboard,pwb),还可能为其它电路板。对pcb的制作材料也不做限定。

本申请所涉及的第二基板113用于承载上述神经网络芯片111,通过第二电气及非电气连接装置112将上述的神经网络芯片111和第二基板113进行连接得到的神经网络芯片封装结构11,用于保护神经网络芯片111,便于将神经网络芯片封装结构11与第一基板13进行进一步封装。

对于上述具体的第二电气及非电气连接装置112的封装方式和封装方式对应的结构不作限定,可根据实际情况和不同的应用需求选择合适的封装方式并进行简单地改进,例如:倒装芯片球栅阵列封装(flipchipballgridarraypackage,fcbgap),薄型四方扁平式封装(low-profilequadflatpackage,lqfp)、带散热器的四方扁平封装(quadflatpackagewithheatsink,hqfp)、无引脚四方扁平封装(quadflatnon-leadpackage,qfn)或小间距四方扁平式封装(fine-pitchballgridpackage,fbga)等封装方式。

倒装芯片(flipchip),适用于对封装后的面积要求高或对导线的电感、信号的传输时间敏感的情况下。除此之外可以用引线键合(wirebonding)的封装方式,减少成本,提高封装结构的灵活性。

球栅阵列(ballgridarray),能够提供更多引脚,且引脚的平均导线长度短,具备高速传递信号的作用,其中,封装可以用引脚网格阵列封装(pingridarray,pga)、零插拔力(zeroinsertionforce,zif)、单边接触连接(singleedgecontactconnection,secc)、触点阵列(landgridarray,lga)等来代替。

可选的,采用倒装芯片球栅阵列(flipchipballgridarray)的封装方式对神经网络芯片111和第二基板113进行封装,具体的神经网络芯片封装结构的示意图可参照图6。如图6所示,上述神经网络芯片封装结构包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26。

其中,焊盘22与神经网络芯片21相连,通过在焊盘22和第二基板24上的连接点25之间焊接形成焊球23,将神经网络芯片21和第二基板24连接,即实现了神经网络芯片21的封装。

引脚26用于与封装结构的外部电路(例如,神经网络处理器板卡10上的第一基板13)相连,可实现外部数据和内部数据的传输,便于神经网络芯片21或神经网络芯片21对应的神经网络处理器对数据进行处理。对于引脚的类型和数量本申请也不作限定,根据不同的封装技术可选用不同的引脚形式,并遵从一定规则进行排列。

可选的,上述神经网络芯片封装结构还包括绝缘填充物,置于焊盘22、焊球23和连接点25之间的空隙中,用于防止焊球与焊球之间产生干扰。

其中,绝缘填充物的材料可以是氮化硅、氧化硅或氧氮化硅;干扰包含电磁干扰、电感干扰等。

可选的,上述神经网络芯片封装结构还包括散热装置,用于散发神经网络芯片21运行时的热量。其中,散热装置可以是一块导热性良好的金属片、散热片或散热器,例如,风扇。

举例来说,如图6a所示,神经网络芯片封装结构11包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26、绝缘填充物27、散热膏28和金属外壳散热片29。其中,散热膏28和金属外壳散热片29用于散发神经网络芯片21运行时的热量。

可选的,上述神经网络芯片封装结构11还包括补强结构,与焊盘22连接,且内埋于焊球23中,以增强焊球23与焊盘22之间的连接强度。

其中,补强结构可以是金属线结构或柱状结构,在此不做限定。

本申请对于第一电气及非电气装置12的具体形式也不作限定,可参照第二电气及非电气装置112的描述,即通过焊接的方式将神经网络芯片封装结构11进行封装,也可以采用连接线连接或插拔方式连接第二基板113和第一基板13的方式,便于后续更换第一基板13或神经网络芯片封装结构11。

可选的,第一基板13包括用于扩展存储容量的内存单元的接口等,例如:同步动态随机存储器(synchronousdynamicrandomaccessmemory,sdram)、双倍速率同步动态随机存储器(doubledateratesdram,ddr)等,通过扩展内存提高了神经网络处理器的处理能力。

第一基板13上还可包括快速外部设备互连总线(peripheralcomponentinterconnect-express,pci-e或pcie)接口、小封装可热插拔(smallform-factorpluggable,sfp)接口、以太网接口、控制器局域网总线(controllerareanetwork,can)接口等等,用于封装结构和外部电路之间的数据传输,可提高运算速度和操作的便利性。

将神经网络处理器封装为神经网络芯片111,将神经网络芯片111封装为神经网络芯片封装结构11,将神经网络芯片封装结构11封装为神经网络处理器板卡10,通过板卡上的接口(插槽或插芯)与外部电路(例如:计算机主板)进行数据交互,即直接通过使用神经网络处理器板卡10实现神经网络处理器的功能,并保护神经网络芯片111。且神经网络处理器板卡10上还可添加其他模块,提高了神经网络处理器的应用范围和运算效率。

在一个实施例里,本公开公开了一个电子装置,其包括了上述神经网络处理器板卡10或神经网络芯片封装结构11。

电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1