掌桥专利:专业的专利平台
掌桥专利
首页

一种神经网络获取方法及装置

文献发布时间:2023-06-19 10:11:51


一种神经网络获取方法及装置

技术领域

本申请涉及通信技术领域,尤其涉及一种神经网络获取方法及装置。

背景技术

人工神经网络(artificial neural networks,ANNs),也可以称为神经网络(NNs),神经网络是一种模仿动物神经网络行为特征,进行信息处理的算法数学模型。借助神经网络能够实现复杂的运算推理。通常神经网络中包括多层网络层,每层网络层可以选用不同的子模块,通过不同子模块的拼接,可以构成不同结构的神经网络。不同结构的神经网络在准确率、以及网络的整体延时上存在较大的差异。

而不同的硬件平台上能够运行的神经网络也不同,例如在云端或大型服务器上可以运行层数较多的神经网络,鉴于云端或大型服务器的强大运算能力(也可以称为算力),层数较多的神经网络能够达到较高的准确率,而对于边缘计算设备,由于其算力有限,这种层数较大的神经网络运行在边缘计算设备上,延时会大幅增大,影响该神经网络的推理效率。

神经网络搜索是指基于用户的需求,搜索出层数,准确率,网络的整体延时等各种指标更符合硬件平台的神经网络。目前神经网络搜索过程中需要估算神经网络的延时,常见有如下两种方式,方式一、根据神经网络自身的计算复杂度(如该神经网络包括的浮点操作数)近似衡量该神经网络在该硬件平台上的延时。方式二、根据硬件平台的性能(如每秒钟硬件平台可处理的浮点运算的数量),估算神经网络的延迟。

这两种方式估算的神经网络的延时与神经网络的实际延时存在较大的差异,最终也将导致神经网络搜索的准确程度下降。

发明内容

本申请提供一种神经网络获取方法及装置,用以保证神经网络估算延时的准确性。

第一方面,本申请实施例提供了一种神经网络获取方法,该方法可以由神经网络获取装置执行,在该方法中,神经网络获取装置可以先确定目标硬件平台,之后,再为目标硬件平台获取目标神经网络,该目标神经网络在该目标硬件平台上的估算延时与该目标神经网络在该目标硬件平台上的实际延时的差值位于标准差区间内,该标准差区间是基于该目标神经网络在该目标硬件平台上多次测量的实际延时的分布确定的。

通过上述方法,神经网络获取装置获取的目标神经网络在该目标硬件平台上的估算延时更接近于该目标神经网络在该目标硬件平台上的实际延时,估算延时和实际延时的差值位于一个较小的标准差区间内,使得该神经网络获取装置获取的目标神经网络更适用于该目标硬件平台,提升神经网络搜索的准确性。

在一种可能的设计中,神经网络获取装置为目标硬件平台获取目标神经网络时,可以先获取延时集合,该延时集合中包括多个子模块在不同硬件平台上的延时;之后,神经网络获取装置可以基于延时集合,为目标硬件平台获取目标神经网络,目标神经网络是由多个子模块中的部分或全部构成的,估算延时是根据延时集合确定的。

通过上述方法,由于该延时集合中包括构成该目标神经网络所可能用到的各个子模块在不同硬件平台的延时,使得神经网络获取装置为目标硬件平台获取目标神经网络时,能够准确的估算出该目标神经网络在该目标硬件平台上的延时,估算延时能够更加接近于实际延时,提升目标神经网络的估算延时的准确性,另外,由于该延时集合的存在,也使得神经网络获取装置在获取该目标神经网络时,能够较为快速的利用延时集合计算出该估算延时,减少获取目标神经网络的时间,提高了神经网络搜索的速度。

在一种可能的设计中,目标神经网络的层数符合层数范围,且估算延时处于目标延时范围内准确率最高的神经网络,目标延时范围是根据用户的输入确认的。

通过上述方法,神经网络获取装置获取的目标神经网络更符合用户的需求,能够提升用户体验。

在一种可能的设计中,神经网络获取装置在确定目标硬件平台时,可以先提示用户输入或选择目标硬件平台;在检测到用户的输入或选择后,可以根据用户的输入或选择确定目标硬件平台。

通过上述方法,神经网络获取装置可以根据用户的选择或输入来确定该目标硬件平台,以便后续可以为用户选择或输入的目标硬件平台获取目标神经网络。

在一种可能的设计中,延时集合可以是由其他装置构建、预先配置给神经网络获取装置的,也可以是神经网络装置自行构建的,下面对延时集合构建的方式进行说明,具体的:可以先从多个子模块中随机选出子模块构成测试神经网络,这里并不限定测试神经网络的数量以及层数;之后,将测试神经网络中运行到不同的硬件平台上,测量出测试神经网络中各个子模块在不同硬件平台的延时;利用测量出的测试神经网络中各个子模块在不同硬件平台的延时,构建延时集合。

可选的,也可以先对测量出测试神经网络中各个子模块在不同硬件平台的延时进行校准,在校准之后,利用校准后的、测试神经网络中各个子模块在不同硬件平台的延时构建延时集合。

通过上述方法,延时集合中各个子模块在不同硬件平台上的延时是实际测量的,能够保证该延时集合中各个子模块的延时的准确性,进而,使得估算的目标神经网络的延时也更加准确。

在一种可能的设计中,针对不同硬件平台中的任一硬件平台,延时集合记录了下列的部分或全部:

每个子模块在硬件平台上的延时、以及硬件平台的标识信息的对应关系;

每个子模块在硬件平台上的延时、以及硬件平台中处理单元的标识信息的对应关系。

通过上述方法,延时集合建立了延时、硬件平台以及处理单元之间的对应关系,便于后续能够基于延时集合计算估算延时。

在一种可能的设计中,针对不同硬件平台中的任一硬件平台,若硬件平台包括多个相同型号的处理单元,子模块在硬件平台上的延时等于硬件平台中一个处理单元执行子模块所涉及的运算所消耗的时间;

若硬件平台包括多个不同型号的处理单元,子模块在硬件平台上的一个延时为一种型号的一个处理单元执行子模块的延时,该种型号的一个处理单元执行子模块的延时等于硬件平台中该种型号的一个处理单元执行子模块所涉及的运算所消耗的时间。

通过上述方法,子模块在硬件平台上的延时是与硬件平台的处理单元相关的,也就是说,对于包括相同型号的处理单元的硬件装置,该子模块在该硬件装置上的时延时相同的,包括相同型号的处理单元的硬件装置可以作为同一种硬件平台。

在一种可能的设计中,若目标硬件平台包括多个相同型号的处理单元,估算延时等于延时集合中构成目标神经网络的各个子模块在目标硬件平台的延时之和。

若目标硬件平台包括多个不同型号的处理单元,一个估算延时等于延时集合中、一种型号的处理单元执行构成目标神经网络的各个子模块的延时之和。

通过上述方法,通过简单求和可以计算出该估算延时,估算延时的计算方式简单、快捷,保证了神经网络搜索的效率。

在一种可能的设计中,若目标硬件平台包括多个不同型号的处理单元,神经网络获取装置还可以根据用户的输入确定目标硬件平台中的目标处理单元;在这种情况下,估算延时等于延时集合中、目标处理单元执行构成目标神经网络的每个子模块的延时之和。

通过上述方法,经过简单求和就可以快捷的获取估算延时,能够进一步提升神经网络搜索的效率。

在一种可能的设计中,当延时集合中涉及的硬件平台与目标硬件平台不同时,若延时集合中涉及的硬件平台中包括与目标硬件平台具备相同处理单元(如型号相同)的候选硬件平台,可以利用该各个子模块在该候选硬件平台上的延时获得估算延时,该估算延时等于目标神经网络的各个子模块在候选硬件平台的延时之和。

通过上述方法,将候选硬件平台等同于目标硬件平台,通过简单求和可以计算出该估算延时,估算延时的计算方式简单、快捷,保证了神经网络搜索的效率。

在一种可能的设计中,标准差区间属于{-0.6,0.6}。

通过上述方法,标准差区间的范围相对较小,表明目标神经网络在目标硬件平台上的估算延时与实际延时的差值位于一个范围较小的区间内,估算延时和实际延时较为接近。

第二方面,本申请提供了一种神经网络获取装置,该装置具有实现第一方面及第一方面任意一种可能的设计中所实现的功能。该设备功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,装置的结构中包括确定模块、以及获取模块,这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。

第三方面,本申请还提供了一种神经网络获取装置,有益效果可以参见第一方面及第一方面任意一种可能的设计的描述此处不再赘述。神经网络获取装置的结构中包括处理器和存储器,处理器被配置为执行上述第一方面及第一方面任意一种可能的设计的方法中相应的功能。存储器与处理器耦合,其保存神经网络获取装置必要的程序指令和数据。神经网络获取装置的结构中还包括通信接口,用于与其他设备进行通信。

第四方面,本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。

第五方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。

第六方面,本申请还提供一种计算机芯片,芯片与存储器相连,芯片用于读取并执行存储器中存储的软件程序,执行上述各方面的方法。

附图说明

图1A为本申请提供的一种系统的架构示意图;

图1B为本申请提供的一种系统的架构示意图;

图1C为本申请提供的一种系统的架构示意图;

图2为本申请提供的一种神经网络搜索方法的示意图;

图3A~3B为本申请提供的一种目标硬件平台的配置界面示意图;

图4为本申请提供的一种层数范围的配置界面示意图;

图5A~5B为本申请提供的一种目标延时范围的配置界面示意图;

图6为本申请提供的目标延时范围的中间值与β之间的关系示意图;

图7为本申请提供的不同神经网络在边缘设备上的延时示意图;

图8为本申请提供的不同神经网络在边缘设备上的准确率示意图;

图9为本申请提供的不同神经网络在终端设备上的延时示意图;

图10为本申请提供的不同神经网络在终端设备上的准确率示意图;

图11为采用本申请提供的神经网络获取方法获取目标神经网络的速度与现有获取目标神经网络的速度倍数示意图;

图12为本申请提供的一种神经网络获取装置的结构示意图。

具体实施方式

如图1A所示,为本申请实施例适用的一种系统架构示意图,该系统中包括神经网络获取装置100和客户端200,该客户端200部署在用户侧。

本申请实施例并不限定神经网络获取装置100的部署位置,例如神经网络获取装置100可以部署在边缘数据中心,也可以部署在云数据中心中,也可以部署在终端计算设备上。神经网络获取装置100也可以分布式的部署在边缘数据中心、云数据中心以及终端计算设备中的部分或全部环境中。

神经网络获取装置100可以为一个硬件装置,如服务器、服务器集群、终端计算设备,神经网络获取装置100包括总线101、处理器102、通信接口103和存储器104。处理器102、存储器104和通信接口103之间通过总线101通信。

其中,处理器102可以为中央处理器(central processing unit,CPU)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、人工智能(artificial intelligence,AI)芯片、片上系统(system on chip,SoC)或复杂可编程逻辑器件(complex programmable logic device,CPLD),图形处理器(graphics processing unit,GPU)等。

存储器104可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器104还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,硬盘驱动器(hard diskdrive,HDD)或固态驱动器(solid state disk,SSD)。存储器104中存储有可执行代码,处理器102执行该可执行代码以执行图2所描述的方法。存储器104中还可以包括操作系统等其他运行进程所需的软件模块(如神经网络获取装置100中的多个模块,如确定模块1201以及获取模块1202)。操作系统可以为LINUX

其中,神经网络获取装置100中确定模块1201可以用于确定目标硬件平台,获取模块1202可以用于为该目标硬件平台获取目标神经网络。

处理器101可以通过调用存储器102中存储的计算机执行指令,使得神经网络获取装置100可以执行如图2所示的实施例中的神经网络获取装置100执行的步骤201~205。

通信接口103,用于收发数据;处理器101在与其他设备进行通信时,可以通过通信接口103进行数据传输,如获取目标硬件平台、或延时集合、发送测试神经网络等。

在本申请实施例中神经网络获取装置100用于执行本申请实施例提供的神经网络获取方法,能够在确定了目标硬件平台后,为该目标硬件平台获取目标神经网络,该目标神经网络是在该目标硬件平台性能较佳的神经网络。需要说明的是,当神经网络获取装置100为一个服务器集群时,服务器集群中的多个服务器可以配合执行本申请实施例提供的神经网络获取方法。

用户可以在客户端200上操作,通过客户端200向神经网络获取装置100发送信息,例如,用户可以在客户端200上输入或选择目标硬件平台,客户端200在检测到用户在客户端200的操作后,客户端200可以将用户输入或选择的目标硬件平台(目标硬件平台的标识信息)发送给神经网络获取装置100。用户也可以在客户端200上输入或选择目标神经网络需要符合的层数范围,客户端200在检测到用户在客户端200的操作后,客户端200可以将用户输入或选择的层数范围发送给神经网络获取装置100。用户也可以在客户端200上输入或选择目标神经网络需要符合的目标延时范围,客户端200在检测到用户在客户端200的操作后,客户端200可以将用户输入或选择的目标延时范围发送给神经网络获取装置100。

神经网络获取装置100也可以向客户端200发送消息,例如,神经网络获取装置100在搜索出目标神经网络后,可以向客户端200推送该目标神经网络,还可以将该目标神经网络的相关信息,如目标神经网络的层数、目标神经网络的准确率或估算延时发送给客户端200,客户端200可以向用户展示该目标神经网络,以及该目标神经网络的相关信息,便于用户查看。

在本申请实施例中,神经网络获取装置100可以在确定了目标硬件平台后,为该目标硬件平台获取目标神经网络,在为该目标硬件平台获取目标神经网络时,估算该目标神经网络在目标硬件平台上的延时(也可以称为该目标神经网络的估算延时)更接近该目标神经网络的实际延时,具体的,该目标神经网络在目标硬件平台上的估算延时与目标神经网络在目标硬件平台上的实际延时的差值可以位于标准差区间内,标准差区间是基于目标神经网络在目标硬件平台上多次测量的实际延时的分布确定的。

为了确定该目标神经网络在目标硬件平台上的估算延时与实际延时之间的偏差,可以先确定该目标神经网络在目标硬件平台上的实际延时的分布情况,将该目标神经网络运行在该目标硬件平台上,使该目标神经网络在该目标硬件平台上运行多次,每运行一次测量该目标神经网络在获取输入数据到输出数据的时间(也即实际延时),获得多个实际延时,根据该多个实际延时的分布情况,拟合出该目标神经网络在该目标硬件平台上实际延时的分布曲线,该分布曲线的横坐标为目标神经网络在目标硬件平台上实际延迟,纵坐标为该实际延时的分布概率或频率。对于该多个实际延时中的任一实际延时,该实际延时位于该分布曲线上,或与该分布曲线的距离处于设定范围内。

如图1B所示,为本申请提供的一种目标神经网络在该目标硬件平台上的实际延时的分布曲线,从图1B中,可以看出该分布曲线接近于正态分布,也即多次测量的实际延时,在中间区域内分布的实际延时较多,在边缘区域内分布的实际延时较少。

标准差用于表征该多个实际延时的离散程度,等于

如图1C所示,为不同目标神经网络的实际延时(目标神经网络不同,该目标神经网络的实际延时也不同)、目标神经网络在目标硬件平台上的估算延时与目标神经网络在所述目标硬件平台上的实际延时的差值之间的分布曲线,其中,深灰色区域为基于不同的目标神经网络在该目标硬件平台的实际延时分布情况确定的标准差区间。浅灰色区域为基于不同的目标神经网络在该目标硬件平台的实际延时分布情况确定的两倍的标准差区间。

从图1C中可以看出目标神经网络在目标硬件平台上的估算延时与目标神经网络在目标硬件平台上的实际延时的差值接近于零,且对于任一目标神经网络,该目标神经网络在目标硬件平台上的估算延时与目标神经网络在所述目标硬件平台上的实际延时的差值均处于标准差区间内。

为了能够保证该目标神经网络在目标硬件平台上的估算延时能够与目标神经网络在目标硬件平台上的实际延时较为接近,神经网络获取装置100可以基于延时集合,为该目标硬件平台获取目标神经网络,其中,该延时集合中包括预先测量的各个子模块在不同硬件平台上的延时,该各个子模块包括构建该目标神经网络所需的子模块,该不同硬件平台包括该目标硬件平台。由于该延时集合的存在,能够保证通过延时集合估算的该目标神经网络在该目标硬件平台上的延时(也即该目标神经网络在该目标硬件平台上的估算延时)能够更加接近与该目标神经网络在目标硬件平台上的实际延时。

下面结合附图2对本申请实施例提供的一种神经网络获取方法,该方法由神经网络获取装置100执行,如图2所示,该方法包括:

步骤201:神经网络获取装置100获取延时集合,该延时集合中包括各个子模块在不同硬件平台上的延时。一个子模块在一个硬件平台上的延时为该子模块对输入数据进行处理的时长,也即等于该子模块获取输入数据与该子模块输出数据的时间间隔。其中,该不同硬件平台包括目标硬件平台。该各个子模块包括构建目标神经网络所需的子模块。

为了能够准确估算出整个神经网络在不同硬件平台上的延时,以便后续搜索出可运行在某一种硬件平台的最佳的神经网络,为此,神经网络获取装置100可以进行一些预先的准备操作,其中之一即为确定出构建该神经网络所需要的各个可能的子模块在不同硬件平台上的延时。

下面对本申请实施例提供的一种延时集合的构建方法进行说明,本申请实施例并不限定执行该方法的装置,该方法可以由神经网络获取装置100直接执行,神经网络获取装置100在构建了延时集合后,可以保存该延时集合,该方法也可以由其他装置执行,其他装置在构建了延时集合后,可以将该延时集合发送给神经网络获取装置100,在本申请实施例中仅是以神经网络获取装置100执行该方法为例进行说明,该方法包括如下步骤:

步骤1、神经网络获取装置100确定构建测试神经网络所需的多个子模块。神经网络获取装置100确定的各个子模块是构建测试神经网络所可能需要的子模块,在实际构建测试神经网络的各个子模块时,可能仅需要该多个子模块中的部分子模块。

这里需要说明的是,神经网络获取装置100确定的多个子模块包括后续进行神经网络搜索时搜索的神经网络所可能用到的所有子模块,从神经网络的功能角度来说,该各个子模块构建的测试神经网络所能实现的功能需要覆盖到后续进行神经网络搜索时搜索的神经网络的功能。

举例来说,若后续进行神经网络搜索时既需要搜索出用于人脸识别的神经网络,也需要搜索出用于目标识别的神经网络。神经网络获取装置100确定的多个子模块是构建用于人脸识别、或目标识别的神经网络所需要的所有可能的子模块,通过该多个子模块构建的测试神经网络能够用于人脸识别,也可以用于目标识别。

若后续进行神经网络搜索时既需要搜索出用于语音识别的神经网络,也需要搜索出用于特定语音检测(也即需要检测出包括有特定语音的语音信息)的神经网络。神经网络获取装置100确定的多个子模块是构建用于语音识别、特定语音检测的神经网络所需要的所有可能的子模块,通过该多个子模块构建的测试神经网络能够用于语音识别,也可以用于特定语音检测。

这里以后续需要搜索的神经网络的功能为人脸识别为例,该测试神经网络的基础模块为人脸识别子模块,人脸识别子模块中包括三部分,分别为反转残差卷积模块(inverted residual block conv,MBConv)模块、通道注意力模块(channel attentionmodule,CAM)、空间注意力模块(spatial attention module,SAM)。其中,当MBConv模块采用不同大小的卷积核以及扩张率时,可以形成多个不同的人脸识别子模块,该不同的人脸识别子模块即为不同的子模块。

举例来说,MBConv模块的卷积核的大小的取值集合为{3,5,7},也即可以选择大小为3、5或7的卷积核。MBConv模块的扩张率的大小的取值集合为{3,4,5,6,7},也即可以为MBConv模块配置的扩张率分别为3、4、5、6或7。选择不同大小的卷积核以及配置不同的扩张率,存在15种组合方式,能够形成15个不同的人脸识别子模块,该15个人脸识别子模块即为构建测试神经网络所可能用到的多个子模块。

步骤2、神经网络获取装置100从该多个子模块中随机选出子模块构成测试神经网络。

一个神经网络是由特定数量的网络层构成的,每个网络层中使用的子模块可能不同。在构建一个测试神经网络中,可以先确定该测试神经网络的层数,这里并不限定测试神经网络的层数。神经网络获取装置100可以预先配置该测试神经网络的层数的取值范围,神经网络获取装置100可以从该层数的取值范围中确定一个值,之后构建层数等于该值的测试神经网络,测试神经网络中每个网络层使用的子模块可以是随机选取的。

仍以测试神经网络的功能为人脸识别,神经网络获取装置100预先定义的层数的取值范围为[4,20],也即最小层数和最大层数分别为4和20。从[4,20]确定一个值作为层数,之后从15个人脸识别子模块随机选取人脸识别子模块构成每层的网络层,每层网络层中的人脸识别子模块可以相同。也可以不同,进而构成测试神经网络。

步骤3、神经网络获取装置100测量出该测试神经网络中各个子模块在不同的硬件平台上的延时。

神经网络获取装置100可以与不同的硬件平台连接,该硬件平台可以为边缘数据中心的计算设备、也可以是终端计算设备、还可以是云数据中心中的计算设备,神经网络获取装置100可以与该多个不同的硬件平台进行连接,传输数据。本申请实施例并不限定神经网络获取装置100与不同的硬件平台的连接方式,可以采用有线方式连接,也可以采用无线方式连接。

需要说明的是,在本申请实施例中,一种硬件平台是由特定数量或特定型号的处理单元构成的硬件装置。该处理单元包括但不限于:中央处理器(central processingunit,CPU)、图形处理器(graphics processing unit,GPU)、张量处理单元(tensorprocessing unit,TPU)、神经网络处理器(neural network processing unit,NPU),凡是能够对数据进行处理的单元均可以作为处理单元。

神经网络获取装置100可以预先获取该多个不同的硬件平台中的处理单元中数量以及型号,神经网络获取装置100还可以保存该多个不同的硬件平台的标识信息和/或该多个不同的硬件平台中每个处理单元的标识信息。在神经网络获取装置100在获取了不同子模块在该多个不同的硬件平台上的延时后,可以利用获取的延时、多个不同的硬件平台的标识信息以及该多个不同的硬件平台中各个处理单元的标识信息构建延时集合;也可以利用获取的延时、多个不同的硬件平台的标识信息构建延时集合;还可以获取的延时、各个处理单元的标识信息构建延时集合。延时集合中记录的信息具体可以参见后续说明。

这里并不限定硬件平台的标识信息的具体类型,硬件平台的标识信息可以是该硬件平台的设备号,或序列号,凡是能够唯一标识该硬件平台的信息均适用于本申请实施例。同样的,这里并不限定处理单元的标识信息的具体类型,处理单元的标识信息可以是该处理单元的型号、或序列号,凡是能够唯一标识该处理单元的信息均适用于本申请实施例。

硬件平台由处理单元构成,具备了一定的数据处理能力,对于不同的硬件平台,数据处理能力也不同,例如,对于位于边缘数据中心的计算设备的数据处理能力通常比终端计算设备的数据处理能力高,位于云数据中心中的计算设备的数据处理能力通常比位于边缘数据中心的计算设备器数据处理能力高。而对于不同类型的终端计算设备的数据处理能力也不同。

应需注意的是,硬件平台中的处理单元是决定数据处理能力主要因素,在本申请实施例中对于包括相同型号的处理单元的硬件装置可以认为属于同一种硬件平台,举例来说,存在两个硬件装置,装置1和装置2,这两个装置均包括一个相同型号的GPU,装置1和装置2的区别在于显示器的分辨率不同,装置1和装置2属于同一种硬件平台。换角度说,测试神经网络在不同硬件平台上的延时、以及各个子模块在不同硬件平台上的延时实质上是测试神经网络在不同型号的处理单元上的延时(也即该处理单元执行测试神经网络的延时)、以及各个子模块在不同型号的处理单元上的延时(也即该处理单元执行各个子模块的延时)。

硬件平台的数据处理能力对该硬件平台运行测试神经网络时,该测试神经网络的延时以及其中各个子模块的延时存在一定的影响。例如,对于包括性能较佳的处理单元的硬件平台,数据处理能力较大,在单位时间内能实现的运算较多,在运行该测试神经网络时,能够较快的完成该测试神经网络中涉及的各种运算(如卷积、池化等),能够较快得到该测试神经网络的输出数据,这样,该测试神经网络在该硬件平台上的延时、各个子模块在硬件平台上的延时也就更小。

在本申请实施例中,神经网络获取装置100可以将测试神经网络发送给不同的硬件平台,以请求该不同的硬件平台运行该测试神经网络。进一步的,对于任一硬件平台,神经网络获取装置100还可以从该硬件平台获取该测试神经网络中各个子模块在该硬件平台上的延时,可选的,还可以获取该测试神经网络在该硬件平台上的延时。

例如,神经网络获取装置100可以向该硬件平台发送神经网络测试请求,该神经网络测试请求中包括测试神经网络,该神经网络测试请求用于请求该硬件平台运行该测试神经网络,并测量该测试神经网络中各个子模块在该硬件平台上的运行的延时。

神经网络获取装置100可以通过神经网络测试请求指示该硬件平台中处理单元去执行测试神经网络中涉及的各个运算,获取该测试神经网络的输出数据。例如,神经网络获取装置100可以指定硬件平台中的GPU去执行测试神经网络中涉及的各个运算,对于整个测试神经网络,GPU从获取该测试神经网络的输入数据到获得该测试神经网络的输出数据的时间间隔可以作为该测试神经网络的延时。对于该测试神经网络中的任一子模块,GPU从获取该子模块的输入数据到获得该子模块的输出数据的时间间隔可以作为该子模块在该硬件平台上(利用GPU的场景下)的延时。

该硬件平台在接收到该神经网络测试请求后,可以在该硬件平台上运行该测试神经网络,测量该测试神经网络中各个子模块在该硬件平台上的延时。对于任一子模块在该硬件平台上的延时,等于该子模块获取输入数据与获取输出数据的时间间隔。

可选的,神经网络获取装置100还可以测量该测试神经网络在不同硬件平台上的延时,该测试神经网络在一个硬件平台上的延时为该测试神经网络对输入数据进行处理的时长,也即等于该测试神经网络获取输入数据与该测试神经网络输出数据的时间间隔。

对于任一硬件平台,神经网络获取装置100可以将该测试神经网络发送到该硬件平台上,请求该硬件平台测量出该测试神经网络中各个子模块的延时。测量过程中,该硬件平台可以多次运行该神经网络,以多次测量出该测试神经网络中各个子模块的延时以及该测试神经网络的延时。

例如,硬件平台可以将该测试神经网络运行十次,也即进行十次推理,记录该测试神经网络中各个子模块的延时以及该测试神经网络的延时。硬件平台可以通过取平均值的方式获取该测试神经网络中各个子模块的延时以及该测试神经网络的延时,也可以删除记录的部分该测试神经网络中各个子模块的延时以及该测试神经网络的延时,对剩余的该测试神经网络中各个子模块的延时以及该测试神经网络的延时取平均值获取该测试神经网络中各个子模块的延时以及该测试神经网络的延时。举例来说,硬件平台可以丢掉前5次推理所记录的各个子模块的延时,对于任一子模块,取后五次记录的延时的平均值作为该子模块在该硬件平台上的延时。丢掉前5次记录的测试神经网络的延时,取后五次记录的延时的平均值作为该测试神经网络在该硬件平台上的延时。

这里以硬件平台对记录的测试神经网络中各个子模块的延时以及该测试神经网络的延时进行处理为例进行说明,在实际应用中,硬件平台也可以直接将记录的该测试神经网络中各个子模块的延时以及该测试神经网络的延时发送给神经网络获取装置100,由神经网络获取装置100对硬件平台对记录的测试神经网络中各个子模块的延时以及该测试神经网络的延时进行处理。

需要说明的是,当硬件平台中存在多个相同型号的处理单元,该神经网络测试请求可以指示该硬件平台中一个处理单元去执行测试神经网络中涉及的各个运算,获取该测试神经网络的输出结果,以使该处理单元执行测试神经网络中涉及的各个运算,对于整个测试神经网络,该处理单元从获取该测试神经网络的输入数据到获得该测试神经网络的输出数据的时间间隔可以作为该测试神经网络的延时。该处理单元从获取该测试神经网络的输入数据到获得该测试神经网络的输出数据的时间间隔也可以作为该处理单元执行该测试神经网络的延时。对于该测试神经网络中的任一子模块,该处理单元从获取该子模块的输入数据到获得该子模块的输出数据的时间间隔可以作为该子模块在该硬件平台上(利用该处理单元的场景下)的延时。该处理单元从获取该子模块的输入数据到获得该子模块的输出数据的时间间隔也可以作为该处理单元执行该子模块的延时。

当硬件平台中存在多个不同型号的处理单元,神经网络获取装置100可以发送多个该神经网络测试请求,每个神经网络测试请求指示该硬件平台中一种型号的一个处理单元去执行测试神经网络中涉及的各个运算,获取该测试神经网络的输出数据。以使不同型号的处理单元执行测试神经网络中涉及的各个运算。对于整个测试神经网络,不同型号处理单元从获取该测试神经网络的输入数据到获得该测试神经网络的输出数据的时间间隔均可以作为该测试神经网络在该硬件平台上(利用不同型号的处理单元的场景下)的延时;不同型号处理单元从获取该测试神经网络的输入数据到获得该测试神经网络的输出数据的时间间隔也可以作为不同型号的处理单元执行该测试神经网络的延时。对于该测试神经网络中的任一子模块,不同型号的处理单元从获取该子模块的输入数据到获得该子模块的输出数据的时间间隔可以作为该子模块在该硬件平台上(利用不同型号的处理单元的场景下)的延时;不同型号的处理单元从获取该子模块的输入数据到获得该子模块的输出数据的时间间隔也可以作为不同型号的处理单元执行该子模块的延时。

对于该测试神经网络在该硬件平台上(利用一种型号的处理单元的场景下)的延时和构建该测试神经网络中的各个子模块在该硬件平台上(利用一种型号的处理单元的场景下)的延时,神经网络获取装置100在获取这两种延时后,可以构建下列三种对应关系中的任一种:

第一种、延时、硬件平台、以及硬件平台中处理单元之间的对应关系。该延时可以包括构建该测试神经网络中的各个子模块在该硬件平台上(利用一种型号的处理单元的场景下)的延时,还可以包括该测试神经网络在该硬件平台上(利用一种型号的处理单元的场景下)的延时。

神经网络获取装置100可以建立该延时与该硬件平台的标识信息、以及该种型号的处理单元的标识信息的对应关系。

需要说明的是,在多个硬件平台中包括的处理单元相同(型号与数量均相同)的情况下,神经网络获取装置100可以分别测量每个硬件平台上该测试神经网络的延时以及每个硬件平台上各个子模块的延时。神经网络获取装置100也可以仅测量该测试神经网络在一个硬件平台上的延时以及各个子模块在该硬件平台上的延时,之后,神经网络获取装置100将测量的延时作为其他硬件平台对应的延时,针对每一个硬件平台,建立该延时、该硬件平台、以及该硬件平台中处理单元的对应关系。

第二种、延时、与硬件平台之间的对应关系。该延时包括构建该测试神经网络中的各个子模块在该硬件平台上的延时,还可以包括该测试神经网络在该硬件平台上的延时。

神经网络获取装置100可以建立该延时与该硬件平台的标识信息的对应关系。

当一个硬件平台中存在多种型号的处理单元,针对该硬件平台,神经网络获取装置100能够获取不同型号的处理单元执行该测试神经网络的延时和不同型号的处理单元执行构建该测试神经网络中的各个子模块的延时。

以执行测试神经网络的延时为例,神经网络获取装置100可以建立该多种型号的处理单元执行测试神经网络的延时(延时的数量与处理单元的型号的数量一致,也即为多个延时)、与硬件平台之间的对应关系,也即建立该多个延时与该硬件平台的标识信息的对应关系,表明一个硬件平台可以对应多个延时。

举例来说,针对硬件平台A,神经网络获取装置100获取的多个延时分别为处理单元1执行该测试神经网络的延时1,处理单元2执行该测试神经网络的延时2,处理单元3执行该测试神经网络的延时3;神经网络获取装置100可以建立延时1、延时2、延时3与硬件平台A的标识信息的对应关系,表明该测试神经网络在该硬件平台A上存在三种可能的延时。

神经网络获取装置100也可以先求解该多种型号的处理单元执行测试神经网络的延时的平均值,之后,建立该多个延时的平均值、与硬件平台之间的对应关系,也即建立该多个延时的平均值与该硬件平台的标识信息的对应关系。

举例来说,针对硬件平台A,神经网络获取装置100获取的多个延时分别为处理单元1执行该测试神经网络的延时1,处理单元2执行该测试神经网络的延时2,处理单元3执行该测试神经网络的延时3;神经网络获取装置100可以求解延时1、延时2、延时3的平均值P1,建立P1与硬件平台A的标识信息的对应关系。

对于执行测试神经网络中任一子模块的延时,与执行测试神经网络的延时类似,神经网络获取装置100可以建立每种类型的处理单元执行该子模块延时与硬件平台的标识信息的对应关系,表明一个硬件平台可以对应多个延时。

举例来说,针对硬件平台A,神经网络获取装置100获取的多个延时分别为处理单元1执行该测试神经网络中子模块M的延时4,处理单元2执行该测试神经网络中子模块M的延时5,处理单元3执行该测试神经网络中子模块M的延时6;神经网络获取装置100可以建立延时4、延时5、延时6与硬件平台A的标识信息的对应关系,表明该子模块在该硬件平台A上存在三种可能的延时。

神经网络获取装置100也可以求解该多种类型的处理单元执行该子模块的延时的平均值,之后,建立该多个延时的平均值与该硬件平台的标识信息的对应关系。

举例来说,针对硬件平台A,神经网络获取装置100获取的多个延时分别为处理单元1执行该测试神经网络中子模块M的延时4,处理单元2执行该测试神经网络中子模块M的延时5,处理单元3执行该测试神经网络中子模块M的延时6;神经网络获取装置100可以求解延时4、延时5、延时6的平均值P2,建立P2与硬件平台A的标识信息的对应关系。

需要说明的是,对于包括相同类型和数量的处理单元的多个硬件平台,神经网络获取装置100可以分别测量每个硬件平台上该测试神经网络的延时以及每个硬件平台上各个子模块的延时。神经网络获取装置100也可以仅测量该测试神经网络在一个硬件平台上的延时以及各个子模块在该硬件平台上的延时,之后,神经网络获取装置100将测量的延时作为其他硬件平台对应的延时,建立该延时与每个硬件平台的对应关系。

第三种、延时、与处理单元之间的对应关系。该延时包括该种型号的处理单元执行各个子模块的延时,还可以包括该种型号的处理单元执行该测试神经网络的延时。这种情况下,直接建立延时与处理单元之间的对应关系。

神经网络获取装置100可以建立该延时与该处理单元的标识信息的对应关系。

需要说明的是,对于该测试神经网络在该硬件平台上的延时,可以通过测试神经网络的标识信息标识该延时是该测试神经网络相关的延时,以第一种对应关系为例,实质上是建立了测试神经网络的标识信息、延时的具体值、硬件平台的标识信息以及硬件平台的处理单元的标识信息的对应关系。对应任一子模块在该硬件平台上的延时,可以通过子模块的标识信息标识该延时是该子模块相关的延时,以第一种对应关系为例,实质上是建立了子模块的标识信息、延时的具体值、硬件平台的标识信息以及硬件平台的处理单元的标识信息的对应关系。

步骤4、神经网络获取装置100重复执行步骤2和步骤3,保证该多个子模块中的每个子模块被选中构成测试神经网络的次数大于阈值。

该阈值可以根据实际需求进行设定,例如,为保证每个子模块在不同硬件平台上记录的延时的精度,可以将阈值设置为较大的值;又例如,为了能够较快速的延时集合,可以将阈值设置为较小的值。

步骤5、神经网络获取装置100根据步骤2~步骤4中测试的各个子模块的延时构建延时集合。

通过多次重复步骤2~步骤4,能够构建出不同的测试神经网络,之后将该不同的测试神经网络发送到不同硬件平台上,进而获得每个子模块为不同测试神经网络的组成部分时,该子模块在不同硬件平台上的延时。

理论上,测试神经网络在该硬件平台上的延时等于各个子模块在该硬件平台上的延时之和,但在实际测试中,存在测试神经网络在该硬件平台上的延时小于各个子模块在该硬件平台上的延时之和的情况,造成这种现象与测试神经网络中各层网络层之间存在交叉有关。

对于不存在交叉的两层网络层,后一层网络层需要用前一层网络层在最终的输出数据作为输入数据,也即只有前一层网络层运算结束后,后一层网络层才开始进行运算。对于不存在交叉的网络层构成的测试神经网络,测试神经网络在该硬件平台上的延时等于各个子模块在该硬件平台上的延时之和。

对于存在交叉的两层网络层,前一层网络层在未完全计算出最终的输出数据时,后一层网络层可以利用前一层网络层在运算过程中输出的数据进行运算,这样将导致测试神经网络延时的缩小。

为了使得测试神经网络在该硬件平台上的延时等于各个子模块在该硬件平台上的延时之和,需要对各个子模块在该硬件平台上的延时进行校准,更新各个子模块在该硬件平台上的延时,以达到测试神经网络在该硬件平台上的延时等于校准后的各个子模块在该硬件平台上的延时之和。

需要说明的,在对各个子模块在该硬件平台上的延时进行校准时,可以只对存在交叉的网络层中的子模块在该硬件平台上的延时进行校准,也可以对所有子模块在该硬件平台上的延时进行校准。

这里并不限定对各个子模块在该硬件平台上的延时进行校准的方式,下面对本申请实施例提供的一种对各个子模块在该硬件平台上的延时进行校准的方式进行说明。

首先,神经网络获取装置100可以构建两个曲线,曲线1为由多个测试神经网络在不同硬件平台上实际测量的延时构建的曲线。曲线2为由多个测试神经网络在不同硬件平台上的理论延时构建的曲线,其中一个测试神经网络在一个硬件平台上的理论延时等于构建该测试神经网络中各个子模块在该硬件平台上的延时之和。

由前述说明,由于存在测试神经网络在该硬件平台上的延时小于各个子模块在该硬件平台上的延时之和的情况,曲线1和曲线2并不完全重叠。

神经网络获取装置100可以为曲线2配置一个拟合参数α,利用该拟合参数对曲线1和曲线2进行拟合,使得拟合后的曲线2能够与曲线1重叠,也即:

曲线1=α曲线2

神经网络获取装置100利用拟合参数α对各个子模块在该硬件平台上的延时进行校准,例如可以将拟合参数与各个子模块在该硬件平台上的延时的乘积作为校准后的各个子模块在该硬件平台上的延时。

至此,神经网络获取装置100可以构建延时集合,根据之前神经网络获取装置100所可能构建的三种对应关系,延时集合中记录的对应关系可以为下列任一:

(1)、延时、硬件平台、以及硬件平台的处理单元的对应关系。

这种情况下,神经网络获取装置100在从延时集合中搜索某一个子模块相关的延时时,可以通过匹配硬件平台的标识信息和子模块的标识信息,获取该子模块在硬件平台上的延时;也可以通过匹配处理单元的标识信息和子模块的标识信息,获取处理单元执行该子模块的延时。

在硬件平台中包括多种类型的处理单元的情况下,神经网络获取装置100可以直接通过匹配处理单元的标识信息和子模块的标识信息,获取该种类型的处理单元执行该子模块的延时,也可以先通过匹配硬件平台的标识信息和子模块的标识信息,获取该子模块在硬件平台上的延时,之后在该子模块在硬件平台上的延时中,通过匹配处理单元的标识信息,获取该处理单元执行该子模块的延时。

(2)、延时、硬件平台的对应关系。

这种情况下,神经网络获取装置100在从延时集合中搜索某一个子模块相关的延时时,可以通过匹配硬件平台的标识信息和子模块标识信息,获取该子模块在硬件平台上的延时。

当该子模块在该硬件平台上存在多个延时时,可以随机选取一个延时作为搜索结果,也可以对该多个延时进行平均,获取该延时的平均值,将该延时的平均值作为搜索结果。

(3)、延时、以及处理单元的对应关系。

这种情况下,神经网络获取装置100在从延时集合中搜索某一个子模块相关的延时时,可以通过匹配处理单元的标识信息和子模块的标识信息,获取处理单元执行该子模块的延时。

神经网络获取装置100在获取该延时集合后,可以保存该延时集合,本申请并不限定神经网络获取装置100保存的该延时集合的文件格式,例如该延时集合可以以pickle文件(文件后缀为.pkl)的形式保存在存储器中,也可以以json文件(文件后缀为.json)的形式保存在存储器中。

神经网络获取装置100除了获取该延时集合,还可以更新该延时集合,例如,当产生了一种新的硬件平台(该硬件平台包括在构建延时集合时未涉及的处理单元),神经网络获取装置100可以构建测试神经网络,采用与前述方式类似的方式,获取各个子模块在该新的硬件平台上的延时,将该各个模块在该新的硬件平台上的延时添加到该延时集合中。

另外,根据前述说明该延时集合中包括了各个子模块在不同硬件平台上的延时,其实质可以理解为各个子模块在不同型号的处理单元上的延时,当后续目标硬件平台并非已测试的硬件平台,但该目标硬件平台中包括的处理单元与已测试一个硬件平台的处理单元的型号相同,则可以将延时集合中各个子模块在该硬件平台上的延时作为各个子模块在该目标硬件平台上的延时。

神经网络获取装置100除了预先需要获取该延时集合,为了后续能够搜索出适用于某个硬件平台的神经网络(为方便说明,将最终搜索出的神经网络称为目标神经网络),还需要先确定需要针对哪一个硬件平台(为方便说明,将该硬件平台称为目标神经网络),搜索神经网络(如步骤202)。除了需要确定目标硬件平台之外,神经网络获取装置100还可以确定该目标神经网络的层数需符合的层数范围以及该目标神经网络的目标延时范围(如步骤203~步骤204)。下面分别对确定目标硬件平台、层数范围以及目标延时范围的方式进行说明。

步骤202:神经网络获取装置100确定目标硬件平台。

该目标硬件平台可以由用户指定,如图3A所示,神经网络获取装置100在向用户展示目标硬件平台的输入界面,提示用户输入目标硬件平台。用户可以输入目标硬件平台的名称或能够指示目标硬件平台的信息(如可以是目标硬件平台的编号或设备号等)等唯一能标识该目标硬件平台的标识信息,神经网络获取装置100在检测到用户的输入后,可以确定该目标硬件平台。

可选的,用户还可以输入该目标硬件平台中需要运行该目标测试神经网络的处理单元的标识信息,该处理单元即为目标处理单元。

神经网络获取装置100可以先确定用户输入的目标硬件平台是否属于步骤201中测试神经网络所运行的多个不同的硬件平台,若属于则执行后续步骤,否则提示用户输入的目标硬件平台无效,需重新输入目标硬件平台。神经网络获取装置100也可以先确定用户输入的处理单元的标识信息是否属于步骤201中执行测试神经网络的处理单元的标识信息,若属于则执行后续步骤,否则提示用户输入的处理单元无效,需重新输入目标硬件平台或重新输入处理单元的标识信息。

如图3B所述,神经网络获取装置100也可以向用户展示目标硬件平台的选择界面,提示用户从多个硬件平台中选择目标硬件平台,该多个硬件平台可以为在步骤201中运行测试神经网络的多个不同的硬件平台。用户可以从该多个硬件平台中选择目标硬件平台,神经网络获取装置100在检测到用户的选择操作后,根据用户的选择确定目标硬件平台。

步骤203:神经网络获取装置100确定目标神经网络的层数的层数范围。

通常,运行于一个硬件平台的神经网络,层数过多或过少,均会影响该神经网络的性能。层数过多,会提升神经网络的准确性,但也会增加神经网络的延时。层数过少,虽然能够有效缩减神经网络的延时,但会降低神经网络的准确性。

为此,神经网络获取装置100可以先确定目标神经网络的层数范围,以便后续能够搜索出符合层数范围的目标神经网络。该目标神经网络的层数范围可以规定该目标神经网络的层数的最大值,可选的,该目标神经网络的层数范围也可以规定该目标神经网络的层数的最小值。

该层数范围也可以是由用户指定的,如图4所示,神经网络获取装置100在向用户展示目标神经网络的层数范围的输入界面,提示用户输出目标神经网络的层数范围。用户可以根据自身需求或经验输入目标神经网络的层数范围,神经网络获取装置100在检测到用户的输入后,可以确定该目标神经网络的层数范围。

该层数范围也可以是预先配置,本申请实施例并不限定预先配置该层数范围的方式,例如,对于每一个硬件平台,神经网络获取装置100中均预先配置了一个对应的层数范围,对于硬件平台为边缘硬件设备,由于边缘硬件设备的算力有限,该边缘硬件设备对应的层数范围为较小的范围,对于硬件平台为数据中心的硬件设备,由于数据中心的硬件设备的性能较佳,能够运行层数较大的神经网络,则该数据中心的硬件设备对应的层数范围为较大的范围。当神经网络获取装置100确定了目标硬件平台之后,可以确定预先配置的该目标硬件平台对应的层数范围。又例如,该层数范围是一个固定范围,是默认的,与硬件平台无关。

步骤204:神经网络获取装置100确定目标延时范围。

原则上在针对某一硬件平台获取神经网络时,延时越小越好,但延时较小也会导致神经网络的准确率较低。也就是说,针对目标硬件平台的目标神经网络并不需要延时最小,而是需要该目标神经网络的延时属于一个目标延时范围。

目标延时范围的表征方式有很多,例如,可以通过延时的最大值和最小值指示该目标延时范围,如可以指示目标延时范围为40毫秒到60毫秒。又例如,可以通过目标延时、以及与目标延时的最大差值指示该目标延时范围(适应于估算延时与目标延时的小或大时,所允许的目标延时与估算延时的最大差值相同的场景),如可以指示目标延时范围为与目标延时50毫秒的差值在10毫秒的范围,也即目标延时范围为40毫秒到60毫秒。又例如,可以通过允许与目标延时存在预设百分比的误差指示该目标延时范围,如可以指示允许与目标延时50毫秒存在20%的误差,也即估算延时可以与目标延时50毫秒存在10毫秒(50*20%)的误差,也即目标延时范围为40毫秒到60毫秒。

又例如,可以指示估算延时比目标延时小时,目标延时与估算延时的最大差值以及延时比目标延时大时,估算延时与目标延时的最大差值(适应于延时与目标延时的小或大时,所允许的目标延时与延时的最大差值不相同的场景)。如可以指示目标延时范围为估算延时比目标延时50毫秒大时的最大差值为20毫秒,估算延时比目标延时50毫秒小时的最大差值为20毫秒构成的延时范围,也即目标延时范围为40毫秒到70毫秒。

本申请实施例并不限定神经网络获取装置100确定目标延时范围的方式,例如,该目标延时范围可以是用户所允许的目标神经网络的延时范围,该目标延时范围可以是由用户指定的,如图5A所示,神经网络获取装置100在向用户展示目标延时范围的输入界面,提示用户输入目标延时范围。用户可以根据自身的需求或经验输入目标延时范围,神经网络获取装置100在检测到用户的输入后,可以确定该目标延时范围。

又例如,如图5B所述,神经网络获取装置100也可以向用户展示目标延时,以及与目标延时的最大差值的配置界面,提示用户配置目标延时,以及允许的最大差值。用户可以根据自身的需求或经验输入目标延时以及最大差值,神经网络获取装置100在检测到用户的输入后,可以确定该目标延时范围。

该目标延时范围也可以是预先配置,本申请实施例并不限定预先配置该目标延时范围的方式,例如,对于每一个硬件平台,神经网络获取装置100中均预先配置了一个目标延时范围,对于硬件平台为边缘硬件设备,由于边缘硬件设备的算力有限,为了保证神经网络的准确性,允许该神经网络的延时较大,可以为该边缘硬件设备配置较大的目标延时范围,对于硬件平台为数据中心的硬件设备,由于数据中心的硬件设备的性能较佳,能够运行层数较大的神经网络,该神经网络的延时也相应会比其他硬件设备上小,该数据中心的硬件设备的目标延时范围可以设置为一个相对较小的范围。又例如,该目标延时范围是一个固定范围,是默认的,与硬件平台无关。又例如,该目标延时范围可以是根据在步骤201中不同的测试神经网络在目标硬件平台上的延时确定的。

需要说明的是,本申请实施例并不限定步骤202~204的先后顺序,当该目标延时范围是预先配置的,步骤202可以先于步骤204执行;当层数范围是预先配置的,步骤202可以先于步骤203执行执行。在本申请实施例中,也可以不执行步骤203以及步骤204,直接执行步骤205,神经网络获取装置100基于该延时集合,选择延时最小的神经网络作为目标神经网络,也可以选择准确率最高的神经网络作为目标神经网络,也可以从中选择多个候选神经网络,并将该多个候选神经网络提供给用户,由用户确认目标神经网络。

步骤205:神经网络获取装置100基于该延时集合,针对目标硬件平台搜索获得目标神经网络,该目标神经网络的层数符合层数范围,且该目标神经网络是在该目标硬件平台上运行时,延时属于目标延时范围、运行的准确率最高的神经网络。

神经网络获取装置100在执行步骤205时,可以先构建候选神经网络,之后从候选神经网络中选择一个候选神经网络作为目标神经网络,其中,候选神经网络的层数符合层数范围。

构建该候选神经网络的方式可以与步骤202中构建测试神经网络的方式类似,也即从各个子模块中随机选出子模块构建层数符合层数范围的候选神经网络,也可以采用其他方式构建候选神经网络。

下面以构建一个候选神经网络为例,对本申请实施例提供的一种构建候选神经网络的方式进行说明:

首先,神经网络获取装置100确定层数范围中层数的最大值,该最大值为候选神经网络的最大层数。之后,针对该候选神经网络的任一层,神经网络获取装置100可以确定该层的候选子模块集合,该候选子模块集合中包括一个或多个子模块,还可以包括一个用于指示不构建该层网络层的指示信息。

每一层的候选子模块集合中包括的子模块可以相同,也可以不同。每一层候选子模块集合可以是预先配置的,这里并不限定预先配置每一层候选子模块集合的方式,例如,可以根据常见多个神经网络的构建方式以及每一层的子模块的类型确定每一层候选子模块集合。又例如,也可以是由用户指定的,也即用户可以配置该层的候选子模块集合。

值得注意的是,每一层的候选子模块集合中允许包括一个指示不构建该层网络层的指示信息,当确定候选神经网络中一层网络层中的子模块时,若从该层的候选子模块集合中选择了该指示信息,则表明不需要构建该层网络层。指示信息的存在使得构建的候选神经网络的层数能够小于候选神经网络的最大层数。

在确定了每一层的候选子模块集合后,神经网络获取装置100在构建一个候选神经网络时,可以从每一层的候选子模块集合中随机选择一个子模块(也可以随机选择到指示信息,这种情况下表示不构建该层网络层),构建候选神经网络。

神经网络获取装置100构造了候选神经网络之后,可以从该多个候选神经网络中选择目标神经网络。由于该目标神经网络需要满足延时属于目标延时范围和/或准确率最高这两个条件,神经网络获取装置100在构建了候选神经网络之后,可以确定每个候选神经网络的准确率以及每个候选神经网络的延时。

确定候选神经网络的准确率的方式有许多种,下面以候选神经网络用于实现人脸识别为例对确定候选神经网络的准确率的方式进行说明:

神经网络获取装置100可以设置训练集和测试集,例如,神经网络获取装置100可以将CASIA标准数据集作为训练集,LFW、Age-DB、CFP-FP三个数据集的合集作为测试集。神经网络获取装置100利用训练集对候选神经网络进行训练,调整该候选神经网络中各个网络层的权重,直至该候选神经网络的损失函数收敛。之后,利用测试集对训练好的候选神经网络进行测试,测试候选神经网络的性能,确定该候选神经网络的准确率,该准确率可以等于候选神经网络基于该测试集,准确进行人脸识别的次数与人脸识别的总次数比值,也可以是根据该候选神经网络的损失函数(loss)的值确定的。

神经网络获取装置100在计算候选神经网络的延时时,可以确定构成该候选神经网络的各个子模块,之后从延时集合中获取每个子模块在该目标硬件平台上的延时,对各个子模块在该目标硬件平台上的延时求和,和值即为该候选神经网络的延时。

神经网络获取装置100从延时集合中获取每个子模块在该目标硬件平台上的延时时,对于延时集合中包括的对应关系不同,获取方式也不同,下面分别进行说明:

(1)、延时集合中记录了延时、硬件平台、以及硬件平台的处理单元的对应关系。

神经网络获取装置100可以先在延时集合中记录的各个硬件平台的标识信息中搜索该目标硬件平台对应的各个延时,之后再根据各个子模块的标识信息从该目标硬件平台对应的各个延时中获取每个子模块在该目标硬件平台上的延时。

若目标硬件平台中存在多个不同型号的处理单元,在用户输入目标处理单元的标识信息的情况下,神经网络装置100可以先根据该目标硬件平台的标识信息以及目标处理单元的标识信息从延时集合搜索该目标硬件平台中目标处理单元对应的各个延时,之后,再根据各个子模块的标识信息从该目标硬件平台中目标处理单元对应的各个延时中获取每个子模块在该目标硬件平台(利用该目标处理单元的场景下)上的延时。

神经网络装置100也可以直接根据目标处理单元的标识信息以及各个子模块的标识信息搜索出该目标处理单元执行每个子模块的延时,这些延时之和等于该候选神经网络的延时。

若目标硬件平台中存在多个不同型号的处理单元,在用户未输入目标处理单元的标识信息的情况下,神经网络获取装置100可以通过如下两种方式计算候选神经网络的延时。

方式一、神经网络获取装置100计算候选神经网络的一个延时。

神经网络获取装置100根据该目标硬件平台的标识信息以及各个子模块的标识信息从延时集合搜索每个子模块在该目标硬件平台上的多个延时,其中,一个延时为一种类型的处理单元执行该子模块的延时。针对任一子模块在该目标硬件平台上的多个延时,神经网络获取装置100可以选取一个延时作为该子模块在该目标硬件平台上的延时(这里并不限定选取延时的方式,例如可以随机选取,也可以根据为该目标硬件平台预先配置的默认处理单元从中选取延时,该默认处理单元的标识信息保存在该神经网络获取装置100中),之后,对各个子模块在该目标硬件平台上的延时求和获得该候选神经网络的延时。针对任一子模块在该目标硬件平台上的多个延时,神经网络获取装置100也可以对该多个延时求取平均值,将平均值延时作为该子模块在该目标硬件平台上的延时,之后,将各个子模块在该目标硬件平台上的延时求和获得该候选神经网络的延时。

方式二、神经网络获取装置100计算候选神经网络的多个延时,每个延时为一种型号的处理单元对应的延时,一个延时可以理解为基于延时集合计算的该种型号的处理单元在执行该候选神经网络的延时。

针对其中任一种型号的处理单元,神经网络获取装置100可以根据各个子模块的标识信息、该种型号的处理单元的标识信息以及目标硬件平台的标识信息从延时集合确定每个子模块在该目标硬件平台(利用该种型号的处理单元的场景下)上的延时,通过求和获得候选神经网络的一个延时。

针对任一个型号的处理单元,神经网络获取装置100可以根据每个候选神经网络的多个延时中该种类型的处理单元对应的延时以及每个候选神经网络的准确率确定一个目标神经网络。

由于该目标硬件平台中包括多种类型的处理单元,神经网络获取装置100可以确定多个目标神经网络,每个目标神经网络与一种类型的处理单元对应,神经网络获取装置100可以向用户展示该多个目标神经网络(如展示该目标神经网络的各个子模块、层数等相关信息),并提供每个目标神经网络标识对应的处理单元的标识信息,该处理单元的标识信息可以是从延时集合中获取的。

(2)、延时集合中记录了延时、硬件平台的对应关系。

神经网络获取装置100可以先在延时集合中记录的各个硬件平台的标识信息中搜索该目标硬件平台对应的各个延时,之后再根据各个子模块的标识信息从该目标硬件平台对应的各个延时中获取每个子模块在该目标硬件平台上的延时,通过求和获取候选神经网络的延时。

需要说明的是,当目标硬件平台中存在多个不同型号的处理单元,对于执行任一子模块的延时,若延时集合中目标硬件平台对应多个执行该子模块的延时(该种情况可以参见前述对延时、与硬件平台之间的对应关系的相关描述)。神经网络获取装置100可以从中选择一个延时作为该子模块在该目标硬件平台上的延时。神经网络获取装置100可以对多个执行该子模块的延时求取平均值,将该平均值作为该子模块在该目标硬件平台上的延时。

(3)、延时集合中记录了延时、处理单元的对应关系。

神经网络获取装置100可以先在延时集合中记录的各个处理单元的标识信息中搜索该目标处理单元对应的各个延时,之后再根据各个子模块的标识信息从该目标处理单元对应的各个延时中获取目标处理单元执行每个子模块的延时,通过求和获取候选神经网络的延时。

需要说明的是,在本申请实施例中,由神经网络获取装置100计算的候选神经网络在目标硬件平台的延时是利用延时集合计算的,而非该候选神经网络在目标硬件平台上的实际延时,是该候选神经网络在该目标硬件平台的估算延时。这里神经网络获取装置100计算的候选神经网络在目标硬件平台上的延时即为该候选神经网络在目标硬件平台上的估算延时。

神经网络获取装置100在确定每个候选神经网络的准确率以及每个候选神经网络的延时后,可以从各个候选神经网络中选择准确率最大,且延时属于目标延时范围的候选神经网络,该候选神经网络即为目标神经网络。

神经网络获取装置100也可以通过设置损失函数L,根据损失函数L,从该多个候选神经网络中选择目标神经网络。

神经网络获取装置100设置的损失函数L如下:

其中,α、ref.val为常数,Loss可以该候选神经网络的损失函数的值,也可以是根据候选神经网络的准确率的倒数确定的值,Latency为候选神经网络的延时,β为超参数,β是根据目标延时范围确定的,β和目标延时范围的中间值(也即位于目标延时范围中间位置的延时的值)之间存在线性关系,在确定了目标延时范围的情况下,根据β和目标延时范围的中间值之间的线性关系,可以确定β。

这里需要说明的是,β和目标延时范围的中间值之间的线性关系可以为非严格的线性关系,也即在一定的允许范围内,β和目标延时范围的中间值之间的关系可以近似与线性关系。

如图6所示,展示了目标神经网络在三种不同的测试集中,LFW、Age-DB以及CFP-FP基于不同的β下的准确率,分别对应圆形图标的线型、方形图标的线型以及三角图标的线型,以及β和目标延时范围中位于中间位置的延时的值之间关系(五角图标的线型),五角图标的线型可以近似看做为线性关系。

在人脸识别业务场景中,如图7所示,以MobileFaceNet运行在Jetson(一种边缘设备)上的延时为22毫秒(ms),ArcFaceResNet50、ArcFaceResNet101运行在Jetson上的延时分别为29ms、52ms。而采用本申请实施例的方式,在Jetson上搜索的目标神经网络的延时为15ms,相比MobileFaceNet的运行速度提升了30%以上,显然目标神经网络的数据处理效率更高。

在人脸识别业务场景中,如图8所示,基于Jetson搜索得到的目标神经网络在延时降低的同时,准确率也维持在较高的水准。在LFW,Age-DB,CFP-FP三个测试数据集上的准确率依次达到了99.18%,92.1%,94.9%。MobileFaceNet、ArcFaceResNet50、ArcFaceResNet101在LFW,Age-DB,CFP-FP三个测试数据集上的准确率可参见图8。

在人脸识别业务场景中,如图9所示,MobileFaceNet运行在某一终端设备上的延时为870ms,ArcFaceResNet50、ArcFaceResNet101运行在该终端设备上的延时分别为4916ms、8926ms,而采用本申请实施例提供的方式,在该终端设备的目标神经网络的延时为767ms,目标神经网络相比MobileFaceNet的运行速度提升了10%以上,显然目标神经网络的数据处理效率更高。

在人脸识别业务场景中,如图10所示,基于该终端设备搜索得到的目标神经网络在延时降低的同时,准确率也维持在较高的水准。在LFW,Age-DB,CFP-FP三个测试数据集上的准确率依次达到了99.22%,92.67%,95.63。MobileFaceNet、ArcFaceResNet50、ArcFaceResNet101在LFW,Age-DB,CFP-FP三个测试数据集上的准确率可参见图10。

如图11所示,为采用本申请实施例提供的神经网络获取方法获取目标神经网络的速度与现有获取目标神经网络的速度倍数示意图,这里以现有获取目标神经网络的方法为硬件在环的方式,即在搜索过程中将目标神经网络实时部署到目标硬件平台上运行并获取延迟,然后返回延迟进行评估。其中,纵坐标为采用本申请实施例提供的神经网络获取方法获取不同目标神经网络的速度与现有获取目标神经网络的速度的倍数,横坐标为目标神经网络的复杂度,目标神经网络的复杂度可以根据该目标神经网络的实际延时确定,通常,对于同一硬件平台,目标神经网络复杂度越高,该目标神经网络在该硬件平台上的实际延时也越大。

从图11中可以看出,对于任一复杂度的目标神经网络,采用本申请实施例提供的神经网络获取方法获取目标神经网络的速度比现有获取目标神经网络的速度要快,本申请实施例提供的神经网络获取方法获取目标神经网络的速度比现有获取目标神经网络的速度的倍数接近300。

在上述说明中,以神经网络获取装置100获取了目标硬件平台后,为目标硬件平台确定目标神经网络为例进行说明的。在一种可能的应用场景中,用户也可以只输入目标处理单元的标识信息,也就是说,用户不选择或者不输入目标硬件平台,而只输入目标处理单元的标识信息。这种情况下,神经网络获取装置100可以为目标处理单元确定目标神经网络。神经网络获取装置100为目标处理单元确定目标神经网络的方式与神经网络获取装置100为目标硬件平台确定目标神经网络的方式类似,其中,神经网络获取装置100在基于延时集合确定候选神经网络的估算延时时,可以根据目标处理单元的标识信息从延时集合中确定目标处理单元执行构成该候选神经网络的各个子模块的延时(这里是当延时集合中记录有延时与处理单元的对应关系的情况下),对这些延时求和获取该候选神经网络的估算延时,之后再从该候选神经网络中确定目标神经网络。

基于与方法实施例同一发明构思,本申请实施例还提供了一种神经网络获取装置,用于执行上述方法实施例中神经网络获取方法执行的方法,相关特征可参见上述方法实施例,此处不再赘述,如图12所示,该装置包括确定模块1201和获取模块1202:

确定模块1201,用于确定目标硬件平台。

获取模块1202,用于为目标硬件平台获取目标神经网络,目标神经网络在目标硬件平台上的估算延时与目标神经网络在目标硬件平台上的实际延时的差值位于标准差区间内,标准差区间是基于目标神经网络在目标硬件平台上多次测量的实际延时的分布确定的。

作为一种可能的实施方式,获取模块1202在为目标硬件平台获取目标神经网络,可以先获取延时集合,延时集合中包括多个子模块在不同硬件平台上的延时;之后,基于延时集合,为目标硬件平台获取目标神经网络,目标神经网络是由多个子模块中的部分或全部构成的,估算延时是根据延时集合确定的。

作为一种可能的实施方式,估算延时等于延时集合中构成目标神经网络的各个子模块在目标硬件平台的延时之和。

作为一种可能的实施方式,目标神经网络的层数符合层数范围,且估算延时处于目标延时范围内准确率最高的神经网络,目标延时范围是根据用户的输入确认的。

作为一种可能的实施方式,确定模块1201在确定目标硬件平台时,可以提示用户输入或选择目标硬件平台;在检测到用户的输入或选择后,根据用户的输入或选择确定目标硬件平台。

作为一种可能的实施方式,获取模块1202在获取延时集合时,可以从多个子模块中随机选出子模块构成测试神经网络;之后,将测试神经网络运行到不同的硬件平台上,测量出测试神经网络中各个子模块在不同的硬件平台的延时;获取模块1202可以利用测量出的测试神经网络中各个子模块在不同的硬件平台的延时,构建延时集合;也可以先对测量出的测试神经网络中各个子模块在不同的硬件平台的延时进行校准,利用校准后的测试神经网络中各个子模块在不同的硬件平台的延时构建延时集合。

作为一种可能的实施方式,针对不同硬件平台中的任一硬件平台,延时集合记录了下列的部分或全部:

每个子模块在硬件平台上的延时、以及硬件平台的标识信息的对应关系;

每个子模块在硬件平台上的延时、以及硬件平台中处理单元的标识信息的对应关系。

作为一种可能的实施方式,针对不同硬件平台中的任一硬件平台,若硬件平台包括多个相同型号的处理单元,子模块在硬件平台上的延时等于硬件平台中一个处理单元执行子模块所涉及的运算所消耗的时间。

若硬件平台包括多个不同型号的处理单元,子模块在硬件平台上的一个延时为一种型号的处理单元执行子模块的延时,该一种型号的处理单元执行子模块的延时等于硬件平台中该一种型号的处理单元执行子模块所涉及的运算所消耗的时间。

作为一种可能的实施方式,若目标硬件平台包括多个相同型号的处理单元,估算延时等于延时集合中、构成目标神经网络的各个子模块在目标硬件平台的延时之和。

作为一种可能的实施方式,若目标硬件平台包括多个不同型号的处理单元,确定模块1201还可以根据用户的输入确定目标硬件平台中的目标处理单元;此时,估算延时等于延时集合中、目标处理单元执行构成目标神经网络的每个子模块的延时之和。

作为一种可能的实施方式,估算延时等于延时集合中构成目标神经网络的各个子模块在候选硬件平台的延时之和,其中,候选硬件平台是不同硬件平台中与目标神经网络包括相同型号处理单元的硬件平台。

作为一种可能的实施方式,标准差空间为{-0.6,0.6}。

需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

以上所述,仅为本发明的具体实施方式。熟悉本技术领域的技术人员根据本发明提供的具体实施方式,可想到变化或替换,都应涵盖在本发明的保护范围之内。

相关技术
  • 一种基于神经网络模型的目标违建点获取方法和获取系统
  • 一种用于获取神经网络架构的方法及装置
技术分类

06120112455950