算子计算优化方法、装置、设备及存储介质
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种算子计算优化方法、装置、设备及存储介质。
背景技术
本部分旨在为权利要求书中陈述的本申请的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着人工智能的发展,大量算法开始不断涌现,而这些算法大都需要大量算力的支持,由此也催生了加速芯片的发展。
现有方案中,在对于模型的训练上采用GPU,而在推理上采用CPU、GPU或者一些其他的推理芯片来加速,GPU价格昂贵且对深度学习算子的支持较差,而CPU和现有的其他加速芯片只能支持深度学习的推理,缺乏有效的处理机制。
发明内容
本发明实施例提供了一种算子计算优化方法、装置、设备及存储介质,提高了深度学习模型的计算和推理效率。
第一方面,本发明实施例提供了一种算子计算优化方法,该方法包括:
获取存储单元中存储的原始数据,确定所述原始数据对应的数据处理算子;
根据所述数据处理算子对所述原始数据进行数据提取得到至少两个子原始数据;
对每个子原始数据进行数据预处理得到子待计算数据,将每个子待计算数据单独存储在一个子存储单元中;
通过和每个子存储单元对应的计算单元,对子存储单元中存储的子待计算数据执行对应的数据处理算子的计算,其中,所述数据处理算子和至少一个计算单元对应。
第二方面,本发明实施例还提供了一种算子计算优化装置,该装置包括:
算子确定模块,用于获取存储单元中存储的原始数据,确定所述原始数据对应的数据处理算子;
数据提取模块,用于根据所述数据处理算子对所述原始数据进行数据提取得到至少两个子原始数据;
数据预处理模块,用于对每个子原始数据进行数据预处理得到子待计算数据,将每个子待计算数据单独存储在一个子存储单元中;
数据计算模块,用于通过和每个子存储单元对应的计算单元,对子存储单元中存储的子待计算数据执行对应的数据处理算子的计算,其中,所述数据处理算子和至少一个计算单元对应。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所述的算子计算优化方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例所述的算子计算优化方法。
本发明实施例中,获取存储单元中存储的原始数据,确定所述原始数据对应的数据处理算子,根据所述数据处理算子对所述原始数据进行数据提取得到至少两个子原始数据,对每个子原始数据进行数据预处理得到子待计算数据,将每个子待计算数据单独存储在一个子存储单元中,通过和每个子存储单元对应的计算单元,对子存储单元中存储的子待计算数据执行对应的数据处理算子的计算,其中,所述数据处理算子和至少一个计算单元对应。该方案提高了深度学习模型的计算和推理效率。
附图说明
图1为本发明实施例提供的一种算子计算优化方法的流程图;
图2为本发明实施例提供的另一种算子计算优化方法的流程图;
图3为本发明实施例提供的另一种算子计算优化方法的流程图;
图3a为本发明实施例提供的一种算子计算优化结构示意图;
图4为本发明实施例提供的另一种算子计算优化方法的流程图;
图4a为本发明实施例提供的一种计算过程和数据预处理过程并行执行的示意图;
图5为本发明实施例提供的一种算子计算优化装置的结构框图;
图6为本发明实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
图1为本发明实施例提供的一种算子计算优化方法的流程图,本实施例可适用于对人工智能模型进行训练和推理,该方法可以由设备如计算机来执行,具体包括如下步骤:
步骤S101、获取存储单元中存储的原始数据,确定所述原始数据对应的数据处理算子。
其中,原始数据包括需要进行计算处理的数据,如图像数据、矩阵数据等,该原始数据可存储在存储单元中,通过智能模型对该原始数据进行处理以得到计算结果,如对该原始数据进行训练和推理。在一个智能模型中,基于其计算处理的不同可被分解为一些基本算子的组合,如简单的四则运算或者复杂的如卷积运算等。示例性的,以原始数据为一幅图像为例,其对应的数据处理算子可以是边缘提取、表情识别和背景强化等。
在一个实施例中,不同的模型对应不同的数据处理算子,在对原始数据进行处理时,可根据该模型以确定处理的原始数据对应的数据处理算子,示例性的,该模型需要使用的算子可以是元素算子、矩阵乘算子和卷积算子等。其中,数据处理算子为需要对原始数据进行处理的具体运算,如矩阵乘算子需要对原始数据中的矩阵进行乘法运算。
步骤S102、根据所述数据处理算子对所述原始数据进行数据提取得到至少两个子原始数据。
其中,不同数据处理算子对原始数据执行不同的数据运算,如图像边缘处理对原始图像数据中目标物的边缘进行提取并进行相应处理(如过滤、锐化等),图像表情识别处理用于对原始图像数据中的目标物(可以是人脸)的表情进行识别。
以原始数据为一个3*3矩阵为例,对应的数据处理算子可以包括加法算子、减法算子和乘法算子,其中加法算子对3*3矩阵中的第一行元素进行累加,乘法算子对3*3矩阵中的第二行元素进行累乘,减法算子对3*3矩阵中的元素做减法运算,分别将处理后得到的数据组成3*1矩阵,即3*1矩阵中的第一行元素为由加法算子对原始数据运算得到的结果,第二行元素为由乘法算子对原始数据运算得到的结果,第三行元素为由减法算子对原始数据运算得到的结果。在一个实施例中,根据该数据处理算子对原始数据进行数据提取得到至少两个子原始数据,以上述3*3矩阵和对应的数据处理算子为例,对3*3矩阵的每一行数据分别进行提取即得到3个1*3的矩阵,该1*3的矩阵即为原始数据3*3矩阵的子原始数据,其中,第一个1*3矩阵为原3*3矩阵的第一行,第二个1*3矩阵为原3*3矩阵的第二行,第三个1*3矩阵为原3*3矩阵的第三行。
以原始数据为两个3*3矩阵为例,对应的数据处理算子为加法算子,将其中一个3*3的矩阵分解为3个1*3的矩阵,然后由3个数据处理单元同时对6个1*3的矩阵进行运算来加速。如果确定出少于3个空闲的数据处理单元,则通过软件流水的方式将数据搬运和计算并行执行,如搬一个1*3矩阵,在计算单元开始计算的同时,DMA开始搬运剩余的1*3的矩阵。
步骤S103、对每个子原始数据进行数据预处理得到子待计算数据,将每个子待计算数据单独存储在一个子存储单元中。
在一个实施例中,在得到子原始数据后分别对该子原始数据进行数据预处理,该数据预处理可以是对子原始数据的数据搬运处理,该数据搬运处理操作可将子原始数据搬运分配至对应的子存储单元,该子存储单元可以是被转存到的新的存储单元,也可以是原有即原始数据所在存储单元划分出的子存储单元,通过数据预处理操作将子原始数据搬运到单独的存储位置以用于后续算子的运算。
步骤S104、通过和每个子存储单元对应的计算单元,对子存储单元中存储的子待计算数据执行对应的数据处理算子的计算。
在一个实施例中,每个计算单元对应一个数据处理算子以执行该算子,该计算单元包括单独设置的硬件处理单元,如专门执行某算子的运算芯片。芯片作为协处理器挂在pice总线上,通过pice总线进行通信,其中,通过使用DMA加速数据的传输和处理,解放计算单元使其并行的处理其他计算任务。其中,每个计算单元用于实现对应数据处理算子的加速运算,如以元素算子、矩阵乘算子和卷积算子为例,其对应的计算单元分别使用针对向量、矩阵乘、卷积的特定指令完成算子的加速运算,示例性的,针对卷积算子的加速可通过AISC芯片实现,可单独设置4个计算单元分别对卷积神经网络中的卷基层、激活函数层、池化层和全连接层进行运算处理以实现卷积算子的加速。在另个一实施例中,如需进行乘加算子的加速,计算单元可由一个128K的乘加MAC阵列组成以对乘加运算进行加速。
由上述方案可知,通过对原始数据进行拆分得到不同数据处理算子对应的子原始数据并经过数据预处理进行数据搬运单独存储在子存储单元中,依据对应的计算单元进行处理,不同计算单元单独执行实现了数据的并行计算,完成了对原始数据的加速处理。
图2为本发明实施例提供的另一种算子计算优化方法的流程图,可选的,所述对每个子原始数据进行数据预处理得到子待计算数据,将每个子待计算数据单独存储在一个子存储单元中包括:对每个子原始数据进行数据搬运处理得到子待计算数据,将每个子待计算数据单独存储在子存储单元的预设位置。如图2所示,技术方案具体如下:
步骤S201、获取存储单元中存储的原始数据,确定所述原始数据对应的数据处理算子。
步骤S202、根据所述数据处理算子对所述原始数据进行数据提取得到至少两个子原始数据。
步骤S203、对每个子原始数据进行数据搬运处理得到子待计算数据,将每个子待计算数据单独存储在子存储单元的预设位置。
在一个实施例中,在从原始数据中提取出子原始数据后,将该子原始数据搬运至单独存储的子存储单元的预设位置。示例性的,如子原始数据为需要多个算子使用的数据或者作为共享数据,将其搬运至子存储单元的预设位置以提高数据推理、训练速度,该预设位置可以是预先确定的子存储单元的固定位置,如子存储单元的起始位置,或者最易被寻址的位置。以两个3*3矩阵进行加法运算为例,如果运算推理过程中需要对其中一个矩阵的某行数据进行多次运算处理,则将该行数据搬运至子存储单元的预设位置。
步骤S204、通过和每个子存储单元对应的计算单元,对子存储单元中存储的子待计算数据执行对应的数据处理算子的计算。
由上述可知,通过对子原始数据进行搬运处理,将其搬运到处理效率最高的预设位置,提高了深度学习模型的计算和推理效率。
图3为本发明实施例提供的另一种算子计算优化方法的流程图,可选的,所述数据预处理包括数据变换处理,所述子待计算数据包括对所述子计算数据进行数据变换处理后得到的子变换数据。如图3所示,技术方案具体如下:
步骤S301、获取存储单元中存储的原始数据,确定所述原始数据对应的数据处理算子。
步骤S302、根据所述数据处理算子对所述原始数据进行数据提取得到至少两个子原始数据。
步骤S303、对每个子原始数据进行数据搬运和数据变换处理,得到子待计算数据,将每个子待计算数据单独存储在子存储单元的预设位置。
图3a为本发明实施例提供的一种算子计算优化结构示意图。如图3a所示,在一个实施例中,原始数据存储在L3存储单元中,根据数据处理算子对原始数据进行数据提取得到3个子原始数据,分别保存在3个L2子存储单元中,再将每个L2子存储单元的数据在经数据预处理(数据变换处理)后得到待计算数据并分别保存在L1子存储单元中,其中每个L1子存储单元对应一个单独的计算单元用于对该子存储单元存储的数据进行计算。示例性的,以原始数据为矩阵为例,该数据变换可以是对矩阵进行的转置变换,即在对原始数据进行算子的计算处理时,需要对原始数据进行调整、改变,此时作为数据预处理中的数据变换处理以实现该功能,由此以保证后续计算过程中可直接对以数据变换处理后的数据进行运算以提高计算效率。
步骤S304、通过和每个子存储单元对应的计算单元,对子存储单元中存储的子待计算数据执行对应的数据处理算子的计算。
由上述可知,通过预先对数据进行变换处理得到子变换数据且搬运至合理的位置用于计算单元进行运算,提高了计算单元的运算效率。
图4为本发明实施例提供的另一种算子计算优化方法的流程图,可选的,所述数据处理算子包括元素算子、矩阵乘算子和卷积算子中的至少一种,所述执行对应的数据处理算子的计算包括:依据和数据处理算子对应的预设指令执行数据计算;执行数据处理算子的计算过程,与其它子原始数据数据预处理的过程,并行执行。如图4所示,技术方案具体如下:
步骤S401、获取存储单元中存储的原始数据,确定所述原始数据对应的数据处理算子。
步骤S402、根据所述数据处理算子对所述原始数据进行数据提取得到至少两个子原始数据。
步骤S403、对每个子原始数据进行数据预处理得到子待计算数据,将每个子待计算数据单独存储在一个子存储单元中。
步骤S404、通过和每个子存储单元对应的计算单元,对子存储单元中存储的子待计算数据,依据和数据处理算子对应的预设指令执行数据计算,其中,执行数据处理算子的计算过程,与其它子原始数据数据预处理的过程并行执行。
图4a为本发明实施例提供的一种计算过程和数据预处理过程并行执行的示意图,如图4a所示,在一个实施例中,数据预处理包括数据搬运和变换处理,针对某一子原始数据而言,在其完成数据搬运和变换后相应的进入计算单元的计算处理过程,此时可以执行下一子原始数据的搬运和变换,即当前子待计算数据的计算过程和下一子原始数据的数据搬运和变换并行执行。
由上述可知,执行数据处理算子的计算过程,与其它子原始数据数据预处理的过程并行执行,提高了硬件的整体利用率,加速了数据计算速度。
图5为本发明实施例提供的一种算子计算优化装置的结构框图,该装置用于执行上述实施例提供的算子计算优化方法,具备执行方法相应的功能模块和有益效果。如图5所示,该装置具体包括:算子确定模块101、数据提取模块102、数据预处理模块103和数据计算模块,其中,
算子确定模块101,用于获取存储单元中存储的原始数据,确定所述原始数据对应的数据处理算子。
其中,原始数据包括需要进行计算处理的数据,如图像数据、矩阵数据等,该原始数据可存储在存储单元中,通过智能模型对该原始数据进行处理以得到计算结果,如对该原始数据进行训练和推理。在一个智能模型中,基于其计算处理的不同可被分解为一些基本算子的组合,如简单的四则运算或者复杂的如卷积运算等。示例性的,以原始数据为一幅图像为例,其对应的数据处理算子可以是边缘提取、表情识别和背景强化等。
在一个实施例中,不同的模型对应不同的数据处理算子,在对原始数据进行处理时,可根据该模型以确定处理的原始数据对应的数据处理算子,示例性的,该模型需要使用的算子可以是元素算子、矩阵乘算子和卷积算子等。其中,数据处理算子为需要对原始数据进行处理的具体运算,如矩阵乘算子需要对原始数据中的矩阵进行乘法运算。
数据提取模块102,用于根据所述数据处理算子对所述原始数据进行数据提取得到至少两个子原始数据。
其中,不同数据处理算子对原始数据执行不同的数据运算,如图像边缘处理对原始图像数据中目标物的边缘进行提取并进行相应处理(如过滤、锐化等),图像表情识别处理用于对原始图像数据中的目标物(可以是人脸)的表情进行识别。
以原始数据为一个3*3矩阵为例,对应的数据处理算子可以包括加法算子、减法算子和乘法算子,其中加法算子对3*3矩阵中的第一行元素进行累加,乘法算子对3*3矩阵中的第二行元素进行累乘,减法算子对3*3矩阵中的元素做减法运算,分别将处理后得到的数据组成3*1矩阵,即3*1矩阵中的第一行元素为由加法算子对原始数据运算得到的结果,第二行元素为由乘法算子对原始数据运算得到的结果,第三行元素为由减法算子对原始数据运算得到的结果。在一个实施例中,根据该数据处理算子对原始数据进行数据提取得到至少两个子原始数据,以上述3*3矩阵和对应的数据处理算子为例,对3*3矩阵的每一行数据分别进行提取即得到3个1*3的矩阵,该1*3的矩阵即为原始数据3*3矩阵的子原始数据,其中,第一个1*3矩阵为原3*3矩阵的第一行,第二个1*3矩阵为原3*3矩阵的第二行,第三个1*3矩阵为原3*3矩阵的第三行。
以原始数据为两个3*3矩阵为例,对应的数据处理算子为加法算子,将其中一个3*3的矩阵分解为3个1*3的矩阵,然后由3个数据处理单元同时对6个1*3的矩阵进行运算来加速。如果确定出少于3个空闲的数据处理单元,则通过软件流水的方式将数据搬运和计算并行执行,如搬一个1*3矩阵,在计算单元开始计算的同时,DMA开始搬运剩余的1*3的矩阵。
数据预处理模块103,用于对每个子原始数据进行数据预处理得到子待计算数据,将每个子待计算数据单独存储在一个子存储单元中。
在一个实施例中,在得到子原始数据后分别对该子原始数据进行数据预处理,该数据预处理可以是对子原始数据的数据搬运处理,该数据搬运处理操作可将子原始数据搬运分配至对应的子存储单元,该子存储单元可以是被转存到的新的存储单元,也可以是原有即原始数据所在存储单元划分出的子存储单元,通过数据预处理操作将子原始数据搬运到单独的存储位置以用于后续算子的运算。
数据计算模块104,用于通过和每个子存储单元对应的计算单元,对子存储单元中存储的子待计算数据执行对应的数据处理算子的计算,其中,所述数据处理算子和至少一个计算单元对应。
在一个实施例中,每个计算单元对应一个数据处理算子以执行该算子,该计算单元包括单独设置的硬件处理单元,如专门执行某算子的运算芯片。芯片作为协处理器挂在pice总线上,通过pice总线进行通信,其中,通过使用DMA加速数据的传输和处理,解放计算单元使其并行的处理其他计算任务。其中,每个计算单元用于实现对应数据处理算子的加速运算,如以元素算子、矩阵乘算子和卷积算子为例,其对应的计算单元分别使用针对向量、矩阵乘、卷积的特定指令完成算子的加速运算,示例性的,针对卷积算子的加速可通过AISC芯片实现,可单独设置4个计算单元分别对卷积神经网络中的卷基层、激活函数层、池化层和全连接层进行运算处理以实现卷积算子的加速。在另个一实施例中,如需进行乘加算子的加速,计算单元可由一个128K的乘加MAC阵列组成以对乘加运算进行加速。
由上述方案可知,通过对原始数据进行拆分得到不同数据处理算子对应的子原始数据并经过数据预处理进行数据搬运单独存储在子存储单元中,依据对应的计算单元进行处理,不同计算单元单独执行实现了数据的并行计算,完成了对原始数据的加速处理。
在一个可能的实施例中,所述数据预处理模块103具体用于:
对每个子原始数据进行数据搬运处理得到子待计算数据,将每个子待计算数据单独存储在子存储单元的预设位置。
在一个可能的实施例中,所述数据预处理包括数据变换处理,所述子待计算数据包括对所述子计算数据进行数据变换处理后得到的子变换数据。
在一个可能的实施例中,所述数据处理算子包括元素算子、矩阵乘算子和卷积算子中的至少一种,所述数据计算模块104具体用于:
依据和数据处理算子对应的预设指令执行数据计算。
在一个可能的实施例中,所述数据预处理模块103和所述数据计算模块104并行执行。
图6为本发明实施例提供的一种设备的结构示意图,如图6所示,该设备包括处理器201、存储器202、输入装置203和输出装置204;设备中处理器201的数量可以是一个或多个,图6中以一个处理器201为例;设备中的处理器201、存储器202、输入装置203和输出装置204可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器202作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的算子计算优化方法对应的程序指令/模块(例如,算子计算优化装置中的尺寸信息确定模块101、入库位置确定模块102和控制指令输出模块103)。处理器201通过运行存储在存储器202中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的算子计算优化方法。
存储器202可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器202可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器202可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置203可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置204可包括显示屏等显示设备。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种算子计算优化方法,该方法包括:
获取存储单元中存储的原始数据,确定所述原始数据对应的数据处理算子;
根据所述数据处理算子对所述原始数据进行数据提取得到至少两个子原始数据;
对每个子原始数据进行数据预处理得到子待计算数据,将每个子待计算数据单独存储在一个子存储单元中;
通过和每个子存储单元对应的计算单元,对子存储单元中存储的子待计算数据执行对应的数据处理算子的计算,其中,所述数据处理算子和至少一个计算单元对应。
在一个可能的实施例中,所述对每个子原始数据进行数据预处理得到子待计算数据,将每个子待计算数据单独存储在一个子存储单元中包括:
对每个子原始数据进行数据搬运处理得到子待计算数据,将每个子待计算数据单独存储在子存储单元的预设位置。
在一个可能的实施例中,所述数据预处理包括数据变换处理,所述子待计算数据包括对所述子计算数据进行数据变换处理后得到的子变换数据。
在一个可能的实施例中,所述数据处理算子包括元素算子、矩阵乘算子和卷积算子中的至少一种,所述执行对应的数据处理算子的计算包括:
依据和数据处理算子对应的预设指令执行数据计算。
在一个可能的实施例中,执行数据处理算子的计算过程,与其它子原始数据数据预处理的过程,并行执行。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明实施例任意实施例所提供的算子计算优化方法中的相关操作.
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明实施例可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例各个实施例所述的方法。
值得注意的是,上述算子计算优化装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。
注意,上述仅为本发明实施例的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明实施例不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明实施例的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明实施例构思的情况下,还可以包括更多其他等效实施例,而本发明实施例的范围由所附的权利要求范围决定。