CN114118341A - 量化方法、计算装置和计算机可读存储介质 - Google Patents

量化方法、计算装置和计算机可读存储介质 Download PDF

Info

Publication number
CN114118341A
CN114118341A CN202010872793.1A CN202010872793A CN114118341A CN 114118341 A CN114118341 A CN 114118341A CN 202010872793 A CN202010872793 A CN 202010872793A CN 114118341 A CN114118341 A CN 114118341A
Authority
CN
China
Prior art keywords
neural network
time
recurrent neural
data
quantization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010872793.1A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui Cambricon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN202010872793.1A priority Critical patent/CN114118341A/zh
Publication of CN114118341A publication Critical patent/CN114118341A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

本披露公开了一种神经网络的量化方法、计算装置和计算机可读存储介质。该计算装置可以包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案可以大大减小计算量化参数所需的运算时间,同时保持所需的网络准确率。

Description

量化方法、计算装置和计算机可读存储介质
技术领域
本披露一般地涉及人工智能领域。更具体地,本披露涉及一种神经网络的量化方法、计算装置、神经网络芯片、板卡和计算机可读存储介质。
背景技术
深度学习已被证明在图像分类、目标检测、自然语言处理、人工智能等任务上有着非常良好的效果。随着深度学习的研究,出现了越来越深、越来越大的网络。这些大且深的网络拥有更好的准确度或效果。但是,效果越好的网络,需要的计算量和消耗的内存大小也就越大。针对这一现象,降低神经网络的计算和存储开销是一件非常必要的事情。
业界通常使用量化的方法来解决这一问题。所谓量化,就是用更低精度(例如,8位定点数(INT8))的数字来代替高精度(例如,32位浮点数(FP32))的数字进行运算。通过一定的量化方法,可以在保持原有效果不变的情况下,大大降低设备的功耗和计算时间。
在不同种类的神经网络例如卷积神经网络、全连接神经网络中,往往有不同的量化方法。在传统的方法中,针对循环神经网络的在线量化,会针对每一个时间节点上每一个循环神经网络层的数据都进行量化参数的计算。这种方式对于循环神经网络,会大大增加量化的计算量,导致功耗的升高和计算时间的延长。而针对循环神经网络的离线量化,针对每一层循环神经网络,不管哪个时间节点都使用同一套量化参数对其输入进行量化,导致量化后的网络准确率下降。
发明内容
为了至少解决如上所提到的一个或多个技术问题,本披露在多个方面中提出了量化神经网络的方案,该方案通过在循环神经网络的一个或多个时间节点上的所有循环神经网络层上共享相同的量化参数,可以大大减小计算量化参数所需的运算时间,同时保持一定的准确率。本披露提供的神经网络量化方案可以应用于各种领域,诸如图像处理、视频处理、语音/音频处理、文本处理等等,这些处理例如可以包括但不限于目标识别、检测和分类。
在第一方面中,本披露提供了一种计算装置,包括:存储器,其上存储有程序指令以及循环神经网络的时间节点及其关联的量化参数,其中一个或多个连续的时间节点与相同的量化参数相关联;以及处理器,耦合至所述存储器,并且配置成加载所述程序指令以执行:确定所述循环神经网络的待量化数据当前所处的时间节点;从所述存储器中获取与所述时间节点关联的量化参数;以及利用所述量化参数对所述待量化数据执行量化。
在第二方面中,本披露提供了一种神经网络芯片,其特征在于,所述神经网络芯片包括本披露第一方面任一实施例所述的计算装置。
在第三方面中,本披露提供了一种板卡,其特征在于,所述板卡包括本披露第二方面任一实施例所述的神经网络芯片。
在第四方面中,本披露提供了一种由处理器执行的对循环神经网络的数据进行量化的方法,所述方法包括:确定所述循环神经网络的待量化数据当前所处的时间节点;获取预先确定的、与所述时间节点关联的量化参数;以及利用所述量化参数对所述待量化数据执行量化;其中所述循环神经网络的一个或多个连续的时间节点共享相同的量化参数。
在第五方面中,本披露提供了一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行本披露第四方面任一实施例所述的方法。
通过如上所提供的量化神经网络的方法、计算装置、神经网络芯片、板卡和计算机可读存储介质,本披露的方案通过将循环神经网络分时展开,在其一个或多个连续时间节点上的所有循环神经网络层上共享相同的量化参数,可以大大减小计算量化参数所需的运算时间,同时保持一定的网络准确率。本披露实施例的方案相比于现有的在线量化方法,在保持量化精度的前提下,大大减少了计算量化参数需要的运算时间;而相比于现有的离线量化方法,在没有增加计算量化参数运算时间的同时,增加了量化精度。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出可以应用本披露实施例的一种神经网络的示例性结构图;
图2示出根据本披露实施例的量化方法的示例性概念;
图3示出根据本披露实施例的对循环神经网络进行量化的方法300的示例性流程图;
图4示出可以实施本披露实施例的量化神经网络方案的计算装置400的硬件配置框图;
图5示出根据本披露实施例的一种组合处理装置500的结构图;以及
图6示出根据本披露实施例的一种板卡600的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能使用的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
首先给出本披露中可能用到的技术术语的解释。
浮点数: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)
数据位宽:数据用多少个比特位来表示。
量化:将以往用32bit或者64bit表达的高精度数转换成占用较少内存空间的、一般为16bit或者8bit的定点数的过程,高精度数转换为定点数的过程就会在精度上引起一定的损失。
训练集(train set):也称为训练数据集,通常用来训练模型或确定模型参数(例如,神经网络的权值等)的样本集。
验证集(validation set):也称为验证数据集,通常用来确定模型结构或者控制模型复杂程度的样本集。
测试集(test set):也称为测试数据集,通常用来测试已经训练好的模型的性能,例如推广程度。
以下简要介绍本披露实施例可以应用的神经网络环境。
图1示出了可以应用本披露实施例的一种神经网络的示例性结构图。
如图1所示,神经网络100是一种循环神经网络,其可以包括三层,分别为输入层、隐藏层和输出层。隐藏层又可以包括多层,图1中示出了L个隐藏层。
循环神经网络是一种随着时间的推移而重复发生的结构,其具有重复模块链的形式。图1左侧示出了循环神经网络的重复模块,其中X为输入,O为输出,H(1)、H(2)、…、H(L)分别为各个隐藏层的状态。从图1可以看出,重复模块具有回路或循环体,该回路允许信息从网络的当前时刻传递到下一时刻。换言之,各隐藏层的每一时刻的状态都跟当前时刻的输入和上一时刻的状态有关。将该重复模块在时序上展开,得到图1右侧所示的网络结构。
循环神经网络在每一层中,会循环地计算一串输入,每一次循环称为一个时间节点。图1右侧示例性示出了T个时间节点,也即T次循环。图1示出了T个时间节点上的输入X1、X2、…、XT,以及相应的T个时间节点上的输出O1、O2、…、OT。然而应当注意,并不是每个时间节点都需要有输出。图1右侧也将各个隐藏层的状态,例如第一隐藏层在T个时间节点上的状态分别为H1 (1)、H2 (1)、…、HT (1),第二隐藏层在T个时间节点上的状态分别为H1 (2)、H2 (2)、…、HT (2),第L隐藏层在T个时间节点上的状态分别为H1 (L)、H2 (L)、…、HT (L)。从展开结构可以明显看出,各隐藏层的每一时刻的状态都跟当前时刻的输入和上一时刻的状态有关。在循环神经网络中输入数据是存在时间相关性的,也就是说,前一个时间节点的数据会对后一时间节点的数据产生影响。由于循环神经网络这种重复模块链的形式,因此循环神经网络中的参数(包括但不限于,权值、偏置、激活函数等)在不同时刻可以共享。
循环神经网络的种类繁多,包括但不限于长短时记忆网络(LSTM)、双向循环神经网络、深度循环神经网络、门控循环单元(GRU)网络等,这些循环神经网络在语音识别、图片描述、自然语言处理等许多领域中得到成功应用。
上面结合图1描述了可以实施本披露实施例的量化方法的神经网络的示例结构图。可以理解的是,上文关于神经网络的描述仅仅是示例性的,并且神经网络的结构不受图中所示结构的限制,本领域技术人员根据需要可以对图中所示结构做出修改,例如在隐藏层中增加一个或多个新的层,改变循环体中的操作等。
量化,是将输入值集合映射到较小值集合的过程。例如,输入值可被取整到给定的精度单位。具体地,在一个示例中,浮点数向定点数的转换可以是量化的过程。根据计算机体系结构可知,基于浮点数的运算表示法则、定点数的运算表示法则,对于同样长度的浮点运算和定点运算来说,浮点运算计算模式更为复杂,需要更多的逻辑器件来构成浮点运算器。这样从体积上来说,浮点运算器的体积比定点运算器的体积要大。进一步,浮点运算器需要消耗更多的资源去处理,使得定点运算和浮点运算二者之间的功耗差距通常是数量级的,由此造成显著的计算成本差异。然而,根据实验发现,定点运算比浮点运算执行速度快,而且精度损失并不大,因此在人工智能芯片中采用定点运算处理大量的神经网络运算(例如卷积和全连接运算)是可行的方案。例如,可以将涉及前向卷积、前向全连接、反向卷积和反向全连接算子的输入、权值、偏置、激活函数和梯度的浮点型数据均进行量化后进行定点数运算,并且在算子运算完成后将低精度的数据转换成高精度数据。
如前面所提到的,现有的针对循环神经网络的在线量化,由于针对每一个时间节点上每一个循环神经网络层的数据都进行量化参数的计算,每个时间点上每层的量化参数均不同,因此会大大增加量化的计算量,导致功耗的升高和计算时间的延长。而针对循环神经网络的离线量化,针对每一层循环神经网络或整个循环神经网络,不管哪个时间节点都使用同一套量化参数对其输入进行量化,导致量化后的网络准确率下降。
发明人在实际的工程中发现,循环神经网络循环到后期的时间节点时,其参数特征和最开始的时间节点的参数特征存在比较明显的不同。因此,为了保持这种不同时间节点的功能差异,从而保持网络准确率,同时减少计算量,本披露实施例提供了一种循环神经网络的量化方法。根据本披露的实施例,通过将循环神经网络分时展开,在一个或多个连续时间节点上,所有的循环神经网络层共享相同的量化参数,可以大大减小计算量化参数所需的运算时间,同时保持网络准确率。
图2示出了根据本披露实施例的量化方法的示例性概念。
如图2所示,示例性的循环神经网络包括T个时间节点,其中T>1。这T个时间节点可以划分成N个时段Pi,i=1…N,其中1<N<=T,每个时段包括一个或多个连续的时间节点。每个时段Pi内的所有时间节点上的所有循环神经网络层共享相同的量化参数Qi,i=1…N。不同时段可以对应不同的量化参数。
每个时段内可以包含数目不等的时间节点。图2示例性示出了第一个时段P1包括j个时间节点,第N个时段PN包括k个时间节点。可以采取多种方式来划分时间节点。例如,取决于所需的网络准确率要求和/或循环神经网络中各个时间节点之间的参数特征差异性/相似性,可以存在多种不同的划分方案。
在一些实施例中,N=T,也即一个时间节点构成一个时段。在这些实施例中,同样的时间节点采用同样的量化参数,不同的时间节点采用不同的量化参数。也即,所有循环神经网络层的第一个时刻使用的是相同的量化参数,第二个时刻采用的是另一个相同的量化参数。
在另一些实施例中,N=T/M,也即将T个时间节点中每M个连续的时间节点构成一个时段。在一个示例中,T=100,M=5,此时N=20,也即该循环神经网络的时间节点分成20个时段,每个时段包括5个连续的时间节点。
在又一些实施例中,N个时段内的时间节点数量可以是不均匀分布。例如,对于T=100,N=4,第一个时段P1可以包括20个时间节点,第二个时段P2可以包括30个时间节点,第三个时段P3可以包括30个时间节点,第4个时段P4包括20个时间节点。
每个时间节点/时段及其关联的量化参数可以通过各种数据结构关联地存储在存储器上,以供量化时使用。这些数据结构可以包括但不限于查找表。通过访问这些数据结构,可以唯一地确定与循环神经网络的某个时间节点关联的量化参数。
图3示出了根据本披露实施例的对循环神经网络进行量化的方法300的示例性流程图。方法300例如可以由处理器来执行以在利用神经网络进行推理运算时,对涉及的数据执行量化操作。处理器可以是支持神经网络处理的任何处理器,包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、人工智能处理器芯片(IPU)等通用和/或专用处理器中的一种或多种类型的处理器。根据任务场景,循环神经网络的输入数据可以包括但不限于图像、视频、音频、文本等,以实现各种任务,包括但不限于对这些输入数据的分类、识别、检测等。
如图3所示,在步骤S310中,确定当前处理的待量化数据在循环神经网络中所处的时间节点。
循环神经网络在每一层中,会循环地计算一串输入,每次循环就是一个时间节点。循环神经网络循环到后期的时间节点时,其参数特征和最开始的时间节点的参数特征存在比较明显的不同。因此,为了保持这种不同时间节点的功能差异,从而保持网络准确率,可以对不同的时间节点应用不同的量化参数。因而在对数据进行量化时,需要先确定该数据所处的时间节点,以便获取对应的量化参数。
接着,在步骤S320中,获取预先确定的、与该时间节点关联的量化参数。
如前面参考图2所描述的,可以在循环神经网络的一个或多个连续时间节点(其构成一个时段)上的所有循环神经网络层上共享相同的量化参数。每个时间节点/时段及其关联的量化参数可以通过各种数据结构关联地存储在存储器上,以供量化时使用。
因此,在一些实施例中,获取与该时间节点关联的量化参数可以包括访问存储器以取出与该时间节点关联的量化参数。
进一步地,在一些实施例中,可以在利用循环神经网络进行推理运算时,从存储器一次性读取所有量化参数,例如在第一时间节点进行读取所有量化参数,随后在不同的时间节点/时段上应用对应的量化参数。
在另一些实施例中,可以通过多次访问存储器来取出关联的量化参数。例如,可以在每个时间节点或每个时段内的首个时间节点处,执行量化处理前访问存储器以获取与该时间节点或时段关联的量化参数。
最后,在步骤S330中,利用所获取的量化参数对当前处理的待量化数据执行量化。本领域技术人员可以理解,可以采用与量化参数对应的量化方法来执行量化,本披露实施例在此方面没有限制。
存储器中预先存储的时间节点及其关联的量化参数可以通过各种方式预先确定。在一些实施例中,可以在使用验证数据集对循环神经网络进行优化时,生成该循环神经网络的所有时间节点上所有循环神经网络层的量化参数。继而,循环神经网络中每个时段内共享的量化参数可以基于此预先生成的、对应时段内所有时间节点上的所有循环神经网络层的量化参数的统计值而确定。统计值可以包括但不限于平均值、众数和最大值。
在一个示例中,假设某一循环神经网络包括L个网络层,T个时间节点,在使用验证数据集对该循环神经网络进行优化时,生成了该循环神经网络的所有时间节点上所有循环神经网络层的量化参数Qtl,t=1…T,l=1…L。进一步假设该循环神经网络的这T个时间节点划分成N个时段Pi,i=1…N,其中1<N<=T,每个时段Pi包括Ki个连续的时间节点,Ki=1…(T-1),
Figure BDA0002651664990000091
此时,可以按如下方式计算每个时段Pi所共享的量化参数Qi:
Qi=F(Qpq),
其中
Figure BDA0002651664990000093
Figure BDA0002651664990000092
也即,在时段Pi内的每个时间节点上,所有的循环神经网络层使用上述计算的量化参数Qi来执行量化操作。取决于所应用的量化方法,量化参数可以存在各种形式。大体上,量化参数可以包括但不限于:最大动态编码范围、量化步长、数据位宽、有符号或无符号的指示符值、点位置参数、缩放系数、偏移量等等。
在一个实施例中,量化参数是点位置参数s。这种情况下,可以利用如下的公式(1)对待量化数据进行量化,得到量化数据Ix
Figure BDA0002651664990000101
其中,s为点位置参数,Ix为数据x量化后的n位二进制表示值,Fx为数据x量化前的浮点值,round为进行四舍五入的取整运算。需要说明的是,此处不仅仅局限于round这一种取整运算,也可以采用其他的取整运算方法,例如:采用向上取整、向下取整、向零取整等取整运算,替换公式(1)中的round取整运算。
在另一实施例中,量化参数是第一缩放系数f1。这种情况下,可以利用如下的公式(2)对待量化数据进行量化,得到量化数据Ix
Figure BDA0002651664990000102
其中,f1为第一缩放系数,Ix为数据x量化后的n位二进制表示值,Fx为数据x量化前的浮点值,round为进行四舍五入的取整运算。同样地,此处不仅仅局限于round这一种取整运算,也可以采用其他的取整运算方法。
在又一实施例中,量化参数是点位置参数s和第二缩放系数f2。这种情况下,可以利用如下的公式(3)对待量化数据进行量化,得到量化数据Ix
Figure BDA0002651664990000103
其中,s为点位置参数,f2为第二缩放系数;Ix为数据x量化后的n位二进制表示值,Fx为数据x量化前的浮点值,round为进行四舍五入的取整运算。同样地,此处不仅仅局限于round这一种取整运算,也可以采用其他的取整运算方法。
在再一实施例中,量化参数包括点位置参数和偏移量。这种情况下,可以利用如下的公式(4)对待量化数据进行量化,得到量化数据Ix
Figure BDA0002651664990000104
其中,s为点位置参数,O为偏移量,Ix为数据x量化后的n位二进制表示值,Fx为数据x量化前的浮点值,round为进行四舍五入的取整运算。同样地,此处不仅仅局限于round这一种取整运算,也可以采用其他的取整运算方法。
以上参考图3的示例性方法流程描述了本披露实施例的可能实现方式。从上述描述可以看出,通过在循环神经网络的一个或多个连续时间节点上的所有循环神经网络层上共享相同的量化参数,相比于现有的在线量化方法,可以大大减小计算量化参数所需的运算时间,而相比于现有的离线量化方法,在没有增加计算量化参数运算时间的同时,增加了量化精度。
图4示出可以实施本披露实施例的量化神经网络方案的计算装置400的硬件配置框图。如图4所示,计算装置400可以包括处理器410和存储器420。在图4的计算装置400中,仅示出了与本实施例有关的组成元素。因此,对于本领域普通技术人员而言显而易见的是:计算装置400还可以包括与图4中所示的组成元素不同的常见组成元素,比如:运算器。
计算装置400可以对应于具有各种处理功能的计算设备,例如,用于生成神经网络、训练或学习神经网络、将浮点型神经网络量化为定点型神经网络、重新训练神经网络、或者运行神经网络的功能。例如,计算装置400可以被实现为各种类型的设备,例如个人计算机(PC)、服务器设备、移动设备等。
处理器410控制计算装置400的所有功能。例如,处理器410通过执行计算装置400上的存储器420中存储的程序指令,来控制计算装置400的所有功能。处理器410可以由计算装置400中提供的中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)、人工智能处理器芯片(IPU)等来实现。然而,本披露不限于此。
在一些实施例中,处理器410可以包括输入/输出(I/O)单元411和计算单元412。I/O单元411可以用于接收各种数据,例如神经网络的输入数据和量化参数。计算单元412可以用于对经由I/O单元411接收的输入数据进行量化处理,并利用神经网络执行推理运算。运算结果例如可以由I/O单元411输出。输出数据可以提供给存储器420以供其他设备(未示出)读取使用,也可以直接提供给其他设备使用。
存储器420是用于存储计算装置400中处理的各种数据的硬件。例如,存储器420可以存储计算装置400中的处理过的数据和待处理的数据。存储器420可存储处理器410已处理或要处理的神经网络运算过程中涉及的数据集,例如,未训练的初始神经网络的数据、在训练过程中生成的神经网络的中间数据、完成了所有训练的神经网络的数据、经压缩的神经网络的数据、量化参数等。此外,存储器420可以存储要由计算装置400驱动的应用、驱动程序等。例如:存储器420可以存储与将由处理器410执行的神经网络的训练算法、剪枝算法、压缩算法等有关的各种程序。存储器420可以是DRAM,但是本披露不限于此。存储器420可以包括易失性存储器或非易失性存储器中的至少一种。非易失性存储器可以包括只读存储器(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)等。在实施例中,存储器420可以包括硬盘驱动器(HDD)、固态驱动器(SSD)、高密度闪存(CF)、安全数字(SD)卡、微安全数字(Micro-SD)卡、迷你安全数字(Mini-SD)卡、极限数字(xD)卡、高速缓存(caches)或记忆棒中的至少一项。
综上,本说明书实施方式提供的计算装置400的存储器420和处理器410实现的具体功能,可以与本说明书中的前述实施方式相对照解释,并能够达到前述实施方式的技术效果,这里便不再赘述。
在本实施方式中,处理器410可以按任何适当的方式实现。例如,处理器410可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。
在一些实施例中,计算装置400可以实现在人工智能处理器芯片(神经网络芯片)上。人工智能处理器芯片是用于驱动神经网络的专用硬件。人工智能处理器芯片可以对应于例如神经处理单元(NPU)、张量处理单元(TPU)、神经引擎等,它们是用于驱动神经网络的专用芯片,但是本披露不限于此。
在本披露实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,当该计算机程序被处理器运行时,使得处理器执行上述对神经网络进行量化的方法。
图5是示出根据本披露实施例的一种组合处理装置500的结构图。如图5中所示,该组合处理装置500包括计算处理装置502、接口装置504、其他处理装置506和存储装置508。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置510,该计算装置可以配置成图4所示的计算装置400,用于执行本文结合附图3所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图6中示出的芯片602)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图5中所示的组合处理装置。该芯片可以通过对外接口装置(如图6中示出的对外接口装置606)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图6对该板卡进行详细地描述。
图6是示出根据本披露实施例的一种板卡600的结构示意图。如图6中所示,该板卡包括用于存储数据的存储器件604,其包括一个或多个存储单元610。该存储器件可以通过例如总线等方式与控制器件608和上文所述的芯片602进行连接和数据传输。进一步,该板卡还包括对外接口装置606,其配置用于芯片(或芯片封装结构中的芯片)与外部设备612(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图5和图6的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、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所述的计算装置,其中所述循环神经网络包括T个时间节点,其中T>1,所述T个时间节点划分成N个时段,其中1<N<=T,每个时段包括一个或多个连续的时间节点,每个时段内的所有时间节点上的所有循环神经网络层共享相同的量化参数,不同时段对应不同的量化参数。
条款3.根据条款2所述的计算装置,其中,每个时段对应的量化参数基于预先生成的、对应时段内所有时间节点上的所有循环神经网络层的量化参数的统计值而确定,所述统计值包括以下任一:平均值、众数和最大值。
条款4.根据条款3所述的计算装置,其中,所述预先生成的对应时段内所有时间节点上的所有循环神经网络层的量化参数是使用验证数据集对所述循环神经网络进行优化时生成的。
条款5.根据条款1-4任一所述的计算装置,其中所述量化参数包括以下至少一项:
最大动态编码范围;
量化步长;
数据位宽;
有符号或无符号的指示符值;
点位置参数;
缩放系数;以及
偏移量。
条款6.根据条款1-5任一所述的计算装置,其中所述待量化数据是所述循环神经网络的输入数据,其包括以下至少一项:图像、视频、音频、文本。
条款7.一种神经网络芯片,其特征在于,所述神经网络芯片包括如条款1-6任一所述的计算装置。
条款8.一种板卡,其特征在于,所述板卡包括条款7所述的神经网络芯片。
条款9.一种由处理器执行的对循环神经网络的数据进行量化的方法,所述方法包括:
确定所述循环神经网络的待量化数据当前所处的时间节点;
获取预先确定的、与所述时间节点关联的量化参数;以及
利用所述量化参数对所述待量化数据执行量化;
其中所述循环神经网络的一个或多个连续的时间节点共享相同的量化参数。
条款10.根据条款9所述的方法,其中所述循环神经网络包括T个时间节点,其中T>1,所述T个时间节点划分成N个时段,其中1<N<=T,每个时段包括一个或多个连续的时间节点,每个时段内的所有时间节点共享相同的量化参数,不同时段对应不同的量化参数。
条款11.根据条款10所述的方法,其中,每个时段对应的量化参数基于预先生成的、对应时段内所有时间节点上的所有循环神经网络层的量化参数的统计值而确定,所述统计值包括以下任一:平均值、众数和最大值。
条款12.根据条款11所述的方法,其中,所述预先生成的对应时段内所有时间节点上的所有循环神经网络层的量化参数是使用验证数据集对所述循环神经网络进行优化时生成的。
条款13.根据条款9-12任一所述的方法,其中所述量化参数包括以下至少一项:
最大动态编码范围;
量化步长;
数据位宽;
有符号或无符号的指示符值;
点位置参数;
缩放系数;以及
偏移量。
条款14.根据条款9-13任一所述的方法,其中所述待量化数据是所述循环神经网络的输入数据,其包括以下至少一项:图像、视频、音频、文本。
条款15.一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行根据条款9-14任一所述的方法。

Claims (15)

1.一种计算装置,包括:
存储器,其上存储有程序指令以及循环神经网络的时间节点及其关联的量化参数,其中一个或多个连续的时间节点与相同的量化参数相关联;以及
处理器,耦合至所述存储器,并且配置成加载所述程序指令以执行:
确定所述循环神经网络的待量化数据当前所处的时间节点;
从所述存储器中获取与所述时间节点关联的量化参数;以及
利用所述量化参数对所述待量化数据执行量化。
2.根据权利要求1所述的计算装置,其中所述循环神经网络包括T个时间节点,其中T>1,所述T个时间节点划分成N个时段,其中1<N<=T,每个时段包括一个或多个连续的时间节点,每个时段内的所有时间节点上的所有循环神经网络层共享相同的量化参数,不同时段对应不同的量化参数。
3.根据权利要求2所述的计算装置,其中,每个时段对应的量化参数基于预先生成的、对应时段内所有时间节点上的所有循环神经网络层的量化参数的统计值而确定,所述统计值包括以下任一:平均值、众数和最大值。
4.根据权利要求3所述的计算装置,其中,所述预先生成的对应时段内所有时间节点上的所有循环神经网络层的量化参数是使用验证数据集对所述循环神经网络进行优化时生成的。
5.根据权利要求1-4任一所述的计算装置,其中所述量化参数包括以下至少一项:
最大动态编码范围;
量化步长;
数据位宽;
有符号或无符号的指示符值;
点位置参数;
缩放系数;以及
偏移量。
6.根据权利要求1-5任一所述的计算装置,其中所述待量化数据是所述循环神经网络的输入数据,其包括以下至少一项:图像、视频、音频、文本。
7.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求1-6任一所述的计算装置。
8.一种板卡,其特征在于,所述板卡包括权利要求7所述的神经网络芯片。
9.一种由处理器执行的对循环神经网络的数据进行量化的方法,所述方法包括:
确定所述循环神经网络的待量化数据当前所处的时间节点;
获取预先确定的、与所述时间节点关联的量化参数;以及
利用所述量化参数对所述待量化数据执行量化;
其中所述循环神经网络的一个或多个连续的时间节点共享相同的量化参数。
10.根据权利要求9所述的方法,其中所述循环神经网络包括T个时间节点,其中T>1,所述T个时间节点划分成N个时段,其中1<N<=T,每个时段包括一个或多个连续的时间节点,每个时段内的所有时间节点共享相同的量化参数,不同时段对应不同的量化参数。
11.根据权利要求10所述的方法,其中,每个时段对应的量化参数基于预先生成的、对应时段内所有时间节点上的所有循环神经网络层的量化参数的统计值而确定,所述统计值包括以下任一:平均值、众数和最大值。
12.根据权利要求11所述的方法,其中,所述预先生成的对应时段内所有时间节点上的所有循环神经网络层的量化参数是使用验证数据集对所述循环神经网络进行优化时生成的。
13.根据权利要求9-12任一所述的方法,其中所述量化参数包括以下至少一项:
最大动态编码范围;
量化步长;
数据位宽;
有符号或无符号的指示符值;
点位置参数;
缩放系数;以及
偏移量。
14.根据权利要求9-13任一所述的方法,其中所述待量化数据是所述循环神经网络的输入数据,其包括以下至少一项:图像、视频、音频、文本。
15.一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行根据权利要求9-14任一所述的方法。
CN202010872793.1A 2020-08-26 2020-08-26 量化方法、计算装置和计算机可读存储介质 Pending CN114118341A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010872793.1A CN114118341A (zh) 2020-08-26 2020-08-26 量化方法、计算装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010872793.1A CN114118341A (zh) 2020-08-26 2020-08-26 量化方法、计算装置和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114118341A true CN114118341A (zh) 2022-03-01

Family

ID=80374298

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010872793.1A Pending CN114118341A (zh) 2020-08-26 2020-08-26 量化方法、计算装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN114118341A (zh)

Similar Documents

Publication Publication Date Title
CN111652368B (zh) 一种数据处理方法及相关产品
US11625584B2 (en) Reconfigurable memory compression techniques for deep neural networks
CN109284823B (zh) 一种运算装置及相关产品
US11307865B2 (en) Data processing apparatus and method
KR102434726B1 (ko) 처리방법 및 장치
US11790212B2 (en) Quantization-aware neural architecture search
Han et al. A low-power deep neural network online learning processor for real-time object tracking application
KR20190107766A (ko) 계산 장치 및 방법
WO2021036362A1 (zh) 用于处理数据的方法、装置以及相关产品
WO2022111002A1 (zh) 用于训练神经网络的方法、设备和计算机可读存储介质
US20240135174A1 (en) Data processing method, and neural network model training method and apparatus
CN113632106A (zh) 人工神经网络的混合精度训练
US20220076095A1 (en) Multi-level sparse neural networks with dynamic rerouting
CN113238989A (zh) 将数据进行量化的设备、方法及计算机可读存储介质
US20230133337A1 (en) Quantization calibration method, computing device and computer readable storage medium
Zhan et al. Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems
CN112183725B (zh) 提供神经网络的方法、计算装置和计算机可读存储介质
CN114118341A (zh) 量化方法、计算装置和计算机可读存储介质
US20220121908A1 (en) Method and apparatus for processing data, and related product
CN113112009B (zh) 用于神经网络数据量化的方法、装置和计算机可读存储介质
CN111198714B (zh) 重训练方法及相关产品
US20200110635A1 (en) Data processing apparatus and method
CN109416757B (zh) 用于处理数值数据的方法、设备和计算机可读存储介质
Moon et al. Multipurpose Deep-Learning Accelerator for Arbitrary Quantization With Reduction of Storage, Logic, and Latency Waste
CN115481562B (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