CN111125617A - 数据处理方法、装置、计算机设备和存储介质 - Google Patents
数据处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111125617A CN111125617A CN201911338797.5A CN201911338797A CN111125617A CN 111125617 A CN111125617 A CN 111125617A CN 201911338797 A CN201911338797 A CN 201911338797A CN 111125617 A CN111125617 A CN 111125617A
- Authority
- CN
- China
- Prior art keywords
- data
- processed
- unit
- convolution kernel
- convolution
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本公开涉及一种数据处理方法、装置、计算机设备和存储介质。所述产品包括控制模块,所述控制模块包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。
Description
技术领域
本公开涉及信息处理技术领域,特别是涉及一种数据处理方法、装置、计算机设备和存储介质。
背景技术
人工智能芯片在进行数据处理(如数据复制)的操作过程中,受制于数据对齐以及并行度等方面的限制,如果采用与传统的中央处理器(CPU,Central Processing Unit)或是图形处理器(GPU,Graphics Processing Unit)相同的逻辑进行处理,会大大降低人工智能芯片的运算速度和运行性能。
发明内容
基于此,有必要针对上述技术问题,提供一种数据处理方法、装置、计算机设备和存储介质。
在一方面,本申请提出一种数据处理方法,应用于人工智能处理器,所述方法包括:
获取待处理数据;
获取与所述待处理数据对应的卷积核;
根据所述卷积核与所述待处理数据,进行卷积运算,实现所述待处理数据的复制操作和/或迁移操作。
另一方面,本申请提出一种数据处理装置,所述装置包括:
第一获取模块,用于获取待处理数据;
第二获取模块,用于获取与所述待处理数据对应的卷积核;
卷积处理模块,用于根据所述卷积核与所述待处理数据,进行卷积运算,实现所述待处理数据的复制操作和/或迁移操作。
在又一方面,本申请提出一种数据处理装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述所述的数据处理方法。
最后,本申请还提出一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述所述的方法。
本技术方案能够将人工智能处理器中的数据处理过程,通过卷积运算的方式进行实现,从而可以充分利用人工智能处理器的向量化的特点,将需要多次并行执行的数据处理操作转换为一次数据量更大的操作,从而减小数据处理过程中所需的操作次数,提升人工智能处理器的数据处理速度和效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的数据处理方法的应用环境的示意图;
图2示出根据本公开实施例的数据处理方法的流程示意图;
图3示出根据本公开一实施例的待处理数据的形式示意图;
图4示出根据本公开一实施例的对重复操作单元执行处理操作后得到的结果示意图;
图5示出根据本公开一应用示例的单位卷积核的示意图;
图6示出根据本公开一应用示例的卷积核的示意图;
图7示出根据本公开一应用示例的示意图;
图8示出根据本公开一应用示例的示意图;
图9示出根据本公开实施例的数据处理装置的框图;
图10示出根据本公开实施例的数据处理装置的框图;
图11示出根据本公开实施例的板卡的结构框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
传统的CPU或GPU大多会直接通过访存的方式去重复的获得所需要的数据。对于CPU和GPU来说,当一个输入数据被多次使用时,软件只需要控制硬件多次使用这个数据进行计算即可,输入数据在进行计算前并不会真正的被“复制”(或者仅仅被少量复制)。我们将数据的基本单元称之为标量,将多个数据的线性集合称之为向量。无论是CPU还是GPU,其单个算术逻辑单元(ALU,Arithmetic and Logic Unit)进行的单次计算所需要的数据大多的都是标量,或者是极小规模的向量(例如4个标量)。GPU正是通过将大量的上述ALU并行起来,才提高了对独立数据的处理能力。
在GPU或GPU中,在进行数据复制及运算时,往往是先将缓存中的数据进行循环复制,在复制完成后,再调用ALU进行计算。举例来说,某种运算过程需要将一块长度为16个标量的数据中的每个数据复制四遍,并通过一系列后续计算得到一块长度为64个标量的数据。假设GPU中ALU的并行度为4(即可以同时处理四个数据),那么GPU可以通过同时调用16个处理器单元,将复制数据的过程和后续计算的过程都并行起来(即每个处理器通过标量操作复制三次输入数据得到ALU需要的4个数据,再调用ALU完成后续的所有计算)。
然而对于应用了人工智能处理器的AI专用芯片来说,如果采用与CPU或GPU同样的数据复制方法,可能会产生较大的缺陷。由于AI专用芯片的硬件架构与CPU和GPU不同,即便是相同的算法,其性能也无法在缺少芯片具体实现的情况下被比较。因此在本公开应用示例中,可以将完成整个流程所需要的单位操作为AI专用芯片性能的判断指标,操作数量越少,则AI专用芯片的性能越好。同时,由于不同的芯片设计往往会有不同的带宽,因此考虑数据的读写操作对会影响对芯片性能判断的准确性,所以在本公开应用示例中默认所有数据已经从内存读取至缓存。在本公开应用示例中,单位操作的定义可以包括标量的赋值,运算,以及以此向量的运算。仍以长度为16个标量的数据的复制与计算为例,通过上述公开应用示例可以看出,GPU在对这个16个标量的数据进行复制计算时,在复制数据的过程中,16个处理单元都需要三个操作,再加上一次ALU的计算操作,由于这16个处理单元可以同时进行处理,因此GPU最终的总操作数为4而非64。
AI专用芯片由于主要用于进行神经网络的相关计算中,因此在进行相关算法(例如卷积,池化等神经网络中常见的计算类型)的计算时的优势便是进行了向量化。相较于CPU与GPU的ALU中使用的小规模向量化,AI专用芯片使用的向量化规模更大,这极大的提升了每个ALU同时可以处理的数据量,但同时也带来了对齐方面以及并行度方面的限制。仍以长度为16个标量的数据的复制与计算为例,对于ALU并行度为64的AI专用芯片来说,尽管在计算长度为64个标量的数据时,AI专用芯片较之与GPU会有极大的优势,但是在准备这64个数据的过程中,AI专用芯片则由于较高的并行度要求只能单核运行。GPU可以调用16个流处理器,然而在AI专用芯片中,这个过程只能由一个AI处理器完成,即需要将16个数据共复制48遍后再调用ALU进行计算,因此最终的操作数为49。假设复制一个数据的时间是相同的,那么在数据复制的过程中,AI专用芯片就会多花费近12倍的时间。换句话来说,GPU可以将复制数据的过程并行起来,但是AI专用芯片由于较高的并行度要求则不行,而且在一般情况下,GPU的处理器单元数量的确会比AI专用芯片多出数倍甚至数十倍。这就导致在算法实现时AI专用芯片不能使用与GPU编程时相同的逻辑,否则算法性能会有极大的下降。
为了解决上述问题,本公开实施例中提出了一种数据处理方法,将需要被复制的数据作为卷积运算的输入,并根据复制的需求,来得到卷积运算的卷积核,从而将数据的复制过程转换为数据与卷积核之间的卷积运算过程,这样得到的卷积运算结果就可以作为复制结果,从而完成数据的复制操作和/或迁移操作。具体地实现过程详见下方各公开实施例。
根据本公开实施例的数据处理方法可应用于处理器中,该处理器可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-NetworkProcessing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图1示出根据本公开实施例的数据处理方法的处理器的示意图。如图1所示,处理器100包括多个处理单元101以及存储单元102,多个处理单元101用于执行指令序列,存储单元102用于存储数据,可包括随机存储器(RAM,Random Access Memory)和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。
图2示出根据本公开一实施例的数据处理方法的流程图。如图2所示,该方法应用于人工智能处理器,该方法包括:
步骤S11,获取待处理数据。
步骤S12,获取与待处理数据对应的卷积核。
步骤S13,根据卷积核与待处理数据,进行卷积运算,实现所述待处理数据的复制操作和/或迁移操作。将对待处理数据的数据处理过程转换为卷积运算过程,将卷积运算的结果作为数据处理结果。
通过上述本公开的各方面实施例的数据处理过程,能够将人工智能处理器中的数据处理过程,通过卷积运算的方式进行实现,从而可以充分利用人工智能处理器的向量化的特点,将需要多次并行执行的数据处理操作转换为一次数据量更大的操作,从而减小数据处理过程中所需的操作次数,提升人工智能处理器的数据处理速度和效率。
上述公开实施例中,待处理数据可以是人工智能处理器中存储的数据,其具体的数据形式、内容以及数据规模等均不受限制,可以根据实际情况灵活选择。在一种可能的实现方式中,待处理数据可以为以张量形式存储的相关数据,其张量的维度和大小均可以根据实际情况灵活选择,不局限于下述公开实施例。在一种可能的实现方式中,待处理数据可以为一维向量,比如[1 2 3]T。图3示出根据本公开一实施例的待处理数据的形式示意图,如图所示,在一种可能的实现方式中,待处理数据可以为一个维度为3的张量数据,其形式可以记为H×W×C。
步骤S11的实现方式不受限制,即获取待处理数据的方式不受限制,在一种可能的实现方式中,可以是在人工智能处理器内读取所需的待处理数据。待处理数据在人工智能处理器中具体的存储位置在本公开实施例中不做限定,不局限于下述公开实施例。在一种可能的实现方式中,人工智能处理器在读取待处理数据时,可以将待处理数据从内存中读取至缓存中,并在缓存中进行后续的数据处理过程。
在通过步骤S11获取待处理数据后,可以通过步骤S12,获取与待处理数据对应的卷积核。在本公开实施例中,步骤S12的实现方式也可以根据实际情况灵活决定,即如何获取与待处理数据对应的卷积核,其获取的来源与方式可以根据实际情况灵活确定。在一种可能的实现方式中,步骤S12可以包括:
生成卷积核;或者,读取通用处理器生成的卷积核。
通过上述实现方式可以看出,获取与待处理数据对应的卷积核,其获取方式可以为在人工智能处理器中生成卷积核,也可以为通用处理器来生成卷积核,然后人工智能处理器再从通用处理器中来读取该卷积核,更进一步地,当人工智能处理器中有不同类型的待处理数据需要卷积核来进行处理时,也可以基于人工智能处理器和通用处理器的效率,灵活的选择在人工智能处理器中或/和通用处理器中生成对应的卷积核,来用于后续针对不同数据类型的待处理数据的处理。在本公开实施例中,通用处理器具体的实现方式在本公开实施例中也不做限定,可以是如CPU或是GPU等具有数据处理功能的处理器。从通用处理器中读取卷积核的具体读取方式同样不受限定,根据实际情况灵活选择即可。
在一种可能的实现方式中,通用处理器用于生成卷积核,人工智能处理器从通用处理器中读取卷积核,此时卷积核不再发生改变,卷积核与对应的待处理数据进行卷积操作,而无法应用于不对应的待处理数据中。因此,当对同一待处理数据需要重复执行的场景时,复用该卷积核,上述方式可以减少占用人工智能处理器数据处理的时间,从而进一步提升人工智能处理器的数据处理效率。
进一步地,无论是直接在人工智能处理器中生成卷积核,还是在通用处理器内生成卷积核,均需要根据待处理数据来生成与之对应的卷积核。因此,卷积核的生成方式在本公开实施例中提出的数据处理方法中,就具有十分重要的影响。在一种可能的实现方式中,卷积核的生成过程可以包括:
步骤S121,根据待处理数据,确定重复执行的处理操作。
步骤S122,根据处理操作对应的待处理数据的数据规模以及所述待处理数据的数据类型,获取卷积核。
人工智能处理器相对于通用处理器来说,在进行卷积、池化等神经网络中常见的计算类型时,为了优化计算性能,往往会对计算的数据进行批量处理,采用更大的向量化规模,来提升人工智能处理器处理的数据量,但正是由于人工智能处理器如上所述的运算特性,导致人工智能处理器在进行数据处理时,往往会需要待处理的数据进行对齐,或是需要待处理的数据符合并行度的个数限制。因此,人工智能处理器在进行数据处理时,出于数据对齐和并行度的需求,可能无法同时调用多个人工智能处理器来进行并行处理,而是只可以通过一个人工智能处理器来对待处理数据进行顺序处理。举例来说,对于一个长度为16个标量的数据块来说,目前需要对该数据进行的处理操作为对该数据块中的每个数据复制4遍,并通过一系列后续计算来得到一块长度为64个标量的数据;对于一个ALU的并行度为4(即可以同时处理4个数据)的GPU来说,该GPU可以同时调用16个流处理器单元,将复制数据的过程和后续计算的过程都并行起来,即每个流处理器单元通过标量操作复制三次输入数据得到ALU需要的4个数据,再调用ALU完成后续的所有计算;然而对于人工智能处理器来说,若该人工智能处理器的ALU并行度为64,尽管在计算长度为64个标量的数据块时,该人工智能处理器只需要1条指令,并调用一个ALU即可完成该计算操作,而GPU则需要16条指令并调用16个或者16次ALU,才可以完成计算操作,使得人工智能处理器相较于GPU具有极大的计算优势,但是在准备这64个标量大小的数据的过程中,GPU可以同时调用16个流处理器来进行数据的复制,而人工智能处理器只能单核运行,即需要将16个数据共复制48遍,假设GPU与人工智能处理器复制一个数据的时间相同,则在数据复制的过程中,人工智能处理器相对于GPU来说,就会多花费近12倍的时间。
通过上述人工智能处理器的特性可以看出,本公开实施例中提出的数据处理方法,是为了提升人工处理器的数据处理效率,即将可以批量执行的数据处理过程,转化为卷积运算的方式进行实现,而卷积运算需要依赖于根据待处理的数据所确定的卷积核,因此卷积核的目的在于,将待处理数据按照一定规模和方式拆分,且这些分块后的数据执行的处理操作是相同的,因此这些分块后的数据均可以与同一卷积核来进行卷积运算,来完成数据的复制操作和/或迁移操作。举例来说,如果人工智能处理器进行数据处理的张量数据可以分割成若干个相同张量形状的子张量,且这些子张量可以通过相同的处理操作进行数据处理,那么对这些子张量进行的处理操作,可以被认为是重复执行的处理操作,而卷积核执行的卷积运算,正是这些重复执行的处理操作。
基于上述原理,可以看出,步骤S121的实现方式可以根据待处理数据的实际情况进行灵活确定,即根据待处理数据确定重复执行的处理操作的前提是该待处理数据在进行数据处理时,可以被划分为多个重复操作单元,对这些重复操作单元,可以执行同样的处理操作,则此时可以确定该处理操作为重复执行的处理操作。被划分的多个重复操作单元,其具体的数据量可以根据实际情况来确定,在本公开实施例中不做限制,在一个示例中,可以默认被划分的重复操作单元为最小重复操作单元,即该最小重复操作单元无法再进一步划分成可以执行同样处理操作的数据块,如果被划分的重复操作单元不是最小重复操作单元,即该单元还可以被继续划分为可以执行同样处理操作的数据块时,可以对该单元进行进一步划分,直至得到最小重复操作单元。而重复操作单元的数量则同样根据待处理数据的实际情况进行确定,在此同样不做限定。除此之外,还需要注意的是,多个重复操作单元仅仅需要满足形状相同即可,其包含的数据内容可以相同也可以不同,在本公开实施例中也不做限制。图4示出根据本公开一实施例的对重复操作单元执行处理操作后得到的结果示意图,如图所示,在一个示例中,对于某一待处理张量数据,其可以被划分成若干个如图3所示的张量形状,即可以将该待处理张量数据划分成若干个形状为H×W×C形状的重复操作单元,这些重复操作单元里面具体包含的数据内容可以相同,也可以不同,对该待处理张量数据进行数据处理时,这些重复操作单元均可以执行在C方向上,将数字为2的层数据与数字为3的层数据进行调换,在调换后,对数字为2的层数据再进行一次复制,从而得到如图4所示的处理操作结果。当待处理数据的维度改变时,也可以参考上述公开实施例,在相应的维度上将待处理数据划分为多个重复操作单元,每个重复操作单元的维度均与待处理数据的维度一致,具体的划分过程在此不再赘述。
通过上述公开实施例可以看出,在通过步骤S121确定重复执行的处理操作后,则可以通过步骤S122,根据处理操作对应的待处理数据的数据规模以及数据处理的类型,来生成卷积核,因此,步骤S122的实现方式,也是随着确定的处理操作的情况的不同而灵活的确定。上述公开实施例中已经提出,重复执行的处理操作的对象为由待处理数据进行划分后得到的多个重复操作单元,因此,在本公开实施例中,处理操作对应的待处理数据的数据规模,即为重复操作单元的数据量,由于不同重复操作单元满足形状相同,因此其数据量也相同,因此处理操作对应的待处理数据的数据规模是一致的。同理,数据处理的类型,即为对重复操作单元执行的数据处理的类型,由于重复操作单元的划分依据即为这些单元执行的数据处理的类型相同。
在一种可能的实现方式中,步骤S122可以包括:
步骤S1221,根据处理操作对应的待处理数据的数据规模,确定单位卷积核的数据规模,其中,单位卷积核用于提取待处理数据在预定方向上的数据内容。
步骤S1222,根据待处理数据处理的数据类型,确定每个单位卷积核的内容,以及所有单位卷积核的连接顺序。
步骤S1223,根据所有单位卷积核的顺序,利用每个单位卷积核的内容得到卷积核。
在数学领域中,存在一种矩阵乘运算的运算方式,其本质可以看作对于数据块的对位相乘与乘积的累加,而矩阵乘运算的过程也可以通过卷积运算完成,基于此原理,本公开实施例中提出的数据处理方法,是通过将数据处理的过程转换为卷积运算的过程来实现的。
在一个示例中,对于一个待处理的向量[1 2 3]T来说,若想对于该向量中的某个数据进行提取,只需将该向量与被复制的数据位为1的单位向量进行卷积计算,即可实现对该数据的提取;举例来说,若单位向量的第一位为1(即单位向量的形式为[1 0 0]),则可以对向量[1 2 3]T的第一位(即数字1)进行提取,即[1 0 0]×[1 2 3]T=1;若单位向量的第二位为1(即单位向量的形式为[0 1 0]),则可以对向量[1 2 3]T的第二位(即数字2)进行提取,即[0 1 0]×[1 2 3]T=2;若单位向量的第三位为1,则可以对向量[1 2 3]T的第三位(即数字3)进行提取,即[0 0 1]×[1 2 3]T=3。基于此原理,若想对这个待处理的向量进行数据处理,如数据复制或是数据交换等,则可以将该向量与若干个由单位向量拼接而成的矩阵进行卷积,来得到处理结果;举例来说,若想将该向量[1 2 3]T中的2与3进行交换,并在交换后对2再执行一次复制,得到向量[1 3 2 2]T,则可以将该向量与由单位向量[1 00]、单位向量[0 0 1]、单位向量[0 1 0]和单位向量[0 1 0]共同拼接而成的矩阵来进行卷积,从而得到该结果,在本公开应用示例中,上述过程可以通过下述公式进行表示:
通过上述公开实施例可以看出,对一维向量进行数据处理时,可以通过不同的单位向量所拼接而成的矩阵,对一维向量中对应位置的数据进行提取,从而完成数据处理,而且为了使得单位向量可以与一维向量之间的卷积运算可以实现,单位向量需要满足其数据规模与一维向量的数据规模保持一致。
参考上述公开实施例,当把进行数据处理的一维向量的维度扩展至更高维度时,即当待处理数据为张量数据时,用于提取该张量数据中所需数据的实现工具,也需要在维度上进行扩展,因此用于提取待处理数据中所需数据的实现工具,可以从单位向量变为单位卷积核。
基于上述原理,则可以得出上述公开实施例中提出的步骤S1221,即根据处理操作对应的待处理数据的数据规模,确定单位卷积核的数据规模,且该单位卷积核用于提取待处理数据在预定方向上的数据内容。
本公开实施例中单位卷积核用于提取待处理数据在预定方向上的数据内容,该预定方向可以根据实际情况进行定义,在此不做限制,在一种可能的实现方式中,预定方向的数量也不受限制,即对于多维张量,可以仅提取其在一个预定方向上的数据内容,也可以提取其在多个预定方向上的数据内容,根据实际情况灵活选择即可。而由于单位卷积核是提取待处理数据在预定方向上的数据内容,因此,单位卷积核的数据规模需要在预定方向上与处理操作的操作数据量一致,即单位卷积核的数据规模在预定方向上,与重复操作单元的大小一致,除此之外,由于单位卷积核的目的是在预定方向上对待处理数据进行数据内容提取,因此单位卷积核在其余方向上的数据规模为1。图5示出根据本公开一应用示例的单位卷积核的示意图,如图所示,在一个示例中,对于如图3所示的重复操作单元来说,其张量形状为H×W×C,当对其沿C方向进行数据内容提取时,即提取在C方向上每一层的数据时,其用于提取的单位卷积核在C方向上的数据规模,与重复操作单元在C方向上的数据规模一致,其余方向的数据规模均为1,从图中可以看出,本公开示例中,重复操作单元的形状为H×W×C_input,而单位卷积核的形状为1×1×C_input,二者在C方向上的数据规模相同,与上述公开实施例中提出的内容一致。
通过步骤S1221确定单位卷积核的数据规模后,可以进一步通过步骤S1222,根据数据处理的类型,确定每个单位卷积核的内容,以及单位卷积核的连接顺序。其中,数据处理的类型,其具体实现方式在本公开实施例中不做限定,在一种可能的实现方式中,数据处理可以包括:数据复制;和/或,数据迁移。其中,数据复制即为对重复操作单元中的数据进行复制,在本公开实施例中,对重复操作单元中的数据进行复制,复制的规模不受限制,既可以是对重复操作单元中的所有数据进行复制,也可以是对重复操作单元中的部分数据进行复制,根据实际情况灵活确定即可;同样地,复制的次数也可以根据实际情况进行确定,在此不做限制。而数据迁移,其迁移方向、迁移规模以及迁移形式在本公开实施例中均不做限制,在一个示例中,数据迁移可以为在预定方向上进行数据交互,也可以是将某部分数据迁移沿预定方向迁移至某一位置,同样根据实际情况确定即可。除此之外,如果有其余可以通过卷积操作来实现的数据处理过程,也可以作为数据处理的实现形式,在此不再一一列举。
通过上述公开实施例可以看出,在对一维向量进行数据提取时,通过改变单位向量中1的位置,可以提取一维向量中对应位置的数据,以此类推,在对张量数据进行数据提取时,则可以通过改变单位卷积核中1的位置,来提取张量数据中对应位置的数据。通过上述公开实施例已经可以看出,单位卷积核仅在预定方向上具有可变的数据规模,其余方向的数据规模均为1,因此,通过更改单位卷积核在预定方向中1的位置,即可提取重复操作单元中对应位置的数据内容。由于多次数据复制的过程可以被分解为通过同样的单位卷积核对相应数据内容进行多次提取,数据迁移的过程可以被分解为通过不同的单位卷积核以及相应的排列顺序,对数据进行内容提取,因此,对于任意处理操作的操作内容,均可以通过定义单位卷积核内1的位置以及不同单位卷积核之间的连接顺序来进行实现。基于上述原理,则可以根据处理操作的操作内容,来确定每个单位卷积核的内容,以及单位卷积核之间的连接顺序,并在确定后,通过步骤S1223,根据连接顺序,连接确定的单位卷积核,来得到卷积核。图6示出根据本公开一应用示例的卷积核的示意图,如图所示,在一个示例中,对于如图3所示的重复操作单元来说,可以通过图6中示出的卷积核,来得到如图4所示的处理操作结果,从图6可以看出,该卷积核的前向部分由4个单位卷积核构成(后向部分省略),每个单位卷积核的形状均为1×1×C_input,其中,第一个单位卷积核在C方向上的第一个数据为1,用于提取重复操作单元在C方向上的第一层数据,第二个单位卷积核在C方向上的第三个数据为1,用于提取重复操作单元在C方向上的第三层数据,第三个单位卷积核在C方向上的第二个数据为1,用于提取重复操作单元在C方向上的第二层数据,第四个单位卷积核在C方向上的第二个数据未1,用于提取重复操作单元在C方向上的第二层数据,因此,通过该卷积核实现的处理操作为:将该重复操作单元在C方向的第二层与第三层数据进行交换后,再对原有的第二层数据进行复制,与图4中示出的结果相符。
通过上述公开实施例中提出的步骤S1221至S1224,可以通过多个单位卷积核的连接,得到用于实现数据处理的卷积核,这种方式大大简化了卷积核的生成难度,从而提升数据处理过程的简便性与实用性。
而通过上述公开实施例中的步骤S121至步骤S122,可以看出卷积核是基于可复用的特性而生成的,随着待处理数据的规模不断增大,卷积核所带来的额外数据占所有数据的比例会不断下降,从而进一步增强数据处理方法的效率和实用性能,同时,由于人工智能处理器还可以不断对卷积操作进行改进,因此随着人工智能处理器中卷积操作的性能不断增强,数据处理的过程也会进一步获得优化。
通过上述公开实施例中还可以看出,本公开实施例中提出的数据处理方法,其实现的前提为待处理数据可以被划分为多个重复操作单元,从而利用这些重复操作单元执行的处理操作的复用性,来将数据处理过程转化为卷积操作过程。因此,当待处理数据无法被划分为多个重复操作单元,或是被划分的重复操作单元数量过少,执行的重复处理操作的次数较少时,此时若将数据处理过程转化为卷积操作,则由于卷积核可能带来大量的冗余数据,同时卷积操作所消耗的时间,比起直接进行数据处理来说可能更长,因此此时可以直接对待处理数据进行处理,而不再将其转化为卷积运算。因此,在一种可能的实现方式中,本公开实施例中提出的数据处理方法还可以包括:
步骤S14,在重复执行的处理操作的重复次数小于阈值时,对待处理数据进行数据处理,得到数据处理结果。
上述公开实施例中,阈值的取值可以根据实际情况进行灵活确定,在一种可能的实现方式中,可以根据比较卷积运算与直接进行数据处理的估算时间的大小,来确定重复执行的处理操作的重复次数阈值。
通过在重复次数小于阈值时直接对待处理数据进行数据处理,可以进一步提升人工智能处理器的运算速度和效率。
除此之外,在对数据执行了如数据复制或是数据迁移等数据处理过程后,得到的处理结果,可以用于进行运算。因此,在一种可能的实现方式中,本公开实施例中提出的数据处理方法还包括:
步骤S15,根据处理结果进行运算。
其中,具体执行何种运算,在本公开实施例中不做限制,根据实际情况灵活选择即可。运算的实现方式同样不受限制,在一种可能的实现方式中,可以通过调用人工智能处理器中ALU的运算指令,来实现运算。
应用示例
计算机视觉是一种高频率的出现在无人驾驶以及智能视频处理领域的技术。随着对目标检测精度要求的逐渐提高以及特征金字塔(FPN)等算法的出现,检测网络以及图像处理的过程中往往会带有上采样的要求,即通过采样获得数据量更大的样本。上采样的方式根据其目的不同,其处理方式会有着极大的不同。但是无论上采样的算法是离散或者连续,规律或者随机,在具体实现过程中不可避免的会出现数据的复制。传统的CPU或GPU大多会直接通过访存的方式去重复的获得所需要的数据。对于CPU和GPU来说,当一个输入数据被多次使用时,软件只需要控制硬件多次使用这个数据进行计算即可,输入数据在进行计算前并不会真正的被“复制”(或者仅仅被少量复制)。我们将数据的基本单元称之为标量,将多个数据的线性集合称之为向量。无论是CPU还是GPU,其单个ALU进行的单次计算所需要的数据大多的都是标量,或者是极小规模的向量(例如4个标量)。GPU正是通过将大量的上述ALU并行起来,才提高了对独立数据的处理能力。
图7示出根据本公开一应用示例的示意图,如图所示,在GPU或GPU中,在进行数据复制及运算时,往往是先将缓存中的数据进行循环复制,在复制完成后,再调用ALU进行计算。举例来说,某种运算过程需要将一块长度为16个标量的数据中的每个数据复制四遍,并通过一系列后续计算得到一块长度为64个标量的数据。假设GPU中ALU的并行度为4(即可以同时处理四个数据),那么GPU可以通过同时调用16个处理器单元,将复制数据的过程和后续计算的过程都并行起来(即每个处理器通过标量操作复制三次输入数据得到ALU需要的4个数据,再调用ALU完成后续的所有计算)。
AI专用芯片由于主要用于进行神经网络的相关计算中,因此在进行相关算法(例如卷积,池化等神经网络中常见的计算类型)的计算时的优势便是进行了向量化。相较于CPU与GPU的ALU中使用的小规模向量化,AI专用芯片使用的向量化规模更大,这极大的提升了每个ALU同时可以处理的数据量,但同时也带来了对齐方面以及并行度方面的限制。仍以长度为16个标量的数据的复制与计算为例,对于ALU并行度为64的AI专用芯片来说,尽管在计算长度为64个标量的数据时,AI专用芯片较之与GPU会有极大的优势,但是在准备这64个数据的过程中,AI专用芯片则由于较高的并行度要求只能单核运行。GPU可以调用16个流处理器,然而在AI专用芯片中,这个过程只能由一个AI处理器完成,即需要将16个数据共复制48遍后再调用ALU进行计算,因此最终的操作数为49。假设复制一个数据的时间是相同的,那么在数据复制的过程中,AI专用芯片就会多花费近12倍的时间。换句话来说,GPU可以将复制数据的过程并行起来,但是AI专用芯片由于较高的并行度要求则不行,而且在一般情况下,GPU的处理器单元数量的确会比AI专用芯片多出数倍甚至数十倍。这就导致在算法实现时AI专用芯片不能使用与GPU编程时相同的逻辑,否则算法性能会有极大的下降。
基于上述原因,本公开应用示例提出一种数据处理方法,图8示出根据本公开一应用示例的示意图,如图所示,本公开应用示例在进行数据处理时,其过程可以为:
首先读取数据;基于数据处理的需求,找到最小的重复操作单元;然后基于该单元生成对应的卷积核;最后调用AI专用芯片上的卷积指令完成对数据的复制或者搬移。
其中,找到最小的重复操作单元,该重复操作单元的形状可以根据读取的数据的形状来确定。如果读取的数据是一维向量,则其最小的重复操作单元的形状也为一维向量,在本公开应用示例中,假定最小的重复单元为一个长度为3的向量,比如[1 2 3]T、[3 3 4]T或是[8 9 7]T等,这些最小的重复操作单元均可以执行对位置2的数据和位置3的数据进行交换,并在交换后对原位置2的数据进行一次复制,基于此重复操作单元需要进行的操作,可以生成对应的卷积核,即为了保留原位置1的数据,因此需要以一个[1 0 0]的单位向量对位置1的数据进行提取,接着为了将位置2的数据和位置3的数据进行交换,因此需要先以一个[0 0 1]的单位向量提取位置3的数据,再通过一个[0 1 0]的向量提取位置2的数据,从而实现交换,最后,为了对原位置2的数据进行复制,因此可以再次以一个[0 1 0]的向量来再次提取位置2的数据,将上述单位向量按照顺序拼接,则可以得到与一维向量形状的最小重复操作单元所对应的卷积核,通过上述内容可知,在本公开应用示例中,该卷积核为:
将该卷积核与最小重复单元进行卷积操作,则可以得到处理后的数据,以最小重复单元的具体内容为[1 2 3]T为例,通过
这一等式可以看出,处理后可以得到的数据为[1 3 2 2]T。
进一步地,如果读取的数据是三维向量,则其最小的重复操作单元的形状也为三维向量,在本公开应用示例中,假定最小的重复单元为一个形状为H×W×C的向量,其形状可以如图3所示,该最小重复单元中具体包含的数据内容,可以根据实际情况灵活确定,在此不做限制,以图中为例,该最小重复单元中沿C方向的第一层的数据均为1,第二层的数据均为2,第三层的数据均为3,其余层的数据内容在此暂行省略,进一步假定这些最小的重复操作单元均可以执行沿C方向上对第二层的数据和第三层的数据进行交换,并在交换后对原第二层的数据进行一次复制,基于此重复操作单元需要进行的操作,可以生成对应的卷积核,该卷积核的形式如图6所示,从图中可以看出,在本公开应用示例中,卷积核由多个如图4所示的单位卷积核共同构成,每个单位卷积核都对应一次在H方向和C方向步幅为1的全卷积,为了保留沿C方向上第一层的数据,因此需要以一个在C方向上的第一位数据为1的单位卷积核对第一层的数据进行提取,接着为了交换第二层与第三层的数据,因此需要先以一个在C方向上的第三位数据为1的单位卷积核对第三层的数据进行提取,再通过一个在C方向上的第二位数据为1的单位卷积核对第二层的数据进行提取,从而实现交换,最后,为了对原第二层的数据进行复制,因此可以再次以一个在C方向上的第二位数据为1的单位卷积核来再次提取第二层的数据,将上述单位卷积核案按照顺序拼接,则可以得出如图6所示的卷积核。将该卷积核与如图3所示的最小重复单元进行卷积操作,最终得出的处理后的数据如图5所示,从图中可以看出,得出的数据确实完成了如上所述的数据交互与复制操作。
通过在人工智能处理器内将复制数据的过程也并行了起来,相较于GPU上通过调用多个处理单元的形式进行并行,本公开应用示例提出的数据处理方法,通过设计特殊的卷积核将多条并行的操作转化为了一次处理数据量更大的操作。由于卷积核的可复用性,当输入数据的规模不断增大的情况下,卷积核所带来的额外的数据占所有数据的比例会下不断下降,其操作本身也会根据AI专用芯片对卷积操作的改进获得不同程度的优化。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
进一步需要说明的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图9示出根据本公开实施例的数据处理装置的框图。如图所示,所述装置包括:
第一获取模块901,用于获取待处理数据;
第二获取模块902,用于获取与所述待处理数据对应的卷积核;
卷积处理模块903,用于根据所述卷积核与所述待处理数据,进行卷积运算,实现所述待处理数据的复制操作和/或迁移操作。
可选地,所述第二获取模块902包括:
解析单元,用于根据所述待处理数据,确定需重复执行的处理操作;
卷积核获取单元,用于根据所述需重复执行的处理操作对应的待处理数据的数据规模以及所述待处理数据的数据类型,获取所述卷积核。
可选地,所述卷积核获取单元包括:
第一子模块,用于根据所述处理操作对应的待处理数据的数据规模,确定单位卷积核的数据规模,其中,所述单位卷积核用于提取所述待处理数据在预定方向上的数据内容;
第二子模块,用于根据所述待处理数据的类型,确定每个单位卷积核的内容,以及所有单位卷积核的顺序;
第三子模块,用于根据所有单位卷积核的顺序,利用每个单位卷积核的内容得到所述卷积核。
图10是根据一示例性实施例示出的一种数据处理装置1300的框图。例如,装置1300可以被提供为一服务器。参照图10,装置1300包括处理组件1322,其进一步包括一个或多个处理器,以及由存储器1332所代表的存储器资源,用于存储可由处理组件1322的执行的指令,例如应用程序。存储器1332中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1322被配置为执行指令,以执行上述方法。
装置1300还可以包括一个电源组件1326被配置为执行装置1300的电源管理,一个有线或无线网络接口1350被配置为将装置1300连接到网络,和一个输入输出(I/O)接口1358。装置1300可以操作基于存储在存储器1332的操作系统,例如:Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1332,上述计算机程序指令可由装置1300的处理组件1322执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random AccessMemory)、静态随机存取存储器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)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述数据处理装置。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
图11示出根据本公开实施例的板卡的结构框图,参阅图11,上述板卡除了包括上述芯片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超仪和/或心电图仪。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。
Claims (8)
1.一种数据处理方法,其特征在于,应用于人工智能处理器,所述方法包括:
获取待处理数据;
获取与所述待处理数据对应的卷积核;
根据所述卷积核与所述待处理数据,进行卷积运算,实现所述待处理数据的复制操作和/或迁移操作。
2.根据权利要求1所述的方法,其特征在于,所述卷积核的获取过程包括:
根据所述待处理数据,确定重复执行的处理操作;
根据所述处理操作对应的待处理数据的数据规模以及所述待处理数据的数据类型,获取所述卷积核。
3.根据权利要求2所述的方法,其特征在于,获取所述卷积核的步骤包括:
根据所述处理操作对应的待处理数据的数据规模,确定单位卷积核的数据规模,其中,所述单位卷积核用于提取所述待处理数据在预定方向上的数据内容;
根据所述待处理数据的数据类型,确定每个单位卷积核的内容,以及所有单位卷积核的顺序;
根据所有单位卷积核的顺序,利用每个单位卷积核的内容得到所述卷积核。
4.一种数据处理装置,其特征在于,所述装置包括:
第一获取模块,用于获取待处理数据;
第二获取模块,用于获取与所述待处理数据对应的卷积核;
卷积处理模块,用于根据所述卷积核与所述待处理数据,进行卷积运算,实现所述待处理数据的复制操作和/或迁移操作。
5.根据权利要求4所述的装置,其特征在于,所述第二获取模块包括:
解析单元,用于根据所述待处理数据,确定需重复执行的处理操作;
卷积核获取单元,用于根据所述需重复执行的处理操作对应的待处理数据的数据规模以及所述待处理数据的数据类型,获取所述卷积核。
6.根据权利要求5所述的装置,其特征在于,所述卷积核获取单元包括:
第一子模块,用于根据所述处理操作对应的待处理数据的数据规模,确定单位卷积核的数据规模,其中,所述单位卷积核用于提取所述待处理数据在预定方向上的数据内容;
第二子模块,用于根据所述待处理数据的类型,确定每个单位卷积核的内容,以及所有单位卷积核的顺序;
第三子模块,用于根据所有单位卷积核的顺序,利用每个单位卷积核的内容得到所述卷积核。
7.一种数据处理装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-3任一项所述的方法。
8.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911338797.5A CN111125617A (zh) | 2019-12-23 | 2019-12-23 | 数据处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911338797.5A CN111125617A (zh) | 2019-12-23 | 2019-12-23 | 数据处理方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111125617A true CN111125617A (zh) | 2020-05-08 |
Family
ID=70501224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911338797.5A Pending CN111125617A (zh) | 2019-12-23 | 2019-12-23 | 数据处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111125617A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651715A (zh) * | 2020-06-01 | 2020-09-11 | 中国科学院空天信息创新研究院 | 基于fpga的数据处理方法、处理器、设备和介质 |
CN113032013A (zh) * | 2021-01-29 | 2021-06-25 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
CN113835990A (zh) * | 2020-06-23 | 2021-12-24 | 中科寒武纪科技股份有限公司 | 检测方法、装置、计算机设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170365306A1 (en) * | 2016-06-21 | 2017-12-21 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Data Processing Method and Apparatus |
CN108268931A (zh) * | 2016-12-30 | 2018-07-10 | 华为技术有限公司 | 数据处理的方法、装置和系统 |
CN108573305A (zh) * | 2017-03-15 | 2018-09-25 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、设备及装置 |
CN109086075A (zh) * | 2017-10-30 | 2018-12-25 | 上海寒武纪信息科技有限公司 | 人工智能处理器及使用处理器执行矩阵乘向量指令的方法 |
CN109685201A (zh) * | 2018-12-14 | 2019-04-26 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN109885407A (zh) * | 2019-03-05 | 2019-06-14 | 上海商汤智能科技有限公司 | 数据处理方法和装置、电子设备、存储介质 |
KR20190136891A (ko) * | 2018-05-30 | 2019-12-10 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
CN110580324A (zh) * | 2019-07-23 | 2019-12-17 | 珠海格力电器股份有限公司 | 矩阵运算方法、装置、计算机设备和存储介质 |
-
2019
- 2019-12-23 CN CN201911338797.5A patent/CN111125617A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170365306A1 (en) * | 2016-06-21 | 2017-12-21 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Data Processing Method and Apparatus |
CN108268931A (zh) * | 2016-12-30 | 2018-07-10 | 华为技术有限公司 | 数据处理的方法、装置和系统 |
CN108573305A (zh) * | 2017-03-15 | 2018-09-25 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、设备及装置 |
CN109086075A (zh) * | 2017-10-30 | 2018-12-25 | 上海寒武纪信息科技有限公司 | 人工智能处理器及使用处理器执行矩阵乘向量指令的方法 |
KR20190136891A (ko) * | 2018-05-30 | 2019-12-10 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
CN109685201A (zh) * | 2018-12-14 | 2019-04-26 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN109885407A (zh) * | 2019-03-05 | 2019-06-14 | 上海商汤智能科技有限公司 | 数据处理方法和装置、电子设备、存储介质 |
CN110580324A (zh) * | 2019-07-23 | 2019-12-17 | 珠海格力电器股份有限公司 | 矩阵运算方法、装置、计算机设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
WEIXIN_30859423: "十个利用矩阵乘法解决的经典题目", 《HTTPS://BLOG.CSDN.NET/WEIXIN_30859423/ARTICLE/DETAILS/97608458》 * |
暗海风: "AI芯片:高性能卷积计算中的数据复用", 《HTTP://WWW.CNBLOGS.COM/SEA-WIND/P/11421688.HTML》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651715A (zh) * | 2020-06-01 | 2020-09-11 | 中国科学院空天信息创新研究院 | 基于fpga的数据处理方法、处理器、设备和介质 |
CN113835990A (zh) * | 2020-06-23 | 2021-12-24 | 中科寒武纪科技股份有限公司 | 检测方法、装置、计算机设备和存储介质 |
CN113835990B (zh) * | 2020-06-23 | 2024-01-30 | 中科寒武纪科技股份有限公司 | 检测方法、装置、计算机设备和存储介质 |
CN113032013A (zh) * | 2021-01-29 | 2021-06-25 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
CN113032013B (zh) * | 2021-01-29 | 2023-03-28 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240152729A1 (en) | Convolutional neural network (cnn) processing method and apparatus performing high-speed and precision convolution operations | |
KR102148110B1 (ko) | 계산 장치 및 방법 | |
CN109685201B (zh) | 运算方法、装置及相关产品 | |
CN111125617A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
EP3796190A1 (en) | Memory device and method | |
CN110647722A (zh) | 数据处理方法及装置以及相关产品 | |
CN114764615A (zh) | 卷积运算的实现方法、数据处理方法及装置 | |
CN114003198A (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
CN112784951A (zh) | Winograd卷积运算方法及相关产品 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
CN112765540B (zh) | 数据处理方法、装置及相关产品 | |
CN112889072A (zh) | 用于降低功率消耗的系统、方法和装置 | |
CN113033813A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111047005A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111353124A (zh) | 运算方法、装置、计算机设备和存储介质 | |
US20220121908A1 (en) | Method and apparatus for processing data, and related product | |
CN112766473B (zh) | 运算装置及相关产品 | |
CN112766471B (zh) | 运算装置及相关产品 | |
CN113626079A (zh) | 数据处理方法及装置以及相关产品 | |
JP2022539554A (ja) | 高精度のニューラル処理要素 | |
CN112784206A (zh) | winograd卷积运算方法、装置、设备及存储介质 | |
CN113867800A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN112784207B (zh) | 运算方法及相关产品 | |
CN111061507A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112765542A (zh) | 运算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200508 |