CN111832711A - 运算数据的量化方法及相关产品 - Google Patents

运算数据的量化方法及相关产品 Download PDF

Info

Publication number
CN111832711A
CN111832711A CN201910306479.4A CN201910306479A CN111832711A CN 111832711 A CN111832711 A CN 111832711A CN 201910306479 A CN201910306479 A CN 201910306479A CN 111832711 A CN111832711 A CN 111832711A
Authority
CN
China
Prior art keywords
data
quantization
neural network
quantization precision
precision
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.)
Pending
Application number
CN201910306479.4A
Other languages
English (en)
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201910306479.4A priority Critical patent/CN111832711A/zh
Priority to PCT/CN2020/084943 priority patent/WO2020211783A1/zh
Publication of CN111832711A publication Critical patent/CN111832711A/zh
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请提供一种运算数据的量化方法及相关产品,该方法包括对神经网络运算的数据执行量化处理,对处理后的数据进行运算,本申请提供的技术方案具有计算量小,计算效率高,能耗低的优点。

Description

运算数据的量化方法及相关产品
技术领域
本申请涉及神经网络领域,尤其涉及一种运算数据的量化方法及相关产品。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的推理(即正向运算),此种推理的计算量大,功耗高。
发明内容
本申请实施例提供了一种运算数据的量化方法及相关产品,可降低推理、训练的计算量,提升计算芯片的处理速度,提高效率。
第一方面,提供一种运算数据的量化的方法,所述方法应用于人工智能处理器,所述方法包括如下步骤:
确定运算数据;获取量化命令,该量化命令包括量化精度的数据类型,依据该数据类型从计算库中提取与该数据类型对应的量化函数;依据该运算数据以及该数据类型确定该运算数据的量化精度,依据该量化精度和量化函数对该运算数据进行量化操作,得到量化后的数据,以使得所述人工智能处理器根据所述量化后的数据执行运算操作。
可选的,所述运算数据包括:输入神经元A、输出神经元B、权重W、输入神经元导数
Figure BDA0002029336980000012
输出神经元导数
Figure BDA0002029336980000013
权重导数
Figure BDA0002029336980000014
中的一种或任意组合;
所述量化精度的数据类型具体可以包括:离散量化精度或连续量化精度。
可选的,所述依据该数据类型从计算库中提取与该数据类型对应的量化函数具体包括:
如所述量化精度的数据类型为离散量化精度,依据离散量化精度以及运算数据的元素值计算得到量化后的数据。
可选的,所述依据离散量化精度以及运算数据的元素值计算得到量化后的数据具体包括:
依据量化函数为公式(1)计算得到量化后的数据X;
Figure BDA0002029336980000011
其中,X为量化后的数据,x为运算数据中的一个元素值,该s为离散量化精度指数,σ为取整函数。
可选的,所述依据该数据类型从计算库中提取与该数据类型对应的量化函数具体包括:
如所述量化精度的数据类型为连续量化精度,依据连续量化精度以及运算数据的元素值计算得到量化后的数据。
可选的,所述依据连续量化精度以及运算数据的元素值计算得到量化后的数据具体包括:
依据量化函数为公式(2)计算得到量化后的数据Y;
Figure BDA0002029336980000021
其中,Y为量化后的数据,f为连续量化精度,σ为取整函数。
可选的,所述取整函数为:向上取整函数、向下取整函数、四舍五入函数或随机取整函数。
可选的,所述依据该运算数据以及该数据类型确定该运算数据的量化精度具体包括:
根据该运算数据绝对值最大值确定离散量化精度指数s或连续量化精度f;
或根据该运算数据绝对值最小值确定s或f;
或根据不同数据的量化精度确定s或f;
或根据经验值常量确定s或f。
可选的,所述根据该运算数据绝对值最大值确定离散量化精度指数s或连续量化精度f具体包括:
通过公式1-1来确定s;
s=[log2(amax)—bitnum+1] 公式(1-1)
通过公式2-1来确定f
Figure BDA0002029336980000022
其中c为常数,bitnum为量化后的数据的比特位数,amax为运算数据绝对值最大值。
可选的,所述根据该运算数据绝对值最小值确定s或f具体包括:
通过公式1-2确定s;
Figure BDA0002029336980000023
通过公式2-2确定精度f;
f=amin*d 公式2-2
其中d为常数,amin为运算数据绝对值最小值。
可选的,所述运算数据绝对值最大值或所述绝对值最小值的确定方式具体包括:
采用所有层分类寻找绝对值最大值或绝对值最小值;
或采用分层分类别寻找绝对值最大值或绝对值最小值;
或采用分层分类别分组进寻找绝对值最大值或绝对值最小值。
可选的,所述根据不同数据的量化精度确定s、f具体包括:
通过公式1-3来确定离散量化精度
Figure BDA0002029336980000031
Sa (l)=∑b≠aαbSb (l)b
公式1-3
其中,
Figure BDA0002029336980000032
为与数据a(l)同层的数据b(l)的离散量化精度的指数,所述
Figure BDA0002029336980000033
已知;
通过公式2-3来确定连续量化精度
Figure BDA0002029336980000034
fa (l)=∑b≠aαbfb (l)b 公式2-3
Figure BDA0002029336980000035
为与数据a(l)同层的数据b(l)的连续量化精度,所述
Figure BDA0002029336980000036
已知,上标l表示第l层。
可选的,所述根据经验值常量确定s、f具体包括:
设定
Figure BDA0002029336980000037
其中C为整数常数;
设定
Figure BDA0002029336980000038
其中C为有理数常数;
其中,
Figure BDA0002029336980000039
为第l层的数据a(l)的离散量化精度的指数,
Figure BDA00020293369800000310
为第l层的数据a(l)的连续量化精度。
可选的,所述方法还包括:
根据待量化的数据动态调整s或f。
可选的,所述根据待量化的数据动态调整s或f具体包括:
根据待量化数据绝对值最大值向上调整s或f:;
或根据待量化数据绝对值最大值逐步向上调整s或f;
或根据待量化数据分布单步向上调整s或f;
或根据待量化数据分布逐步向上调整s或f;
或根据待量化数据绝对值最大值向下调整s或f。
可选的,所述方法还包括:
动态调整s、f的触发频率。
可选的,所述动态调整s、f的触发频率具体包括:
永远不触发调整;
或每隔δ个训练周期调整一次s、f,δ固定不变;
或每隔δ个训练时期epoch调整一次s、f,δ固定不变;
或每隔step个iteration或epoch调整一次s、f,step=αδ,其中α大于1;
或每隔δ个训练iteration或epoch调整一次s、f,所述δ随着训练次数的增加,逐渐递减。
第二方面,提供一种人工智能处理器,其特征在于,所述人工智能处理器包括:
处理单元,用于确定运算数据;获取量化命令,该量化命令包括量化精度的数据类型,依据该数据类型从计算库中提取与该数据类型对应的量化函数;依据该运算数据以及该数据类型确定该运算数据的量化精度;
量化单元,用于依据该量化精度以及量化函数对该运算数据进行量化操作,得到量化后的数据,以使得所述人工智能处理器根据所述量化后的数据执行运算操作。
第三方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第二方面提供的人工智能处理器。
第四方面,提供一种组合处理装置,所述组合处理装置包括:第三方面提供的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
第五方面,提供一种电子设备,所述电子设备包括第二方面提供的人工智能处理器或第三方面提供的神经网络运算装置。
第六方面,提供一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
第七方面,提供一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行第一方面提供的方法
附图说明
图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、输入神经元导数
Figure BDA0002029336980000051
输出神经元导数
Figure BDA0002029336980000052
权重导数
Figure BDA0002029336980000053
中的一种或任意组合。
步骤S202、计算芯片获取量化命令,该量化命令包括量化精度的数据类型,依据该数据类型从计算库中提取与该数据类型对应的量化函数;
上述步骤S202中的量化命令可以从外部设备获取,例如,在一个可选的实施例中,该计算芯片包含CPU以及专用神经网络芯片,该量化命令可以由CPU向专用神经网络芯片发送,当然也可以是用户通过外部设备向计算芯片输入的量化命令。当然在实际应用中,上述量化命令也可以由计算芯片自动生成,例如,可以依据该运算数据的元素数量来生成量化命令,具体的,如该元素数量大于一个数量阈值,可以生成包括离散量化精度的量化命令,反之,小于该数量阈值,可以生成包含连续量化精度的量化命令。当然在另一个可选实施方案中,上述生成量化命令的策略还可以为,确定该运算数据的元素值的跨度,即计算该运算数据中最大元素值与最小元素值之间的差值,如该差值大于差值阈值,可以生成包括离散量化精度的量化命令,反之,小于该差值阈值,可以生成包含连续量化精度的量化命令。
步骤S203、依据该运算数据以及该数据类型确定该运算数据的量化精度,依据该量化精度和量化函数对该运算数据进行量化操作,得到量化后的数据,以使得所述人工智能处理器根据所述量化后的数据执行运算操作。
本申请提供的技术方案在确定神经网络运算数据后,依据量化命令确定量化精度的数据类型,然后依据该数据类型确定量化函数以及量化精度,依据该量化函数以及量化精度对该运算数据执行数据量化得到量化后的数据,将量化后的数据执行运算得到运算结果,因为本申请的技术方案针对运算所需的数据类型选择与该数据类型对应的量化函数,这样量化后的数据能够更加的匹配该运算,提高运算速度,量化后的数据运算可以降低运算量,提高计算效率,因此本申请提供的技术方案具有减少运算量,提高计算速度,降低功耗的优点。
可选的,上述量化精度的数据类型具体可以包括:离散量化精度或连续量化精度。
可选的,上述依据该数据类型从计算库中提取与该数据类型对应的量化函数具体包括:
如所述量化精度的数据类型为离散量化精度的指数s,依据离散量化精度以及运算数据的元素值计算得到量化后的数据;
如所述量化精度的数据类型为连续量化精度f,依据连续量化精度以及运算数据的元素值计算得到量化后的数据。
依据量化函数为公式(1)计算得到量化后的数据X。
Figure BDA0002029336980000061
其中,X为量化后的离散定点数据,x为运算数据中的一个元素值,该s为离散量化精度的指数,该σ为取整函数,该取整函数包括但不限于:向上取整函数、向下取整函数、四舍五入函数、随机取整函数或其他取整函数。
依据量化函数为公式(2)计算得到量化后的数据Y
Figure BDA0002029336980000062
其中,Y为量化后的连续定点数据,x为运算数据中的一个元素值,该f为连续量化精度,该σ为取整函数,该取整函数包括但不限于:向上取整、向下取整、四舍五入、随机取整或其他取整方式。
可选的,上述计算芯片依据该运算数据以及该所需的定点数据类型确定该运算数据的量化精度具体可以包括下述方式的任意一种:
方式A、根据该运算数据绝对值最大值确定离散量化精度的指数s或者连续量化精度f;本申请中描述的运算数据绝对值最大值具体可以为,运算数据中所有元素的绝对值最大值,也可以为各类运算数据的绝对值最大值,例如输入神经元A的元素的绝对值最大值、输出神经元B的元素的绝对值最大值、权重W的元素的绝对值最大值、输入神经元导数
Figure BDA0002029336980000064
的元素的绝对值最大值、输出神经元导数
Figure BDA0002029336980000065
的元素的绝对值最大值、权重导数
Figure BDA0002029336980000066
的元素的绝对值最大值。
具体的,计算芯片确定该运算数据的绝对值最大值amax,通过以下公式确定s或f;
可以通过公式1-1来确定s;
s=[log2(amax)—bitnum+1] 公式(1-1)
可以通过公式2-1来确定f
Figure BDA0002029336980000063
其中c为常数,可取任意有理数,优选的,该c可以为[1,1.2]之间的任意有理数;当然上述c也可以不取上述范围的有理数,只需为有理数即可。上述bitnum为量化后的数据所需的比特位数;参阅图3a以及图3b,图3a为离散量化精度的数据表示示意图,图3b为连续量化精度的数据表示示意图,对于离散量化精度,该bitnum可以取8、16、24或32。
可选的,上述amax选取方法可以采用多种方法。具体的,amax可以按数据类别寻找;当还可以分层、分类别或分组寻找。
A1、计算芯片可以采用所有层分类寻找绝对值最大值;计算芯片确定待运算数据的每个元素为
Figure BDA0002029336980000067
其中
Figure BDA0002029336980000068
可为输入神经元A、输出神经元B、权重W、输入神经元导数
Figure BDA0002029336980000069
输出神经元导数
Figure BDA00020293369800000610
权重导数
Figure BDA00020293369800000611
中的元素值。遍历神经网络的所有层,寻找所有层的每类别数据的绝对值最大值。
A2、计算芯片可以采用分层分类别寻找绝对值最大值;计算芯片确定待运算数据的每个元素为
Figure BDA0002029336980000072
其中
Figure BDA0002029336980000073
可为输入神经元A、输出神经元B、权重W、输入神经元导数
Figure BDA0002029336980000074
输出神经元导数
Figure BDA0002029336980000075
权重导数
Figure BDA0002029336980000076
的第l层的元素值。当然在实际应用中,还可以提取除了l层以外其他层的数据,例如,可以提取λ层的每个类别数据的绝对值最大值,λ为大于等于2的整数。
A3、计算芯片可以采用分层分类别分组进寻找绝对值最大值;计算芯片确定待运算数据的每个元素为
Figure BDA0002029336980000077
其中
Figure BDA0002029336980000078
可为输入神经元A、输出神经元B、权重W、输入神经元导数
Figure BDA0002029336980000079
输出神经元导数
Figure BDA00020293369800000710
权重导数
Figure BDA00020293369800000711
的第l层的元素值。将每层的每类数据分为g组(该g可以为经验值或用户设定值),遍历神经网络的所有层,寻找每层的每个类别的g组数据中每组的绝对值最大值。上述输入神经元A、输出神经元B、权重W、输入神经元导数
Figure BDA00020293369800000712
输出神经元导数
Figure BDA00020293369800000713
权重导数
Figure BDA00020293369800000714
均可以表示一类数据。
方式B、根据该运算数据绝对值最小值确定s、f;
具体的,计算芯片确定该运算数据绝对值最小值amin,依据amin确定s或f。
可以通过公式1-2确定精度s;
Figure BDA0002029336980000071
可以通过公式2-2确定精度f;
fa=amin*d 公式2-2
其中d为常数,可取任意有理数。
上述amin的按数据类别寻找;当还可以分层、分类别或分组寻找。其具体的寻找方式可以采用上述A1、A2或A3的方式,只需将A1、A2或A3中的amax替换成amin即可。
方式C、根据不同数据的量化精度确定s、f:
同一层的不同数据的s存在着相关性。例如:离散量化精度,第l层数据a()的离散量化精度的数值
Figure BDA00020293369800000715
可以由第l层另一类数据b(l)的离散量化精度的指数
Figure BDA00020293369800000716
计算得到,具体计算如公式1-3。
Sa (l)=∑b≠aαbSb (l)b 公式1-3
同一层的不同数据的f存在着相关性。例如:第l层数据a(l)的连续量化精度
Figure BDA00020293369800000717
可以由第l层另一类数据b(l)的连续量化精度
Figure BDA00020293369800000718
依据公式2-3来确定。
fa (l)=∑b≠aαbfb (l)b 公式2-3
其中αb、βb为整数常数。具体的,对于公式1-3,该αb、βb为整数常数,对于公式2-3,该αb、βb为有理数常数。
上述数据a(l)可以为输入神经元A、输出神经元B、权重W、输入神经元导数
Figure BDA00020293369800000719
输出神经元导数
Figure BDA00020293369800000720
权重导数
Figure BDA00020293369800000721
的第l层的元素值;上述数据b(l)可以为输入神经元A、输出神经元B、权重W、输入神经元导数
Figure BDA00020293369800000722
输出神经元导数
Figure BDA00020293369800000723
权重导数
Figure BDA00020293369800000724
的第l层的另外的元素值。
方式D、计算芯片根据经验值常量确定s、f:
具体地,第l层数据类型a(l)
Figure BDA00020293369800000725
可人为设定
Figure BDA00020293369800000726
其中C为整数常数。
具体地,第l层数据类型a(l)
Figure BDA00020293369800000727
可人为设定
Figure BDA00020293369800000728
其中C为有理数常数。
可选的,上述方法还可以包括“
在执行神经网络运算时,依据待量化的数据动态调整s、f。
上述调整s、f的方法包括但不限于:向上调整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,计算芯片确定调整之前s为s_old,定点可表示范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1)*2s_old。提取待量化数据的绝对值最大值amaxnew当待量化数据的绝对值最大值amaxnew≥pos时,
Figure BDA0002029336980000083
否则不调整,即保持s_new=s_old。
如调整f,计算芯片确定调整之前f为f_old,定点可表示范围是[neg,pos],其中pos=(2bitnum-1-1)*f_old,neg=-(2bitnum-1)*f_old。当待量化数据的绝对值最大值amaxnew≥pos时,依据公式2-4调整f,否则不调整,即保持f_new=f_old
Figure BDA0002029336980000081
b)计算芯片根据待量化数据绝对值最大值逐步向上调整s或f:
如调整s,计算芯片调整之前离散量化精度的指数为s_old,定点可表示范围是[neg,pos]。当待量化数据的绝对值最大值amaxnew≥pos时,s_new=s_old+η,否则不调整s,即维持s_new=s_old;其中,η为逐步向上调整中单次调整的步长,例如可以为1,当然也可以为其他的数值。
如调整f,调整之前连续量化精度为f_old,定点可表示范围是[neg,pos]。当待量化数据的绝对值最大值amaxnew≥pos时,f_new=f_old+η,否则不调整f,即维持f_new=f_old;其中,η为逐步向上调整中单次调整的步长,例如可以为1,当然也可以为其他的数值。
c)计算芯片根据待量化数据分布单步向上调整s或f:
如调整s,计算芯片确定调整之前离散量化精度为s_old,定点可表示范围是[neg,pos]。计算待量化数据的绝对值的统计量,该统计量可以为绝对值的均值amean和n个绝对值的标准差astd之和。具体的,统计量zmax=amean+nastd,n可取正整数,例如n=3。当zmax≥pos时,
Figure BDA0002029336980000084
否则不调整s。
如调整f,计算芯片调整之前定连续量化精度为f_old,定点可表示范围是[neg,pos]。该统计量可以为绝对值的均值amean和n个绝对值的标准差astd之和。具体的,统计量zmaxmean+nastd,n可取正整数,例如n=3。当zmax≥pos时,依据公式2-5计算得到fnew;否则不调整f。
Figure BDA0002029336980000082
d)计算芯片根据待量化数据分布逐步向上调整s或f:
如调整s,计算芯片确定调整之前离散量化精度的指数为s_old,定点可表示范围是[neg,pos]。统计量zmax=amean+nastd,n可取正整数,例如n=3。当zmax≥pos时,s_new=s_old+η,否则不调整s。
如调整f,计算芯片确定调整之前连续量化精度的指数为f_old,定点可表示范围是[neg,pos]。统计量zmax=amean+nastd,n可取正整数,例如n=3。当zmax≥pos时,f_new=f_old+η,否则不调整f。
e)计算芯片根据待量化数据绝对值最大值向下调整s或f:
如调整s,调整之前离散量化精度的指数为s_old,定点可表示范围是[neg,pos]。当待量化数据的绝对值最大值amax<2s_old+(bitnum-n),且s_old≥smin时,snew=sold-η,其中n为整数常数,smin为s可以取值范围的最小值(一般为负整数或负无穷)。优选地n=3,smin=-40。
如调整f,调整之前连续量化精度为f_old,定点可表示范围是[neg,pos]。当待量化数据的绝对值最大值amax<fold+2(bitnum-n),且f_old≥fmin时,fnew=fold-η,其中n为整数常数,fmin为f可以取值范围的最小值。
可选的,上述方法还可以包括:计算芯片动态调整s、f的触发频率。
动态调整s的触发频率可以包括但不限于以下方法。
a)永远不触发调整,即固定s、f。
b)每隔δ个训练周期(iteration)调整一次,δ固定不变,调整方式可以参见上述s、f的调整方式。上述训练周期具体可以为,一个训练样本完成一次迭代运算,即一个训练样本完成一次正向运算和反向训练即一个训练周期。
优选地,上述δ可以依据数据种类设置不同的数值,例如对于输入、输出神经元和权重数据等数据类型,δ可以设置为100。对于神经元导数数据类型,δ可以设置为20。
c)每隔δ个训练epoch(时期)调整一次,δ固定不变。上述训练时期具体可以包括:训练集中的所有样本训练一次为一个训练时期,即一个训练时期可以为训练集的所有样本执行一次正向运算和反向训练即一个训练时期。
d)每隔δ个训练iteration或epoch调整一次,每隔step个iteration或epoch调整step=αδ,其中α大于1。
e)每隔δ个训练iteration或epoch调整一次,δ随着训练次数的增加,逐渐递减,例如训练次数为100时,δ=100,训练次数为180时,δ=90,训练次数为260时,δ=80。
本申请还提供一种人工智能处理器,其特征在于,所述人工智能处理器包括:
处理单元,用于确定运算数据;获取量化命令,该量化命令包括量化精度的数据类型,依据该数据类型从计算库中提取与该数据类型对应的量化函数;依据该运算数据以及该数据类型确定该运算数据的量化精度;
量化单元,用于依据该量化精度以及量化函数对该运算数据进行量化操作,得到量化后的数据,以使得所述人工智能处理器根据所述量化后的数据执行运算操作。。
上述处理单元依据该数据类型从计算库中提取与该数据类型对应的量化函数;依据该运算数据以及该数据类型确定该运算数据的量化精度的细化方案可以参见方法实施例的描述,这里不在赘述。
上述量化单元,用于依据该量化精度以及量化函数对该运算数据量化得到量化后的数据的细化方案可以参见方法实施例的描述,这里不在赘述。
本申请还揭露了一个神经网络运算装置,其包括一个或多个在如图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的类型不做限定,可以是印制电路板(printed circuit board,PCB)或印制线路板(printed wiring board,PWB),还可能为其它电路板。对PCB的制作材料也不做限定。
本申请所涉及的第二基板113用于承载上述神经网络芯片111,通过第二电气及非电气连接装置112将上述的神经网络芯片111和第二基板113进行连接得到的神经网络芯片封装结构11,用于保护神经网络芯片111,便于将神经网络芯片封装结构11与第一基板13进行进一步封装。
对于上述具体的第二电气及非电气连接装置112的封装方式和封装方式对应的结构不作限定,可根据实际情况和不同的应用需求选择合适的封装方式并进行简单地改进,例如:倒装芯片球栅阵列封装(Flip Chip Ball Grid Array Package,FCBGAP),薄型四方扁平式封装(Low-profile Quad Flat Package,LQFP)、带散热器的四方扁平封装(QuadFlat Package with Heat sink,HQFP)、无引脚四方扁平封装(Quad Flat Non-leadPackage,QFN)或小间距四方扁平式封装(Fine-pitch Ball Grid Package,FBGA)等封装方式。
倒装芯片(Flip Chip),适用于对封装后的面积要求高或对导线的电感、信号的传输时间敏感的情况下。除此之外可以用引线键合(Wire Bonding)的封装方式,减少成本,提高封装结构的灵活性。
球栅阵列(Ball Grid Array),能够提供更多引脚,且引脚的平均导线长度短,具备高速传递信号的作用,其中,封装可以用引脚网格阵列封装(Pin Grid Array,PGA)、零插拔力(Zero Insertion Force,ZIF)、单边接触连接(Single Edge Contact Connection,SECC)、触点阵列(Land Grid Array,LGA)等来代替。
可选的,采用倒装芯片球栅阵列(Flip Chip Ball Grid Array)的封装方式对神经网络芯片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包括用于扩展存储容量的内存单元的接口等,例如:同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)、双倍速率同步动态随机存储器(Double Date Rate SDRAM,DDR)等,通过扩展内存提高了神经网络处理器的处理能力。
第一基板13上还可包括快速外部设备互连总线(Peripheral ComponentInterconnect-Express,PCI-E或PCIe)接口、小封装可热插拔(Small Form-factorPluggable,SFP)接口、以太网接口、控制器局域网总线(Controller Area Network,CAN)接口等等,用于封装结构和外部电路之间的数据传输,可提高运算速度和操作的便利性。
将神经网络处理器封装为神经网络芯片111,将神经网络芯片111封装为神经网络芯片封装结构11,将神经网络芯片封装结构11封装为神经网络处理器板卡10,通过板卡上的接口(插槽或插芯)与外部电路(例如:计算机主板)进行数据交互,即直接通过使用神经网络处理器板卡10实现神经网络处理器的功能,并保护神经网络芯片111。且神经网络处理器板卡10上还可添加其他模块,提高了神经网络处理器的应用范围和运算效率。
在一个实施例里,本公开公开了一个电子装置,其包括了上述神经网络处理器板卡10或神经网络芯片封装结构11。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种运算数据的量化方法,所述方法应用于人工智能处理器,其特征在于,所述方法包括如下步骤:
确定运算数据;
获取量化命令,该量化命令包括量化精度的数据类型,依据该数据类型从计算库中提取与该数据类型对应的量化函数;
依据该运算数据以及该数据类型确定该运算数据的量化精度,依据该量化精度和量化函数对该运算数据进行量化操作,得到量化后的数据,以使得所述人工智能处理器根据所述量化后的数据执行运算操作。
2.根据权利要求1所述的方法,其特征在于,
所述运算数据包括:输入神经元A、输出神经元B、权重W、输入神经元导数
Figure FDA0002029336970000014
输出神经元导数
Figure FDA0002029336970000012
权重导数
Figure FDA0002029336970000013
中的一种或任意组合;
所述量化精度的数据类型具体包括:离散量化精度或连续量化精度。
3.根据权利要求2所述的方法,其特征在于,所述依据该数据类型从计算库中提取与该数据类型对应的量化函数具体包括:
如所述量化精度的数据类型为离散量化精度的指数s,依据离散量化精度以及运算数据的元素值计算得到量化后的数据。
4.根据权利要求3所述的方法,其特征在于,所述依据离散量化精度的指数s以及运算数据的元素值计算得到量化后的数据具体包括:
依据量化函数为公式(1)计算得到量化后的数据X;
Figure FDA0002029336970000011
其中,X为量化后的数据,x为运算数据中的一个元素值,该s为离散量化精度指数,σ为取整函数。
5.根据权利要求2所述的方法,其特征在于,所述依据该数据类型从计算库中提取与该数据类型对应的量化函数具体包括:
如所述量化精度的数据类型为连续量化精度,依据连续量化精度以及运算数据的元素值计算得到量化后的数据。
6.一种人工智能处理器,其特征在于,所述人工智能处理器包括:
处理单元,用于确定运算数据;获取量化命令,该量化命令包括量化精度的数据类型,依据该数据类型从计算库中提取与该数据类型对应的量化函数;依据该运算数据以及该数据类型确定该运算数据的量化精度;
量化单元,用于依据该量化精度以及量化函数对该运算数据进行量化操作,得到量化后的数据,以使得所述人工智能处理器根据所述量化后的数据执行运算操作。
7.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求6所述的人工智能处理器。
8.一种组合处理装置,其特征在于,所述组合处理装置包括:如权利要求7所述的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
9.一种电子设备,其特征在于,所述电子设备包括如权利要求8所述的人工智能处理器或如权利要求7所述的神经网络运算装置。
10.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-5任意一项所述的方法。
CN201910306479.4A 2019-04-16 2019-04-16 运算数据的量化方法及相关产品 Pending CN111832711A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910306479.4A CN111832711A (zh) 2019-04-16 2019-04-16 运算数据的量化方法及相关产品
PCT/CN2020/084943 WO2020211783A1 (zh) 2019-04-16 2020-04-15 运算数据的量化频率调整方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910306479.4A CN111832711A (zh) 2019-04-16 2019-04-16 运算数据的量化方法及相关产品

Publications (1)

Publication Number Publication Date
CN111832711A true CN111832711A (zh) 2020-10-27

Family

ID=72915498

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910306479.4A Pending CN111832711A (zh) 2019-04-16 2019-04-16 运算数据的量化方法及相关产品

Country Status (1)

Country Link
CN (1) CN111832711A (zh)

Similar Documents

Publication Publication Date Title
US11907844B2 (en) Processing method and accelerating device
CN109902811B (zh) 神经网络运算设备和方法
CN109961138B (zh) 神经网络训练方法及相关产品
US11748601B2 (en) Integrated circuit chip device
TWI791725B (zh) 神經網絡運算方法、集成電路芯片裝置及相關產品
TWI767098B (zh) 神經網絡正向運算方法及相關產品
CN109977446B (zh) 集成电路芯片装置及相关产品
CN111832709A (zh) 运算数据的混合量化方法及相关产品
CN112308198A (zh) 循环神经网络的计算方法及相关产品
CN110490315B (zh) 神经网络的反向运算稀疏方法及相关产品
CN111832695A (zh) 运算数据的量化精度调整方法及相关产品
CN111832711A (zh) 运算数据的量化方法及相关产品
CN111832712A (zh) 运算数据的量化方法及相关产品
CN109978156B (zh) 集成电路芯片装置及相关产品
CN111832696A (zh) 神经网络运算方法及相关产品
WO2020211783A1 (zh) 运算数据的量化频率调整方法及相关产品
CN109978148B (zh) 集成电路芯片装置及相关产品
CN109978157B (zh) 集成电路芯片装置及相关产品
CN111832710A (zh) 运算数据的量化频率调整方法及相关产品
CN109978152B (zh) 集成电路芯片装置及相关产品
CN110490314B (zh) 神经网络的稀疏方法及相关产品
CN111382864A (zh) 一种神经网络训练方法及装置
CN109978158B (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