用于处理数据的方法、装置以及相关产品与流程

文档序号:24156229发布日期:2021-03-05 11:52阅读:78来源:国知局
用于处理数据的方法、装置以及相关产品与流程

[0001]
本公开的实施例总体上计算机技术领域,并且更具体地涉及用于处理数据的方法、装置以及相关产品。


背景技术:

[0002]
随着人工智能技术的不断发展,其应用领域越来越广泛,在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。然而,随着人工智能算法的复杂度和准确度的提高,机器学习模型越来越大,需要处理的数据量也越来越大。在进行大量的数据处理时,需要较大的计算和时间开销,处理效率较低。


技术实现要素:

[0003]
鉴于此,本公开的实施例提供了一种用于处理数据的方法、装置以及相关产品。
[0004]
在本公开的第一方面,提供了一种用于处理数据的方法。该方法包括:获取用于机器学习模型的一组待量化数据;通过使用多对截断阈值分别量化一组待量化数据,来确定多组量化后的数据,其中多对截断阈值中的每对截断阈值包括截断上限和截断下限,并且多对截断阈值中的至少一对截断阈值中的截断上限和截断下限具有不同的绝对值;以及基于多组量化后的数据中的每组量化后的数据的绝对值的均值与一组待量化数据的绝对值的均值之间的差异,从多对截断阈值中选择一对截断阈值,以用于量化一组待量化数据。
[0005]
在本公开的第二方面,提供了一种用于处理数据的装置。该装置包括:待量化数据获取单元,用于获取用于机器学习模型的一组待量化数据;量化后数据确定单元,用于通过使用多对截断阈值分别量化一组待量化数据,来确定多组量化后的数据,其中多对截断阈值中的每对截断阈值包括截断上限和截断下限,并且多对截断阈值中的至少一对截断阈值中的截断上限和截断下限具有不同的绝对值;以及截断阈值选择单元,用于基于多组量化后的数据中的每组量化后的数据的绝对值的均值与一组待量化数据的绝对值的均值之间的差异,从多对截断阈值中选择一对截断阈值,以用于量化一组待量化数据。
[0006]
在本公开的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,程序被执行时实现根据本公开的各个实施例的方法。
[0007]
在本公开的第四方面,提供了一种人工智能芯片其包括根据本公开的各个实施例的用于处理数据的装置。
[0008]
在本公开的第五方面,提供了一种电子设备,其包括根据本公开的各个实施例的人工智能芯片。
[0009]
在本公开的第六方面,提供了一种板卡,其包括:存储器件、接口装置和控制器件以及根据本公开的各个实施例的人工智能芯片。其中,人工智能芯片与存储器件、控制器件以及接口装置相连接;存储器件用于存储数据;接口装置用于实现人工智能芯片与外部设备之间的数据传输;以及控制器件用于对人工智能芯片的状态进行监控。
[0010]
通过权利要求中的技术特征进行推导,能够达到对应背景技术中的技术问题的有
益效果。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
[0011]
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
[0012]
图1示出了根据本公开的实施例的用于处理数据的方法的处理系统的示意图;
[0013]
图2示出了根据本公开的实施例的神经网络的示例架构的示意图;
[0014]
图3示出了根据本公开的实施例的用于量化数据的过程的示意图;
[0015]
图4a示出了根据本公开的实施例的用于对称地量化数据的示意图;
[0016]
图4b示出了根据本公开的实施例的用于基于截断阈值来对称地量化数据的示意图;
[0017]
图4c示出了根据本公开的实施例的用于非对称地量化数据的示意图;
[0018]
图4d示出了根据本公开的实施例的用于基于截断阈值来非对称地量化数据的示意图;
[0019]
图5示出了根据本公开的实施例的用于处理数据的方法的流程图;
[0020]
图6示出了根据本公开的实施例的用于搜索非对称量化的截断阈值的方法的流程图;
[0021]
图7a示出了根据本公开的实施例的粗粒度搜索用于非对称量化的截断阈值的示意图;
[0022]
图7b示出了根据本公开的实施例的细粒度搜索用于非对称量化的截断阈值的示意图;
[0023]
图8示出了根据本公开的实施例的用于迭代地搜索最佳截断阈值的方法的流程图;
[0024]
图9示出了根据本公开的实施例的用于处理数据的装置的框图;以及
[0025]
图10示出根据本公开实施例的板卡的结构框图。
具体实施例
[0026]
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0027]
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0028]
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一种”及“该”意在包括复数形式。还应当进一
processing unit,图形处理单元)、npu(neural-network processing unit,神经网络处理单元)、dsp(digital signal process,数字信号处理单元)、现场可编程门阵列(field-programmable gate array,fpga)芯片中的一种或组合。本公开对处理器的具体类型不作限制。此外,处理系统100中的多个处理器的类型可以相同或不同,本公开对此不作限制。
[0035]
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
[0036]
图2示出了根据本公开的实施例的神经网络200的示例架构的示意图。神经网络(neural network,nn)是一种模仿生物神经网络的结构和功能的数学模型,神经网络由大量的神经元连接进行计算。因此,神经网络是一种计算模型,由大量的节点(或称“神经元”)相互的连接构成。每个节点代表一种特定的输出函数,称为激活函数(activation function)。每两个神经元之间的连接都代表一个通过该连接信号的加权值,称之为权值,这相当于神经网络的记忆。神经网络的输出则依神经元之间的连接方式以及权值和激活函数的不同而不同。在神经网络中,神经元是神经网络的基本单位。它获得一定数量的输入和一个偏置,当信号(值)到达时会乘以一个权值。连接是将一个神经元连接到另一层或同一层的另一个神经元,连接伴随着与之相关联的权值。另外,偏置是神经元的额外输入,它始终为1,并具有自己的连接权值。这确保即使所有的输入都为空(全部为0),神经元也会激活。
[0037]
在应用中,如果不对神经网络中的神经元应用一个非线性函数,神经网络只是一个线性函数而已,那么它并不比单个神经元强大。如果让一个神经网络的输出结果在0到1之间,例如,在猫狗鉴别的例子中,可以把接近于0的输出视为猫,将接近于1的输出视为狗。为了完成这个目标,在神经网络中引入激活函数,诸如sigmoid激活函数。关于这个激活函数,只需要知道它的返回值是一个介于0到1的数字。因此,激活函数用于将非线性引入神经网络,它会将神经网络运算结果缩小到较小的范围内。实际上,激活函数如何表达并不重要,重要的是通过一些权值将一个非线性函数参数化,可以通过改变这些权值来改变这个非线性函数。
[0038]
如图2所示,为神经网络200的结构示意图。在图2所示的神经网络中,包括三层,分别为输入层210、隐含层220以及输出层230,图2所示的隐含层220报考3层,当然,隐含层220也可以包括更多或更少的层。其中输入层210的神经元被称为输入神经元。输入层作为神经网络中的第一层,需要输入信号(值)并将它们传递到下一层。它不对输入信号(值)做任何操作,并且没有关联的权值和偏置。在图2所示的神经网络中,可以接收4个输入信号(值)。
[0039]
隐含层220用于对输入数据应用不同变换的神经元(节点)。一个隐含层是垂直排列的神经元的集合(representation)。在图2所示的神经网络中,包括3个隐含层。隐含层的第1层有4个神经元(节点),第2层有6个神经元,第3层有3个神经元。最后,隐含层将值传递给输出层230。图2所示的神经网络200将3个隐含层中每个神经元之间进行完全连接,3个隐含层中的每个神经元都与下一层的每一个神经元有连接。需要说明的是,并不是每个神经网络的隐含层是完全连接的。
[0040]
输出层230的神经元被称为输出神经元。输出层接收来自最后一个隐含层的输出。通过输出层230,可以确定期望的值和期望的范围。在图2所示的神经网络中,输出层有3个
神经元,即有3个输出信号(值)。
[0041]
在实际应用中,神经网络的作用就是预先给大量的样本数据(包含输入和输出)来进行训练,训练完成后,使用神经网络对于将来的真实环境的输入得到一个准确的输出。
[0042]
在开始讨论神经网络的训练之前,需要定义损失函数。损失函数是一个指示神经网络在某个特定的任务上表现有多好的函数。做这件事的最直接的办法就是,在训练过程中,对每一个样本数据,都沿着神经网络传递得到一个数字,然后将这个数字与想要得到的实际数字做差再求平方,这样计算出来的就是预测值与真实值之间的距离,而训练神经网络就是希望将这个距离或损失函数的取值减小。
[0043]
在开始训练神经网络的时候,要对权值进行随机初始化。显然,初始化的神经网络并不会提供一个很好的结果。在训练的过程中,假设以一个很糟糕的神经网络开始,通过训练,可以得到一个具有高准确率的网络。同时,还希望在训练结束的时候,损失函数的函数值变得特别小。
[0044]
神经网络的训练过程分为两个阶段,第一阶段是信号的正向处理,从输入层210经过隐含层220,最后到达输出层230。第二阶段是反向传播梯度,从输出层230到隐含层220,最后到输入层210,根据梯度依次调节神经网络中每层的权值和偏置。
[0045]
在正向处理的过程中,将输入值输入到神经网络的输入层210,并从神经网络的输出层230得到称为预测值的输出。当输入值提供给神经网络的输入层210时,它没有进行任何操作。在隐含层中,第二个隐含层从第一个隐含层获取预测中间结果值并进行计算操作和激活操作,然后将得到的预测中间结果值传递给下一个隐含层。在后面的层中执行相同的操作,最后在神经网络的输出层230得到输出值。
[0046]
正向处理后,得到一个被称为预测值的输出值。为了计算误差,使用损失函数来将预测值与实际输出值进行比较,获得对应的误差值。反向传播使用微分学的链式法则,在链条法则中,首先计算对应神经网络的最后一层权值的误差值的导数。称这些导数为梯度,然后使用这些梯度来计算神经网络中的倒数第二层的梯度。重复此过程,直到得到神经网络中每个权值的梯度。最后,从权值中减去对应的梯度,从而对权值进行一次更新,以达到减少误差值的目的。
[0047]
此外,对于神经网络来说,微调是载入训练过的神经网络,微调过程与训练过程相同,分为两个阶段,第一阶段是信号的正向处理,第二阶段是反向传播梯度,对训练过的神经网络的权值进行更新。训练与微调的不同之处在于,训练是随机对初始化的神经网络进行处理,从头开始训练神经网络,而微调不是从头开始训练。
[0048]
在神经网络进行训练或微调过程中,神经网络每经过一次信号的正向处理以及对应一次误差的反向传播过程,神经网络中的权值利用梯度进行一次更新,此时称为一次迭代(iteration)。为了获得精度符合预期的神经网络,在训练过程中需要很庞大的样本数据集。在这种情况下,一次性将样本数据集输入计算机是不可能的。因此,为了解决这个问题,需要把样本数据集分成多个块,每块传递给计算机,每块数据集正向处理后,对应更新一次神经网络的权值。当一个完整的样本数据集通过了神经网络一次正向处理并且对应返回了一次权值更新,这个过程称为一个周期(epoch)。实际中,在神经网络中传递一次完整的数据集是不够的,需要将完整的数据集在同一神经网络中传递多次,即需要多个周期,最终获得精度符合预期的神经网络。
[0049]
在神经网络进行训练或微调过程中,通常希望速度越快越好,准确率越高越好。神经网络的数据通过高精度数据格式表示,比如浮点数,所以在训练或微调过程中,涉及的数据均为高精度数据格式,然后再将训练好的神经网络进行量化。以量化对象是整个神经网络的权值、且量化后的权值均为8位定点数为例,由于一个神经网络中常常有数百万连接,几乎所有空间都被神经元连接的权值所占据。况且这些权值都是不同的浮点数。每层权值都趋向于某个确定区间的正态分布,例如(-3.0,3.0)。将神经网络中每层的权值对应的最大值和最小值保存下来,将每个浮点数值采用8位定点数表示。其中,在最大值、最小值范围内空间线性划分256个量化间隔,每个量化间隔用一个8位定点数表示。例如:在(-3.0,3.0)区间内,字节0表示-3.0,字节255表示3.0。以此类推,字节128表示0。
[0050]
对于高精度数据格式表示的数据,以浮点数为例,根据计算机体系结构可知,基于浮点数的运算表示法则、定点数的运算表示法则,对于同样长度的定点运算和浮点运算,浮点运算计算模式更为复杂,需要更多的逻辑器件来构成浮点运算器。这样从体积上来说,浮点运算器的体积比定点运算器的体积要大。并且,浮点运算器需要消耗更多的资源去处理,使得定点运算和浮点运算二者之间的功耗差距通常是数量级的。简言之,浮点运算器占用的芯片面积和功耗相比于定点运算器都要大很多倍。
[0051]
图3示出了根据本公开的实施例的用于量化数据的过程300的示意图。参考图3,输入数据310可以为待量化的浮点数,例如32位的浮点数,如果直接将输入数据310输入到神经网络模型340进行处理,则会造成耗费较多的计算资源并且处理速度较慢。因此,在框320处,可以对输入数据进行量化,以获得量化后的数据330(例如8位整数)。如果将量化后的数据330输入到神经网络模型340中进行处理,由于8位整数计算较快,因而神经网络模型340将更快速地完成针对输入数据的处理,并生成对应的输出结果350。
[0052]
从待量化的输入数据310到量化后的数据330的量化过程中,会在一定程度上造成一些精度损失,而精度损失的程度将直接影响着输出结果350的准确性。因此,在针对输入数据330进行量化处理的过程中,需要保证量化过程的精度损失最小或者尽量小。
[0053]
图4a示出了根据本公开的实施例的用于对称地量化数据的图示400。如图4a所示,是一种最简单的对称量化方法,直接选择待量化数据中的所有数据中的绝对值最大值,即为|max|,然后在-|max|至|max|的范围内进行量化,从而生成量化后的数据。然而,这种方法不做任何截断,会导致量化后的数据中的精度较低。同时,对称量化的方法会造成一定的浪费,例如,量化后的最大值127周围不存在数据点。
[0054]
图4b示出了根据本公开的实施例的用于基于截断阈值来对称地量化数据的图示450。不同于图4a中的直接量化方法,图4b中选择一个截断阈值t,在-|t|至|t|的范围之外的数据将会被设定成-|t|或|t|。例如,在图4b的示例中,圈460中待量化的3个值由于在截断范围之外,因而会被当成值-|t|来进行量化处理,量化成数据点470。通过这种方式,通过使用截断阈值来缩小待量化数据的取值范围,能够提高量化后的数据的精度。
[0055]
图4c示出了根据本公开的实施例的用于非对称地量化数据的图示480。如图4c所示,是一种非对称量化方法,直接选择待量化数据中的所有数据中的最大值max和最小值min,然后在min至max的范围内进行量化,从而生成量化后的数据。然而,这种方法不做任何截断,会导致量化后的数据中的精度较低。
[0056]
图4d示出了根据本公开的实施例的用于基于截断阈值非对称地量化数据的图示
490。不同于图4c中的直接量化方法,图4d中选择一个截断上限t和截断下限min,然后在min至t的范围之外的数据将会被设定成min或t。例如,在图4d的示例中,圈492中待量化的2个值由于在截断范围之外,因而会被当成值t来进行量化处理,量化成数据点495。通过这种方式,通过使用非对称的截断上限和截断下限来缩小待量化数据的取值范围,能够提高量化后的数据的精度。然而,如何获得量化精度损失最小的一对非对称截断阈值,是一个亟待解决的技术问题。
[0057]
图5示出了根据本公开的实施例的用于处理数据的方法500的流程图。应当理解,方法500可以由参考图1所描述的一个或多个处理器101来执行。
[0058]
在框502,获取用于机器学习模型的一组待量化数据。例如,参考以上图3,可以获取待量化的输入数据310,对输入数据进行量化,从而加快神经网络模型340的处理速度。此外,也可以对神经网络模型自身的一些参数(诸如权值等)进行量化,通过对网络参数进行量化,能够减小神经网络模型的大小。在一些实施例中,待量化的数据可以为32位的浮点数。备选地,待量化的数据也可以为其他位数的浮点数,或者其他的数据类型。
[0059]
在框504,通过使用多对截断阈值分别量化一组待量化数据,来确定多组量化后的数据,其中多对截断阈值中的每对截断阈值包括截断上限和截断下限,并且多对截断阈值中的至少一对截断阈值中的截断上限和截断下限具有不同的绝对值。也就是说,多对截断阈值中至少包括一对非对称的截断阈值。在非对称量化的方案中,每对截断阈值包括一个截断上限和一个截断下限,每对截断上限和截断下限通常是非对称的,即他们的绝对值是不同的。然而,在某些情况下,所确定的多对截断阈值中可能有一对或者多对是对称的,但是至少有一对截断阈值是不对称的。在某些实施例中,截断下限也可以不是待量化数据中的最小值,而是可以为其他值。
[0060]
根据本公开的实施例,可以挑选多对截断阈值,分别量化待量化数据。在一些实施例中,可以以固定的间隔挑选一些截断阈值,例如,根据待量化数据中的最大值与最小值之间的取值范围,每隔预定距离挑选一个截断上限,而截断下限可以始终为待量化数据的最小值。在一些实施例中,也可以仅挑选几个特定位置处的截断阈值,例如仅挑选最大值的几个预定比例的数值作为截断上限。
[0061]
在一些实施例中,可以根据每对截断阈值计算出相应的一个或多个量化参数,然后使用计算出的量化参数来量化待量化数据。备选地,也可以直接根据一对截断阈值来通过各种公式或模型量化待量化数据,而无需单独计算各个量化参数的值。
[0062]
在框506,基于多组量化后的数据中的每组量化后的数据的绝对值的均值与一组待量化数据的绝对值的均值之间的差异,从多对截断阈值中选择一对截断阈值,以用于量化一组待量化数据。本申请的发明人根据通过研究和大量实验发现,量化前后的数据的绝对值的均值差距能够反映出量化前后的精度损失,其中绝对值均值差异越小,量化操作的精度损失越小。因此,本公开的实施例使用量化前后的数据的绝对值的均值的差异作为挑选最佳截断阈值的指标,能够实现比传统的kl方法更小的精度损失。
[0063]
在一些实施例中,量化后的数据的绝对值的均值与待量化数据的绝对值的均值之间的差异可以为两个绝对值均值之间的差值。备选地,量化后的数据的绝对值的均值与待量化数据的绝对值的均值之间的差异也可以为:两个绝对值均值之间的差值除以待量化数据的绝对值的均值,然后再取绝对值。
[0064]
在一些实施例中,在选择最佳的一对截断阈值之后,可以使用所选择的一对截断阈值来量化一组待量化数据以获得量化后的数据,包括:将一组待量化数据中大于所选择的截断上限的数值截断为截断上限,并且将一组待量化数据中小于所选择的截断下限的数值截断为截断下限;然后将所获得的量化后的数据输入到神经网络模型以用于处理。
[0065]
图6示出了根据本公开的实施例的搜索用于非对称量化的截断阈值的方法600的流程图,方法600基于待量化数据确定最佳的一对非对称截断阈值以用于数据的量化。
[0066]
在框602,确定待量化数据的绝对值的均值data_mean以及待量化数据中的最大值data_max和最小值data_min,其中绝对值的均值为待量化数据中的所有数据的绝对值之和除以元素个数,此外,还需要初始化最小均值差异,例如初始设置浮点数中的最大值,并且初始化循环搜索的搜索次序i(例如初始化为0)。在一些实施例中,搜索次序i也可以被初始化为搜索总次数的一半,也即从中间部分开始搜索,这样能够提高搜索效率。根据本公开的实施例,可以设置一轮或者多轮阈值搜索过程,每轮阈值搜索可以具有相同或者不同的搜索总次数。在一些实施例中,每轮的搜索总次数可以设置在10至32之间。一般来说,搜索总次数越多,所花费的搜索时间越长,所搜到的截断阈值也越精确。然而,当搜索总次数达到某个限值后,搜索效果可能不再会有本质提升。
[0067]
接下来,开始第一轮粗粒度的截断阈值搜索过程。例如,图7a示出了根据本公开的实施例的粗粒度搜索用于非对称量化的截断阈值的示例图示700。如图7a所示,可以在待量化数据中确定10个候选截断阈值(通过图7a中的虚线标识),依次使用这10对截断阈值(图7a中仅示出10个截断上限,截断下限可以始终为待量化数据的最小值)来执行量化过程,并根据量化前后的数据的绝对值均值的差异来确定最佳的一对截断阈值。本申请的发明人发现,在神经网络模型中,输入的数据通常在小值比较集中,而在大值比较分散,因而将截断下限直接设置为待量化数据中的最小值不会造成太多的精度损失,同时还能够避免选择截断下限的复杂过程。
[0068]
在框604,判断搜索次序i是否小于预定的搜索总次数search_grid,即在依次选择各对截断阈值进行量化时,判断是否已经完成对截断阈值的所有计算。如果搜索次序i小于搜索总次数,则在框606基于当前的搜索次序i,确定一对截断阈值,这对截断阈值的截断上限例如为:data_max-i*(data_max-data_min)/search_grid,而截断下限直接为待量化数据中的最小值。备选地,搜索次序i的截断上限也可以被选择为data_max*(i+1)/search_grid。
[0069]
在框608,使用这对截断阈值来量化待量化数据,以得到相应的量化后数据quant_data_i,然后在框610,计算量化后的数据的绝对值的均值quant_data_mean_i与待量化数据的绝对值均值data_mean之间的差异distance_i=abs(quant_data_mean_i-data_mean)/data_mean。
[0070]
在框612,判断所计算的差异distance_i是否小于当前最小差异。如果是的话,则在框614,将所计算的差异distance_i设置为当前最小差异,并记录差异最小时的截断阈值,然后在框616处递增搜索次序i。如果在框612判断是否的话,直接在框616处递增搜索次序i(即i++),即继续确定下一对截断阈值时的差异。接下来,继续循环步骤604至616,直到搜索次序i的值达到搜索总次数,则在框618,退出第一轮截断阈值的搜索过程。如图7a所示,经过第一轮的搜索,确定虚线770处的截断上限所对应的差异最小。由此可见,截断阈值
搜索的过程即为:使用多对截断阈值对待量化数据进行量化,确定多组量化后的数据中与待量化数据在绝对值的均值方面差异最小的一组量化后的数据,然后从多对截断阈值中选择与这组量化后的数据相对应的一对截断阈值。
[0071]
可选地,可以执行第二轮细粒度的截断阈值搜索过程,第二轮搜索过程也可以参考方法600,只是第二轮搜索是在第一轮最佳截断上限770周围的一定范围内(例如,所选择的截断上限770的前一个截断上限与后一个截断上限之间)进行,是对第一轮搜索结果的更一步细化。例如,第二轮搜索时,各个截断上限之间的间隔可以为((data_max-data_min)*2)/(search_grid1*search_grid2),其中search_grid1表示第一轮搜索总次数,search_grid2表示第二轮搜索总次数。图7b示出了根据本公开的实施例的细粒度搜索用于非对称量化的截断阈值的图示750,参考图7b,经过第二轮搜索,确定细粒度的最佳截断上限为772,截断下限可以选择为待量化数据中的最小值778。通过两轮搜索的方式,能够获得更加准确和精细的截断阈值,进一步减小数据量化所导致的精度损失。
[0072]
图8示出了根据本公开的实施例的用于迭代地搜索最佳截断阈值的方法800的流程图。在框802,确定三对截断阈值,例如,可以确定待量化数据f
x
中的所有数据的最大值data_max和最小值data_min,令z
max
=data_max,并且z
min
=data_min,则三对截断阈值可以分别为(data_min,data_max/2)、(data_min,data_max*3/4)以及(data_min,data_max)。在框804,使用这三对截断阈值分别量化待量化数据f
x
,得到量化后的数据然后分别计算数据f
x
、对应的绝对值的均值然后根据公式选择最小差异diff_min。在框806,需要判断最小差异diff_min是否小于提前设置的某个预定阈值。如果否,则在框808,基于所选择的一对截断阈值(将最小差异diff_min对应的值设置为新的最大值),重新确定三对截断阈值,并重复上述过程,直到最小差异diff_min小于预定阈值,则在框810,退出截断阈值的迭代过程。在一些实施例,除了最小差异diff_min小于预定阈值这一迭代停止条件之外,还可以设置其他的迭代停止条件,例如最大迭代次数、达到预定最小间隔,等等。另外,虽然图8的方法800中示出了迭代地选择最佳的一对截断阈值,也可以不执行迭代,而只执行一次,然后直接将最小差异diff_min对应的一对截断阈值作为最终的截断阈值,由此确定量化参数,从而完成对数据的量化。
[0073]
在一些实施例中,可以通过以下式(1)-(4)确定在使用各对截断阈值量化数据时的量化参数。
[0074][0075][0076][0077]
[0078]
其中n表示量化后的二进制位数,o、s和f表示量化参数,ceil表示向上取整。
[0079]
根据本公开的实施例,通过将z
max
分别选为data_max/2、data_max*3/4和data_max,可以求得量化参数o1、s1、f1、o2、s2、f2、o3、s3以及f3,由此得到量化后的数据相应地,在选出一对截断阈值之后,直接取这对截断阈值对应的o、s和f作为待量化数据的量化参数。
[0080]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
[0081]
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0082]
图9示出了根据本公开的实施例的用于处理数据的装置900的框图。如图9所示,装置900包括待量化数据获取单元910、量化后数据确定单元920以及截断阈值选择单元930。待量化数据获取单元910用于获取用于机器学习模型的一组待量化数据。量化后数据确定单元920用于通过使用多对截断阈值分别量化一组待量化数据,来确定多组量化后的数据,其中多对截断阈值中的每对截断阈值包括截断上限和截断下限,并且多对截断阈值中的至少一对截断阈值中的截断上限和截断下限具有不同的绝对值。截断阈值选择单元930用于基于多组量化后的数据中的每组量化后的数据的绝对值的均值与一组待量化数据的绝对值的均值之间的差异,从多对截断阈值中选择一对截断阈值,以用于量化一组待量化数据。
[0083]
此外,装置900中的待量化数据获取单元910、量化后数据确定单元920以及截断阈值选择单元930还可以被配置为执行根据本公开的各个实施例的步骤和/或动作。
[0084]
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
[0085]
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0086]
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储
器rram(resistive random access memory)、动态随机存取存储器dram(dynamic random access memory)、静态随机存取存储器sram(static random-access memory)、增强动态随机存取存储器edram(enhanced dynamic random access memory)、高带宽内存hbm(high-bandwidth memory)、混合存储立方hmc(hybrid memory cube)等等。
[0087]
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0088]
在一个实施例中,公开了一种计算机可读存储介质,其上存储有计算机程序,程序被执行时实现根据本公开的各个实施例的方法
[0089]
在一个实施例中,还公开了一种人工智能芯片,其包括了上述数据用于处理数据的装置。
[0090]
在一个实施例中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0091]
图10示出根据本公开实施例的板卡1000的结构框图,参考图10,上述板卡1000除了包括上述芯片1030-1和1030-2(统称为芯片1030)之外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件1010、接口装置1040和控制器件1020。接口装置1040可以与外部设备1060相连接。存储器件1010与人工智能芯片1030通过总线1050连接,其用于存储数据。存储器件1010可以包括多组存储单元1010-1和1010-2。每一组存储单元与所述人工智能芯片通过总线1050连接。可以理解,每一组所述存储单元可以是ddr sdram(英文:double data rate sdram,双倍速率同步动态随机存储器)。
[0092]
ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述人工智能芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-3200颗粒时,数据传输的理论带宽可达到25600mb/s。
[0093]
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
[0094]
所述接口装置与所述人工智能芯片电连接。所述接口装置用于实现所述人工智能芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯
片,实现数据转移。优选的,当采用pcie 3.0 x 16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
[0095]
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(micro controller unit,mcu)。如所述人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
[0096]
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0097]
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。
[0098]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0099]
依据以下条款可更好地理解前述内容:
[0100]
a1.一种用于处理数据的方法,其特征在于,包括:
[0101]
获取用于机器学习模型的一组待量化数据;
[0102]
通过使用多对截断阈值分别量化所述一组待量化数据,来确定多组量化后的数据,所述多对截断阈值中的每对截断阈值包括截断上限和截断下限,并且所述多对截断阈值中的至少一对截断阈值中的截断上限和截断下限具有不同的绝对值;以及
[0103]
基于所述多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述多对截断阈值中选择一对截断阈值,以用于量化所述一组待量化数据。
[0104]
a2.根据条款a1所述的方法,其特征在于,确定多组量化后的数据包括:
[0105]
确定所述一组待量化数据中的所有数据的最大值和最小值;以及
[0106]
基于所述最大值和所述最小值,确定所述多对截断阈值。
[0107]
a3.根据条款a2所述的方法,其特征在于,确定多组量化后的数据还包括:
[0108]
基于所述最大值、预定的搜索总次数以及当前搜索次序,确定第一截断上限;
[0109]
通过使用第一对截断阈值量化所述一组待量化数据,来确定第一组量化后的数据,所述第一对截断阈值包括所述第一截断上限以及与所述最小值相同的第一截断下限;以及
[0110]
确定所述第一组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值
的均值之间的第一差异。
[0111]
a4.根据条款a3所述的方法,其特征在于,确定多组量化后的数据还包括:
[0112]
递增所述当前搜索次序;
[0113]
基于所述最大值、所述预定的搜索总次数以及所述当前搜索次序,确定第二截断上限;
[0114]
通过使用第二对截断阈值量化所述一组待量化数据,来确定第二组量化后的数据,所述第二对截断阈值包括所述第二截断上限以及与所述最小值相同的第二截断下限;以及
[0115]
确定所述第二组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的第二差异。
[0116]
a5.根据条款a1-a4中任一项所述的方法,其特征在于,从所述多对截断阈值中选择一对截断阈值包括:
[0117]
确定所述多组量化后的数据中与所述一组待量化数据在绝对值的均值方面差异最小的一组量化后的数据;以及
[0118]
从所述多对截断阈值中选择与所述一组量化后的数据相对应的一对截断阈值。
[0119]
a6.根据条款a5所述的方法,其特征在于,还包括:
[0120]
确定与所选择的所述一对截断阈值相关联的截断搜索范围;
[0121]
确定处于所述截断搜索范围内的新的多对截断阈值;
[0122]
通过使用所述新的多对截断阈值分别量化所述一组待量化数据,来确定新的多组量化后的数据;以及
[0123]
基于所述新的多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述新的多对截断阈值中选择新的一对截断阈值。
[0124]
a7.根据条款a1所述的方法,其特征在于,确定多组量化后的数据包括:
[0125]
确定所述一组待量化数据中的所有数据的最大值和最小值;
[0126]
基于所述最大值和所述最小值,确定三对截断阈值,所述三对截断阈值中的第一对包括所述最大值的一半和所述最小值,所述三对截断阈值中的第二对包括所述最大值的四分之三和所述最小值,并且所述三对截断阈值中的第三对包括所述最大值和所述最小值;以及
[0127]
通过使用三对截断阈值分别量化所述一组待量化数据,来确定三组量化后的数据。
[0128]
a8.根据条款a7所述的方法,其特征在于,从所述多对截断阈值中选择一对截断阈值包括:
[0129]
迭代执行以下动作,直到满足停止条件:
[0130]
从所述三对截断阈值中选择一对截断阈值;
[0131]
确定与所选择的一对截断阈值相对应的差异是否小于预定阈值;
[0132]
响应于所述差异小于预定阈值,停止迭代执行动作;以及
[0133]
响应于所述差异大于预定阈值,基于所选择的一对截断阈值,重新确定三对截断阈值。
[0134]
a9.根据条款a1-a8中任一项所述的方法,其特征在于,所述一组待量化数据是神经网络模型中的一组浮点数,所述方法还包括:
[0135]
使用所选择的一对截断阈值来量化所述一组待量化数据以获得量化后的数据,其中量化所述一组待量化数据包括:将所述一组待量化数据中大于所选择的截断上限的数值设为所述截断上限,并且将所述一组待量化数据中小于所选择的截断下限的数值设为所述截断下限;以及
[0136]
将所获得的量化后的数据输入到所述神经网络模型以用于处理。
[0137]
a10.一种用于处理数据的装置,其特征在于,包括:
[0138]
待量化数据获取单元,用于获取用于机器学习模型的一组待量化数据;
[0139]
量化后数据确定单元,用于通过使用多对截断阈值分别量化所述一组待量化数据,来确定多组量化后的数据,所述多对截断阈值中的每对截断阈值包括截断上限和截断下限,并且所述多对截断阈值中的至少一对截断阈值中的截断上限和截断下限具有不同的绝对值;以及
[0140]
截断阈值选择单元,用于基于所述多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述多对截断阈值中选择一对截断阈值,以用于量化所述一组待量化数据。
[0141]
a11.根据条款a10所述的装置,其特征在于,所述量化后数据确定单元包括:
[0142]
最大值和最小值确定单元,用于确定所述一组待量化数据中的所有数据的最大值和最小值;以及
[0143]
多对截断阈值确定单元,用于基于所述最大值和所述最小值来确定所述多对截断阈值。
[0144]
a12.根据条款a11所述的装置,其特征在于,所述量化后数据确定单元还包括:
[0145]
第一截断上限确定单元,用于基于所述最大值、预定的搜索总次数以及当前搜索次序,确定第一截断上限;
[0146]
第一组量化后数据确定单元,用于通过使用第一对截断阈值量化所述一组待量化数据,来确定第一组量化后的数据,所述第一对截断阈值包括所述第一截断上限以及与所述最小值相同的第一截断下限;以及
[0147]
第一差异确定单元,用于确定所述第一组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的第一差异。
[0148]
a13.根据条款a12所述的装置,其特征在于,所述量化后数据确定单元还包括:
[0149]
递增单元,用于递增所述当前搜索次序;
[0150]
第二截断上限确定单元,用于基于所述最大值、所述预定的搜索总次数以及所述当前搜索次序,确定第二截断上限;
[0151]
第二组量化后数据确定单元,用于通过使用第二对截断阈值量化所述一组待量化数据,来确定第二组量化后的数据,所述第二对截断阈值包括所述第二截断上限以及与所述最小值相同的第二截断下限;以及
[0152]
第二差异确定单元,用于确定所述第二组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的第二差异。
[0153]
a14.根据条款a10-a13中任一项所述的装置,其特征在于,所述截断阈值选择单元
包括:
[0154]
最小差异确定单元,用于确定所述多组量化后的数据中与所述一组待量化数据在绝对值的均值方面差异最小的一组量化后的数据;以及
[0155]
第二截断阈值选择单元,用于从所述多对截断阈值中选择与所述一组量化后的数据相对应的一对截断阈值。
[0156]
a15.根据条款a14所述的装置,其特征在于,还包括:
[0157]
截断搜索范围确定单元,用于确定与所选择的所述一对截断阈值相关联的截断搜索范围;
[0158]
新的多对截断阈值确定单元,用于确定处于所述截断搜索范围内的新的多对截断阈值;
[0159]
第二量化后数据确定单元,用于通过使用所述新的多对截断阈值分别量化所述一组待量化数据,来确定新的多组量化后的数据;以及
[0160]
第三截断阈值选择单元,用于基于所述新的多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述新的多对截断阈值中选择新的一对截断阈值。
[0161]
a16.根据条款a10所述的装置,其特征在于,所述量化后数据确定单元包括:
[0162]
最大值和最小值确定单元,用于确定所述一组待量化数据中的所有数据的最大值和最小值;
[0163]
三对截断阈值确定单元,用于基于所述最大值和所述最小值,确定三对截断阈值,所述三对截断阈值中的第一对包括所述最大值的一半和所述最小值,所述三对截断阈值中的第二对包括所述最大值的四分之三和所述最小值,并且所述三对截断阈值中的第三对包括所述最大值和所述最小值;以及
[0164]
三组量化后数据确定单元,用于通过使用三对截断阈值分别量化所述一组待量化数据,来确定三组量化后的数据。
[0165]
a17.根据条款a16所述的装置,其特征在于,所述截断阈值选择单元包括:
[0166]
迭代单元,用于迭代执行以下动作,直到满足停止条件:
[0167]
从所述三对截断阈值中选择一对截断阈值;
[0168]
确定与所选择的一对截断阈值相对应的差异是否小于预定阈值;
[0169]
响应于所述差异小于预定阈值,停止迭代执行动作;以及
[0170]
响应于所述差异大于预定阈值,基于所选择的一对截断阈值,重新确定三对截断阈值。
[0171]
a18.根据条款a10-a17中任一项所述的装置,其特征在于,所述一组待量化数据是神经网络模型中的一组浮点数,所述装置还包括:
[0172]
数据量化单元,用于使用所选择的一对截断阈值来量化所述一组待量化数据以获得量化后的数据,其中量化所述一组待量化数据包括:将所述一组待量化数据中大于所选择的截断上限的数值设为所述截断上限,并且将所述一组待量化数据中小于所选择的截断下限的数值设为所述截断下限;以及
[0173]
数据输入单元,用于将所获得的量化后的数据输入到所述神经网络模型以用于处理。
[0174]
a19.一种计算机可读存储介质,其特征在于其上存储有计算机程序,所述程序被执行时实现根据条款a1-a9中任一项所述的方法。
[0175]
a20.一种人工智能芯片,其特征在于,所述芯片包括根据条款a10-a18中任一项所述的用于处理数据的装置。
[0176]
a21.一种电子设备,其特征在于,所述电子设备包括根据条款a20所述的人工智能芯片。
[0177]
a22.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及根据条款a20所述的人工智能芯片;
[0178]
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置相连接;
[0179]
所述存储器件,用于存储数据;
[0180]
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;以及
[0181]
所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0182]
a23.根据条款a22所述的板卡,其特征在于,
[0183]
所述存储器件包括:多组存储单元,每组存储单元与所述人工智能芯片通过总线连接,所述存储单元为ddr sdram;
[0184]
所述芯片包括:ddr控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
[0185]
所述接口装置为标准pcie接口。
[0186]
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1