CN112446460A - 用于处理数据的方法、装置以及相关产品 - Google Patents
用于处理数据的方法、装置以及相关产品 Download PDFInfo
- Publication number
- CN112446460A CN112446460A CN201910804627.5A CN201910804627A CN112446460A CN 112446460 A CN112446460 A CN 112446460A CN 201910804627 A CN201910804627 A CN 201910804627A CN 112446460 A CN112446460 A CN 112446460A
- Authority
- CN
- China
- Prior art keywords
- data
- quantized
- point
- neural network
- location
- 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/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/045—Combinations of networks
-
- 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
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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/044—Recurrent networks, e.g. Hopfield 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Nonlinear Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
Abstract
本公开的实施例涉及一种用于处理数据的方法、装置以及相关产品。本公开的实施例涉及一种板卡,所述板卡包括:存储器件、接口装置、控制器件、以及人工智能芯片;其中所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。所述板卡可以用于执行人工智能运算。
Description
技术领域
本公开的实施例总体上计算机技术领域,并且更具体地涉及用于处理数据的方法、装置以及相关产品。
背景技术
随着人工智能技术的不断发展,其应用领域越来越广泛,在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。然而,随着人工智能算法的复杂度和准确度的提高,机器学习模型越来越大,需要处理的数据量也越来越大。在进行大量的数据处理时,需要较大的计算和时间开销,处理效率较低。
发明内容
鉴于此,本公开的实施例提供了一种用于处理数据的方法、装置以及相关产品。
在本公开的第一方面,提供了一种用于处理数据的方法。该方法包括:获取用于机器学习模型的一组待量化数据;通过使用多个点位置分别量化一组待量化数据,来确定多组量化后的数据,多个点位置中的每个点位置指定多组量化后的数据中的小数点的位置;以及基于多组量化后的数据中的每组量化后的数据与一组待量化数据之间的差异,从多个点位置中选择一个点位置,以用于量化一组待量化数据。
在本公开的第二方面,提供了一种用于处理数据的装置。该装置包括:获取单元,用于获取用于机器学习模型的一组待量化数据;确定单元,用于通过使用多个点位置分别量化一组待量化数据,来确定多组量化后的数据,多个点位置中的每个点位置指定多组量化后的数据中的小数点的位置;以及选择单元,用于基于多组量化后的数据中的每组量化后的数据与一组待量化数据之间的差异,从多个点位置中选择一个点位置,以用于量化一组待量化数据。
在本公开的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,程序被执行时实现根据本公开的各个实施例的方法。
在本公开的第四方面,提供了一种人工智能芯片其包括根据本公开的各个实施例的用于处理数据的装置。
在本公开的第五方面,提供了一种电子设备,其包括根据本公开的各个实施例的人工智能芯片。
在本公开的第六方面,提供了一种板卡,其包括:存储器件、接口装置和控制器件以及根据本公开的各个实施例的人工智能芯片。其中,人工智能芯片与存储器件、控制器件以及接口装置相连接;存储器件用于存储数据;接口装置用于实现人工智能芯片与外部设备之间的数据传输;以及控制器件用于对人工智能芯片的状态进行监控。
通过权利要求中的技术特征进行推导,能够达到对应背景技术中的技术问题的有益效果。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了根据本公开的实施例的用于处理数据的方法的处理系统的示意图;
图2示出了根据本公开的实施例的神经网络的示例架构的示意图;
图3示出了根据本公开的实施例的用于量化数据的过程的示意图;
图4示出了根据本公开的实施例的量化过程的示意图;
图5示出了根据本公开的实施例的用于处理数据的过程的示意图;
图6示出了根据本公开的实施例的用于处理数据的方法的流程图;
图7示出了根据本公开的实施例的用于基于不同点位置的不同量化方案的示意图;
图8示出了根据本公开的实施例的用于处理数据的方法的流程图;
图9示出了根据本公开的实施例的用于处理数据的装置的框图;以及
图10示出根据本公开实施例的板卡的结构框图。
具体实施例
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
一般来说,在对数据进行量化时,需要针对待量化数据进行缩放处理。例如,在已经确定了采用多少位二进制来表示量化后的数据的情况下,可以采用点位置来描述小数点的位置。此时,小数点可以将量化后的数据划分为整数部分和小数部分。因此,需要找到一个合适的点位置来对数据进行量化,使得数据量化的损失最小或较小。
传统地,已经提出了基于一组待量化数据的取值范围来确定点位置的技术方案。然而,由于待量化数据可能并不总是均匀地分布,因而导致基于取值范围来确定的点位置可能会导致并不总是能够准确地执行量化,而是对于一组量化数据中的某些待量化数据,可能会出现较大的精度损失。
为此,本公开的实施例提出了一种确定量化过程中使用的点位置的新方案。该方案能够实现比传统技术更小的量化精度损失。根据本公开的实施例,在获取用于机器学习模型的一组待量化数据之后,通过使用多个点位置分别量化一组待量化数据,来确定多组量化后的数据,多个点位置中的每个点位置指定多组量化后的数据中的小数点的位置。然后,基于多组量化后的数据中的每组量化后的数据与一组待量化数据之间的差异作为评价指派,从多个点位置中选择一个点位置,以用于量化一组待量化数据。通过这种方式,能够找到更合适的点位置。
以下参考图1至图10来说明本公开的基本原理和若干示例实现方式。应当理解,给出这些示例性实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开的实施例,而并非以任何方式限制本公开的范围。
图1示出了根据本公开的实施例的用于处理数据的方法的处理系统100的示意图。如图1所示,处理系统100包括多个处理器101-1、101-2、101-3(统称为处理器101)以及存储器102,处理器101用于执行指令序列,存储器102用于存储数据,可包括随机存储器(RAM,Random Access Memory)和寄存器堆。处理系统100中的多个处理器101既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。
应当理解,根据本公开实施例的各种方法可应用于包括多个处理器(多核)的处理系统100(例如人工智能芯片)的任意一个处理器中。该处理器可以是通用处理器,例如CPU(Central Processing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(GraphicsProcessing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。此外,处理系统100中的多个处理器的类型可以相同或不同,本公开对此不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图2示出了根据本公开的实施例的神经网络200的示例架构的示意图。神经网络(Neural Network,NN)是一种模仿生物神经网络的结构和功能的数学模型,神经网络由大量的神经元连接进行计算。因此,神经网络是一种计算模型,由大量的节点(或称“神经元”)相互的连接构成。每个节点代表一种特定的输出函数,称为激活函数(activationfunction)。每两个神经元之间的连接都代表一个通过该连接信号的加权值,称之为权值,这相当于神经网络的记忆。神经网络的输出则依神经元之间的连接方式以及权值和激活函数的不同而不同。在神经网络中,神经元是神经网络的基本单位。它获得一定数量的输入和一个偏置,当信号(值)到达时会乘以一个权值。连接是将一个神经元连接到另一层或同一层的另一个神经元,连接伴随着与之相关联的权值。另外,偏置是神经元的额外输入,它始终为1,并具有自己的连接权值。这确保即使所有的输入都为空(全部为0),神经元也会激活。
在应用中,如果不对神经网络中的神经元应用一个非线性函数,神经网络只是一个线性函数而已,那么它并不比单个神经元强大。如果让一个神经网络的输出结果在0到1之间,例如,在猫狗鉴别的例子中,可以把接近于0的输出视为猫,将接近于1的输出视为狗。为了完成这个目标,在神经网络中引入激活函数,比如:sigmoid激活函数。关于这个激活函数,只需要知道它的返回值是一个介于0到1的数字。因此,激活函数用于将非线性引入神经网络,它会将神经网络运算结果缩小到较小的范围内。实际上,激活函数怎样表达并不重要,重要的是通过一些权值将一个非线性函数参数化,可以通过改变这些权值来改变这个非线性函数。
如图2所示,为神经网络200的结构示意图。在图2所示的神经网络中,包括三层,分别为输入层210、隐含层220以及输出层230,图2所示的隐含层220为3层,当然,隐含层220也可以包括更多或更少的层。其中输入层210的神经元被称为输入神经元。输入层作为神经网络中的第一层,需要输入信号(值)并将它们传递到下一层。它不对输入信号(值)做任何操作,并且没有关联的权值和偏置。在图2所示的神经网络中,可以接收4个输入信号(值)。
隐含层220用于对输入数据应用不同变换的神经元(节点)。一个隐含层是垂直排列的神经元的集合(Representation)。在图2所示的神经网络中,有3个隐含层。第一隐含层有4个神经元(节点),第2层有6个神经元,第3层有3个神经元。最后,隐含层将值传递给输出层。图2所示的神经网络200将3个隐含层中每个神经元之间进行完全连接,3个隐含层中的每个神经元都与下一层的每一个神经元有连接。需要说明的是,并不是每个神经网络的隐含层是完全连接的。
输出层230的神经元被称为输出神经元。输出层接收来自最后一个隐含层的输出。通过输出层230,可以确定期望的值和期望的范围。在图2所示的神经网络中,输出层有3个神经元,即有3个输出信号(值)。
在实际应用中,神经网络的作用就是预先根据大量的样本数据(包含输入和输出)来进行训练,训练完成后,使用神经网络对于将来的真实环境的输入得到一个准确的输出。
在开始讨论神经网络的训练之前,需要定义损失函数。损失函数是一个指示神经网络在某个特定的任务上表现有多好的函数。最直接的办法就是,在训练过程中,对每一个样本数据,都沿着神经网络传递得到一个数字,然后将这个数字与想要得到的实际数字做差再求平方,这样计算出来的就是预测值与真实值之间的距离,而训练神经网络就是希望将这个距离或损失函数的取值减小。
在开始训练神经网络的时候,要对权值进行随机初始化。显然,初始化的神经网络并不会提供一个很好的结果。在训练的过程中,假设以一个很糟糕的神经网络开始,通过训练,可以得到一个具有高准确率的网络。同时,还希望在训练结束的时候,损失函数的函数值变得特别小。
神经网络的训练过程分为两个阶段,第一阶段是信号的正向处理,从输入层210经过隐含层220,最后到达输出层230。第二阶段是反向传播梯度,从输出层230到隐含层220,最后到输入层210,根据梯度依次调节神经网络中每层的权值和偏置。
在正向处理的过程中,将输入值输入到神经网络的输入层210,并从神经网络的输出层230得到称为预测值的输出。当输入值提供给神经网络的输入层210时,它没有进行任何操作。在隐含层中,第二个隐含层从第一个隐含层获取预测中间结果值并进行计算操作和激活操作,然后将得到的预测中间结果值传递给下一个隐含层。在后面的层中执行相同的操作,最后在神经网络的输出层230得到输出值。
正向处理后,得到一个被称为预测值的输出值。为了计算误差,使用损失函数来将预测值与实际输出值进行比较,获得对应的误差值。反向传播使用微分学的链式法则,在链式法则中,首先计算对应神经网络的最后一层权值的误差值的导数。称这些导数为梯度,然后使用这些梯度来计算神经网络中的倒数第二层的梯度。重复此过程,直到得到神经网络中每个权值的梯度。最后,从权值中减去对应的梯度,从而对权值进行一次更新,以达到减少误差值的目的。
此外,对于神经网络来说,微调是载入训练过的神经网络,微调过程与训练过程相同,分为两个阶段,第一阶段是信号的正向处理,第二阶段是反向传播梯度,对训练过的神经网络的权值进行更新。训练与微调的不同之处在于,训练是随机对初始化的神经网络进行处理,从头开始训练神经网络,而微调不是从头开始训练。
在神经网络进行训练或微调过程中,神经网络每经过一次信号的正向处理以及对应一次误差的反向传播过程,神经网络中的权值利用梯度进行一次更新,此时称为一次迭代(iteration)。为了获得精度符合预期的神经网络,在训练过程中需要很庞大的样本数据集。在这种情况下,一次性将样本数据集输入计算机是不可能的。因此,为了解决这个问题,需要把样本数据集分成多个块,每块传递给计算机,每块数据集正向处理后,对应更新一次神经网络的权值。当一个完整的样本数据集通过了神经网络一次正向处理并且对应返回了一次权值更新,这个过程称为一个周期(epoch)。实际中,在神经网络中传递一次完整的数据集是不够的,需要将完整的数据集在同一神经网络中传递多次,即需要多个周期,最终获得精度符合预期的神经网络。
在神经网络进行训练或微调过程中,通常希望速度越快越好,准确率越高越好。神经网络的数据通过高精度数据格式表示,比如浮点数,所以在训练或微调过程中,涉及的数据均为高精度数据格式,然后再将训练好的神经网络进行量化。以量化对象是整个神经网络的权值、且量化后的权值均为8位定点数为例,由于一个神经网络中常常有数百万连接,几乎所有空间都被神经元连接的权值所占据。况且这些权值都是不同的浮点数。每层权值都趋向于某个确定区间的正态分布,例如(-3.0,3.0)。将神经网络中每层的权值对应的最大值和最小值保存下来,将每个浮点数值采用8位定点数表示。其中,在最大值、最小值范围内空间线性划分256个量化间隔,每个量化间隔用一个8位定点数表示。例如:在(-3.0,3.0)区间内,字节0表示-3.0,字节255表示3.0。以此类推,字节128表示0。
对于高精度数据格式表示的数据,以浮点数为例,根据计算机体系结构可知,基于浮点数的运算表示法则、定点数的运算表示法则,对于同样长度的定点运算和浮点运算,浮点运算计算模式更为复杂,需要更多的逻辑器件来构成浮点运算器。这样从体积上来说,浮点运算器的体积比定点运算器的体积要大。并且,浮点运算器需要消耗更多的资源去处理,使得定点运算和浮点运算二者之间的功耗差距通常是数量级的。简言之,浮点运算器占用的芯片面积和功耗相比于定点运算器都要大很多倍。
图3示出了根据本公开的实施例的用于量化数据的过程300的示意图。参考图3,输入数据310为未量化的浮点数,例如32位的浮点数,如果直接将输入数据310输入到神经网络模型340进行处理,则会造成耗费较多的计算资源并且处理速度较慢。因此,在框320处,可以对输入数据进行量化,以获得量化后的数据330(例如8位整数)。如果将量化后的数据330输入到神经网络模型340中进行处理,由于8位整数计算较快,因而神经网络模型340将更快速地完成针对输入数据的处理,并生成对应的输出结果350。
从未量化的输入数据310到量化后的数据330的量化过程中,会在一定程度上造成一些精度损失,而精度损失将直接影响着输出结果350的准确性。因此,在针对输入数据330进行量化处理的过程中,需要保证量化过程的精度损失最小或者尽量小。
在下文中,将参见图4概要描述量化过程。图4示出了根据本公开的实施例的量化过程的示意图400。如图4示出了一种简单的量化过程,该量化过程可以将一组待量化数据中的每个待量化数据映射至一组量化后的数据。此时,一组待量化数据的范围为-|max|至|max|,并且生成的一组量化后的数据的范围为-(2n-1-1)至+(2n-1-1)。在此,n表示预定义的数据宽度410,即采用多少个位来表示量化后的数据。继续上文的示例,当采用8位来表示量化后的数据时,如果第一位表示符号位,则量化后数据的范围可以是-127至+127。
将会理解,为了更准确地表示量化后的数据,还可以采用图4所示的n位数据结构来表示量化后的数据。如图所示,可以采用n个位来表示量化后的数据,其中最左侧的位可以表示符号位430,该符号位430指示数据是正数还是负数。可以设置小数点420。在此的小数点420表示量化后数据中的整数部分432和小数部分434之间的边界。小数点左边为2的正次幂,小数点的右侧为2的负次幂。在本公开的上下文中,可以以点位置来表示小数点的位置。将会理解,在预先确定数据宽度410的情况下,通过调整点位置(以整数表示)来移动小数点420的位置,n位数据结构所表示的范围和精度将会有所变化。
例如,假设小数点420位于最右侧位之后,则此时符号位430包括1位,整数部分432包括n-1位,小数部分434包括0位。因而,n位数据结构所表示的范围将是-(2n-1-1)至+(2n-1-1),并且精度为整数。又例如,假设小数点420位于最右侧位之前,则此时符号位430包括1位,整数部分432包括n-2位,小数部分434包括1位。因而,n位数据结构所表示的范围将是-(2n-2-1)至+(2n-2-1),并且精度为十进制小数“0.5”。此时,需要确定点位置以便使得n位数据结构所表示的范围和精度与待量化数据的范围和精度更加匹配。
根据本公开的实施例,提供了一种用于处理数据的方法。首先参见图5概要描述本公开的实施例。图5示出了根据本公开的实施例的用于处理数据的过程的示意图500。根据本公开的实施例,可以基于多个点位置520来执行多个量化过程。例如,对于待量化数据510而言,可以分别基于多个点位置520中的每个点位置来执行相应的量化过程,以便获得多组量化后的数据530。继而,可以将多组量化后的数据530中的每组量化后的数据分别与待量化数据510执行比较以确定两者之间的差异。通过从获得的多个差异540中选择与最小差异相对应的点位置550,即可确定最为适合于待量化数据510的点位置550。利用本公开的实施例,可以以更高的精度表示量化后的数据。
在下文中,将参见图6详细描述有关数据处理的更多细节。图6示出了根据本公开的实施例的用于处理数据的方法600的流程图。如图6所示,在框610处,获取用于机器学习模型的一组待量化数据。例如,参考以上图3,在此获取的一组待量化数据可以是输入数据310,对输入数据310进行量化,从而加快神经网络模型340的处理速度。此外,也可以对神经网络模型自身的一些参数(诸如权值等)进行量化,通过对神经网络的参数进行量化,能够减小神经网络模型的大小。在一些实施例中,一组待量化数据中的每个待量化数据可以为32位的浮点数。备选地,待量化的数据也可以为其他位数的浮点数,或者其他的数据类型。
在框620处,可以通过使用多个点位置分别量化一组待量化数据,来确定多组量化后的数据。在此,多个点位置中的每个点位置指定多组量化后的数据中的小数点的位置。根据本公开的实施例,多个点位置中的每个点位置以整数来表示。可以首先确定一个点位置,继而可以针对该点位置执行扩展,以便获得更多的点位置。
根据本公开的实施例,可以基于与一组待量化数据相关联的范围,获取多个点位置中的一个点位置。在下文中,为方便描述将以整数S表示点位置,并且该整数S的数值表示整数部分432所包括的位的数量。例如,S=3表示整数部分432包括3位。假设原始的待量化的数据表示为Fx,以n位数据结构表示的待量化数据为Ix,则将会存在如下公式1。
Fx≈Ix×2s 公式1
在公式2中,round表示向下取整运算。因而,在此的点位置S可以表示为如下公式3:
在公式3中,p表示一组待量化数据中的绝对值的最大值。备选地和/或附加地,p可以表示以其他方式确定的范围。在公式3中,ceil表示向上取整预算。可以基于上文的公式3来确定多个点位置中的一个点位置(例如S0)。根据本公开的实施例,可以基于与获取的点位置S0相临近的整数,确定多个点位置中的其他点位置。在此的“相临近”的整数的是指与整数S0具有相临近数值的整数。根据本公开的实施例,可以针对表示点位置的整数执行递增操作,以确定其他点位置中的一个点位置。根据本公开的实施例,还可以针对表示点位置的整数执行递减操作,以确定其他点位置中的一个点位置。例如,假设S0的数值为3,通过递增可以获得相临近的另一整数3+1=4,通过递减可以获得相临近的另一整数3-1=2。
利用本公开的实施例,通过考虑点位置附近的多个点位置,可以比较基于多个点位置所实现的量化过程的量化效果,进而从多个点位置中选择最为适合于一组待量化数据的点位置。相对于仅基于公式3来确定一个点位置的技术方案,利用本公开的实施例可以提高量化过程的精度。
在下文中,将参见图7详细描述根据本公开的实施例的更多细节。图7示出了根据本公开的实施例的基于不同点位置的不同量化方案的示意图700。如图7所示,在第一量化方案中,小数点位于图7所示的第一位置710。该第一点位置712可以是按照上文描述的公式3来确定的。继而,通过针对第一点位置712来执行递减操作,可以确定第二点位置722,此时,小数点向左移动至第二位置720。
将会理解,尽管图7仅示意性示出了针对第一点位置712执行一个递减操作,以便确定一个点位置。根据本公开的实施例,还可以分别针对第一点位置712执行递增操作和/或递减操作,以便确定更多点位置。根据本公开的实施例,还可以执行更多数量的递增递减操作,以便确定更多点位置。例如,可以分别确定不同的点位置:S1=S0+1,S2=S0-1,S3=S0+2,S4=S0-2,等等。
在已经确定了多个点位置S0、S1、S2、S3、S4等的情况下,可以基于上文描述的公式2来针对一组待量化数据中的每个待量化数据Fx进行量化操作。具体地,在公式2中,Fx表示待量化数据,通过利用多个点位置S0、S1、S2、S3、S4等分别替换公式2中的点位置S,即可获得相应的量化后的数据等等。
将会理解,上文描述的Fx仅表示一组待量化数据中的一个待量化数据,在一组量化数据中还可以存在多个(例如,m个)待量化数据。此时,可以基于上文描述的过程来分别针对每个待量化数据进行处理,以便获得相应的量化后的数据。此时,基于每个点位置,可以获得相应的一组量化后的量化后的数据(m个)。
在框530处,可以基于多组量化后的数据中的每组量化后的数据与一组待量化数据之间的差异,从多个点位置中选择一个点位置,以用于量化一组待量化数据。本申请的发明人根据通过研究和大量实验发现,量化前后的数据的差异能够反映出量化前后的精度损失,其中差异越小则量化操作的精度损失越小。因此,本公开的实施例使用量化前后的数据的差异作为挑选最佳点位置的指标,能够实现比传统的方案更小的精度损失。
在公式4和公式5中,Diff表示针对一个待量化数据的差异,Fx表示待量化数据,表示量化后的数据,而||表示取绝对值的操作。例如,对于每个点位置而言,针对一组待量化数据中的每个待量化数据,可以分别确定量化前后的数据之间的差异的绝对值。对于一组m个待量化数据而言,可以获得m个差异。继而可以基于获得的m个差异来确定针对该点位置的差异。
例如,对于点位置S0,可以确定使用该点位置S0执行量化操作前后的数据之间的m个差异。继而,例如将该m个差异求和(备选地和/或附加地,可以采用其他运算),可以获得对于点位置S0的差异Diff0。类似地,还可以分别获得对于其他点位置S1、S2、S3、S4等的差异Diff1、Diff2、Diff3、Diff4等。
根据本公开的实施例,可以从多个差异中选择最小差异,并且可以从多个点位置中选择与最小差异相对应的一个点位置,以便用于执行量化操作。例如,假设基于点位置S1确定的差异Diff1为最小差异,则可以选择点位置S1来用于后续的量化处理。
根据本公开的实施例,为了简化起见还可以基于均值来确定针对多个点位置的多个差异。例如,可以计算一组待量化数据的均值Fmean(例如,可以将其称为原始均值)。在此的均值例如可以基于一组待量化数据中的每个待量化数据的平均值来确定。类似地,可以计算一组量化后的数据的均值等等(例如,可以将其称为量化均值)。进一步,可以基于量化均值和原始均值确定多个差异中的一个差异。具体地,可以基于如下公式6或公式7来确定针对多个点位置中的每个点位置的差异。
在公式6和公式7中,Fmean表示一组待量化数据的均值,Fmean表示一组量化后的数据的均值。具体地,可以基于上述公式6或公式7来获得对于点位置S0的差异Diff0。类似地,还可以分别获得对于其他点位置S1、S2、S3、S4等的差异Diff1、Diff2、Diff3、Diff4,等等。继而,可以从多个点位置S0、S1、S2、S3、S4中选择与最小差异相对应的一个点位置,以便用于执行量化操作。采用均值的方式,不必针对一组待量化数据中的每个待量化数据来确定量化前后的差异,因而可以提高数据处理效率进而加快确定点位置的速度。
上文已经描述了在处理期间可能涉及的多个公式,在下文中,将参见图8描述数据处理的具体流程。图8示出了根据本公开的实施例的用于处理数据的方法800的流程图。在框810处,可以基于与一组待量化数据相关联的范围,获取第一点位置(例如S0)。在此,可以基于公式3来获得点位置S0。在框820处,可以针对第一点位置执行递增/递减操作,以获得第二点位置(例如,S1=S0+1)。
在框830处,可以分别基于第一点位置S0和第二点位置S1来确定第一组量化后数据和第二组量化后数据。具体地,针对一组待量化数据中的每个待量化数据,可以基于公式2来获得相应的量化数据。在框840处,可以分别确定第一组量化后数据和第二组量化后数据与一组待量化数据之间的第一差异Diff0和第二差异Diff1。例如,可以基于公式4至公式7中的任一项来确定第一差异Diff0和第二差异Diff1。在框850处,可以比较第一差异Diff0和第二差异Diff1,如果第一差异小于第二差异,则方法800前进至框852处以便选择第一点位置。如果第一差异大于(或等于)第二差异,则方法800前进至框854处以便选择第二点位置。如虚线框860所示,选择的点位置可以用于针对待量化数据执行量化处理。
将会理解,在框860处可以针对最初的一组待量化数据执行量化处理。在后续待量化数据的分布与最初的一组待量化数据的分布类似的情况下,还可以针对后续的其他组待量化数据执行量化处理。在下文中,将结合神经网络模型的具体应用环境进行描述。根据本公开的实施例,一组待量化数据可以包括神经网络模型中的一组浮点数。可以使用选择的点位置来执行量化操作,以便将具有较高复杂度的浮点数转换至较低复杂度。根据本公开的实施例,使用选择的点位置来量化一组待量化数据以获得一组量化后的数据。具体地,基于选择的点位置,将一组待量化数据映射至一组量化后的数据,一组量化后的数据中的小数点的位置是由选择的点位置确定的。假设选择的点位置为4,则在量化过程中可以使用4位来表示量化后数据的整数部分。继而,可以将获得的一组量化后的数据输入到神经网络模型以用于处理。
根据本公开的实施例,还可以使用选择的点位置,针对后续的其他待量化数据进行量化。具体地,可以获取包括神经网络模型中的一组浮点数的另一组待量化数据。可以使用选择的点位置来量化另一组待量化数据以获得另一组量化后的数据,并且将获得的另一组量化后的数据输入到神经网络模型以用于处理。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图9示出了根据本公开的实施例的用于处理数据的装置900的框图。如图9所示,装置900包括获取单元910、确定单元920以及选择单元930。获取单元910用于获取用于机器学习模型的一组待量化数据。确定单元920用于通过使用多个点位置分别量化一组待量化数据,来确定多组量化后的数据,多个点位置中的每个点位置指定多组量化后的数据中的小数点的位置。选择单元930用于基于多组量化后的数据中的每组量化后的数据与一组待量化数据之间的差异,从多个点位置中选择一个点位置,以用于量化一组待量化数据。
此外,装置900中的获取单元910、确定单元920以及选择单元930还可以被配置为执行根据本公开的各个实施例的步骤和/或动作。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random AccessMemory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在一个实施例中,公开了一种计算机可读存储介质,其上存储有计算机程序,程序被执行时实现根据本公开的各个实施例的方法
在一个实施例中,还公开了一种人工智能芯片,其包括了上述数据用于处理数据的装置。
在一个实施例中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,人工智能芯片与存储器件、控制器件以及接口装置分别连接;存储器件,用于存储数据;接口装置,用于实现人工智能芯片与外部设备之间的数据传输;控制器件,用于对人工智能芯片的状态进行监控。
图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 DataRate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,存储装置可以包括4组存储单元。每一组存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,人工智能芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在芯片中设置控制DDR的控制器,用于对每个存储单元的数据传输与数据存储的控制。
接口装置与人工智能芯片电连接。接口装置用于实现人工智能芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口单元能够实现转接功能即可。另外,人工智能芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。
控制器件与人工智能芯片电连接。控制器件用于对人工智能芯片的状态进行监控。具体的,人工智能芯片与控制器件可以通过SPI接口电连接。控制器件可以包括单片机(Micro Controller Unit,MCU)。如人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过控制装置可以实现对人工智能芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
交通工具包括飞机、轮船和/或车辆;家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
A1.一种用于处理数据的方法,其特征在于,包括:获取用于机器学习模型的一组待量化数据;
通过使用多个点位置分别量化一组待量化数据,来确定多组量化后的数据,多个点位置中的每个点位置指定多组量化后的数据中的小数点的位置;以及
基于多组量化后的数据中的每组量化后的数据与一组待量化数据之间的差异,从多个点位置中选择一个点位置,以用于量化一组待量化数据。
A2.根据条款A1的方法,其特征在于,多个点位置中的每个点位置以整数来表示,方法进一步包括:
基于与一组待量化数据相关联的范围,获取多个点位置中的一个点位置;以及
基于与获取的点位置相临近的整数,确定多个点位置中的其他点位置。
A3.根据条款A2的方法,其特征在于,确定多个点位置中的其他点位置包括以下中的至少任一项:
递增表示点位置的整数以确定其他点位置中的一个点位置;以及
递减表示点位置的整数以确定其他点位置中的一个点位置。
A4.根据条款A1-A3中的任一项的方法,其特征在于,从多个点位置中选择一个点位置包括:
分别确定多组量化后的数据与一组待量化数据之间的多个差异;
从多个差异中选择最小差异;以及
从多个点位置中选择与最小差异相对应的一个点位置。
A5.根据条款A4的方法,其特征在于,分别确定多组量化后的数据与一组待量化数据之间的多个差异包括:针对多组量化后的数据中的一组给定量化后的数据,
分别确定一组给定量化后的数据与一组待量化数据之间的一组相对差异;以及
基于一组相对差异确定多个差异中的一个差异。
A6.根据条款A4的方法,其特征在于,分别确定多组量化后的数据与一组待量化数据之间的多个差异包括:针对多组量化后的数据中的一组给定量化后的数据,
分别确定一组给定量化后的数据的量化均值以及一组待量化数据的原始均值;以及
基于量化均值和原始均值确定多个差异中的一个差异。
A7.根据条款A1-A6中的任一项的方法,其特征在于,一组待量化数据包括神经网络模型中的一组浮点数,以及方法进一步包括:
使用选择的点位置来量化一组待量化数据以获得一组量化后的数据,其中量化一组待量化数据包括:基于选择的点位置,将一组待量化数据映射至一组量化后的数据,一组量化后的数据中的小数点的位置是由选择的点位置确定的;以及
将获得的一组量化后的数据输入到神经网络模型以用于处理。
A8.根据条款A1-A6中的任一项的方法,其特征在于,进一步包括:
获取包括神经网络模型中的一组浮点数的另一组待量化数据;
使用选择的点位置来量化另一组待量化数据以获得另一组量化后的数据,其中量化另一组待量化数据包括:基于选择的点位置,将另一组待量化数据映射至另一组量化后的数据,另一组量化后的数据中的小数点的位置是由选择的点位置确定的;以及
将获得的另一组量化后的数据输入到神经网络模型以用于处理。
A9.一种用于处理数据的装置,其特征在于,包括:
获取单元,用于获取用于机器学习模型的一组待量化数据;
确定单元,用于通过使用多个点位置分别量化一组待量化数据,来确定多组量化后的数据,多个点位置中的每个点位置指定多组量化后的数据中的小数点的位置;以及
选择单元,用于基于多组量化后的数据中的每组量化后的数据与一组待量化数据之间的差异,从多个点位置中选择一个点位置,以用于量化一组待量化数据。
A10.根据条款A9的装置,其特征在于,多个点位置中的每个点位置以整数来表示,装置进一步包括:
点位置获取单元,用于基于与一组待量化数据相关联的范围,获取多个点位置中的一个点位置;以及
点位置确定单元,用于基于与获取的点位置相临近的整数,确定多个点位置中的其他点位置。
A11.根据条款A10的装置,其特征在于,点位置确定单元包括:
递增单元,用于递增表示点位置的整数以确定其他点位置中的一个点位置;以及
递减单元,用于递减表示点位置的整数以确定其他点位置中的一个点位置。
A12.根据条款A9-A11中的任一项的装置,其特征在于,选择模块包括:
差异确定单元,用于分别确定多组量化后的数据与一组待量化数据之间的多个差异;
差异选择单元,用于从多个差异中选择最小差异;以及
点位置选择单元,用于从多个点位置中选择与最小差异相对应的一个点位置。
A13.根据条款A12的装置,其特征在于,差异确定单元包括:
相对差异确定单元,用于针对多组量化后的数据中的一组给定量化后的数据,
总体差异确定单元,用于分别确定一组给定量化后的数据与一组待量化数据之间的一组相对差异;以及
基于一组相对差异确定多个差异中的一个差异。
A14.根据条款A12的装置,其特征在于,差异确定单元包括:
均值确定单元,用于针对多组量化后的数据中的一组给定量化后的数据,分别确定一组给定量化后的数据的量化均值以及一组待量化数据的原始均值;以及
均值差异确定单元,用于基于量化均值和原始均值确定多个差异中的一个差异。
A15.根据条款A9-A14中的任一项的装置,其特征在于,一组待量化数据包括神经网络模型中的一组浮点数,以及装置进一步包括:
量化单元,用于使用选择的点位置来量化一组待量化数据以获得一组量化后的数据,其中量化一组待量化数据包括:基于选择的点位置,将一组待量化数据映射至一组量化后的数据,一组量化后的数据中的小数点的位置是由选择的点位置确定的;以及
输入单元,用于将获得的一组量化后的数据输入到神经网络模型以用于处理。
A16.根据条款A9-A14中的任一项的装置,其特征在于,进一步包括:
数据获取单元,用于获取包括神经网络模型中的一组浮点数的另一组待量化数据;
量化单元,用于使用选择的点位置来量化另一组待量化数据以获得另一组量化后的数据,其中量化另一组待量化数据包括:基于选择的点位置,将另一组待量化数据映射至另一组量化后的数据,另一组量化后的数据中的小数点的位置是由选择的点位置确定的;以及
输入单元,用于将获得的另一组量化后的数据输入到神经网络模型以用于处理。
A17.一种计算机可读存储介质,其特征在于其上存储有计算机程序,程序被执行时实现根据条款A1-A8中的任一项的方法。
A18.一种人工智能芯片,其特征在于,芯片包括根据条款A9-A16中的任一项的用于处理数据的装置。
A19.一种电子设备,其特征在于,电子设备包括根据条款A18的人工智能芯片。
A20.一种板卡,其特征在于,板卡包括:存储器件、接口装置和控制器件以及根据条款A18的人工智能芯片;
其中,人工智能芯片与存储器件、控制器件以及接口装置相连接;
存储器件,用于存储数据;
接口装置,用于实现人工智能芯片与外部设备之间的数据传输;以及
控制器件,用于对人工智能芯片的状态进行监控。
A21.根据条款A20的板卡,其特征在于,
存储器件包括:多组存储单元,每组存储单元与人工智能芯片通过总线连接,存储单元为DDR SDRAM;
芯片包括:DDR控制器,用于对每个存储单元的数据传输与数据存储的控制;
接口装置为标准PCIE接口。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上,本说明书内容不应理解为对本公开的限制。
Claims (21)
1.一种用于处理数据的方法,其特征在于,包括:
获取用于机器学习模型的一组待量化数据;
通过使用多个点位置分别量化所述一组待量化数据,来确定多组量化后的数据,所述多个点位置中的每个点位置指定所述多组量化后的数据中的小数点的位置;以及
基于所述多组量化后的数据中的每组量化后的数据与所述一组待量化数据之间的差异,从所述多个点位置中选择一个点位置,以用于量化所述一组待量化数据。
2.根据权利要求1所述的方法,其特征在于,所述多个点位置中的每个点位置以整数来表示,所述方法进一步包括:
基于与所述一组待量化数据相关联的范围,获取所述多个点位置中的一个点位置;以及
基于与获取的所述点位置相临近的整数,确定所述多个点位置中的其他点位置。
3.根据权利要求2所述的方法,其特征在于,确定所述多个点位置中的其他点位置包括以下中的至少任一项:
递增表示所述点位置的所述整数以确定所述其他点位置中的一个点位置;以及
递减表示所述点位置的所述整数以确定所述其他点位置中的一个点位置。
4.根据权利要求1-3中的任一项所述的方法,其特征在于,从所述多个点位置中选择一个点位置包括:
分别确定所述多组量化后的数据与所述一组待量化数据之间的多个差异;
从所述多个差异中选择最小差异;以及
从所述多个点位置中选择与所述最小差异相对应的一个点位置。
5.根据权利要求4所述的方法,其特征在于,分别确定所述多组量化后的数据与所述一组待量化数据之间的多个差异包括:针对所述多组量化后的数据中的一组给定量化后的数据,
分别确定所述一组给定量化后的数据与所述一组待量化数据之间的一组相对差异;以及
基于所述一组相对差异确定所述多个差异中的一个差异。
6.根据权利要求4所述的方法,其特征在于,分别确定所述多组量化后的数据与所述一组待量化数据之间的多个差异包括:针对所述多组量化后的数据中的一组给定量化后的数据,
分别确定所述一组给定量化后的数据的量化均值以及所述一组待量化数据的原始均值;以及
基于所述量化均值和所述原始均值确定所述多个差异中的一个差异。
7.根据权利要求1-6中的任一项所述的方法,其特征在于,所述一组待量化数据包括神经网络模型中的一组浮点数,以及所述方法进一步包括:
使用选择的所述点位置来量化所述一组待量化数据以获得一组量化后的数据,其中量化所述一组待量化数据包括:基于选择的所述点位置,将所述一组待量化数据映射至所述一组量化后的数据,所述一组量化后的数据中的小数点的位置是由选择的所述点位置确定的;以及
将获得的所述一组量化后的数据输入到所述神经网络模型以用于处理。
8.根据权利要求1-6中的任一项所述的方法,其特征在于,进一步包括:
获取包括神经网络模型中的一组浮点数的另一组待量化数据;
使用选择的所述点位置来量化所述另一组待量化数据以获得另一组量化后的数据,其中量化所述另一组待量化数据包括:基于选择的所述点位置,将所述另一组待量化数据映射至所述另一组量化后的数据,所述另一组量化后的数据中的小数点的位置是由选择的所述点位置确定的;以及
将获得的所述另一组量化后的数据输入到所述神经网络模型以用于处理。
9.一种用于处理数据的装置,其特征在于,包括:
获取单元,用于获取用于机器学习模型的一组待量化数据;
确定单元,用于通过使用多个点位置分别量化所述一组待量化数据,来确定多组量化后的数据,所述多个点位置中的每个点位置指定所述多组量化后的数据中的小数点的位置;以及
选择单元,用于基于所述多组量化后的数据中的每组量化后的数据与所述一组待量化数据之间的差异,从所述多个点位置中选择一个点位置,以用于量化所述一组待量化数据。
10.根据权利要求9所述的装置,其特征在于,所述多个点位置中的每个点位置以整数来表示,所述装置进一步包括:
点位置获取单元,用于基于与所述一组待量化数据相关联的范围,获取所述多个点位置中的一个点位置;以及
点位置确定单元,用于基于与获取的所述点位置相临近的整数,确定所述多个点位置中的其他点位置。
11.根据权利要求10所述的装置,其特征在于,所述点位置确定单元包括:
递增单元,用于递增表示所述点位置的所述整数以确定所述其他点位置中的一个点位置;以及
递减单元,用于递减表示所述点位置的所述整数以确定所述其他点位置中的一个点位置。
12.根据权利要求9-11中的任一项所述的装置,其特征在于,所述选择模块包括:
差异确定单元,用于分别确定所述多组量化后的数据与所述一组待量化数据之间的多个差异;
差异选择单元,用于从所述多个差异中选择最小差异;以及
点位置选择单元,用于从所述多个点位置中选择与所述最小差异相对应的一个点位置。
13.根据权利要求12所述的装置,其特征在于,所述差异确定单元包括:
相对差异确定单元,用于针对所述多组量化后的数据中的一组给定量化后的数据,
总体差异确定单元,用于分别确定所述一组给定量化后的数据与所述一组待量化数据之间的一组相对差异;以及
基于所述一组相对差异确定所述多个差异中的一个差异。
14.根据权利要求12所述的装置,其特征在于,所述差异确定单元包括:
均值确定单元,用于针对所述多组量化后的数据中的一组给定量化后的数据,分别确定所述一组给定量化后的数据的量化均值以及所述一组待量化数据的原始均值;以及
均值差异确定单元,用于基于所述量化均值和所述原始均值确定所述多个差异中的一个差异。
15.根据权利要求9-14中的任一项所述的装置,其特征在于,所述一组待量化数据包括神经网络模型中的一组浮点数,以及所述装置进一步包括:
量化单元,用于使用选择的所述点位置来量化所述一组待量化数据以获得一组量化后的数据,其中量化所述一组待量化数据包括:基于选择的所述点位置,将所述一组待量化数据映射至所述一组量化后的数据,所述一组量化后的数据中的小数点的位置是由选择的所述点位置确定的;以及
输入单元,用于将获得的所述一组量化后的数据输入到所述神经网络模型以用于处理。
16.根据权利要求9-14中的任一项所述的装置,其特征在于,进一步包括:
数据获取单元,用于获取包括神经网络模型中的一组浮点数的另一组待量化数据;
量化单元,用于使用选择的所述点位置来量化所述另一组待量化数据以获得另一组量化后的数据,其中量化所述另一组待量化数据包括:基于选择的所述点位置,将所述另一组待量化数据映射至所述另一组量化后的数据,所述另一组量化后的数据中的小数点的位置是由选择的所述点位置确定的;以及
输入单元,用于将获得的所述另一组量化后的数据输入到所述神经网络模型以用于处理。
17.一种计算机可读存储介质,其特征在于其上存储有计算机程序,所述程序被执行时实现根据权利要求1-8中的任一项所述的方法。
18.一种人工智能芯片,其特征在于,所述芯片包括根据权利要求9-16中的任一项所述的用于处理数据的装置。
19.一种电子设备,其特征在于,所述电子设备包括根据权利要求18所述的人工智能芯片。
20.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及根据权利要求18所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置相连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;以及
所述控制器件,用于对所述人工智能芯片的状态进行监控。
21.根据权利要求20所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每组存储单元与所述人工智能芯片通过总线连接,所述存储单元为DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为标准PCIE接口。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910804627.5A CN112446460A (zh) | 2019-08-28 | 2019-08-28 | 用于处理数据的方法、装置以及相关产品 |
JP2020564843A JP7034336B2 (ja) | 2019-08-28 | 2020-05-21 | データを処理するための方法、装置、および関連製品 |
EP20858900.2A EP4024283A4 (en) | 2019-08-28 | 2020-05-21 | METHOD AND DEVICE FOR DATA PROCESSING AND CORRESPONDING PRODUCT |
PCT/CN2020/091578 WO2021036362A1 (zh) | 2019-08-28 | 2020-05-21 | 用于处理数据的方法、装置以及相关产品 |
US17/554,521 US20220108150A1 (en) | 2019-08-28 | 2021-12-17 | Method and apparatus for processing data, and related products |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910804627.5A CN112446460A (zh) | 2019-08-28 | 2019-08-28 | 用于处理数据的方法、装置以及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112446460A true CN112446460A (zh) | 2021-03-05 |
Family
ID=74683565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910804627.5A Pending CN112446460A (zh) | 2019-08-28 | 2019-08-28 | 用于处理数据的方法、装置以及相关产品 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220108150A1 (zh) |
EP (1) | EP4024283A4 (zh) |
JP (1) | JP7034336B2 (zh) |
CN (1) | CN112446460A (zh) |
WO (1) | WO2021036362A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210374510A1 (en) * | 2019-08-23 | 2021-12-02 | Anhui Cambricon Information Technology Co., Ltd. | Data processing method, device, computer equipment and storage medium |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2580171B (en) * | 2018-12-21 | 2021-02-17 | Imagination Tech Ltd | Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation |
CN112686364B (zh) * | 2019-10-18 | 2023-12-08 | 华为技术有限公司 | 一种神经网络计算芯片及计算方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0784975A (ja) * | 1993-09-10 | 1995-03-31 | Hitachi Ltd | 情報処理装置および学習演算処理方法 |
DE10316381A1 (de) * | 2003-04-10 | 2004-10-28 | Bayer Technology Services Gmbh | Verfahren zum Training von neuronalen Netzen |
JP4861087B2 (ja) * | 2006-07-31 | 2012-01-25 | 富士通株式会社 | 演算プログラム変換装置、演算プログラム変換プログラム、演算プログラム変換方法 |
JP2012203566A (ja) | 2011-03-24 | 2012-10-22 | Seiko Epson Corp | 状態推定装置、電子機器及びプログラム |
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN107657316B (zh) | 2016-08-12 | 2020-04-07 | 北京深鉴智能科技有限公司 | 通用处理器与神经网络处理器的协同系统设计 |
CN106485316B (zh) * | 2016-10-31 | 2019-04-02 | 北京百度网讯科技有限公司 | 神经网络模型压缩方法以及装置 |
CN106502626A (zh) | 2016-11-03 | 2017-03-15 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
KR20190034985A (ko) * | 2017-09-25 | 2019-04-03 | 삼성전자주식회사 | 인공 신경망의 양자화 방법 및 장치 |
WO2019075604A1 (zh) | 2017-10-16 | 2019-04-25 | 深圳市大疆创新科技有限公司 | 数据定点化方法和装置 |
KR20190044878A (ko) * | 2017-10-23 | 2019-05-02 | 삼성전자주식회사 | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 |
CN109993296B (zh) | 2019-04-01 | 2020-12-29 | 安徽寒武纪信息科技有限公司 | 量化实现方法及相关产品 |
CN110059733A (zh) * | 2019-04-01 | 2019-07-26 | 苏州科达科技股份有限公司 | 卷积神经网络的优化及快速目标检测方法、装置 |
-
2019
- 2019-08-28 CN CN201910804627.5A patent/CN112446460A/zh active Pending
-
2020
- 2020-05-21 WO PCT/CN2020/091578 patent/WO2021036362A1/zh unknown
- 2020-05-21 JP JP2020564843A patent/JP7034336B2/ja active Active
- 2020-05-21 EP EP20858900.2A patent/EP4024283A4/en active Pending
-
2021
- 2021-12-17 US US17/554,521 patent/US20220108150A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210374510A1 (en) * | 2019-08-23 | 2021-12-02 | Anhui Cambricon Information Technology Co., Ltd. | Data processing method, device, computer equipment and storage medium |
Also Published As
Publication number | Publication date |
---|---|
EP4024283A1 (en) | 2022-07-06 |
WO2021036362A1 (zh) | 2021-03-04 |
JP7034336B2 (ja) | 2022-03-11 |
JP2022502724A (ja) | 2022-01-11 |
EP4024283A4 (en) | 2023-09-13 |
US20220108150A1 (en) | 2022-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021036904A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036908A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036905A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036890A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085186A (zh) | 一种神经网络的量化参数确定方法及相关产品 | |
CN111027691B (zh) | 用于神经网络运算、训练的装置、设备及板卡 | |
WO2021036362A1 (zh) | 用于处理数据的方法、装置以及相关产品 | |
CN112101541B (zh) | 对高位宽值数据进行拆分的装置、方法、芯片及板卡 | |
EP4024281A1 (en) | Method and apparatus for processing data, and related product | |
CN111033462A (zh) | 在基于处理器的系统中使用矩阵处理器提供高效浮点运算 | |
CN114003198A (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
CN111144564A (zh) | 对神经网络执行训练的设备及其集成电路板卡 | |
CN112085187A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085176A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112784951A (zh) | Winograd卷积运算方法及相关产品 | |
US20220121908A1 (en) | Method and apparatus for processing data, and related product | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
JP7233636B2 (ja) | データ量子化処理方法、装置、電子機器および記憶媒体 | |
CN113112009B (zh) | 用于神经网络数据量化的方法、装置和计算机可读存储介质 | |
CN111144559A (zh) | 用于训练神经网络的设备、方法和集成电路板卡 | |
CN112085151A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112446496A (zh) | 用于处理数据的方法、装置以及相关产品 | |
CN111047024A (zh) | 一种计算装置及相关产品 | |
CN114118341A (zh) | 量化方法、计算装置和计算机可读存储介质 | |
CN112784207A (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 |