CN111310115B - 数据处理方法、装置及芯片、电子设备、存储介质 - Google Patents
数据处理方法、装置及芯片、电子设备、存储介质 Download PDFInfo
- Publication number
- CN111310115B CN111310115B CN202010074848.4A CN202010074848A CN111310115B CN 111310115 B CN111310115 B CN 111310115B CN 202010074848 A CN202010074848 A CN 202010074848A CN 111310115 B CN111310115 B CN 111310115B
- Authority
- CN
- China
- Prior art keywords
- data
- processed
- chip
- processing
- channel
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 12
- 238000012545 processing Methods 0.000 claims abstract description 405
- 238000000034 method Methods 0.000 claims abstract description 77
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 14
- 238000013527 convolutional neural network Methods 0.000 description 12
- 238000013528 artificial neural network Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000012805 post-processing Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000012512 characterization method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
Abstract
本申请公开了一种数据处理方法、装置及芯片、电子设备、存储介质。该方法包括:获取第一待处理数据,以及输入通道数,所述第一待处理数据的通道数量大于所述输入通道数;根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,其中,所述第二待处理数据对应的通道数小于或等于所述输入通道数;获取处理参数,并使用所述处理参数对所述第二待处理数据进行处理,得到第一数据。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置及芯片、电子设备、存储介质。
背景技术
得益于强大的处理能力,深度卷积神经网络被广泛应用于计算机视觉领域和语音处理领域中。深度卷积神经网络对数据的处理过程包含大量的卷积处理,由于卷积处理的数据处理量较大,且受限于硬件(如现场可编程逻辑门阵列(field programmable gatearray,FPGA)、专用集成电路(application specific integrated circuit,ASIC)、图像处理器(graphics processingunit,GPU)的带宽和功耗,在通过硬件执行深度神经网络的在线推理过程中,硬件的处理效率低。为提高硬件的处理效率,众多深度神经网络加速方法应运而生。
传统深度神经网络加速方法通过从深度神经网络中每一层网络的输入数据中获得至少一个数据块,再通过硬件依次对每一个数据块进行卷积处理,以提高硬件的处理效率,但该方法的通用性较差。
发明内容
本申请提供一种数据处理方法、装置及芯片、电子设备、存储介质。
第一方面,提供了一种数据处理方法,所述方法包括:
获取第一待处理数据,以及输入通道数,所述第一待处理数据的通道数量大于所述输入通道数;
根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,其中,所述第二待处理数据对应的通道数小于或等于所述输入通道数;
获取处理参数,并使用所述处理参数对所述第二待处理数据进行处理,得到第一数据。
在该方面中,依据输入通道数对第一待处理数据进行处理,可得到通道数量小于或等于输入通道数的第二待处理数据。将该方面的方法应用于芯片,可对芯片的输入数据进行处理,以使通道数量大于芯片的输入通道数的第一待处理数据,经处理后能得到通道数量小于或等于芯片的输入通道数的第二待处理数据,这样可以使输入数据的通道数量小于或等于芯片的输入通道数,可使芯片能处理任意通道数量的输入数据,以此提高芯片的通用性。
在一种可能实现的方式中,所述处理参数包括卷积核的参数,所述方法应用于一种芯片,所述输入通道数为所述芯片的输入通道数;
所述使用所述处理参数对所述第二待处理数据进行处理,得到第一数据,包括:
通过所述芯片,使用所述卷积核的参数,对所述第二待处理数据,进行卷积处理,以得到所述第一数据。
在该种实现方式中,芯片可用于实现深度神经网络的卷积处理。通过对深度神经网络的输入数据(即第一待处理数据)进行处理,得到通道数量小于或等于芯片的输入通道数的第二待处理数据,可通过芯片实现深度神经网络中任意卷积层的卷积处理。从而提高用于实现深度神经网络的卷积处理的芯片的通用性。
在一种可能实现的方式中,所述根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,包括:
按照所述输入通道数,将所述第一待处理数据划分为至少两份数据,每份数据对应的通道数量小于或等于所述输入通道数,且所述每份数据中单个通道的数据量小于或等于数据处理量门限;
将所述至少两份数据确定为所述第二待处理数据。
在该种实现方式中,以芯片的数据处理量门限和输入通道数为依据,对第一待处理数据进行划分得到第二待处理数据,可使芯片在处理第二待处理数据的过程中,充分利用芯片的处理资源,进而提高芯片的处理效率。
在一种可能实现的方式中,所述第一待处理数据包含至少两个通道的数据;
所述根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,包括:
将所述第一待处理数据中第一通道的数据与第二通道的数据进行拼接,以得到所述第二待处理数据,所述第二待处理数据对应的通道数量小于或等于所述输入通道数,且所述第二待处理数据中单个通道的数据量小于或等于数据处理量门限。
在该种可能实现的方式中,在第一待处理数据中的单个通道的数据量小于芯片的数据处理量门限的情况下,将第一待处理数据中的至少两个通道的数据进行拼接得到第二待处理数据,可使芯片在处理第二待处理数据的过程中,充分利用芯片的处理资源,进而提高芯片的处理效率。
在一种可能实现的方式中,所述第一待处理数据包括第一待处理数据集,所述第二待处理数据包括第二待处理数据集,在所述第二待处理数据集中存在与所述第一待处理数据集中每项待处理数据对应的数据;
所述通过所述芯片,使用所述卷积核的参数,对所述第二待处理数据,进行卷积处理,以得到所述第一数据,包括:
获取目标输出通道数、所述芯片的输出通道数、处理批次数和所述芯片的参考值;
在所述输出通道数小于所述目标输出通道数的情况下,获取所述第二待处理数据和所述卷积核的参数;所述卷积核的参数包含至少一组权重;
在所述处理批次数小于或等于所述参考值的情况下,通过所述芯片,使用所述至少一组权重中的一组权重对所述第二待处理数据进行卷积处理获得一组第二数据,并将所述一组第二数据存储至所述芯片的缓存;
在分别使用所述至少一组权重中的每一组权重对所述第二待处理数据进行卷积处理获得至少一组第二数据的情况下,将所述缓存中存储的所述至少一组第二数据作为所述第一数据写入所述芯片的存储器。
在该种可能实现的方式中,在芯片的输出通道数小于目标输出通道数,且处理批次数小于或等于芯片的参考值的情况下,可通过一个时分复用周期完成对第二待处理数据的处理。通过将每个时分复用周期内得到的处理结果(即上述第二数据)存储至缓存,直至完成对第二待处理数据的处理,将缓存中存储的至少一组第二数据写入存储器,可减少芯片读取数据的次数和写入数据的次数。从而提高芯片的读取效率和写入效率,减少芯片的功耗。
在一种可能实现的方式中,所述方法还包括:
在所述处理批次数大于所述参考值的情况下,从所述至少一组权重中选取至少一组权重,作为时分复用权重集;所述时分复用权重集中权重的组数等于所述参考值;
使用所述时分复用权重集中的一组权重对所述第二待处理数据集进行卷积处理,获得一组第三数据,并将所述一组第三数据存储至所述芯片的缓存;
在分别使用所述时分复用权重集中的每一组权重对所述第二待处理数据集进行卷积处理,获得至少一组第三数据的情况下,将所述缓存中存储的所述至少一组第三数据写入所述存储器。
在该种可能实现的方式中,在芯片的输出通道数小于目标输出通道数,且处理批次数大于芯片的参考值的情况下,可通过至少两个时分复用周期完成对第二待处理数据的处理。通过将每个时分复用周期内得到的处理结果(即上述第二数据)存储至缓存,直至完成对第二待处理数据的处理,将缓存中存储的至少一组第二数据写入存储器,可减少芯片读取数据的次数和写入数据的次数。从而提高芯片的读取效率和写入效率,减少芯片的功耗。
在又一种可能实现的方式中,所述存储器包括全局存储器;所述全局存储器能被所述芯片访问,且所述全局存储器能被除所述芯片之外的硬件访问;
所述第二待处理数据和所述卷积核的参数存储于所述存储器,包括:
所述第二待处理数据和所述卷积核的参数存储于所述全局存储器。
在该种实现方式中,通过将第二待处理数据和卷积核的参数存储至全局存储器,可降低芯片的成本。
在又一种可能实现的方式中,所述存储器包括局部存储器;所述局部存储器能被所述芯片访问,且不能被除所述芯片之外的硬件访问;
所述第二待处理数据和所述卷积核的参数存储于所述存储器,包括:
所述第二待处理数据和所述卷积核的参数存储于所述局部存储器。
在该种实现方式中,通过将第二待处理数据和卷积核的参数存储至局部存储器,可提高芯片读取第二待处理数据和卷积核的参数的速度,从而提高芯片的处理效率。
在又一种可能实现的方式中,所述存储器包括全局存储器和局部存储器;所述全局存储器能被所述芯片访问,且所述全局存储器能被除所述芯片之外的硬件访问;所述局部存储器能被所述芯片访问,且不能被除所述芯片之外的硬件访问;
所述第二待处理数据和所述卷积核的参数存储于所述存储器,包括:
所述第二待处理数据和所述卷积核的参数存储于所述全局存储器;或,
所述第二待处理数据和所述卷积核的参数存储于所述局部存储器;或,
所述第二待处理数据存储于所述全局存储器,所述卷积核的参数存储于所述局部存储器;或,
所述第二待处理数据存储于局部存储器,所述卷积核的参数存储于所述全局存储器。
在又一种可能实现的方式中,所述通过所述芯片,使用所述卷积核的参数,对所述第二待处理数据,进行卷积处理,以得到所述第一数据,包括:
使用所述卷积核的参数对所述第二待处理数据进行卷积处理,使所述第二待处理数据中的所有数据映射至所述芯片的输出通道中的一个通道,获得第四数据;所述第四数据为所述第一数据中的一个通道的数据;或,
使用所述卷积核的参数对所述第二待处理数据进行卷积处理,使所述第二待处理数据中的一个通道的数据分别映射至所述芯片的每一个输出通道,获得第五数据;所述第五数据属于所述第一数据。
在该种实现方式中,通过将第二待处理数据中的所有数据映射至芯片的输出通道中的一个通道,可一次性读取完第二待处理数据,并分批次读取权重。由于第二待处理数据中单个通道的数据量大于卷积核的参数中的权重的数据量,通过减少芯片读取第二待处理数据的次数,可提高芯片读取数据的效率。
通过将第二待处理数据中的一个通道的数据分别映射至芯片的每一个输出通道,可一次性读取完所有权重,并分批次读取第二待处理数据。由于第二待处理数据中单个通道的数据量大于卷积核的参数中的权重的数据量,也就意味着,存储第二待处理数据中单个通道的数据所需的缓存容量比存储权重所需的缓存容量大。通过使芯片分批次读取第二待处理数据,可降低芯片的缓存容量的需求,进而降低芯片的成本。
第二方面,提供了一种数据处理装置,所述装置包括:
获取单元,用于获取第一待处理数据,以及输入通道数,所述第一待处理数据的通道数量大于所述输入通道数;
第一处理单元,用于根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,其中,所述第二待处理数据对应的通道数小于或等于所述输入通道数;
所述获取单元,还用于获取处理参数;
第二处理单元,用于使用所述处理参数对所述第二待处理数据进行处理,得到第一数据。
在一种可能实现的方式中,所述处理参数包括卷积核的参数,所述装置包括一种芯片,所述输入通道数为所述芯片的输入通道数;
所述第二处理单元,用于:
通过所述芯片,使用所述卷积核的参数,对所述第二待处理数据,进行卷积处理,以得到所述第一数据。
在一种可能实现的方式中,所述第一处理单元,用于:
按照所述输入通道数,将所述第一待处理数据划分为至少两份数据,每份数据对应的通道数量小于或等于所述输入通道数,且所述每份数据中单个通道的数据量小于或等于数据处理量门限;
将所述至少两份数据确定为所述第二待处理数据。
在一种可能实现的方式中,所述第一待处理数据包含至少两个通道的数据;
第一处理单元,用于:
将所述第一待处理数据中第一通道的数据与第二通道的数据进行拼接,以得到所述第二待处理数据,所述第二待处理数据对应的通道数量小于或等于所述输入通道数,且所述第二待处理数据中单个通道的数据量小于或等于数据处理量门限。
在一种可能实现的方式中,所述第一待处理数据包括第一待处理数据集,所述第二待处理数据包括第二待处理数据集,在所述第二待处理数据集中存在与所述第一待处理数据集中每项待处理数据对应的数据;
所述获取单元,用于获取目标输出通道数、所述芯片的输出通道数、处理批次数和所述芯片的参考值;
所述第二处理单元,用于:
在所述输出通道数小于所述目标输出通道数的情况下,获取所述第二待处理数据和所述卷积核的参数;所述卷积核的参数包含至少一组权重;
在所述处理批次数小于或等于所述参考值的情况下,通过所述芯片,使用所述至少一组权重中的一组权重对所述第二待处理数据进行卷积处理获得一组第二数据,并将所述一组第二数据存储至所述芯片的缓存;
在分别使用所述至少一组权重中的每一组权重对所述第二待处理数据进行卷积处理获得至少一组第二数据的情况下,将所述缓存中存储的所述至少一组第二数据作为所述第一数据写入所述芯片的存储器。
在一种可能实现的方式中,所述第二处理单元,还用于:
在所述处理批次数大于所述参考值的情况下,从所述至少一组权重中选取至少一组权重,作为时分复用权重集;所述时分复用权重集中权重的组数等于所述参考值;
使用所述时分复用权重集中的一组权重对所述第二待处理数据集进行卷积处理,获得一组第三数据,并将所述一组第三数据存储至所述芯片的缓存;
在分别使用所述时分复用权重集中的每一组权重对所述第二待处理数据集进行卷积处理,获得至少一组第三数据的情况下,将所述缓存中存储的所述至少一组第三数据写入所述存储器。
在又一种可能实现的方式中,所述存储器包括全局存储器;所述全局存储器能被所述芯片访问,且所述全局存储器能被除所述芯片之外的硬件访问;
所述第二待处理数据和所述卷积核的参数存储于所述存储器,包括:
所述第二待处理数据和所述卷积核的参数存储于所述全局存储器。
在又一种可能实现的方式中,所述存储器包括局部存储器;所述局部存储器能被所述芯片访问,且不能被除所述芯片之外的硬件访问;
所述第二待处理数据集和所述卷积核的参数存储于所述存储器,包括:
所述第二待处理数据集和所述卷积核的参数存储于所述局部存储器。
在又一种可能实现的方式中,所述存储器包括全局存储器和局部存储器;所述全局存储器能被所述芯片访问,且所述全局存储器能被除所述芯片之外的硬件访问;所述局部存储器能被所述芯片访问,且不能被除所述芯片之外的硬件访问;
所述第二待处理数据和所述卷积核的参数存储于所述存储器,包括:
所述第二待处理数据和所述卷积核的参数存储于所述全局存储器;或,
所述第二待处理数据和所述卷积核的参数存储于所述局部存储器;或,
所述第二待处理数据存储于所述全局存储器,所述卷积核的参数存储于所述局部存储器;或,
所述第二待处理数据存储于局部存储器,所述卷积核的参数存储于所述全局存储器。
在又一种可能实现的方式中,所述第二处理单元,用于:
使用所述卷积核的参数对所述第二待处理数据进行卷积处理,使所述第二待处理数据中的所有数据映射至所述芯片的输出通道中的一个通道,获得第四数据;所述第四数据为所述第一数据中的一个通道的数据;或,
使用所述卷积核的参数对所述第二待处理数据进行卷积处理,使所述第二待处理数据中的一个通道的数据分别映射至所述芯片的每一个输出通道,获得第五数据;所述第五数据属于所述第一数据。
第三方面,提供了一种芯片,所述芯片用于执行如上述第一方面及其任意一种可能实现的方式的方法。
第四方面,提供了一种电子设备,包括:芯片、处理器和存储器,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,在所述芯片执行所述计算机指令的情况下,所述电子设备执行如上述第一方面及其任意一种可能实现的方式的方法。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序包括程序指令,所述程序指令在被电子设备的处理器执行的情况下,使所述处理器执行如上述第一方面及其任意一种可能实现的方式的方法。
第六方面,提供了一种包含指令的计算机程序产品,在所述计算机程序产品在计算机上运行的情况下,使得所述计算机执行上述第一方面及其任一种可能的实现方式的方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本申请的技术方案。
图1为本申请实施例提供的一种数据处理方法的流程示意图;
图2为本申请实施例提供的一种芯片的结构示意图;
图3为本申请实施例提供的另一种数据处理方法的流程示意图;
图4为本申请实施例提供的一种拼接示意图;
图5为本申请实施例提供的另一种拼接示意图;
图6为本申请实施例提供的一种卷积神经网络的结构示意图;
图7为本申请实施例提供的又一种数据处理方法的流程示意图;
图8为本申请实施例提供的一种芯片时分复用周期的示意图;
图9a为本申请实施例提供的一种芯片执行卷积处理的示意图;
图9b为本申请实施例提供的另一种芯片执行卷积处理的示意图;
图10a为本申请实施例提供的又一种芯片执行卷积处理的示意图;
图10b为本申请实施例提供的又一种芯片执行卷积处理的示意图;
图11为本申请实施例提供的另一种芯片的结构示意图;
图12为本申请实施例提供的又一种芯片的结构示意图;
图13为本申请实施例提供的又一种芯片的结构示意图;
图14为本申请实施例提供的一种数据处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例的执行主体为数据处理装置,数据处理装置可以是以下任意一种:芯片、手机、计算机、服务器、平板电脑。
下面结合本申请实施例中的附图对本申请实施例进行描述。
请参阅图1,图1是本申请实施例提供的一种数据处理方法的流程示意图。
101、获取第一待处理数据,以及输入通道数。
本申请实施例中,第一待处理数据可以是图像或语音数据或语句。第一待处理数据的通道数量大于或等于1。例如,在第一待处理数据为一张图像的情况下,第一待处理数据的通道数量可以是3。又例如,在第一待处理数据为两个语音数据,且每个语音数据的通道数量为2的情况下,第一待处理数据的通道数量为2。
本申请实施例中,输入通道数可以是芯片的输入通道数。其中,该芯片可用于实现卷积神经网络。例如,上述芯片可以FPGA。又例如,上述芯片可以是ASIC。再例如,上述芯片可以是GPU。
本申请实施例中,第一待处理数据的通道数量大于输入通道数。
102、根据上述输入通道数,对上述第一待处理数据进行处理,以得到第二待处理数据。
由于芯片的输入通道数是固定的,而输入至卷积神经网络中不同的卷积层的数据的通道数量可能不同。传统方法需要通过不同的芯片实现不同卷积层的处理。例如,卷积神经网络A包括卷积层a和卷积层b。输入至卷积层a的数据的通道数量为3,输入至卷积层b的数据的通道数量为4。假设芯片A的输入通道数为3,通过芯片A可完成对输入至卷积层a的数据的处理,但由于输入至卷积层b的数据的通道数量大于芯片A的输入通道数,无法通过芯片A完成对输入至卷积层b的数据的处理,需要通过一个输入通道数更大的芯片完成对输入至卷积层b的数据的处理。如,可通过输入通道数为4的芯片B完成对输入至卷积层b的数据的处理。
本申请实施例中,在通过芯片逐层实现卷积神经网络中的卷积层的处理过程中,可依据芯片的输入通道数和输入至卷积层的数据(本实施例中,输入至卷积层的数据即为上述第一待处理数据)的通道数量,判断是否需要对第一待处理数据进行处理。在需要对第一待处理数据进行处理时,通过对第一待处理数据进行处理,使处理得到的数据的通道数量小于或等于芯片的输入通道数。这样可实现通过一个芯片完成不同卷积层的处理。
举例来说,芯片的输入通道数为2。第一待处理数据包括一张图像,图像的通道数量为3。由于第一待处理数据的通道数量大于芯片的输入通道数,无法在芯片的一个处理批次内将第一待处理数据中的所有数据输入至芯片,进而无法通过芯片完成对第一待处理数据的处理。此时,需要对第一待处理数据进行处理,使处理得到的数据的通道数量小于或等于芯片的输入通道数,以通过至少两个处理批次处理完第一待处理数据中的所有数据。
在一种可能实现的方式中,通过从第一待处理数据中划分出n(n小于或等于芯片的输入通道数)个通道的数据,可获得芯片在一个处理批次内的输入数据(即上述第二待处理数据)。以该种划分方式对第一待处理数据进行处理,并通过至少两个处理批次可完成对第一待处理数据中所有数据的处理。例如,第一待处理数据包括两张图像,每张图像的通道数量均为3。芯片的输入通道数为4。由于第一待处理数据的通道数量(即3+3=6)大于芯片的输入通道数,需要对第一待处理数据进行划分。可将第一待处理数据划分为通道数量为4的第二待处理数据a和通道数量为2的第二待处理数据b。芯片通过一个处理批次处理第二待处理数据a,通过另一个处理批次处理第二待处理数据b,以完成对第一待处理数据的处理。本申请对处理第二待处理数据a和处理第二待处理数据b的先后顺序不做限定。
在另一种可能实现的方式中,第一待处理数据的通道数量大于或等于2。通过对第一待处理数据中的至少两个通道的数据进行拼接,使第一待处理数据的通道数量小于或等于芯片的输入通道数,得到拼接后的第一待处理数据。芯片可通过一个处理批次完成对拼接后的第一待处理数据的处理,即完成对第一待处理数据的处理。例如,第一待处理数据包含4个通道的数据,4个通道的数据分别为:第一通道数据、第二通道数据、第三通道数据、第四通道数据。芯片的输入通道数为3。通过对第一通道数据和第二通道数据进行拼接,得到第五通道数据。将第三通道数据、第四通道数据和第五通道数据,作为拼接后的第一待处理数据。这样,拼接后的第一待处理数据的通道数量为3。芯片可通过一个处理批次完成对拼接后的第一待处理数据的处理,即完成对第一待处理数据的处理。
在本步骤中,依据输入通道数,对第一待处理数据进行处理,以得到第二待处理数据,可实现通过芯片完成对通道数为任意值的输入数据的处理,即可实现对任意卷积层的输入数据的卷积处理,以此提高本申请提供的技术方案的通用性。
103、获取处理参数,并使用上述处理参数对上述第二待处理数据进行处理,得到第一数据。
本申请实施例中,处理参数包括卷积核的参数,卷积核的参数包括卷积核的权重和卷积核的偏置。
在一种可能实现的方式中,芯片具有如图2所示的结构。在该结构中,缓存用于存储输入数据(即芯片在每个处理批次内需要处理的数据)、芯片在每个处理批次内需要使用的卷积核的参数以及输出数据(即芯片在每个处理批次内处理得到的数据)。该结构中的卷积处理单元用于基于卷积核的权重对输入数据进行卷积以及累加,获得卷积处理后的数据。基于卷积核的偏置和卷积处理后的数据可获得输出数据。
可选的,图2所示的结构可包括预处理单元,和/或后处理单元。上述预处理单元可用于对数据进行数学变换,如:将时域数据转换为频域数据。上述后处理单元可用于对数据进行预处理单元执行的数学逆变换,如:将频域数据转换为时域数据,后处理单元还可用于实现池化处理、差值处理、softmax函数的实现、剪裁数据、调整数据的分辨率等操作。例如,图2所示的结构中的输入数据为时域数据,通过预处理单元对输入数据的处理,可将输入数据转换为频域数据。又例如,卷积处理单元的输出数据为尺寸为100*100的图像的情况下,可通过后处理单元对图像进行剪裁,得到尺寸为50*50的图像。再例如,卷积处理单元输出的数据为图像,可通过后处理单元将图像的分辨率调高。
芯片使用卷积核的参数对第二待处理数据进行卷积处理,可得到第一数据。
得益于依据芯片的输入通道对输入数据进行处理,使芯片能处理通道数量不同的输入数据。将本实施例提供的技术方案应用于芯片,可使芯片具有很好的通用性。
在进行接下来的阐述之前,首先定义“芯片的数据处理量门限”这个概念。本申请实施例中,芯片的数据处理量门限指芯片在一个处理批次内能处理的单个通道的数据量的最大值。例如,芯片的数据处理量门限为8千字节,表征该芯片在一个处理批次内能处理的单个通道的数据量最多为8千字节。
由于芯片的硬件资源有限,芯片在一个处理批次内的处理能力有限,第二待处理数据的数据量较大,而在第二待处理数据的数据量大于芯片的数据处理量门限的情况下,芯片无法在一个处理批次内处理完第二待处理数据,需要通过至少两个处理批次才能完成对第二待处理数据的处理。由于第二待处理数据的数据量通常较大,芯片的缓存的存储空间通常较小,第二待处理数据存储于外部存储器(如芯片的内存)。芯片在对第二待处理数据进行处理之前,需从外部存储器中读取第二待处理数据,并将第二待处理数据存储至缓存。需要说明的是,受芯片硬件特性的影响,芯片往往会在缓存中的数据均处理完成后,再对存储器中的数据进行处理,因此,在芯片对第二待处理数据进行处理的过程中,芯片将不会从外部存储器内读取除第二待处理数据之外的数据。直到芯片将存储于缓存中的第二待处理数据处理完之后,才执行从外部存储器读取数据的操作。这将大大降低芯片的读取效率,进而降低芯片的处理效率。
举例来说,通过对第一待处理数据进行处理,得到第二待处理数据A和第二待处理数据B。芯片在对第一待处理数据进行卷积处理的过程中,首先从外部存储器中读取第二待处理数据A,并将第二待处理数据A存储至缓存。从存储于缓存中的第二待处理数据A中选取数据量小于或等于芯片的数据处理门限的数据块,作为第一个处理批次内被处理的数据。在对第一个处理批次内被处理的数据进行处理的过程中,芯片的缓存不再从外部存储器中读取第二待处理数据B。直至芯片处理完第二待处理数据A中所有数据后,芯片的缓存从外部存储器中读取第二待处理数据B。显然,受芯片硬件特性的影响,芯片往往会在缓存中的数据均处理完成后,再对存储器中的数据进行处理,在芯片对第二待处理数据A进行处理的过程中,芯片的缓存的读取资源处于空闲状态,这无疑大大降低了芯片的读取效率。比如,数据处理量门限为10,芯片缓存中容纳的数据量为15,在一个处理批次内,芯片能并行处理10个单位的数据,但是由于缓存中还有5个单位的数据未被处理,因此,芯片不会从外部读取数据。再比如,数据的处理量门限为10,芯片缓存中容纳的数据量为10,在一个处理批次内,芯片能并行处理10个单位的数据,由于缓存中没有数据,芯片会从外部读取数据并进行数据处理。
为提高芯片的读取效率,本申请实施例还提供了另一种对第一待处理数据进行处理的技术方案。请参阅图3,图3是本申请实施例提供的另一种数据处理方法的流程示意图。
301、按照上述输入通道数,将上述第一待处理数据划分为至少两份数据。
如上所述,输入通道数是固定的,因此可将第一待处理数据划分为至少两份数据,每份数据对应的通道数量小于或等于输入通道数。例如(例1),第一待处理数据的通道数量为6,输入通道数为4。可将第一待处理数据划分为数据A和数据B,其中,数据A的通道数量为4,数据B的通道数量为2。也可将第一待处理数据划分为数据C和数据D,其中,数据C的通道数量和数据D的通道数量均为3。可选的,优先从第一待处理数据中划分出通道数等于输入通道数的数据,这样可充分利用芯片的读取资源,提高芯片的读取效率。如例1中将第一待处理数据划分为数据A和数据B。
在对第一待处理数据进行划分时,本实施还考虑了芯片的数据处理量门限,以充分利用芯片的处理资源,并提高芯片的读取效率。
为充分利用芯片的处理资源,需使每一个处理批次内的输入数据的数据量尽可能的接近芯片的数据处理量门限。由于芯片的数据处理量门限为已知,可依据芯片的数据处理量门限,确定从第一待处理数据中划分出来的每份数据的数据量,使划分得到的每一份数据中单个通道的数据量小于或等于数据处理量门限。
在一种可能实现的方式中,第一待处理数据中每个通道的数据均为二维矩阵,且该矩阵中的每个数据的数据量均相等(如,图像中的每个像素的数据量均相等)。依据数据处理量门限,可从第一待处理数据中的至少一个通道的数据中选取包含最优数量个数据的数据集(下文将称为最优数据集),作为第三待处理数据。按照输入通道数,将第三待处理数据划分为至少两份数据。将至少两份数据确定为第二待处理数据。上述最优数量可参见下例,设最优数量为h,则h个数据的数据量小于或等于芯片的数据处理量门限,且h+1个数据的数据量大于芯片的数据处理量门限。上述h为正整数。
举例来说,第一待处理数据包含3个通道的数据,分别为第一通道数据、第二通道数据和第三通道数据。输入通道数为2。从第一通道数据中选取最优数据集,得到第四通道数据。从第二通道数据中选取最优数据集,得到第五通道数据。从第三通道数据中选取最优数据集,得到第六通道数据。将第四通道数据、第五通道数据和第六通道数据,作为第三待处理数据。将第三待处理数据划分为数据A和数据B,其中,数据A包括第四通道数据和第五通道数据,数据B包括第六通道数据。
在另一种可能实现的方式中,第一待处理数据中每个通道的数据均为二维矩阵,且该矩阵中的每个数据的数据量均相等(如,图像中的每个像素的数据量均相等)。依据输入通道数,将第一待处理数据进行划分为至少两个第四待处理数据,其中,每个第四待处理数据的通道数小于或等于输入通道数。依据数据处理量门限,可从至少两个第四待处理数据中的至少一个通道的数据中选取包含最优数量个数据的数据集(下文将称为最优数据集),得到至少两份数据。将至少两份数据确定为第二待处理数据。
举例来说,第一待处理数据包含3个通道的数据,分别为第一通道数据、第二通道数据和第三通道数据。输入通道数为2。依据输入通道数,将第一待处理数据进行划分为第四待处理数据A和第四待处理数据B,其中,第四待处理数据A包括第一通道数据和第二通道数据,第四待处理数据B包括第三通道数据。从第一通道数据中选取最优数据集,得到第四通道数据。从第二通道数据中选取最优数据集,得到第五通道数据。从第三通道数据中选取最优数据集,得到第六通道数据。将第四通道数据和第五通道数据作为一份数据,将第六通道数据作为另一份数据。
在一种从第一待处理数据的单个通道的数据中选取最优数据集的方式中,确定从单个通道的数据中选取的最优数据集包含k列数据,进而可依据芯片的数据处理量门限和k个数据的数据量,确定最优数据集的高,其中,k为正整数。例如,假设k=6,芯片的数据处理量门限为8千字节,在从第一待处理数据中的单个通道的数据中选取尺寸为6*4(即6行4列)的数据集的数据量为7.4千字节,且从第一待处理数据中选取尺寸为7*4(即7行4列)的数据集的数据量为8.2千字节的情况下,确定从第一待处理数据中的单个通道的数据中选取尺寸为6*4的数据集,作为单个通道的数据的最优数据集。
在另一种从第一待处理数据的单个通道的数据中选取最优数据集的方式中,可确定从单个通道的数据中选取的最优数据集包含t行数据,进而可依据芯片的数据处理量门限和t个数据的数据量,确定最优数据集的宽,其中,t为正整数。例如,假设t=5,芯片的处理能力为8千字节,在从第一待处理数据中的单个通道的数据中选取尺寸为5*4(即5行4列)的数据集的数据量为7.4千字节,且从第一待处理数据中选取尺寸为5*5(即5行5列)的数据集的数据量为8.2千字节的情况下,确定从第一待处理数据中的单个通道的数据中选取尺寸为5*4的数据集,作为单个通道的数据的最优数据集。
由于依据本实施例提供的技术方案对第一待处理数据划分得到的第二待处理数据中的每个通道的数据量均小于数据处理量门限,芯片可通过一个处理批次处理完第二待处理数据。这样,在芯片对第二待处理数据进行处理的过程中,芯片仍然可从外部存储器中读取数据,从而提高芯片的读取效率。
例如,第一待处理数据包含2个通道的数据,依据本实施例提供的技术方案对第一待处理数据中的第一个通道的数据进行划分可得到第二待处理数据A和第二待处理数据B,依据本实施例提供的技术方案对第一待处理数据中的第二个通道的数据进行划分可得到第二待处理数据C和第二待处理数据D。假设芯片的输入通道数为1,芯片调用处理资源对第二待处理数据A进行处理,而在芯片对第二待处理数据A进行处理的同时,芯片的缓存从外部存储器内读取第二待处理数据B。在芯片处理完第二待处理数据A之后,芯片对存储于缓存中的第二待处理数据B进行处理。在芯片对第二待处理数据B进行处理的同时,芯片的缓存从外部存储器内读取第二待处理数据C。同理,在芯片对第二待处理数据C进行处理的同时,芯片的缓存从外部存储器内读取第二待处理数据D。
302、将上述至少两份数据确定为上述第二待处理数据。
本实施以芯片的数据处理量门限和输入通道数为依据,对第一待处理数据进行划分,得到第二待处理数据。可在使第二待处理数据的通道数小于或等于输入通道数的同时,使第二待处理数据的数据量尽可能的接近芯片的数据处理量门限,进而充分利用芯片的处理资源,提高芯片的处理效率。此外,还可减少芯片在对第二待处理数据进行处理时处于空闲状态的硬件资源,进而提高芯片对第二待处理数据的处理过程中的读取效率。
在第一待处理数据中每个通道的数据量大于芯片的数据处理量门限的情况下,应用上述实施例提供的技术方案对第一待处理数据中的每个通道的数据进行划分,获得芯片每个通道的输入数据,可提高芯片的处理效率和读取效率。但在使用卷积神经网络进行实际应用的过程中,第一待处理数据中每个通道的数据量可能小于芯片的数据处理量门限,此时无法通过上述实施例提供的技术方案获得能充分利用芯片的处理资源的输入数据。为此,本申请实施例提供了又一种对第一待处理数据进行处理的方法,作为一种可选的实施方式,步骤102的具体实施方式可以为:
11、将上述第一待处理数据中第一通道的数据与第二通道的数据进行拼接,以得到上述第二待处理数据。
本步骤中,第一待处理数据包含至少两个通道的数据。
由于第一待处理数据中每个通道的数据量小于芯片的数据处理量门限,若直接将第一待处理数据中的一个通道数据作为芯片单个通道的输入数据,将无法充分利用芯片的处理资源,导致芯片的处理效率低。为此,本实施例通过将至少两个通道的数据进行拼接,以获得能充分利用芯片的处理资源的输入数据。
以对第一待处理数据中的第一通道数据和第二通道数据进行拼接为例,通过对第一通道数据和第二通道数据进行横向拼接,得到第五待处理数据,其中,第五待处理数据的数据量大于或等于芯片的数据处理量门限。将第五待处理数据作为第二待处理数据中一个通道的数据。
举例来说,第一通道数据的数据量和第二通道数据的数据量均为5千字节,芯片的数据处理量门限为8千字节。如图4所示,通过将第一通道数据和第二通道数据进行横向拼接,可获得数据量为1万字节的拼接后的数据,作为第二待处理数据中一个通道的数据。其中,拼接后数据的宽(即列数)与第一通道数据的宽(即列数)和第二通道数据的宽(即列数)的和,拼接后的数据的高(即行数)与第一通道数据的高(即行数)和第二通道数据的高(即行数)的和。
需要理解的是,上述示例以第一通道数据和第二通道数据为拼接的对象进行拼接得到第二待处理数据中一个通道的数据。在实际应用中,还可将3个或3个以上的通道数据进行拼接获得第二待处理数据中一个通道的数据,本申请对进行拼接处理的通道数据的数量不做限定。
可选的,如上所述,在对数据进行卷积处理时需要利用与数据相邻的数据的信息。例如,在对图4所示的第二待处理数据中的第一通道中的数据e进行卷积处理时,需要利用数据a的信息、数据b的信息、数据c的信息、数据d的信息、数据f的信息、数据g的信息、数据h的信息、数据i的信息。因此,为方便后续对第二待处理数据进行卷积处理,在对第一通道数据和第二通道数据进行拼接时,可在第一通道数据和第二通道数据之间进行补位,以将第一通道数据和第二通道数据区分开。如图5所示,在第一通道数据和第二通道数据之间以0进行补位,获得第二待处理数据中的一个通道的数据。
需要理解的是,图4和图5中所示的第一通道数据和第二通道数据的尺寸(3*3)仅为本申请实施例提供的一个示例,不应对本申请构成限定。在实际应用中,可对任意尺寸的数据进行拼接。
上述描述均为通过对第一待处理数据中的至少两个通道的数据进行拼接,得到第二待处理数据中的一个通道的数据。在实际处理中,可通过对第一待处理数据中的至少两个通道的数据进行拼接,得到第二待处理数据中的至少两个通道的数据。例如,第一待处理数据包含4个通道的数据,分别为:第一通道数据、第二通道数据、第三通道数据、第四通道数据。输入通道数为2。将第一通道数据和第二通道数据拼接,得到第五通道数据。将第三通道数据和第四通道数据拼接,得到第六通道数据。将第五通道数据作为第二待处理数据中的一个通道数据的数据,并将第六通道数据作为第二待处理数据中的另一个通道数据的数据,即第二待处理数据包含2个通道的数据。
本实施例通过将至少两个通道的数据进行拼接,得到第二待处理数据中至少一个通道的数据,可提高芯片的处理效率。
在拼接得到的第五待处理数据的数据量大于芯片的数据处理量门限的情况下,可对第五待处理数据进行划分,以从第五待处理数据中选取最优数据集,使划分后数据的数据量小于或等于芯片的数据处理量门限,从而可充分利用芯片的处理资源,提高芯片的处理效率。
需要理解的是,对至少两个通道的数据进行拼接的方式不仅适用于第一待处理数据中每个通道的数据量小于芯片的数据处理量门限的情况,在第一待处理数据中每个通道的数据量大于芯片的数据处理量门限的情况下,也可通过对至少两个通道的数据进行拼接,获得第二待处理数据中的一个通道的数据,以提高芯片的处理效率。
举例来说,假设芯片的数据处理量门限为9千字节,第一待处理数据中每个通道的数据的尺寸为5*4(即4行4列),第一待处理数据中每个通道的数据量为10千字节。第一待处理数据中每个通道的数据中尺寸为4*4(即4行4列)的数据块的数据量为8千字节。第一待处理数据中每个通道的数据中尺寸为3*4(即3行4列)的数据块的数据量为6千字节。若不对第一待处理数据中至少两个通道的数据进行拼接,直接对第一待处理数据中每个通道的数据进行划分,将得到尺寸为4*4和尺寸为1*4的两个第二待处理数据,其中,尺寸为1*4的第二待处理数据的数据量为2千字节。若对第一待处理数据中的两个通道的数据进行拼接,可获得尺寸为5*8(即5行8列)的第五待处理数据。从第五待处理数据中选取最优数据集,可得到2个尺寸均为2*8(即2行8列)的第二待处理数据和1个尺寸为1*8(即1行8列)的第二待处理数据,其中,尺寸为2*8的第二待处理数据的数据量为8千字节,尺寸为1*8的第二待处理数据的数据量为4千字节。芯片在处理尺寸为4*4的第二待处理数据时的处理效率,以及芯片在处理尺寸为1*8的第二待处理数据时的处理效率相同。但芯片在处理尺寸为1*8的第二待处理数据时的处理效率,比在处理尺寸为1*4的第二待处理数据的处理效率高。
卷积神经网络中的卷积层通常以串联的形式连接。如图6所示的卷积神经网络,第一层卷积层输出的数据为第二层卷积层的输入数据,第二层卷积层输出的数据为第三层卷积层的输入数据。由于不同的卷积层的输入数据的通道数可能不同,那也就意味着经过卷积层的处理输入至卷积层的数据的通道数将发生改变。例如,假设在图6所示的卷积神经网络中,第一层卷积层的输入数据的通道数为3,第二层卷积层的输入数据的通道数为4,第三层卷积层的输入数据的通道数为5。输入至第一层卷积层的数据的通道数由3变成了4,输入至第二层卷积层的数据的通道数由4变成了5。
与芯片的输入通道数相同,芯片的输出通道数也是固定的。因此通常无法在一个处理批次内将一个卷积层的输出数据中的所有数据写入至外部存储器。
举例来说(例2),假设芯片的输出通道数为2,图6所示的卷积神经网络的第二层卷积层的输入数据的通道数为4。芯片需要对第一层卷积层的输入数据进行2次卷积处理,即芯片需要执行2个处理批次,才能完成第一层卷积层的处理。
若芯片需要至少两个处理批次才能完成一层卷积层的处理时,那也就意味着芯片在完成一层卷积层的处理时,需要执行至少两次读取数据的操作和至少两次写入数据的操作。这将给芯片带来较大的功耗,增大芯片的时延,降低芯片的处理效率。接着例2继续举例(例3),假设第一层卷积层的输入数据为数据A。在执行第一层卷积层的处理中的第一个处理批次时,芯片将存储于外部存储器的数据A和第一组权重读取至缓存,并使用第一组权重对数据A进行卷积处理,得到通道数为2的数据B,并将数据B写入外部存储器。在执行第一层卷积层的处理中的第二个处理批次时,芯片将存储于外部存储器的数据A和第二组权重读取至缓存,并使用第二组权重对数据A进行卷积处理,得到通道数为2的数据C,并将数据C写入外部存储器。在芯片完成对数据A的卷积处理的过程中,芯片一共执行了2次读取数据的操作和2次写入数据的操作。
为降低芯片的功耗和时延,以及提高芯片的处理效率。本申请实施例还提供了一种优化方案。请参阅图7,图7为本申请实施例提供的又一种数据处理方法的流程示意图。
701、获取目标输出通道数、上述芯片的输出通道数、处理批次数和上述芯片的参考值。
本实施例中,芯片包含存储器,上述第二待处理数据和上述卷积核的参数存储于该存储器。
上述目标输出通道数为:当前卷积层(如例3中的第一层卷积层)的下一层卷积层的输入数据的通道数。
本申请实施例中,上述处理批次数指芯片完成当前卷积层对第二待处理数据进行的处理所需执行的处理批次的次数。例如,芯片需要2个处理批次才能完成对第二待处理数据的处理,则处理批次数为2。
在解释上述芯片的参考值之前,首先对芯片的时分复用周期进行定义。芯片的时分复用周期可包括至少一个处理批次。芯片通过一个处理批次可得到一个处理结果,芯片在一个时分复用周期内可得到的至少一个处理结果。在一个时分复用周期内,芯片将得到的处理结果存储至缓存,直到执行完该时分复用周期内的所有处理批次,将该时分复用周期内得到的所有处理结果写入存储器。例如,芯片的时分复用周期包括2个处理批次。芯片通过第一个处理批次得到处理结果A后,并不执行将处理结果A写入存储器的操作,而是将处理结果A存储至缓存。芯片通过第二个处理批次得到处理结果B后,将处理结果A和处理结果B一起写入存储器。
本申请实施例中,芯片的参考值为:芯片的一个时分复用周期包括的处理批次的数量的最大值。例如,芯片的输入通道数为2,芯片的输出通道数为2。芯片的参考值为4,表征芯片的一个时分复用周期最多可包括4个处理批次。如图8所示,芯片的时分复用周期可以包含1个处理批次(通过该处理批次可得到y[0]和y[1]两个通道的输出数据),芯片的时分复用周期也可以包含2个处理批次(通过这2个处理批次可得到y[0]、y[1]、y[2]和y[3]四个通道的输出数据),芯片的时分复用周期还可以包含3个处理批次(通过这3个处理批次可得到y[0]、y[1]、y[2]、y[3]、y[4]和y[5]六个通道的输出数据),芯片的时分复用周期还可以包含4个处理批次(通过这4个处理批次可得到y[0]、y[1]、y[2]、y[3]、y[4]、y[5]、y[6]和y[7]八个通道的输出数据)。
702、在上述输出通道数小于上述目标输出通道数的情况下,获取上述第二待处理数据和上述卷积核的参数。
本实施例中,在芯片的输出通道数小于目标输出通道数据的情况下,将存储于存储器中的第二待处理数据和卷积核的参数读取至缓存。这样,在完成当前卷积层(如例3中的第一层卷积层)的处理之前,无需再从存储器中读取数据。例如,在将本实施例提供的技术方案应用于芯片的情况下,第二待处理数据和卷积核的参数存储于芯片的存储器。在芯片执行本步骤的过程中,芯片将存储于存储器中的第二待处理数据和卷积核的参数读取至芯片的缓存。这样,在完成当前卷积层的处理之前,芯片无需再从存储器中读取数据。
上述卷积核的参数包含:执行当前卷积层对第二待处理数据进行卷积处理所需的所有权重。具体的,上述卷积核参数包含至少一组权重(下文将称为z组权重),z为上述处理批次数。
在一种可能实现的方式中,通过对目标输出通道数与芯片的输出通道数的商向上取整可获得处理批次数。例如,目标输出通道数为9,芯片的输出通道数为4,则目标输出通道数与芯片的输出通道数的商为9/4,对9/4向上取整为3,即处理批次数为3。
703、在上述处理批次数小于或等于上述参考值的情况下,通过上述芯片,使用上述至少一组权重中的一组权重对上述第二待处理数据进行卷积处理获得一组第二数据,并将上述一组第二数据存储至上述芯片的缓存。
若处理批次数小于或等于参考值,表征芯片可通过一个时分复用周期完成当前卷积层对第二待处理数据的处理。
芯片使用z组权重中的一组权重对第二待处理数据进行卷积处理,可完成一个处理批次,获得一组第二数据。在获得一组第二数据后,芯片并不执行将该组第二数据写入存储器的操作,而是将该组第二数据存储至缓存。
704、在分别使用上述至少一组权重中的每一组权重对上述第二待处理数据进行卷积处理获得至少一组第二数据的情况下,将上述缓存中存储的上述至少一组第二数据作为上述第一数据写入上述芯片的存储器。
如步骤702所述,使用z组权重中的一组权重对第二待处理数据进行卷积处理,可获得一组第二数据。通过分别使用z组权重中的每一组权重对第二待处理数据进行卷积处理,可完成当前卷积层对第二待处理数据的卷积处理,获得z组第二数据。
举例来说(例4),卷积核的参数中包含2组权重,分别为:权重A和权重B。使用权重A对第二待处理数据进行卷积处理,可获得第二数据A,使用权重B对第二待处理数据进行卷积处理,可获得第二数据B。
在获得z组第二数据后,芯片将缓存中存储的z组第二数据作为第一数据写入存储器。
接着例4继续举例,芯片在使用权重A对第二待处理数据进行卷积处理获得第二数据A后,将第二数据A存储至缓存。芯片再使用权重B对第二待处理数据进行卷积处理获得第二数据B,将第二数据B存储至缓存。此时第二数据A和第二数据B即为当前卷积层对第二待处理数据进行卷积处理获得的第一数据。在将第二数据B存储至缓存后,芯片将缓存中存储的第二数据A和第二数据B写入存储器。
从例4可以看出,芯片在使用权重A和权重B对第二待处理数据进行卷积处理的过程中,只执行了一次读取数据的操作和一次写入数据的操作。这将降低芯片的功耗,提高芯片的处理效率。
705、在上述处理批次数大于上述参考值的情况下,从上述至少一组权重中选取至少一组权重,作为时分复用权重集。
若处理批次数大于参考值,表征芯片需通过至少两个时分复用周期完成当前卷积层对第二待处理数据进行的处理。为充分利用芯片的资源,从z组权重中选取至少一组(下文将称为x组)权重,作为时分复用权重集,以便后续使用时分复用权重集对第二待处理数据进行卷积处理。其中,x等于参考值。例如,芯片的参考值为4,z=9,则从9组权重中选取4组权重作为时分复用权重集。
706、使用上述时分复用权重集中的一组权重对上述第二待处理数据进行卷积处理,获得一组第三数据,并将上述一组第三数据存储至上述芯片的缓存。
数据处理装置使用时分复用权重集中的一组权重对第二待处理数据进行卷积处理,可完成一个处理批次,获得一组第三数据。在获得一组第三数据后,数据处理装置并不执行将该组第三数据写入存储器的操作,而是将该组第三数据存储至芯片的缓存。可选的,本步骤中的数据处理装置为芯片。
707、在分别使用上述时分复用权重集中的每一组权重对上述第二待处理数据进行卷积处理,获得至少一组第三数据的情况下,将上述缓存中存储的上述至少一组第三数据写入上述存储器。
如步骤706所述,使用时分复用权重集中的一组权重对第二待处理数据进行卷积处理可获得一组第三数据。通过分别使用时分复用权重集中的每一组权重对第二待处理数据进行卷积处理可获得x组第三数据。在获得x组第三数据后,芯片将缓存中存储的x组第三数据写入存储器。
在芯片通过一个时分复用周期的处理,获得x组第三数据(即x个通道的输出数据)后,还需通过对第二待处理数据进行卷积处理,获得余下的z-x个通道的输出数据。
在z-x小于或等于x的情况下,依据步骤703至步骤704提供的技术方案,使用z组权重中除时分复用权重集之外的权重对第二待处理数据进行卷积处理,直到得到z个通道的输出数据,完成当前卷积层对第二待处理数据的卷积处理。在z-x大于x的情况下,依据步骤705至步骤707提供的技术方案,使用z组权重中除时分复用权重集之外的权重对第二待处理数据进行卷积处理,直到得到z个通道的输出数据,完成当前卷积层对第二待处理数据的卷积处理。
举例来说,目标输出通道数为16,芯片的输出通道数为2,芯片的参考值为4,z=8。通过芯片的第一个时分复用周期的处理可得到8组第三数据(包括第三数据A、第三数据B、第三数据C、第三数据D、第三数据E、第三数据F、第三数据G和第三数据H),作为目标输出数据中的前8个通道的数据。通过第二个时分复用周期的处理可再得到8组第三数据(包括第三数据I、第三数据J、第三数据K、第三数据L、第三数据M、第三数据N、第三数据O、第三数据P),作为目标输出数据中的后8个通道的数据。在第一个时分复用周期内,芯片从8组权重中选取4组权重,作为第一个时分复用周期的时分复用权重集。在使用第一个时分复用周期的时分复用权重集完成第4个处理批次,得到第三数据A、第三数据B、第三数据C、第三数据D、第三数据E、第三数据F、第三数据G和第三数据H这8组第三数据后,将存储于缓存中的第三数据A、第三数据B、第三数据C、第三数据D、第三数据E、第三数据F、第三数据G和第三数据H一次性写入存储器。在第二个时分复用周期内,芯片将8组权重中除第一个时分复用权重集之外的4组权重,作为第二个时分复用周期的时分复用权重集。在使用第二个时分复用周期的时分复用权重集完成第4个处理批次,得到第三数据I、第三数据J、第三数据K、第三数据L、第三数据M、第三数据N、第三数据O、第三数据P这8组第三数据后,将存储于缓存中的第三数据I、第三数据J、第三数据K、第三数据L、第三数据M、第三数据N、第三数据O、第三数据P一次性写入存储器。至此,芯片通过2个时分复用周期的处理得到了16个通道(即第三数据A、第三数据B、第三数据C、第三数据D、第三数据E、第三数据F、第三数据G、第三数据H、第三数据I、第三数据J、第三数据K、第三数据L、第三数据M、第三数据N、第三数据O和第三数据P)的目标输出数据。
在上述示例中,若不采用本实施例提供的技术方案进行处理,需在每个处理批次后进行一次将2组第三数据写入存储器的操作。如,经第一个时分复用周期内的第一个处理批次的处理,得到第三数据A和第三数据B后,将第三数据A和第三数据B写入存储器。经第一个时分复用周期内的第二个处理批次的处理,得到第三数据C和第三数据D后,将第三数据C和第三数据D写入存储器。这样,芯片需要执行8次向存储器写入数据的操作。上述示例在采用本实施例提供的技术方案进行处理后,芯片只需执行2次向存储器写入数据的操作。显然,本实施例提供的技术方案可减少芯片向存储器写入数据的操作的次数,降低芯片的功耗,提高芯片的处理效率。
可选的,在本实施例中,第一待处理数据包括第一待处理数据集,第二待处理数据包括第二待处理数据集,在第二待处理数据集中存在与第一待处理数据集中每项待处理数据对应的数据。例如,第一待处理数据集包括第一待处理数据A和第一待处理数据B。依据输入通道数,对第一待处理数据A进行处理,得到第二待处理数据a和第二待处理数据b。依据输入通道数,对第一待处理数据B进行处理,得到第二待处理数据c和第二待处理数据d。将第二待处理数据a、第二待处理数据b、第二待处理数据c和第二待处理数据d,作为第二待处理数据集。第二待处理数据集中的第二待处理数据a和第二待处理数据b为与第一待处理数据A对应的数据,第二待处理数据集中的第二待处理数据c和第二待处理数据d为与第一待处理数据B对应的数据。
在第一待处理数据集包含至少两个数据的情况下,通过对至少两个数据进行处理,可得到第二待处理数据集。通过对第二待处理数据集中的每个数据分别进行卷积处理,直至将第二待处理数据集中所有数据处理完,可得到第一待处理数据集的处理结果。例如,第一待处理数据集包含图像A和图像B。图像A和图像B的通道数量均为3,其中,图像A包含第一通道数据、第二通道数据、第三通道数据,图像B包含第四通道数据、第五通道数据、第六通道数据。输入通道数为2。从第一通道数据中选取最优数据集,得到第七通道数据。从第二通道数据中选取最优数据集,得到第八通道数据。从第三通道数据中选取最优数据集,得到第九通道数据。从第四通道数据中选取最优数据集,得到第十通道数据。从第五通道数据中选取最优数据集,得到第十一通道数据。从第六通道数据中选取最优数据集,得到第十二通道数据。将第七通道数据和第八通道数据作为第二待处理数据a。将第九通道数据和第十通道数据作为第二待处理数据b。将第十一通道数据和第十二通道数据作为第二待处理数据c。芯片在第一个处理批次中,可对第二待处理数据a进行处理,得到处理结果1。在第二个处理批次中,可对第二待处理数据b进行处理,得到处理结果2。在第三个处理批次中,可对第二待处理数据c进行处理,得到处理结果3。处理结果1、处理结果2和处理结果3为对第一待处理数据集中每个通道的最优数据集进行卷积处理,得到的结果。同理,可对第一待处理数据集中除最优数据集之外的数据进行处理,得到处理结果4。处理结果1、处理结果2、处理结果3和处理结果4为对第一待处理数据集进行处理得到的处理结果。
在芯片的输出通道数小于目标输出通道数的情况下,本实施例通过将每个处理批次获得的结果存储至缓存,直至完成一个时分复用周期的处理再一并将缓存中存储的数据写入存储器,可减少芯片完成对第二待处理数据的卷积处理所需执行的写入数据的次数,以此减少芯片的功耗,提高芯片的处理效率。
在获得第二待处理数据之后,芯片调用处理资源(如卷积处理单元的计算资源)对第二待处理数据进行卷积处理。该处理过程可通过以下两种方式中的任意一种实现:
1.使用上述卷积核的参数对上述第二待处理数据进行卷积处理,使上述第二待处理数据中的所有数据映射至上述芯片的输出通道中的一个通道,获得第一数据中的一个通道的数据(下文将称为第四数据)。直至将芯片将第二待处理数据中的所有数据分别映射至芯片的每个输出通道。
举例来说(例5),芯片包含2个输入通道。假设第二待处理数据包含2个通道的数据,分别作为芯片的2个输入通道的输入数据。如图9a所示,在第一个处理批次内,芯片可使用卷积核的参数中的权重对输入通道1的输入数据和输入通道2的输入数据进行卷积处理,使输入通道1的输入数据和输入通道2的输入数据均映射至输出通道1,得到输出通道1的输出数据。如图9b所示,在第二个处理批次内,芯片可使用卷积核的参数中的权重对输入通道1的输入数据和输入通道2的输入数据进行卷积处理,使输入通道1的输入数据和输入通道2的输入数据均映射至输出通道2,得到输出通道2的输出数据。输出通道1的输出数据和输出通道2的输出数据即为第一数据,也就是说,第一数据包含2个通道的数据,其中一个通道的数据为输出通道1的输出数据,另一个通道的数据为输出通道2的输出数据。
2.使用上述卷积核的参数对上述第二待处理数据进行卷积处理,使上述第二待处理数据中的一个通道的数据分别映射至上述芯片的每一个输出通道,获得第五数据,第五数据属于第一数据。直到将第二待处理数据中的每个通道的数据分别映射至芯片的每个通道,获得至少一个第六数据。将第五数据与至少一个第六数据相加,即可获得第一数据。
举例来说(例6),芯片包含2个输入通道。假设第二待处理数据包含2个通道的数据,分别作为芯片的2个输入通道的输入数据。如图10a所示,在第一个处理批次内,芯片可使用卷积核的参数中的权重对输入通道1的输入数据进行卷积处理,使输入通道1的输入数据分别映射至输出通道1和输出通道2,得到第五数据,其中,第五数据包含属于输出通道1的输出数据的第七数据和属于输出通道2的输出数据的第八数据。如图10b所示,在第二个处理批次内,芯片可使用卷积核的参数中的权重对输入通道2的输入数据和输入通道2的输入数据进行卷积处理,使输入通道1的输入数据和输入通道2的输入数据分别映射至输出通道1和输出通道2,得到第六数据,其中,第六数据包含属于输出通道1的输出数据的第九数据和属于输出通道2的输出数据的第十数据。将第五数据中的第七数据与第六数据中的第九数据相加可得到输出通道1的输出数据,将第五数据中的第八数据与第六数据中的第十数据相加可得到输出通道2的输出数据。输出通道1的输出数据和输出通道2的输出数据即为第一数据,也就是说,第一数据包含2个通道的数据,其中一个通道的数据为输出通道1的输出数据,另一个通道的数据为输出通道2的输出数据。
在上述第一种实现方式中,芯片需对第二待处理数据进行一次读取操作,对卷积核的参数中的权重进行至少一次读取操作。如例5中第一个处理批次中使用的权重为将输入通道的数据映射至输出通道1的权重,第二个处理批次中使用的权重为将输入通道的数据映射至输出通道2的权重,即两个处理批次中使用的权重不同。而两个处理批次中的输入数据均为第二待处理数据。
在上述第二种实现方式中,芯片需对第二待处理数据进行至少一次读取操作,对卷积核的参数中的权重进行一次读取操作。如例6中的两个处理批次中使用的权重均包括将输入通道的数据映射至输出通道1的权重和将输入通道的数据映射至输出通道2的权重。而第一个处理批次中的输入数据为输入通道1的输入数据(即为第二待处理数据中一个通道的数据),第二个处理批次中的输入数据为输入通道2的输入数据(即为第二待处理数据中另一个通道的数据)。
由于第二待处理数据中一个通道的数据量大于卷积核的参数中的权重的数据量,第一种实现方式中芯片的读取效率比第二种实现方式的读取效率更高。但第一种实现方式中的芯片的缓存的存储空间比第二种实现方式中的芯片的缓存的存储空间大,即第一种实现方式中的芯片的成本高于第二种实现方式中的芯片。
由于第一待处理数据的数据量较大,而芯片的缓存的存储空间较小,因此,芯片通常需要外接存储器,该存储器用于存储第一待处理数据和卷积核的参数。
在一种可能实现的方式中,如图11所示,存储器包括全局存储器,该全局存储器能被芯片访问和被除芯片之外的硬件访问。例如,芯片属于终端(如电脑、服务器),该全局存储器可被芯片访问,还可被终端的CPU访问。此时,第一待处理数据和卷积核的参数存储于全局存储器。
在另一种可能实现的方式中,如图12所示,存储器包括局部存储器,该局部存储器只能被芯片访问。例如,芯片属于终端(如电脑、服务器),该局部存储器只能被芯片访问,除芯片之外的硬件(如终端的CPU)不能访问该局部存储器。此时,第一待处理数据和卷积核的参数存储于全局存储器。
在又一种可能实现的方式中,如图13所示,存储器包括全局存储器和局部存储器,该全局存储器能被芯片访问和被除芯片之外的硬件访问,该局部存储器能被芯片访问,且不能被除芯片之外的硬件访问。
此时可通过以下4种存储方式中的任意一种存储第一待处理数据和卷积核的参数:
1.第二待处理数据和卷积核的参数均可存储于全局存储器。
2.第二待处理数据和卷积核的参数也均可存储于局部存储器。
3.第二待处理数据存储于全局存储器,而卷积核的参数存储于局部存储器。
4.第二待处理数据存储于局部存储器,而卷积核的参数存储于全局存储器。
在上述三种可能实现的方式中,由于全局存储器不仅可被芯片访问,还可被除加速的硬件访问,而局部存储器只能被芯片访问,因此芯片访问局部存储器的速度比访问全局存储器的速度快。但增加局部存储器会增加包含芯片的终端(如电脑、服务器)的成本。在实际使用中,用户可依据成本和自身需求(如芯片的处理速度)选取合适的存储方式,本申请对此不作限定。
可选的,在实施本申请实施例提供的技术方案之前,可通过CPU对卷积神经网络进行编译,得到预置数据。预置数据携带以下至少一种信息:卷积神经网络中每一层卷积层的输入数据的通道数(即第一待处理数据的输入通道数),卷积神经网络中每一层卷积层的输入数据中每个数据的数据量、芯片的数据处理量门限、芯片的输入通道数、芯片的输出通道数、芯片的参考值、目标输出通道数据、处理批次数。此外,对第一待处理数据进行处理得到第二待处理数据(如,步骤102的实现方式、步骤301至步骤302的实现方式),可在芯片执行对第二待处理数据的处理之前完成。预置数据中还可携带第二待处理数据的存储地址信息。这样,芯片在对第二待处理数据进行处理时,可依据第二待处理数据的存储地址信息,确定第二待处理数据。预置数据还可携带处理参数的存储地址信息。可选的,第二待处理数据的存储地址信息,以及处理参数的存储地址信息,均可以线性表的形式存储于全局存储器或局部存储器。其中,线性表包括:链表。在第二待处理数据的存储地址信息,以及处理参数的存储地址信息,均以链表的形式存储于全局存储器或局部存储器的情况下,依据链表节点的地址,可从全局存储器或局部存储器中读取第二待处理数据,也可依据链表节点的地址从全局存储器或局部存储器)中读取卷积核的参数。从而使全局内存的分配更佳灵活,或使局部内存的分配更佳灵活。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。
请参阅图14,图14为本申请实施例提供的一种数据处理装置1的结构示意图,该装置1包括芯片11,该芯片11包括:获取单元111、第一处理单元112、第二处理单元113、存储器114、读取单元115以及写入单元116,其中:
获取单元111,用于获取第一待处理数据,以及输入通道数,所述第一待处理数据的通道数量大于所述输入通道数;
第一处理单元112,用于根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,其中,所述第二待处理数据对应的通道数小于或等于所述输入通道数;
所述获取单元111,还用于获取处理参数;
第二处理单元113,用于使用所述处理参数对所述第二待处理数据进行处理,得到第一数据。
在一种可能实现的方式中,所述处理参数包括卷积核的参数,所述输入通道数为所述芯片的输入通道数;
所述第二处理单元113,用于:
通过所述芯片11,使用所述卷积核的参数,对所述第二待处理数据,进行卷积处理,以得到所述第一数据。
在一种可能实现的方式中,所述第一处理单元112,用于:
按照所述输入通道数,将所述第一待处理数据划分为至少两份数据,每份数据对应的通道数量小于或等于所述输入通道数,且所述每份数据中单个通道的数据量小于或等于数据处理量门限;
将所述至少两份数据确定为所述第二待处理数据。
在一种可能实现的方式中,所述第一待处理数据包含至少两个通道的数据;
第一处理单元112,用于:
将所述第一待处理数据中第一通道的数据与第二通道的数据进行拼接,以得到所述第二待处理数据,所述第二待处理数据对应的通道数量小于或等于所述输入通道数,且所述第二待处理数据中单个通道的数据量小于或等于数据处理量门限。
在一种可能实现的方式中,所述第一待处理数据包括第一待处理数据集,所述第二待处理数据包括第二待处理数据集,在所述第二待处理数据集中存在与所述第一待处理数据集中每项待处理数据对应的数据;
所述获取单元111,用于获取目标输出通道数、所述芯片的输出通道数、处理批次数和所述芯片的参考值;
所述第二处理单元113,用于:
在所述输出通道数小于所述目标输出通道数的情况下,获取所述第二待处理数据和所述卷积核的参数;所述卷积核的参数包含至少一组权重;
在所述处理批次数小于或等于所述参考值的情况下,通过所述芯片,使用所述至少一组权重中的一组权重对所述第二待处理数据进行卷积处理获得一组第二数据,并将所述一组第二数据存储至所述芯片的缓存;
在分别使用所述至少一组权重中的每一组权重对所述第二待处理数据进行卷积处理获得至少一组第二数据的情况下,将所述缓存中存储的所述至少一组第二数据作为所述第一数据写入所述芯片的存储器。
在一种可能实现的方式中,所述第二处理单元113,还用于:
在所述处理批次数大于所述参考值的情况下,从所述至少一组权重中选取至少一组权重,作为时分复用权重集;所述时分复用权重集中权重的组数等于所述参考值;
使用所述时分复用权重集中的一组权重对所述第二待处理数据集进行卷积处理,获得一组第三数据,并将所述一组第三数据存储至所述芯片的缓存;
在分别使用所述时分复用权重集中的每一组权重对所述第二待处理数据集进行卷积处理,获得至少一组第三数据的情况下,将所述缓存中存储的所述至少一组第三数据写入所述存储器。
在又一种可能实现的方式中,所述存储器114包括全局存储器1141;所述全局存储器1141能被所述芯片11访问,且所述全局存储器1141能被除所述芯片11之外的硬件访问;
所述第二待处理数据和所述卷积核的参数存储于所述存储器114,包括:
所述第二待处理数据和所述卷积核的参数存储于所述全局存储器1141。
在又一种可能实现的方式中,所述存储器114包括局部存储器1142;所述局部存储器1142能被所述芯片11访问,且不能被除所述芯片11之外的硬件访问;
所述第二待处理数据和所述卷积核的参数存储于所述存储器114,包括:
所述第二待处理数据和所述卷积核的参数存储于所述局部存储器1142。
在又一种可能实现的方式中,所述存储器114包括全局存储器1141和局部存储器1142;所述全局存储器1141能被所述芯片114访问,且所述全局存储器1141能被除所述芯片114之外的硬件访问;所述局部存储器1142能被所述芯片114访问,且不能被除所述芯片114之外的硬件访问;
所述第二待处理数据和所述卷积核的参数存储于所述存储器114,包括:
所述第二待处理数据和所述卷积核的参数存储于所述全局存储器1141;或,
所述第二待处理数据和所述卷积核的参数存储于所述局部存储器1141;或,
所述第二待处理数据存储于所述全局存储器1141,所述卷积核的参数存储于所述局部存储器1142;或,
所述第二待处理数据存储于局部存储器1142,所述卷积核的参数存储于所述全局存储器1141。
在又一种可能实现的方式中,所述第二处理单元113,用于:
使用所述卷积核的参数对所述第二待处理数据进行卷积处理,使所述第二待处理数据中的所有数据映射至所述芯片的输出通道中的一个通道,获得第四数据;所述第四数据为所述第一数据中的一个通道的数据;或,
使用所述卷积核的参数对所述第二待处理数据进行卷积处理,使所述第二待处理数据中的一个通道的数据分别映射至所述芯片的每一个输出通道,获得第五数据;所述第五数据属于所述第一数据。
得益于依据数据处理装置的输入通道对输入数据进行处理,使数据处理装置能处理通道数量不同的输入数据,本实施例提供的数据处理装置具有很好的通用性。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。所属领域的技术人员还可以清楚地了解到,本申请各个实施例描述各有侧重,为描述的方便和简洁,相同或类似的部分在不同实施例中可能没有赘述,因此,在某一实施例未描述或未详细描述的部分可以参见其他实施例的记载。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriberline,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital versatiledisc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:只读存储器(read-onlymemory,ROM)或随机存储存储器(random access memory,RAM)、磁碟或者光盘等各种可存储程序代码的介质。
Claims (9)
1.一种数据处理方法,其特征在于,所述方法应用于一种芯片,所述方法包括:
获取第一待处理数据,以及所述芯片的输入通道数,所述第一待处理数据的通道数量大于所述输入通道数;所述第一待处理数据包括第一待处理数据集;
根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,其中,所述第二待处理数据对应的通道数小于或等于所述输入通道数,所述第二待处理数据中单个通道的数据量小于或等于数据处理量门限;所述第二待处理数据包括第二待处理数据集,在所述第二待处理数据集中存在与所述第一待处理数据集中每项待处理数据对应的数据;
获取处理参数,所述处理参数包括卷积核的参数;
获取目标输出通道数、所述芯片的输出通道数、处理批次数和所述芯片的参考值;
在所述输出通道数小于所述目标输出通道数的情况下,获取所述第二待处理数据和卷积核的参数;所述卷积核的参数包含至少一组权重;
在所述处理批次数小于或等于所述参考值的情况下,通过所述芯片,使用所述至少一组权重中的一组权重对所述第二待处理数据进行卷积处理获得一组第二数据,并将所述一组第二数据存储至所述芯片的缓存;
在分别使用所述至少一组权重中的每一组权重对所述第二待处理数据进行卷积处理获得至少一组第二数据的情况下,将所述缓存中存储的所述至少一组第二数据作为第一数据写入所述芯片的存储器;
在所述处理批次数大于所述参考值的情况下,从所述至少一组权重中选取至少一组权重,作为时分复用权重集;所述时分复用权重集中权重的组数等于所述参考值;
使用所述时分复用权重集中的一组权重对所述第二待处理数据集进行卷积处理,获得一组第三数据,并将所述一组第三数据存储至所述芯片的缓存;
在分别使用所述时分复用权重集中的每一组权重对所述第二待处理数据集进行卷积处理,获得至少一组第三数据的情况下,将所述缓存中存储的所述至少一组第三数据写入所述存储器。
2.根据权利要求1所述的方法,其特征在于,所述根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,包括:
按照所述输入通道数,将所述第一待处理数据划分为至少两份数据;
将所述至少两份数据确定为所述第二待处理数据。
3.根据权利要求1所述的方法,其特征在于,所述第一待处理数据包含至少两个通道的数据;
所述根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,包括:
将所述第一待处理数据中第一通道的数据与第二通道的数据进行拼接,以得到所述第二待处理数据。
4.一种数据处理装置,其特征在于,所述装置包括一种芯片,所述装置包括:
获取单元,用于获取第一待处理数据,以及所述芯片的输入通道数,所述第一待处理数据的通道数量大于所述输入通道数;所述第一待处理数据包括第一待处理数据集;
第一处理单元,用于根据所述输入通道数,对所述第一待处理数据进行处理,以得到第二待处理数据,其中,所述第二待处理数据对应的通道数小于或等于所述输入通道数,所述第二待处理数据中单个通道的数据量小于或等于数据处理量门限;所述第二待处理数据包括第二待处理数据集,在所述第二待处理数据集中存在与所述第一待处理数据集中每项待处理数据对应的数据;
所述获取单元,还用于获取处理参数,所述处理参数包括卷积核的参数;
第二处理单元,用于:
获取目标输出通道数、所述芯片的输出通道数、处理批次数和所述芯片的参考值;
在所述输出通道数小于所述目标输出通道数的情况下,获取所述第二待处理数据和卷积核的参数;所述卷积核的参数包含至少一组权重;
在所述处理批次数小于或等于所述参考值的情况下,通过所述芯片,使用所述至少一组权重中的一组权重对所述第二待处理数据进行卷积处理获得一组第二数据,并将所述一组第二数据存储至所述芯片的缓存;
在分别使用所述至少一组权重中的每一组权重对所述第二待处理数据进行卷积处理获得至少一组第二数据的情况下,将所述缓存中存储的所述至少一组第二数据作为第一数据写入所述芯片的存储器;
在所述处理批次数大于所述参考值的情况下,从所述至少一组权重中选取至少一组权重,作为时分复用权重集;所述时分复用权重集中权重的组数等于所述参考值;
使用所述时分复用权重集中的一组权重对所述第二待处理数据集进行卷积处理,获得一组第三数据,并将所述一组第三数据存储至所述芯片的缓存;
在分别使用所述时分复用权重集中的每一组权重对所述第二待处理数据集进行卷积处理,获得至少一组第三数据的情况下,将所述缓存中存储的所述至少一组第三数据写入所述存储器。
5.根据权利要求4所述的装置,其特征在于,所述第一处理单元,用于:
按照所述输入通道数,将所述第一待处理数据划分为至少两份数据;
将所述至少两份数据确定为所述第二待处理数据。
6.根据权利要求4所述的装置,其特征在于,所述第一待处理数据包含至少两个通道的数据;
第一处理单元,用于:
将所述第一待处理数据中第一通道的数据与第二通道的数据进行拼接,以得到所述第二待处理数据。
7.一种芯片,其特征在于,所述芯片用于执行如权利要求1至3中任意一项所述的方法。
8.一种电子设备,其特征在于,包括:芯片、处理器和存储器,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,在所述芯片执行所述计算机指令的情况下,所述电子设备执行如权利要求1至3中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序包括程序指令,所述程序指令在被电子设备的处理器执行的情况下,使所述处理器执行权利要求1至3中任意一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010074848.4A CN111310115B (zh) | 2020-01-22 | 2020-01-22 | 数据处理方法、装置及芯片、电子设备、存储介质 |
PCT/CN2020/103075 WO2021147276A1 (zh) | 2020-01-22 | 2020-07-20 | 数据处理方法、装置及芯片、电子设备、存储介质 |
JP2021518628A JP2022520912A (ja) | 2020-01-22 | 2020-07-20 | データ処理方法、装置及びチップ、電子機器、記憶媒体 |
SG11202103406UA SG11202103406UA (en) | 2020-01-22 | 2020-07-20 | Methods, devices, chips, electronic apparatuses, and storage media for processing data |
US17/222,095 US20210224632A1 (en) | 2020-01-22 | 2021-04-05 | Methods, devices, chips, electronic apparatuses, and storage media for processing data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010074848.4A CN111310115B (zh) | 2020-01-22 | 2020-01-22 | 数据处理方法、装置及芯片、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111310115A CN111310115A (zh) | 2020-06-19 |
CN111310115B true CN111310115B (zh) | 2024-05-24 |
Family
ID=71159800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010074848.4A Active CN111310115B (zh) | 2020-01-22 | 2020-01-22 | 数据处理方法、装置及芯片、电子设备、存储介质 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN111310115B (zh) |
SG (1) | SG11202103406UA (zh) |
WO (1) | WO2021147276A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111310115B (zh) * | 2020-01-22 | 2024-05-24 | 深圳市商汤科技有限公司 | 数据处理方法、装置及芯片、电子设备、存储介质 |
CN111857999B (zh) * | 2020-07-10 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种数据调度方法、装置、设备及计算机可读存储介质 |
CN112990370B (zh) * | 2021-04-26 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 图像数据的处理方法和装置、存储介质及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103676742A (zh) * | 2013-12-16 | 2014-03-26 | 中国电子科技集团公司第四十一研究所 | 一种基于fpga的数据重组方法 |
CN105975209A (zh) * | 2016-04-26 | 2016-09-28 | 浪潮(北京)电子信息产业有限公司 | 一种多通道数据写入方法和系统 |
CN106203621A (zh) * | 2016-07-11 | 2016-12-07 | 姚颂 | 用于卷积神经网络计算的处理器 |
CN106529517A (zh) * | 2016-12-30 | 2017-03-22 | 北京旷视科技有限公司 | 图像处理方法和图像处理设备 |
CN108268931A (zh) * | 2016-12-30 | 2018-07-10 | 华为技术有限公司 | 数据处理的方法、装置和系统 |
CN109542512A (zh) * | 2018-11-06 | 2019-03-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置和存储介质 |
CN110032538A (zh) * | 2019-03-06 | 2019-07-19 | 上海熠知电子科技有限公司 | 一种数据读取系统和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019190340A1 (en) * | 2018-03-28 | 2019-10-03 | Intel Corporation | Channel pruning of a convolutional network based on gradient descent optimization |
CN108470211B (zh) * | 2018-04-09 | 2022-07-12 | 郑州云海信息技术有限公司 | 一种卷积计算的实现方法、设备和计算机存储介质 |
CN111310115B (zh) * | 2020-01-22 | 2024-05-24 | 深圳市商汤科技有限公司 | 数据处理方法、装置及芯片、电子设备、存储介质 |
-
2020
- 2020-01-22 CN CN202010074848.4A patent/CN111310115B/zh active Active
- 2020-07-20 SG SG11202103406UA patent/SG11202103406UA/en unknown
- 2020-07-20 WO PCT/CN2020/103075 patent/WO2021147276A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103676742A (zh) * | 2013-12-16 | 2014-03-26 | 中国电子科技集团公司第四十一研究所 | 一种基于fpga的数据重组方法 |
CN105975209A (zh) * | 2016-04-26 | 2016-09-28 | 浪潮(北京)电子信息产业有限公司 | 一种多通道数据写入方法和系统 |
CN106203621A (zh) * | 2016-07-11 | 2016-12-07 | 姚颂 | 用于卷积神经网络计算的处理器 |
CN106529517A (zh) * | 2016-12-30 | 2017-03-22 | 北京旷视科技有限公司 | 图像处理方法和图像处理设备 |
CN108268931A (zh) * | 2016-12-30 | 2018-07-10 | 华为技术有限公司 | 数据处理的方法、装置和系统 |
CN109542512A (zh) * | 2018-11-06 | 2019-03-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置和存储介质 |
CN110032538A (zh) * | 2019-03-06 | 2019-07-19 | 上海熠知电子科技有限公司 | 一种数据读取系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111310115A (zh) | 2020-06-19 |
WO2021147276A1 (zh) | 2021-07-29 |
SG11202103406UA (en) | 2021-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310115B (zh) | 数据处理方法、装置及芯片、电子设备、存储介质 | |
CN106875011B (zh) | 二值权重卷积神经网络加速器的硬件架构及其计算流程 | |
CN111079917B (zh) | 张量数据分块存取的方法及装置 | |
CN109214504B (zh) | 一种基于fpga的yolo网络前向推理加速器设计方法 | |
CN109754359B (zh) | 一种应用于卷积神经网络的池化处理的方法及系统 | |
KR20190066473A (ko) | 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치 | |
US20220391471A1 (en) | Method, circuit, and soc for performing matrix multiplication operation | |
CN112668708A (zh) | 一种提高数据利用率的卷积运算装置 | |
WO2021088569A1 (en) | Convolution method and device, electronic device | |
CN109324984A (zh) | 在卷积运算中使用循环寻址的方法和装置 | |
US20210224632A1 (en) | Methods, devices, chips, electronic apparatuses, and storage media for processing data | |
CN111356151B (zh) | 一种数据处理方法及装置、计算机可读存储介质 | |
US11467973B1 (en) | Fine-grained access memory controller | |
CN111694513A (zh) | 包括循环指令存储器队列的存储器器件和方法 | |
CN112712457B (zh) | 数据处理方法以及人工智能处理器 | |
CN113052291B (zh) | 数据处理方法和装置 | |
US20220350514A1 (en) | Memory mapping of activations for convolutional neural network executions | |
CN114662689A (zh) | 一种神经网络的剪枝方法、装置、设备及介质 | |
WO2020063225A1 (zh) | 一种数据处理方法和装置 | |
CN110490312A (zh) | 一种池化计算方法和电路 | |
CN111488970A (zh) | 神经网络的执行优化方法及装置 | |
KR20200023154A (ko) | 컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치 | |
CN111191780A (zh) | 均值池化累加电路、装置以及方法 | |
CN112215329A (zh) | 基于神经网络的卷积计算方法及装置 | |
CN112905239B (zh) | 一种基于fpga的点云预处理加速方法、加速器及电子设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |