CN111353579A - 利用反向传播为深度神经网络选择量化参数的方法和系统 - Google Patents
利用反向传播为深度神经网络选择量化参数的方法和系统 Download PDFInfo
- Publication number
- CN111353579A CN111353579A CN201911328367.5A CN201911328367A CN111353579A CN 111353579 A CN111353579 A CN 111353579A CN 201911328367 A CN201911328367 A CN 201911328367A CN 111353579 A CN111353579 A CN 111353579A
- Authority
- CN
- China
- Prior art keywords
- quantization
- dnn
- quantization parameter
- values
- value
- 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.)
- Granted
Links
- 238000013139 quantization Methods 0.000 title claims abstract description 490
- 238000000034 method Methods 0.000 title claims abstract description 139
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 14
- 238000012549 training Methods 0.000 claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 31
- 230000001131 transforming effect Effects 0.000 claims abstract description 7
- 238000007667 floating Methods 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 12
- 230000001419 dependent effect Effects 0.000 claims 1
- 239000010410 layer Substances 0.000 description 187
- 230000003247 decreasing effect Effects 0.000 description 84
- 230000006870 function Effects 0.000 description 77
- 230000004913 activation Effects 0.000 description 64
- 238000001994 activation Methods 0.000 description 64
- 238000004519 manufacturing process Methods 0.000 description 43
- 230000008569 process Effects 0.000 description 37
- 238000010606 normalization Methods 0.000 description 35
- 238000011176 pooling Methods 0.000 description 24
- 239000000872 buffer Substances 0.000 description 20
- 230000002902 bimodal effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000009825 accumulation Methods 0.000 description 12
- 238000013527 convolutional neural network Methods 0.000 description 11
- 238000010801 machine learning Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000000644 propagated effect Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 6
- 230000000875 corresponding effect Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
- G06Q20/367—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
- G06Q20/3672—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes initialising or reloading thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0278—Product appraisal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Neurology (AREA)
- Development Economics (AREA)
- Game Theory and Decision Science (AREA)
- Marketing (AREA)
- Economics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Entrepreneurship & Innovation (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Apparatus For Radiation Diagnosis (AREA)
Abstract
本文涉及利用反向传播为深度神经网络选择量化参数的方法和系统。该方法包括确定DNN的模型响应于训练数据的输出,该DNN的模型包括一个或多个量化块,该一个或多个量化块被配置为在根据DNN的层处理输入到该层的值的集合之前变换该值的集合,对值的集合的变换模拟值的集合到由一个或多个量化参数定义的定点数格式的量化;基于所确定的输出和基于量化参数的DNN的大小确定DNN的成本度量;将成本度量的导数反向传播到量化参数中的一个或多个以生成成本度量针对该一个或多个量化参数的每一者的梯度;并且基于梯度来调整量化参数中的一个或多个。
Description
技术领域
本申请涉及深度神经网络,更具体而言,涉及用于识别用于表示深度神经网络的值的定点数格式的方法和系统。
背景技术
深度神经网络(Deep Neural Network,DNN)是一种形式的人工神经网络,其包括多个互连的层,这些层可被用于机器学习应用。具体地,DNN可用在信号处理应用中,包括但不限于图像处理和计算机视觉应用。图1图示了包括多个层102-1,102-2,102-3的示例DNN100。每个层102-1,102-2,102-3接收输入数据,根据该层处理输入数据以产生输出数据。输出数据或者被作为输入数据提供到另一层,或者被作为DNN的最终输出数据被输出。例如,在图1的DNN 100中,第一层102-1接收DNN 100的原始输入数据104并且根据第一层102-1处理输入数据以产生输出数据。第一层102-1的输出数据成为第二层102-2的输入数据,第二层102-2根据第二层102-2处理输入数据以产生输出数据。第二层102-2的输出数据成为第三层102-3的输入数据,第三层102-3根据第三层102-3处理输入数据以产生输出数据。第三层102-3的输出数据被作为DNN的输出数据106被输出。
对一层的输入数据执行的处理取决于层的类型。例如,DNN的每一层可以是多个不同类型之一。示例DNN层类型包括但不限于:卷积层、激活层、归一化层、池化层和全连接层。本领域技术人员将会明显看出这些是示例DNN层类型,并且这不是详尽列表,而可以有其他DNN层类型。
对于卷积层,通过利用与该层相关联的权重卷积输入数据来处理输入数据。具体而言,每个卷积层与多个权重w0…wg相关联,这些权重也可被称为滤波器权重或系数。权重被分组以形成或定义一个或多个滤波器,滤波器也可被称为内核,并且每个滤波器可与补偿偏置b相关联。
参考图2,其图示了DNN中利用的数据的格式的示例概览。从图2中可见,DNN中使用的数据可由多个平面形成。例如,输入数据可被布置为P个数据平面,其中每个平面具有尺寸x x y。DNN可包括一个或多个卷积层,每个卷积层有多个滤波器与其相关联,这些滤波器包括多个权重。每个滤波器具有尺寸m x n x P(即每个滤波器包括m x n x P个权重w的集合)并且根据x和y方向上的跨步长s和t的卷积操作被应用到输入数据,如图2中所示。滤波器的数目和每个滤波器的权重的数目在卷积层之间可以变化。作为对于图像识别和分类有效的一种特定类型的DNN的卷积神经网络(convolutional neural network,CNN)一般包括多个卷积层。
通常但不一定在卷积层之后的激活层对该层的输入数据执行一个或多个激活函数。激活函数取得单个数字并且对其执行一定的非线性数学运算。在一些示例中,激活层通过实现修正线性单元(rectified linear unit,ReLU)函数(即f(x)=max(0,x))来充当修正线性单元或者通过实现参数修正线性单元(Parametric Rectified Linear Unit,PReLU)函数来充当参数修正线性单元。
归一化层被配置为对输入数据执行归一化函数,例如局部响应归一化(LocalResponse Normalisation,LRN)函数。通常但并非一定插入在相继的卷积层之间的池化层执行池化函数,例如最大值或均值函数,以汇总输入数据的子集。池化层的目的从而是减小空间大小的表示以减少网络中的参数的数目和计算,并且因此也控制过度拟合。
通常但并非一定跟随在多个卷积层和池化层之后的全连接层取得输入数据值的三维集合并且输出N维向量。在DNN被用于分类的情况下,N可以是类别的数目并且向量中的每个值可表示某个类别的概率。N维向量是通过其后可选地跟随着偏置补偿的权重集合的矩阵乘法生成的。全连接层从而接收权重的集合和偏置。
因此,如图3中所示,DNN的每一层302接收输入数据值并且生成输出数据值;并且一些层(例如卷积层和全连接层)也接收权重和/或偏置。
用于实现DNN的硬件(例如DNN加速器)包括可被配置为根据DNN的层处理DNN的输入数据的硬件逻辑。具体而言,用于实现DNN的硬件包括这样的硬件逻辑:该硬件逻辑可被配置为对于每层的输入数据根据该层进行处理并且为该层生成输出数据,该输出数据或者成为另一层的输入数据,或者成为DNN的输出。例如,如果DNN包括卷积层然后是激活层,则可被配置为实现该DNN的硬件逻辑包括可被配置为利用与该卷积层相关联的权重和偏置对DNN的输入数据执行卷积以产生卷积层的输出数据的硬件逻辑,以及可被配置为向激活层的输入数据(即卷积层的输出数据)应用激活函数以生成为DNN的输出数据的硬件逻辑。
正如本领域技术人员已知的,为了让硬件处理值的集合,每个值被表示为数字格式。两种最适当的数字格式是定点数格式和浮点数格式。正如本领域技术人员已知的,定点数格式在基数点(例如十进制小数点或二进制小数点)之后具有固定数目的位数。与之不同,浮点数格式不具有固定的基数点(即其可以“浮动”)。换言之,基数点可被放置在表示内的任何位置。虽然以浮点数格式表示输入到和输出自DNN的层的值可允许产生更准确或精确的输出数据,但在硬件中处理浮点数格式的值是复杂的,这与处理定点数格式的值的硬件相比倾向于增大硬件的硅面积、功率消耗和复杂度。因此,用于实现DNN的硬件可被配置为以定点数格式表示输入到DNN的层的值以减小硬件逻辑的面积、功率消耗和存储器带宽。
一般而言,可用于表示输入到和输出自DNN的层的值的比特的数目越少,就可以越高效地用硬件来实现DNN。然而,通常,用于表示输入到和输出自DNN的层的值的比特越少,DNN就变得越不准确。因此,希望识别平衡用于表示DNN的值的比特的数目和DNN的准确性的用于表示DNN的值的定点数格式。
下面描述的实施例只是作为示例而提供的,而不是要限制解决用于识别用于表示DNN的值的定点数格式的方法和系统的任何或所有缺点的实现方式。
发明内容
提供此发明内容部分来介绍下文中在具体实施方式部分进一步描述的概念中的选择的一部分。此发明内容部分并不打算识别要求保护的主题的关键特征或必要特征,也不打算用来限制要求保护的主题的范围。
本文描述了用于为深度神经网络(DNN)识别量化参数的方法和系统。方法包括确定DNN的模型响应于训练数据的输出,该DNN的模型包括一个或多个量化块,该一个或多个量化块被配置为在根据DNN的层处理输入到该层的值的集合之前变换该值的集合,对值的集合的变换模拟值的集合到由一个或多个量化参数定义的定点数格式的量化;基于所确定的输出和基于量化参数的DNN的大小来确定DNN的成本度量;将成本度量的导数反向传播到量化参数中的一者或多者以生成成本度量针对该一个或多个量化参数的每一者的梯度;并且基于梯度来调整量化参数中的一者或多者。
第一方面提供了一种计算机实现的方法,用于为深度神经网络“DNN”识别一个或多个量化参数以用于用硬件实现该DNN,该方法包括在至少一个处理器中:确定DNN的模型响应于训练数据的输出,该DNN的模型包括量化块,该量化块被配置为在该模型根据DNN的层处理输入到该层的值的集合之前变换该值的集合,对值的集合的变换模拟值的集合到由一个或多个量化参数定义的定点数格式的量化;确定DNN的成本度量,该成本度量是误差度量和大小度量的组合,误差度量是所确定的输出中的误差的定量测度,并且大小度量与基于一个或多个量化参数的DNN的大小成比例;将成本度量的导数反向传播到一个或多个量化参数的至少一者以生成成本度量针对该一个或多个量化参数的至少一者的梯度;并且基于针对该一个或多个量化参数的至少一者的梯度调整该一个或多个量化参数的至少一者。
第二方面提供了一种基于计算的设备,用于为深度神经网络“DNN”识别一个或多个量化参数以用于用硬件实现该DNN,该基于计算的设备包括:至少一个处理器;以及耦合到该至少一个处理器的存储器,该存储器包括:计算机可读代码,该计算机可读代码当被该至少一个处理器执行时使得该至少一个处理器:确定DNN的模型响应于训练数据的输出,该DNN的模型包括量化块,该量化块被配置为在该模型根据DNN的层处理输入到该层的值的集合之前变换该值的集合,对值的集合的变换模拟值的集合到由一个或多个量化参数定义的定点数格式的量化;确定DNN的成本度量,该成本度量是误差度量和大小度量的组合,误差度量是所确定的输出中的误差的定量测度,并且大小度量与基于一个或多个量化参数的DNN的大小成比例;将成本度量的导数反向传播到一个或多个量化参数的至少一者以生成成本度量针对该一个或多个量化参数的至少一者的梯度;并且基于针对该一个或多个量化参数的至少一者的梯度调整该一个或多个量化参数的至少一者。
第三方面提供了一种硬件逻辑,被配置为按照根据第一方面识别的量化参数来实现深度神经网络“DNN”。
可配置来实现DNN的硬件逻辑(例如DNN加速器)可在集成电路上用硬件来实现。可提供一种在集成电路制造系统处制造可配置来实现DNN的硬件逻辑(例如DNN加速器)的方法。可提供一种集成电路定义数据集,其当在集成电路制造系统中被处理时配置该系统来制造可配置来实现DNN的硬件逻辑(例如DNN加速器)。可提供一种非暂态计算机可读存储介质,其上存储有可配置来实现DNN的硬件逻辑(例如DNN加速器)的计算机可读描述,该计算机可读描述当在集成电路制造系统中被处理时使得集成电路制造系统制造体现可配置来实现DNN的硬件逻辑(例如DNN加速器)的集成电路。
可提供一种集成电路制造系统,包括:非暂态计算机可读存储介质,其上存储有可配置来实现DNN的硬件逻辑(例如DNN加速器)的计算机可读描述;布局处理系统,被配置为处理计算机可读描述以便生成体现可配置来实现DNN的硬件逻辑(例如DNN加速器)的集成电路的电路布局描述;以及集成电路生成系统,被配置为根据电路布局描述来制造可配置来实现DNN的硬件逻辑(例如DNN加速器)。
可提供用于执行如本文所述的方法的计算机程序代码。可提供非暂态计算机可读存储介质,其上存储有计算机可读指令,这些计算机可读指令当在计算机系统处被执行时使得该计算机系统执行如本文所述的方法。
上述特征正如本领域技术人员将会清楚的可被酌情组合,并且可与本文描述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是示例深度神经网络(DNN)的示意图;
图2是DNN中的示例数据的示意图;
图3是图示出输入到DNN的层和从DNN的层输出的数据的示意图;
图4是图示出具有和没有量化块的DNN的示例模型的示意图;
图5是用于为DNN识别量化参数的示例方法的流程图;
图6是图示出用于生成误差度量的第一示例方法的示意图;
图7是图示出用于生成误差度量的第二示例方法的示意图;
图8是图示出将成本度量反向传播到示例DNN的量化参数的示意图;
图9是图示出示例成本度量关于比特宽度的示例梯度的图线;
图10是用于识别DNN的量化参数和权重的示例方法的流程图;
图11是图示出到示例定点数格式的量化的示意图;
图12是示例DNN加速器的框图;
图13是示例的基于计算的设备的框图;
图14是其中可实现DNN加速器的示例计算机系统的框图;以及
图15是用于生成体现如本文所述的DNN加速器的集成电路的示例集成电路制造系统的框图。
附图图示了各种示例。本领域技术人员将会明白附图中图示的元素边界(例如,方框、方框群组或其他形状)表示边界的一个示例。有可能在一些示例中,一个元素可被设计为多个元素,或者多个元素可被设计为一个元素。在各附图中在适当时始终使用共同的标号来指示类似的特征。
具体实施方式
通过示例的方式给出以下描述来使得本领域技术人员能够做出和使用本发明。本发明不限于本文描述的实施例,本领域技术人员将会清楚对公开的实施例的各种修改。实施例只是作为示例来描述的。
由于高效地表示值的集合的比特的数目是基于集合中的值的范围的,因此通过将输入到DNN的值划分成集合并且按每个集合选择定点数格式,可以高效地实现DNN而不会严重降低其准确性。由于输入到同一层的值倾向于是相关的,所以每个集合可以是输入到一层的特定类型的全部或一部分。例如,每个集合可以是一层的输入数据值的全部或一部分;一层的权重的全部或一部分;或者一层的偏置的全部或一部分。集合是否包括一层的特定类型的输入的全部或者仅一部分可取决于要实现该DNN的硬件。例如,用于实现DNN的一些硬件对于每层每种输入类型可只支持单个定点数格式,而用于实现DNN的其他硬件对于每层每种输入类型可支持多个定点数格式。
每个定点数格式由一个或多个量化参数来定义。一种常见的定点数格式是Q格式,其指定预定数目的整数比特a和小数比特b。因此,一个数字可被表示为Qa.b,其需要总计a+b+1个比特(包括符号比特)。示例Q格式在以下的表格1中例示。
表格1
Q格式 | 描述 | 示例 |
Q4.4 | 4个整数比特和4个小数比特 | 0110.1110<sub>2</sub> |
Q0.8 | 0个整数比特和8个小数比特 | .01101110<sub>2</sub> |
在Q格式被用于表示DNN的值的情况下,量化参数对于每个定点数格式可包括整数比特的数目a和小数比特的数目b。
在其他情况下,取代使用Q格式来表示输入到DNN的层的值,可以使用由固定整数指数exp和b比特尾数m定义的定点数格式以使得值z等于z=2expm。在一些情况下,尾数m可以用二进制补码格式表示。然而,在其他情况下,可以使用其他有符号或无符号整数格式。在这些情况下,对于用该格式表示的值的集合,指数exp和尾数比特的数目b只需要被存储一次。在这种定点数格式被用于表示DNN的值的情况下,量化参数对于每个定点数格式可包括尾数比特长度b(其在本文中也可被称为比特宽度或比特长度),以及指数exp。
在另外的其他情况下,8比特非对称定点(Q8A)格式可用于表示输入到DNN的层的值。此格式包括最小可表示数字rmin、最大可表示数字rmax、零点z和每个值的8比特数字,该8比特数字标识最小和最大数字之间的线性插值因子。在其他情况下,可以使用Q8A格式的变体,其中用于存储插值因子的比特的数目是可变的(例如,用于存储插值因子的比特的数目可以是多个可能整数之一)。如式(1)中所示可从这种格式构造浮点值dfloat,其中b是量化表示所使用的比特的数目并且z是量化的零点,其始终正好映射回到0.f。在这种定点数格式被用于表示DNN的值的情况下,量化参数对于每个定点数格式可包括最大可表示数字或值rmax、最小可表示数字或值rmin、量化零点z以及可选地包括尾数比特长度b(即当比特长度不是固定在8时)。
虽然用于高效地表示值的集合的定点数格式(以及更具体而言其量化参数)可简单地从集合中的值的范围确定,但由于DNN的层是互连的,所以用于表示DNN的值的比特的数目和DNN的性能(例如准确性)之间的更好的折衷可通过在选择用于表示DNN的值的定点数格式(以及更具体而言其量化参数)时考虑到层之间的交互来实现。
因此,本文描述了用于利用反向传播来识别用于表示DNN的值的定点数格式以及具体而言其量化参数(例如指数和尾数比特长度)的方法和系统。正如本领域技术人员已知的,反向传播是一种可用于训练DNN的技术。训练DNN包括识别适当的权重来配置DNN执行特定功能。
具体而言,为了经由反向传播训练DNN,DNN的模型被配置为使用特定的权重集合,训练数据随后被应用到该模型,并且响应于训练数据的模型的输出被记录。然后从记录的输出计算可微分的误差度量,该误差度量定量地指示出使用该特定权重集合的DNN的性能。在一些情况下,误差度量可以是记录的输出和对于该训练数据的预期输出之间的距离(例如均方距离)。然而,这只是一个示例,而可以使用任何适当的误差度量。误差度量的导数随后被反向传播到DNN的权重以产生误差度量关于每个权重的梯度/导数。然后基于梯度来调整权重以减小误差度量。重复此过程直到误差度量收敛为止。
经常利用其中DNN的值(例如输入数据值、权重和偏置)被以浮点数格式来表示和处理的DNN的模型来训练DNN。使用浮点数格式来表示和处理DNN的值的DNN在本文中被称为浮点DNN。浮点DNN的模型在本文中可被称为DNN的浮点模型。然而,如上所述,用于实现DNN的硬件(例如DNN加速器)可使用定点数格式来表示DNN的值(例如输入数据值、权重和偏置)以减小硬件的大小和效率。对于其值的至少一些使用定点数格式的DNN在本文中被称为定点DNN。为了训练定点DNN,可以向DNN的浮点模型添加量化块,这些量化块在处理DNN的值之前将这些值量化到预定的定点数格式。这允许了在训练DNN时考虑到将值量化到定点数格式。包括一个或多个量化块来量化输入值的集合的DNN的模型在本文中被称为DNN的量化模型。
例如,图4示出了示例DNN 400,其包括根据权重的第一集合W1来处理输入数据值的第一集合X1的第一层402;以及根据权重的第二集合W2来处理输入数据值的第二集合X2(第一层402的输出)的第二层404。可以用一个或多个量化块来增强这种DNN 400的浮点模型,其中每个量化块量化DNN的层的输入值的集合以使得在训练DNN时可将对DNN的值的量化考虑在内。例如,如图4中所示,可通过添加如下量化块来从DNN的浮点模型生成DNN的量化模型420:将输入数据值的第一集合X1量化到由量化参数的第一集合(例如b1,exp1)定义的定点数格式的第一量化块422,将权重的第一集合W1量化到由量化参数的第二集合(例如b2,exp2)定义的定点数格式的第二量化块424,将输入数据值的第二集合X2量化到由量化参数的第三集合(例如b3,exp3)定义的定点数格式的第三量化块426,以及将权重的第二集合W2量化到由量化参数的第四集合(例如b4,exp4)定义的定点数格式的第四量化块428。
发明人已确定,将量化块添加到DNN的浮点模型允许了经由反向传播来确定量化参数(例如尾数比特长度和指数)本身,只要量化参数是可微分的。具体而言,这可通过使得量化参数(例如比特长度b和指数exp)可学习并且基于误差度量和DNN的大小(基于实现DNN的比特的总数)生成成本度量来实现。成本度量的导数随后可被反向传播到量化参数(例如比特深度b和指数exp)以产生成本度量关于每个量化参数的梯度/导数。每个梯度指示出为了减小成本度量,相应的量化参数(例如比特深度或指数)是应当高于还是低于其现在的值。随后可基于梯度来调整量化参数以最小化成本度量。与训练DNN(即识别DNN的权重)类似,可重复此过程直到成本度量收敛为止。
测试已表明,利用反向传播识别DNN的量化参数可生成具有良好的性能水平(例如具有高于预定阈值的准确性)而却具有最小比特数目的定点DNN,这允许了用硬件高效地实现DNN。
现在参考图5,其图示了用于经由反向传播识别DNN的量化参数的示例方法500。方法500可由基于计算的设备实现,例如下文对于图13描述的基于计算的设备1300。例如,可以有其上存储有计算机可读指令的计算机可读存储介质,这些计算机可读指令当在基于计算的设备处被执行时使得基于计算的设备执行图5的方法500。
该方法开始于块502,在这里确定DNN的量化模型响应于训练数据的输出。DNN的模型是可用于确定DNN响应于输入数据的输出的DNN的表示。模型可例如是DNN的软件实现或者DNN的硬件实现。确定DNN的模型响应于训练数据的输出包括使训练数据经过DNN的层并且获得其输出。这可被称为DNN的正向传播,因为计算流是从输入经过DNN到输出。模型可被配置为使用受训练的权重集合(例如,通过训练DNN的浮点模型获得的权重集合)。
DNN的量化模型是包括一个或多个量化块的DNN的模型,这些量化块被配置为在输入到DNN的层的值的集合被该层处理之前将这些值量化到一个或多个定点格式。量化块允许量化DNN的值的一个或多个集合对DNN的输出的影响被测量。
正如本领域技术人员已知的,量化是将更高精度数字格式的数字转换成更低精度数字格式的过程。将更高精度格式的数字量化到更低精度格式一般包括基于特定的舍入模式(例如但不限于就近舍入(round to nearest,RTN)、向零舍入(round to zero,RTZ)、下偶数优先(ties to even,RTE)、向正无穷舍入(round to positive infinity,RTP)和向负无穷舍入(round to negative infinity,RTNI))选择更低精度格式的可表示数字之一来表示更高精度格式的数字。
例如,式(2)陈述了用于将第一数字格式的值z量化成第二更低精度数字格式的值zq的示例公式,其中Xmax是第二数字格式的最高可表示数字,Xmin是第二数字格式的最低可表示数字,并且RND(z)是舍入函数:
式(1)中陈述的公式将第一数字格式的值量化成基于舍入模式RND(例如RTN、RTZ、RTE、RTP或RTNI)选择的第二数字格式的可表示数字之一。
在本文描述的示例中,更低精度格式是定点数格式并且更高精度格式可以是浮点数格式或定点数格式。换言之,每个量化块被配置为接收可以是浮点数格式或定点数格式的输入数字格式的值的集合,并且将值的集合量化成更低精度的输出定点数格式。
如上文对于图3所描述,DNN的每一层接收输入数据值并且产生输出数据值。层也可接收权重和/或偏置。因此,被任何量化块量化的值的集合可以是一层的输入数据值的全部或子集、一层的权重的全部或子集或者一层的偏置的全部或子集。例如,如图4中所示,DNN的量化模型420可包括将第一层402的输入数据值量化到第一输出定点数格式的第一量化块422、将第一层的权重量化到第二输出定点数格式的第二量化块424、将第二层404的输入数据值量化到第三输出定点数格式的第三量化块426以及将第二层404的权重量化到第四输出定点数格式的第四量化块428。本领域技术人员将会明显可见,这只是示例,而在其他示例中可以有不同数目的量化块并且它们可按不同的方式来配置。例如,在一些情况下,量化块中的一个或多个可被配置为将特定输入类型的值的不同子集量化到不同的输出定点数格式。例如,量化块可将一层的输入值的第一子集量化到第一输出定点数格式并且将该层的输入值的第二子集量化到不同的第二输出定点数格式。在其他情况下,每种输入类型可以有多个量化块。例如,可以有多个用于量化层的权重的量化块,其中这些量化块的每一者只量化层的权重的一部分(或者只是子集)。层的特定输入类型的值(例如输入数据值、权重或偏置)的不同子集是否可被量化到不同的输出定点数格式可取决于要实现DNN的硬件。例如,可实现DNN的一些硬件逻辑对于每层每种输入类型可只支持单个定点数格式,而其他硬件(例如下文描述的DNN加速器)对于每层每种输入类型可支持多个定点数格式。
量化块使用的每个输出定点数格式由一个或多个量化参数定义。定义特定输出定点数格式的量化参数可基于要实现DNN的硬件逻辑所支持的特定定点数格式。例如,在要实现DNN的硬件逻辑支持Q格式的情况下,每个定点数格式可由整数比特的数目和小数比特的数目来定义。在其他情况下,每个定点数格式可由指数exp和尾数比特长度b来定义;或者由最小可表示值rmin、最大可表示值rmax、零点z以及可选地比特长度b来定义。
在块502的第一迭代中,可从支持的量化参数中随机地选择量化块使用的量化参数,或者可按另一种方式来选择它们。例如,在一些情况下,尾数比特长度可被设置到高于要用于实现DNN的硬件所支持的最高比特长度的值以便信息不会被初始量化丢失。例如,在要用于实现DNN的硬件支持16比特的最大比特长度的情况下,于是尾数比特长度最初可被设置到高于16的值(例如20)。
将在下文描述量化块的示例实现方式。
一旦确定了DNN的模型响应于训练数据的输出,方法500就前进到块504。
在块504,根据(i)DNN的量化模型响应于训练数据的输出和(ii)基于量化参数的集合的DNN的大小,来确定在块502中使用的量化参数的集合的成本度量cm。成本度量cm是量化参数的集合的质量的定量测定。在本文描述的示例中,量化参数的集合的质量是基于当量化参数的集合被用于量化DNN的值时的DNN的误差,以及当量化参数的集合被使用时DNN的大小(例如比特的数目)的。因此,在一些情况下,成本度量cm可以是误差度量em和大小度量sm的组合。在一些示例中,成本度量cm可如式(3)中所示被计算为误差度量em和大小度量sm的加权和,其中α和β分别是应用到误差度量em和大小度量sm的权重。权重α和β被选择来实现误差和大小度量之间的一定平衡。换言之,权重被用于指示哪个更重要——误差还是大小。例如,如果大小度量权重β较小,则成本度量将由误差度量主导,导致更准确的网络。相反,如果大小度量权重β较大,则成本度量将由大小度量主导,导致具有更低准确性的更小网络。然而,在其他示例中,误差度量em和大小度量sm可按另一种适当的方式被组合来生成成本度量cm。
cm=(α*em)+(β*sm) (3)
误差度量em是提供当量化参数的特定集合被用于量化DNN的值时DNN的量化模型的输出中的误差的定量测度的任何度量。在一些示例中,DNN的量化模型响应于训练数据的输出中的误差可被计算为输出相对于基线输出的误差。在一些情况下,如图6的600处所示,基线输出可以是DNN的浮点模型(即其中DNN的值为浮点数格式的DNN的模型)的输出。由于值按浮点数格式一般可被表示得更准确或者说更精确,因此DNN的浮点模型表示将产生最准确输出的DNN的模型。因此,DNN的浮点模型生成的输出可被用作从其来计量由DNN的量化模型生成的输出数据的准确性的基准或基线输出。
在其他示例中,如图7的700处所示,基线输出可以是训练数据的地面真值输出。在这些示例中,DNN的量化模型的输出中的误差可指示出DNN的量化模型的输出相对于训练数据的已知结果的准确性。
基线输出和DNN的量化模型的输出之间的误差可按任何适当方式来确定。在DNN是分类网络的情况下,DNN的输出可以是分对数(logit)的集合。正如本领域技术人员已知的,分类网络确定输入数据落到多个类别的每一者中的概率。分类DNN一般输出一数据向量,其中对应于每个类别有一个元素,并且这些元素的每一者被称为分对数。例如,具有1425个潜在类别标签的分类网络可输出1425个分对数的向量。在这些情况下,基线输出和DNN的量化模型的输出之间的误差可被计算为相应分对数之间的L1距离。这在式(4)中例示,其中r是基线输出中的分对数的集合并且r'是DNN的量化模型的输出中的分对数的集合:
em=∑i|ri-r'i| (4)
在其他示例中,分类DNN的输出可改为是应用到分对数的归一化指数(SoftMax)函数的输出。正如本领域技术人员已知的,SoftMax函数是应用到由DNN输出的分对数以使得与每个分类相关联的值加起来是1的变换。这允许了SoftMax函数的输出表示各类别上的概率分布。SoftMax函数的输出可被称为SoftMax归一化分对数。SoftMax函数可如式(5)中所示那样来表述(有或没有额外的温度参数T),其中si是类别i的SoftMax输出,ri是类别i的分对数,并且i和j是与类别相对应的向量索引。增大温度T会使得SoftMax值“更柔软”(即更少饱和到0和1)并从而更容易针对其来训练。
在分类DNN的输出是SoftMax归一化分对数的集合的情况下,基线输出和DNN的量化模型的输出之间的误差可被计算为SoftMax函数的输出之间的L1距离。
在其他情况下,DNN的量化模型响应于训练数据的输出的误差可以是前N分类准确性,其中N是大于或等于1的整数。正如本领域技术人员已知的,前N分类准确性是对于正确的分类有多经常在由DNN输出的前N个分类中的测度。流行的前N分类准确性是前1和前5分类准确性,但可使用任何前N分类准确性。
一般而言,DNN将根据误差度量被训练(即其权重被根据误差度量来选择),并且使用在训练中使用的相同误差度量来选择量化参数是有利的。
大小度量sm是提供当量化参数的特定集合被使用时实现DNN的硬件相关成本的定量测度的任何度量。实现DNN的硬件相关成本可包括例如将数据从存储器转移到NNA芯片的成本。大小度量可例如按物理单位(例如焦耳)或按信息单位(例如比特或字节)来表述。具体而言,在一些情况下,实现DNN的硬件相关成本可与DNN的大小成比例,其中DNN的大小是用于表示DNN的值(例如输入数据值、权重和偏置)的比特或字节的数目。在这些情况下,在量化块使用的输出定点数格式由尾数比特的数目b和指数exp来定义并且指数exp被以该定点数格式表示的值的集合所共享的情况下,大小度量sm可根据式(6)来计算,其中bi是被量化的值的第i集合的尾数比特长度并且numi是值的第i集合中的值的数目并且j是被量化的值的集合的数目:
在其他情况下,每个集合中的值的数目可被忽略,从而大小度量是根据式(7)来计算的。
一旦已确定了量化参数的集合的成本度量cm,方法500就前进到块506。
在块506,成本度量cm的导数被反向传播到一个或多个量化参数以生成成本度量关于一个或多个量化参数中的每一者的梯度。
正如本领域技术人员已知的,函数在特定点的导数是该函数在该点变化的速率或速度。导数是可分解的,从而可被反向传播到DNN的参数以生成成本度量关于这些参数的导数或梯度。如上所述,反向传播(其也可被称为误差的后向传播)是一种用于训练DNN以计算误差度量关于DNN的权重的梯度的方法。申请人提出,反向传播也可被用于确定成本度量cm关于量化参数(例如比特宽度b和指数exp)的导数例如,图8图示了将成本度量cm反向传播到图4的DNN的量化参数(例如比特宽度b和指数exp)。具体地,成本度量cm关于第二和第三比特宽度b3和b4的导数可分别如式(8)和(9)中所示那样被计算。成本度量cm的导数到量化参数的比特可例如利用用于利用反向传播来训练DNN的任何适当工具来执行,例如但不限于TensorFlowTM。
成本度量关于特定量化参数的梯度指示出要向哪个方向移动量化参数来减小成本度量cm。具体而言,正梯度指示出可通过减小量化参数来减小成本度量cm;并且负梯度指示出可通过增大量化参数来减小成本度量cm。例如,图9示出了示例成本度量cm关于特定比特宽度bi的图线900。图线900示出了当比特宽度bi具有第一值x1时实现最低成本度量。从图线900可以看出,当比特宽度bi小于x1时(例如当其具有第二值x2时),其具有负梯度902并且可通过增大比特宽度bi来减小成本度量cm。类似地,当比特宽度bi大于x1时(例如当其具有第三值x3时),其具有正梯度904并且成本度量cm。成本度量cm关于特定量化参数的梯度在本文中可被称为针对量化参数的梯度。
一旦成本度量的导数已被反向传播到一个或多个量化参数以生成成本度量针对这些量化参数的每一者的梯度,方法500就前进到块508。
在块508,基于梯度来调整量化参数(例如比特宽度bi和指数expi)中的一个或多个。方法500的目标是识别将产生“最佳”成本度量的量化参数的集合。什么构成“最佳”成本度量将取决于成本度量是如何被计算的。例如,在一些情况下,成本度量越低,成本度量越好,而在其他情况下,成本度量越高,成本度量越好。
如上所述,针对量化参数的梯度的符号指示出是将通过增大还是减小量化参数来减小成本度量。具体而言,如果针对量化参数的梯度是正的,则量化参数的减小将减小成本度量;而如果针对量化参数的梯度是负的,则量化参数的增大将减小成本度量。因此,调整量化参数可包括根据梯度的符号增大或减小量化参数以便增大或减小成本度量(取决于是想要增大还是减小成本度量)。例如,如果较低的成本度量是想要的并且针对量化参数的梯度是负的,则量化参数可被增大以图减小成本度量。类似地,如果较低的成本度量是想要的并且针对量化参数的梯度是正的,则量化参数可被减小以图减小成本度量。
在一些情况下,量化参数被增大或减小的量可基于梯度的幅值。具体地,在一些情况下,量化参数可按梯度的幅值被增大或减小。例如,如果梯度的幅值是0.4,则量化参数可被增大或减小0.4。在其他情况下,量化参数可按梯度的幅值的某个系数被增大或减小。
更一般而言,当目标是减小成本度量cm时,经调整的量化参数(qpadj)可通过如式(10)中所示从量化参数(qp)中减去针对量化参数的梯度(gqp)来生成。在一些情况下,可能可以通过如式(11)中所示将梯度乘以学习速率l来调整不同的量化参数被调整的速率。学习速率越高,量化参数就将越快被调整。学习速率对于不同的量化参数可以不同。
qpadj=qp-gqp (10)
qpadj=qp-l*gqp (11)
通常,实现DNN的硬件可只支持整数比特宽度bi和指数expi并且在一些情况下对于比特宽度和/或指数可只支持整数值的特定集合。例如,要实现DNN的硬件逻辑可只支持4、5、6、7、8、10、12和16的比特宽度。因此,在量化参数被用于用硬件实现DNN之前,该量化参数被舍入到最近整数或者支持的整数的集合中的最近整数。例如,如果最优比特宽度根据该方法被确定为是4.4,则比特宽度在其被用于用硬件实现DNN之前可被量化(例如舍入)到最近(RTN)整数(在此情况下是4)。
因此,在一些情况下,为了考虑到当用硬件实现DNN时发生的量化参数的量化(例如舍入),当识别“最佳”量化参数时,如式(12)中所示增大/减小的量化参数可被舍入到最近整数或者舍入到整数的集合中的最近整数,然后增大/减小的量化参数才被用在下一迭代中,其中RTN是舍入到最近整数函数并且是在其已被舍入到最近整数之后的增大/减小的量化参数。例如,在特定的比特宽度根据与之相关联的梯度被增大或减小之后,增大或减小的比特宽度在其被用在下一迭代中之前可被舍入到最近整数,或者集合{4,5,6,7,8,10,12,16}的最近整数。
在其他情况下,取代在量化参数已被增大/减小之后实际量化(例如舍入)量化参数,可以只是模拟量化参数的量化(例如舍入)表示的变换。例如,在一些情况下,取代将增大/减小的量化参数舍入到最近整数,或者集合中的最近整数,可通过对增大/减小的量化参数执行随机量化来模拟量化。对增大/减小的量化参数执行随机量化可包括向增大/减小的量化参数添加-a到+a之间的随机值u以生成随机化的量化参数,其中a是以下两项之间的距离的一半:(i)集合中的最接近增大/减小的量化参数并且小于增大/减小的量化参数的整数和(ii)集合中的最接近增大/减小的量化参数并且大于增大/减小的量化参数的整数;并且随后将随机化的量化参数设置到这两个最接近整数中最近的那个。当随机量化被用于模拟舍入到最近整数时,于是a等于0.5并且随机量化可如式(13)中所示那样来实现,其中RTN是舍入到最近整数函数并且是在随机量化之后的增大/减小的量化参数。
例如,如果在硬件实现方式中比特宽度可以是集合{4,5,6,7,8,10,12,16}中的任何整数,那么如果比特宽度bi被增大/减小到4.4,则-0.5到+0.5之间的随机值被添加到增大/减小的比特宽度bi,因为集合中的最接近的较低整数和较高整数(4和5)之间的距离是1;然后随机化的比特宽度被设置到这两个最接近整数(4和5)中的最近那个。类似地,如果比特宽度bi被增大/减小到10.4,则-1到+1之间的随机值被添加到增大/减小的比特宽度bi,因为集合中的最接近的较低整数和较高整数(10,12)之间的距离是2;然后随机化的比特宽度被设置到这两个最接近整数(10,12)中的最近那个。这样,增大/减小的量化参数以与到某个整数的距离成比例的概率被向上或向下舍入到该整数。例如,4.2将以20%概率被舍入到4并且以80%概率被舍入到5。类似地,7.9将以10%概率被舍入到7并且以90%概率被舍入到8。测试已表明,在一些情况下,通过向增大/减小的量化参数添加随机值并随后舍入,而不是简单地舍入增大/减小的量化参数,可以更高效且有效地识别量化参数。
在其他情况下,取代将增大/减小的量化参数舍入到最近整数,或者集合中的最近整数,可通过对增大/减小的量化参数执行均匀噪声量化来模拟量化参数的量化。对增大/减小的量化参数执行均匀噪声量化可包括向增大/减小的量化参数添加-a到+a之间的随机值u,其中如上所述a是以下两项之间的距离的一半:(i)集合中的最接近增大/减小的量化参数并且小于增大/减小的量化参数的整数和(ii)集合中的最接近增大/减小的量化参数并且大于增大/减小的量化参数的整数。当均匀噪声量化被用于模拟舍入到最近整数时,于是a等于0.5,并且均匀噪声量化可如式(14)中所示那样来实现,其中是在均匀噪声量化之后的增大/减小的参数。通过简单地向增大/减小的量化参数添加随机值,增大/减小的量化参数以与舍入增大/减小的量化参数类似的方式被失真。
在另外的其他情况下,取代将增大/减小的量化参数舍入到最近整数,或者集合中的最近整数,可通过对增大/减小的量化参数执行梯度平均量化来模拟量化参数的量化。执行梯度平均量化可包括取得小于或等于增大/减小的量化参数的可允许整数中的最高那个并随后添加0到c之间的随机值h,其中c是(i)集合中最接近增大/减小的量化参数并且小于增大/减小的量化参数的整数和(ii)集合中最接近增大/减小的量化参数并且大于增大/减小的量化参数的整数之间的距离(或者通过在数学上等同于上述的任何操作)。当梯度平均量化被用于模拟舍入到最近整数时,则c等于1并且梯度平均量化可如式(15)中所示那样来实现,其中RTNI是向负无穷舍入函数(其也可被称为向下取整函数)并且是在梯度平均量化之后的增大/减小的量化参数。
例如,如果比特宽度bi可以是集合{4,5,6,7,8,10,12,16}中的任何整数并且特定的比特宽度bi根据梯度被增大/减小到4.4,则集合中的小于或等于增大/减小的量化参数的最高整数被选择(即4)并且0到1之间的均匀随机值被添加到它,因为集合中的最接近的较低整数和较高整数(4和5)之间的距离是1。类似地,如果比特宽度bi根据梯度被增大/减小到10.4,则集合中的小于或等于该值的最高整数被选择(即10)并且0到2之间的随机值被添加到它,因为集合中的最接近的较低整数和较高整数(10和12)之间的距离是2。
测试已表明,梯度平均量化方法对于被量化的参数大部分独立的问题效果良好,但在优化高度相关的参数时效果则不那么好。
在另外的其他情况下,取代将增大/减小的量化参数舍入到最近整数,或者集合中的最近整数,可通过执行双峰量化来模拟量化参数的量化,双峰量化是舍入到最近整数量化(例如式(12))和梯度平均量化(例如式(15))的组合。具体而言,在双峰量化中,以概率p对增大/减小的量化参数执行梯度平均量化,否则对增大/减小的量化参数执行舍入量化。当双峰量化被用于模拟舍入到最近整数时,p是到最近整数的距离的两倍并且双峰量化可如式(16)中所示那样来实现,其中是在其双峰量化之后的增大/减小的量化参数。
集合中的相邻整数之间的差异不恒定的整数的有序集合被称为非均匀整数集合。例如,整数的有序集合{4,5,6,7,8,10,12,16}是非均匀整数集合,因为整数4和5之间的差异是1,但整数12和16之间的差异是4。与之不同,整数的有序集合{1,2,3,4,5}是均匀整数集合,因为任何两个相邻整数之间的差异是1。
如上所述,为了模拟将增大/减小的量化参数舍入到非均匀整数集合中的最近整数,如上所述可基于集合中的低于增大/减小的量化参数的最近整数和集合中的高于增大/减小的量化参数的最近整数之间的差异对于上述量化模拟方法(例如随机量化、均匀噪声量化、梯度平均量化或者双峰量化)之一选择量化参数a或c并且根据期望的模拟方法量化增大/减小的量化参数。在其他情况中,将增大/减小的量化参数舍入到非均匀整数集合中的最近整数可通过以下操作来模拟:(1)基于非均匀整数集合中的最近较低整数和非均匀整数集合中的最近较高整数之间的距离/差异(这可被描述为值的局部“密度”)来缩放增大/减小的量化参数以生成变换或缩放的增大/减小的量化参数;(2)利用上文描述的模拟方法(例如,式(13)、(14)、(15)或(16))之一模拟将变换的增大/减小的量化参数舍入到最近整数;并且(3)反转步骤(1)中执行的变换或缩放以得到最终量化的增大/减小的量化参数。
将通过示例对此进行进一步描述。在此示例中,非均匀整数集合是{4,5,6,7,8,10,12,16}。在步骤(1)中,基于非均匀整数集合中的最近较低整数和非均匀整数集合中的最近较高值之间的距离/差异对增大/减小的量化参数进行缩放。具体而言,变换或缩放的增大/减小的量化参数等于增大/减小的量化参数除以集合中的最接近较低整数和集合中的最接近较高整数之间的距离。例如,8和12之间的增大/减小的量化参数被缩放(乘以)1/2,因为集合中的最近较低整数(即8或10)和集合中的最近较高整数(即10或12)之间的距离是2;12和16之间的增大/减小的量化参数被缩放1/4,因为集合中的最近较低整数(即12或14)和集合中的最近较高整数(即14或16)之间的距离是4;并且4和8之间的增大/减小的量化参数被缩放1,因为集合中的最近较低整数(即4、5、6、7)和集合中的最近较高整数(即5、6、7、8)之间的距离是1。例如,13被变换到3.25;5.4被变换到5.4;8.9被变换到4.45;并且11.5被变换到5.75。此变换可由式(17)表示,其中qpadj是增大/减小的量化参数,是变换的增大/减小的量化参数,并且s如式(18)中所示,其中在qpadj>8时为1,否则为0,并且在qpadj>12时为1,否则为0,从而使得对于qpadj<8,s=1,对于8<qpadj<12,s=2,并且对于qpadj>12.,s=4。
在步骤(2)中,利用上文描述的用于模拟舍入到最近整数的方法(例如式(13)、(14)、(15)或(16))之一模拟将变换的值舍入到最近整数。在步骤(3)中,步骤(1)中执行的变换被反转来生成最终量化值。这由式(19)表示,其中是在步骤(2)中生成的量化变换值并且是最终最化的增大/减小的量化参数。
例如,如果步骤(2)的输出是3并且s=4,则这被变换回到12;如果步骤(2)的输出是5并且s=1,则这被变换回到5;如果步骤(2)的输出是4并且s=2,则这被变换回到8;并且如果步骤(2)的输出是6并且s=2,则这被变换回到12。这在表格2中总结。
表格2
本领域技术人员明显可见,这些是可用于对量化参数进行量化或者模拟其量化的函数的示例,并且其他函数可用于对量化参数进行量化,或者模拟其量化。然而,为了能够将成本度量cm的导数反向传播到量化参数,量化函数q(例如)被定义成使得成本度量的导数可按量化参数来定义。发明人已确定,如果量化函数q(例如 )关于被量化的量化参数的导数被定义为1,则机器学习框架可生成成本函数关于量化参数的有用梯度。
在一些情况下,增大/减小的量化参数的量化(例如舍入)可由相关量化块执行。例如,在一些情况下(如下文更详细描述的),增大/减小的量化参数可被提供到量化块并且每个量化块可被配置为在使用量化参数来量化输入值之前量化(例如舍入)其量化参数,或者模拟其量化(例如舍入)。
在调整量化参数包括量化(例如舍入)增大/减小的量化参数(根据梯度)或者模拟其量化的情况下,通过上文描述的任何方法,量化参数的更高精度(例如浮点)版本可被维持并且在块508的后续迭代中根据梯度被增大/减小的是量化参数的更高精度版本。在一些情况下,增大/减小的量化参数的随机量化版本可被维持,并且在后续迭代中被增大/减小的是量化参数的随机量化版本。
一旦已基于梯度调整了量化参数中的一个或多个,方法500就可结束或者方法500可前进到块510,在这里可重复块502-508。
在块510,确定是否要重复块502-508(即确定DNN的量化模型响应于训练数据的输出,基于该输出和DNN的大小确定成本度量;将成本度量的导数反向传播到量化参数以生成成本度量关于量化参数的梯度,并且基于梯度来调整量化参数)。在一些情况下,关于是否要重复块502-508的确定是基于是否已完成块502-508的预定数目的迭代或者是否预定量的训练时间已逝去的。迭代的预定数目或者训练的预定量可能是经验地确定为足以产生良好结果的。在其他情况下,关于是否要重复块502-508的确定可基于成本度量是否已收敛。任何适当的标准可用于确定成本度量何时已收敛。例如,在一些情况下,如果成本度量在预定数目的迭代中都没有显著变化(例如变化大于预定阈值),则可确定成本度量已收敛。
如果确定不要重复块502-508,则方法500可结束或者方法500可前进到块512。然而,如果确定要重复块502-508,则方法500返回到块502,在这里以块508中调整的量化参数来重复块502-508。例如,如果在第一迭代中,值的集合被量化块量化到由尾数比特宽度6和指数4定义的定点数格式并且尾数比特宽度被调整到比特宽度5并且指数未被调整,则在下一迭代中,值的该集合将被量化块量化到由比特宽度5和指数4定义的定点数格式。
在块512,量化参数(在块508中调整了的)被输出来用于配置硬件逻辑来实现DNN。在一些情况下,输出的是量化参数的浮点版本。在其他情况下,输出的是可被硬件逻辑使用的量化参数的版本(即在其已被量化到整数或整数的集合之后的量化参数的浮点版本)。量化参数可按任何适当的方式被输出。一旦量化参数(在块508中调整了的)已被输出,方法500就可结束或者方法500可前进到块514。
在块514,能够实现DNN的硬件逻辑被配置为利用在块512中输出的量化参数来实现DNN。在块512中输出的量化参数过去是浮点数格式的情况下,量化参数在被用于配置硬件逻辑来实现DNN之前可被量化到整数或者整数的集合。配置硬件逻辑来实现DNN一般可包括配置硬件逻辑来根据DNN的每一层处理到该层的输入并且将该层的输出提供到后续的层或者将该输出作为DNN的输出提供。例如,如果DNN包括第一卷积层和第二归一化层,则配置硬件逻辑来实现这种DNN包括配置硬件逻辑来接收到DNN的输入并且根据卷积层的权重来处理这些输入,根据归一化层处理卷积层的输出,然后输出归一化层的输出作为DNN的输出。配置硬件逻辑来利用在块512中输出的量化参数实现DNN可包括配置硬件逻辑来接收到每层的输入并且根据针对该层的量化参数(即根据由量化参数定义的定点数格式)处理输入。例如,如果量化参数指示出由指数4和比特宽度6定义的定点数格式要被用于DNN的一层的输入数据值,则实现DNN的硬件逻辑可被配置为基于该层的输入数据值采取的是由指数4和比特宽度6定义的定点数格式来解读这些输入数据值。
在图5的方法500中,完整的成本度量被计算(例如根据式(2))并且成本度量的导数被反向传播到量化参数以针对每个量化参数计算梯度。针对特定量化参数的梯度随后被用于调整该量化参数。然而,在其他示例中,计算成本度量可包括计算误差度量和大小度量并且针对每个量化参数对于每个度量确定单独的梯度。换言之,生成误差度量关于每个量化参数的梯度并且生成大小度量关于每个量化参数的梯度。误差度量关于量化参数的梯度可通过按与成本度量的导数被反向传播到量化参数相同的方式将误差度量的导数反向传播到量化参数来生成。大小度量关于量化参数的梯度可通过反向传播来生成或者可直接从大小度量生成。针对每个量化参数的最终梯度可按相应的成本度量被组合来形成成本度量的相同方式从两个梯度生成。例如,最终梯度可被生成为两个梯度的加权和。通过改变与两个梯度相关联的权重,在大小和误差之间可找到平衡。随后可按与上述相同的方式根据最终梯度调整量化参数。
量化参数和权重的识别
虽然图5的方法500已被描述为用于识别DNN的量化参数,但在其他示例中DNN的权重可与量化参数同时被识别。在这些情况下,成本度量的导数也可被反向传播到权重以生成成本度量关于权重的梯度,并且权重可按与量化参数相似的方式基于相应的梯度被调整。
现在参考图10,其图示了识别DNN的量化参数和权重的方法1000。方法1000可用于重训练网络以考虑到DNN的值的量化(即在初始训练会话(例如对DNN的浮点模型执行的初始训练会话)之后更新权重)或者可用于执行网络的初始训练(即从未训练的权重集合训练网络)。方法1000包括图5的方法500的块502至512,但也包括块1002和1004(并且可选地包括块1006和1008)。块502至512按与上述相同的方式操作。当方法1000被用于重训练DNN时,DNN的量化模型中使用的初始权重集合可以是被训练权重集合。然而,在方法1000被用于训练DNN的情况下,DNN的模型中使用的初始权重集合可以是随机权重集合或者为训练DNN设计的另一权重集合。
在块1002,在确定了DNN的量化模型响应于训练数据的输出(块502)并且从DNN的量化模型的输出和量化参数确定了成本度量(块504)之后,成本度量的导数被反向传播到一个或多个权重以生成成本度量关于这些权重的每一者的梯度。成本度量关于权重的梯度在本文中被称为针对权重的梯度。与针对量化参数的梯度一样,针对权重的正梯度指示出可通过减小该权重来减小成本度量,并且针对权重的负梯度指示出可通过增大权重来减小成本度量。一旦已生成了针对一个或多个权重的梯度,方法就前进到块1004。
在块1004,基于针对权重的梯度来调整权重中的一个或多个。权重可按与量化参数相似的方式被调整。例如,如上所述,针对权重的梯度的符号指示出是将通过增大还是减小权重来减小成本度量。具体而言,如果针对权重的梯度是正的,则权重的减小将减小成本度量;而如果针对权重的梯度是负的,则量化参数的增大将减小成本度量。因此,调整权重可包括根据梯度的符号增大或减小权重以便增大或减小成本度量(取决于是想要增大还是减小成本度量)。例如,如果较低的成本度量是想要的并且针对权重的梯度是负,则权重可被增大以图减小成本度量。类似地,如果较低的成本度量是想要的并且针对权重的梯度是正,则权重可被减小以图减小成本度量。
在一些情况下,权重被增大或减小的量可基于针对该权重的梯度的幅值。具体地,在一些情况下,权重可按针对该权重的梯度的幅值被增大或减小。例如,如果梯度的幅值是0.6,则权重可被增大或减小0.6。在其他情况下,权重可按针对该权重的梯度的幅值的某个系数被增大或减小。具体地,在一些情况下,通过按被称为学习速率的东西来调整权重,权重可更快地收敛。
一旦已基于相应的梯度调整了权重,方法1000就可结束或者方法1000可前进到块510,在这里可重复块502-508和1002-1004。与块512和514类似,方法1000也可包括输出经调整的权重(在1006)和/或配置硬件来利用经调整的权重实现DNN(在1008)。
虽然在图10的方法1000中权重和量化参数在每次迭代被调整,但在其他示例中,在每次迭代中权重和量化参数中的一者或两者可被选择来调整。例如,量化参数可在预定数目的迭代中被调整,然后权重可在预定数目的迭代中被调整。在其他情况下,权重和量化参数可在交替的迭代中被调整。例如,权重调整可在奇数号迭代中被执行,并且量化参数调整可在偶数号迭代中被执行。这将允许在量化参数被舍入(或者其舍入被模拟)的同时权重被调整并且在权重被舍入的同时量化参数被调整。
量化块
现在将描述DNN的量化模型的量化块的示例实现方式。如上所述,每个量化块被配置为将输入到DNN的一层的值的集合量化到由一个或多个量化参数定义的定点数格式。在这些示例中,每个定点数格式由尾数比特长度b和指数exp定义,其中指数exp是由以该定点数格式表示的值的集合所共享的整数,从而使得采取该定点数格式的输入数据值的集合的大小是基于尾数比特长度b的。
为了能够将成本度量的导数反向传播到量化参数,不仅定义由每个量化块执行的量化函数,而且定义其导数。在实践中,一个式子的导数由机器学习框架自动定义,例如但不限于TensorFlowTM。
将值x量化到定点数格式的过程可被描述为包括两个步骤——(i)将值x进行阈值处理到可由该定点数格式表示的数字的范围(例如对于指数-1和比特宽度3的图11的线1102);并且(ii)通过将经阈值处理的值x舍入到最近的2的exp次幂来选择该定点数格式的可表示数字来表示值x(例如对于指数-1和比特宽度3的图11的线1104)。
值x到由尾数比特长度b和指数exp定义的定点数格式的量化操作的阈值处理步骤——即将值x阈值处理到可由定点数格式表示的范围——可由式(20)实现,其中clamp(x,low,high)如式(21)中定义并且low是由b和exp定义的定点数格式的最小或最低可表示数字(例如low=-2b-exp-1)并且high是由b和exp定义的定点数格式的最大或最高可表示数字(例如high=2b+exp-1–2exp):
thresh(x,b,exp)=clamp(x,-2exp+b-1,2exp+b-1-2exp) (20)
clamp(x,low,high)=min(max(x,low),high) (21)
为了能够通过阈值处理操作执行反向传播,定义阈值处理操作的导数。式(20)中定义的阈值处理函数关于x的导数对于落在可表示范围内的值是1,否则是0。然而,在一些情况下,一种更有用的导数是这样的:对于落在量化区间内的所有值是1,否则是0。这可通过使用式(22)中陈述的阈值处理函数而不是式(20)中陈述的阈值处理函数来实现:
thresh(x,b,exp)=clamp(x,-2exp+b-1-2exp-1,2exp+b-1-2exp-1) (22)
式(23)中定义的舍入函数关于x的导数对于识别DNN参数(例如权重和/或量化参数)可能是没有用的,因为其几乎在每个地方都是零,因此该导数可被设置为1。
从而值x到由比特宽度b和指数exp定义的定点数格式的总量化quant(x,b,exp)可如式(24)中所示利用阈值处理式子(式(20)或式(22))和舍入式子(23)的组合来实现:
quant(x,b,exp)=round(thresh(x,b,exp),exp) (24)
在量化块被配置为接收增大/减小的量化参数并且在使用量化参数来量化输入值之前量化(例如舍入)接收到的量化参数的情况下,组合的公式可被写为如式(25)中所示,其中q是用于对量化参数进行量化或者模拟其量化的舍入函数或者量化函数。用于对量化参数进行量化或者用于模拟其量化的示例舍入函数在上文联系块508描述了。换言之,量化函数q可实现(i)上文描述的舍入方法来舍入到最近整数或者集合中的最近整数,或者(ii)上文描述的模拟舍入到最近整数或者集合中的整数的任何方法(例如随机量化方法、均匀量化方法、梯度平均量化方法或者双峰量化方法之一)。如上所述,为了能够将成本度量cm的导数反向传播到量化参数,量化函数q被定义成使得成本度量的导数可按量化参数来定义。
quant(x,b,exp)=2q(exp)round(thresh(2-q(exp)x,-2q(b-1),2q(b-1)-1)) (25)
发明人已确定,如果量化函数q关于其在量化的量化参数的导数被定义为1,则机器学习框架可生成成本函数关于量化参数的有用梯度(例如可用于调整量化参数的梯度)。例如,测试已表明如果量化函数q关于其在量化的量化参数的导数被设置为1,则机器学习框架可生成:(i)如式(26)中所示的主量化函数quant关于量化参数b的导数db(x),其中low是由b和exp定义的定点数格式的最小或最低可表示数字,并且high是由b和exp定义的定点数格式最大或最高可表示数字;以及(ii)如式(27)中所示的主量化函数quant关于量化参数exp的导数dexp(x)。
可以看出机器学习框架可针对一量化块的每个量化参数(例如b、exp)针对由该量化块量化的每个输入值计算成本函数的导数。机器学习框架随后可基于针对每个量化参数的个体导数来针对每个量化参数(例如,b、exp)计算成本函数的最终导数。例如,在一些情况下,机器学习框架对于量化块的每个量化参数可通过将针对该量化参数的个体导数相加或求和来计算成本函数的最终导数。
在Q8A定点数格式的可变比特长度变体被用于表示到DNN的层的输入值并且零点z是0的情况下,由量化块执行的量化函数可由式(28)表示,其中b、exp和a是可训练的量化参数;
quant(x,b,exp,α)=2expround(thresh(2-expx,(α-1)2q(b-1),(α+1)2q(b-1)-1))
(28)
式(28)和式(25)之间的主要差异是作为缩放因子的a的引入,以及exp未被量化这个事实。如式(1)中所示的Q8A格式的可变比特长度变体的量化参数可从如式(24)、(25)和26)中所示的被训练量化参数exp、b和σ生成:
rmin=2expRND(2RND(b)-1(α-1)) (29)
rmax=2expRND(2RND(b)-1(α+1)-1) (30)
z=0 (31)
在Q8A定点数格式的可变比特长度变体被用于表示到DNN的层的输入值的情况下,其中零点z可不是零,由量化块执行的量化函数可由式(32)表示。
quant(x,b,exp,α)=2exp(round(thresh(2-expx-2q(b-1)α,-2q(b-1),(α+1)2q(b-1)-1))+
2q(b-1)α) (32)
对于式(28)和(32),虽然Q8A定点数格式的比特长度变体的量化参数是rmin、rmax、z和b,但测试已表明训练b、exp和a并且从其计算rmin、rmax和z已表明训练得更好。
在一些情况下,取代量化块将输入到它的值量化到由一个或多个量化参数定义的输出定点数格式(例如根据式(24)、(25)、(28)或(32)),量化块可被配置为只模拟输入值的量化表示的变换。
例如,在一些情况下,取代量化块被配置为将权重或输入值/激活阈值处理到定点数格式的可表示范围并且随后将经阈值处理的权重/激活舍入到定点数格式的最近可表示数字,可通过对权重/激活进行阈值处理,并且向经阈值处理的权重/激活添加-a到+a之间的随机值u并且随后进行舍入来模拟量化,其中a是定点数格式的可表示数字之间的距离的一半(即)。例如,如果定点数格式具有等于0的指数exp,则在舍入权重/激活之前,-0.5到+0.5之间的随机值被添加到经阈值处理的权重/激活,因为可表示数字之间的距离是1。类似地,如果定点数格式具有等于1的指数,则-1到+1之间的随机值被添加到经阈值处理的权重/激活,因为可表示数字之间的距离是2。这样,经阈值处理的权重/激活被以与到可表示数字的距离成比例的概率向上或向下舍入到该可表示数字。例如,在指数exp是0的情况下,经阈值处理的权重/激活4.2将以80%概率被舍入到4并且以20%概率被舍入到5。类似地,7.9将以10%概率被舍入到7并且以90%概率被舍入到8。在其他示例中,随机化和阈值处理的排序可被反转。例如,取代对权重/激活进行阈值处理、向经阈值处理的权重/激活添加随机值并随后进行舍入,随机值可被添加到权重/激活以生成随机化的权重,随机化的权重/激活可被阈值处理,然后被舍入。
在其他情况下,取代量化块被配置为将经阈值处理的权重/激活舍入到最近的可表示数字,量化块可被配置为通过向经阈值处理的权重/激活添加-a到+a之间的随机值u来模拟权重/激活的量化,其中如上所述,a是定点数格式的可表示数字之间的距离的一半。通过简单地将这种随机值添加到经阈值处理的权重/激活,经阈值处理的权重/激活被以与舍入经阈值处理的权重/激活相类似的方式来失真。在其他示例中,随机化和阈值处理的排序可被反转。例如,取代对权重/激活进行阈值处理并且向阈值权重添加随机值,随机值可被添加到权重/激活以生成随机化的权重/激活并且随机化的权重/激活可被阈值处理。
在另外的其他情况下,取代量化块将经阈值处理的权重/激活舍入到最近的可表示数字,量化块可被配置为通过对经阈值处理的权重/激活执行梯度平均量化来模拟量化。对经阈值处理的权重/激活执行梯度平均量化可包括取得经阈值处理的权重/激活的向下取整并随后添加0到c之间的随机值h,其中c是定点数格式的可表示数字之间的距离。例如,如果定点数格式的指数exp是0,则在取得经阈值处理的权重/激活的向下取整之后,0到1之间的随机值被添加到它,因为定点数格式的可表示数字之间的距离是1。类似地,如果定点数的指数exp是1,则在取得经阈值处理的权重/激活的向下取整之后,0到2之间的随机值被添加到它,因为可表示数字之间的距离是2。
在另外的其他情况下,取代量化块将经阈值处理的权重/激活舍入到最近的可表示数字,量化块可被配置为通过对经阈值处理的权重/激活执行双峰量化来模拟量化,双峰量化如上所述是舍入到最近量化和梯度平均量化的组合。具体而言,在双峰量化中,以概率p对经阈值处理的权重/激活执行梯度平均量化并且在其他情况下对经阈值处理的权重/激活执行舍入量化,其中p是到最近可表示值的距离的两倍除以定点数格式的可表示数字之间的距离。在其他示例中,双峰量化和阈值处理的排序可被反转。例如,取代对权重/激活进行阈值处理并且对经阈值处理的权重/激活执行双峰量化,可对权重/激活执行双峰量化并且可对双峰量化的结果执行阈值处理。
换言之,式(24)、(25)、(28)和(32)的任何一者中的舍入函数(round)可被实现上述的任何模拟舍入方法(例如随机量化方法、均匀噪声量化方法、梯度平均量化方法或者双峰量化方法)的函数所替换。
测试结果
现在参考表格3至5,其例示了为利用图5的方法500在COCO数据集上训练的SSD_Mobilenet_V1_object检测CNN的层选择的量化参数(比特宽度和指数)。表格3示出了为CNN的层的输入值(在一些情境中也称为激活)和权重(在一些情境中也称为系数)选择的量化参数(比特宽度和指数),其中比特宽度限于集合{5,6,7,8,10,12,16}。表格4示出了量化参数(比特宽度和指数),其中比特宽度限于集合{5,6,7,8,10}。表格5示出了量化参数(比特宽度和指数),其中比特宽度被设置到8比特(即只有指数被选择)。CNN的浮点版本的均值平均精度是0.207。当表格3的量化参数被用于实现CNN时CNN的均值平均精度是0.208。当表格4的量化参数被用于实现CNN时CNN的均值平均精度是0.205。当表格5的量化参数被用于实现CNN时CNN的均值平均精度是0.168。因此可以看出图5的方法500可用于找出网络大小和准确性之间的良好平衡。
表格3
表格4
表格5
示例DNN加速器
现在参考图12,其图示了可被配置为利用根据图5的方法500或图10的方法1000识别的量化参数来实现DNN的示例硬件逻辑。具体而言,图12图示了示例DNN加速器1200。
图12的DNN加速器1200被配置为通过一系列硬件经历(也可称为处理经历)来计算DNN的输出,其中在每次经历期间DNN加速器接收对于DNN的一层的输入数据的至少一部分并且根据该层(以及可选地根据一个或多个随后的层)处理接收到的输入数据来产生经处理的数据。经处理的数据或者被输出到存储器以用作后续硬件经历的输入数据,或者被输出作为DNN的输出。DNN加速器在单次硬件经历期间可处理的层的数目可基于数据的大小、DNN加速器的配置和层的顺序。例如,在DNN加速器包括硬件逻辑来执行每一种可能层类型的情况下,包括第一卷积层、第一激活层、第二卷积层、第二激活层和池化层的DNN可能够接收初始DNN输入数据并且在第一硬件经历中根据第一卷积层和第一激活层处理该输入数据,然后输出激活层的输出到存储器中,然后在第二硬件经历中从存储器接收该数据作为输入并且根据第二卷积层、第二激活层和池化层处理该数据来为DNN产生输出数据。
图12的示例DNN加速器1200包括输入模块1201、卷积引擎1202、累积缓冲器1204、按元素操作模块1206、激活模块1208、归一化模块1210、池化模块1212、输出交织模块1214和输出模块1215。每个模块或引擎实现或处理一种或多种类型的层的全部或一部分。具体而言,卷积引擎1202和累积缓冲器1204一起实现或处理卷积层或全连接层。激活模块1208处理或实现激活层。归一化模块1210处理或实现归一化层。池化模块1212实现池化层并且输出交织模块1214处理或实现交织层。
输入模块1201被配置为接收要处理的输入数据并且将其提供给下游模块以便处理。
卷积引擎1202被配置为利用与特定卷积层相关联的权重对接收到的输入数据执行卷积操作。DNN的每个卷积层的权重(其可由图10的方法1000生成)可被存储在如图12中所示的系数缓冲器1216中并且特定卷积层的权重可在该特定卷积层正被卷积引擎1202处理时被提供给卷积引擎1202。在DNN加速器支持可变权重格式的情况下,则卷积引擎1202可被配置为接收指示出被处理的当前卷积层的权重的一个或多个格式的信息以允许卷积引擎适当地解读和处理接收到的权重。
卷积引擎1202可包括多个乘法器(例如128)和多个加法器,这些加法器将乘法器的结果相加来产生单个加和。虽然在图12中示出了单个卷积引擎1202,但在其他示例中可以有多个(例如8个)卷积引擎,从而使得多个窗口可被同时处理。卷积引擎1202的输出被到累积缓冲器1204。
累积缓冲器1204被配置为接收卷积引擎的输出并且将其添加到累积缓冲器1204的当前内容。这样,累积缓冲器1204累积在卷积引擎1202的若干次硬件经历中的卷积引擎1202的结果。虽然在图12中示出了单个累积缓冲器1204,但在其他示例中可以有多个(例如8个,每个卷积引擎一个)累积缓冲器。累积缓冲器1204将累积的结果输出到按元素操作模块1206,按元素操作模块1206可取决于按元素层在当前硬件经历期间是否要被处理来在累积的结果上操作或不操作。
按元素操作模块1206被配置为接收对于当前硬件经历的输入数据(例如当卷积层在当前硬件经历中不被处理时)或者从累积缓冲器1204接收累积结果(例如当卷积层在当前硬件经历中被处理时)。按元素操作模块1206可取决于按元素层在当前硬件经历中是否被处理和/或取决于激活层是否要在按元素层之前被处理来处理接收到的输入数据或者将接收到的输入数据传递到另一模块(例如激活模块1208和/或归一化模块1210)。当按元素操作模块1206被配置为处理接收到的输入数据时,按元素操作模块1206对接收到的数据执行按元素操作(可选地利用另一数据集合(其可从外部存储器获得))。按元素操作模块1206可被配置为执行任何适当的按元素操作,例如但不限于加法、乘法、最大值和最小值。按元素操作的结果随后取决于激活层是否要在按元素层之后被处理而被提供到激活模块1208或归一化模块1210。
激活模块1208被配置为接收以下之一作为输入数据:到该硬件经历的原始输入(经由按元素操作模块1206)(例如当卷积层在当前硬件经历中不被处理时);累积的数据(经由按元素操作模块1206)(例如当卷积层在当前硬件经历中被处理并且按元素层在当前硬件经历中不被处理或者按元素层在当前硬件经历中被处理但是在激活层之后时)。激活模块1208被配置为向输入数据应用激活函数并且将输出数据提供回到按元素操作模块1206,在这里其被直接转发到归一化模块1210或者在按元素操作模块1206处理它之后被转发到归一化模块1210。在一些情况下,应用到由激活模块1208接收的数据的激活函数对于每个激活层可变化。在这些情况下,指定要对每个激活层应用的激活函数的一个或多个属性的信息可被存储(例如存储在存储器中)并且在特定硬件经历中处理的激活层的相关信息可在该硬件经历期间被提供到激活模块1208。
在一些情况下,激活模块1208可被配置为在查找表的条目中存储表示激活函数的数据。在这些情况下,输入数据可被用于查找查找表中的一个或多个条目并且输出表示激活函数的输出的值。例如,激活模块1208可被配置为通过在从查找表读取的两个或更多个条目之间插值来计算输出值。
在一些示例中,激活模块1208可被配置为通过实现修正线性单元(ReLU)函数来作为ReLU操作。在ReLU函数中,输出元素yi,j,k如式(33)中所陈述是通过识别最大值来计算的,其中对于小于0的x值,y=0:
yi,j,k=f(xi,j,k)=max{0,xi,j,k} (33)
在其他示例中,激活模块1208可被配置为通过实现参数修正线性单元(PReLU)函数来作为PReLU操作。PReLU函数执行与ReLU函数类似的操作。具体而言,在是常数的情况下,PReLU被配置为如式(34)中所陈述生成输出元素yi,j,k:
yi,j,k=f(xi,j,k;w1,w2,b1,b2)=max{(w1*xi,j,k+b1),(w2*xi,j,k+b2)} (34)
归一化模块1210被配置为接收以下之一作为输入数据:该硬件经历的原始输入数据(经由按元素操作模块1206)(例如当卷积层在当前硬件经历中不被处理并且按元素层和激活层在当前硬件经历中都不被处理时);累积输出(经由按元素操作模块1206)(例如当卷积层在当前硬件经历中不被处理并且按元素层和激活层在当前硬件经历中都不被处理时);以及按元素操作模块和/或激活模块的输出数据。归一化模块1210随后对接收到的输入数据执行归一化函数以产生归一化数据。在一些情况下,归一化模块1210可被配置为执行局部响应归一化(Local Response Normalisation,LRN)函数和/或局部对比度归一化(Local Contrast Normalisation,LCN)函数。然而,本领域技术人员将明显可见,这些只是示例,而归一化模块1210可被配置为实现任何一个或多个适当的归一化函数。不同的归一化归一化层可被配置为应用不同的归一化函数。
池化模块1212可从归一化模块1210接收归一化数据或者经由归一化模块1210接收到归一化模块1210的输入数据。在一些情况下,数据可经由XBar 1218在归一化模块1210和池化模块1212之间传送。术语“XBar”在本文中用于指包含以动态方式将多个模块连接在一起的路由逻辑的简单硬件模块。在此示例中,XBar可取决于在当前硬件经历中将要处理哪些层来动态地连接归一化模块1210、池化模块1212和/或输出交织模块1214。因此,XBar可在每次经历中接收指示出哪些模块1210、1212、1214要被连接的信息。
池化模块1212被配置为对接收到的数据执行池化函数,例如但不限于最大值或均值函数,以产生池化数据。池化层的目的是减小表示的空间大小以减少网络中的参数的数目和计算,并且因此也控制过度拟合。在一些示例中,池化操作是在按池化层定义的滑动窗口上执行的。
输出交织模块1214可从归一化模块1210接收归一化数据、接收到归一化函数的输入数据(经由归一化模块1210)或者从池化模块1212接收池化数据。在一些情况下,数据可经由XBar 1218在归一化模块1210、池化模块1212和输出交织模块1214之间传送。输出交织模块1214被配置为执行重排列操作来产生按照预定顺序的数据。这可包括对接收到的数据进行排序和/或转置。由最后一层生成的数据被提供到输出模块1215,在这里它被转换成对于当前硬件经历的期望输出格式。
归一化模块1210、池化模块1212和输出交织模块1214可各自能够访问共享的缓冲器1220,该缓冲器1220能够被这些模块1210、1212和1214用来向其写入数据和从其取回数据。例如,共享缓冲器1220可被这些模块1210、1212、1214用来重排列接收到的数据或者生成的数据的顺序。例如,这些模块1210、1212、1214中的一个或多个可被配置为将数据写入到共享缓冲器1220并且按不同的顺序读出相同数据。在一些情况下,虽然归一化模块1210、池化模块1212和输出交织模块1214的每一者能够访问共享缓冲器1220,但归一化模块1210、池化模块1212和输出交织模块1214的每一者可被分配共享缓冲器1220的一部分,这部分只有其能够访问。在这些情况下,归一化模块1210、池化模块1212和输出交织模块1214的每一者可只能够从共享缓冲器1220读出其写入到共享缓冲器1220中的数据。
DNN加速器1200的在任何硬件经历期间被使用或者活跃的模块是基于在该硬件经历期间处理的层的。具体地,只有与在当前硬件经历期间处理的层有关的模块或组件被使用或者是活跃的。如上所述,在特定硬件经历期间被处理的层是基于DNN中的层的顺序并且可选地基于一个或多个其他因素(例如数据的大小)来确定的(通常是由例如软件工具预先确定的)。例如,在一些情况下DNN加速器可被配置为对于每个硬件经历执行单层的处理,除非在层之间无需向存储器写入数据就可处理多个层。例如,如果第一卷积层后紧跟着第二卷积层,则每个卷积层将必须在单独的硬件经历中被执行,因为来自第一硬件卷积的输出数据需要被写出到存储器,然后其才可被用作到第二卷积的输入。在这些硬件经历的每一者中,可以只有与卷积层相关的模块、组件或引擎,例如卷积引擎1202和累积缓冲器1204,被使用或者活跃。
虽然图12的DNN加速器1200例示了模块、引擎等等被排列的特定顺序并从而例示了数据的处理如何流经DNN加速器,但将会清楚这只是示例,而在其他示例中,模块、引擎可按不同的方式来排列。此外,其他硬件逻辑(例如其他DNN加速器)可实现额外或替换类型的DNN层,从而可包括不同的模块、引擎等等。
图13图示了示范性通用基于计算的设备1300的各种组件,其可实现为任何形式的计算和/或电子设备,并且在其中可实现上文描述的图5和图10的方法500、1000的实施例。
基于计算的设备1300包括一个或多个处理器1302,处理器1302可以是微处理器、控制器或者任何其他适当类型的处理器,用于处理计算机可执行指令来控制设备的操作以便评估由硬件设计定义的集成电路在完成任务时的性能。在一些示例中,例如在使用片上系统体系结构的情况下,处理器1302可包括一个或多个固定功能块(也称为加速器),其用硬件(而不是软件或固件)实现确定用于表示输入到或输出自DNN的层的值的集合的定点数格式的方法的一部分。在基于计算的设备处可提供包括操作系统1304的平台软件或者任何其他适当的平台软件来使得能够在设备上执行应用软件,例如用于实现图5和图10的方法500、1000中的一个或多个的计算机可执行代码1305。
可利用基于计算的设备1300可访问的任何计算机可读介质来提供计算机可执行指令。计算机可读介质可例如包括诸如存储器1306之类的计算机存储介质和通信介质。诸如存储器1306之类的计算机存储介质(即非暂态机器可读介质)包括以任何方法或技术实现的易失性和非易失性的、可移除和不可移除的介质,用于存储信息,例如计算机可读指令、数据结构、程序模块或其他数据。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或者其他存储器技术、CD-ROM、数字多功能盘(digital versatile disk,DVD)、或者其他光存储装置、盒式磁带、磁带、磁盘存储装置、或者其他磁存储设备、或者可用于存储信息供计算设备访问的任何其他非传输介质。与之不同,通信介质可在诸如载波之类的经调制的数据信号或者其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。就本文定义的而言,计算机存储介质不包括通信介质。虽然计算机存储介质(即非暂态机器可读介质,例如存储器1306)被示为在基于计算的设备1300内,但将会明白存储装置可分布或位于远程并且经由网络或其他通信链路(例如利用通信接口1308)来访问。
基于计算的设备1300还包括被布置为输出显示信息到显示设备1312的输入/输出控制器1310,显示设备1312可与基于计算的设备1300分离或者与基于计算的设备1300是一体的。显示信息可提供图形用户界面。输入/输出控制器1310还被布置为从诸如用户输入设备1314(例如鼠标或键盘)之类的一个或多个设备接收并处理输入。在一实施例中,显示设备1312如果是触摸敏感显示设备则也可充当用户输入设备1314。输入/输出控制器1310也可将数据输出到除了显示设备以外的设备,例如本地连接的打印设备(图13中未示出)。
图14示出了计算机系统,其中可实现可配置来实现本文描述的DNN的硬件逻辑(例如DNN加速器)。计算机系统包括CPU 1402、GPU 1404、存储器1406和其他设备1414,例如显示器1416、扬声器1418和相机1420。可配置来实现DNN 1410的硬件逻辑(例如图12的DNN加速器1200)可实现在GPU 1404上,如图14中所示。计算机系统的组件可经由通信总线1422与彼此通信。在其他示例中,可配置来实现DNN 1410的硬件逻辑可独立于CPU或GPU实现并且可具有到通信总线1422的单独连接。在一些示例中,可以没有GPU并且CPU可向可配置来实现DNN 1410的硬件逻辑提供控制信息。
图12的DNN加速器1200被示为包括若干个功能块。这只是示意性的,而并不想要定义这种实体的不同逻辑元素之间的严格划分。每个功能块可按任何适当的方式来提供。要理解本文描述为由DNN加速器或处理模块形成的中间值在任何一点不需要由DNN加速器或处理模块物理生成,而可以只表示方便地描述由DNN加速器或处理模块在其输入和输出之间执行的处理的逻辑值。
本文描述的可配置来实现DNN的硬件逻辑(例如图12的DNN加速器1200)可在集成电路上用硬件实现。一般而言,上文描述的任何功能、方法、技术或组件可以用软件、固件、硬件(例如固定逻辑电路)或者其任何组合来实现。术语“模块”、“功能”、“组件”、“元素”、“单元”、“块”和“逻辑”在本文中可用于概括表示软件、固件、硬件或者其任何组合。在软件实现方式的情况下,模块、功能、组件、元素、单元、块或逻辑表示当在处理器上被执行时执行特定任务的程序代码。本文描述的算法和方法可通过一个或多个处理器执行使得该(一个或多个)处理器执行这些算法/方法的代码来执行。计算机可读存储介质的示例包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器和可使用磁、光和其他技术来存储指令或其他数据并且可被机器访问的其他存储器设备。
本文使用的术语计算机程序代码和计算机可读指令指的是任何种类的用于处理器的可执行代码,包括以机器语言、解释型语言或者脚本语言表述的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表)以及用诸如C、Java或OpenCL之类的编程语言代码表述的代码。可执行代码可例如是任何种类的软件、固件、脚本、模块或库,其当在虚拟机或其他软件环境处被适当地执行、处理、解释、编译、执行时使得支持该可执行代码的计算机系统的处理器执行由该代码指定的任务。
处理器、计算机或者计算机系统可以是任何种类的设备、机器或专用电路或者其集合或部分,具有处理能力以使得其可执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA),等等。计算机或计算机系统可包括一个或多个处理器。
还希望涵盖定义如本文所述的硬件的配置的软件,例如HDL(硬件描述语言)软件,其用于设计集成电路,或者用于配置可编程芯片,来执行期望的功能。也就是说,可提供一种计算机可读存储介质,其上以集成电路定义数据集的形式编码有计算机可读程序代码,该集成电路定义数据集当在集成电路制造系统中被处理(即运行)时配置该系统制造本文描述的可配置来实现DNN的硬件逻辑(例如DNN加速器)。集成电路定义数据集可例如是集成电路描述。
因此,可提供一种在集成电路制造系统处制造如本文所述的可配置来实现DNN的硬件逻辑(例如图12的DNN加速器1200)的方法。此外,可提供一种集成电路定义数据集,其当在集成电路制造系统中被处理时使得制造可配置来实现DNN的硬件逻辑(例如图12的DNN加速器1200)的方法被执行。
集成电路定义数据集可采取计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为在任何级别定义适合于在集成电路中制造的硬件的硬件描述语言,包括作为寄存器传送级(register transfer level,RTL)代码,作为诸如Verilog或VHDL之类的高级别电路表示,以及作为诸如OASIS(RTM)和GDSII之类的低级别电路表示。从逻辑上定义适合于在集成电路中制造的硬件的高级别表示(例如RTL)可在计算机系统处被处理,该计算机系统被配置用于在软件环境的情境中生成集成电路的制造定义,该软件环境包括电路元素的定义和用于组合这些元素的规则,以便生成由该表示这样定义的集成电路的制造定义。正如在计算机系统处执行以便定义机器的软件通常的情况那样,为了让被配置用于生成集成电路的制造定义的计算机系统执行定义集成电路的代码以便生成该集成电路的制造定义,可要求一个或多个中间用户步骤(例如提供命令、变量等等)。
现在将对于图15描述在集成电路制造系统处处理集成电路定义数据集以便配置该系统制造可配置来实现DNN的硬件逻辑(例如DNN加速器)的示例。
图15示出了被配置为制造如本文的任何示例中所描述的可配置来实现DNN的硬件逻辑(例如DNN加速器)的集成电路(IC)制造系统1502的示例。具体地,IC制造系统1502包括布局处理系统1504和集成电路生成系统1506。IC制造系统1502被配置为接收IC定义数据集(例如定义如本文的任何示例中所描述的可配置来实现DNN的硬件逻辑(例如DNN加速器)),处理IC定义数据集,并且根据IC定义数据集生成IC(例如其体现了如本文的任何示例中所描述的可配置来实现DNN的硬件逻辑(例如DNN加速器))。对IC定义数据集的处理将IC制造系统1502配置为制造体现如本文的任何示例中所描述的可配置来实现DNN的硬件逻辑(例如DNN加速器)的集成电路。
布局处理系统1504被配置为接收并处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布局的方法是本领域中已知的,并且例如可涉及合成RTL代码来确定要生成的电路的门级表示,例如就逻辑组件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)而言。通过确定逻辑组件的位置信息可从电路的门级表示确定电路布局。这可自动完成或者在有用户参与的情况下完成以便优化电路布局。当布局处理系统1504已确定了电路布局时,其可将电路布局定义输出到IC生成系统1506。电路布局定义可例如是电路布局描述。
正如本领域中已知的,IC生成系统1506根据电路布局定义生成IC。例如,IC生成系统1506可实现半导体器件制造过程来生成IC,这可涉及光刻和化学处理步骤的多步骤序列,在此期间在由半导体材料构成的晶片上逐渐创建电子电路。电路布局定义可采取掩模的形式,该掩模可被用在光刻过程中用于根据电路定义生成IC。或者,提供到IC生成系统1506的电路布局定义可采取计算机可读代码的形式,IC生成系统1506可使用该计算机可读代码来形成适当的掩模用于生成IC。
IC制造系统1502执行的不同过程可全都在一个位置中实现,例如由一个当事人实现。或者,IC制造系统1502可以是分布式系统,从而使得一些过程可在不同的位置执行,并且可由不同的当事人执行。例如,以下阶段中的一些可在不同的位置中执行和/或由不同的当事人执行:(i)合成表示IC定义数据集的RTL代码以形成要生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)根据电路布局形成掩模,以及(iv)利用掩模制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可在没有IC定义数据集被处理来确定电路布局的情况下将系统配置为制造可配置来实现DNN的硬件逻辑(例如DNN加速器)。例如,集成电路定义数据集可定义诸如FPGA之类的可重配置处理器的配置,并且对该数据集的处理可将IC制造系统配置为生成具有该定义的配置的可重配置处理器(例如通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造定义数据集当在集成电路制造系统中被处理时可使得集成电路制造系统生成如本文所述的器件。例如,集成电路制造定义数据集以上文对于图15描述的方式对集成电路制造系统的配置可使得如本文所述的器件被制造。
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上或者与数据集处定义的硬件相结合运行的软件。在图15中所示的示例中,IC生成系统还可被集成电路定义数据集配置来在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上或者以其他方式提供带有集成电路的程序代码来用于该集成电路。
在设备、装置、模块和/或系统中(以及在本文实现的方法中)对本申请中记载的构思的实现当与已知实现方式相比较时可引起性能改善。性能改善可包括提高的计算性能、降低的时延、提高的吞吐量和/或降低的功率消耗中的一个或多个。在这种设备、装置、模块和系统的制造期间(例如在集成电路中),性能改善可与物理实现进行折衷,从而改善制造的方法。例如,性能改善可与布局面积进行折衷,从而匹配已知实现方式的性能,但使用更少的硅。这可例如通过以序列化方式重复使用功能块或者在设备、装置、模块和/或系统的元素之间共享功能块来完成。相反,本申请中记载的引起设备、装置、模块和系统的物理实现的改善(例如减小的硅面积)的构思可与改善的性能进行折衷。这可例如通过在预定的面积预算内制造模块的多个实例来完成。
申请人在此单独公开了本文描述的每个个体特征以及两个或更多个这种特征的任何组合,到如下的程度:这种特征或组合能够按照本领域技术人员的公知常识作为一个整体基于本说明书被实现,无论这种特征或特征的组合是否解决本文公开的任何问题。考虑到前述描述,本领域技术人员将会明显可见在本发明的范围内可做出各种修改。
Claims (20)
1.一种计算机实现的方法(500),用于为深度神经网络“DNN”识别一个或多个量化参数以用于用硬件实现所述DNN,所述方法包括在至少一个处理器中:
(a)确定所述DNN的模型响应于训练数据的输出,所述DNN的模型包括量化块,所述量化块被配置为在所述模型根据所述DNN的层处理输入到所述层的值的集合之前变换所述值的集合,对所述值的集合的变换模拟所述值的集合到由一个或多个量化参数定义的定点数格式的量化(502);
(b)确定所述DNN的成本度量,所述成本度量是误差度量和大小度量的组合,所述误差度量是所确定的输出中的误差的定量测度,并且所述大小度量与基于所述一个或多个量化参数的所述DNN的大小成比例(504);
(c)将所述成本度量的导数反向传播到所述一个或多个量化参数中的至少一者以生成所述成本度量针对所述一个或多个量化参数中的至少一者的梯度(506);并且
(d)基于针对所述一个或多个量化参数中的至少一者的梯度来调整所述一个或多个量化参数中的至少一者(508)。
2.如权利要求1所述的方法(500),其中,基于针对量化参数的梯度调整该量化参数包括:基于针对该量化参数的梯度来向该量化参数添加值以生成经修改的量化参数。
3.如权利要求2所述的方法(500),其中,基于针对量化参数的梯度调整该量化参数还包括:将经修改的量化参数量化到整数的集合中的最近整数,或者模拟经修改的量化参数到所述整数的集合中的最近整数的量化。
4.如权利要求3所述的方法(500),其中,将经修改的量化参数量化到所述整数的集合中的最近整数包括:将经修改的量化参数舍入到所述整数的集合中的最近整数。
5.如权利要求3所述的方法(500),其中,模拟经修改的量化参数到所述整数的集合中的最近整数的量化包括:向经修改的量化参数添加-a到a之间的随机数,其中,a是所述整数的集合中的低于经修改的量化参数的最接近整数和所述整数的集合中的高于经修改的量化参数的最接近整数之间的距离的一半。
6.如权利要求5所述的方法(500),其中,模拟经修改的量化参数到整数的集合中的最近整数的量化还包括:在向经修改的量化参数添加所述随机数之后将经修改的量化参数舍入到所述整数的集合中的最近整数。
7.如权利要求3所述的方法(500),其中,模拟经修改的量化参数到整数的集合中的最近整数的量化包括:
选择所述整数的集合中的小于或等于经修改的量化参数的最高整数来生成向下取整的经修改的量化参数;并且
向所述向下取整的经修改的量化参数添加0到c之间的随机值,其中,c是所述整数的集合中的低于经修改的量化参数的最接近整数和所述整数的集合中的高于经修改的量化参数的最接近整数之间的距离。
8.如任何在前权利要求所述的方法(500),还包括:以至少一个经调整的量化参数和/或直到所述成本度量收敛为止重复(a)、(b)、(c)和(d)。
9.如权利要求8所述的方法(500),当从属于权利要求2时,其中,在(d)的后续迭代中调整量化参数包括:基于针对该量化参数的梯度向先前迭代的经修改的量化参数添加值。
10.如权利要求9所述的方法(500),其中,经修改的量化参数为浮点数格式。
11.如权利要求1至7的任何一项所述的方法(500),其中,每个定点数格式是由包括比特宽度和指数在内的多个量化参数定义的。
12.如权利要求11所述的方法(500),其中,所述量化块被配置为通过以下步骤来变换输入到所述层的值的集合中的值:
将所述值阈值处理到用于所述量化块的定点数格式的可表示值的范围以生成经阈值处理的值,并且将所述经阈值处理的值舍入到最近的2的exp次幂,其中,exp是用于所述量化块的定点数格式的指数;或者
将所述值舍入到最近的2的exp次幂以生成经舍入的值,并且将所述经舍入的值阈值处理到用于所述量化块的定点数格式的可表示值的范围。
13.如权利要求12所述的方法(500),其中,所述量化块还被配置为:通过向所述值、所述经阈值处理的值和所述经舍入的值之一添加-a到a之间的随机数来变换输入到所述层的值的集合中的所述值,其中,a是用于所述量化块的定点数格式的可表示数字之间的距离的一半。
14.如权利要求1至7的任何一项所述的方法(500),其中,所述量化块被配置为通过以下步骤来变换输入到所述层的值的集合中的值:
(i)将所述值阈值处理到用于所述量化块的定点数格式的可表示值的范围以生成经阈值处理的值;并且向所述经阈值处理的值添加-a到a之间的随机数,其中,a是用于所述量化块的定点数格式的可表示数字之间的距离的一半;或者
(ii)向所述值添加-a到a之间的随机数以生成随机化值;并且将所述随机化值阈值处理到用于所述量化块的定点数格式的可表示值的范围。
15.如权利要求1至7的任何一项所述的方法(500),其中,所述量化块被配置为通过以下步骤来变换输入到所述层的值的集合中的值:
将所述值阈值处理到用于所述量化块的定点数格式的可表示值的范围以生成经阈值处理的值;
确定所述经阈值处理的值的向下取整以生成向下取整的值;并且
向所述向下取整的值添加0到c之间的随机值,其中,c是用于所述量化块的定点数格式的可表示数字之间的距离。
16.如权利要求1至7的任何一项所述的方法(500),其中,所述DNN包括至少一层,在该层中,输入数据根据多个权重被处理,并且所述方法还包括:
将所述成本度量反向传播到所述多个权重中的一个或多个权重以生成所述成本度量针对所述一个或多个权重的每一者的梯度(1002);并且
基于针对权重的梯度来调整所述多个权重中的一者或多者(1004)。
17.如权利要求1至7的任何一项所述的方法(500),还包括:输出至少一个经调整的量化参数来用于配置硬件逻辑以实现所述DNN(512)。
18.如权利要求1至7的任何一项所述的方法(500),还包括:利用至少一个经调整的量化参数来配置硬件逻辑以实现所述DNN(514)。
19.一种计算机可读存储介质,其上存储有计算机可读指令,所述计算机可读指令当在计算机系统处被执行时使得所述计算机系统执行如权利要求1至7的任何一项所述的方法(500)。
20.一种基于计算的设备(1300),用于为深度神经网络“DNN”识别一个或多个量化参数以用于用硬件实现所述DNN,所述基于计算的设备包括:
至少一个处理器(1302);以及
耦合到所述至少一个处理器(1302)的存储器(1306),所述存储器包括:
计算机可读代码(1305),所述计算机可读代码(1305)当被所述至少一个处理器(1302)执行时使得所述至少一个处理器(1302):
(a)确定所述DNN的模型响应于训练数据的输出,所述DNN的模型包括量化块,所述量化块被配置为在所述模型根据所述DNN的层处理输入到该层的值的集合之前变换所述值的集合,对所述值的集合的变换模拟所述值的集合到由一个或多个量化参数定义的定点数格式的量化;
(b)确定所述DNN的成本度量,所述成本度量是误差度量和大小度量的组合,所述误差度量是所确定的输出中的误差的定量测度,并且所述大小度量与基于所述一个或多个量化参数的所述DNN的大小成比例;
(c)将所述成本度量的导数反向传播到所述一个或多个量化参数中的至少一者以生成所述成本度量针对所述一个或多个量化参数中的至少一者的梯度;并且
(d)基于针对所述一个或多个量化参数中的至少一者的梯度调整所述一个或多个量化参数中的至少一者。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410246183.9A CN118095366A (zh) | 2018-12-21 | 2019-12-20 | 利用反向传播为深度神经网络选择量化参数的方法和系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1821150.8 | 2018-12-21 | ||
GB1821150.8A GB2580171B (en) | 2018-12-21 | 2018-12-21 | Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410246183.9A Division CN118095366A (zh) | 2018-12-21 | 2019-12-20 | 利用反向传播为深度神经网络选择量化参数的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111353579A true CN111353579A (zh) | 2020-06-30 |
CN111353579B CN111353579B (zh) | 2024-03-29 |
Family
ID=65364434
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410246183.9A Pending CN118095366A (zh) | 2018-12-21 | 2019-12-20 | 利用反向传播为深度神经网络选择量化参数的方法和系统 |
CN201911328367.5A Active CN111353579B (zh) | 2018-12-21 | 2019-12-20 | 利用反向传播为深度神经网络选择量化参数的方法和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410246183.9A Pending CN118095366A (zh) | 2018-12-21 | 2019-12-20 | 利用反向传播为深度神经网络选择量化参数的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11610127B2 (zh) |
EP (1) | EP3671570A1 (zh) |
CN (2) | CN118095366A (zh) |
GB (1) | GB2580171B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111598237A (zh) * | 2020-05-21 | 2020-08-28 | 上海商汤智能科技有限公司 | 量化训练、图像处理方法及装置、存储介质 |
CN113238987A (zh) * | 2021-06-08 | 2021-08-10 | 中科寒武纪科技股份有限公司 | 量化数据的统计量化器、存储装置、处理装置及板卡 |
CN114841325A (zh) * | 2022-05-20 | 2022-08-02 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质及电子设备 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2568083B (en) | 2017-11-03 | 2021-06-02 | Imagination Tech Ltd | Histogram-based per-layer data format selection for hardware implementation of deep neutral network |
GB2568081B (en) | 2017-11-03 | 2022-01-19 | Imagination Tech Ltd | End-to-end data format selection for hardware implementation of deep neural network |
US12045725B1 (en) * | 2018-12-05 | 2024-07-23 | Perceive Corporation | Batch normalization for replicated layers of neural network |
US11847567B1 (en) | 2018-12-05 | 2023-12-19 | Perceive Corporation | Loss-aware replication of neural network layers |
CN110134567B (zh) * | 2019-04-30 | 2023-03-14 | 西北工业大学 | 基于卷积神经网络的微处理器非均匀采样热分布重构方法 |
CN110096647B (zh) * | 2019-05-10 | 2023-04-07 | 腾讯科技(深圳)有限公司 | 优化量化模型的方法、装置、电子设备及计算机存储介质 |
CN112085192B (zh) * | 2019-06-12 | 2024-03-29 | 上海寒武纪信息科技有限公司 | 一种神经网络的量化参数确定方法及相关产品 |
CN112085150B (zh) * | 2019-06-12 | 2024-07-19 | 安徽寒武纪信息科技有限公司 | 循环神经网络的量化参数调整方法、装置及相关产品 |
WO2021036908A1 (zh) * | 2019-08-23 | 2021-03-04 | 安徽寒武纪信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
WO2021038793A1 (ja) * | 2019-08-29 | 2021-03-04 | 楽天株式会社 | 学習システム、学習方法、及びプログラム |
US11995555B1 (en) | 2019-12-17 | 2024-05-28 | Perceive Corporation | Training a neural network with quantized weights |
US11734569B2 (en) * | 2020-02-14 | 2023-08-22 | Wipro Limited | Method and system for improving performance of an artificial neural network (ANN) model |
US11823054B2 (en) * | 2020-02-20 | 2023-11-21 | International Business Machines Corporation | Learned step size quantization |
CN113762496B (zh) * | 2020-06-04 | 2024-05-03 | 合肥君正科技有限公司 | 一种降低低比特卷积神经网络推理运算复杂度的方法 |
US12093816B1 (en) | 2020-07-07 | 2024-09-17 | Perceive Corporation | Initialization of values for training a neural network with quantized weights |
US12061981B1 (en) | 2020-08-13 | 2024-08-13 | Perceive Corporation | Decomposition of weight tensors in network with value quantization |
CN112132024B (zh) * | 2020-09-22 | 2024-02-27 | 中国农业大学 | 水下目标识别网络优化方法及装置 |
KR102600978B1 (ko) * | 2021-01-08 | 2023-11-10 | 한국과학기술원 | 저비트 정밀도 심층신경망 학습 장치 및 그 방법 |
CN112749803B (zh) * | 2021-03-05 | 2023-05-30 | 成都启英泰伦科技有限公司 | 一种神经网络的激活函数计算量化方法 |
GB2606601A (en) * | 2021-03-08 | 2022-11-16 | Samsung Electronics Co Ltd | Methods for training and analysing input data using a machine learning model |
CN114492779B (zh) * | 2022-02-16 | 2024-09-27 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、可读介质和电子设备 |
GB2620173B (en) * | 2022-06-30 | 2024-08-21 | Imagination Tech Ltd | Processing data using a neural network "NN" implemented in hardware |
GB2620172B (en) * | 2022-06-30 | 2024-05-29 | Imagination Tech Ltd | Identifying one or more quantisation parameters for quantising values to be processed by a neural network |
CN116720563B (zh) * | 2022-09-19 | 2024-03-29 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106062786A (zh) * | 2014-09-12 | 2016-10-26 | 微软技术许可有限责任公司 | 用于训练神经网络的计算系统 |
CN106503106A (zh) * | 2016-10-17 | 2017-03-15 | 北京工业大学 | 一种基于深度学习的图像哈希索引构建方法 |
CN107636697A (zh) * | 2015-05-08 | 2018-01-26 | 高通股份有限公司 | 基于浮点神经网络量化的定点神经网络 |
US20180107925A1 (en) * | 2016-10-19 | 2018-04-19 | Samsung Electronics Co., Ltd. | Method and apparatus for neural network quantization |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106796668B (zh) * | 2016-03-16 | 2019-06-14 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和系统 |
US11106973B2 (en) * | 2016-03-16 | 2021-08-31 | Hong Kong Applied Science and Technology Research Institute Company Limited | Method and system for bit-depth reduction in artificial neural networks |
US10831444B2 (en) * | 2016-04-04 | 2020-11-10 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
US20180107926A1 (en) * | 2016-10-19 | 2018-04-19 | Samsung Electronics Co., Ltd. | Method and apparatus for neural network quantization |
WO2019086104A1 (en) * | 2017-10-30 | 2019-05-09 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Neural network representation |
GB2568084B (en) * | 2017-11-03 | 2022-01-12 | Imagination Tech Ltd | Error allocation format selection for hardware implementation of deep neural network |
US11270187B2 (en) * | 2017-11-07 | 2022-03-08 | Samsung Electronics Co., Ltd | Method and apparatus for learning low-precision neural network that combines weight quantization and activation quantization |
US11645493B2 (en) * | 2018-05-04 | 2023-05-09 | Microsoft Technology Licensing, Llc | Flow for quantized neural networks |
US20190340499A1 (en) * | 2018-05-04 | 2019-11-07 | Microsoft Technology Licensing, Llc | Quantization for dnn accelerators |
US11423312B2 (en) * | 2018-05-14 | 2022-08-23 | Samsung Electronics Co., Ltd | Method and apparatus for universal pruning and compression of deep convolutional neural networks under joint sparsity constraints |
US10747502B2 (en) * | 2018-09-19 | 2020-08-18 | Xilinx, Inc. | Multiply and accumulate circuit |
US20200097818A1 (en) * | 2018-09-26 | 2020-03-26 | Xinlin LI | Method and system for training binary quantized weight and activation function for deep neural networks |
US11620555B2 (en) * | 2018-10-26 | 2023-04-04 | Samsung Electronics Co., Ltd | Method and apparatus for stochastic inference between multiple random variables via common representation |
US11586883B2 (en) * | 2018-12-14 | 2023-02-21 | Microsoft Technology Licensing, Llc | Residual quantization for neural networks |
US11676003B2 (en) * | 2018-12-18 | 2023-06-13 | Microsoft Technology Licensing, Llc | Training neural network accelerators using mixed precision data formats |
CN112446460A (zh) * | 2019-08-28 | 2021-03-05 | 上海寒武纪信息科技有限公司 | 用于处理数据的方法、装置以及相关产品 |
US20220083855A1 (en) * | 2020-09-15 | 2022-03-17 | Samsung Electronics Co., Ltd. | Method and apparatus for data-free post-training network quantization and generating synthetic data based on a pre-trained machine learning model |
-
2018
- 2018-12-21 GB GB1821150.8A patent/GB2580171B/en active Active
-
2019
- 2019-12-20 CN CN202410246183.9A patent/CN118095366A/zh active Pending
- 2019-12-20 CN CN201911328367.5A patent/CN111353579B/zh active Active
- 2019-12-20 EP EP19219061.9A patent/EP3671570A1/en active Pending
- 2019-12-23 US US16/724,650 patent/US11610127B2/en active Active
-
2023
- 2023-03-09 US US18/119,762 patent/US11922321B2/en active Active
-
2024
- 2024-03-04 US US18/594,450 patent/US20240202706A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106062786A (zh) * | 2014-09-12 | 2016-10-26 | 微软技术许可有限责任公司 | 用于训练神经网络的计算系统 |
CN107636697A (zh) * | 2015-05-08 | 2018-01-26 | 高通股份有限公司 | 基于浮点神经网络量化的定点神经网络 |
CN106503106A (zh) * | 2016-10-17 | 2017-03-15 | 北京工业大学 | 一种基于深度学习的图像哈希索引构建方法 |
US20180107925A1 (en) * | 2016-10-19 | 2018-04-19 | Samsung Electronics Co., Ltd. | Method and apparatus for neural network quantization |
Non-Patent Citations (1)
Title |
---|
YOOJIN CHOI ET AL.: "Learning Low Precision Deep Neural Networks through Regularization", 《ARXIV》, pages 1 - 10 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111598237A (zh) * | 2020-05-21 | 2020-08-28 | 上海商汤智能科技有限公司 | 量化训练、图像处理方法及装置、存储介质 |
CN113238987A (zh) * | 2021-06-08 | 2021-08-10 | 中科寒武纪科技股份有限公司 | 量化数据的统计量化器、存储装置、处理装置及板卡 |
CN113238987B (zh) * | 2021-06-08 | 2022-11-22 | 中科寒武纪科技股份有限公司 | 量化数据的统计量化器、存储装置、处理装置及板卡 |
CN114841325A (zh) * | 2022-05-20 | 2022-08-02 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US11922321B2 (en) | 2024-03-05 |
GB2580171A (en) | 2020-07-15 |
US20230214659A1 (en) | 2023-07-06 |
GB2580171B (en) | 2021-02-17 |
EP3671570A1 (en) | 2020-06-24 |
CN118095366A (zh) | 2024-05-28 |
US20240202706A1 (en) | 2024-06-20 |
CN111353579B (zh) | 2024-03-29 |
GB201821150D0 (en) | 2019-02-06 |
US11610127B2 (en) | 2023-03-21 |
US20200202218A1 (en) | 2020-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111353579B (zh) | 利用反向传播为深度神经网络选择量化参数的方法和系统 | |
CN110009099B (zh) | 用于确定表示dnn的层的值的定点数格式的方法和系统 | |
CN112418391B (zh) | 用于对深度神经网络的权重进行转换的方法和系统 | |
CN110033079B (zh) | 深度神经网络的硬件实现的端到端数据格式选择 | |
EP3480689B1 (en) | Hierarchical mantissa bit length selection for hardware implementation of deep neural network | |
US11995533B1 (en) | Executing replicated neural network layers on inference circuit | |
US11847567B1 (en) | Loss-aware replication of neural network layers | |
US20240143985A1 (en) | Identifying one or more quantisation parameters for quantising values to be processed by a neural network | |
CN117332830A (zh) | 标识用于量化待由神经网络处理的值的一个或多个量化参数 | |
CN117332829A (zh) | 使用在硬件中实现的神经网络"nn"处理数据 | |
CN110007959B (zh) | 用于深度神经网络的硬件实现的层次化尾数位长度选择 | |
GB2620172A (en) | Identifying one or more quantisation parameters for quantising values to be processed by a neural network | |
GB2620173A (en) | Processing data using a neural network "NN" implemented in hardware | |
EP3985571A1 (en) | Methods and systems for selecting number formats for deep neural networks based on network sensitivity and quantisation error | |
US12136039B1 (en) | Optimizing global sparsity for neural network | |
US12045725B1 (en) | Batch normalization for replicated layers of neural network | |
GB2603582A (en) | End-to-end data format selection for hardware implementation of deep neural network | |
GB2603647A (en) | End-to-end data format selection for hardware implementation of deep neural network |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |