CN114254563A - 数据处理方法及装置、电子设备、存储介质 - Google Patents
数据处理方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN114254563A CN114254563A CN202111563967.7A CN202111563967A CN114254563A CN 114254563 A CN114254563 A CN 114254563A CN 202111563967 A CN202111563967 A CN 202111563967A CN 114254563 A CN114254563 A CN 114254563A
- Authority
- CN
- China
- Prior art keywords
- operator
- data
- processed
- memory
- result
- 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
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Advance Control (AREA)
Abstract
本公开实施例是关于一种数据处理方法及装置、电子设备、存储介质,涉及计算机技术领域,该数据处理方法包括:将网络模型中的多个算子进行融合,得到融合算子;从存储器包含的待处理对象的数据中,获取所述融合算子中的每个算子关联的待处理数据,并通过各所述算子对所述待处理数据进行目标操作获取计算结果;将所述计算结果存储至存储器,并根据所述计算结果对待处理对象进行对应的操作。本公开的技术方案能够减少数据传输次数,提高传输效率。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种数据处理方法、数据处理装置、电子设备以及计算机可读存储介质。
背景技术
在网络模型的应用过程中,数据获取是非常重要的过程。相关技术中,网络模型中每一个算子层分别需要从存储器中读取特征图像数据,并把计算结果写回到存储器中。
上述方式中,数据传输的功耗较大,数据传输效率较低且需要较多的并且,影响网络模型的计算速度,并且占用了较多的计算资源。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种数据处理方法及装置、电子设备、存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的数据传输效率低的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种数据处理方法,包括:将网络模型中的多个算子进行融合,得到融合算子;从存储器包含的待处理对象的数据中,获取所述融合算子中的每个算子关联的待处理数据,并通过各所述算子对所述待处理数据进行目标操作获取计算结果;将所述计算结果存储至存储器,并根据所述计算结果对待处理对象进行对应的操作。
根据本公开的一个方面,提供一种数据处理装置,包括:算子融合模块,用于将网络模型中的多个算子进行融合,得到融合算子;数据获取模块,用于从存储器包含的待处理对象的数据中,获取所述融合算子中的每个算子关联的待处理数据,并通过各所述算子对所述待处理数据进行目标操作获取计算结果;数据存储模块,用于将所述计算结果存储至存储器,并根据所述计算结果对待处理对象进行对应的操作。
根据本公开的一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的数据处理方法。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的数据处理方法。
本公开实施例中提供的数据处理方法、数据处理装置、电子设备以及计算机可读存储介质中,将网络模型中的多个算子进行融合得到融合算子;从存储器中获取所述融合算子中的每个算子关联的待处理数据,并通过各所述算子对所述待处理数据进行目标操作,以得到所述待处理数据对应的计算结果;将所述计算结果存储至存储器。一方面,从存储器中获取每个算子需要的待处理数据,在所有算子执行完目标操作得到对应的计算结果后,才将计算结果发送至存储器进行存储。由于只有在所有算子计算之前和计算完成之后需要传输数据,避免了每一个算子计算之前和计算完成之后都需要向存储器传输数据的问题,减少了数据传输的步骤和数据传输的次数,因此提高了数据传输效率。另一方面,由于只需要进行一次数据传输,减少了数据传输过程需要的计算资源和存储空间,降低了功耗,通过硬件提升了网络模型的处理效率和运算性能,进而能够根据计算结果对待处理对象进行快速精准操作。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本公开实施例的数据处理方法或数据处理装置的系统架构的示意图。
图2示出了适于用来实现本公开实施例的电子设备的结构示意图。
图3示出了适于用来实现相关技术中的数据交互方式的示意图。
图4示意性示出本公开实施例中一种数据处理方法的示意图。
图5示意性示出本公开实施例中算子融合的示意图。
图6示意性示出本公开实施例中存储器的示意图。
图7示意性示出本公开实施例中确定计算结果的流程示意图。
图8示意性示出本公开实施例中卷积算子和激活算子的应用示意图。
图9示意性示出本公开实施例中第一种数据传输的示意图。
图10示意性示出本公开实施例中对卷积和激活进行融合的硬件架构的示意图。
图11示意性示出本公开实施例中卷积算子和拼接算子的应用示意图。
图12示意性示出本公开实施例中第二种数据传输的示意图。
图13示意性示出本公开实施例中对卷积和拼接进行融合的硬件架构的示意图。
图14示意性示出本公开实施例中一种数据处理装置的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本公开实施例中提供了一种数据处理方法,图1示出了可以应用本公开实施例的数据处理方法或数据处理装置的系统架构的示意图。
如图1所示,系统架构100可以包括客户端101、网络102、服务器103。其中,客户端可以为智能手机、电脑、平板电脑智能音箱等终端。网络102用以在客户端101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线通信链路、无线通信链路等等,在本公开实施例中,客户端101和服务器103之间的网络102可以是有线通信链路,例如可以通过串口连接线提供通信链路,也可以是无线通信链路,通过无线网络提供通信链路。服务器103可以是具有计算功能的服务器或者是客户端,例如便携式计算机、台式计算机、智能手机等具有计算功能的终端设备,用于对客户端发送的数据进行处理。
本公开实施例中,客户端可以将待处理对象104对应的数据发送至服务器。待处理对象可以为图像等等。服务器可以将网络模型中的多个算子进行融合得到一个整体的融合算子;进一步从存储器中获取该融合算子的每个算子所需要的待处理数据,并通过每个算子对待处理数据进行目标操作得到计算结果。进一步地,可以将计算结果返回至存储器进行存储,并在计算结果的基础上来对待处理对象进行对应的操作。
需要说明的是,本公开实施例所提供的数据处理方法可以由客户端或服务器来执行。相应地,数据处理装置可设置于客户端或服务器中。
图2示出了适于用来实现本公开示例性实施方式的电子设备的示意图。本公开的终端可以被配置为如图2所示电子设备的形式,然而,需要说明的是,图2示出的电子设备仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
本公开的电子设备至少包括处理器和存储器,存储器用于存储一个或多个程序,当一个或多个程序被处理器执行时,使得处理器可以实现本公开示例性实施方式的方法。
具体的,如图2所示,电子设备200可以包括:处理器210、内部存储器221、外部存储器接口222、通用串行总线(Universal Serial Bus,USB)接口230、充电管理模块240、电源管理模块241、电池242、天线1、天线2、移动通信模块250、无线通信模块260、音频模块270、扬声器271、受话器272、麦克风273、耳机接口274、传感器模块280、显示屏290、摄像模组291、指示器292、马达293、按键294以及用户标识模块(Subscriber IdentificationModule,SIM)卡接口295等。其中传感器模块280可以包括深度传感器、压力传感器、陀螺仪传感器、气压传感器、磁传感器、加速度传感器、距离传感器、接近光传感器、指纹传感器、温度传感器、触摸传感器、环境光传感器及骨传导传感器等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备200的具体限定。在本申请另一些实施例中,电子设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器、调制解调处理器、图形处理器、图像信号处理器、控制器、视频编解码器、数字信号处理器、基带处理器和/或神经网络处理器(Neural-etwork Processing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。另外,处理器210中还可以设置存储器,用于存储指令和数据。本示例性实施方式中的模型训练方法可以由应用处理器、图形处理器或图像信号处理器来执行,当方法涉及到神经网络相关的处理时,可以由NPU来执行。
内部存储器221可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器221可以包括存储程序区和存储数据区。外部存储器接口222可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备200的存储能力。
移动终端200的通信功能可以通过移动通信模块、天线1、无线通信模块、天线2、调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。移动通信模块可以提供应用在移动终端200上2G、3G、4G、5G等移动通信解决方案。无线通信模块可以提供应用在移动终端200上的无线局域网、蓝牙、近场通信等无线通信解决方案。
显示屏用于实现显示功能,如显示用户界面、图像、视频等。摄像模块用于实现拍摄功能,如拍摄图像、视频等。音频模块用于实现音频功能,如播放音频,采集语音等。电源模块用于实现电源管理功能,如为电池充电、为设备供电、监测电池状态等。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
相关技术中,在对人工智能网路进行硬件实现时,可以分为两种方式:第一种方式是,首先需要从存储器读取整个输入特征图像数据,输入的特征图像A经过算子的计算之后,生成完整的特征图像B,之后完整的特征图像B再经过下一个算子的计算生成特征图像C。这种方式下,往往需要把整幅特征图像读入SRAM中,并把完整的输出数据存储到SRAM中,所以对SRAM的尺寸要求比较大。第二种方式是,把输入特征图像按照一定的粒度进行切分,分批经过算子1、算子2、算子3,这样,每一个算子的结果都会以较小的粒度进行处理和存储,特征图像每经过一个算子,需要把数据从SRAM读入,然后下一个算子会把计算结果从SRAM再读出,两种方式的数据交互如下图3所示。
参考图3中所示,从读取速度上来说SRAM(Static Random-Access Memory,静态随机存取存储器)301快于DRAM(Dynamic Random Access Memory,动态随机存取存储器)302,但是SRAM成本较高,所以一般来说,考虑选择较小存储空间的SRAM和较大空间的DRAM。对于人工智能网路中的每一层算子303都会从SRAM和DRAM中进行数据的读取。人工智能计算网路中每一个算子层在计算之前和计算完成后,分别需要从存储器中读取特征图像数据,并把计算结果写回到存储器中,由于硬件架构中存储器的分层结构,写入或者写回的链路较长,造成数据传输的功耗较大,而对于人工智能网路加速器来说,数据的传输所造成的功耗往往占据较大部分,所以如何减小数据的读写次数显得非常重要。
为了解决上述技术问题,本公开实施例中,提供了一种数据处理方法。参考图4中所示,具体可以包括步骤S410至步骤S430,其中:
在步骤S410中,将网络模型中的多个算子进行融合,得到融合算子;
在步骤S420中,从存储器包含的待处理对象的数据中,获取所述融合算子中的每个算子关联的待处理数据,并通过各所述算子对所述待处理数据进行目标操作获取计算结果;
在步骤S430中,将所述计算结果存储至存储器,并根据所述计算结果对待处理对象进行对应的操作。
本公开实施例中的技术方案,一方面,从存储器中获取每个算子需要的待处理数据,在所有算子执行完目标操作得到对应的计算结果后,才将计算结果发送至存储器进行存储。由于只有在所有算子计算之前和计算完成之后需要传输数据,避免了每一个算子计算之前和计算完成之后都需要向存储器传输数据的问题,减少了数据传输的步骤和数据传输的次数,因此提高了数据传输效率。另一方面,由于只需要进行一次数据传输,减少了数据传输过程需要的计算资源和存储空间,降低了数据传输的传输功耗,能够提高网络模型的处理效率,进而能够根据计算结果对待处理对象进行快速精准操作,提高了网络加速器的性能。
接下来,参考图4对本公开实施例中的数据处理方法进行详细说明。
在步骤S410中,将网络模型中的多个算子进行融合,得到融合算子。
本公开实施例中,网络模型可以为各种类型的模型,只要网络模型中可以包括多个算子即可。网络模型例如可以为卷积神经网络模型、深度学习模型或者其它模型,此处以卷积神经网络模型为例进行说明。
卷积神经网络模型由多种算子进行级联组成,其中的算子包括但不限于卷积、激活、池化、尺寸缩放、拼接等。为了解决相关技术中的问题,可以对网络模型包括的所有算子中的多个算子进行融合,得到融合算子。多个算子可以为所有算子中的一部分或全部,用于融合的算子的数量可以为至少两个。例如可以为卷积算子和激活算子,也可以为卷积算子和拼接算子,除此之外也可以为卷积算子、激活算子和拼接算子。
具体地,可以根据实际需求选择用于融合的算子。具体而言,可以根据需要添加的硬件电路以及可节省的数据传输次数确定用于融合的算子数量。需要添加的硬件电路与算子数量负相关。如果需要添加的硬件电路少,则用于融合的算子数量大;若需要添加的硬件电路多,则用于融合的算子数量小。需要说明的是,可以根据算子的属性信息确定用于融合的算子,属性信息例如可以为数据传输次数或者是重要程度。例如,可以将数据传输次数大于预设阈值的算子作为用于融合的算子,或者是将重要程度高的算子进行融合。例如可以为卷积算子和激活算子,或者是卷积算子和拼接算子。
本公开实施例中,以用于融合的多个算子为卷积算子和激活算子,以及多个算子包括卷积算子和拼接算子两种方式为例进行说明。参考图5中所示,可以将算子502和算子503进行融合,以得到融合算子,并在计算阵列单元中完成用于融合的两个算子的计算过程。
在步骤S420中,从存储器包含的待处理对象的数据中,获取所述融合算子中的每个算子关联的待处理数据,并通过各所述算子对所述待处理数据进行目标操作,以得到所述待处理数据对应的计算结果。
本公开实施例中,为了实现人工智能网路,存储器可以包括多层结构,其存储器的层次如图6所示,分别是第一存储器、第二存储器以及工作寄存器。第一存储器可以为静态随机存取存储器SRAM,第二存储器可以为动态随机存取存储器DRAM。其中,层级顺序依次为:工作寄存器的层级、静态随机存取存储器、动态随机存取存储器。参考图6中所示,按照数据的存取速度来区分,存取速度由快到慢的顺序为工作寄存器、SRAM以及DRAM,并且工作寄存器、SRAM以及DRAM的尺寸由小到大。所以在数据搬运的过程中,其对应的尺寸如图6中所示。具体地,DRAM中存储了整幅图片,然后按照一定的规律进行切分,在SRAM中一次能够存储的数据量只是一部分图片。数据分批从DRAM中搬运到SRAM中,而对于工作寄存器来说,其大小与数据运算阵列每次需要的数据量相同。同样,也是分批次从SRAM中的有效数据中搬运到工作寄存器之中,每次需要搬运的数据量如6中所示。
待处理对象可以为图像或者是其他类型的对象等等,具体根据应用场景而确定。待处理对象的数据可以为该待处理对象对应的所有特征数据。待处理对象的数据可以事先存储在存储器中。按照存储器的层次来看,待处理对象的数据存储在存储器对应的动态随机存取存储器。
对于融合算子中的每个算子而言,其关联的待处理数据可能相同或不同。并且,对于相同的算子而言,其对应的待处理数据也可以相同或不同,此处不作限定。
基于存储器的层次结构,可以依次从存储器的各层进行读取,从而读取到用于融合的每个算子所需要的待处理数据。具体可以依次从动态随机存取存储器、静态随机存取存储器以及工作寄存器中获取每个算子关联的待处理数据。
在获取到每个算子对应的待处理数据后,可以通过每个算子对待处理数据进行目标操作,以得到计算结果。目标操作指的是与每个算子类型对应的操作,算子类型不同,则对应的目标操作不同。例如卷积算子对应的目标操作为卷积操作,拼接算子对应的目标操作为拼接操作。计算结果指的是待处理数据经过融合算子中包含的所有算子对应的目标操作之后的操作结果,可以理解为多个算子对应的融合结果。
图7中示意性示出确定计算结果的流程图,参考图7中所示,主要包括以下步骤:
在步骤S710中,对所述融合算子中的当前算子进行目标操作,获取中间结果。
本公开实施例中,当前算子可以为多个算子中除最后一个算子之外的任意一个,例如可以为第一个或第二个等等。中间结果指的是每一个当前算子所对应的结果。目标操作可以根据算子的类型而具体确定,此处不作限定。
具体地,在融合计算过程中,可以通过多个累加树形成的累加树阵列来计算中间结果。在累加树阵列中,横向为累加树的数量,纵向为每一个累加树,因此阵列的纵向为数据累加方向。具体地,每个累加树可以包括多个累加单元,累加树用于按照累加方向对所有累加单元的结果进行累加操作。对于每一个累加单元而言,其可以对待处理数据与权重参数进行乘法操作得到当前累加单元对应的当前结果,并将当前结果与上一结果进行累加,得到每个累加树对应的初始结果。上一结果指的是当前累加单元相邻的上一累加单元对待处理数据和权重参数进行乘法操作的结果。当前累加单元可以为多个累加单元的任意一个,上一结果指的是与当前累加单元相邻的上一个累加单元的结果。
基于此,分别通过多个累加树对所述待处理数据和权重参数进行加权操作,得到每个累加树对应的初始结果;对所述多个初始结果进行累加,得到所述当前算子的中间结果。即,所有的累加树用于执行同一个算子对应的目标操作得到每一个累加树对应的初始结果;进一步对所有累加树对应的初始结果进行累加,从而得到当前算子对应的中间结果。需要补充的是,每一个纵向的累加树,都可以使用相同的权重数据和不同的特征图像数据作为输入,进行乘累加运算来获取初始结果;或者每一条累加树也可以使用相同的特征图像数据和不同的权重数据作为输入计算乘累加结果来作为初始结果。
除此之外,当前算子的输入可以包括多个通道,因此可以按照时钟周期将多个通道的初始结果进行累加,得到当前算子的中间结果。例如,当前算子的输入可以包括8个通道,每一列累加树在一个时钟周期内可以得到4个输入通道的结果,则第一个时钟周期内可以生成通道0-通道3的初始结果,第二个时钟周期内生成通道4-通道7的初始结果,并将通道0-通道3的初始结果与通道4-通道7的初始结果进行累加,得到每一个累加树对于当前算子的中间结果。
在步骤S720中,通过所述当前算子的下一相邻算子对所述中间结果进行目标操作,直至通过所述融合算子中的所有算子对所述待处理数据进行目标操作为止,以得到所述计算结果。
本公开实施例中,在获取到中间结果后,无需即时将中间结果直接传输至存储器,而是通过与当前算子相邻的下一算子继续对中间结果进行下一相邻算子对应的目标操作,直至所有算子均对上一相邻算子的中间结果执行完对应的目标操作为止,以根据最后一个算子输出的结果来确定计算结果。在此基础上,可以对多个算子进行统一处理,从而得到融合算子中的多个算子对应的计算结果。
继续参考图4中所示,在步骤S430中,将所述计算结果存储至存储器,并根据所述计算结果对待处理对象进行对应的操作。
本公开实施例中,可以将经过融合算子中所有算子得到的计算结果发送至存储器进行存储。由于存储器为多层结构,因此可以将计算结果依次传输至工作寄存器、静态随机存取存储器以及动态随机存取存储器进行存储。通过在融合算子中的所有算子计算结束后将其计算结果一次性发送至存储器进行存储,避免了每执行一个算子就需要传输一次数据的问题,减少了数据传输次数和传输数据时需要的资源,也提高了传输效率。并且提高了网络模型的计算速度,利于实现模型加速器。
本公开实施例中,首先以多个算子为卷积算子和激活算子为例进行说明。对于上述两个算子,卷积运算结束之后需要做一个激活函数Relu操作是一种常见的算法网路结构,如图8中的图A所示。其中的Relu激活如图8中的图B所示,Relu激活需要对卷积完成的结果中的所有数据进行如下的判断。如果输入数据大于0,那么就选择原数据作为输出,如果输入数据小于0那么就选择0作为输出。所以对于卷积运算单元的每一个完整输出,添加一个逻辑判断单元,进行数据的输出即可。
参考图9中的图A所示,如果采用算子分离实现的方案,那么conv和Relu的计算引擎需要分别从存储单元中分批次读取每个算子所需要的数据,并按批次将每个算子的结果数据进行写回。参考图9中的图B所示,如果采用的是算子融合,两个算子的计算过程在数据运算阵列中串行执行,Relu算子在得到卷积计算的结果即中间结果之后,在线进行Relu转换,得到计算结果之后再把计算结果进行写回至存储器。
通过将卷积算子和激活算子进行融合,能够在融合算子包含的每个算子进行计算之前,从存储器中获取每个算子需要的待处理数据,并在所有算子执行完成得到计算结果之后将计算结果返回至存储器。排列顺序在后的激活算子无需在执行之前再从外部的存储器进行数据的读入,也省去了排列顺序在前的卷积conv算子每次在计算完成之后写回数据,大大减少了数据的访问量,同时减少了数据处理的延时,降低了功耗。
图10示意性示出了对卷积和激活进行融合的硬件架构,参考图10中所示的累计树阵列。该累加树阵列可以包括多个累加树1001,每个累加树1001包括多个累加单元1002。累加单元的数量可以为三个、四个等等,每一个累加单元的乘累加结果向上传递,以进行累加。累加单元以及累计树的数量可以根据实际需求进行设置,具体可以根据硬件并行处理的数据量来确定,且与并行处理的数据量正相关。例如并行处理的数据量越大,则累加树的数量越多,累加单元的数量越多。
参考图10中所示,累加单元可以包括加法器和乘法器,用于实现特征图像的一个数据和一个权重参数的乘法计算,并与前一级累加单元的结果进行累加操作,因此累加单元可以称为乘累加单元。具体地,可以通过乘法器对数据与权重参数进行乘法操作得到当前结果,并通过加法器将当前结果与上一结果进行加法操作。累加树阵列的纵向为数据累加方向,对于横向上来说,可以有几种配置方式:第一种方式为每一条纵向的累加树可以使用相同的权重参数和不同的特征图像数据作为输入,进行乘累加运算。第二种方式为每一条累加树也可以使用相同的特征图像窗口数据和不同的权重数据作为输入计算乘累加结果。不管使用哪种数据流,其纵向上是累加方向,每条累加树的终点1003负责存储每个累加树输出的初始结果1004。并把初始结果进行叠加,得到中间结果1005,即最终的卷积结果。之后,卷积结果数据经过Relu模块,转换为激活后的数据,即计算结果。
接下来以多个算子为卷积算子和激活算子为例进行说明。可以参考图11中的图A对两个卷积运算的结果进行拼接操作。拼接操作将两个卷积运算之后的结果进行深度方向上的链接,concat算子的执行方式如图11中的图B所示。
图12中示意性示出了数据传输方式,参考图12中的图A所示,两次卷积运算,需要分别从存储器的各层读入需要的数据并进行运算写回。对于卷积运算模块,分别存在两批的读操作和两批的写操作;对于concat算子来说,需要重新从存储器中读出数据并把conv卷积操作后的结果进行合并然后再写入到存储器中,所以存在一批读和一批写的操作。而如果把两次卷积运算和一次concat运算进行融合,参考图12中的图B所示,卷积引擎分别从存储器中读取两个卷积层需要用到的特征图像数据,卷积引擎采用分时复用的方式分别计算两个卷积算子的运算,卷积引擎运算得到的数据(中间结果)在线做concat操作,然后再把concat好的数据(计算结果)写回到存储器中,只存在一批读和一批写的操作。分时复用指的是多个卷积过程交叉进行,从而使得多个卷积过程同时进行,提高处理效率。
图13示意性示出了对卷积算子和拼接算子进行融合的硬件架构,参考图13中所示,首先通过累加树1301中包含的累加单元1302执行卷积算子1得到每个累计树的结果1303并作为初始结果1304。具体地,通过累加单元中的乘法器1306执行乘法操作得到当前结果,并通过加法器1307将当前结果与上一结果进行加法操作得到初始结果。假设卷积的输入通道为8,那么经过两个时钟周期后,生成一个完整的卷积结果作为中间结果1305暂存到concat模块中;接着执行卷积算子2,再经过两个时钟周期后,卷积算子2生成卷积结果作为中间结果存入到concat模块中,最后两个卷积结果由concat模块统一写回到存储器中。除此之外,关于数据写回的粒度,也可以是经过一批的卷积算法之后,把两个卷积算子的一批结果进行组合统一写回到存储器中。
本公开实施例中,通过在执行完融合算子中每个算子的目标操作得到计算结果后,将计算结果统一存储至存储器中。避免了一次存储一个算子的中间结果的步骤,减少了存储次数,也减少了。通过算子融合的方式把网络模型中的多个临近算子进行融合,读取一批次数据就可以完成多个算子的运算,节省了数据读取的次数,提高了网络模型的运算性能,降低了功耗。
本公开实施例中的方法,在得到计算结果之后,可以在计算结果的基础上对待处理对象执行对应的操作。对应的操作具体根据应用场景而确定。例如,可以根据计算结果对待处理对象进行识别等等。
本公开实施例中提供了一种数据处理装置,参考图14中所示,该数据处理装置1400可以包括:
算子融合模块1401,用于将网络模型中的多个算子进行融合,得到融合算子;
数据获取模块1402,用于从存储器包含的待处理对象的数据中,获取所述融合算子中的每个算子关联的待处理数据,并通过各所述算子对所述待处理数据进行目标操作获取计算结果;
数据存储模块1403,用于将所述计算结果存储至存储器,并根据所述计算结果对待处理对象进行对应的操作。
在本公开的一种示例性实施例中,数据获取模块包括:中间结果获取模块,用于对所述融合算子中的当前算子进行目标操作,获取中间结果;计算结果确定模块,用于通过所述当前算子相邻的下一算子对所述中间结果进行目标操作,直至通过所述融合算子中的所有算子对所述待处理数据进行目标操作为止,以得到所述计算结果。
在本公开的一种示例性实施例中,中间结果获取模块包括:初始结果获取模块,用于分别通过多个累加树对所述待处理数据和权重参数进行加权操作,得到多个初始结果;累加模块,用于对所述多个初始结果进行累加,得到所述当前算子的中间结果。
在本公开的一种示例性实施例中,初始结果获取模块包括:乘累加模块,用于
通过累加树中的当前累加单元对所述待处理数据与所述权重参数进行乘法操作得到当前结果,并将所述当前结果与上一结果进行累加,直至通过每个累加树的所有累加单元进行累加操作为止,以获取所述初始结果。
在本公开的一种示例性实施例中,累加模块被配置为:按照时钟周期将多个通道对应的初始结果进行累加,获取所述当前算子的中间结果。
在本公开的一种示例性实施例中,所述通过各所述算子对所述待处理数据进行目标操作获取计算结果,包括:算子数据获取模块,用于若所述多个算子中包括多个卷积算子,获取各所述卷积算子需要的待处理数据;卷积模块,用于采用分时复用的方式对所述多个卷积算子进行所述目标操作,计算所述多个卷积算子对应的初始结果,并根据所述初始结果获取所述中间结果。
在本公开的一种示例性实施例中,所述存储器为分层结构,且所述存储器依次包括第一存储器、第二存储器以及工作寄存器。
需要说明的是,上述数据处理装置中各模块的具体细节已经在对应的数据处理方法中进行了详细描述,因此此处不再赘述。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
将网络模型中的多个算子进行融合,得到融合算子;
从存储器包含的待处理对象的数据中,获取所述融合算子中的每个算子关联的待处理数据,并通过各所述算子对所述待处理数据进行目标操作获取计算结果;
将所述计算结果存储至存储器,并根据所述计算结果对待处理对象进行对应的操作。
2.根据权利要求1所述的数据处理方法,其特征在于,所述通过各所述算子对所述待处理数据进行目标操作获取计算结果,包括:
对所述融合算子中的当前算子进行目标操作,获取中间结果;
通过所述当前算子相邻的下一算子对所述中间结果进行目标操作,直至通过所述融合算子中的所有算子对所述待处理数据进行目标操作为止,以得到所述计算结果。
3.根据权利要求2所述的数据处理方法,其特征在于,所述对所述融合算子中的当前算子进行目标操作,获取中间结果,包括:
分别通过多个累加树对所述待处理数据和权重参数进行加权操作,得到多个初始结果;
对所述多个初始结果进行累加,得到所述当前算子的中间结果。
4.根据权利要求3所述的数据处理方法,其特征在于,所述分别通过每个累加树对所述待处理数据和权重参数进行加权操作,得到多个初始结果,包括:
通过累加树中的当前累加单元对所述待处理数据与所述权重参数进行乘法操作得到当前结果,并将所述当前结果与上一结果进行累加,直至通过每个累加树的所有累加单元进行累加操作为止,以获取所述初始结果。
5.根据权利要求2所述的数据处理方法,其特征在于,所述对所述多个初始结果进行累加,得到所述当前算子的中间结果,包括:
按照时钟周期将多个通道对应的初始结果进行累加,获取所述当前算子的中间结果。
6.根据权利要求2所述的数据处理方法,其特征在于,所述通过各所述算子对所述待处理数据进行目标操作获取计算结果,包括:
若所述多个算子中包括多个卷积算子,获取各所述卷积算子需要的待处理数据;
采用分时复用的方式对所述多个卷积算子进行所述目标操作,计算所述多个卷积算子对应的初始结果,并根据所述初始结果获取所述中间结果。
7.根据权利要求1所述的数据处理方法,其特征在于,所述存储器为分层结构,且所述存储器依次包括第一存储器、第二存储器以及工作寄存器。
8.一种数据处理装置,其特征在于,包括:
算子融合模块,用于将网络模型中的多个算子进行融合,得到融合算子;
数据获取模块,用于从存储器包含的待处理对象的数据中,获取所述融合算子中的每个算子关联的待处理数据,并通过各所述算子对所述待处理数据进行目标操作获取计算结果;
数据存储模块,用于将所述计算结果存储至存储器,并根据所述计算结果对待处理对象进行对应的操作。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-7任意一项所述的数据处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任意一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111563967.7A CN114254563A (zh) | 2021-12-20 | 2021-12-20 | 数据处理方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111563967.7A CN114254563A (zh) | 2021-12-20 | 2021-12-20 | 数据处理方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114254563A true CN114254563A (zh) | 2022-03-29 |
Family
ID=80793213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111563967.7A Pending CN114254563A (zh) | 2021-12-20 | 2021-12-20 | 数据处理方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114254563A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116757259A (zh) * | 2022-09-26 | 2023-09-15 | 荣耀终端有限公司 | 网络模型处理方法、设备、存储介质和程序产品 |
-
2021
- 2021-12-20 CN CN202111563967.7A patent/CN114254563A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116757259A (zh) * | 2022-09-26 | 2023-09-15 | 荣耀终端有限公司 | 网络模型处理方法、设备、存储介质和程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107832843B (zh) | 一种信息处理方法及相关产品 | |
US11307864B2 (en) | Data processing apparatus and method | |
CN110473141B (zh) | 图像处理方法、装置、存储介质及电子设备 | |
CN112214726B (zh) | 运算加速器 | |
CN110263909B (zh) | 图像识别方法及装置 | |
US11307865B2 (en) | Data processing apparatus and method | |
US20210224125A1 (en) | Operation Accelerator, Processing Method, and Related Device | |
CN110147251B (zh) | 用于计算神经网络模型的系统、芯片及计算方法 | |
CN109543832B (zh) | 一种计算装置及板卡 | |
US20220083857A1 (en) | Convolutional neural network operation method and device | |
CN111767986A (zh) | 一种基于神经网络的运算方法及装置 | |
CN111338695A (zh) | 基于流水线技术的数据处理方法及相关产品 | |
CN110909870B (zh) | 训练装置及方法 | |
CN116842307B (zh) | 数据处理方法、装置、设备、芯片及存储介质 | |
CN109598250A (zh) | 特征提取方法、装置、电子设备和计算机可读介质 | |
CN112799599A (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN114254563A (zh) | 数据处理方法及装置、电子设备、存储介质 | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
WO2021081854A1 (zh) | 一种卷积运算电路和卷积运算方法 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
CN113128673B (zh) | 数据处理方法、存储介质、神经网络处理器及电子设备 | |
CN114090262A (zh) | 对象处理方法及装置、电子设备、存储介质 | |
US11086634B2 (en) | Data processing apparatus and method | |
CN113658320A (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 |