CN115952835A - 数据处理方法、可读介质和电子设备 - Google Patents
数据处理方法、可读介质和电子设备 Download PDFInfo
- Publication number
- CN115952835A CN115952835A CN202310080183.1A CN202310080183A CN115952835A CN 115952835 A CN115952835 A CN 115952835A CN 202310080183 A CN202310080183 A CN 202310080183A CN 115952835 A CN115952835 A CN 115952835A
- Authority
- CN
- China
- Prior art keywords
- data
- calculation
- core
- processing
- layer
- 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
Landscapes
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及人工智能领域,特别涉及一种数据处理方法、可读介质和电子设备,其中电子设备能够运行神经网络模型,神经网络模型包括第一处理层和第二处理层,并且所述电子设备包括第一计算核和第二计算核,其中方法包括:第一计算核获取待计算数据;第一计算核对待计算数据中的至少部分数据进行对应第一处理层的计算,得到第一计算结果;第一计算核将第一计算结果发送给第二计算核;第二计算核对第一计算结果进行对应第二处理层的计算,得到第二计算结果。
Description
技术领域
本申请涉及人工智能领域,特别涉及一种数据处理方法、可读介质和电子设备。
背景技术
随着人工智能(artificial intelligence,AI)的迅速发展,卷积神经网络模型在人工智能领域的应用越来越广泛。在卷积神经网络的计算过程中,如果待计算数据较大,电子设备通常会将待计算数据分为多个数据块,将不同数据块送入不同计算核(core)中进行计算。
这样,每个计算核都需要对待计算数据中的部分数据进行所有卷积层的计算,计算核中需要存储所有卷积层的参数,这些参数也会占用计算核较大存储空间。当计算核无法将待计算数据和参数都存储在存储空间较小的静态随机存取存储器(static random-access memory,SRAM)上时,通常会将参与计算的数据存储在双倍数据率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,DDR SDRAM,简称DDR)上,
但是,计算核从DDR上读取和存储数据比从SRAM上读取和存储数据要慢,并且在卷积计算中,计算核需要反复从DDR中读取或者存储数据,这样增加了数据读取或存储的时间,降低了卷积神经网络(convolutional neural network,CNN)计算的效率。
发明内容
有鉴于此,本申请实施例提供了一种数据处理方法、可读介质和电子设备。
第一方面,本申请实施例提供了一种数据处理方法,应用于电子设备,电子设备能够运行神经网络模型,神经网络模型包括第一处理层和第二处理层,并且电子设备包括第一计算核和第二计算核;该方法包括:第一计算核获取待计算数据;第一计算核对待计算数据中的至少部分数据进行对应第一处理层的计算,得到第一计算结果;第一计算核将第一计算结果发送给第二计算核;第二计算核对第一计算结果进行对应第二处理层的计算,得到第二计算结果。
在上述方案中,待计算数据可以是在第一处理层前面的上一层处理层计算得到的计算结果,也可以是神经网络模型获取到的输入数据。并且,第一处理层可以是获取到完整的待计算数据之后就进行计算,也可以是在获取到待计算数据中部分数据块就可以先开始计算,其中,数据块的大小需要大于等于卷积核的大小。
在上述第一方面的一种可能实现中,第一计算核对待计算数据中的至少部分数据进行对应第一处理层的计算,得到第一计算结果,包括:第一计算核获取到的待计算数据中的第一数据块,第一数据块的大小等于第一处理层卷积核的大小;第一计算核对第一数据块进行第一处理层的计算,得到第一计算结果。
在上述第一方面的一种可能实现中,第一计算核获取到的待计算数据中的第二数据块,第二数据块的大小等于第一处理层卷积核的大小;第一计算核对第二数据块进行第一处理层的计算,得到第三计算结果;第一计算核删除待计算数据中第二数据块前获取到的数据。
在上述第一方面的一种可能实现中,确定神经网络模型中每个处理层的计算量;根据每个处理层的计算量,确定多个处理阶段,其中,每个处理阶段对应一个或者多个处理层,电子设备中的每个计算核对应一个处理阶段。
在上述第一方面的一种可能实现中,根据神经网络模型中处理层的执行顺序以及每个计算核对应的处理阶段,确定电子设备中的计算核之间的数据传输顺序。
在上述第一方面的一种可能实现中,每个处理阶段中的每个处理层的模型参数存储在对应的计算核的静态随机存取存储器上。
在上述第一方面的一种可能实现中,处理层为卷积层或者反卷积层,卷积层用于进行卷积操作,反卷积层进行反卷积操作;模型参数包括卷积操作或反卷积操作的步长、卷积核大小以及填充块数量。
在上述第一方面的一种可能实现中,待计算数据包括下列中的至少一项:图像数据、视频数据或者音频数据。
第二方面,本申请实施例提供了一种可读介质,该可读介质中包含有指令,当指令被电子设备的处理器执行时使电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任意一种数据处理方法。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令;以及处理器,是电子设备的处理器之一,用于运行指令以使电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任意一种数据处理方法。
第四方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括指令,该指令被电子设备执行时使电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任一种数据处理方法。
综上所述,通过本申请提供的数据处理方法、可读介质和电子设备,电子设备获取到部分输入数据时,就可以让所有计算核都开始工作,并且,每个计算核只用负责对应卷积阶段的运算,每个计算核只用存储对应卷积阶段的卷积参数,减少了计算核需要存储的数据量。进而,通过本申请提供的数据处理方法,减少了电子设备中计算核等待输入数据的时间,减少了每个计算核需要存储的数据量,使得每个计算核使用自身本地SRAM就能完成对应的卷积计算,提升了读存数据的速率,进而提升了CNN计算的效率。
附图说明
图1根据本申请的一些实施例,示出了一种卷积神经网络的结构示意图;
图2根据本申请的一些实施例,示出了一种二维图像进行卷积计算的过程示意图;
图3根据本申请的一些实施例,示出了一种一维数据进行三层卷积计算的过程示意图;
图4根据本申请的一些实施例,示出了一种将输入图像划分数据块的示意图;
图5根据本申请的一些实施例,示出了一种电子设备读取图像像素点的示意图;
图6根据本申请的一些实施例,示出了一种数据处理方法的流程示意图;
图7根据本申请的一些实施例,示出了一种计算核和卷积层的对应关系的示意图;
图8根据本申请的一些实施例,示出了一种三层卷积计算的数据处理流程的示意图;
图9根据本申请的一些实施例,示出了一种数据处理装置示意图;
图10根据本申请的一些实施例,示出了一种电子设备的结构示意图。
具体实施方式
本申请的说明性实施例包括但不限于数据处理方法、可读介质和电子设备。
为了便于理解,首先介绍本申请实施例涉及的术语。
卷积神经网络(convolutional neuron network,CNN)是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,可以应用于图像处理、自然语言处理以及计算机视觉。
下面以CNN应用于图像处理为例对CNN的结构进行举例说明。
图1根据本申请的一些实施例,示出了一种CNN模型的结构示意图。如图1所示,CNN模型可以包括输入层,卷积层,池化层,全连接层以及输出层,其中池化层为可选的。
输入层用于对输入图像进行预处理,例如归一化操作、去均值操作、主成分分析(principal component analysis,PCA)降维操作。
卷积层可以包括多层卷积计算,如图1所示卷积层可以包括如示例的3层卷积层,例如卷积层1(conv1),卷积层2(conv2)以及卷积层3(conv3)。卷积层可以包括很多个卷积算子,卷积算子也称为卷积核(kernel),相当于一个从输入图像中提取特定信息的过滤器。卷积核本质上是一个权重矩阵,其权重矩阵的纵深维度(depth dimension)和输入图像的纵深维度是相同的,权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以从输入图像中提取信息,从而帮助卷积神经网络进行正确的预测。
卷积层的计算过程为卷积核与输入图像中卷积核大小(kernel size)的数据进行卷积运算,每计算完一个kernel size的数据后,就往后移动一个步长(stride),计算下一个kernel size的数据,直到计算完全部数据,最终得到的结果即为该层卷积层的特征图(feature map)。应理解,在卷积操作中,每层卷积层计算得到feature map都会越来越小,为了保证feature map的大小,并且为了增加图像边缘的像素点在卷积层中被使用的次数,还会在输入图像的边缘加入填充(padding)。
池化层用于减少卷积神经网络的计算量,池化层在图1中未示出。在图像处理过程中,池化层的目的就是减少图像的空间大小。在卷积层之后可以周期性地引入池化层,具体可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。
全连接层用于整合卷积层或者池化层中具有类别区分性的局部信息,生成最终的输出信息(所需要的类信息或别的相关信息)。全连接层可以包括多层结构,每层全连接层的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。
输出层使用激活函数将神经元的输入映射到输出端。同时,输出层还具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络的前向传播完成,反向传播就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络的损失及卷积神经网络通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图1所示的卷积神经网络仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在。
在一些实施例中,神经网络模型还包括反卷积神经网络,反卷积神经网络包括反池化层,矫正层和反卷积层(deconvolution)。其中,反池化层对应CNN中的池化层,矫正层对应CNN中激活函数,反卷积层对应CNN中的卷积层,反卷积也可称为转置卷积。
卷积层和反卷积层可统称为处理层,卷积层进行卷积操作,反卷积层进行反卷积操作。通常,卷积操作之后,输出的feature map通常会小于输入图像,而反卷积操作之后,输出的feature map通常会大于输入图像。
下面均以处理层为卷积层进行举例说明,应理解当处理层为反卷积层时,可参考关于卷积层的描述。
下面结合图2举例说明卷积操作的过程,其中,图2中kernel size为3*3,图2以输入图像为4*4的二维矩阵为例进行举例说明。如图2所示,卷积操作中输入的输入图像为4*4,kernel size为3*3,stride为1时,如图2中(A)所示卷积核将先和输入图像中前3*3个单位的数据与卷积核进行卷积,得到计算结果1。然后,如图2中的(B)所示,根据stride等于1,向右移动一个单位,计算后3*3个单位的数据,得到计算结果2。以此类推,如图2中的(C)和图2中的(D)所示,得到计算结果3和计算结果4。最终,计算结果1-计算结果4即为该层卷积层输出的feature map。
下面再结合图3对具有3层卷积层的CNN计算过程进行举例说明。其中,为了便于说明,以输入数据为一维数据进行举例说明,应理解,输入数据为一维数据,kernel size也应该为一维。图3中输入数据为包括18个元素一维数组,图3中用0-17表示这18个元素,每层的卷积核大小都为3,每层的步长都为1。如图3所示,经过卷积层1(conv1)的计算之后,元素0-2和kernel卷积得到S10,以此类推最终得到conv1的输出结果S10-S115。经过卷积层2(conv2)的计算之后,最终得到conv2的输出结果S20-S213。经过卷积层3(conv3)计算之后,最终得到conv3的输出结果S30-S311。
由上可知,CNN是根据卷积核等参数对输入数据进行逐层的卷积计算,当输入数据的数据量较大时,CNN的计算量也会较大,输入数据和输出结果也需要占用较大存储空间。例如,输入数据为图像时,如果图像的分辨率都较高,其计算量就会较大。
而目前例如手机、电视以及电脑等电子设备,对显示屏分辨率要求较高,且其显示屏的刷新显示界面频率也越来越高,通常为60Hz(约16.6毫秒)或者为120Hz(约8.3毫秒)。因此,如果上述电子设备的神经网络处理器(neural-network processing unit,NPU)需要对显示图像进行CNN处理,为了提高处理效率,通常电子设备会将输入数据以及CNN的参数等存储在SRAM上,电子设备从SRAM上读取数据的速度比从DDR上读取速度要快。但是,电子设备的SRAM通常存储空间较小,无法支持数据量较大的CNN计算。
在一些示例中,为了提高CNN运算速率,电子设备会将输入数据分为若干数据块,将数据块分配给不同处理器的计算核(core)进行计算。例如,电子设备需要对如图4中的(A)所示的输入图像进行卷积计算,电子设备可以先将输入图像拆分为多个数据块。如图4中(B)所示,将所述输入图像拆分为数据块0至数据块15。然后将不同数据块分配给不同计算核。也即是说,如果该CNN有3层卷积层,电子设备可以将不同数据块分配给不同计算核,由不同计算核并行完成不同数据块的3层卷积计算,然后再将每个计算核的计算结果进行汇总得到最终的输出结果。
应理解,直接将输入图像分为独立的多个数据块,会存在相邻数据块边缘部分的数据没有与卷积核进行到计算,在一些实施例中,为了避免数据漏算,在切分数据块时还会确定相邻数据块之间应该存在的最小重叠区域(overlap),使得每组数据都与卷积核参与了运算。并且为了增加图像边缘的像素点在卷积层中被使用的次数,还会在输入图像的边缘进行数据填充(padding)。
但是,电子设备的NPU从存储器或者从外部传感器获取图像时,是按Z字形(zigzag)的方式从左至右逐行读取像素点,如图5中的(A)所示,NPU是先读取第一行左侧第一个像素点,然后从左至右依次读取第一行的像素点,然后再从第二行左侧第一个像素点开始读取,以此类推。如图5中的(A)所示,NPU已经读取到第6行的第10个像素点,此时电子设备只完整读取到前四个数据块(数据块0至数据块3),只有四个计算核在工作。而要到如图5中(B)所示,读取到第8行第7个像素点时,数据块4的所有像素点已经被读取完,电子设备才会启动五个计算核计算数据块4。
应理解,上述图5为了便于说明,示例性地用方块表示像素点。在实际应用中,像素点比图中所示要小。例如,常见图像分辨率包括1280*720每英寸像素(pixels per inch,ppi),2560*1440P等等。
综上所述,目前为了提高CNN计算效率,通常将输入数据分为多个数据块,将多个数据块送入不同计算核进行处理。但是,NPU读取数据是逐行读取的,当还未完整读取完一个数据块的全部数据时,处理该数据块的计算核是处于等待状态,因此处理最后一个数据块的计算核会存在较长的等待时间。
并且,由于每个计算核都需要对数据块进行完整的卷积计算,因此每个计算核都需要存储每层卷积层的参数,进而增大了需要存储的数据量。如果每个计算核的本地SRAM存储空间不够存放所有卷积层的参数、需要进行计算的数据块等数据时,卷积层参数和数据块等数据会被存放进DDR等存储器中,而DDR等存储器读存数据的效率较慢,会降低整体CNN运算效率。
为了提高神经网络模型的运行效率,本申请提供了一种数据处理方法,该方法应用于电子设备,该电子设备具有多个计算核,电子设备需要对输入数据进行多层卷积操作时,将多层卷积操作中的一层或多层划分为一个卷积阶段(stage),然后由不同计算核来分别完成不同卷积阶段的卷积计算,当每个计算核获取到能进行对应卷积阶段的卷积操作的最小数据块时,就对该数据块进行对应卷积阶段的卷积操作,然后将计算结果发送给下一个计算核,由下一个计算核完成下一个卷积阶段的计算。
可选地,在计算核得到计算结果并发送给下一个计算核之后,该计算核还可以将该计算结果从该计算核的存储空间中删除。具体可以是从该计算核的本地SRAM中删除。
例如,电子设备具有三个可以参与卷积计算的计算核:core1、core2以及core3,当CNN具有conv1、conv2以及conv3三层卷积层时,可以每个卷积层都对应一个卷积阶段,即每个计算核负责一层卷积层的计算。具体地,当core1获取到输入数据中conv1卷积核大小的部分数据之后,就开始进行conv1的计算,然后将计算结果传输给core2。直到core2获取到conv1发送的数据为conv2卷积核大小的时候,core2就可以开始conv2的计算。然后将conv2的计算结果传输给core3。core3获取到conv3的卷积核大小的数据时,core3也开始conv3的计算。
在上述过程中,每个计算核获取到卷积核大小的数据之后,就开始了持续性地计算。例如,core1在不断读取输入数据,每计算完一个卷积核大小的数据后,就往后移动一个步长,计算下一个卷积核大小的数据。同样地,core2和core3在获取到上一个计算核的计算结果大于卷积核的大小之后,也开始持续地卷积计算。
这样,对于电子设备而言,电子设备获取到部分输入数据时,就可以让所有计算核都开始工作,并且,每个计算核只用负责对应卷积阶段的运算,每个计算核只用存储对应卷积阶段的卷积参数,减少了计算核需要存储的数据量。进而,通过本申请提供的数据处理方法,减少了电子设备中计算核等待输入数据的时间,减少了每个计算核需要存储的数据量,使得每个计算核使用自身本地SRAM就能完成对应的卷积计算,提升了读存数据的速率,进而提升了CNN计算的效率。
可以理解,电子设备可以是能够运行神经网络模型的任意电子设备,包括但不限于手机、可穿戴设备(如智能手表等)、电视、平板电脑、桌面型/膝上型/手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备等,本申请实施例不做限定。
下面结合图6对本申请提供的数据处理方法的流程步骤。
S610:根据卷积层和计算核的数量,确定每个计算核对应的一个或多个卷积层。
电子设备先根据CNN的卷积层的层数以及可参与CNN卷积计算的计算核数量,将一个或者多个卷积层划分为一个卷积阶段,由每个计算核负责一个卷积阶段的卷积计算。然后,电子设备根据卷积层和计算核的分配结果,可以确定在卷积计算中,数据在计算核之间的传输顺序。
可选地,电子设备还可以根据每层卷积层的参数,预计每个卷积层的计算量,然后根据计算量对卷积层划分卷积阶段,使得计算量能均衡分配到不同计算核上。
可选地,卷积层可以是按计算顺序连续地分配到一个计算核中,也可以根据计算量,将不连续的卷积层分配到同一个计算核中。
例如,如图7所示,CNN模型包括6层卷积层:卷积层1(conv1)至卷积层6(conv6)和一层池化层(pooling),其中,conv3的计算同时需要conv1和conv2的计算结果,因此电子设备可以将这三层卷积层由同一计算核进行计算。最终,core1负责conv1至conv3的计算,core2负责pooling和conv4的计算,core3负责conv5和conv6的计算。因此,输入数据先输入到core1后core1将计算结果输入到core2中,core2将计算到的结果输入到core3中,core3最终输出卷积层的最终计算结果。
S620:将输入数据输入到第一个计算核,将输入数据从第一层卷积层开始计算。
电子设备将获取到的输入数据输入到第一计算核,第一计算核包括第一层卷积层的计算,如图7中的core1,core1用于执行包括conv1的计算。
S630:第一个计算核对输入数据进行计算,并将计算结果输入到下一个计算核。
电子设备的第一计算核将获取到的数据执行该第一计算核包含的一层或多层卷积操作,得到第一计算结果,并将第一计算结果输入到下一个计算核。下一个计算核为第一计算结果需要进行下一层卷积层计算对应的计算核。
应理解,电子设备无需获取到完整的输入数据才开始执行第一计算核对应的计算,在获取到输入数据中第一卷积层卷积核大小的部分数据之后,第一计算核就可以开始计算。
S640:依次将上个计算核得到的计算结果输入到下个计算核,直到输入数据完成所有卷积层计算。
电子设备依次将上一个计算核计算得到计算结果输入到下一个计算核,使得输入数据全部完成卷积层的计算。其中,每个计算核都可以是在获取到能进行卷积计算的最小数据块时,就可以进行该计算核包括的卷积层的卷积计算。
可选地,每个计算核将计算结果输出到下一个计算核时,该计算结果就可以从当前计算核删除,以节省计算核的存储空间。
综上所述,通过本申请提供的数据处理方法,对于电子设备而言,电子设备获取到部分输入数据时,就可以让所有计算核都开始工作,并且,每个计算核只用负责对应卷积阶段的运算,每个计算核只用存储对应卷积阶段的卷积参数,减少了计算核需要存储的数据量。进而,通过本申请提供的数据处理方法,减少了电子设备中计算核等待输入数据的时间,减少了每个计算核需要存储的数据量,使得每个计算核使用自身本地SRAM就能完成对应的卷积计算,提升了读存数据的速率,进而提升了CNN计算的效率。
下面对上述数据处理方法进行举例说明。
参见图8,以输入数据为数据0-数据6,卷积层包括卷积层1(conv1)、卷积层2(conv2)以及卷积层3(conv3),每层卷积层的kernel size为3,stride为1为例。并且电子设备确定由计算核1(core1)处理conv1的计算,计算核2(core2)处理conv2的计算,计算核3(core3)处理conv3的计算。
core1用于接收输入数据,core1接收输入数据时是按顺序进行读取,即依次读取数据0-数据6。
在T1时间段,core1获取到数据0-数据2时,其数据量已经达到卷积核的大小,可以开始conv1的计算,得到计算结果S10,然后将S10传输到core2。此时core2接收到的数据还不足以开始进行卷积计算。
在T2时间段,core1又获取到数据3,此时core1将待计算数据的范围向后移动一个步长(stride)。根据数据1-数据3可以计算得到S11,此时数据0已经完成计算,可以从core1中删除。core1还会将S11传输到core2,但是core2接收到的数据还不足以开始进行卷积计算。
在T3时间段,core1又获取到数据4,此时core1将待计算数据的范围向后移动stride。根据数据2-数据4可以计算得到S12,数据1也已经完成计算,可以从core1中删除。core1还会将S12传输到core2。此时,core2接收到的数据等于kernel size,可以将S10至S12进行conv2的计算,得到S20,并将S20发送给core3。
在T4时间段,core1又获取到数据5,core1根据数据3-数据5可以计算得到S13,数据2也已经完成计算,可以从core1中删除。core1将S13传输到core2,core2再将S11至S13进行conv2的计算,得到S21,并将S21发送给core3。并且,S10已经完成计算,可以从core2中删除。
在T5时间段,core1又获取到数据6,core1根据数据4-数据6可以计算得到S14,数据3也已经完成计算,可以从core1中删除。core1将S14传输到core2,core2再将S12至S14进行conv2的计算,得到S22,并将S22发送给core3。并且,S11已经完成计算,可以从core2中删除。core3获取到S20至S22就可以进行conv3的计算,得到最终结果S30。
由上可知,通过本申请提供的数据处理方法,在每层计算核在获取到足够数据后就可以开始卷积计算,而且每个计算核中只用存储需要进行计算的卷积层的参数,例如,core1只需要存储conv1的参数,减少了计算核需要存储的数据量。进而,通过本申请提供的数据处理方法,减少了电子设备中计算核等待输入数据的时间,减少了每个计算核需要存储的数据量,使得每个计算核使用自身本地SRAM就能完成对应的卷积计算,提升了读存数据的速率,进而提升了CNN计算的效率。
为了提高神经网络模型的运行效率,本申请还提供了一种数据处理装置900,该装置可以应用于电子设备,该电子设备能够运行神经网络模型,神经网络模型包括第一处理层和第二处理层,并且电子设备包括第一计算核和第二计算核。如图9所示,该装置包括获取单元910、计算单元920、发送单元930以及确定单元940。
获取单元910用于通过第一计算核获取待计算数据;计算单元920用于通过第一计算核对待计算数据中的至少部分数据进行对应第一处理层的计算,得到第一计算结果;发送单元930用于通过第一计算核将第一计算结果发送给第二计算核;计算单元920还用于通过第二计算核对第一计算结果进行对应第二处理层的计算,得到第二计算结果。
在一些实施例中,获取单元910还用于通过第一计算核获取到的待计算数据中的第一数据块,第一数据块的大小等于第一处理层卷积核的大小;计算单元920还用于通过第一计算核对第一数据块进行第一处理层的计算,得到第一计算结果。
在另一些实施例中,获取单元910还用于通过第一计算核获取到的待计算数据中的第二数据块,第二数据块的大小等于第一处理层卷积核的大小;计算单元920还用于通过第一计算核对第二数据块进行第一处理层的计算,得到第三计算结果;确定单元940用于通过第一计算核删除待计算数据中第二数据块前获取到的数据。
在另一些实施例中,确定单元940还用于确定神经网络模型中每个处理层的计算量;确定单元940还用于根据每个处理层的计算量,确定多个处理阶段,其中,每个处理阶段对应一个或者多个处理层,电子设备中的每个计算核对应一个处理阶段。
在另一些实施例中,确定单元940还用于根据神经网络模型中处理层的执行顺序以及每个计算核对应的处理阶段,确定电子设备中的计算核之间的数据传输顺序。
在另一些实施例中,每个处理阶段中的每个处理层的模型参数存储在对应的计算核的静态随机存取存储器上。
在另一些实施例中,处理层为卷积层或者反卷积层,卷积层用于进行卷积操作,反卷积层进行反卷积操作;模型参数包括卷积操作或反卷积操作的步长、卷积核大小以及填充块数量。
在另一些实施例中,待计算数据包括下列中的至少一项:图像数据、视频数据或者音频数据。
综上所述,通过本申请提供的数据处理装置,电子设备获取到部分输入数据时,就可以让所有计算核都开始工作,并且,每个计算核只用负责对应卷积阶段的运算,每个计算核只用存储对应卷积阶段的卷积参数,减少了计算核需要存储的数据量。进而,通过本申请提供的数据处理方法,减少了电子设备中计算核等待输入数据的时间,减少了每个计算核需要存储的数据量,使得每个计算核使用自身本地SRAM就能完成对应的卷积计算,提升了读存数据的速率,进而提升了CNN计算的效率。
下面对本申请提供的数据处理方法所应用的电子设备进行详细介绍。
如图10所示,图10根据本申请的一些实施例,示出了一种电子设备100的结构示意图。如图10所示,电子设备100包括一个或多个处理器101A、NPU 101B、***内存102、非易失性存储器(non-volatile memory,NVM)103、通信接口104、输入/输出(I/O)设备105、以及用于耦接处理器101A、***内存102、非易失性存储器103、通信接口104和输入/输出(I/O)设备105的***控制逻辑106。其中:
处理器101A可以包括一个或多个处理单元,例如,可以包括中央处理器(centralprocessing unit,CPU)、图像处理器(graphics processing unit,GPU)、数字信号处理器(digital signal processor,DSP)、微处理器(micro-programmed control unit,MCU)、人工智能(artificial intelligence,AI)处理器或可编程逻辑器件(field programmablegate array,FPGA)的处理模块或处理电路可以包括一个或多个单核或多核处理器。
神经网络处理器101B可以用于实现神经网络模型的推理以及运行本申请实施例提供的数据处理方法对应的指令。神经网络处理器101B可以是独立的处理器,也可以集成于处理器101A内部。
***内存102是易失性存储器,例如随机存取存储器(random-access memory,RAM),双倍数据率同步动态随机存取存储器(double data rate synchronous dynamicrandom access memory,DDR SDRAM)等。***内存用于临时存储数据和/或指令,例如,在一些实施例中,***内存102可以用于存储上述神经网络模型的相关指令、数据块的计算结果等。
非易失性存储器103可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,非易失性存储器103可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(hard disk drive,HDD)、光盘(compact disc,CD)、数字通用光盘(digital dersatile disc,DVD)、固态硬盘(solid-state drive,SSD)等。在一些实施例中,非易失性存储器103也可以是可移动存储介质,例如安全数字(secure digital,SD)存储卡等。
特别地,***内存102和非易失性存储器103可以分别包括:指令107的临时副本和永久副本。指令107可以包括:由处理器101A和/或神经网络处理器101B中的至少一个执行时使电子设备100实现本申请各实施例提供的数据处理方法。
通信接口104可以包括收发器,用于为电子设备100提供有线或无线通信接口,进而通过一个或多个网络与任意其他合适的设备进行通信。在一些实施例中,通信接口104可以集成于电子设备100的其他组件,例如通信接口104可以集成于处理器101A中。在一些实施例中,电子设备100可以通过通信接口104和其他设备通信,例如,电子设备100可以通过通信接口104从其他电子设备获取待运行的神经网络模型。
输入/输出(I/O)设备105可以包括输入设备如键盘、鼠标等,输出设备如显示器等,用户可以通过输入/输出(I/O)设备105与电子设备100进行交互。
***控制逻辑106可以包括任意合适的接口控制器,以电子设备100的其他模块提供任意合适的接口。例如在一些实施例中,***控制逻辑106可以包括一个或多个存储器控制器,以提供连接到***内存102和非易失性存储器103的接口。
在一些实施例中,处理器101A中的至少一个可以与用于***控制逻辑106的一个或多个控制器的逻辑封装在一起,以形成***封装(system in package,SiP)。在另一些实施例中,处理器101A中的至少一个还可以与用于***控制逻辑106的一个或多个控制器的逻辑集成在同一芯片上,以形成片上***(system-on-chip,SoC)。
可以理解,图10所示的电子设备100的结构只是一种示例,在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程***上执行的计算机程序或程序代码,该可编程***包括至少一个处理器、存储***(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理***包括具有诸如例如数字信号处理器(digital signal processor,DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)或微处理器之类的处理器的任何***。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理***通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。
因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、可擦除可编程只读存储器(erasable programmable read only memory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。
因此,机器可读介质包括适合于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (10)
1.一种数据处理方法,应用于电子设备,其特征在于,所述电子设备能够运行神经网络模型,所述神经网络模型包括第一处理层和第二处理层,并且所述电子设备包括第一计算核和第二计算核;
所述方法包括:
所述第一计算核获取待计算数据;
所述第一计算核对所述待计算数据中的至少部分数据进行对应所述第一处理层的计算,得到第一计算结果;
所述第一计算核将所述第一计算结果发送给所述第二计算核;
所述第二计算核对所述第一计算结果进行对应所述第二处理层的计算,得到第二计算结果。
2.根据权利要求1所述方法,其特征在于,所述第一计算核对所述待计算数据中的至少部分数据进行对应所述第一处理层的计算,得到第一计算结果,包括:
所述第一计算核获取到的所述待计算数据中的第一数据块,所述第一数据块的大小等于所述第一处理层卷积核的大小;
所述第一计算核对所述第一数据块进行所述第一处理层的计算,得到所述第一计算结果。
3.根据权利要求2所述方法,其特征在于,所述方法还包括:
所述第一计算核获取到的所述待计算数据中的第二数据块,所述第二数据块的大小等于所述第一处理层卷积核的大小;
所述第一计算核对所述第二数据块进行所述第一处理层的计算,得到第三计算结果;
所述第一计算核删除所述待计算数据中所述第二数据块前获取到的数据。
4.根据权利要求1所述方法,其特征在于,所述方法还包括:
确定所述神经网络模型中每个处理层的计算量;
根据所述每个处理层的计算量,确定多个处理阶段,其中,每个处理阶段对应一个或者多个处理层,所述电子设备中的每个计算核对应一个处理阶段。
5.根据权利要求1所述方法,其特征在于,所述方法还包括:
根据所述神经网络模型中处理层的执行顺序以及每个计算核对应的处理阶段,确定所述电子设备中的计算核之间的数据传输顺序。
6.根据权利要求1至5任一项所述方法,其特征在于,所述方法还包括:
每个处理阶段中的每个处理层的模型参数存储在对应的计算核的静态随机存取存储器上。
7.根据权利要求6所述方法,其特征在于,
所述处理层为卷积层或者反卷积层,所述卷积层用于进行卷积操作,所述反卷积层进行反卷积操作;
所述模型参数包括卷积操作或反卷积操作的步长、卷积核大小以及填充块数量。
8.根据权利要求7所述方法,其特征在于,
所述待计算数据包括下列中的至少一项:图像数据、视频数据或者音频数据。
9.一种可读介质,其特征在于,所述可读介质中包含有指令,当所述指令被电子设备的处理器执行时使所述电子设备实现权利要求1至8中任一项所述的数据处理方法。
10.一种电子设备,其特征在于,包括:
存储器,用于存储由所述电子设备的一个或多个处理器执行的指令;
以及处理器,是所述电子设备的处理器之一,用于运行所述指令以使所述电子设备实现权利要求1至8中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310080183.1A CN115952835A (zh) | 2023-01-19 | 2023-01-19 | 数据处理方法、可读介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310080183.1A CN115952835A (zh) | 2023-01-19 | 2023-01-19 | 数据处理方法、可读介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115952835A true CN115952835A (zh) | 2023-04-11 |
Family
ID=87286012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310080183.1A Pending CN115952835A (zh) | 2023-01-19 | 2023-01-19 | 数据处理方法、可读介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115952835A (zh) |
-
2023
- 2023-01-19 CN CN202310080183.1A patent/CN115952835A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220261615A1 (en) | Neural network devices and methods of operating the same | |
US11449576B2 (en) | Convolution operation processing method and related product | |
US20210224125A1 (en) | Operation Accelerator, Processing Method, and Related Device | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
US11348004B2 (en) | Method of managing data representation for deep learning, method of processing data for deep learning and deep learning system performing the same | |
US11775430B1 (en) | Memory access for multiple circuit components | |
KR20200091623A (ko) | 위노그라드 변환에 기반한 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 | |
US11533458B2 (en) | Image processing device including neural network processor and operating method thereof | |
US20180137414A1 (en) | Convolution operation device and convolution operation method | |
US11741350B2 (en) | Efficient utilization of processing element array | |
JP2020537785A (ja) | ホスト通信されるマージされた重みと層単位命令のパッケージとを使用するニューラルネットワークアクセラレータによる多層ニューラルネットワーク処理 | |
US20200118249A1 (en) | Device configured to perform neural network operation and method of operating same | |
CN111767986A (zh) | 一种基于神经网络的运算方法及装置 | |
CN113673701A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN107909537B (zh) | 一种基于卷积神经网络的图像处理方法及移动终端 | |
US20230196113A1 (en) | Neural network training under memory restraint | |
JP7492555B2 (ja) | 複数の入力データセットのための処理 | |
US20220188961A1 (en) | Data processing method and sensor device for performing the same | |
US20220043630A1 (en) | Electronic device and control method therefor | |
US20220012569A1 (en) | Computer-implemented data processing method, micro-controller system and computer program product | |
US11636569B1 (en) | Matrix transpose hardware acceleration | |
CN115481717A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
KR20200129957A (ko) | 피처맵 데이터에 대한 압축을 수행하는 뉴럴 네트워크 프로세서 및 이를 포함하는 컴퓨팅 시스템 | |
CN115952835A (zh) | 数据处理方法、可读介质和电子设备 | |
JP2020191012A (ja) | 画像処理装置、撮像装置、画像処理方法 |
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 |