CN114118387A - 数据处理方法、数据处理装置及计算机可读存储介质 - Google Patents
数据处理方法、数据处理装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114118387A CN114118387A CN202210082911.8A CN202210082911A CN114118387A CN 114118387 A CN114118387 A CN 114118387A CN 202210082911 A CN202210082911 A CN 202210082911A CN 114118387 A CN114118387 A CN 114118387A
- Authority
- CN
- China
- Prior art keywords
- data
- bit number
- processed
- preset
- quantized
- 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/08—Learning methods
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种数据处理方法、数据处理装置及计算机可读存储介质,数据处理装置包括卷积神经网络加速芯片,卷积神经网络加速芯片包括预设电路模块,方法包括:在检测到每个待处理量化数据的数据类型均为整数类型时,确定每个待处理量化数据的目标比特数;在每个待处理量化数据的目标比特数均高于预设比特数时,将每个待处理量化数据转换为至少两个第一中间数据,第一中间数据的比特数为预设比特数,预设比特数为预先设定的预设电路模块匹配的比特数;采用预设电路模块对每个第一中间数据进行处理,得到目标数据。本发明旨在解决针对整数类型的量化数据进行处理时,卷积神经网络加速芯片的功耗高、成本高的技术问题。
Description
技术领域
本发明涉及深度学习技术领域,尤其涉及一种数据处理方法、数据处理装置及计算机可读存储介质。
背景技术
在深度学习技术中,量化作为一种卷积神经网络压缩技术,能有效降低算法复杂度。在不同的精度要求下,有不同的量化方式,针对整数类型(integer,INT),比如有INT8、INT16等量化方式。其中,INT8是使用8bit表示一个整数类型的数据,INT16是使用16bit表示一个整数类型的数据。
当卷积神经网络加速芯片同时具备INT8、INT16等多种量化方式卷积神经网络计算的功能时,为了简化设计复杂度,通常不同量化方式采用不同的电路模块完成不同的功能。比如:采用一个电路模块完成INT8的功能,采用另一个模块完成INT16的功能,两个电路模块独立工作,互不影响。上述方式需要两个电路模块各自占用一部分电路面积,必然导致芯片整体面积增大,从而导致针对整数类型的量化数据进行处理时,卷积神经网络加速芯片的功耗高、成本高。
发明内容
本发明的主要目的在于提供一种数据处理方法、数据处理装置及计算机可读存储介质,旨在解决针对整数类型的量化数据进行处理时,卷积神经网络加速芯片的功耗高、成本高的技术问题。
为实现上述目的,本发明提供一种数据处理方法,所述数据处理方法应用于数据处理装置,所述数据处理装置包括卷积神经网络加速芯片,所述卷积神经网络加速芯片包括预设电路模块,所述方法包括:
在检测到每个待处理量化数据的数据类型均为整数类型时,确定每个所述待处理量化数据的目标比特数;
在每个所述待处理量化数据的所述目标比特数均高于预设比特数时,将每个所述待处理量化数据转换为至少两个第一中间数据,所述第一中间数据的比特数为所述预设比特数,所述预设比特数为预先设定的所述预设电路模块匹配的比特数;
采用所述预设电路模块对每个所述第一中间数据进行处理,得到目标数据。
可选地,所述将每个所述待处理量化数据转换为至少两个第一中间数据的步骤包括:
分别将每个所述待处理量化数据进行拆分处理,得到每个所述待处理量化数据对应的所述第一中间数据;
其中,每个所述待处理量化数据对应的所述第一中间数据的数量为目标比值,所述目标比值为所述目标比特数与所述预设比特数的比值,每个所述待处理量化数据被拆分为至少两个所述第一中间数据。
可选地,所述分别将每个所述待处理量化数据进行拆分处理,得到每个所述待处理量化数据对应的所述第一中间数据的步骤包括:
分别从每个所述待处理量化数据的低位至高位依次取所述预设比特数的第一字符串,并将每个所述预设比特数的所述第一字符串作为所述第一中间数据;
或者,分别从每个所述待处理量化数据的高位至低位依次取所述预设比特数的第二字符串,并将每个所述预设比特数的所述第二字符串作为所述第一中间数据。
可选地,所述采用所述预设电路模块对每个所述第一中间数据进行处理,得到目标数据的步骤包括:
采用所述预设电路模块对所述第一中间数据进行处理,得到至少两个第二中间数据,所述处理包括卷积运算处理;
采用所述预设电路模块对所有所述第二中间数据进行求和,得到求和数据,将所述求和数据作为所述目标数据。
可选地,所述采用所述预设电路模块对所述第一中间数据进行处理,得到至少两个第二中间数据的步骤包括:
对所有所述第一中间数据进行分组,得到至少四个数据组合,每个所述数据组合中包括两个所述第一中间数据,且每个所述数据组合中的所述第一中间数据之间部分不同;
采用所述预设电路模块对每个所述数据组合中的所述第一中间数据求乘积,得到每个所述数据组合对应的第一乘积数据;
根据每个所述数据组合对应的所述第一乘积数据,确定所述第二中间数据。
可选地,所述根据每个所述第一乘积数据,确定所述第二中间数据的步骤包括:
根据所述待处理量化数据的所述目标比特数以及每个所述数据组合中所述第一中间数据的位权信息,分别确定每个所述第一乘积数据的权重;
对每个所述第一乘积数据以及每个所述第一乘积数据对应的所述权重求乘积,得到每个所述第一乘积数据对应的第二乘积数据,将每个所述第二乘积数据作为所述每个所述第二中间数据。
可选地,所述方法还包括;
在检测到所述待处理量化数据的所述数据类型不为所述整数类型时,输出提示信息;
和/或,在检测到每个所述待处理量化数据的所述目标比特数小于或者等于所述预设比特数时,采用所述预设电路模块对所述待处理量化数据进行处理,得到所述目标数据。
此外,为实现上述目的,本发明还提供一种数据处理装置,所述数据处理装置包括:
确定模块,用于在检测到每个待处理量化数据的数据类型均为整数类型时,确定每个所述待处理量化数据的目标比特数;
转换模块,用于在每个所述待处理量化数据的所述目标比特数均高于预设比特数时,将每个所述待处理量化数据转换为至少两个第一中间数据,所述第一中间数据的比特数为所述预设比特数,所述预设比特数为预先设定的所述预设电路模块匹配的比特数;
处理模块,用于采用所述预设电路模块对每个所述第一中间数据进行处理,得到目标数据。
此外,为实现上述目的,本发明还提供一种数据处理装置,所述数据处理装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据处理程序,其中:
所述处理器包括卷积神经网络加速芯片,所述卷积神经网络加速芯片包括预设电路模块;
所述数据处理程序被所述处理器执行时实现上述任一项所述的数据处理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现上述任一项所述的数据处理方法的步骤。
本发明实施例提供的一种数据处理方法、数据处理装置及计算机可读存储介质,通过在检测到每个待处理量化数据的数据类型均为整数类型时,确定待处理量化数据的目标比特数,在每个待处理量化数据的目标比特数均高于预设比特数时,将每个待处理量化数据转化为至少两个第一中间数据,第一中间数据的比特数为预设比特数,预设比特数为预先设定的预设电路模块匹配的比特数,采用预设电路模块对每个第一中间数据进行处理,得到目标数据。卷积神经网络芯片只需要包括预设电路模块即可,通过预设电路模块即可对更高比特数的整数类型数据进行处理,不需要额外设计更高比特数的量化数据对应的电路模块,能够有效减少电路模块的数量,从而减小卷积神经网络加速芯片中电路模块的面积,降低功耗以及降低电路模块的成本。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的装置结构示意图;
图2为本发明数据处理方法第一实施例的流程示意图;
图3为本发明数据处理方法第二实施例的流程示意图;
图4为本发明数据处理方法第三实施例的流程示意图;
图5为本发明数据处理装置的架构示意图;
图6为本发明实施例涉及的两个待处理量化数据进行相乘运算的分解步骤示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的装置结构示意图。
如图1所示,该装置可以包括:处理器1001,例如CPU,存储器1002,通信总线1003。其中,通信总线1003用于实现这些组件之间的连接通信。存储器1002可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1002可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的装置结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1002中可以包括数据处理程序。
在图1所示的装置中,处理器1001可以用于调用存储器1002中存储的数据处理程序,并执行以下操作:
在检测到每个待处理量化数据的数据类型均为整数类型时,确定每个所述待处理量化数据的目标比特数;
在每个所述待处理量化数据的所述目标比特数均高于预设比特数时,将每个所述待处理量化数据转换为至少两个第一中间数据,所述第一中间数据的比特数为所述预设比特数,所述预设比特数为预先设定的所述预设电路模块匹配的比特数;
采用所述预设电路模块对每个所述第一中间数据进行处理,得到目标数据。
进一步地,处理器1001可以用于调用存储器1002中存储的数据处理程序,并执行以下操作:
分别将每个所述待处理量化数据进行拆分处理,得到每个所述待处理量化数据对应的所述第一中间数据;
其中,每个所述待处理量化数据对应的所述第一中间数据的数量为目标比值,所述目标比值为所述目标比特数与所述预设比特数的比值,每个所述待处理量化数据被拆分为至少两个所述第一中间数据。
进一步地,处理器1001可以调用存储器1002中存储的数据处理程序,还执行以下操作:
分别从每个所述待处理量化数据的低位至高位依次取所述预设比特数的第一字符串,并将每个所述预设比特数的所述第一字符串作为所述第一中间数据;
或者,分别从每个所述待处理量化数据的高位至低位依次取所述预设比特数的第二字符串,并将每个所述预设比特数的所述第二字符串作为所述第一中间数据。
进一步地,处理器1001可以调用存储器1002中存储的数据处理程序,还执行以下操作:
采用所述预设电路模块对所述第一中间数据进行处理,得到至少两个第二中间数据,所述处理包括卷积运算处理;
采用所述预设电路模块对所有所述第二中间数据进行求和,得到求和数据,将所述求和数据作为所述目标数据。
进一步地,处理器1001可以调用存储器1002中存储的数据处理程序,还执行以下操作:
对所有所述第一中间数据进行分组,得到至少四个数据组合,每个所述数据组合中包括两个所述第一中间数据,且每个所述数据组合中的所述第一中间数据之间部分不同;
采用所述预设电路模块对每个所述数据组合中的所述第一中间数据求乘积,得到每个所述数据组合对应的第一乘积数据;
根据每个所述数据组合对应的所述第一乘积数据,确定所述第二中间数据。
进一步地,处理器1001可以调用存储器1002中存储的数据处理程序,还执行以下操作:
根据所述待处理量化数据的所述目标比特数以及每个所述数据组合中所述第一中间数据的位权信息,分别确定每个所述第一乘积数据的权重;
对每个所述第一乘积数据以及每个所述第一乘积数据对应的所述权重求乘积,得到每个所述第一乘积数据对应的第二乘积数据,将每个所述第二乘积数据作为所述每个所述第二中间数据。
进一步地,处理器1001可以调用存储器1002中存储的数据处理程序,还执行以下操作:
在检测到所述待处理量化数据的所述数据类型不为所述整数类型时,输出提示信息;
和/或,在检测到每个所述待处理量化数据的所述目标比特数小于或者等于所述预设比特数时,采用所述预设电路模块对所述待处理量化数据进行处理,得到所述目标数据。
随着深度学习的快速发展,卷积神经网络已经大量应用于机器视觉应用,例如应用于图像识别与图像分类。然而,卷积神经网络的算法复杂度导致其推理运行时间过长,阻碍了卷积神经网络在日常应用中的部署。量化作为一种卷积神经网络压缩技术,能效降低算法复杂度,从而大大减低运行推理时间。虽然量化可以简化计算复杂度、加速计算速度,但是,使用量化后的数据进行计算会导致计算精度的降低。因此,通常针对不同的精度要求场景,会采用不同的量化方式。常见的量化方式有INT16、INT8等格式。其中INT8是使用8bit表示一个整数,INT16是使用16bit表示一个整数。为了满足不同应用场景需求,通常要求卷积神经网络加速芯片同时具备INT8、INT16等多种量化方式卷积神经网络计算。当卷积神经网络加速芯片同时具备INT8、INT16等多种量化方式卷积神经网络计算时,为了简化设计复杂度,通常不同量化方式采用不同的电路模块完成其功能,即:使用一个模块去实现INT8的卷积神经网络计算,使用另一个模块去实现INT16的卷积神经网络计算,两个模块各自独立工作,不相互影响。但是这种方法需要两个模块各自占用一部分芯片电路面积,必然导致芯片整体面积增大,并伴随芯片功耗、成本的增加。
参照图2,本发明第一实施例提供一种数据处理方法,所述方法包括:
步骤S10,在检测到每个待处理量化数据的数据类型均为整数类型时,确定每个所述待处理量化数据的目标比特数;
在本实施例中,执行主体为数据处理装置。卷积神经网络加速芯片,也称作量化卷积神经网络加速芯片。预设电路模块是卷积神经网络加速芯片包括的电路模块。数据类型比如int、float等类型。整数类型即为int。待处理量化数据是经过量化后得到的需要进行处理的数据。目标比特数为待处理数据的比特数。比特数是数据的位数。比如,INT8的比特数为8,INT16的比特数为16。
卷积神经网络加速芯片在进行数据处理时,主要是在至少两个量化数据之间进行数学运算处理,比如加法运算处理以及乘法运算处理。因此,在实际应用场景中,本实施例中的待处理量化数据的数量为至少两个。
步骤S20,在每个所述待处理量化数据的所述目标比特数均高于预设比特数时,将每个所述待处理量化数据转换为至少两个第一中间数据,所述第一中间数据的比特数为所述预设比特数,所述预设比特数为预先设定的所述预设电路模块匹配的比特数;
预设比特数是预先设定的预设电路模块匹配的比特数。其中,预设电路模块预先匹配某个量化精度的量化数据并能够进行处理,比如,预设电路模块匹配并可以处理INT8的量化数据,则不能够直接处理INT16、INT32的量化数据;预设电路模块可以处理INT16的量化数据,则不能够直接处理INT32的量化数据。第一中间数据是针对待处理量化数据拆分后得到的数据,第一中间数据的比特数与预设比特数相同。
可选地,预设比特数为8。即,预设电路模块匹配的比特数为8,预设电路模块预先匹配的能够处理的数据的量化精度为INT8。从而使得高于8比特数的量化数据都能够拆分后采用预设电路模块进行处理。
通过对每个待处理量化数据进行转换,将每个待处理量化数据转换为具有预设比特数的第一中间数据。比如,预设比特数为8,而待处理量化数据的量化精度为INT16,则转换后得到的第一中间数据分别为高8位的第一中间数据以及低8位的第一中间数据,其中,待处理量化数据采用二进制数据表示,二进制数据从右至左分别是从低位至高位,比如,某一二进制数为1111111111110000,则低8位为11110000,高8位为111111111。对于量化精度为INT32的待处理量化数据,则可以拆分得到4个8bit的第一中间数据,bit指比特。
在一实施例中,在每个所述待处理量化数据的所述目标比特数相同且均高于预设比特数时,将每个所述待处理量化数据转换为至少两个第一中间数据。从而进行相同量化精度的待处理量化数据之间的数据处理过程。
步骤S30,采用所述预设电路模块对每个所述第一中间数据进行处理,得到目标数据。
在经过转换后,所得到的第一中间数据的比特数为预设比特数,从而使得预设电路模块能够针对第一中间数据进行处理,不需要再额外增加相应量化精度的电路模块,从而降低卷积神经网络加速芯片的成本和功耗。
在一实施例中,在检测到所述待处理量化数据的所述数据类型不为所述整数类型时,输出提示信息;
和/或,在检测到每个所述待处理量化数据的所述目标比特数小于或者等于所述预设比特数时,采用所述预设电路模块对所述待处理量化数据进行处理,得到所述目标数据。
在本实施例中,通过在检测到每个待处理量化数据的数据类型均为整数类型时,确定待处理量化数据的目标比特数,在每个待处理量化数据的目标比特数相同且均高于预设比特数时,将每个待处理量化数据转化为至少两个第一中间数据,第一中间数据的比特数为预设比特数,预设比特数为预先设定的预设电路模块匹配的比特数,采用预设电路模块对每个第一中间数据进行处理,得到目标数据。卷积神经网络芯片只需要包括预设电路模块即可,通过预设电路模块即可对更高比特数的整数类型数据进行处理,不需要额外设计更高比特数的量化数据对应的电路模块,能够有效减少电路模块的数量,从而减小卷积神经网络加速芯片中电路模块的面积,以及降低电路模块的成本。
参照图3,本发明第二实施例提供一种数据处理方法,基于上述图2所示的第一实施例,所述步骤S20包括:
步骤S21,在每个所述待处理量化数据的所述目标比特数均高于预设比特数时,分别将每个所述待处理量化数据进行拆分处理,得到每个所述待处理量化数据对应的所述第一中间数据;
其中,每个所述待处理量化数据对应的所述第一中间数据的数量为目标比值,所述目标比值为所述目标比特数与所述预设比特数的比值,每个所述待处理量化数据被拆分为至少两个所述第一中间数据。
在进行拆分处理时,每个待处理量化数据拆分后得到至少两个第一中间数据。比如,预设电路模块支持量化精度为INT8的数据。若待处理量化数据的比特数为16,即待处理量化数据的量化精度为INT16,则拆分后得到两个量化精度为INT8的第一中间数据。若待处理量化数据的比特数为32,即待处理量化数据的量化精度为INT32,则拆分后得到4个量化精度为INT8的第一中间数据。从而,目标比值为目标比特数与预设比特数的比值,比如,16/8=2,或者32/8=4。
在一实施例中,所述分别将每个所述待处理量化数据进行拆分处理,得到每个所述待处理量化数据对应的所述第一中间数据的步骤包括:
分别从每个所述待处理量化数据的低位至高位依次取所述预设比特数的第一字符串,并将每个所述预设比特数的所述第一字符串作为所述第一中间数据;
或者,分别从每个所述待处理量化数据的高位至低位依次取所述预设比特数的第二字符串,并将每个所述预设比特数的所述第二字符串作为所述第一中间数据。
第一字符串为从低位至高位依次取值得到的具有预设比特数的字符串。第二字符串为从高位至低位依次取值得到的具有预设比特数的字符串。
比如,待处理量化数据的量化精度为INT16,具有16个比特数,二进制数为1111110011110000,则从低位至高位依次取值0、0、0、0、1、1、1、1,在取值的比特数达到预设比特数时,根据取值数据得到第一字符串即为11110000,此后,从下一位作为起始点继续开始进行取值,即从第9位开始取值,依次取值0、0、1、1、1、1、1、1,从而得到另一个具有8bit的第一字符串11111100。从高位至低位取值,采用相同的原理,仅改变取值的次序,即从高位依次取1、1、1、1、1、1、0、0,得到第二字符串为11111100,此后,从下一位开始取值,得到第二字符串为11110000。采用上述方式,从而通过不同的次序取值得到各个第一字符串或者第二字符串,进一步得到第一中间数据。
采用上述方式,将整数类型的高精度拆分成整数类型的低精度计算后,通过运用低精度运算电路,在不增加额外运算电路的前提下,实现了高精度运算。从而在不增加芯片电路的数量及面积的前提下,实现多精度运算融合的功能,芯片功能更丰富,应用场景更广泛。
在本实施例中,通过分别将每个所述待处理量化数据进行拆分处理,得到每个所述待处理量化数据对应的所述第一中间数据;其中,每个所述待处理量化数据对应的所述第一中间数据的数量为目标比值,所述目标比值为所述目标比特数与所述预设比特数的比值,每个所述待处理量化数据被拆分为至少两个所述第一中间数据。从而使得预设电路模块能够对拆分得到的第一中间数据进行处理,不需要再额外增加电路模块,降低成本和功耗。
参照图4,本发明第三实施例提供一种数据处理方法,基于上述图2所示的第一实施例,所述步骤S30包括:
步骤S31,采用所述预设电路模块对所述第一中间数据进行处理,得到至少两个第二中间数据,所述处理包括卷积运算处理;
第二中间数据是针对某两个第一中间数据进行乘法运算所得到的数据。
在一实施例中,所述步骤S31包括:
对所有所述第一中间数据进行分组,得到至少四个数据组合,每个所述数据组合中包括两个所述第一中间数据,且每个所述数据组合中的所述第一中间数据之间部分不同;
采用所述预设电路模块对每个所述数据组合中的所述第一中间数据求乘积,得到每个所述数据组合对应的第一乘积数据;
根据每个所述数据组合对应的所述第一乘积数据,确定所述第二中间数据。
数据组合为需要进行乘法运算的两个第一中间数据形成的组合。每个数据组合包括两个第一中间数据。分组时,需要选取每个第一中间数据对应的另一第一中间数据。每个数据组合中的所述第一中间数据部分不同指二者并非是同一个第一中间数据,但并不表明数值不同,即便是不同的第一中间数据,其数值也可能相同。第一乘积数据是对一个数据组合内的第一中间数据进行乘法运算得到的数据。
在一实施例中,所述根据每个所述第一乘积数据,确定所述第二中间数据的步骤包括:
根据所述待处理量化数据的所述目标比特数以及每个所述数据组合中所述第一中间数据的位权信息,分别确定每个所述第一乘积数据的权重;
对每个所述第一乘积数据以及每个所述第一乘积数据对应的所述权重求乘积,得到每个所述第一乘积数据对应的第二乘积数据,将每个所述第二乘积数据作为所述每个所述第二中间数据。
位权信息指第一中间数据的某一位或者某几位的单位值信息。第二乘积数据为第一乘积数据与权重的乘积。具体而言,位权信息是第一中间数据在原有对应的待处理量化数据中所处位置的单位值信息。比如,对于INT16的数据而言,其二进制数具有16位,分别包括高8位和低8位,进行拆分后针对两个低8位的二进制数据相乘时,由于不涉及位权的影响,所以直接相乘即可,但是,若涉及两个高8位的二进制数据相乘时,由于两个二进制数据原本的位权较高,直接相乘的结果不符合实际结果,此时需要参考其在原有数据中的位权确定权重,并将权重与第一乘积数据相乘得到第二乘积数据,进一步得到第二中间数据。
步骤S32,采用所述预设电路模块对所有所述第二中间数据进行求和,得到求和数据,将所述求和数据作为所述目标数据。
以下,结合一具体实现方式,对上述技术特征进行阐述:
在一场景中,预设电路模块匹配的预设比特数为8,换言之,预设电路模块的量化精度为INT8,通过充分复用INT8的预设电路模块,以完成INT16的卷积神经网络计算。
卷积神经网络中,最常见的是操作是乘法和加法操作,将相对应的输入数据和权重相乘后,再累加到一起,得到最终的数据。在INT8量化格式下,输入数据和权重都为8bit整数;在INT16量化格式下,输入数据和权重都为16bit整数。即在INT16量化格式下,需要执行两个INT16数据相乘然后累加,在INT8量化格式下需要执行两个INT8数据相乘然后累加。累加器的位宽远大于乘法器输出位宽,在INT8和INT16两种量化格式下可以直接复用。因此,最终需要解决的问题是怎样复用两个INT8数据相乘的电路完成两个INT16相乘的功能。其中,两个INT16的数据相乘时,可以将每个INT16数拆分成高8bit数据和低8bit数据,即2个INT8的数据,然后四个INT8对应相乘,再相加到一起即可完成INT16相乘的功能。具体操作参照图6所示:两个16bit数据A和B相乘转换成4个8bit a0、a1、b0、b1相乘后再相加的操作。其中8bit数据相乘就可以复用INT8数据相乘的电路。A和B分别代表INT16量化精度的待处理量化数据。a1和a0分别为从A中拆分得到的第一中间数据。b1和b0分别为从B中拆分得到的第一中间数据。数据组合有四个,分别是a1b0、a0b1、a1b1、a0b0。其中,每个数据组合内的第一中间数据相乘,即:a1*b0,a0*b1,a1*b1,a0*b0,分别得到四个第一乘积数据即:a1*b0,a0*b1,a1*b1,a0*b0。其中,由于a1和b1均为高8位的数据,从而根据其位权信息,得到高8位的数据对应的权重为28,由于a0和b0均为低8位的数据,从而根据其位权信息,得到低8位的数据对应的权重为20=1。因此,分别针对第一乘积数据与对应的权重相乘,可以得到四个第二乘积数据,即为:a1*b0*28*20,a0*b1*28*20,a1*b1*28*28,a0*b0*20。
在存在多个待处理量化数据的情况下,运算的原理相同,比如,当有n个待处理量化数据与其它的n个待处理量化精度数据相乘累加运算时,其计算公式转换如下:
上述计算公式中的Xi和Wi都是量化精度为INT16的数据,X0i是Xi低8bit数据,X1i是Xi的高8bit数据,W0i是Wi的低8bit数据,W1i是Wi的高8bit数据。从上述公式来看,n个INT16格式的数据相乘累加运算拆分成4组n个INT8格式的数据相乘累加运算,最终再将4组累加结果相加即可。i用于描述是第几个数据。
在本实施例中,通过采用所述预设电路模块对所述第一中间数据进行处理,得到至少两个第二中间数据,所述处理包括卷积运算处理;采用所述预设电路模块对所有所述第二中间数据进行求和,得到求和数据,将所述求和数据作为所述目标数据。将高精度的数据拆分成多个低精度数据,然后,充分复用低精度运算模块的电路,分批次先后进行卷积计算,最后将计算结果相加,最终得到高精度卷积计算结果的方法,即:通过数据拆分,将高精度量化方式的卷积运算转换成低量化精度的实现方式,从而达到运算电路复用、多种量化精度运算融合的方法,从而能够减低芯片的成本和功耗。
参照图5,图5为本发明实施例涉及的数据处理装置的架构示意图,所述数据处理装置包括:
确定模块10,用于在检测到每个待处理量化数据的数据类型均为整数类型时,确定每个所述待处理量化数据的目标比特数;
转换模块20,用于在每个所述待处理量化数据的所述目标比特数均高于预设比特数时,将每个所述待处理量化数据转换为至少两个第一中间数据,所述第一中间数据的比特数为所述预设比特数,所述预设比特数为预先设定的所述预设电路模块匹配的比特数;
处理模块30,用于采用所述预设电路模块对每个所述第一中间数据进行处理,得到目标数据。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台装置执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据处理方法,其特征在于,所述数据处理方法应用于数据处理装置,所述数据处理装置包括卷积神经网络加速芯片,所述卷积神经网络加速芯片包括预设电路模块,所述方法包括:
在检测到每个待处理量化数据的数据类型均为整数类型时,确定每个所述待处理量化数据的目标比特数;
在每个所述待处理量化数据的所述目标比特数均高于预设比特数时,将每个所述待处理量化数据转换为至少两个第一中间数据,所述第一中间数据的比特数为所述预设比特数,所述预设比特数为预先设定的所述预设电路模块匹配的比特数;
采用所述预设电路模块对每个所述第一中间数据进行处理,得到目标数据。
2.如权利要求1所述的方法,其特征在于,所述将每个所述待处理量化数据转换为至少两个第一中间数据的步骤包括:
分别将每个所述待处理量化数据进行拆分处理,得到每个所述待处理量化数据对应的所述第一中间数据;
其中,每个所述待处理量化数据对应的所述第一中间数据的数量为目标比值,所述目标比值为所述目标比特数与所述预设比特数的比值,每个所述待处理量化数据被拆分为至少两个所述第一中间数据。
3.如权利要求2所述的方法,其特征在于,所述分别将每个所述待处理量化数据进行拆分处理,得到每个所述待处理量化数据对应的所述第一中间数据的步骤包括:
分别从每个所述待处理量化数据的低位至高位依次取所述预设比特数的第一字符串,并将每个所述预设比特数的所述第一字符串作为所述第一中间数据;
或者,分别从每个所述待处理量化数据的高位至低位依次取所述预设比特数的第二字符串,并将每个所述预设比特数的所述第二字符串作为所述第一中间数据。
4.如权利要求1所述的方法,其特征在于,所述采用所述预设电路模块对每个所述第一中间数据进行处理,得到目标数据的步骤包括:
采用所述预设电路模块对所述第一中间数据进行处理,得到至少两个第二中间数据,所述处理包括卷积运算处理;
采用所述预设电路模块对所有所述第二中间数据进行求和,得到求和数据,将所述求和数据作为所述目标数据。
5.如权利要求4所述的方法,其特征在于,所述采用所述预设电路模块对所述第一中间数据进行处理,得到至少两个第二中间数据的步骤包括:
对所有所述第一中间数据进行分组,得到至少四个数据组合,每个所述数据组合中包括两个所述第一中间数据,且每个所述数据组合中的所述第一中间数据之间部分不同;
采用所述预设电路模块对每个所述数据组合中的所述第一中间数据求乘积,得到每个所述数据组合对应的第一乘积数据;
根据每个所述数据组合对应的所述第一乘积数据,确定所述第二中间数据。
6.如权利要求5所述的方法,其特征在于,所述根据每个所述第一乘积数据,确定所述第二中间数据的步骤包括:
根据所述待处理量化数据的所述目标比特数以及每个所述数据组合中所述第一中间数据的位权信息,分别确定每个所述第一乘积数据的权重;
对每个所述第一乘积数据以及每个所述第一乘积数据对应的所述权重求乘积,得到每个所述第一乘积数据对应的第二乘积数据,将每个所述第二乘积数据作为每个所述第二中间数据。
7.如权利要求1所述的方法,其特征在于,所述方法还包括;
在检测到所述待处理量化数据的所述数据类型不为所述整数类型时,输出提示信息;
和/或,在检测到每个所述待处理量化数据的所述目标比特数小于或者等于所述预设比特数时,采用所述预设电路模块对所述待处理量化数据进行处理,得到所述目标数据。
8.一种数据处理装置,其特征在于,所述数据处理装置包括:
确定模块,用于在检测到每个待处理量化数据的数据类型均为整数类型时,确定每个所述待处理量化数据的目标比特数;
转换模块,用于在每个所述待处理量化数据的所述目标比特数均高于预设比特数时,将每个所述待处理量化数据转换为至少两个第一中间数据,所述第一中间数据的比特数为所述预设比特数,所述预设比特数为预先设定的所述预设电路模块匹配的比特数;
处理模块,用于采用所述预设电路模块对每个所述第一中间数据进行处理,得到目标数据。
9.一种数据处理装置,其特征在于,所述数据处理装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据处理程序,其中:
所述处理器包括卷积神经网络加速芯片,所述卷积神经网络加速芯片包括预设电路模块;
所述数据处理程序被所述处理器执行时实现如权利要求1至7中任一项所述的数据处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如权利要求1至7中任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210082911.8A CN114118387A (zh) | 2022-01-25 | 2022-01-25 | 数据处理方法、数据处理装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210082911.8A CN114118387A (zh) | 2022-01-25 | 2022-01-25 | 数据处理方法、数据处理装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114118387A true CN114118387A (zh) | 2022-03-01 |
Family
ID=80361285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210082911.8A Pending CN114118387A (zh) | 2022-01-25 | 2022-01-25 | 数据处理方法、数据处理装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114118387A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111142840A (zh) * | 2019-12-27 | 2020-05-12 | 深圳鲲云信息科技有限公司 | 基于fpga的数据计算方法和装置 |
CN111967608A (zh) * | 2020-08-06 | 2020-11-20 | 北京灵汐科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN112101541A (zh) * | 2019-06-18 | 2020-12-18 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、集成电路装置、板卡和计算装置 |
CN112712172A (zh) * | 2019-10-25 | 2021-04-27 | 安徽寒武纪信息科技有限公司 | 用于神经网络运算的计算装置、方法、集成电路和设备 |
CN113408716A (zh) * | 2020-03-17 | 2021-09-17 | 安徽寒武纪信息科技有限公司 | 计算装置、方法、板卡和计算机可读存储介质 |
CN113743600A (zh) * | 2021-08-26 | 2021-12-03 | 南方科技大学 | 适用于多精度神经网络的存算一体架构脉动阵列设计方法 |
-
2022
- 2022-01-25 CN CN202210082911.8A patent/CN114118387A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112101541A (zh) * | 2019-06-18 | 2020-12-18 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、集成电路装置、板卡和计算装置 |
CN112712172A (zh) * | 2019-10-25 | 2021-04-27 | 安徽寒武纪信息科技有限公司 | 用于神经网络运算的计算装置、方法、集成电路和设备 |
CN111142840A (zh) * | 2019-12-27 | 2020-05-12 | 深圳鲲云信息科技有限公司 | 基于fpga的数据计算方法和装置 |
CN113408716A (zh) * | 2020-03-17 | 2021-09-17 | 安徽寒武纪信息科技有限公司 | 计算装置、方法、板卡和计算机可读存储介质 |
CN111967608A (zh) * | 2020-08-06 | 2020-11-20 | 北京灵汐科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN113743600A (zh) * | 2021-08-26 | 2021-12-03 | 南方科技大学 | 适用于多精度神经网络的存算一体架构脉动阵列设计方法 |
Non-Patent Citations (2)
Title |
---|
ZHIQIANG QUE等: "Optimizing Reconfigurable Recurrent Neural Networks", 《 2020 IEEE 28TH ANNUAL INTERNATIONAL SYMPOSIUM ON FIELD-PROGRAMMABLE CUSTOM COMPUTING MACHINES (FCCM)》 * |
严佳乐等: "低功耗神经网络计算芯片技术研究", 《中国科学: 信息科学》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112434801B (zh) | 一种按照比特精度进行权重拆分的卷积运算加速方法 | |
CN111240746A (zh) | 一种浮点数据反量化及量化的方法和设备 | |
US11468311B2 (en) | Micro-processor circuit and method of performing neural network operation | |
WO2024193337A1 (zh) | 卷积神经网络加速方法、系统、存储介质、装置及设备 | |
US11604970B2 (en) | Micro-processor circuit and method of performing neural network operation | |
CN116594589A (zh) | 浮点数乘法计算的方法、装置和算术逻辑单元 | |
CN111383157A (zh) | 图像处理方法、装置、车载运算平台、电子设备及系统 | |
CN111694544A (zh) | 多位复用乘加运算装置、神经网络运算系统以及电子设备 | |
CN117808101A (zh) | 一种基于fpga的神经网络推理方法、系统及存储介质 | |
CN114118387A (zh) | 数据处理方法、数据处理装置及计算机可读存储介质 | |
WO2023078364A1 (zh) | 矩阵乘法的运算方法及装置 | |
CN113283591B (zh) | 基于Winograd算法和近似乘法器的高效卷积实现方法及装置 | |
CN113672196B (zh) | 一种基于单数字信号处理单元的双乘法计算装置和方法 | |
CN115496181A (zh) | 深度学习模型的芯片适配方法、装置、芯片及介质 | |
US20190325311A1 (en) | Neural network circuit | |
CN114154631A (zh) | 一种基于fpga的卷积神经网络量化实现方法以及装置 | |
CN112232496A (zh) | 一种基于Tensorcore处理int4数据类型的方法、系统、设备及介质 | |
CN116402106B (zh) | 神经网络加速方法、神经网络加速器、芯片及电子设备 | |
CN116737390B (zh) | 原子操作的处理方法、装置、电子设备和存储介质 | |
CN116151340B (zh) | 并行随机计算神经网络系统及其硬件压缩方法、系统 | |
CN114492779B (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
US20210241080A1 (en) | Artificial intelligence accelerator and operation thereof | |
CN117435553A (zh) | 一种用于浮点数的存内计算结构 | |
CN116263875A (zh) | 一种卷积处理方法、系统以及终端设备 | |
CN111767984A (zh) | 一种基于固定移位的8位整型全量化推理方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220301 |
|
RJ01 | Rejection of invention patent application after publication |