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

数据处理方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 10:54:12


数据处理方法、装置、计算机设备和存储介质

技术领域

本公开涉及数据处理技术领域,特别是涉及一种数据处理方法、装置、计算机设备和存储介质。

背景技术

在人工智能技术领域,神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。用GPU和CPU处理起这些大规模的模型,要花费大量的计算时间,并且耗电量很大。

发明内容

基于此,有必要针对上述技术问题,提供一种能够节约计算时间、减少能耗,提高计算精度的数据处理方法、装置、计算机设备和存储介质。

根据本公开的一方面,提供了一种数据处理方法,包括:

根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,其中,所述一组待量化数据为winograd卷积处理过程中的一组数据,所述多对截断阈值中的每对截断阈值包括对称的截断正值和截断负值;

根据确定出的所述一对截断阈值量化所述一组待量化数据,得到量化后的第一数据;

根据量化后的第一数据继续执行winograd卷积处理,得到量化后的winograd卷积结果;

对所述量化后的winograd卷积结果执行反量化处理,得到winograd卷积结果。

根据本公开的另一方面,提供了一种数据处理装置,包括:

第一确定模块,用于根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,其中,所述一组待量化数据为winograd卷积处理过程中的一组数据,所述多对截断阈值中的每对截断阈值包括对称的截断正值和截断负值;

第一量化模块,用于根据确定出的所述一对截断阈值量化所述一组待量化数据,得到量化后的第一数据;

卷积模块,用于根据量化后的第一数据继续执行winograd卷积处理,得到量化后的winograd卷积结果;

反量化模块,用于对所述量化后的winograd卷积结果执行反量化处理,得到winograd卷积结果。

根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括如前述任意一项所述的数据处理装置。

根据本公开的另一方面,提供了一种电子设备,所述电子设备包括如前述的人工智能芯片。

根据本公开的另一方面,提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如前述的人工智能芯片;

其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;

所述存储器件,用于存储数据;

所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;

所述控制器件,用于对所述人工智能芯片的状态进行监控。

根据本公开的另一方面,提供了一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为调用所述存储器存储的指令,以执行前述中任意一项所述的方法。

根据本公开的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现前述中任意一项所述的方法。

根据本公开的数据处理方法、装置、计算机设备和存储介质,根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,根据确定出的所述一对截断阈值量化winograd卷积中的一组待量化数据,得到量化后的第一数据,根据量化后的第一数据继续执行winograd卷积处理,得到量化后的winograd卷积结果,对所述量化后的winograd卷积结果执行反量化处理,得到winograd卷积结果,可以提高量化的精度的同时,节约winograd卷积的运算时间,减少能耗。

通过权要中的技术特征进行推导,能够达到对应背景技术中的技术问题的有益效果。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出根据本公开实施例的数据处理方法的流程图;

图2示出根据本公开实施例的数据处理装置的框图;

图3示出根据本公开实施例的板卡的结构框图;

图4示出根据本公开实施例的一种电子设备800的框图;

图5示出根据本公开实施例的一种电子设备1900的框图。

具体实施方式

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

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

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

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

winograd卷积是一种基于多项式插值算法的卷积加速实现方式。它通过对卷积操作的两个输入:神经元、权值进行一定规模切分后分别进行线性变换(winograd正变换),再将变换后的神经元和权值进行对位乘法,最后对对位乘法结果再次进行线性变换(winograd逆变换)得到与原卷积操作等价的卷积结果。

winograd变换的表达式如下所示:

对于一维的神经元和权值:S=A

对于二维的神经元和权值:S=A

其中,g表示权值,G表示权值对应的左乘正变换矩阵,G

通过winograd卷积替代原始卷积操作能够带来硬件能效比和运算时间上的较大收益,同时也可以在不增加、或者增加较少的硬件开销的情况下实现更高的神经网络性能。但是,winograd卷积的弊端仍然较为明显,大量的乘法运算在计算过程中仍然消耗较长的运算时间。

为了解决上述技术问题,本公开提供了一种数据处理方法,该数据处理方法可以将winograd卷积过程中的乘法运算拆解为加法运算,从而节约计算时间、减少能耗,并且对winograd卷积过程中的数据进行量化处理,进一步的提高计算性能。

一般来说,在对数据进行量化时,如果选择的取值范围较广,则会造成量化后的数据精度较低,而如果取值范围过小,则会造成过多的数据被截断,导致分布在两侧的数据的信息损失,其中取值范围是指用于量化数据的最小截断阈值与最大截断阈值之间的数值范围。因此,需要找到一个合适的截断阈值来对数据进行量化,使得数据量化的损失最小或较小。传统地,通过KL散度(Kullback–Leibler divergence)的方法来确定最佳截断阈值,其中KL散度能够确定量化前与量化后的数据之间的相关度。KL散度又称为相对熵(relativeentropy)、信息散度(information divergence)、信息增益(information gain)。KL散度是两个概率分布P和Q之间差别的非对称性的度量。假设量化前32位浮点数分布为P,量化后8位整数分布为Q,那么只要让P和Q之间的KL散度越小,则表明量化前后的分布越接近,量化也就越有效。然而,本申请的发明人发现通过传统的KL方法所获得的截断阈值所实现的量化效果并不佳,通常会造成较大的精度损失。

为此,本公开的实施例提出了一种确定用于对称量化的截断阈值的新方案,能够实现比传统技术(例如KL方法)更小的量化精度损失。根据本公开的实施例,在获取winograd卷积过程中的一组待量化数据之后,通过使用多对截断阈值分别量化一组待量化数据,来确定多组量化后的数据,其中多对截断阈值中的每对截断阈值包括对称的截断正值和截断负值。然后,使用每组量化后的数据的绝对值的均值与一组待量化数据的绝对值的均值之间的差异作为评价指标,来从多对截断阈值中选择合适的一对截断阈值。通过这种方式,能够找到更合适的截断阈值。

图1示出根据本公开实施例的数据处理方法的流程图。如图1所示,该方法可以包括:

步骤101、根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,其中,所述一组待量化数据为winograd卷积处理过程中的一组数据,所述多对截断阈值中的每对截断阈值包括对称的截断正值和截断负值。

举例来说,在获取winograd卷积过程中的一组待量化数据之后,通过使用多对截断阈值分别量化一组待量化数据,来确定多组量化后的数据,其中多对截断阈值中的每对截断阈值包括对称的截断正值和截断负值。然后,使用每组量化后的数据的绝对值的均值与一组待量化数据的绝对值的均值之间的差值作为评价指标,来从多对截断阈值中选择合适的一对截断阈值。

其中,原始的待量化数据可以是图像数据、声音数据或者视频数据等。以原始的待量化数据为图像数据为例,输入数据可以表示为NHWC(batch,height,width,channels)的形式,N表示图像的数量,HW可以分别表示在高度和宽度方向的像素个数,C可以表示通道数,例如:C可以表示RGB(Red,Green,Blue)三个通道。需要说明的是,以上表示方式仅仅是本公开的一个示例,本公开不限于此。

在一种可能的实现方式中,上述据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,可以包括:

通过使用多对截断阈值分别量化所述一组待量化数据,来确定多组量化后的第二数据;

基于所述多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述多对截断阈值中选择一对截断阈值。

举例来说,获取winograd卷积过程中的一组待量化数据,该量化数据可以为winograd卷积处理过程中的任一数据。

在一种可能的实现方式中,上述所述winograd卷积处理过程,可以包括:

将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果;

执行所述输入数据的winograd正变换结果的对位乘操作,得到对位乘结果;

将对所述对位乘结果的winograd逆变换拆解为求和运算,得到所述winograd卷积结果。

则上述一组待量化数据可以为输入数据(在一种可能的实现方式中,该输入数据为输入神经元和/或权值),或者还可以为输入数据的winograd正变换结果,或者还可以为上述对位乘结果。

举例来说,可以对待量化数据进行量化,从而加快winograd卷积的处理速度。在一些实施例中,待量化数据可以为32位的浮点数。备选地,待量化的数据也可以为其他位数的浮点数,或者其他的数据类型。

通过使用多对截断阈值分别量化一组待量化数据,来确定多组量化后的数据,其中多对截断阈值中的每对截断阈值包括对称的截断正值和截断负值。在对称量化的方案中,截断阈值为对称的一对正负值,即截断正值和截断负值,这两个值的数值本身相同但是符号相反。

根据本公开的实施例,可以挑选多对截断阈值,分别量化待量化数据。在一些实施例中,可以以固定的间隔挑选一些截断阈值。

在一种可能的实现方式中,上述方法还可以包括:

确定所述一组待量化数据中的所有数据的绝对值中的最大绝对值;

基于所述最大绝对值,确定所述多对截断阈值。

举例来说,根据待量化数据中的所有数据的绝对值中的最大绝对值,每隔预定距离挑选一个截断阈值。在一些实施例中,也可以仅挑选几个特定位置处的截断阈值,例如仅挑选绝对值最大值的几个预定比例的数值。

在一些实施例中,可以根据每对截断阈值计算出相应的一个或多个量化参数(例如:点位置参数、缩放系数、偏移量等),然后使用计算出的量化参数来量化待量化数据。备选地,也可以直接根据截断阈值来通过各种公式或模型量化待量化数据,而无需单独计算各个量化参数的值。

基于多组量化后的数据中的每组量化后的数据的绝对值的均值与一组待量化数据的绝对值的均值之间的差异,从多对截断阈值中选择一对截断阈值,以用于量化一组待量化数据。由于量化前后的数据的绝对值的均值差距能够反映出量化前后的精度损失,其中绝对值均值差异越小,量化操作的精度损失越小。因此,本公开的实施例使用量化前后的数据的绝对值的均值的差异作为挑选最佳截断阈值的指标,能够实现比传统的KL方法更小的精度损失。

在一些实施例中,量化后的数据的绝对值的均值与待量化数据的绝对值的均值之间的差异可以为两个绝对值均值之间的差值。备选地,量化后的数据的绝对值的均值与待量化数据的绝对值的均值之间的差异也可以为:两个绝对值均值之间的差值除以待量化数据的绝对值的均值,然后再取绝对值。

在一种可能的实现方式中,基于所述多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述多对截断阈值中选择一对截断阈值,可以包括:

从所述多组量化后的数据中选出一组第一量化数据,所述一组第一量化数据的绝对值的均值与所述一组待量化数据的绝对值的均值的差,小于多组第二量化数据的绝对值的均值与所述一组待量化数据的绝对值的均值的差,其中,所述多组第二量化数据为多组量化后的数据中除了所述一组第一量化数据之外的其他组量化后的数据;

从所述多对截断阈值中选择与所述一组第一量化数据相对应的一对截断阈值。

确定各组量化后的数据的绝对值的均值,并确定各组量化后的数据的绝对值的均值与一组待量化数据的绝对值的均值的差,确定差最小的一组量化后的数据为第一量化数据,确定除第一量化数据以外的其他组量化后的数据为第二量化数据,也即该第一量化数据的绝对值的均值与一组待量化数据的绝对值的均值的差,小于第二量化数据的绝对值的均值与一组待量化数据的绝对值的均值的差。确定用于量化待量化数据得到第一量化数据的一对截断阈值为用于量化待量化数据的一对截断阈值。

举例来说,确定一对-|T|至|T|后,在-|T|至|T|的范围之外的数据将会被设定成-|T|或|T|,其中|T|为确定的截断正值,-|T|为确定的截断负值。例如,在一对截断阈值对应的截断范围内的数据根据量化参数进行量化处理,将待量化的在截断范围之外、且小于-|T|的值,当成值-|T|来进行量化处理,将待量化的在截断范围之外、且大于|T|的值,当成值|T|来进行量化处理。通过这种方式,通过使用截断阈值来缩小待量化数据的取值范围,能够提高量化后的数据的精度。

步骤102、根据确定出的所述一对截断阈值量化所述一组待量化数据,得到量化后的第一数据。

举例来说,在选择最佳的一对截断阈值之后,可以使用所选择的一对截断阈值来量化一组待量化数据以获得量化后的第一数据,包括:将一组待量化数据中大于截断正值的数值截断为截断正值,并且将一组待量化数据中小于截断负值的数值截断为截断负值。

步骤103、根据量化后的第一数据继续执行winograd卷积处理,得到量化后的winograd卷积结果。

步骤104、对所述量化后的winograd卷积结果执行反量化处理,得到winograd卷积结果。

在一种可能的实现方式中,上述待量化数据为所述输入数据、所述输入数据的winograd正变换结果、所述对位乘结果中的一种。

示例性的,待量化数据为输入数据,则winograd卷积过程可以为:

采用确定的一对截断阈值量化输入数据,得到量化后的输入数据;将量化后的输入数据的winograd正变换拆解为求和运算,并进行计算得到量化后的输入数据的winograd正变换结果;执行量化后的输入数据的winograd正变换结果的对位乘操作,得到对位乘结果;将对所述对位乘结果的winograd逆变换拆解为求和运算,得到所述量化后的winograd卷积结果,对该量化后的winograd卷积结果进行反量化处理,得到winograd卷积结果。

示例性的,待量化数据为输入数据的winograd正变换结果,则winograd卷积过程可以为:

将输入数据的winograd正变换拆解为求和运算,并进行计算得到输入数据的winograd正变换结果;采用确定的一对截断阈值量化输入数据的winograd正变换结果,得到量化后的输入数据的winograd正变换结果;执行量化后的输入数据的winograd正变换结果的对位乘操作,得到对位乘结果;将对对位乘结果的winograd逆变换拆解为求和运算,得到所述量化后的winograd卷积结果,对该量化后的winograd卷积结果进行反量化处理,得到winograd卷积结果。

示例性的,待量化数据为对位乘结果,则winograd卷积过程可以为:

将输入数据的winograd正变换拆解为求和运算,并进行计算得到输入数据的winograd正变换结果;执行输入数据的winograd正变换结果的对位乘操作,得到对位乘结果;采用确定的一对截断阈值量化对位乘结果,得到量化后的对位乘结果;将对量化后的对位乘结果的winograd逆变换拆解为求和运算,得到量化后的winograd卷积结果。对该量化后的winograd卷积结果进行反量化处理,得到winograd卷积结果。

在一种可能的实现方式中,上述将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果,可以包括:

将所述输入数据拆解为多个第一子张量,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果。

其中,所述多个第一子张量的个数与所述输入数据的元素的不为0的个数相同,所述多个第一子张量中的每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0。

举例来说,假设输入神经元表示为:

那么,按照本公开的拆解方式,16个第一子张量分别为:

每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0是指:以第一子张量d

需要说明的是,以上拆解方式仅仅是本公开的一些示例,不以任何方式限制本公开,例如,如果输入数据中具有值为0的元素,拆解得到的第一子张量的数量可以少于输入数据的元素的个数,例如,多个第一子张量的个数与所述输入数据的不为0的元素的个数相同。

在一种可能的实现方式中,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果,可以包括以下过程:

获取第一子张量对应的第一元子张量的winograd正变换结果;其中,第一子张量对应的第一元子张量为:在第一元子张量中第一位置的元素的值为1,其中,第一位置在第一元子张量中所处的位置与第一子张量中的非0元素所处的位置相同;

将第一子张量中不为0的元素值作为系数乘以对应的第一元子张量的winograd正变换结果,得到第一子张量的winograd正变换结果;

将多个第一子张量的winograd正变换结果相加得到所述输入数据的winograd正变换结果。

仍然以第一子张量d

其中,第一子张量对应的第一元子张量的winograd正变换结果可以是通过以下过程预先得到的:对于每一个第一子张量,将该第一子张量对应的第一元子张量左边乘以正变换左乘矩阵、右边乘以正变换右乘矩阵得到第一元子张量的winograd正变换结果。

对于不同尺寸的矩阵,对应的第一元子张量的形式是确定的,对应的正变换左乘矩阵和正变换右乘矩阵也是确定的。

因此,可以预先计算出第一元子张量的winograd正变换结果,具体过程如上所述。举例来说,仍然以d

再比如,以d

由于正变换左乘矩阵和正变换右乘矩阵的元素值都是0、±1,第一元子张量的元素值为0或1,第一元子张量的winograd正变换结果中的元素也是0、±1。因此,可以将矩阵乘操作拆解为加法操作。

计算第一元子张量的winograd正变换结果的过程涉及较多的乘法运算,通过本公开的方式,可以将预先计算好的各种规模的第一元子张量的winograd正变换结果保存在运算装置中,这样,在实际的运算过程中,可以直接获取,而不需要重复运算,从而缩短计算时间、节约计算资源。

在获得第一子张量对应的第一元子张量的winograd正变换结果,可以将第一子张量中不为0的元素值乘以对应的第一元子张量的winograd正变换结果,就可以得到第一子张量的winograd正变换结果。举例来说,仍然以d

再比如,以d

通过以上过程计算得到所有第一子张量的winograd正变换结果,将多个第一子张量的winograd正变换结果相加,即可得到所述输入数据的winograd正变换结果。

由于转换得到的第一元子张量的winograd正变换结果中的元素也是0、±1,因此,上述等式(1)、(2)右侧仅涉及求和运算。

根据本公开上述实施方式可知,通过将输入数据进行拆解得到多个第一子张量,根据预先计算得到的第一子张量对应的第一元子张量的winograd正变换结果以及第一子张量的非0元素值即可进行求和运算得到输入数据的winograd正变换结果。

在采用上文提到的拆解为求和运算得到输入神经元的winograd正变换结果后,可以采用计算权值的winograd正变换结果,其中权值的winograd正变换结果的计算方式可以采用传统的矩阵乘法计算,也可以参照上文提到的拆解为求和运算进行计算得到winograd正变换结果。

在得到输入数据(输入神经元、权值)的winograd正变换结果后,可以继续执行输入数据的winograd正变换结果的对位乘操作,得到对位乘结果。其中,对位乘可以是指对两个张量对应位置的数据相乘得到的数据作为对位乘结果中相应位置的值。

假设输入神经元的winograd正变换结果B

权值的winograd正变换结果

那么对位乘结果可以为:

输入数据的winograd卷积结果可以表示为S

在一种可能的实现方式中,上述所述将对所述对位乘结果的winograd逆变换拆解为求和运算,得到所述输入数据的winograd卷积结果,可以包括:

将所述对位乘结果拆解为多个第二子张量,对所述多个第二子张量进行winograd逆变换并求和,得到所述输入数据的winograd卷积结果;

其中,所述多个第二子张量的个数与所述对位乘结果的元素的不为0的个数相同,所述多个第二子张量中的每个第二子张量中有一个元素与所述对位乘结果中的对应位置的元素相同、其他元素均为0。

假设对位乘结果为:

将对位乘结果拆解为多个第二子张量,例如可以拆解为16个,16个第二子张量分别为:

在拆解完后,可以对所述多个第二子张量进行winograd逆变换并求和得到所述输入数据的winograd卷积结果。

在一种可能的实现方式中,对所述多个第二子张量进行winograd逆变换并求和得到所述输入数据的winograd卷积结果,可以包括以下过程:

获取第二子张量对应的第二元子张量的winograd逆变换结果;其中,第二子张量对应的第二元子张量为:在第二元子张量中第二位置的元素的值为1,其中,第二位置在第二元子张量中所处的位置与第二子张量中的非0元素所处的位置相同;

将第二子张量中不为0的元素值作为系数乘以对应的第二元子张量的winograd逆变换结果,得到第二子张量的winograd逆变换结果;

将多个第二子张量的winograd逆变换结果相加得到所述输入数据的winograd卷积结果。

第二子张量对应的第二元子张量确定的方式和上文中第一元子张量确定的方式相同,不再赘述。其中,第二元子张量的winograd逆变换结果是通过以下过程预先得到的:对于每一个第二子张量,将该第二子张量对应的第二元子张量左边乘以逆变换左乘矩阵、右边乘以逆变换右乘矩阵得到第二元子张量的winograd逆变换结果。

对于不同尺寸的矩阵,对应的第二元子张量的形式是确定的,对应的逆变换左乘矩阵和逆变换右乘矩阵也是确定的。因此,可以预先计算出第二元子张量的winograd逆变换结果,具体过程如上所述。对于本文上述列举的示例,逆变换左乘矩阵为2×4的矩阵,例如可以为:

逆变换右乘矩阵为4×2的矩阵,例如可以为:

逆变换矩阵的维度可以根据输入神经元的维度以及权值的维度和卷积步长确定,上文仅仅是一个示例,不以任何方式限制本公开。

逆变换矩阵由

对于“将第二子张量中不为0的元素值作为系数乘以对应的第二元子张量的winograd逆变换结果,得到第二子张量的winograd逆变换结果;将多个第二子张量的winograd逆变换结果相加得到所述输入数据的winograd卷积结果”的具体过程可以参照上文,只不过第二元子张量的winograd逆变换结果不完全由0、±1,但分数可以通过简单的移位操作计算,相比于乘法操作,本公开将普通的逆变换过程拆解后仍然可以实现节约计算时间、减少能耗的效果。

根据本公开上述实施方式可知,通过将对位乘结果进行拆解得到多个第二子张量,根据预先计算得到的第二子张量对应的第二元子张量的winograd逆变换结果以及第二子张量的非0元素值即可进行求和运算得到输入数据的winograd卷积结果。

本公开实施例还提供一种用于搜索用于对称量化的截断阈值的方法,上述确定多组量化后的第二数据还包括:

基于所述绝对值最大值、预定的搜索总次数以及当前搜索次序,确定第一截断正值;

通过使用第一对截断阈值量化所述一组待量化数据,来确定第一组量化后的数据,所述第一对截断阈值包括所述第一截断正值以及与所述第一截断正值相反的第一截断负值;以及

确定所述第一组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的第一差异。

举例来说,确定待量化数据的绝对值的平均值以及待量化数据中的绝对值的最大值,其中绝对值的平均值为待量化数据中的所有数据的绝对值除以元素个数。此外,还初始化最小均值差异,例如初始设置浮点数中的最大值,并且初始化循环搜索的搜索次序i(例如初始化为0)。在一些实施例中,搜索次序i也可以被初始化为搜索总次数的一半,也即从中间开始搜索,这样能够提高搜索效率。根据本公开的实施例,可以设置一轮或者多轮阈值搜索过程,每轮阈值搜索可以具有相同或者不同的搜索总次数。在一些实施例中,每轮的搜索总次数可以设置在10至32之间。一般来说,搜索总次数越多,所花费的搜索时间越长,所搜到的截断阈值也越精确。然而,当搜索总次数达到某个值后,搜索效果可能不再会有本质提升。

接下来,开始第一轮粗粒度的截断阈值搜索过程。示例性的,可以将待量化数据划分成10对候选截断阈值,依次使用这10对截断阈值执行量化过程,并根据量化前后的数据的绝对值的均值的差异来确定最佳的一对截断阈值。

判断当前搜索次序i是否小于预定的搜索总次数,即在依次选择各对截断阈值进行量化时,判断是否已经完成所有对截断阈值的计算。如果当前搜索次序i小于预定的搜索总次数,则基于当前搜索次序i,确定一对截断阈值,这对截断阈值分别为-绝对值的最大值/预定的搜索总次数*(i+1)、绝对值的最大值/预定的搜索总次数*(i+1)。使用这对截断阈值来量化待量化数据,以得到相应的量化后数据Quant_data_i,计算量化后的数据的绝对值的均值Quant_data_mean_i与待量化数据的绝对值的均值Data_mean之间的差异abs(Quant_data_mean_i-Data_mean)/Data_mean。

判断所计算的差异是否小于当前最小差异。如果是的话,将所计算的差异设置为当前最小差异,并记录差异最小时的截断阈值,然后递增当前搜索次序i。如果判断是否的话,直接在当前递增搜索次序i,即继续确定下一对截断阈值时的差异。接下来,继续循环执行前述步骤,直到当前搜索次序i的值达到预定的搜索总次数,则退出第一次截断阈值的搜索过程。经过第一轮的搜索,确定差异最小的截断阈值为最佳截断阈值。由此可见,截断阈值搜索的过程即为:使用多对截断阈值对待量化数据进行量化,确定多组量化后的数据中与待量化数据在绝对值的均值方面差异最小的一组量化后的数据,然后从多对截断阈值中选择与这组量化后的数据相对应的一对截断阈值。

可选地,可以执行第二轮细粒度的截断阈值搜索过程,第二轮搜索过程也可以参考前述方法,只是第二轮搜索是在第一轮最佳截断阈值周围的一定范围内(例如,所选择的截断阈值的前一个截断阈值与后一个截断阈值之间)进行,是对第一轮搜索结果的更一步细化。例如,第二轮搜索时,每对截断阈值之间的间隔可以为(绝对值最大值*2)/(第一轮搜索总次数*第二轮搜索总次数)。经过第二轮搜索,确定细粒度的最佳截断阈值。通过两轮搜索的方式,能够获得更加准确的截断阈值,减小量化所导致的精度损失。

本公开实施例提供一种用于迭代地搜索最佳截断阈值的方法。

举例来说,确定三对截断阈值,例如,可以确定待量化数据F

在一些实施例中,可以通过以下式(1)-(3)确定在使用各对截断阈值量化数据时的量化参数。

其中p为待量化数据中的绝对值最大值,n表示量化后的二进制位数,S和f表示量化参数。

根据本公开的实施例,通过将p分别选为absmax/2、absmax*3/4和absmax,可以求得量化参S1、f1、S2、f2、S3以及f3,由此得到量化后的数据

根据本公开的数据处理方法,根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,根据确定出的所述一对截断阈值量化winograd卷积中的一组待量化数据,得到量化后的第一数据,根据量化后的第一数据继续执行winograd卷积处理,得到量化后的winograd卷积结果,对所述量化后的winograd卷积结果执行反量化处理,得到winograd卷积结果,可以提高量化的精度的同时,节约winograd卷积的运算时间,减少能耗。

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

进一步需要说明的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

图2示出根据本公开实施例的数据处理装置的框图。如图2所示,该装置可以包括:

第一确定模块201,可以用于根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,其中,所述一组待量化数据为winograd卷积处理过程中的一组数据,所述多对截断阈值中的每对截断阈值包括对称的截断正值和截断负值;

第一量化模块202,可以用于根据确定出的所述一对截断阈值量化所述一组待量化数据,得到量化后的第一数据;

卷积模块203,可以用于根据量化后的第一数据继续执行winograd卷积处理,得到量化后的winograd卷积结果;

反量化模块204,可以用于对所述量化后的winograd卷积结果执行反量化处理,得到winograd卷积结果。

根据本公开的数据处理装置,根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,根据确定出的所述一对截断阈值量化winograd卷积中的一组待量化数据,得到量化后的第一数据,根据量化后的第一数据继续执行winograd卷积处理,得到量化后的winograd卷积结果,对所述量化后的winograd卷积结果执行反量化处理,得到winograd卷积结果,可以提高量化的精度的同时,节约winograd卷积的运算时间,减少能耗。

在一种可能的实现方式中,上述第一确定模块201,还可以用于:

通过使用多对截断阈值分别量化所述一组待量化数据,来确定多组量化后的第二数据;

基于所述多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述多对截断阈值中选择一对截断阈值。

在一种可能的实现方式中,上述winograd卷积处理过程,可以包括:

将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果;

执行所述输入数据的winograd正变换结果的对位乘操作,得到对位乘结果;

将对所述对位乘结果的winograd逆变换拆解为求和运算,得到所述winograd卷积结果。

在一种可能的实现方式中,所述待量化数据为所述输入数据、所述输入数据的winograd正变换结果、所述对位乘结果中的一种。

在一种可能的实现方式中,所述装置还可以包括:

第二确定模块,可以用于确定所述一组待量化数据中的所有数据的绝对值中的最大绝对值;

第三确定模块,可以用于基于所述最大绝对值,确定所述多对截断阈值。

在一种可能的实现方式中,上述第一确定模块201还可以用于:

基于所述绝对值最大值、预定的搜索总次数以及当前搜索次序,确定第一截断正值;

通过使用第一对截断阈值量化所述一组待量化数据,来确定第一组量化后的数据,所述第一对截断阈值包括所述第一截断正值以及与所述第一截断正值相反的第一截断负值;以及

确定所述第一组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的第一差异。

在一种可能的实现方式中,所述第一确定模块201,还可以用于:

从所述多组量化后的数据中选出一组第一量化数据,所述一组第一量化数据的绝对值的均值与所述一组待量化数据的绝对值的均值的差,小于多组第二量化数据的绝对值的均值与所述一组待量化数据的绝对值的均值的差,其中,所述多组第二量化数据为多组量化后的数据中除了所述一组第一量化数据之外的其他组量化后的数据;

从所述多对截断阈值中选择与所述一组第一量化数据相对应的一对截断阈值。

在一种可能的实现方式中,所述装置还可以包括:

第四确定模块,用于确定与所选择的所述一对截断阈值相关联的截断搜索范围;

第五确定模块,用于确定处于所述截断搜索范围内的新的多对截断阈值;

第二量化模块,用于通过使用所述新的多对截断阈值分别量化所述一组待量化数据,来确定新的多组量化后的数据;

选择模块,用于基于所述新的多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述新的多对截断阈值中选择新的一对截断阈值。

在一种可能的实现方式中,所述将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果,可以包括:

将所述输入数据拆解为多个第一子张量,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果。

其中,所述多个第一子张量的个数与所述输入数据的元素的不为0的个数相同,所述多个第一子张量中的每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0。

在一种可能的实现方式中,所述将对所述对位乘结果的winograd逆变换拆解为求和运算,得到所述输入数据的winograd卷积结果,可以包括:

将所述对位乘结果拆解为多个第二子张量,对所述多个第二子张量进行winograd逆变换并求和,得到所述输入数据的winograd卷积结果;

其中,所述多个第二子张量的个数与所述对位乘结果的元素的不为0的个数相同,所述多个第二子张量中的每个第二子张量中有一个元素与所述对位乘结果中的对应位置的元素相同、其他元素均为0。

在一种可能的实现方式中,所述输入数据可以为输入神经元、权值和梯度中的至少一种。

应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。

另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器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)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述数据处理装置。

在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。

图3示出根据本公开实施例的板卡的结构框图,参阅图3,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;

所述存储器件390与所述人工智能芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate 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超仪和/或心电图仪。

本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是非易失性计算机可读存储介质。

本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。

图4示出根据本公开实施例的一种电子设备800的框图。例如,电子设备800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等终端。

参照图4,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。

处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。

存储器804被配置为存储各种类型的数据以支持在电子设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。

多媒体组件808包括在所述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当电子设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。

I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到电子设备800的打开/关闭状态,组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器804,上述计算机程序指令可由电子设备800的处理器820执行以完成上述方法。

图5示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图5,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。

电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。

在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。

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

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

条款A1,一种数据处理方法,其特征在于,包括:

根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,其中,所述一组待量化数据为winograd卷积处理过程中的一组数据,所述多对截断阈值中的每对截断阈值包括对称的截断正值和截断负值;

根据确定出的所述一对截断阈值量化所述一组待量化数据,得到量化后的第一数据;

根据量化后的第一数据继续执行winograd卷积处理,得到量化后的winograd卷积结果;

对所述量化后的winograd卷积结果执行反量化处理,得到winograd卷积结果。

条款A2,根据条款A1所述的方法,所述根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,包括:

通过使用多对截断阈值分别量化所述一组待量化数据,来确定多组量化后的第二数据;

基于所述多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述多对截断阈值中选择一对截断阈值。

条款A3,根据条款A1-A2任一项所述的方法,所述winograd卷积处理过程,包括:

将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果;

执行所述输入数据的winograd正变换结果的对位乘操作,得到对位乘结果;

将对所述对位乘结果的winograd逆变换拆解为求和运算,得到所述winograd卷积结果。

条款A4,根据条款A3所述的方法,所述待量化数据为所述输入数据、所述输入数据的winograd正变换结果、所述对位乘结果中的一种。

条款A5,根据条款A1至A4中任一项所述的方法,所述方法还包括:

确定所述一组待量化数据中的所有数据的绝对值中的最大绝对值;

基于所述最大绝对值,确定所述多对截断阈值。

条款A6,根据条款A1至A5中任一项所述的方法,所述确定多组量化后的第二数据还包括:

基于所述绝对值最大值、预定的搜索总次数以及当前搜索次序,确定第一截断正值;

通过使用第一对截断阈值量化所述一组待量化数据,来确定第一组量化后的数据,所述第一对截断阈值包括所述第一截断正值以及与所述第一截断正值相反的第一截断负值;以及

确定所述第一组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的第一差异。

条款A7,根据条款A2所述的方法,基于所述多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述多对截断阈值中选择一对截断阈值,包括:

从所述多组量化后的数据中选出一组第一量化数据,所述一组第一量化数据的绝对值的均值与所述一组待量化数据的绝对值的均值的差,小于多组第二量化数据的绝对值的均值与所述一组待量化数据的绝对值的均值的差,其中,所述多组第二量化数据为多组量化后的数据中除了所述一组第一量化数据之外的其他组量化后的数据;

从所述多对截断阈值中选择与所述一组第一量化数据相对应的一对截断阈值。

条款A8,根据条款A7所述的方法,所述方法还包括:

确定与所选择的所述一对截断阈值相关联的截断搜索范围;

确定处于所述截断搜索范围内的新的多对截断阈值;

通过使用所述新的多对截断阈值分别量化所述一组待量化数据,来确定新的多组量化后的数据;

基于所述新的多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述新的多对截断阈值中选择新的一对截断阈值。

条款A9,根据条款A3所述的方法,所述将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果,包括:

将所述输入数据拆解为多个第一子张量,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果;

其中,所述多个第一子张量的个数与所述输入数据的元素的不为0的个数相同,所述多个第一子张量中的每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0。

条款A10,根据条款A3所述的方法,所述将对所述对位乘结果的winograd逆变换拆解为求和运算,得到所述输入数据的winograd卷积结果,包括:

将所述对位乘结果拆解为多个第二子张量,对所述多个第二子张量进行winograd逆变换并求和,得到所述输入数据的winograd卷积结果;

其中,所述多个第二子张量的个数与所述对位乘结果的元素的不为0的个数相同,所述多个第二子张量中的每个第二子张量中有一个元素与所述对位乘结果中的对应位置的元素相同、其他元素均为0。

条款A11,根据条款A3或A4所述的方法,所述输入数据为输入神经元、权值和梯度中的至少一种。

条款A12,一种数据处理装置,包括:

第一确定模块,用于根据采用多对截断阈值对一组待量化数据进行量化处理得到的量化数据的绝对值的均值,从多对截断阈值中确定一对截断阈值,其中,所述一组待量化数据为winograd卷积处理过程中的一组数据,所述多对截断阈值中的每对截断阈值包括对称的截断正值和截断负值;

第一量化模块,用于根据确定出的所述一对截断阈值量化所述一组待量化数据,得到量化后的第一数据;

卷积模块,用于根据量化后的第一数据继续执行winograd卷积处理,得到量化后的winograd卷积结果;

反量化模块,用于对所述量化后的winograd卷积结果执行反量化处理,得到winograd卷积结果。

条款A13,根据条款A12所述的装置,所述第一确定模块,还用于:

通过使用多对截断阈值分别量化所述一组待量化数据,来确定多组量化后的第二数据;

基于所述多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述多对截断阈值中选择一对截断阈值。

条款A14,根据条款A12或A13所述的装置,所述winograd卷积处理过程,包括:

将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果;

执行所述输入数据的winograd正变换结果的对位乘操作,得到对位乘结果;

将对所述对位乘结果的winograd逆变换拆解为求和运算,得到所述winograd卷积结果。

条款A15,根据条款A14所述的装置,所述待量化数据为所述输入数据、所述输入数据的winograd正变换结果、所述对位乘结果中的一种。

条款A16,根据条款A12至A15中任一项所述的装置,所述装置还包括:

第二确定模块,用于确定所述一组待量化数据中的所有数据的绝对值中的最大绝对值;

第三确定模块,用于基于所述最大绝对值,确定所述多对截断阈值。

条款A16,根据条款A12至A15中任一项所述的装置,所述第一确定模块,还用于:

基于所述绝对值最大值、预定的搜索总次数以及当前搜索次序,确定第一截断正值;

通过使用第一对截断阈值量化所述一组待量化数据,来确定第一组量化后的数据,所述第一对截断阈值包括所述第一截断正值以及与所述第一截断正值相反的第一截断负值;以及

确定所述第一组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的第一差异。

条款A17,根据条款A13所述的装置,所述第一确定模块,还用于:

从所述多组量化后的数据中选出一组第一量化数据,所述一组第一量化数据的绝对值的均值与所述一组待量化数据的绝对值的均值的差,小于多组第二量化数据的绝对值的均值与所述一组待量化数据的绝对值的均值的差,其中,所述多组第二量化数据为多组量化后的数据中除了所述一组第一量化数据之外的其他组量化后的数据;

从所述多对截断阈值中选择与所述一组第一量化数据相对应的一对截断阈值。

条款A18,根据条款A17所述的装置,所述装置还包括:

第四确定模块,用于确定与所选择的所述一对截断阈值相关联的截断搜索范围;

第五确定模块,用于确定处于所述截断搜索范围内的新的多对截断阈值;

第二量化模块,用于通过使用所述新的多对截断阈值分别量化所述一组待量化数据,来确定新的多组量化后的数据;

选择模块,用于基于所述新的多组量化后的数据中的每组量化后的数据的绝对值的均值与所述一组待量化数据的绝对值的均值之间的差异,从所述新的多对截断阈值中选择新的一对截断阈值。

条款A19,根据条款A14所述的装置,所述将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果,包括:

将所述输入数据拆解为多个第一子张量,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果;

其中,所述多个第一子张量的个数与所述输入数据的元素的不为0的个数相同,所述多个第一子张量中的每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0。

条款A20,根据条款A14所述的装置,所述将对所述对位乘结果的winograd逆变换拆解为求和运算,得到所述输入数据的winograd卷积结果,包括:

将所述对位乘结果拆解为多个第二子张量,对所述多个第二子张量进行winograd逆变换并求和,得到所述输入数据的winograd卷积结果;

其中,所述多个第二子张量的个数与所述对位乘结果的元素的不为0的个数相同,所述多个第二子张量中的每个第二子张量中有一个元素与所述对位乘结果中的对应位置的元素相同、其他元素均为0。

条款A21,根据条款A14或A15所述的装置,所述输入数据为输入神经元、权值和梯度中的至少一种。

条款A22,一种人工智能芯片,所述芯片包括如条款A12至A21中任意一项所述的数据处理装置。

条款A23,一种电子设备,所述电子设备包括如条款A22所述的人工智能芯片。

条款A24,一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款A22所述的人工智能芯片;

其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;

所述存储器件,用于存储数据;

所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;

所述控制器件,用于对所述人工智能芯片的状态进行监控。

条款A25,根据条款A24所述的板卡,所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:DDR SDRAM;

所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;

所述接口装置为:标准PCIE接口。

条款A26,一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为调用所述存储器存储的指令,以执行条款A1至A11中任意一项所述的方法。

条款A27,一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款A1至A11中任意一项所述的方法。

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

相关技术
  • 数据处理方法、装置、计算机设备和计算机可读存储介质
  • 数据处理方法、装置、计算机可读存储介质和计算机设备
技术分类

06120112722370