掌桥专利:专业的专利平台
掌桥专利
首页

用于神经网络数据量化的方法、装置和计算机可读存储介质

文献发布时间:2023-06-19 11:49:09


用于神经网络数据量化的方法、装置和计算机可读存储介质

技术领域

本披露一般地涉及人工智能领域。更具体地,本披露涉及一种用于用于对神经网络数据进行量化的方法、装置、集成电路和计算机可读存储介质。

背景技术

深度学习已被人工智能领域广泛的使用,在包括图像分类、目标检测、自然语言处理等任务上被证实效果十分理想。随着深度学习的模型预测越来越准确,网络越来越深,神经网络消耗的内存大小成为问题,尤其是在移动设备上。

模型大小不仅是内存容量问题,也是内存带宽问题。模型在每次预测时需要使用模型的权重,图像相关的应用程序通常需要实时处理大量数据,这意味着内存、CPU和电池的快速消耗。

为了节省能耗,神经网络的学习、训练或使用通常会采取量化的手段。所谓量化就是将神经网络中信息量较大的浮点数转换为信息量较小的浮点数或定点数,而如何有效的转换将影响神经网络的速度及精准度。

发明内容

为了至少解决在上述背景技术部分所描述的问题,对神经网络数据进行分别或统一的量化操作,从而达到减少运算量和加快处理速度的目的,本披露提出如下的技术方案及其多个实施例。

在一个方面中,本披露提出了一种用于对神经网络数据进行量化的方法,包括:确定多组神经网络数据之间关于量化分布的差异;判断所述差异是否大于预定的阈值;以及当所述差异大于预定的阈值时,对所述多组神经网络数据的每组神经网络数据分别执行量化操作;或者当所述差异小于或等于所述预定的阈值时,对所述多组神经网络数据执行统一的量化操作。

在另一方面中,本披露还公开了一种用于对神经网络数据进行量化的设备,包括:至少一个处理器;至少一个存储器,其存储有计算机程序代码,当所述计算机程序代码由所述至少一个处理器执行时,使得所述设备执行上述的方法。

在又一方面中,本披露进一步公开了一种计算机可读存储介质,其上存储有用于对神经网络数据进行量化的计算机程序代码,当所述计算机程序代码由处理器运行时,执行上述的方法。

在一个方面中,本披露公开了一种集成电路装置,包括:存储单元,其配置用于存储多组神经网络数据;确定单元,其配置用于确定所述多组神经网络数据之间关于量化分布的差异;判断单元,其配置用于判断所述差异是否大于预定的阈值;以及量化单元,其配置用于:响应于所述判断单元判断出所述差异大于预定的阈值,对所述多组神经网络数据的每组神经网络数据分别执行量化操作;或者响应于所述判断单元判断出所述差异小于或等于所述预定的阈值,对所述多组神经网络数据执行统一的量化操作。

通过利用本披露方法、装置和计算机可读存储介质,可以对多组神经网络数据进行量化操作。特别地,本披露的方案还可以根据多组神经网络数据之间的量化分布的差异,选择执行分别的量化操作或统一的量化操作,不但可以确保量化误差减少,还可以达到减少运算量和加快处理速度的效能。

附图说明

通过结合附图,可以更好地理解本披露的上述特征,并且其众多目的、特征和优点对于本领域技术人员而言是显而易见的。下面描述中的附图仅仅是本披露的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可根据这些附图获得其他的附图,其中:

图1是示出根据本披露实施例的神经网络的结构示意图;

图2是示出根据本披露实施例的目标层的输出通道划分示意图;

图3是示出根据本披露实施例的神经网络数据量化的方法流程图;

图4是示出根据本披露另一实施例的神经网络数据量化的方法流程图;

图5是示出根据本披露实施例的每组神经网络数据分别执行量化操作的示意图;

图6是示出根据本披露实施例的多组神经网络数据统一执行量化操作的示意图;

图7是示出根据本披露实施例的集成电路装置的示意性结构框图;

图8是示出根据本披露实施例的一种组合处理装置的结构图;以及

图9是示出根据本披露实施例的一种板卡的结构示意图。

具体实施方式

上面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。

本披露的技术方案提供了一种用于神经网络数据量化的方法、装置和计算机可读存储介质。具体地,本披露提出通过将神经网络数据划分成多个组,并且根据不同组的量化分布差异,选择分别执行量化操作或统一的量化操作。

应当理解,本申请关于上述的量化方案阐述了许多具体细节以便提供对本披露所述多个实施例的透彻理解。然而,本领域普通技术人员在本申请公开内容的教导下,可以在没有这些具体细节的情况下实践本披露描述的多个实施例。在其他情况下,本申请公开的内容并没有详细描述公知的方法、过程和组件,以避免不必要地模糊本披露描述的实施例。进一步,该描述也不应被视为限制本披露的多个实施例的范围。

下面将结合附图,对本披露的多个实施例中的技术方案进行清楚和完整地描述。

图1是示出根据本披露实施例的神经网络100的结构示意图。一般来说,人工神经网络(ANN)是一种处理设备(以软件、硬件或两者的组合实现),其包含大量“人工神经元”的处理单元(就像人脑中的神经元一样)。人工神经元协同工作以解决具体问题。ANN通常被组织在包括许多互连的人工神经元的层中。基本的ANN由三层组成:第一层“输入”单元,其连接到第二层“隐藏”单元,其中第二层通过被隐藏节点连接到第三层“输出”单元。人工神经网络进一步分为单层神经网络和多层神经网络,而卷积神经网络(convolutional neuralnetwork,缩写CNN)就是一种多层深度神经网络,其被广泛运用于图像处理、语音识别等领域。本披露的方案就是针对卷积神经网络而提出来的用于神经网络数据量化的方法。CNN一共有5个层级结构,分别是:输入层、卷积层、激活层、池化层以及输出层。

1、输入层

卷积神经网络的输入层可以处理多维数据,常见地,一维卷积神经网络的输入层接收一维或二维数组,其中一维数组通常为时间或频谱采样;二维数组可能包含多个通道;二维卷积神经网络的输入层接收二维或三维数组;三维卷积神经网络的输入层接收四维数组。与传统神经网络/机器学习一样,神经网络需要对输入的数组进行预处理操作,常见的在输入层中进行预处理的方法有:去均值、归一化及PCA/SVD降维等。

2、卷积层

卷积层的功能是对输入数据进行特征提取,其内部包含多个卷积核,组成卷积核的每个元素都对应一个权重系数和一个偏差量,类似于一个前馈神经网络的神经元。人的大脑识别图片的过程中,并不是一下子将整张图片同时识别,而是对于图片中的每一个特征首先局部感知,然后更高层次地对局部进行综合操作,从而得到全局信息。卷积层参数包括卷积核大小、步长和填充,三者共同决定了卷积层输出特征图的尺寸,是卷积神经网络的超参数。卷积层内每个神经元都与前一层中位置接近的区域的多个神经元相连,该区域的大小取决于卷积核的大小。卷积核在工作时,会有规律地扫过输入特征,对输入特征做矩阵元素乘法求和并叠加偏差量。

3、激活层

所谓激活,实际上是对卷积层的输出结果做一次非线性映射。常用的激励函数有:Sigmoid函数、Tanh函数、ReLU函数、Leaky、ReLU函数、ELU函数及Maxout函数等。对于激活层的建议如下:首先利用ReLU函数处理数据,因为其迭代速度快,但是有可能效果不佳。如果ReLU函数失效的情况下,可以考虑使用Leaky ReLU函数或者Maxout函数,此时一般情况下都可以解决问题,而Tanh函数则在文本和音频处理有比较好的效果。

4、池化层

池化:也称为欠采样或下采样。该层主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。池化方法主要有:最大池化和平均池化。在卷积层进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤。池化层包含预设定的池化函数,其功能是将特征图中单个点的结果替换为其相邻区域的特征图统计量。池化层选取池化区域与卷积核扫描特征图步骤相同,该步骤由池化大小、步长和填充进行控制。

5、输出层(全连接层)

经过前面若干次卷积+激活+池化后,终于来到了输出层,全连接层位于卷积神经网络隐藏层的最后部分,并只向其它全连接层传递信号。特征图在全连接层中会失去空间拓扑结构,被展开为向量并通过激励函数。按表征学习观点,卷积神经网络中的卷积层和池化层能够对输入数据进行特征提取,全连接层的作用则是对提取的特征进行非线性组合以得到输出,即全连接层本身不被期望具有特征提取能力,而是试图利用现有的高阶特征完成学习目标。另外在全连接层还可以进行局部归一化(LRN)、数据增强等操作,以便增加神经网络的鲁棒性。

卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。

上面结合图1描述了可以实施本披露技术方案的神经网络的示例结构图。可以理解的是,上文关于神经网络的介绍仅仅是示例性的,并且神经网络的结构并不受图中所示结构的限制,本领域技术人员根据需要可以对图中所示结构做出修改,例如在隐藏层中增加一个或多个新的层和对应算子。在对神经网络的实际应用中,可以预先通过大量的样本数据或样本数据集(包含输入数据和输出数据)对初始神经网络进行训练,并在训练完成后获得训练后的神经网络。经过训练后的神经网络对于将来真实环境的输入数据能尝试给出一个正确的输出结果。

在一个或多个实施例中,神经网络的训练过程可以分为两个阶段,第一阶段是信号的正向处理,从输入层经过隐藏层,最后到达输出层。第二阶段是反向传播梯度,从输出层到隐藏层,最后到输入层,根据梯度依次调节神经网络中每层的权值和偏置。

在神经网络进行训练或微调过程中,神经网络的数据可以是高精度数据格式。以浮点数为例,根据计算机体系结构可知,基于浮点数的运算表示法则和定点数的运算表示法则,比较同样长度的定点运算和浮点运算可以发现,浮点运算计算模式更为复杂,需要更多的逻辑器件来构成浮点运算器。另一方面,从体积来说,浮点运算器的体积也比定点运算器的体积要大。并且,浮点运算器需要消耗更多的系统资源去处理,不仅如此,浮点运算器占用的芯片面积和功耗相比于定点运算器都要大很多倍。

基于上述技术问题的描述,在隐藏层中的一个或多个层里,针对可以忽略微小偏差的层,例如:卷积层或全连接层,进行浮点转定点的量化处理,从而加快数据处理的速度。但是当量化的数据过于庞大时,若是对所有的数据选择同样的量化参数进行量化,反而会导致量化误差变大。因此,本披露提出一种用于神经网络数据量化的方法,根据不同数据之间的量化分布的差异,自适应的判断是否需要进行分别量化操作或统一量化操作。

在一个或多个实施例中,待量化数据可以是神经网络的神经元、权值、梯度、偏置中的至少一种数据。下面的待量化数据是以神经网络中目标层的神经元和权值这两种数据为例,并且根据以下公式进行量化操作:

F

公式(1)中,F

公式(2)中,

公式(3)中,absmax表示绝对值的最大值,n表示I

图2是示出根据本披露实施例的目标层的输出通道划分示意图。为了更好的理解本方案,这里的目标层是以卷积层为例来说明的,但本披露的目标层不仅限于卷积层,只要是具有多个输出通道的一个或多个隐藏层(例如全连接层)都可以作为本披露的目标层。

如图2所示,在一个实施例中,当数据层对卷积层输入多组神经网络数据211~21n(n为正整数)时,卷积层可以通过多次卷积计算来提取输入的神经网络数据中的关键特征,并且可作为下一层输入的特征图221~22m(m为正整数)。一般来说,单个卷积核通常是三维矩阵,因此需要用到宽度、高度和深度这三个参数。由于权值矩阵使用宽度和高度表示,因此单个卷积核中权值矩阵的数量和卷积的深度保持一致。也就是说,输入的神经网络数据的输入通道数1~n(n为正整数)与权值矩阵的数量或卷积的深度相同。

进一步,卷积层通常采用二维卷积计算方式对图像数据进行卷积,以每个像素为中心对周围邻域进行卷积计算。例如,当要进行卷积的数为3*3,就以像素为中心,圈选四周邻域共九个数为一次计算数量。换句话说,将每邻域9个像素求和变为一个像素,可按序计算出卷积核211~21n(n为正整数),并且通过加权累加再加上偏置就可以输出特征图特征图1。最后,结合多个输出特征图221~m就能构成特征图像。

如前所述,为提高数据处理的速度,可以通过将高精度数据格式(例如浮点数)转换成低精度数据格式(例如定点数)的量化处理。但是,在一次要针对大量的数据执行量化操作时,如果将所有的数据选择同样的量化参数进行量化,反而可能会导致量化误差变大。因此本披露实施例将以输出通道作为将多组神经网络数据划分的基准,通过分别或统一执行量化操作,可以达到减少量化误差和加快运算速度的目的。具体划分与量化操作方案将在下面结合图3-4做出描述。

图3是示出根据本披露实施例的神经网络数据量化的方法300流程图。神经网络数据进行图像处理时,方法300通过输入层对目标层输送待量化的神经网络数据。该神经网络数据可以是神经网络的神经元、权值、梯度、偏置中的至少一种数据。由此,本披露通过方法300可以将神经网络中的权值数据进行量化。在一个或多个实施例中,前述的目标层可以是卷积层或全连接层。当该目标层是卷积层时,神经网络数据是该卷积层中以输出通道为单位的所有权值或者部分权值,而该输出通道是该卷积层的所有输出通道或者部分输出通道。进一步来说,有关下面描述中的目标层将以卷积层作为示例性说明,本领域技术人员通过此处的示例性描述,也可以想到用隐藏层中的其它层(例如全连接层)来实现本披露方案。

如图3所示,在步骤301处,方法300接收到待量化的神经网络数据后,确定多组神经网络数据之间关于量化分布的差异(以下简称“量化差”),其可以根据卷积层的所有输出通道数,将待量化的神经网络数据划分成多组神经网络数据,其中每组神经网络数据中都包括最大值或绝对值最大值。在一个或多个实施例中,方法300进行卷积前的量化操作时,会将卷积层中每层的待量化的神经网络数据所对应的最大值和最小值保存下来,此实施例可以根据保存的最大值和最小值来获取绝对值最大值,并不用为了获得绝对值再耗费额外的资源去处理量化的神经网络数据。

在一个或多个实施例中,绝对值最大值可以作为上述式(1)~(3)执行量化操作的参数之一,因此此实施例可以将绝对值最大值作为判断量化差的基准。可选地,在一些场景中,本领域技术人员也能通过对上述说明想到将最大值取代绝对值最大值作为执行量化的基准。

进一步,在步骤301中,方法300选取多组神经网络数据中每组的绝对值最大值,可以获得多个绝对值最大值,并且从这些绝对值最大值之中选取一个最大值(以下简称“第一参数”)和一个最小值(以下简称“第二参数”)。接着,方法300对第一参数和第二参数求比值,根据比值的大小可以决定量化差。

在完成对第一参数和第二参数求比值后,在步骤302处,方法300判断多组神经网络数据的量化差是否大于预定的阈值。关于该阈值(或者阈值范围),本领域技术人员可以根据实际操作需要进行灵活的设定。例如,该阈值可以是预设的经验值或低精度数据格式的位宽。以低精度数据格式的位宽为例,当其是8位定点型数据时,可以将阈值设定为8。

进一步,当判断多组神经网络数据的量化差是否大于预定的阈值时,可以通过方法300将第一参数和第二参数的比值与预定的阈值进行比较来加以判断。当该比值大于预定的阈值时,在步骤303处,方法300可以对多组神经网络数据的每组神经网络数据分别执行量化操作,其中,将每组神经网络数据的绝对值最大值分别作为上述的式(3)的absmax参数进行运算,并且结合上述的式(1)和(2)的运算就可以分别完成对每组神经网络数据的量化操作。

相反,当判断多组神经网络数据的量化差是否小于或等于所述预定的阈值时,可以通过方法300将多组神经网络数据中第一参数和第二参数的比值与预定的阈值进行比较来加以判断。当该比值小于或等于预定的阈值时,在步骤304处,可以对该多组神经网络数据执行统一的量化操作,其中,将第一参数作为上述的式(3)的absmax参数进行运算,并且结合上述的式(1)和(2)的运算就可以一次完成多组神经网络数据的量化操作。在一个场景中,量化操作包括将高精度数据格式表示的神经网络数据量化成低精度数据格式表示的神经网络数据,例如浮点数量化成定点数。

根据图3所披露的量化方法,通过选择执行分别的量化操作或统一的量化操作,可以确保量化误差减少,进而达到减少运算量和加快处理速度的效能。图4是示出根据本披露另一实施例的神经网络数据量化的方法400流程图。通过前文和下面的描述,本领域技术人员能够理解图4为图3的进一步实施方案,并且关于图3描述的技术细节同样也适用于图4所示出的内容。

神经网络数据进行图像处理时,方法400通过输入层对目标层输送待量化的神经网络数据。如前面所提到的,该神经网络数据可以是神经网络的神经元、权值、梯度、偏置中的至少一种数据。由此,此实施例是通过方法400可以将神经网络中的权值数据进行量化。如前所述,该目标层可以是卷积层或全连接层。进一步,有关下面描述中的目标层将以卷积层作为示例性说明。

如图4所示,在步骤401处,方法400接收到待量化的神经网络数据后,可以根据卷积层的所有输出通道数,将待量化的神经网络数据划分成与输出通道数相同数量的多组神经网络数据,其中多组神经网络数据中的每组都包括最大值或绝对值最大值。在一个或多个实施例中,绝对值最大值可以作为上述式(1)~(3)执行量化操作的参数之一。因此本披露的技术方案可以绝对值最大值来作为判断量化差的基准。

接着,在步骤402处,方法400选取多组神经网络数据中每组的绝对值最大值,以获得多个绝对值最大值,如前述绝对值最大值可以作为执行量化操作的参数之一。因此,在步骤403处,从多个绝对值最大值之中选取一个最大值(以下简称“第一参数”)和一个最小值(以下简称“第二参数”),通过方法400对第一参数和第二参数求比值,根据比值的大小可以确定量化差。

在完成对第一参数和第二参数求比值以确定量化差后,在步骤404处,方法400判断多组神经网络数据的量化差是否大于预定的阈值。关于该阈值(或者阈值范围),本领域技术人员可以根据实际操作需要进行灵活的设定。例如,该阈值可以是预设的经验值或低精度数据格式的位宽。以低精度数据格式的位宽为例,当其是8位定点型数据时,可以将阈值设定为8。

进一步,当判断多组神经网络数据的量化差是否大于预定的阈值时,可以通过方法400将第一参数和第二参数的比值与低精度数据格式的位宽进行比较来加以判断。当该比值大于低精度数据格式的位宽时,代表每组神经网络数据之间的量化差超出可接受的范围,因此每组神经网络数据只能分别执行量化操作。在步骤405处,根据每组神经网络数据中的绝对值最大值和低精度数据格式的位宽来确定量化参数,换句话说,每组神经网络数据的绝对值最大值将作为上述的式(1)~(3)进行量化操作时所相应的量化参数。

在步骤406处,将对多组神经网络数据的每组神经网络数据分别执行量化操作。在一个实施例中,可以通过方法400将每组神经网络数据的绝对值最大值作为上述的式(3)的absmax参数进行运算,并且结合上述的式(1)和(2)的运算就可以分别完成对每组神经网络数据的量化操作。

相反,当判断多组神经网络数据的量化差是否小于或等于所述预定的阈值时,可以通过方法400将第一参数和第二参数的比值与低精度数据格式的位宽进行比较来加以判断。当该比值小于或等于低精度数据格式的位宽时,在步骤407处,方法400可以对该多组神经网络数据执行统一的量化操作。例如,可以将所获得的绝对值最大值进行运算,以得到第一参数,第一参数作为上述的式(3)的absmax参数进行运算,并且结合上述的式(1)和(2)的运算就可以一次完成多组神经网络数据的量化操作。

可选地或可替代地,本披露的技术方案可以将最大值取代绝对值最大值作为判断量化差的量化参数。本领域技术人员通过前文对神经网络数据执行划分、判断量化差以确定量化操作的实施例,可以想到量化参数由最大值替换成绝对值最大值的其他实施例,此处为了简明的目的,不再赘述。

在结合图3和图4描述了分别量化操作或统一量化操作方案后,下文通过图5和图6的具体说明对多组神经网络数据进行划分以获得神经网络数据的量化差,该量化差可以作为判断分别量化操作或统一量化操作的基准。

图5是示出根据本披露实施例的每组神经网络数据分别执行量化操作500的示意图。如图5所示,目标层有5个输出通道数,待量化的神经网络数据将划分成第一组神经网络数据501(以下简称“第一组”)、第二组神经网络数据502(以下简称“第二组”)、第三组神经网络数据503(以下简称“第三组”)、第四组神经网络数据504(以下简称“第四组”)和第五组神经网络数据505(以下简称“第五组”)。以上示例性的仅列举五组,本领域技术人员可以想到实际应用的数量组可能大大超过此数量。

接着,通过卷积前的量化操作,将卷积层中每层的待量化的神经网络数据所对应的最大值和最小值保存下来,并且根据保存的最大值和最小值来获取绝对值最大值。通过操作500可以获知第一组至第五组的绝对值最大值按序为0.7、0.4、3.6、3.5和0.9,其中这五组中的绝对值最大值当中的最大值和绝对值最大值当中的最小值分别为3.6(以下简称“第一参数”)和0.4(以下简称“第二参数”)。操作500根据第一参数的值3.6和第二参数的值0.4获得比值为9,该比值代表多组神经网络数据的量化差。

进一步,将比值9与阈值进行比较,关于该阈值(或者阈值范围),本领域技术人员可以根据实际操作需要进行灵活的设定。例如,该阈值可以是预设的经验值或低精度数据格式的位宽。以低精度数据格式的位宽为例,当其是8位定点型数据时,可以将阈值设定为8。当比值(量化差)大于阈值时,代表多组神经网络数据之间的量化差超出可接受的范围,如果将多组神经网络数据都以同样的量化参数进行量化,将导致量化误差超过可接受的范围。

针对无法执行统一量化操作的第一组至第五组,将通过操作500分别执行量化操作。进一步,第一组至第五组511~515将按序以相应的绝对值最大值0.7、0.4、3.6、3.5作为量化参数并进行量化操作。

图6是示出根据本披露实施例的多组神经网络数据分别执行量化操作600的示意图。例如,该神经网络数据可以是神经网络的神经元、权值、梯度、偏置中的至少一种数据。由此,本披露是通过操作600将神经网络中的权值数据进行量化。操作600接收到待量化的神经网络数据后,根据目标层(该目标层可以是神经网络的卷积层或全连接层)的所有输出通道数。

如图6所示,目标层有5个输出通道数,待量化的神经网络数据将划分成第一组神经网络数据601(以下简称“第一组”)、第二组神经网络数据602(以下简称“第二组”)、第三组神经网络数据603(以下简称“第三组”)、第四组神经网络数据604(以下简称“第四组”)和第五组神经网络数据605(以下简称“第五组”)。以上示例性的仅列举五组,本领域技术人员可以理解实际应用的数量组可能大大超过此数量。

接着,通过卷积前的量化操作将卷积层中每层的待量化的神经网络数据所对应的最大值和最小值保存下来,根据保存的最大值和最小值来获取绝对值最大值。通过操作600可以获知第一组至第五组的绝对值最大值按序为0.7、0.4、2.8、2.5和0.9,其中这五组中的绝对值最大值当中的最大值和绝对值最大值当中的最小值分别为2.8(以下简称“第一参数”)和0.4(以下简称“第二参数”)。操作600根据第一参数的值2.8和第二参数的值0.4获得比值为7,该比值代表多组神经网络数据的量化差。

进一步,操作600将比值7与阈值进行比较,关于该阈值(或者阈值范围),本领域技术人员可以根据实际操作需要进行灵活的设定。例如,该阈值可以是预设的经验值或低精度数据格式的位宽。以低精度数据格式的位宽为例,当其是8位定点型数据时,可以本实施例将阈值设定为8。当比值(量化差)小于或等于阈值时,代表多组神经网络数据之间的量化差在可接受的范围内,可以将多组神经网络数据都以同样的量化参数进行量化,通过操作600执行统一量化操作。进一步,操作600会将第一组至第五组划分在同一组610,以第一参数的值2.8作为量化参数并进行量化操作。

图7是示出根据本披露实施例的集成电路装置700的示意性结构框图。通过下文的描述,本领域技术人员可以理解图7的集成电路装置支持本披露结合图3和图4描述的技术方案,并且关于图3和图4描述的技术细节同样也适用于图4所示出的内容。

如图7中所示,此实施例的集成电路装置700总体上可以包括:存储单元702、确定单元704、判断单元706和量化单元708,附加地或可选地,集成电路装置7还包括划分单元710。在一些场景中,存储单元702用于存储输入层对目标层输送待量化的多组神经网络数据,该多组神经网络数据可以是神经网络的神经元、权值、梯度、偏置中的至少一种数据。由此,此实施例是通过集成电路装置700将神经网络中的权值数据进行量化。在一个或多个实施例中,前述的目标层可以是卷积层或全连接层。

在一个实施例中,集成电路装置700为了进行量化操作,通过划分单元710根据卷积层的所有输出通道数,将待量化的神经网络数据划分成多组神经网络数据,其中每组神经网络数据中都包括最大值或绝对值最大值。在一些实施例中,绝对值最大值可以作为上述式(1)~(3)执行量化操作的参数之一,因此此实施例将绝对值最大值作为判断量化差的基准。可选地或可替代地,本领域技术人员也能通过对上述说明想到将最大值取代绝对值最大值作为执行量化的基准。

在一个场景中,通过确定单元704选取多组神经网络数据中每组的绝对值最大值,以获得多个绝对值最大值,并且从多个绝对值最大值之中选取一个最大值(以下简称“第一参数”)和一个最小值(以下简称“第二参数”)。接着,确定单元704再针对第一参数和第二参数求比值,并且根据比值的大小可以确定多组神经网络数据之间的量化差。

进一步,判断单元706接收来自确定单元704所输出的比值,可以判断量化差是否大于预定的阈值。关于该阈值(或者阈值范围),本领域技术人员可以根据实际操作需要进行灵活的设定。例如,该阈值可以是预设的经验值或低精度数据格式的位宽。以低精度数据格式的位宽为例,当其是8位定点型数据时,可以将阈值设定为8。

在一个场景中,当判断单元706判断多组神经网络数据的量化差是否大于预定的阈值时,可以通过判断单元706将第一参数和第二参数的比值与预定的阈值进行比较来加以判断。当该比值大于预定的阈值时,量化单元708可以对多组神经网络数据的每组神经网络数据分别执行量化操作。其中,量化单元708对前述的每组神经网络数据分别执行量化操作时,可以将每组神经网络数据的绝对值最大值作为上述的式(3)的absmax参数进行运算,并且结合前述的式(1)和(2)的运算就可以分别完成对每组神经网络数据的量化操作。

相反,当判断单元706在判断多组神经网络数据的量化差是否小于或等于所述预定的阈值时,可以通过将第一参数和第二参数的比值与预定的阈值进行比较来加以判断。当该比值小于或等于预定的阈值时,量化单元708可以对该多组神经网络数据执行统一的量化操作。例如,量化单元708对多组神经网络数据统一执行量化操作,可以通过量化单元708将第一参数作为上述的式(3)的absmax参数进行运算,并且结合上述的式(1)和(2)的运算就可以一次完成多组神经网络数据的量化操作。

图8是示出根据本披露实施例的一种组合处理装置800的结构图。如图所示,该组合处理装置800包括具有前述量化装置802,其可以配置用于执行前述结合附图所描述的量化方法。在一个或多个实施例中,该量化装置802也可以是前述的用于量化的设备、集成电路装置(如上述图7所揭露)和计算机可读存储介质。另外,该组合处理装置800还包括通用互联接口804和其他处理装置806。根据本披露的量化装置802可以通过通用互联接口804与其他处理装置806进行交互,共同完成用户指定的操作。

根据本披露的方案,该其他处理装置可以包括中央处理器(“CPU”)、图形处理器(“GPU”)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目可以不做限制而是根据实际需要来确定。在一个或多个实施例中,该其他处理装置可以包括前述的基准硬件平台或基准运算装置,从而其可以与包括测试硬件平台的测试装置形成一个测试的系统。在一个或多个实施例中,该其他处理装置可以作为本披露的测试装置(其可以具体化为人工智能相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运,完成对本机器学习运算装置的开启、停止等的基本控制;其他处理装置也可以和机器学习相关运算装置协作共同完成运算任务。

根据本披露的方案,该通用互联接口可以用于在测试装置与其他处理装置间传输数据和控制指令。例如,该测试装置可以经由所述通用互联接口从其他处理装置中获取所需的输入数据,写入该测试装置片上的存储装置(或称存储器)。进一步,该测试装置可以经由所述通用互联接口从其他处理装置中获取控制指令,写入测试装置片上的控制缓存。替代地或可选地,通用互联接口也可以读取测试装置的存储模块中的数据并传输给其他处理装置。

可选的,该组合处理装置800还可以包括存储装置808,其可以分别与所述量化装置802和所述其他处理装置806连接。在一个或多个实施例中,存储装置808可以用于保存所述量化装置802和所述其他处理装置806的数据,尤其是卷积层中每层的待量化的神经网络数据所对应的最大值和最小值。

根据应用场景的不同,本披露的组合处理装置800可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。在此情况下,该组合处理装置800的通用互联接口804与设备的某些部件相连接。某些部件例如摄像头、显示器、鼠标、键盘、网卡或wifi接口。

在一些实施例里,本披露还公开了一种芯片,其包括了上述测试装置或组合处理装置800。在另一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。

在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图9,其提供了前述的示例性板卡900,板卡900除了包括上述芯片902以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件904、接口装置906和控制器件908。

所述存储器件904与所述芯片封装结构内的芯片902通过总线连接,用于存储数据。所述存储器件904可以包括多组存储单元910。每一组所述存储单元910与所述芯片902通过总线连接。可以理解,每一组所述存储单元910可以是DDR SDRAM(“Double Data RateSDRAM,双倍速率同步动态随机存储器”)。

DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储器件904可以包括4组所述存储单元910。每一组所述存储单元910可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。

在一个实施例中,每一组所述存储单元910包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片902中设置控制DDR的控制器,用于对每个所述存储单元910的数据传输与数据存储的控制。

所述接口装置906与所述芯片封装结构内的芯片902电连接。所述接口装置906用于实现所述芯片902与外部设备912(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置906可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片902,实现数据转移。在另一个实施例中,所述接口装置906还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片902的计算结果仍由所述接口装置906传送回外部设备912(例如服务器)。

所述控制器件908与所述芯片902电连接。所述控制器件908用于对所述芯片902的状态进行监控。具体地,所述芯片902与所述控制器件908可以通过SPI接口电连接。所述控制器件908可以包括单片机(Micro Controller Unit,MCU)。在一个或多个实施例中,所述芯片902可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片902可以处于多负载和轻负载等不同的工作状态。通过所述控制器件908可以实现对所述芯片902中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。

在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡900。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

在本披露的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

依据以下条款可更好地理解前述内容:

条款A1、一种用于对神经网络数据进行量化的方法,包括:

确定多组神经网络数据之间关于量化分布的差异;

判断所述差异是否大于预定的阈值;以及

当所述差异大于预定的阈值时,对所述多组神经网络数据的每组神经网络数据分别执行量化操作;或者

当所述差异小于或等于所述预定的阈值时,对所述多组神经网络数据执行统一的量化操作。

条款A2、根据条款A1所述的方法,进一步包括:

在确定所述差异前,根据所述神经网络的目标层的输出通道来将神经网络数据划分成所述多组神经网络数据。

条款A3、根据条款A2所述的方法,其中所述目标层是所述神经网络的卷积层或全连接层。

条款A4、根据条款A1所述的方法,其中所述量化分布的差异基于所述多组神经网络数据中的每组的最大值或绝对值最大值。

条款A5、根据条款A4所述的方法,其中确定所述多组神经网络数据之间量化分布的差异包括:

选取所述多组神经网络数据中每组的最大值,以获得多个最大值;以及

从所述多个最大值中选取最大值和最小值,并且对所述多个最大值中选取的最大值和最小值求比值,以确定所述差异。

条款A6、根据条款A4所述的方法,其中确定所述多组神经网络数据之间量化分布的差异包括:

选取所述多组神经网络数据中每组的绝对值最大值,以获得多个绝对值最大值;以及

选取所述多个绝对值最大值中的最大值和最小值,并且对所述多个绝对值最大值中选取的最大值和最小值求比值,以确定所述差异。

条款A7、根据条款A1所述的方法,其中所述神经网络数据包括所述神经网络的神经元、权值、偏置和梯度中的至少一种数据。

条款A8、根据条款A1-A7的任意一项所述的方法,其中所述量化操作包括将高精度数据格式表示的神经网络数据量化成低精度数据格式表示的神经网络数据。

条款A9、根据条款A8所述的方法,其中对每组神经网络数据分别执行量化操作包括:

根据每组神经网络数据中的绝对值最大值和低精度数据格式的位宽来确定用于每组神经网络数据的量化参数;以及

使用所述量化参数来对所述每组神经网络数据分别执行量化操作。

条款A10、根据条款A8所述的方法,其中对所述多组神经网络数据执行统一的量化操作包括:

根据多组神经网络数据中的绝对值最大值和低精度数据格式数据的位宽来确定用于所述多组神经网络数据的量化参数;以及

使用所述量化参数来对所述多组神经网络数据执行所述统一的量化操作。

条款A11、一种用于对神经网络数据进行量化的设备,包括:

至少一个处理器;

至少一个存储器,其存储有计算机程序代码,当所述计算机程序代码由所述至少一个处理器执行时,使得所述设备执行条款A1-A10的任意一项所述的方法。

条款A12、一种计算机可读存储介质,其上存储有用于对神经网络数据进行量化的计算机程序代码,当所述计算机程序代码由处理器运行时,执行根据条款A1-A10的任意一项所述的方法。

条款A13、一种集成电路装置,包括:

存储单元,其配置用于存储多组神经网络数据;

确定单元,其配置用于确定所述多组神经网络数据之间关于量化分布的差异;

判断单元,其配置用于判断所述差异是否大于预定的阈值;以及

量化单元,其配置用于:

响应于所述判断单元判断出所述差异大于预定的阈值,对所述多组神经网络数据的每组神经网络数据分别执行量化操作;或者

响应于所述判断单元判断出所述差异小于或等于所述预定的阈值,对所述多组神经网络数据执行统一的量化操作。

条款A14、根据条款A13所述的集成电路装置,进一步包括:

划分单元,其配置成在确定所述差异前,根据所述神经网络的目标层的输出通道来将神经网络数据划分成所述多组神经网络数据。

条款A15、根据条款A14所述的集成电路装置,其中所述目标层是卷积层或全连接层。

条款A16、根据条款A13所述的集成电路装置,其中所述量化分布的差异基于所述多组神经网络数据中的每组的最大值或绝对值最大值。

条款A17、根据条款A16所述的集成电路装置,其中在确定所述多组神经网络数据之间量化分布的差异中,所述确定单元配置用于:

选取所述多组神经网络数据中每组的最大值,以获得多个最大值;以及

从所述多个最大值中选取最大值和最小值,并且对所述多个最大值中选取的最大值和最小值求比值,以确定所述差异。

条款A18、根据条款A16所述的集成电路装置,其中在确定所述多组神经网络数据之间量化分布的差异中,所述确定单元配置用于:

选取所述多组神经网络数据中每组的绝对值最大值,以获得多个绝对值最大值;以及

选取所述多个绝对值最大值中的最大值和最小值,并且对所述多个绝对值最大值中选取的最大值和最小值求比值,以确定所述差异。

条款A19、根据条款A13所述的集成电路装置,其中所述神经网络数据包括所述神经网络的神经元、权值、偏置和梯度中的至少一种数据。

条款A20、根据条款A13-A19的任意一项所述的集成电路装置,其中在执行所述量化操作中,所述量化单元配置用于将高精度数据格式表示的神经网络数据量化成低精度数据格式表示的神经网络数据。

条款A21、根据条款A20所述的集成电路装置,其中在对每组神经网络数据分别执行量化操作中,所述量化单元配置用于:

根据每组神经网络数据中的绝对值最大值和低精度数据格式的位宽来确定用于每组神经网络数据的量化参数;以及

使用所述量化参数来对所述每组神经网络数据分别执行量化操作。

条款A22、根据条款A20所述的集成电路装置,其中在对所述多组神经网络数据执行统一的量化操作中,所述量化单元配置用于:

根据多组神经网络数据中的绝对值最大值和低精度数据格式的位宽来确定用于所述多组神经网络数据的量化参数;以及

使用所述量化参数来对所述多组神经网络数据执行所述统一的量化操作。

以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

相关技术
  • 用于神经网络数据量化的方法、装置和计算机可读存储介质
  • 用于神经网络数据量化的方法、装置和计算机可读存储介质
技术分类

06120113065897