数据处理方法、装置、电子设备和可读存储介质
文献发布时间:2023-06-19 18:35:48
技术领域
本申请涉及通信技术领域,更具体的,涉及一种数据处理方法、装置、电子设备和可读存储介质。
背景技术
近年来,随着人工智能的不断发展深度神经网络(Deep Neural Networks,DNN)近来受到了广泛的关注,深度神经网络的计算非常密集,在检测识别等任务中达到数十GOPS(Giga Operations Per Second,每秒十亿次运算数)。除了计算密集,神经网络具有数百万甚至近亿的参数需要存储,因此利用深度神经网络进行实时检测识别只能依靠高性能多核CPU(Central Processing Unit,中央处理器)和GPU(Graphic Processing Unit,图形处理器)来完成,但对于功耗及体积受限的设备特别是移动设备(例如机器人、消费电子产品、智能汽车等)要移植神经网络模型几乎不可能。由此,神经网络加速器应运而生,神经网络加速器在进行数据处理时通常需要与外部存储器进行多次数据交互,导致数据处理的效率不高。因此,如何更好的实现神经网络加速器的数据处理是亟待解决的技术问题。
发明内容
本申请提出了一种数据处理方法、装置、电子设备和可读存储介质,以改善上述缺陷。
第一方面,本申请实施例提供了一种数据处理方法述方法包括:获取待处理网络模型,所述待处理网络模型包括多层神经网络;确定所述待处理网络模型对应的多个分组方式,并从所述多个分组方式中选出目标分组方式;基于所述目标分组方式对所述多层神经网络进行分组,得到分组结果;根据所述分组结果运行所述待处理网络模型。
第二方面,本申请实施例还提供了一种数据处理装置,所述装置包括:获取模块、确定模块、分组模块和运行模块。其中,获取模块,用于获取待处理网络模型,所述待处理网络模型包括多层神经网络。确定模块,用于确定所述待处理网络模型对应的多个分组方式,并从所述多个分组方式中选出目标分组方式。分组模块,用于基于所述目标分组方式对所述多层神经网络进行分组,得到分组结果。运行模块,用于根据所述分组结果运行所述待处理网络模型。
第三方面,本申请实施例还提供了一种电子设备,包括一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述方法。
第四方面,本申请实施例还提供了一种计算机可读介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述方法。
本申请实施例提供的数据处理方法、装置、电子设备和可读存储介质,在从多个分组方式中选出目标分组方式时,通过利用该目标分组方式对多层神经网络进行分组可以提高数据处理的效率,具体的,获取待处理网络模型,其中,待处理网络模型可以包括多层神经网络,而后确定该待处理网络模型对应的多个分组方式,并从这多个分组方式中选出目标分组方式,在此基础上,基于目标分组方式对多层神经网络进行分组,得到分组结果,最后根据该分组结果运行待处理网络模型。本申请通过利用其获取的目标分组方式对多层神经网络进行分组,在一定程度上可以提高待处理网络模型的运行效率。
本申请实施例的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请实施例的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个实施例提供的数据处理方法的方法流程图;
图2示出了本申请一个实施例提供的数据处理方法中待处理网络模型的结构示例图;
图3示出了本申请一个实施例提供的数据处理方法中待处理网络模型对应的第一种分组方式示意图;
图4示出了本申请一个实施例提供的数据处理方法中待处理网络模型对应的第二种分组方式示意图;
图5示出了本申请一个实施例提供的数据处理方法中待处理网络模型对应的第三种分组方式示意图;
图6示出了本申请一个实施例提供的数据处理方法中待处理网络模型对应的第四种分组方式示意图;
图7示出了本申请另一个实施例提供的数据处理方法的方法流程示例图;
图8示出了本申请另一个实施例提供的数据处理方法中赋权有向图的示意图;
图9示出了本申请另一个实施例提供的数据处理方法中赋权有向图的构建流程图;
图10示出了本申请实施例提供的数据处理装置的结构框图;
图11示出了本申请实施例提供的电子设备的结构框图;
图12示出了本申请实施例提供的用于保存或者携带实现根据本申请实施例的数据处理方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)人工智能(Artificial Intelligence,AI),是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
(2)神经网络,是由大量的人工神经元联结进行计算,是一种非线性统计性数据建模工具,其中,神经网络具有以下三个部分:1)结构(Architecture),结构指定了网络中的变量和它们的拓扑关系。例如,神经网络中的变量可以是神经元连接的权重(weights)和神经元的激励值(activities of the neurons);2)激励函数(ActivityRule),大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值。一般激励函数依赖于网络中的权重(即该网络的参数);3)学习规则(Learning Rule),学习规则指定了网络中的权重如何随着时间推进而调整。一般被看做是一种长时间尺度的动力学规则。一般情况下,学习规则依赖于神经元的激励值。它也可能依赖于监督者提供的目标值和当前权重的值。
(3)卷积神经网络(Convolutional Neural Network,CNN)是一种多层的神经网络,每层有多个二维平面组成,而每个平面由多个独立神经元组成,每个平面的多个神经元共享权重,通过权重共享可以降低神经网络中的参数数目。目前,在卷积神经网络中,处理器进行卷积操作通常是将输入信号特征与权重的卷积,转换为信号矩阵与权重矩阵之间的矩阵乘运算。在具体矩阵乘运算时,对信号矩阵和权重矩阵进行分块处理,得到多个分形(Fractional)信号矩阵和分形权重矩阵,然后对多个分形信号矩阵和分形权重矩阵进行矩阵乘和累加运算。
(4)神经网络加速器,是用于提供低功耗、高效的,专门设计用来运行神经网络算法的芯片。神经网络加速器可以包括配置设备以及存储设备等。其中,配置设备可以用于配置神经网络的结构和不同神经元的权重;存储设备用于存储神经网络的结构和不同神经元的权重等。
现有的神经网络加速器(Neural-network Processing Units,NPU)通常采用两级内存结构,其中,两级内存结构包括神经网络加速器片上内存(Local Memory)和神经网络加速器片外内存(Global Memory),神经网络加速器片上内存具有宽带高、成本高以及资源有限等特点,常见的神经网络加速器片上内存有SRAM(静态随机存取存储器,StaticRandom Access Memory);神经网络加速器片外内存具有带宽低以及成本低等特点,常见的神经网络加速器片外内存有DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
在一些实施方式中,为了使神经网络加速器的数据处理性能更好,通常会采用对内存访问的优化方式,该优化方式可以是只使用神经网络加速器片上内存,通过该方式使这个神经网络的数据均存放于神经网络加速器片上内存,如此可以避免神经网络加速器片上内存与神经网络加速器片外内存进行数据的交互,进而提高神经网络加速器的性能。然而,这种优化方式采用的是不计成本且无优化的方式,使用该种优化方式在很大程度上会增大内存成本。
针对上述问题,发明人提出了本申请实施例提供的数据处理方法、装置电子设备以及存储介质,在从多个分组方式中选出目标分组方式时,通过利用该目标分组方式对多层神经网络进行分组可以提高数据处理的效率,具体的,获取待处理网络模型,其中,待处理网络模型可以包括多层神经网络,而后确定该待处理网络模型对应的多个分组方式,并从这多个分组方式中选出目标分组方式,在此基础上,基于目标分组方式对多层神经网络进行分组,得到分组结果,最后根据该分组结果运行待处理网络模型。本申请通过利用其获取的目标分组方式对多层神经网络进行分组,在一定程度上可以提高待处理网络模型的运行效率。其中,具体的数据处理方法在后续的实施例中进行详细的说明。
请参阅图1,图1示出了本申请一个实施例提供的数据处理方法的流程示意图。在具体的实施例中,所述数据处理方法应用于如图10所示的数据处理装置1000以及应用于如图11所示的电子设备1100。下面将针对图1所示的流程进行详细的阐述,所述数据处理方法具体可以应用于用户终端,该方法可包括步骤101至步骤S104。
步骤S101:获取待处理网络模型,所述待处理网络模型包括多层神经网络。
本申请实施例可以应用于电子设备,该电子设备可以是蜂窝电话、智能电话、智能音箱、智能手表、电脑、手持通信设备、手持计算设备、卫星无线电装置、全球定位系统以及掌上电脑(Personal Digital Assistant,PDA)等,但并不局限于此。另外,电子设备也可以是服务器或者网关等,电子设备可以配置有神经网络加速器,该神经网络加速器可以专门用来运行神经网络算法。
作为一种方式,待处理网络模型也可以称作是待处理神经网络模型,其可以是经过大量数量集训练获取的网络模型,也可以是未经训练的初始网络模型,所述待处理网络模型可的具体类型不做限定,其可以是卷积神经网络模型(CNN,Convolutional neuralnetworks)、残差收缩网络模型、DN模型((Deconvolutional networks,反卷积神经网络)、RNN模型(Recurrent neural networks,循环神经网络)以及生成式对抗网络模型等,具体指的是哪种类型的网络模型这里不进行明确限制。
作为另一种方式,待处理网络模型可以是图像识别相关的模型,也可以是语音识别相关的模型,或者也可以是目标检测相关的模型等。用户的需求不同则对应的待处理网络模型也不相同。另外,待处理网络模型可以包括多层神经网络,其中,多层神经网络可以包括输入层、中间层以及输出层等,而中间层则可以包括多个隐含神经网络层。作为一个示例,当当待处理网络模型为卷积神经网络模型时每层神经网络可以包括卷积层以及运算层等,其中,运算层可以包括非线性运算层或者线性运算层,如非线性运算层可以为relu层,而线性运算层可以为BN层等。
在一些实施方式中,每层神经网络可以由多个神经元结构组成,这些神经元结构可以包括输出通道、宽以及高等信息,通过这些信息确定出每层神经网络的神经元结构。为了更好的理解待处理网络模型,本申请实施例给出了如图2所示的示例图,从图2可以看出待处理网络模型200可以包括输入层和三层神经网络,这三层神经网络分别为第一层神经网络201、第二层神经网络202以及第三层神经网络203。其中,第一层神经网络201、第二层神经网络202以及第三层神经网络203的神经元结构可以相同也可以不同。例如,第一层神经网络201的神经元结构可以为64*112*112,第二层神经网络202的神经元结构可以为128*56*56,以及第二层神经网络203的神经元结构可以为256*28*28。
在一些实施方式中,电子设备在获取到待处理网络模型时,其也可以对待处理网络模型进行解析,以获取到网络执行流。电子设备的神经网络加速器在运算该网络执行流时,可以在运行每层神经网络之后,将该层神经网络的中间计算结果写入到外部存储器,待运行下一层神经网络时再从外部存储器中获取该中间计算结果进行计算。换句话说,本申请实施例在获取到多层神经网络之后,其可以先对多层神经网络进行解析,以获取到每层神经网络对应的网络执行流,神经网络加速器在运行待处理网络模型时,可以运行网络执行流,并且在运行过程中神经网络加速器可以从外部存储器中读入网络执行流,以及可以将运行网络执行流的结果写入到外部存储器。其中,内部存储器和内部存储器可以是神经网络加速器对应的存储器,内部存储器可以为静态随机存取存储器,外部存储器可以为动态随机存取存储器。另外,内部存储器对应的存储空间可以是内部存储空间,而外部存储器对应的存储空间则可以是外部存储空间。
步骤S102:确定所述待处理网络模型对应的多个分组方式,并从所述多个分组方式中选出目标分组方式。
作为一种方式,获取到待处理网络模型之后,本申请实施例可以确定待处理网络模型对应的多个分组方式,然后从多个分组方式中选出目标分组方式。通过上述实施例介绍可以知道,待处理网络模型可以包括多层神经网络,而神经网络的层数不同则对应的分组方式也不相同。
作为一个示例,图2所示的待处理网络模型对应的分组方式可以包括四种,第一种分组方式可以为[第一层神经网络、第二层神经网络、第三层神经网络],即将三层神经网络作为一组;第二种分组方式可以为[第一层神经网络、第二层神经网络;第三层神经网络],即将三层神经网络分为两组,第一组包括第一层神经网络和第二层神经网络,第二组包括第三层神经网络;第三种分组方式可以为[第一层神经网络;第二层神经网络、第三层神经网络],即将三层神经网络分为两组,第一组包括第一层神经网络,第二组包括第二层神经网络和第三层神经网络;第四种分组方式可以为[第一层神经网络;第二层神经网络;第三层神经网络],即将三层神经网络分为三组,第一组包括第一层神经网络,第二组包括第二层神经网络,第三组则包括第三层神经网络。
其中,第四种分组方式通常是不可取的,主要原因是第四种方式需要内部存储器和外部存储器进行大量的数据交互,进而会影响到数据处理的效率。因此,在获取到多个分组方式时,本申请实施例也可以从多个分组方式中确定出分组最多的分组方式,并排除该分组方式,而后从剩余的分组方式中选出一个最优的分组方式作为目标分组方式。
可选的,第一种分组方式对应的图例可以如图3所示,从图3可以看出第一种分组方式主要是将多层神经网络分为一个目标组300,该目标组可以包括第一层神经网络301、第二层神经网络302以及第三层神经网络303。第二种分组方式对应的图例可以如图4所示,从图4可以看出第二种分组方式主要是将多层神经网络分为两组,这两组分别为第一组410和第二组420,通过图4可以看出第一组410包括两个神经网络层,这两个神经网络层分别为第一层神经网络411和第二层神经网络412,第二组420则只包括一个神经网络层,这个神经网络层为第三层神经网络421。
可选的,第三种分组方式对应的图例可以如图5所示,从图5可以看出第三种分组方式主要是将多层神经网络分为两组,这两组分别为第一组510和第二组520,通过图5可以看出第一组510只包括一个神经网络层,这个神经网络层为第一层神经网络511,第二组520包括两个神经网络层,这两个神经网络层分别为第二层神经网络521和第三层神经网络522。另外,第四种分组方式对应的图例可以如图6所示,从图6可以看出第四种分组方式主要是将多层神经网络分为三组,这三组分别为第一组610、第二组620以及第三组630,通过图6可以看出第一组610包括的神经网络层为第一层神经网络611;第二组620包括的神经网络层为第二层神经网络621;第三组630包括的神经网络层为第三层神经网络631。
综上,电子设备在获取到待处理网络模型后,其首先可以基于网络层数对待处理网络模型进行分组,以得到多个分组方式。在此基础上,本申请实施例可以从多个分组方式中选出一个分组方式作为目标分组方式。在从多个分组方式中选出目标分组方式之前,本申请实施例可以先分别获取每个分组方式对应的时间花销,而后对时间花销基于排序,并将时间花销最小的分组方式作为目标分组方式。
本申请实施例中,每个分组方式对应的时间花销指的是电子设备的神经网络加速器运行待处理网络模型所需的总时间,神经网络加速器的内部存储空间中存放的神经网络层数越多,则最终计算神经网络所使用的时间就越短,主要原因是神经网络加速器的性能大部分消耗在对内部存储器的访问上,故减少数据的换进换出在一定程度上可以降低时间花销。
另外,当同一个分组方式下包括至少两个神经网络层时,电子设备的神经网络加速器处理这些神经网络层所需的时间也是不相同的。例如,上述第二种分组方式和第三种分组方式对应的读写操作次数相同,但是由于处理每个神经网络层的时间的不同,会导致第二种分组方式和第三种分组方式对应的时间花销不同。
在另一些实施方式中,电子设备在获取到待处理网络模型对应的多个分组方式之后,其也可以获取每个分组方式对应的功耗,并将功耗最小的分组方式作为目标分组方式。其中,每个分组方式对应的功耗可以是神经网络处理器运行每个分组方式所需要的总功耗,功耗越小则对电子设备越有益,故此时便可以将该最小功耗对应的分组方式作为目标分组方式。
作为一种方式,在确定功耗最小的分组方式与时间花销最小的分组方式为同一分组方式时,可以将该分组方式作为目标分组方式。另外,在确定功耗最小的分组方式与时间花销最小的分组方式不是同一分组方式时,本申请实施例将功耗最小的分组方式作为目标分组方式。
作为另一种方式,在确定功耗最小的分组方式与时间花销最小的分组方式不是同一分组方式时,本申请实施例可以获取电子设备对应的电量,并确定电子设备的电量是否大于预设电量,如果电子设备的电量大于预设电量,则可以将时间花销最小的分组方式作为目标分组方式。另外,如果电子设备的电量小于预设电量,则可以则功耗最小的分组方式作为目标分组方式。
作为另一种方式,在确定功耗最小的分组方式与时间花销最小的分组方式不是同一分组方式时,本申请实施例也可以获取用户的使用习惯,并根据用户的使用习惯确定用户的偏好,当确定用户的偏好是处理速度时,电子设备可以将时间花销最小的分组方式作为目标分组方式;当确定用户的偏好是电子设备的功耗时,本申请实施例可以将功耗最小的分组方式作为目标分组方式。
作为另一种方式,在确定功耗最小的分组方式与时间花销最小的分组方式不是同一分组方式时,本申请实施例输出提示信息,通过该提示信息提示用户选择最优的目标分组方式;当用户输入的指令是时间优先,此时则可以将时间花销最小的分组方式作为目标分组方式;当用户输入的指令是功耗优先时,可以将功耗最小的分组方式作为目标分组方式。
在另一些实施方式中,在确定功耗最小的分组方式与时间花销最小的分组方式不是同一分组方式时,本申请实施例也可以对功耗和时间花销进行加权平均,并将加权平均最大的分组方式作为目标分组方式。具体如何从多个分组方式中选出目标分组方式这里不进行明确限制,可以根据实际情况进行选择。
步骤S103:基于所述目标分组方式对所述多层神经网络进行分组,得到分组结果。
本申请实施例中,电子设备在获取到目标分组方式之后,其可以基于目标分组方式对多层神经网络进行分组,以此得到分组结果。具体的,本申请实施例可以获取目标分组方式对应的目标分割点,然后基于目标分割点将多层神经网络分割成预设数量个网络分段,其中,预设数量个网络分段构成分组结构。
在一些实施方式中,目标分组方式可以包括至少一个分割点,电子设备通过所述至少一个分割点可以将多层神经网络分成多组,分割点不同则对应的分组也不相同。需要说明的是,目标分割点的数量也可以为0个,即将多层神经网络作为整体的一组,在该种情况下电子设备的时间花销最小,但是需要保证内部存储空间足够大,当内部存储空间减小时,则不能使用该种分组方式。另外,本申请实施例中目标分组方式对应的目标分割点的数量可以随着待处理网络模型中神经网络层数的不同而不同,并且神经网络层数越多则对应的目标分割点可能越多。
步骤S104:根据所述分组结果运行所述待处理网络模型。
本申请实施例中,电子设备在获取到分组结果之后则可以对应运行待处理网络模型,具体的,电子设备的神经网络加速器在运行待处理网络模型时,其可以按照分组结果来先后运行多层神经网络。通过上述介绍开知道,基于目标分组方式对多层神经网络进行分组可以得到预设数量个网络分段,且每个网络分组至少可以包括一层神经网络。因此,神经网络加速器在运行待处理网络模型时可以按照网络分段运行。
可选的,神经网络加速器在根据分组结果运行待处理网络模型时,其可以先确定分组结果包含的网络分段的个数以及每个网络分段之间的连接关系,并按照网络分段的连接关系先后运行网络分段中的神经网络。其中,网络分段越靠近输入层则其对应的神经网络越早会被运行。并且,在运行网络分段中的神经网络时,本申请实施例可以按照网络分段在待处理网络模型中的先后顺序进行运行。
作为一个示例,基于目标分组方式对多层神经网络进行分组,得到分组结果,该分组结果包括三个网络分段,所述多个网络分段包括第一网络分段、第二网络分段和第三网络分段,并且,第一网络分段中的神经网络层与输入层连接,第二网络分段中的神经网络层与第一网络分段中的神经网络层连接,而第三网络分段中的神经网络层则与第二网络分段中的神经网络层连接。电子设备的神经网络加速器在运行待处理网络模型时,可以先将第一网络分段中的所有神经网络层从外部存储器中读入至内部存储器,而后在内部存储器中运行第一网络分段中的所有神经网络层,当获取到第一网络分段中所有神经网络层的运行结果后,可以将运行结果写入至外部存储器。可见,在运行第一网络分段中的所有神经网络层时,第一网络分段中各神经网络层的运行结果是不会写入至外部存储器,而是保持在内部存储器,并传输至第一网络分段中的下一个神经网络层,直至第一网络分段中的最后一个神经网络层运行完,则其最后的运行结果写入至外部存储器。第二网络分段以及第三网络分段中神经网络的运行与第一网络分段中神经网络的运行过程类似指令就不进行一一赘述了。
本申请实施例提出的一种数据处理方法,在从多个分组方式中选出目标分组方式时,通过利用该目标分组方式对多层神经网络进行分组可以提高数据处理的效率,具体的,获取待处理网络模型,其中,待处理网络模型可以包括多层神经网络,而后确定该待处理网络模型对应的多个分组方式,并从这多个分组方式中选出目标分组方式,在此基础上,基于目标分组方式对多层神经网络进行分组,得到分组结果,最后根据该分组结果运行待处理网络模型。本申请通过利用其获取的目标分组方式对多层神经网络进行分组,在一定程度上可以提高待处理网络模型的运行效率。
本申请另一实施例提供了一种数据处理方法,请参阅图7,该数据处理方法可以包括步骤S701至步骤S706。
步骤S701:获取待处理网络模型,所述待处理网络模型包括多层神经网络。
步骤S702:确定所述待处理网络模型对应的多个分组方式。
作为一种方式,电子设备在确定待处理网络模型对应的分组方式之前,本申请实施例可以获取神经网络加速器的内部存储空间,并确定该内部存储空间是否小于预设存储空间;若所述内部存储空间小于预设存储空间,则确定所述待处理网络模型对应的多个分组方式,并从所述多个分组方式中选出目标分组方式。
作为另一种方式,如果所述内部存储空间大于预设存储空间,则将所述多层神经网络存储至所述内部存储空间,并对应运行所述待处理网络模型。换句话说,在确定神经网络加速器的内部存储空间足够大时,本申请实施例可以直接将多层神经网络从外部存储器读入至内部存储器,并在多层神经网络均运行完成时,再将运行结果写入至外部存储器。
作为另一种方式,如果内部存储空间大于预设存储空间,本申请实施例可以获取待处理网络模型的网络深度,并确定该网络深度是否小于预设网络深度,若待处理网络模型的网络深度小于预设网络深度,则将所述多层神经网络存储至所述内部存储空间,并对应运行所述待处理网络模型。若待处理网络模型的网络深度大于或者等于预设网络深度,则确定所述待处理网络模型对应的多个分组方式,并从所述多个分组方式中选出目标分组方式。其中,预设网络深度也可以是待处理网络模型的结构复杂度,且预设网络深度与预设存储空间相对应。
步骤S703:根据所述多个分组方式构建赋权有向图,所述赋权有向图包括每个分组方式对应的时间开销。
在一些实施方式中,电子设备在获取到待处理网络模型对应的分组方式之后,其可以根据多个分组方式构建赋权有向图,其中,赋权有向图由多个节点和多条边构成,多个节点可以与多层神经网络对应,即一个神经网络层可以对应一个节点,而多条边则可以是多个节点对应连接组成的边。
在另一些实施方式中,在构建赋权有向图时,本申请实施例可以对多个分组方式进行遍历,具体的,电子设备可以分别计算每个分组方式对应的路权,所述路权可以是每个分组方式对应的时间花销,当获取到每个分组方式对应的路权之后,电子设备便可以基于分组方式以及各分组方式对应的路权构建出赋权有向图。
通过上述介绍可以知道,神经网络的层数不同则对应的分组方式也可能不相同,故在获取到多层神经网络时,本申请实施例便可以先确定出待分组模型对应的多个分组方式,在此基础上,电子设备可以基于多组方式构建赋权有向图。为了更清楚的理解赋权有向图的构建过程,本申请以3层神经网络为例来说明一下。3层神经网络由1、2和3层神经网络构成,1、2和3层神经网络的分组方式可以由4种,这4种分组方式可以分别是[1;2;3]、[1;2,3]、[1,2;3]以及[1,2,3],其中,第一个分组方式中1、2和3各自为一组,即将多层神经网络分为3组;第二个分组方式中1、2和3分为两组,第一组包括1和2,第二组包括3;第三个分组方式中1、2和3特分为两组,不过第一组包括1,第二组则包括2和3;第四个分组方式中1、2和3分为1组,即1、2和3共为一组。
可选的,电子设备在获取到3层神经网络的各分组方式之后,便可以基于这些分组方式构建赋权有向图,由于网络模型均是包括输入层的,故在构建赋权有向图时,本申请实施例可以将个神经网络层作为主要节点,同时可以将输入层作为第一个节点。最终构建的赋权有向图可以如图8所示。图8中的IN为输入层,‘1’表示的是第一层神经网络,‘2’表示的是第二层神经网络,‘3’表示的是第三次神经网络。另外,第一个分组方式对应的时间花销L0=cost(1,1)+cost(2,2)+cost(2,2);第二个分组方式对应的时间花销L1=cost(1,1)+cost(2,3);第三个分组方式对应的时间花销L2=cost(1,2)+cost(3,3);第四个分组方式对应的时间花销L3=cost(1,3)。
其中,cost(1,1)可以是神经网络加速器将第一层神经网络从外部存储器读入至内部存储器,并将第一层神经网络的运行结果从内部存储器写入至外部存储器花费的总时间;cost(2,2)可以是神经网络加速器将第二层神经网络从外部存储器读入至内部存储器,并将第二层神经网络的运行结果从内部存储器写入至外部存储器花费的总时间;cost(3,3)可以是神经网络加速器将第三层神经网络从外部存储器读入至内部存储器,并将第三层神经网络的运行结果从内部存储器写入至外部存储器花费的总时间;cost(1,2)可以是神经网络加速器将第一层神经网络和第二层神经网络从外部存储器读入至内部存储器,并将第一层神经网络和第二层神经网络的运行结果从内部存储器写入至外部存储器花费的总时间;cost(2,3)可以是神经网络加速器将第二层神经网络和第三层神经网络从外部存储器读入至内部存储器,并将第二层神经网络和第三层神经网络的运行结果从内部存储器写入至外部存储器花费的总时间;cost(1,3)可以是神经网络加速器将待处理网络模型的第一层神经网络、第二层神经网络以及第三神经网络层从外部存储器读入至内部存储器,并将第一层神经网络、第二层神经网络以及第三神经网络层的运行结果从内部存储器写入至外部存储器花费的总时间。
作为一种方式,本申请实施例在获取到赋权有向图之后,其可以基于该赋权有向图从多个分组方式中选出目标分组方式,即进入步骤S704。
作为另一种方式,获取到待处理网络模型多层神经网络之后,本申请实施例也可以直接基于多层神经网络构建赋权有向图,即将每层神经网络作为一个节点,而后获取起始节点和结束节点,起始节点通常为输入层,结束节点则为最后一个神经网络层。在此基础上,便可以基于多层神经网络构建赋权有向图,该赋权有向图中的边可以为起始节点到结束节点所表示的边。
为了更清楚的理解赋权有向图的构建过程,本申请实施例给出了如图9所示的示例图,从图9可以看出在获取赋权有向图时,电子设备可以先获取一种分组方式(start_layer,end_layer),start_layer和end_layer分别表示的是第一层神经网络和最后一层神经网络,图9中的i和j分别表示的是神经网络中的不同层,输入层(input_layer)可以等于start_layer-1。本申请实施例通过遍历所有可能的分组方式即可得到最终的赋权有向图。例如,当待处理网络模型为3层神经网络时,第一次遍历时可以得到图8中的cost(1,1)、cost(1,2)以及cost(1,3),第二次遍历时可以得到cost(2,2)以及cost(2,3),第三次遍历时则可以得到cost(3,3),最后便可以获取到最终的赋权有向图。
步骤S704:基于所述赋权有向图从所述多个分组方式中选出目标分组方式。
作为一种方式,电子设备的神经网络加速器在获取到赋权有向图之后,其可以根据最短路径法从赋权有向图中选出时间开销最小的分组方式,并将该分组方式作为目标分组方式。本申请实施例中,神经网络加速器可以包括路权计算单元和最短路径计算单元,其中,路权计算单元可以用于构建赋权有向图,而最短路径计算单元则可以用于从赋权有向图中的多个路径中选出一个最短路径,而该最短路径对应的分组方式即为目标分组方式。
如上述示例中,在获取到赋权有向图后,本申请实施例便可以确定出每个分组方式对应的时间开销,具体的,第一个分组方式对应的时间花销L0=cost(1,1)+cost(2,2)+cost(2,2);第二个分组方式对应的时间花销L1=cost(1,1)+cost(2,3);第三个分组方式对应的时间花销L2=cost(1,2)+cost(3,3);第四个分组方式对应的时间花销L3=cost(1,3)。在此基础上,本申请实施例可以从L0、L1、L2以及L3中选出最小的一个作为最短路径,而该最短路径对应的分组方式也即为目标分组方式。例如,通过比对发现L1=cost(1,1)+cost(2,3)是四个分组方式中时间花销最小的,此时则可以将L1对的第二个分组方式作为目标分组方式。
步骤S705:基于所述目标分组方式对所述多层神经网络进行分组,得到分组结果。
步骤S706:根据所述分组结果运行所述待处理网络模型。
通过上述介绍知道,分组结果可以包括多个网络分段,每个网络分段至少可以包括一层神经网络。根据分组结果运行待处理网络模型可以包括:由所述多个网络分段中选择一个网络分段作为第一网络分段,以及将与所述第一网络分段相邻的网络分段作为第二网络分段;运行所述第一网络分段的神经网络,并且将所述第二网络分段的神经网络加载至所述内部存储空间;运行所述第二网络分段的神经网络;在所述多个网络分段中,由所述第一网络分段之外的网络分段中确定新的第一网络分段,并确定新的第二网络分段,并返回执行运行所述第一网络分段的神经网络的步骤,并且将所述第二网络分段的神经网络加载至所述内部存储空间以及后续步骤,直至所有网络分段的神经网络均运行。
换句话说,本申请实施例根据分组结果运行待处理网络模型时,首先可以从外部存储空间中读入第一网络分段,接着可以运行第一网络分段内的神经网络,并且,在运行第一网络分段内的神经网络时,电子设备同时也可以将第二网络分段读入内部存储空间。同理,在运行第二网络分段内的神经网络时,本申请实施例也可以将下一个网络分段读入内部存储空间,以此类推,直至所有网络分段的神经网络均被运行。本申请实施例通过这种方式运行待处理网络模型在很大程度上能够提高模型运行的效率,进而可以提高用户的使用体验。
本申请实施例提出的一种数据处理方法,在从多个分组方式中选出目标分组方式时,通过利用该目标分组方式对多层神经网络进行分组可以提高数据处理的效率,具体的,获取待处理网络模型,其中,待处理网络模型可以包括多层神经网络,而后确定该待处理网络模型对应的多个分组方式,并从这多个分组方式中选出目标分组方式,在此基础上,基于目标分组方式对多层神经网络进行分组,得到分组结果,最后根据该分组结果运行待处理网络模型。本申请通过利用其获取的目标分组方式对多层神经网络进行分组,在一定程度上可以提高待处理网络模型的运行效率。另外,本申请实施例通过构建赋权有向图以及利用最短路径方法可以从多个分组方式中选出最优的分组方式作为目标分组方式,通过利用该目标分组方式本申请实施例可以极大的提高神经网络加速器的性能。
请参阅图10,本申请实施例提出了一种数据处理装置1000,该数据处理装置1000可以应用于用户终端。在具体的实施例中,该数据处理装置1000包括:获取模块1010、确定模块1020、分组模块1030和运行模块1040。
获取模块1010,用于获取待处理网络模型,所述待处理网络模型包括多层神经网络。
确定模块1020,用于确定所述待处理网络模型对应的多个分组方式,并从所述多个分组方式中选出目标分组方式。
进一步地,确定模块1020还用于根据所述多个分组方式构建赋权有向图,所述赋权有向图包括每个分组方式对应的时间开销;基于所述赋权有向图从所述多个分组方式中选出目标分组方式。
进一步地,确定模块1020还用于根据最短路径法从所述赋权有向图中选出所述时间开销最小的分组方式,并将该分组方式作为目标分组方式。
进一步地,该数据处理装置1000可以应用于电子设备,所述电子设备包括神经网络加速器。确定模块1020还用于获取所述神经网络加速器的内部存储空间,并确定所述内部存储空间是否小于预设存储空间,若所述内部存储空间小于预设存储空间,则确定所述待处理网络模型对应的多个分组方式,并从所述多个分组方式中选出目标分组方式。
进一步地,确定模块1020还用于若所述内部存储空间大于预设存储空间,则将所述多层神经网络存储至所述内部存储空间,并对应运行所述待处理网络模型。
进一步地,分组结果包括多个网络分段,每个所述网络分段至少包括一层所述神经网络,确定模块1020还用于由所述多个网络分段中选择一个网络分段作为第一网络分段,以及将与所述第一网络分段相邻的网络分段作为第二网络分段,运行所述第一网络分段的神经网络,并且将所述第二网络分段的神经网络加载至所述内部存储空间,运行所述第二网络分段的神经网络,在所述多个网络分段中,由所述第一网络分段之外的网络分段中确定新的第一网络分段,并确定新的第二网络分段,并返回执行运行所述第一网络分段的神经网络,并且将所述第二网络分段的神经网络加载至所述内部存储空间以及后续步骤,直至所有网络分段的神经网络均运行。
分组模块1030,用于基于所述目标分组方式对所述多层神经网络进行分组,得到分组结果。
运行模块1040,用于根据所述分组结果运行所述待处理网络模型。
进一步地,运行模块1040还用于获取所述目标分组方式对应的目标分割点,基于所述目标分割点将所述多层神经网络分割为预设数量个网络分段,所述预设数量个网络分段构成所述分组结果。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
本申请实施例提出的一种数据处理装置,本申请在从多个分组方式中选出目标分组方式时,通过利用该目标分组方式对多层神经网络进行分组可以提高数据处理的效率,具体的,获取待处理网络模型,其中,待处理网络模型可以包括多层神经网络,而后确定该待处理网络模型对应的多个分组方式,并从这多个分组方式中选出目标分组方式,在此基础上,基于目标分组方式对多层神经网络进行分组,得到分组结果,最后根据该分组结果运行待处理网络模型。本申请通过利用其获取的目标分组方式对多层神经网络进行分组,在一定程度上可以提高待处理网络模型的运行效率。
请参阅图11,其示出了本申请实施例提供的一种电子设备1100的结构框图。该电子设备1100可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备。本申请中的电子设备1100可以包括一个或多个如下部件:处理器1110、存储器1120、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器1120中并被配置为由一个或多个处理器1110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器1110可以包括一个或者多个处理核。处理器1110利用各种接口和线路连接整个电子设备1100内的各个部分,通过运行或执行存储在存储器1120内的指令、程序、代码集或指令集,以及调用存储在存储器1120内的数据,执行电子设备1100的各种功能和处理数据。可选地,处理器1110可以采用数字信号处理(Digital Signal ProceSSing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1110可集成中央处理器(Central ProceSSing Unit,CPU)、声纹识别器(Graphics ProceSSing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1110中,单独通过一块通信芯片进行实现。
存储器1120可以包括随机存储器(Random ACCeSS Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器1120可用于存储指令、程序、代码、代码集或指令集。存储器1120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备1100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
另外,电子设备1100也可以包括神经网络加速器(图中未标出),电子设备可以通过该神经网络加速器运行人工智能相关的神经网络模型。神经网络加速器可以包括配置设备以及存储设备等。其中,配置设备可以用于配置神经网络的结构和不同神经元的权重;存储设备用于存储神经网络的结构和不同神经元的权重等。
请参阅图12,其示出了本申请实施例提供的一种计算机可读存储介质1200的结构框图。该计算机可读存储介质1200中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1200可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1200包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质1200具有执行上述方法实施例中的任何方法步骤的程序代码1210的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1210可以例如以适当形式进行压缩。最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
- 数据处理方法、装置、计算机可读存储介质和电子设备
- 数据处理方法和装置、电子设备及计算机可读存储介质
- 数据流的处理方法、装置、电子设备及可读存储介质
- 日志信息处理方法、装置、电子设备及可读存储介质
- 三维模型处理方法和装置、电子设备、计算机可读存储介质
- 数据加密处理方法、数据解密处理方法、装置、电子设备及可读存储介质
- 数据处理方法、数据处理装置、电子设备和可读存储介质