CN113947177A - 一种量化校准方法、计算装置和计算机可读存储介质 - Google Patents
一种量化校准方法、计算装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN113947177A CN113947177A CN202010682877.9A CN202010682877A CN113947177A CN 113947177 A CN113947177 A CN 113947177A CN 202010682877 A CN202010682877 A CN 202010682877A CN 113947177 A CN113947177 A CN 113947177A
- Authority
- CN
- China
- Prior art keywords
- quantization
- data
- quantized
- difference metric
- neural network
- 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
Links
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/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/2163—Partitioning the feature space
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/217—Validation; Performance evaluation; Active pattern learning techniques
-
- 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
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本披露公开了一种量化校准方法、计算装置和计算机可读存储介质。该计算装置可以包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案使用新的量化差异度量来优化量化参数,从而在通过量化实现各种优势的同时,保持一定的量化推理精度。
Description
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及一种量化校准方法、计算装置和计算机可读存储介质。
背景技术
随着人工智能技术的发展,神经网络运算的运算量越来越大,需要耗费的运算资源也越来越多。对神经网络运算数据进行量化是降低运算量、节省运算资源的好方法。
但是,量化会使得推理精度降低,因此需要进行量化校准,以解决在降低运算量、节省运算资源的同时,仍然能够实现一定的量化推理精度的技术问题。
发明内容
为了至少解决如上所提到的技术问题,本披露在多个方面中提出了使用新的量化差异度量来优化量化参数的方案,从而在通过量化来实现降低运算量、节省运算资源、节省存储资源、加快处理周期等优势的同时,保持一定的量化推理精度。
在第一方面中,本披露提供了一种由处理器执行的用于神经网络中的校准量化的方法,包括:接收校准数据集;利用截断阈值对所述校准数据集进行量化处理;确定所述量化处理的量化总差异度量;以及基于所述量化总差异度量,确定优化的截断阈值,所述优化的截断阈值用于由处理器对神经网络运算过程中的数据进行量化处理;其中所述校准数据集根据所述截断阈值被划分为量化部分数据和截断部分数据,并且所述量化总差异度量基于所述量化部分数据的量化差异度量和所述截断部分数据的量化差异度量而确定。
在第二方面中,本披露提供了一种用于神经网络中的校准量化的计算装置,包括:至少一个处理器;以及与所述至少一个处理器通信的至少一个存储器,其上存储有计算机可读指令,当所述计算机可读指令由所述至少一个处理器加载并执行时,使得所述至少一个处理器执行本披露第一方面任一实施例所述的方法。
在第三方面中,本披露提供了一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行本披露第一方面任一实施例所述的方法。
通过如上所提供的量化校准方法、计算装置和计算机可读存储介质,本披露的方案使用新的量化差异度量来评估量化的性能,从而优化量化参数,以在实现量化所带来的各种优势(诸如降低运算量、节省运算资源、节省存储资源、加快处理周期等)的同时,保持一定的量化推理精度。根据本披露的量化校准方案,可以将量化总差异度量分为:对输入数据的量化部分数据DQ的度量和对输入数据的截断部分数据DC的度量。通过将输入数据根据量化操作分成两类来评估量化差异,可以更准确地表征量化对数据有效信息的影响,从而有利于对量化参数的优化,以提供更高的量化推理精度。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出了可以应用本披露实施例的神经网络的示例性结构框图;
图2示出了本披露实施例可以应用的包含量化操作的神经网络的隐藏层前向传播过程示意图;
图3示出了本披露实施例可以应用的包含量化操作的神经网络的隐藏层反向传播过程示意图;
图4示出了本披露实施例可以应用的量化操作的示意图;
图5示例性示出了量化部分数据的量化误差和截断部分数据的截断误差的示意图;
图6示出了根据本披露实施例的量化校准方法的示例性流程图;
图7示出了实现本披露实施例的量化校准方法的示例性逻辑流程;
图8示出了可以实施本披露实施例的量化校准方案的计算装置的硬件配置框图;
图9示出了本披露实施例的计算装置应用于人工智能处理器芯片的应用示意图;
图10示出根据本披露实施例的一种组合处理装置的结构图;以及
图11是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能使用的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
首先给出本披露中可能用到的技术术语的解释。
浮点数:IEEE浮点标准用V=(-1)∧sign*mantissa*2∧E的形式表示一个数。其中,sign为符号位,0表示正数,1代表负数;E表示阶码,对浮点数进行加权,权值是2的E次幂(可能是负数次幂);mantissa表示尾数,mantissa是一个二进制小数,其范围是1~2-ε,或者是0-ε。浮点数表示在计算机中的表示分为三个字段,分别对这些字段进行编码:
(1)一个单独的符号位s直接编码符号s。
(2)k位的阶码字段编码阶码,exp=e(k-1)......e(1)e(0)。
(3)n位的小数字段mantissa,编码尾数。但编码结果依赖阶码阶段是否全为0。
定点数:由共享指数(exponent)、符号位(sign)、尾数(mantissa)三部分构成。其中,共享指数是说指数在需要量化的一个实数集合内共享;符号位标志了定点数的正负。尾数决定了定点数的有效数字位数,即精度。以8-bit定点数类型为例,其数值计算方法为:
value=(-1)sign×(mantissa)×2(exponent-127)
KL(Kullback–Leibler divergence)散度:又称为相对熵(relative entropy)、信息散度(information divergence)、信息增益(information gain)。KL散度是两个概率分布P和Q之间差别的非对称性的度量。KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的比特个数。典型情况下,P表示数据的真实分布,Q表示数据的理论分布、模型分布、或P的近似分布。
数据位宽:数据用多少个比特位来表示。
量化:将以往用32bit或者64bit表达的高精度数转换成占用较少内存空间的、一般为16bit或者8bit的定点数的过程,高精度数转换为定点数的过程就会在精度上引起一定的损失。
以下简要介绍本披露实施例可以应用的神经网络环境。
神经网络(neural network,NN)是一种模仿生物神经网络的结构和功能的数学模型,神经网络由大量的神经元连接进行计算。因此,神经网络是一种计算模型,由大量的节点(或称“神经元”)相互连接构成。每个节点代表一种特定的输出函数,称为激活函数(activation function)。每两个神经元之间的连接都代表一个通过该连接信号的加权值,称之为权值,这相当于神经网络的记忆。神经网络的输出则依神经元之间的连接方式以及权值和激活函数的不同而不同。在神经网络中,神经元是神经网络的基本单位。它获得一定数量的输入和一个偏置,当信号(值)到达时会乘以一个权值。连接是将一个神经元连接到另一层或同一层的另一个神经元,连接伴随着与之相关联的权值。另外,偏置是神经元的额外输入,它始终为1,并具有自己的连接权值。
在应用中,如果不对神经网络中的神经元应用一个非线性函数,神经网络只是一个线性函数而已,那么它并不比单个神经元强大。如果让一个神经网络的输出结果在0到1之间,例如,在猫狗鉴别的例子中,可以把接近于0的输出视为猫,将接近于1的输出视为狗。为了完成这个目标,在神经网络中引入激活函数,比如:sigmoid激活函数。关于这个激活函数,只需要知道它的返回值是一个介于0到1的数字。因此,激活函数用于将非线性引入神经网络,它会将神经网络运算结果缩小到较小的范围内。激活函数的选取影响最终网络的表达能力。激活函数的形式可以有很多,他们都是通过一些权值将一个非线性函数参数化,可以通过改变这些权值来改变这个非线性函数。
图1是示出可以应用本披露实施例的神经网络100的示例性结构框图。在图1所示的神经网络中,包括三层,分别为输入层、隐含层以及输出层,图1所示的隐含层为5层。
神经网络的最左边一层被称为输入层,输入层的神经元被称为输入神经元。输入层作为神经网络中的第一层,接受需要输入信号(值)并将它们传递到下一层。它一般不对输入信号(值)做操作,并且没有关联的权值和偏置。在图1所示的神经网络中,有4个输入信号x1,x2,x3,x4。
隐含层包含用于对输入数据应用不同变换的神经元(节点)。在图1所示的神经网络中,有5个隐含层。第一隐含层有4个神经元(节点),第2层有5个神经元,第3层有6个神经元,第4层有4个神经元,第5层有3个神经元。最后,隐含层将神经元的运算值传递给输出层。图1所示的神经网络将5个隐含层中每个神经元之间进行完全连接,即每个隐含层的每一个神经元都与下一层的每一个神经元有连接。需要说明的是,并不是每个神经网络的隐含层是完全连接的。
图1神经网络的最右边一层被称为输出层,输出层的神经元被称为输出神经元。输出层接收来自最后一个隐含层的输出。在图1所示的神经网络中,输出层有3个神经元,有3个输出信号y1,y2,y3。
在实际应用中,预先给大量的样本数据(包含输入和输出)对初始神经网络进行训练,训练完成后,获得训练后的神经网络。该神经网络对于将来的真实环境的输入能给出一个正确的输出。
在开始讨论神经网络的训练之前,需要定义损失函数。损失函数是一个衡量神经网络在执行某个特定任务的表现函数。在有些实施例中,损失函数可以如此得到:在训练某神经网络过程中,对每一个样本数据,都沿着神经网络传递得到输出值,然后将这个输出值与期望值做差再求平方,这样计算出来的损失函数就是预测值与真实值之间的距离,而训练神经网络目的就是将这个距离或损失函数的取值减小。在某些实施例中,损失函数可以表示为:
以猫狗鉴别的实际应用场景为例。假定一个数据集由猫和狗的图片组成,如果图片是狗,对应的标签是1,如果图片是猫,对应的标签是0。这个标签就是对应上述公式中的期望值y,在向神经网络传递每一张样本图片的时候,实际是想通过神经网络来获得识别结果,即图片中的动物是猫还是狗。为了计算损失函数,必须遍历样本数据集中的每一张样本图片,获得每一张样本图片对应的实际结果然后按照上面的定义计算损失函数。如果损失函数比较大,例如超过一个预定的阈值,则说明神经网络还没有训练好,此时就需要对权值进一步调整。
在开始训练神经网络的时候,需要对权值进行随机初始化。在大多数的情况下,初始化的神经网络并不能提供一个很好的训练结果。在训练的过程中,假设以一个很糟糕的神经网络开始,通过训练可以得到一个具有高准确率的网络。
神经网络的训练过程分为两个阶段,第一阶段是信号的正向处理操作(在本披露中称为前向传播过程),训练从输入层经过隐含层,最后到达输出层。第二阶段是反向传播梯度操作(在本披露中称为后向传播过程),训练从输出层到隐含层,最后到输入层,根据梯度依次调节神经网络中每层的权值和偏置。
在前向传播过程中,将输入值输入到神经网络的输入层,经过多个隐藏层的相关算子执行的相应运算,可以从神经网络的输出层得到所谓的预测值的输出。当输入值提供给神经网络的输入层时,其可以不进行任何操作或依应用场景做一些必要的预处理。在隐含层中,第二个隐含层从第一个隐含层获取预测中间结果值并进行计算操作和激活操作,然后将得到的预测中间结果值传递给下一个隐含层。在后面的层中执行相同的操作,最后在神经网络的输出层得到输出值。在经过前向传播过程的正向处理后,通常可以得到一个被称为预测值的输出值。为了计算误差,可以将预测值与实际输出值进行比较,获得对应的误差值。
在反向传播过程中,可以使用微分学的链式法则来对各层的权值进行更新,以期在下一次的前向传播过程中获得相对于前次较低的误差值。在链式法则中,首先计算对应神经网络的最后一层权值的误差值的导数。称这些导数为梯度,然后使用这些梯度来计算神经网络中的倒数第二层的梯度。重复此过程,直到得到神经网络中每个权值对应的梯度。最后,将神经网络中每个权值减去对应的梯度,从而对权值进行一次更新,以达到减少误差值的目的。与前向传播过程中利用各类算子(在本披露中称为前向算子)类似,在对应的反向传播过程中也存在与前向传播过程中的前向算子相对应的反向算子。例如,对于卷积层中的卷积算子,其包括前向传播过程中的前向卷积算子和反向传播过程中的反卷积算子。
对于神经网络来说,微调是载入训练过的神经网络。微调过程与训练过程相同,分为两个阶段,第一阶段是信号的正向处理操作(在本披露中称为前向传播过程),第二阶段是反向传播梯度(在本披露中称为后向传播过程),对训练过的神经网络的权值进行更新。训练与微调的不同之处在于,训练是随机对初始化的神经网络进行处理,从头开始训练神经网络,而微调不是。
在神经网络进行训练或微调的过程中,神经网络每经过一次信号的正向处理的前向传播过程以及对应一次误差的反向传播过程,神经网络中的权值利用梯度进行一次更新,此时称为一次迭代(iteration)。为了获得精度符合预期的神经网络,在训练过程中需要很庞大的样本数据集,而一次性将样本数据集输入进计算设备(例如计算机)几乎是不可能的。因此,为了解决这个问题,需要将样本数据集划分成多个批次,按批次传递给计算机,每个批次的数据集经过前向传播过程的正向处理后,对应进行一次反向传播过程中的更新神经网络的权值操作。当一个完整的样本数据集通过了神经网络一次正向处理并且对应返回了一次权值更新,这个过程称为一个周期(epoch)。实际中,在神经网络中传递一次完整的数据集是不够的,需要将完整的数据集在同一神经网络中传递多次,即需要多个周期,最终获得精度符合预期的神经网络。
在神经网络进行训练或微调的过程中,通常用户希望训练或微调的速度越快越好,并且准确率越高越好,但这样的期望通常受神经网络数据的数据类型的影响。在很多应用场景中,神经网络的数据通过高精度数据格式表示(例如浮点数)。以前向传播过程中的卷积操作和反向传播过程中的反向卷积操作为例,当在计算设备中央处理单元(“CPU”)和图形处理单元(“GPU”)上执行这两项操作时,为了确保数据精度,几乎所有的输入、权值和梯度都是浮点类型数据。
以浮点类型格式作为高精度数据格式为例,根据计算机体系结构可知,基于浮点数的运算表示法则、定点数的运算表示法则,对于同样长度的浮点运算和定点运算来说,浮点运算计算模式更为复杂,需要更多的逻辑器件来构成浮点运算器。这样从体积上来说,浮点运算器的体积比定点运算器的体积要大。进一步,浮点运算器需要消耗更多的资源去处理,使得定点运算和浮点运算二者之间的功耗差距通常是数量级的,由此造成显著的计算成本差异。然而,根据实验发现,定点运算比浮点运算执行速度快,而且精度损失并不大,因此在人工智能芯片中采用定点运算处理大量的神经网络运算(例如卷积和全连接运算)是可行的方案。例如,可以将涉及前向卷积、前向全连接、反向卷积和反向全连接算子的输入、权值和梯度的浮点型数据均进行量化后进行定点数运算,并且在算子运算完成后将低精度的数据转换成高精度数据。
图2示出了本披露实施例可以应用的包含量化操作的神经网络的隐藏层前向传播过程示意图。
如图2所示,神经网络的隐藏层(例如,卷积层、全连接层)以定点计算设备250表示。涉及该定点计算设备250的激活值210和权值220通常为浮点型数据。对激活值210和权值220分别进行量化,以得到量化后定点型数据的激活值230和权值240,提供给定点计算设备250进行定点计算,得到定点型数据的计算结果260。
取决于神经网络的结构,该定点计算设备250的计算结果260可以提供给神经网络的下一隐藏层作为其激活值,或者提供给输出层作为输出结果。因此,可以根据需要对该计算结果进行反量化,以得到浮点型数据的计算结果。
图3示出了本披露实施例可以应用的包含量化操作的神经网络的隐藏层反向传播过程示意图。如前面所描述的,前向传播过程前向传递信息直至输出产生误差,反向传播过程反向传播误差信息以更新权值。
如图3所示,对反向传播过程的计算中用到的浮点型数据的梯度310进行量化,以得到定点型数据的梯度320。定点型梯度320提供给神经网络的前一隐藏层的定点计算设备330。同样地,定点计算设备330的计算还需要对应的权值和激活值。图3中示出了浮点型数据的权值340和激活值360,它们分别被量化成定点型数据的权值350和激活值370。本领域技术人员可以理解,虽然图3中示出了对权值340和激活值360的量化,但是当定点型的权值和激活值在前向传播过程中已经得到时,此处无需重新量化。
定点计算设备330基于后一层提供的定点型梯度320、当前对应的定点型权值350和激活值370,执行定点计算以计算对应的权值和激活值的梯度。接着,定点计算设备330计算出的定点型权值梯度380被反量化为浮点型权值梯度390。最后,利用浮点型权值梯度390来更新该定点计算设备330对应的浮点型权值340,例如可以从权值340中减去对应的梯度390,从而对权值进行一次更新,以达到减少误差值的目的。定点计算设备330可以继续向前一层传播当前层的梯度,以调节前一层的参数。
在上述前向和反向传播过程中都涉及了量化操作。
图4示出了本披露实施例可以应用的量化操作的示意图。在图4所示的示例中,将例如32位的浮点型数据量化为n位的定点型数据,n是定点数比特位宽。图4上面的横线上的点表示待量化的浮点型数据,下面的横线上的点表示量化后的定点型数据。
图4所示的待量化数据的数域相对于“0”是不对称分布的。在此量化操作中,存在一个阈值T,将±T映射为±(2n-1-1)。从图4中可以看出,超出阈值±T之外的浮点型数据直接映射为阈值±T所映射到的定点数±(2n-1-1)。例如,图4上面的横线上小于-T的三个点直接映射为-(2n-1-1)。±T阈值范围内的浮点型数据例如可以按比例映射到±(2n-1-1)的范围内。这种映射关系是饱和不对称的。
虽然量化处理能够降低运算量、节省运算资源等,但是量化也会使得推理精度降低。因此,如何将定点运算器代替浮点运算器,达到定点运算的快速度,提升人工智能处理器芯片的峰值算力的同时满足运算所需的浮点运算的精度是本披露实施例要解决的技术问题。
基于上述技术问题的描述,神经网络的一个特性是对输入噪声容忍度很高。如果考虑识别照片中物体,神经网络能忽略主要噪声,把注意力放在重要的相似性。该功能意味着神经网络可以把低精度计算作为一种噪声源,在容纳较少信息的数值格式下仍然能产生准确的预测结果。在下文的描述中,从噪声的角度来理解量化造成的误差,也即量化误差可以理解成与原始信号具有相关性的噪声,在此意义下,量化误差有时候也称为量化噪声,二者可互换使用。但是,本领域技术人员应当理解,本文的量化噪声不同于与信号无关的白噪声,例如高斯噪声。对于图4所示的量化操作而言,上述技术问题也就转换为需要寻找最优的阈值T,使得量化后精度的损失最小。
在本披露实施例的基于噪声的量化校准方案中,提出了使用新的量化差异度量来评估量化的性能,从而优化量化参数,以在实现量化所带来的各种优势(诸如降低运算量、节省运算资源、节省存储资源、加快处理周期等)的同时,仍然能够保持所需的量化推理精度。
根据本披露的基于噪声的量化校准方案,可以将量化总差异度量分为:对输入数据的量化部分数据的度量和对输入数据的截断部分数据的度量。通过将输入数据根据量化操作分成两类来评估量化差异,可以更准确地表征量化对数据有效信息的影响,从而有利于对量化参数的优化,以提供更高的量化推理精度。
为了便于理解本披露的实施例,以下首先解释本披露实施例中使用的量化总差异度量。
在一些实施例中,不妨将输入数据(例如,校准数据)表示为:
D=[x1,x2,…,xN],D∈RN (2)
其中,N是数据D中的数据个数,R表示实数域。
当以图4所示的量化操作对输入数据进行量化时,会将超过阈值±T的数据直接映射为阈值±T所映射到的定点数±(2n-1-1)。因此,在本披露实施例中,根据截断阈值T,将输入数据D划分成量化部分数据DQ和截断部分数据DC。相应地,量化总差异度量也分为:对输入数据D的量化部分数据DQ的度量和对输入数据D的截断部分数据DC的度量。
图5示例性示出了量化部分数据的量化误差和截断部分数据的截断误差的示意图。图5的横坐标为输入数据的数值x,纵坐标为对应数值的频数y。从图5可以看出,量化部分数据DQ在阈值T范围内,每个数据都量化成接近的定点型数据,因此,量化误差较小。与之相比,截断部分数据DC在阈值T范围外,不管截断部分数据DC多大,都统一被量化成阈值T所对应的定点型数据,例如2n-1-1。因此,截断误差较大,分布较广。由此可见,量化部分数据和截断部分数据的量化误差具有不同表现。需要说明的是,在KL散度校准方法中,通常利用输入数据的直方图来评估量化误差。在本披露的实施例中,直接利用输入数据,不采用任何形式的直方图。
在本披露的实施例中,通过针对量化部分数据DQ和截断部分数据DC分别进行量化差异评估,可以更准确地表征量化对数据有效信息的影响,从而有利于对量化参数的优化,以提供更高的量化推理精度。
在一些实施例中,量化部分数据DQ和截断部分数据DC可以表示为:
DC=[x|Abs(x)≥T,x∈D] (4)
其中,Abs()表示取绝对值,n是量化后的定点数比特位宽。
在本披露的实施例中,针对量化部分数据DQ和截断部分数据DC分别构造相应的量化差异度量,例如量化部分数据DQ的量化差异度量DistQ和截断部分数据DC的量化差异度量DistC。继而,量化总差异度量Dist(D,T)可以表示成量化差异度量DistQ和DistC的函数。可以构造各种函数来表征量化总差异度量Dist(D,T)与量化差异度量DistQ和DistC之间的关系。
在一些实施例中,可以按如下公式来计算量化总差异度量Dist(D,T):
Dist(D,T)=DistQ+DistC (5)
在一些实施例中,当构造量化部分数据DQ和截断部分数据DC的量化差异度量时,可以从两方面考虑:量化噪声的幅度以及量化噪声与输入数据的相关性。一方面,量化噪声的幅度体现了量化误差绝对数值上的差异;另一方面,量化噪声与输入数据的相关性则考虑了量化部分数据与截断部分数据在量化误差上的不同表现与输入数据相对于最优截断阈值T的分布的关系。
具体地,量化部分数据DQ的量化差异度量DistQ可以表示成量化部分数据DQ的量化噪声的幅度以及量化噪声与输入数据的相关性系数的函数;和/或截断部分数据DC的量化差异度量DistC可以表示成截断部分数据DC的量化噪声的幅度以及量化噪声与输入数据的相关性系数的函数。可以构造各种函数来表征量化差异度量与量化噪声的幅度和量化噪声与输入数据的相关性系数之间的关系。
在一些实施例中,可以利用相关性系数对量化噪声的幅度进行加权,例如按如下公式来分别计算量化差异度量DistQ和量化差异度量DistC:
DistQ=(1+EQ)×AQ (6)
DistC=(1+EC)×AC (7)
上述公式(6)和(7)中的量化部分数据DQ的量化噪声幅度AQ和截断部分数据DC的量化噪声幅度AC可以分别按如下公式计算:
其中,Quantize(x,T)是将T作为最大值,对数据x进行量化的函数。本领域技术人员可以理解,本披露实施例可以应用于各种量化方法。本披露实施例的目的在于找到符合当前所使用的量化方法的最优量化参数,也即,最优截断阈值。取决于所使用的量化方法,Quantize(x,T)可以有不同的表现形式。在一个示例中,可以按如下公式对数据进行量化:
其中s是点位置参数,round为四舍五入的取整运算,ceil是向上取整运算,Ix为数据x量化后的n位二进制表示值,Fx为数据x量化前的浮点值。
上述公式(6)和(7)中的量化部分数据DQ的量化噪声与输入数据的相关性系数EQ和截断部分数据DC的量化噪声与输入数据的相关性系数EC可以分别按如下公式计算:
上面描述了本披露实施例中使用的量化总差异度量。从上面的描述可知,通过将输入数据根据量化操作分成两类(量化部分数据和截断部分数据)来评估量化总差异度量,可以更准确地表征量化对数据有效信息的影响,从而有利于对量化参数的优化,以提供更高的量化推理精度。进一步地,在一些实施例中,各部分数据的量化差异度量考虑了两个方面:量化噪声的幅度以及量化噪声与输入数据的相关性。由此,可以进一步准确地表征量化对数据有效信息的影响。上面描述的量化总差异度量Dist(D,T)可以用来校准神经网络中运算数据的量化噪声。
图6示出了根据本披露实施例的量化噪声校准方法600的示例性流程图。量化噪声校准方法600例如可以由处理器来执行。利用图6所示的技术方案确定校准/优化的量化参数(例如,截断阈值T),该校准/优化的量化参数用于由人工智能处理器对神经网络运算过程中的数据(例如,激活值、权重、梯度等)进行量化处理,从而确认量化后的定点型数据。量化后的定点型数据可以由人工智能处理器用于神经网络的训练、微调或推理。
如图6所示,在步骤S610中,处理器接收输入数据D。输入数据D例如是为了校准量化噪声而准备的校准数据集或样本数据集。输入数据D可以接收自本披露实施例所应用的神经网络环境中的协作处理电路。
如果输入数据比较多,可以分批次向处理器提供校准数据集。
例如,在一些示例中,校准数据集可以表示为:
D=[D1,D2,…,DB],Di∈RN×S,i∈[1…B] (13)
其中,B是数据批次个数;N是数据批次大小,也即每个数据批次中的数据样本数量;S是单个数据样本的数据个数;R表示实数域。
接着,在步骤S620中,处理器利用截断阈值对输入数据D进行量化处理。可以采用多种量化方式对输入数据进行量化处理。例如,可以采用前面描述的公式(10)来进行量化处理,此处不再详述。
继而,在步骤S630中,处理器确定步骤S620所执行的量化处理的量化总差异度量,其中输入数据根据截断阈值被划分为量化部分数据和截断部分数据,并且量化总差异度量基于量化部分数据的量化差异度量和截断部分数据的量化差异度量而确定。
进一步地,在一些实施例中,量化部分数据的量化差异度量和/或截断部分数据的量化差异度量可以至少基于如下两个因素来确定:量化噪声的幅度;以及量化噪声与对应的被量化数据的相关性系数。
具体地,在一些实施例中,例如可以参考前述公式(3)和(4)将输入数据划分为量化数据部分DQ和截断数据部分DC。继而例如可以参考前述公式(8)和(9),分别计算量化数据部分DQ和截断数据部分DC各自的量化噪声幅度AQ和AC;以及例如参考前述公式(11)和(12),分别计算量化数据部分DQ和截断数据部分DC各自的量化噪声与对应的被量化数据的相关性系数EQ和EC。
接着,例如可以参考前述公式(6)和(7),分别计算量化数据部分DQ和截断数据部分DC各自的量化差异度量DistQ和DistC。最后,例如可以参考前述公式(5),计算量化总差异度量。
继续图6,方法600可以前进到步骤S640,处理器基于步骤S630中所确定的量化总差异度量,确定优化的截断阈值。在此步骤中,处理器可以选择使得量化总差异度量最小的截断阈值,作为校准/优化的截断阈值。
在一些实施例中,当输入数据或校准数据集包括多个数据批次时,处理器可以针对每个数据批次确定对应的各批次量化总差异度量,继而可以通过整体考虑各批次量化总差异度量来确定对应整个校准数据集的量化总差异度量,并进而确定校准/优化的截断阈值。在一个示例中,校准数据集的量化总差异度量可以是各批次量化总差异度量之和。
上面参考图6描述了本披露实施例的量化噪声校准方法的示例性流程。在实际操作中,可以采用搜索方式来确定校准/优化的截断阈值。具体地,通过针对给定校准数据集D,在截断阈值的可能范围(在此称为搜索空间)内,搜索并比较各个候选截断阈值Tc的对应量化总差异度量Dist(D,Tc),来确定使得量化总差异度量最优的候选截断阈值Tc,作为校准/优化的截断阈值。
图7示出了实现本披露实施例的量化噪声校准方法的一种示例性逻辑流程700。流程700例如可以针对校准数据集、由处理器来执行。
如图7所示,在步骤S710中,利用截断阈值的搜索空间中的多个候选截断阈值Tc分别对校准数据集进行量化处理。
在一些实施例中,截断阈值的搜索空间可以至少基于校准数据集的最大值来确定。搜索空间例如可以设置为(0,max],max是校准数据集的最大值。当分批次利用校准数据集进行校准时,可以将max初始化为max=max(D1),其中max(D1)为第1个校准数据批次的最大值。
搜索空间中存在的候选截断阈值Tc的个数可以称为搜索精度M。搜索精度M可以预先设置。在一些示例中,搜索精度M可以设为2048。在另一些示例中,搜索精度M可以设为64。搜索精度决定了搜索间隔。由此,搜索空间中的第j个候选截断阈值Tc可以至少部分基于预先设置的搜索精度M按如下确定:
确定候选截断阈值Tc后,可以采用多种量化方式对输入数据进行量化处理。例如,可以采用前面描述的公式(10)来进行量化处理。
接着,在步骤S720中,针对每个候选截断阈值Tc,确定对应的量化处理的量化总差异度量Dist(D,Tc)。具体地,可以包括如下子步骤:
子步骤S721,根据候选截断阈值Tc,参考前面的公式(3)和(4)将校准数据集D划分为量化部分数据DQ和截断部分数据DC。在此实施例中,公式(3)和(4)可以调整为:
DC=[x|Abs(x)≥Tc,x∈D],
其中n为量化处理的量化后数据比特位宽。
子步骤S722,分别确定量化部分数据DQ的量化差异度量DistQ和截断部分数据DC的量化差异度量DistC。例如,可以参考前述公式(6)和(7)确定量化差异度量DistQ和量化差异度量DistC:
DistQ=(1+EQ)×AQ,
DistC=(1+EC)×AC,
其中AQ表示量化部分数据DQ的量化噪声的幅度,EQ表示量化部分数据DQ的量化噪声与量化部分数据DQ的相关性系数,AC表示截断部分数据DC的量化噪声的幅度,EC表示截断部分数据DC的量化噪声与截断部分数据DC的相关性系数。
进一步地,可以参考前述公式(8)和(9),分别计算量化数据部分DQ和截断数据部分DC各自的量化噪声幅度AQ和AC;以及例如参考前述公式(11)和(12),分别计算量化数据部分DQ和截断数据部分DC各自的量化噪声与对应的被量化数据的相关性系数EQ和EC。在此实施例中,前述公式可以调整为:
其中N是当前校准数据集D中的数据个数,Quantize(x,Tc)是将Tc作为最大值,对数据x进行量化的函数。
子步骤S723,基于子步骤S722中计算的量化差异度量DistQ和DistC确定对应的量化总差异度量Dist(D,Tc)。在一些实施例中,例如可以按如下公式确定对应的量化总差异度量Dist(D,Tc):
Dist(D,Tc)=DistQ+DistC。
最后,在步骤S730中,从上述多个候选截断阈值Tc中,选择使得量化总差异度量Dist(D,Tc)最小的候选截断阈值,作为校准/优化的截断阈值T。
在一些实施例中,当校准数据集包括多个数据批次时,处理器可以针对每个数据批次确定对应的各批次量化总差异度量,继而可以通过整体考虑各批次量化总差异度量来确定对应整个校准数据集的量化总差异度量,并进而确定校准/优化的截断阈值。在一个示例中,校准数据集的量化总差异度量可以是各批次量化总差异度量之和。上述计算例如可以表示为:
其中,B是数据批次个数。
上面已经参考流程图描述了本披露实施例的量化噪声校准方案。
发明人在分类模型MobileNet V1、MobileNet V2、ResNet 50V1.5、DenseNet121和翻译模型GNMT上实验比对前文提及的KL散度校准方法和本披露实施例的量化噪声校准方法。实验中采用了不同批次大小B和批次数量N,不同的搜索精度M。
实验结果表明,本披露实施例的量化噪声校准方法在MobileNet V1上达到与KL近似的性能;在MobileNet V2和GNMT上超过KL;在ResNet 50和DenseNet 121上较低于KL。综上,本披露实施例提供了一种新的量化噪声校准方案,其能够校准量化参数(例如,截断阈值),以在实现量化所带来的各种优势(诸如降低运算量、节省运算资源、节省存储资源、加快处理周期等)的同时,保持一定的量化推理精度。本披露实施例的量化噪声校准方案尤其适合于被量化数据分布较集中、更难量化的神经网络,例如MobileNet系列模型和GNMT模型。
图8示出可以实施本披露实施例的量化噪声校准方案的计算装置800的硬件配置的框图。如图8所示,计算装置800可以包括处理器810和存储器820。在图8的计算装置800中,仅示出了与本实施例有关的组成元素。因此,对于本领域普通技术人员而言显而易见的是:计算装置800还可以包括与图8中所示的组成元素不同的常见组成元素。比如:定点运算器。
计算装置800可以对应于具有各种处理功能的计算设备,例如,用于生成神经网络、训练或学习神经网络、将浮点型神经网络量化为定点型神经网络、或者重新训练神经网络的功能。例如,计算装置800可以被实现为各种类型的设备,例如个人计算机(PC)、服务器设备、移动设备等。
处理器810控制计算装置800的所有功能。例如,处理器810通过执行计算装置800上的存储器820中存储的程序,来控制计算装置800的所有功能。处理器810可以由计算装置800中提供的中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)、人工智能处理器芯片(IPU)等来实现。然而,本披露不限于此。
在一些实施例中,处理器810可以包括输入/输出(I/O)单元811和计算单元812。I/O单元811可以用于接收各种数据,例如校准数据集。计算单元812可以用于利用截断阈值对经由I/O单元811接收的校准数据集进行量化处理,确定该量化处理的量化总差异度量;以及基于此量化总差异度量,确定优化的截断阈值。此优化的截断阈值例如可以由I/O单元811输出。输出数据可以提供给存储器820以供其他设备(未示出)读取使用,也可以直接提供给其他设备使用。
存储器820是用于存储计算装置800中处理的各种数据的硬件。例如,存储器820可以存储计算装置800中的处理过的数据和待处理的数据。存储器820可存储处理器810已处理或要处理的神经网络运算过程中涉及的数据集,例如,未训练的初始神经网络的数据、在训练过程中生成的神经网络的中间数据、完成了所有训练的神经网络的数据、经量化的神经网络的数据等。此外,存储器820可以存储要由计算装置800驱动的应用、驱动程序等。例如:存储器820可以存储与将由处理器810执行的神经网络的训练算法、量化算法、校准算法等有关的各种程序。存储器820可以是DRAM,但是本披露不限于此。存储器820可以包括易失性存储器或非易失性存储器中的至少一种。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、相变RAM(PRAM)、磁性RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等。易失性存储器可以包括动态RAM(DRAM)、静态RAM(SRAM)、同步DRAM(SDRAM)、PRAM、MRAM、RRAM、铁电RAM(FeRAM)等。在实施例中,存储器820可以包括硬盘驱动器(HDD)、固态驱动器(SSD)、高密度闪存(CF)、安全数字(SD)卡、微安全数字(Micro-SD)卡、迷你安全数字(Mini-SD)卡、极限数字(xD)卡、高速缓存(caches)或记忆棒中的至少一项。
处理器810可以通过反复训练(学***板电脑、可穿戴设备等、嵌入式设备等)中,神经网络高精度数据运算会使得移动设备的资源没有充分利用。结果是,为了在允许的精度损失范围内驱动神经网络运算,充分减少上述设备中的运算量,可以对在神经网络运算过程中涉及的高精度数据进行量化,转换为低精度的定点数。
考虑到部署神经网络的例如移动设备、嵌入式设备等设备的处理性能,计算装置800执行将经训练的神经网络的参数转换为具有特定比特数的定点型的量化,并且计算装置800向部署神经网络的设备发送对应的量化参数(例如,截断阈值),使得在人工智能处理器芯片执行训练、微调等运算操作时为定点数运算操作。部署神经网络的设备可以是通过使用神经网络来执行语音识别、图像识别等的自主车辆、机器人、智能电话、平板设备、增强现实(AR)设备、物联网(IoT)设备等,但是本披露不限于此。
处理器810从存储器820中获取神经网络运算过程中的数据。该数据包括神经元、权值、偏置和梯度中的至少一种数据,利用图6-图7所示的技术方案确定对应的截断阈值,利用截断阈值对神经网络运算过程中的目标数据进行量化。将量化后的数据执行神经网络运算操作。该运算操作包括但不限于训练、微调、推理。
综上,本说明书实施方式提供的计算装置800的存储器820和处理器810实现的具体功能,可以与本说明书中的前述实施方式相对照解释,并能够达到前述实施方式的技术效果,这里便不再赘述。
在本实施方式中,处理器810可以按任何适当的方式实现。例如,处理器810可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。
图9示出了本披露实施例的用于神经网络的量化噪声校准的计算装置应用于人工智能处理器芯片的应用示意图。参考图9,如上所述,在诸如PC、服务器等的计算装置800中,处理器810执行量化操作,将神经网络运算过程中涉及的浮点数据量化为定点数,人工智能处理器芯片920上的定点运算器922采用量化获得的定点数执行训练、微调或推理。人工智能处理器芯片是用于驱动神经网络的专用硬件。由于人工智能处理器芯片是以相对较低的功率或性能实现的,利用本技术方案采用低精度的定点数实现神经网络运算,与高精度数据相比,读取低精度的定点数时所需内存带宽更小,可以更好的使用人工智能处理器芯片的caches,避免访存瓶颈。同时,在人工智能处理器芯片上执行SIMD指令时,在一个时钟周期内实现更多计算,达到更快地执行神经网络运算操作。
进一步地,面对同样长度的定点运算和高精度数据运算,尤其是定点运算和浮点运算之间比对可知,浮点运算计算模式更为复杂,需要更多的逻辑器件来构成浮点运算器。这样从体积上来说,浮点运算器的体积比定点运算器的体积要大。并且,浮点运算器需要消耗更多的资源去处理,达到定点运算和浮点运算二者之间的功耗差距通常是数量级的。
综上所述,本披露实施例能够让人工智能处理器芯片上的浮点运算器更换为定点运算器,使得人工智能处理器芯片的功耗更低。这一点对于移动设备尤其重要。
在本披露实施例中,人工智能处理器芯片可以对应于例如神经处理单元(NPU)、张量处理单元(TPU)、神经引擎等,它们是用于驱动神经网络的专用芯片,但是本披露不限于此。
在本披露实施例中,人工智能处理器芯片可以在独立于计算装置800的单独设备中实现,计算装置800也可以作为人工智能处理器芯片的一部分功能模块来实现。但是本披露不限于此。
在本披露实施例中,通用处理器(比如CPU)的操作***基于本披露实施例生成指令,将生成的指令发送至人工智能处理器芯片(比如GPU)上,由人工智能处理器芯片去执行指令操作实现神经网络的量化噪声校准过程以及量化过程。还有一种应用情况,通用处理器基于本披露实施例直接确定对应的截断阈值,通用处理器直接根据截断阈值将对应的目标数据进行量化,人工智能处理器芯片利用量化后的数据执行定点运算操作。更甚者,通用处理器(比如CPU)和人工智能处理器芯片(比如GPU)流水化操作,通用处理器(比如CPU)的操作***基于本披露实施例生成指令,且对目标数据进行拷贝的同时人工智能处理器芯片(比如GPU)进行神经网络运算操作,这样可以把某些时间消耗隐藏起来。但是本披露不限于此。
在本披露实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,当该计算机程序被处理器运行时,使得处理器执行上述神经网络中的量化噪声校准方法。
由上可见,在神经网络运算过程中,量化时利用本披露实施例确定截断阈值,该截断阈值用于人工智能处理器对神经网络运算过程中的数据进行量化,将高精度数据转换为低精度定点数,可以减少神经网络运算过程中涉及的数据存储所有的空间大小。例如:float32转化为fix8可以将模型参数减少4倍。由于数据存储空间变小,使得神经网络部署时使用更小的空间,使得人工智能处理器芯片上的片上内存可以容纳更多的数据,减少了人工智能处理器芯片访存数据,提高计算性能。
图10是示出根据本披露实施例的一种组合处理装置1000的结构图。如图10中所示,该组合处理装置1000包括计算处理装置1002、接口装置1004、其他处理装置1006和存储装置1008。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1010,该计算装置可以配置成图8所示的计算装置800,用于执行本文结合附图6-7所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图11中示出的芯片1102)。在一种实现中,该芯片是一种***级芯片(System on Chip,SoC),并且集成有一个或多个如图7中所示的组合处理装置。该芯片可以通过对外接口装置(如图11中示出的对外接口装置1106)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图11对该板卡进行详细地描述。
图11是示出根据本披露实施例的一种板卡1100的结构示意图。如图11中所示,该板卡包括用于存储数据的存储器件1104,其包括一个或多个存储单元1110。该存储器件可以通过例如总线等方式与控制器件1108和上文所述的芯片1102进行连接和数据传输。进一步,该板卡还包括对外接口装置1106,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1112(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图10和图11的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款1.一种由处理器执行的用于神经网络中的校准量化噪声的方法,包括:
接收校准数据集;
利用截断阈值对所述校准数据集进行量化处理;
确定所述量化处理的量化总差异度量;以及
基于所述量化总差异度量,确定优化的截断阈值,所述优化的截断阈值用于由人工智能处理器对神经网络运算过程中的数据进行量化处理;
其中所述校准数据集根据所述截断阈值被划分为量化部分数据和截断部分数据,并且所述量化总差异度量基于所述量化部分数据的量化差异度量和所述截断部分数据的量化差异度量而确定。
条款2.根据条款1所述的方法,其中,所述量化部分数据的量化差异度量和/或所述截断部分数据的量化差异度量至少基于如下两个因素而确定:
量化噪声的幅度;以及
量化噪声与对应的被量化数据的相关性系数。
条款3.根据条款1-2任一所述的方法,其中,利用截断阈值对所述校准数据集进行量化处理包括:
利用截断阈值的搜索空间中的多个候选截断阈值分别对所述校准数据集进行量化处理。
条款4.根据条款3所述的方法,其中,确定所述量化处理的量化总差异度量包括:
针对每个候选截断阈值Tc,按下式将所述校准数据集D划分为量化部分数据DQ和截断部分数据DC:
DC=[x|Abs(x)≥Tc,x∈D],
其中n为所述量化处理的量化后数据比特位宽;
分别确定所述量化部分数据DQ的量化差异度量DistQ和所述截断部分数据DC的量化差异度量DistC;以及
基于所述量化差异度量DistQ和所述量化差异度量DistC确定对应的量化总差异度量Dist(D,Tc)。
条款5.根据条款4所述的方法,其中,按如下公式确定所述量化部分数据DQ的量化差异度量DistQ和所述截断部分数据DC的量化差异度量DistC:
DistQ=(1+EQ)×AQ,
DistC=(1+EC)×AC,
其中AQ表示所述量化部分数据DQ的量化噪声的幅度,EQ表示所述量化部分数据DQ的量化噪声与所述量化部分数据DQ的相关性系数,AC表示所述截断部分数据DC的量化噪声的幅度,EC表示所述截断部分数据DC的量化噪声与所述截断部分数据DC的相关性系数。
条款6.根据条款5所述的方法,其中,
按如下公式确定所述量化噪声的幅度AQ和AC:
按如下公式确定所述相关性系数EQ和EC:
其中N是所述校准数据集D中的数据个数,Quantize(x,Tc)是将Tc作为最大值,对数据x进行量化的函数。
条款7.根据条款4-6任一所述的方法,其中,按如下公式确定对应的量化总差异度量Dist(D,Tc):
Dist(D,Tc)=DistQ+DistC。
条款8.根据条款4-7任一所述的方法,其中,基于所述量化总差异度量,确定优化的截断阈值包括:
从所述多个候选截断阈值Tc中,选择使得所述量化总差异度量Dist(D,Tc)最小的候选截断阈值,作为所述优化的截断阈值。
条款9.根据条款3-8任一所述的方法,其中,所述截断阈值的搜索空间至少基于所述校准数据集的最大值来确定,并且所述候选截断阈值至少部分基于预先设置的搜索精度确定。
条款10.根据条款1-9任一所述的方法,其中所述校准数据集包括多个批次的数据,并且所述量化总差异度量基于针对各个批次的数据的量化总差异度量。
条款11.一种用于神经网络中的校准量化噪声的计算装置,包括:
至少一个处理器;以及
与所述至少一个处理器通信的至少一个存储器,其上存储有计算机可读指令,当所述计算机可读指令由所述至少一个处理器加载并执行时,使得所述至少一个处理器执行条款1-10任一所述的方法。
条款12.一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行根据条款1-10任一所述的方法。
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
Claims (12)
1.一种由处理器执行的用于神经网络中的校准量化的方法,包括:
接收校准数据集;
利用截断阈值对所述校准数据集进行量化处理;
确定所述量化处理的量化总差异度量;以及
基于所述量化总差异度量,确定优化的截断阈值,所述优化的截断阈值用于由处理器对神经网络运算过程中的数据进行量化处理;
其中所述校准数据集根据所述截断阈值被划分为量化部分数据和截断部分数据,并且所述量化总差异度量基于所述量化部分数据的量化差异度量和所述截断部分数据的量化差异度量而确定。
2.根据权利要求1所述的方法,其中,所述量化部分数据的量化差异度量和/或所述截断部分数据的量化差异度量至少基于如下两个因素而确定:
量化噪声的幅度;以及
量化噪声与对应的被量化数据的相关性系数。
3.根据权利要求1-2任一所述的方法,其中,利用截断阈值对所述校准数据集进行量化处理包括:
利用截断阈值的搜索空间中的多个候选截断阈值分别对所述校准数据集进行量化处理。
5.根据权利要求4所述的方法,其中,按如下公式确定所述量化部分数据DQ的量化差异度量DistQ和所述截断部分数据DC的量化差异度量DistC:
DistQ=(1+EQ)×AQ,
DistC=(1+EC)×AC,
其中AQ表示所述量化部分数据DQ的量化噪声的幅度,EQ表示所述量化部分数据DQ的量化噪声与所述量化部分数据DQ的相关性系数,AC表示所述截断部分数据DC的量化噪声的幅度,EC表示所述截断部分数据DC的量化噪声与所述截断部分数据DC的相关性系数。
7.根据权利要求4-6任一所述的方法,其中,按如下公式确定对应的量化总差异度量Dist(D,Tc):
Dist(D,Tc)=DistQ+DistC。
8.根据权利要求4-7任一所述的方法,其中,基于所述量化总差异度量,确定优化的截断阈值包括:
从所述多个候选截断阈值Tc中,选择使得所述量化总差异度量Dist(D,Tc)最小的候选截断阈值,作为所述优化的截断阈值。
9.根据权利要求3-8任一所述的方法,其中,所述截断阈值的搜索空间至少基于所述校准数据集的最大值来确定,并且所述候选截断阈值至少部分基于预先设置的搜索精度确定。
10.根据权利要求1-9任一所述的方法,其中所述校准数据集包括多个批次的数据,并且所述量化总差异度量基于针对各个批次的数据的量化总差异度量。
11.一种用于神经网络中的校准量化的计算装置,包括:
至少一个处理器;以及
与所述至少一个处理器通信的至少一个存储器,其上存储有计算机可读指令,当所述计算机可读指令由所述至少一个处理器加载并执行时,使得所述至少一个处理器执行权利要求1-10任一所述的方法。
12.一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行根据权利要求1-10任一所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010682877.9A CN113947177A (zh) | 2020-07-15 | 2020-07-15 | 一种量化校准方法、计算装置和计算机可读存储介质 |
US17/619,825 US20230133337A1 (en) | 2020-07-15 | 2021-06-10 | Quantization calibration method, computing device and computer readable storage medium |
PCT/CN2021/099287 WO2022012233A1 (zh) | 2020-07-15 | 2021-06-10 | 一种量化校准方法、计算装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010682877.9A CN113947177A (zh) | 2020-07-15 | 2020-07-15 | 一种量化校准方法、计算装置和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113947177A true CN113947177A (zh) | 2022-01-18 |
Family
ID=79326168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010682877.9A Pending CN113947177A (zh) | 2020-07-15 | 2020-07-15 | 一种量化校准方法、计算装置和计算机可读存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230133337A1 (zh) |
CN (1) | CN113947177A (zh) |
WO (1) | WO2022012233A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114821660A (zh) * | 2022-05-12 | 2022-07-29 | 山东浪潮科学研究院有限公司 | 一种基于嵌入式设备的行人检测推理方法 |
CN116108896A (zh) * | 2023-04-11 | 2023-05-12 | 上海登临科技有限公司 | 模型量化方法、装置、介质及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10586151B1 (en) * | 2015-07-31 | 2020-03-10 | Perceive Corporation | Mitigating overfitting in training machine trained networks |
US11222263B2 (en) * | 2016-07-28 | 2022-01-11 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
US20200218982A1 (en) * | 2019-01-04 | 2020-07-09 | Microsoft Technology Licensing, Llc | Dithered quantization of parameters during training with a machine learning tool |
CN109993296B (zh) * | 2019-04-01 | 2020-12-29 | 安徽寒武纪信息科技有限公司 | 量化实现方法及相关产品 |
CN110222821B (zh) * | 2019-05-30 | 2022-03-25 | 浙江大学 | 基于权重分布的卷积神经网络低位宽量化方法 |
CN110363281A (zh) * | 2019-06-06 | 2019-10-22 | 上海交通大学 | 一种卷积神经网络量化方法、装置、计算机和存储介质 |
-
2020
- 2020-07-15 CN CN202010682877.9A patent/CN113947177A/zh active Pending
-
2021
- 2021-06-10 WO PCT/CN2021/099287 patent/WO2022012233A1/zh active Application Filing
- 2021-06-10 US US17/619,825 patent/US20230133337A1/en active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114821660A (zh) * | 2022-05-12 | 2022-07-29 | 山东浪潮科学研究院有限公司 | 一种基于嵌入式设备的行人检测推理方法 |
CN116108896A (zh) * | 2023-04-11 | 2023-05-12 | 上海登临科技有限公司 | 模型量化方法、装置、介质及电子设备 |
CN116108896B (zh) * | 2023-04-11 | 2023-07-07 | 上海登临科技有限公司 | 模型量化方法、装置、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2022012233A1 (zh) | 2022-01-20 |
US20230133337A1 (en) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111652368B (zh) | 一种数据处理方法及相关产品 | |
US11676028B2 (en) | Neural network quantization parameter determination method and related products | |
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
EP3667569A1 (en) | Processing method and device, operation method and device | |
US20230133337A1 (en) | Quantization calibration method, computing device and computer readable storage medium | |
WO2022111002A1 (zh) | 用于训练神经网络的方法、设备和计算机可读存储介质 | |
US20220092399A1 (en) | Area-Efficient Convolutional Block | |
WO2021036362A1 (zh) | 用于处理数据的方法、装置以及相关产品 | |
US20220076095A1 (en) | Multi-level sparse neural networks with dynamic rerouting | |
CN111144564A (zh) | 对神经网络执行训练的设备及其集成电路板卡 | |
CN112085175A (zh) | 基于神经网络计算的数据处理方法和装置 | |
US20220121908A1 (en) | Method and apparatus for processing data, and related product | |
CN114970822A (zh) | 一种神经网络模型量化方法、***、设备及计算机介质 | |
CN114580625A (zh) | 用于训练神经网络的方法、设备和计算机可读存储介质 | |
CN111144559A (zh) | 用于训练神经网络的设备、方法和集成电路板卡 | |
CN114118341A (zh) | 量化方法、计算装置和计算机可读存储介质 | |
US20220222041A1 (en) | Method and apparatus for processing data, and related product | |
Furuta et al. | An Efficient Implementation of FPGA-based Object Detection Using Multi-scale Attention | |
CN117115199A (zh) | 目标跟踪模型的量化方法、跟踪方法和装置 | |
CN117396888A (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 |