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

基于Web浏览器的深度神经网络推理度量方法和装置

文献发布时间:2024-04-18 19:56:50


基于Web浏览器的深度神经网络推理度量方法和装置

技术领域

本发明涉及软件技术领域,特别是涉及一种基于Web浏览器的深度神经网络推理度量方法和装置。

背景技术

近年来,深度学习技术得到了长足的进步,并得到了广泛的应用。为了方便开发者利用深度神经网络来进行模型推理,深度学习推理框架也在蓬勃地发展与进步。当前,在Web(World Wide Web,万维网)中出现了面向Web平台的深度神经网络推理框架。这些框架为Web应用在Web浏览器中推理深度神经网络铺平了道路。当前在实践中已经有许多Web应用在浏览器内利用深度学习框架来执行深度神经网络推理任务。

如何快速度量Web浏览器的深度神经网络推理任务所需的执行时间,并基于此对深度神经网络推理任务进行调度,以此提高基于Web浏览器的深度神经网络推理任务的吞吐率,是一个值得研究的问题。

发明内容

鉴于上述问题,本发明实施例提供了一种基于Web浏览器的深度神经网络推理度量方法和装置,以便克服上述问题或者至少部分地解决上述问题。

本发明实施例的第一方面,提供了一种基于Web浏览器的深度神经网络推理度量方法,所述方法包括:

获取参考深度神经网络推理任务,所述参考深度神经网络推理任务包括多个算子;

采用二分度量法,确定每种调度方式对应的所述参考深度神经网络推理任务的最佳切分点,其中,在所述最佳切分点之前的算子在前序运行环境中执行,在所述最佳切分点之后的算子在后序运行环境中执行,所述每种调度方式包括:将WebAssembly运行环境和GPU加速的运行环境分别确定为所述前序运行环境和所述后序运行环境中不同的一种;

根据所述每种调度方式对应的所述最佳切分点,获取所述每种调度方式对应的周期时间;

根据所述每种调度方式对应的周期时间,确定目标调度方式;

根据所述目标调度方式以及所述目标调度方式对应的所述最佳切分点,对相邻的深度神经网络推理任务进行切分和调度,使所述相邻的深度神经网络推理任务并行执行。

可选地,所述采用二分度量法,确定每种调度方式对应的所述参考深度神经网络推理任务的最佳切分点,包括:

在所述每种调度方式中,将所述参考深度神经网络推理任务中位于中间位置的算子,确定为当次切分点,并执行以下步骤:

根据所述当次切分点,对所述参考深度神经网络推理任务进行切分,得到第一前序子任务和第一后序子任务;

获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,以及获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间;

根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围;

在所述取值范围包括多个算子的情况下,将所述取值范围中位于中间的算子确定为所述当次切分点,并重复上述步骤,以对所述取值范围进行缩小,直到所述取值范围内包括一个算子,根据该算子确定该种调度方式中的所述最佳切分点。

可选地,所述根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围,包括:

获取所述第一前序子任务中的最后一个算子的传输时间;

在所述第一前序执行时间与所述第一前序子任务中的最后一个算子的传输时间的差值,小于或等于所述第一后序执行时间的情况下,将大于所述当次切分点的取值范围确定为所述最佳切分点的取值范围;

在所述第一前序执行时间与所述第一前序子任务中的最后一个算子的传输时间的差值,大于或等于所述第一后序执行时间的情况下,将小于所述当次切分点的取值范围确定为所述最佳切分点的取值范围。

可选地,在该种调度方式的前序运行环境为所述GPU加速的运行环境的情况下,所述获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,包括:

将所述参考深度神经网络推理任务中的第一个算子的输入从内存传输到图形处理器,并获取将所述第一个算子的输入从所述内存传输到所述图形处理器的第一传输时间;

在所述前序运行环境中执行所述第一前序子任务,并在执行完毕之后,进行WebGL同步,得到所述第一前序子任务的执行时间;

将所述第一前序子任务的执行结果从所述图形处理器传输到所述内存中,并获取所述第一前序子任务的执行结果的第二传输时间;

根据所述第一传输时间、所述第一前序子任务的执行时间和所述第二传输时间,确定所述第一前序执行时间。

可选地,在该种调度方式的后序运行环境为所述GPU加速的运行环境的情况下,所述获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间,包括:

将所述第一前序子任务中的最后一个算子的输出从内存传输到图形处理器,并获取将所述最后一个算子的输出从所述内存传输到所述图形处理器的第三传输时间;

在所述后序运行环境中执行所述第一后序子任务,并在执行完毕之后,进行WebGL同步,得到所述第一后序子任务的执行时间;

将所述第一后序子任务的执行结果从所述图形处理器传输到所述内存中,并获取所述第一后序子任务的执行结果的第四传输时间;

根据所述第三传输时间、所述第一后序子任务的执行时间和所述第四传输时间,确定所述第一后序执行时间。

可选地,所述方法还包括:

获取所述参考深度神经网络推理任务中的每个算子在所述WebAssembly运行环境中的运行时间;

在该种调度方式的前序运行环境为所述WebAssembly运行环境的情况下,所述获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,包括:

根据所述第一前序子任务包括的多个算子各自在所述WebAssembly运行环境中的运行时间,确定所述第一前序执行时间;

在该种调度方式的后序运行环境为所述WebAssembly运行环境的情况下,所述获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间,包括:

根据所述第一后序子任务包括的多个算子各自在所述WebAssembly运行环境中的运行时间,确定所述第一后序执行时间。

可选地,所述根据所述每种调度方式对应的所述最佳切分点,获取所述每种调度方式对应的周期时间,包括:

根据所述每种调度方式对应的所述最佳切分点,对所述参考深度神经网络推理任务进行切分,得到所述每种调度方式对应的第二前序子任务和第二后序子任务;

获取所述每种调度方式对应的第二前序子任务的执行时间,以及获取所述每种调度方式对应的第二后序子任务的执行时间;

将所述每种调度方式对应的所述第二前序子任务的执行时间和所述第二后序子任务的执行时间中较长的时间,确定为所述每种调度方式对应的周期时间。

可选地,所述根据所述每种调度方式对应的周期时间,确定目标调度方式,包括:

将所述每种调度方式对应的周期时间中,较短的时间对应的调度方式,确定为所述目标调度方式;

所述根据所述目标调度方式以及所述目标调度方式对应的所述最佳切分点,对相邻的深度神经网络推理任务进行切分和调度,包括:

根据所述最佳切分点,将所述相邻的深度神经网络推理任务分别切分为目标前序子任务和目标后序子任务;

按照所述目标调度方式,确定目标前序运行环境和目标后序运行环境;

将两个所述目标前序子任务先后调度到所述目标前序环境中进行执行,以及将两个所述目标后序子任务先后调度到所述目标后序环境中进行执行,其中一个深度神经网络推理任务的所述目标前序子任务和另一深度神经网络推理任务的所述目标后序子任务并行执行。

本发明实施例的第二方面,提供了一种基于Web浏览器的深度神经网络推理度量装置,所述装置包括:

任务获取模块,用于获取参考深度神经网络推理任务,所述参考深度神经网络推理任务包括多个算子;

切分点确定模块,用于采用二分度量法,确定每种调度方式对应的所述参考深度神经网络推理任务的最佳切分点,其中,在所述最佳切分点之前的算子在前序运行环境中执行,在所述最佳切分点之后的算子在后序运行环境中执行,所述每种调度方式包括:将WebAssembly运行环境和GPU加速的运行环境分别确定为所述前序运行环境和所述后序运行环境中不同的一种;

时间获取模块,用于根据所述每种调度方式对应的所述最佳切分点,获取所述每种调度方式对应的周期时间;

调度确定模块,用于根据所述每种调度方式对应的周期时间,确定目标调度方式;

任务调度模块,用于根据所述目标调度方式以及所述目标调度方式对应的所述最佳切分点,对相邻的深度神经网络推理任务进行切分和调度,使所述相邻的深度神经网络推理任务并行执行。

可选地,所述切分点确定模块具体用于执行:

在所述每种调度方式中,将所述参考深度神经网络推理任务中位于中间位置的算子,确定为当次切分点,并执行以下步骤:

根据所述当次切分点,对所述参考深度神经网络推理任务进行切分,得到第一前序子任务和第一后序子任务;

获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,以及获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间;

根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围;

在所述取值范围包括多个算子的情况下,将所述取值范围中位于中间的算子确定为所述当次切分点,并重复上述步骤,以对所述取值范围进行缩小,直到所述取值范围内包括一个算子,根据该算子确定该种调度方式中的所述最佳切分点。

本发明实施例的第三方面,提供了一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面所述的基于Web浏览器的深度神经网络推理度量方法。

本发明实施例的第四方面,提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如第一方面所述的基于Web浏览器的深度神经网络推理度量方法。

本发明实施例包括以下优点:

本实施例中,具有不同的调度方式,利用二分度量法,可以快速确定每种调度方式对应的参考深度神经网络推理任务的最佳切分点。进而根据每种调度方式对应的最佳切分点,获取每种调度方式对应的周期时间。根据每种调度方式对应的周期时间,可以确定目标调度方式,进而根据目标调度方式以及目标调度方式对应的最佳切分点,对相邻的深度神经网络推理任务进行切分和调度,使相邻的深度神经网络推理任务并行执行。如此,通过二分度量法可以快速确定每种调度方式对应的参考深度神经网络推理任务的最佳切分点,基于此可以对相邻的深度神经网络推理任务进行切分和调度,从而使相邻的深度神经网络推理任务在异构运行环境(WebAssembly运行环境和GPU加速的运行环境)中并行执行,高效率地实现了对深度神经网络推理任务的吞吐率的提高。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例中一种基于Web浏览器的深度神经网络推理度量方法的步骤流程图;

图2是本发明实施例中基于Web浏览器的深度神经网络推理度量技术框架的结构图;

图3是本发明实施例中一种基于Web浏览器的深度神经网络推理度量装置的结构示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

在浏览器内存在着的多种异构的运行环境,不同运行环境分别对应着用户设备中的异构计算资源。例如,浏览器提供的WebAssembly(浏览器向网页提供的执行二进制程序的编程接口)运行环境,对应着用户设备中的中央处理器。浏览器提供的GPU(图形处理器)加速的运行环境,则基于用户设备中的图形处理器硬件。其中,GPU加速的运行环境包括WebGL(浏览器向网页提供的图形处理单元的编程接口)运行环境和WebGPU(一种利用GPU的编程接口)运行环境。在GPU加速的运行环境中,网页能够执行GPU的计算任务;在WebAssembly运行环境中,网页能够执行二进制程序,提高计算任务处理速度。

相关技术中,Web应用在深度神经网络推理时只能选择一个特定的后端,因此在推理过程中用户设备上的其他计算资源会被浪费,没有高效地利用浏览器内多种异构的运行环境。例如,如果Web应用选择使用GPU加速的运行环境作为深度神经网络推理的后端,那么WebAssembly运行环境中的计算资源则在深度神经网络推理中被浪费。此外,仅仅在一个运行环境中,执行一个完整的深度神经网络推理任务效率较低。

为了解决上述技术问题,提高深度神经网络推理任务的吞吐率,本发明实施例提出了一种基于Web浏览器的深度神经网络推理度量方法,该方法通过将每个深度神经网络推理任务切分为两个子任务,实现相邻的两次深度神经网络推理任务通过流水线的方式在浏览器异构的运行环境中并行执行,以提高深度神经网络推理的吞吐率。该方法中,为了更大程度地提高深度神经网络推理的吞吐率,需要平衡两个子任务的执行时间。子任务的执行时间与切分点有关,相关技术中通过将每个算子划分到不同的子任务中,然后判断该种切分方式是否为最佳切分方式,此种方法耗时较长、效率较低。本发明实施例采用二分度量法,可以快速找到最佳切分点,进而高效率地提高深度神经网络推理任务的吞吐率。

参照图1所示,示出了本发明实施例中一种基于Web浏览器的深度神经网络推理度量方法的步骤流程图,如图1所示,该基于Web浏览器的深度神经网络推理度量方法具体可以包括步骤S11~步骤S15。

步骤S11:获取参考深度神经网络推理任务,所述参考深度神经网络推理任务包括多个算子。

参考深度神经网络推理任务与后文所述的相邻的深度神经网络推理任务,是具有相同算子的深度神经网络推理任务。相邻的深度神经网络推理任务可以是任意深度神经网络推理任务。

步骤S12:采用二分度量法,确定每种调度方式对应的所述参考深度神经网络推理任务的最佳切分点。

其中,在所述最佳切分点之前的算子在前序运行环境中执行,在所述最佳切分点之后的算子在后序运行环境中执行,所述每种调度方式包括:将WebAssembly运行环境和GPU加速的运行环境分别确定为所述前序运行环境和所述后序运行环境中不同的一种。

采用二分度量法,每次根据最佳切分点所在的取值范围的中间点,对参考深度神经网络推理任务进行切分,从而将参考深度神经网络推理任务切分为前序子任务和后序子任务;根据前序子任务和后序子任务各自在对应的运行环境中的执行时间,判断当次切分点是否为最佳切分点。在当次切分点不为最佳切分点的情况下,根据前序子任务和后序子任务各自在对应的运行环境中的执行时间,对最佳切分点所在的取值范围进行缩小,并根据缩小后的取值范围的中间点,对参考深度神经网络推理任务进行切分。重复上述步骤,直到确定最佳切分点。

在浏览器提供的异构运行环境包括WebAssembly运行环境和GPU加速的运行环境的情况下,调度方式可以包括以下两种:一种是GPU加速的运行环境为前序运行环境,且WebAssembly运行环境为后序运行环境;另一种是WebAssembly运行环境为前序运行环境,且GPU加速的运行环境为后序运行环境。

前序运行环境中用于执行前序子任务,后序运行环境中用于执行后序子任务。相同的子任务在不同的运行环境中的执行时间可能不同,因此,在确定参考深度神经网络推理任务的最佳切分点时,需要确定每种调度方式对应的参考深度神经网络推理任务的最佳切分点。后文将详述采用二分度量法确定每种调度方式对应的参考深度神经网络推理任务的最佳切分点的方法。

步骤S13:根据所述每种调度方式对应的所述最佳切分点,获取所述每种调度方式对应的周期时间。

在确定了每种调度方式对应的最佳切分点之后,则可以按照每种调度方式对应的最佳切分点,对参考深度神经网络推理任务进行切分,得到参考深度神经网络推理任务在每种调度方式下对应的第二前序子任务和第二后序子任务。

获取每种调度方式对应的第二前序子任务的执行时间,以及获取每种调度方式对应的第二后序子任务的执行时间。将每种调度方式对应的第二前序子任务的执行时间和第二后序子任务的执行时间中较长的时间,确定为每种调度方式对应的周期时间。

例如,在调度方式为GPU加速的运行环境为前序运行环境,且WebAssembly运行环境为后序运行环境的情况下,按照该种调度方式对应的最佳切分点,对参考深度神经网络推理任务进行切分,得到该种调度方式下对应的第二前序子任务和第二后序子任务。将第二前序子任务调度到GPU加速的运行环境中进行执行,并获取执行时间,以及将第二后序子任务调度到WebAssembly运行环境中进行执行,并获取执行时间。在第二前序子任务的执行时间长于第二后序子任务的执行时间的情况下,则将第二前序子任务的执行时间确定为该种调度方式对应的周期时间;在第二前序子任务的执行时间短于第二后序子任务的执行时间的情况下,则将第二后序子任务的执行时间确定为该种调度方式对应的周期时间。

在调度方式为WebAssembly运行环境为前序运行环境,且GPU加速的运行环境为后序运行环境的情况下,按照该种调度方式对应的最佳切分点,对参考深度神经网络推理任务进行切分,得到该种调度方式下对应的第二前序子任务和第二后序子任务。将第二前序子任务调度到WebAssembly运行环境中进行执行,并获取执行时间,以及将第二后序子任务调度到GPU加速的运行环境中进行执行,并获取执行时间。在第二前序子任务的执行时间长于第二后序子任务的执行时间的情况下,则将第二前序子任务的执行时间确定为该种调度方式对应的周期时间;在第二前序子任务的执行时间短于第二后序子任务的执行时间的情况下,则将第二后序子任务的执行时间确定为该种调度方式对应的周期时间。

步骤S14:根据所述每种调度方式对应的周期时间,确定目标调度方式。

缩短周期时间,可以提高深度神经网络推理任务的吞吐率。因此,将每种调度方式对应的周期时间中,较短的时间对应的调度方式,确定为目标调度方式。例如,在第一种调度方式对应的周期时间短于第二种调度方式对应的周期时间的情况下,则将第一种调度方式确定为目标调度方式;反之则将第二种调度方式确定为目标调度方式。

步骤S15:根据所述目标调度方式以及所述目标调度方式对应的所述最佳切分点,对相邻的深度神经网络推理任务进行切分和调度,使所述相邻的深度神经网络推理任务并行执行。

根据目标调度方式,可以确定目标前序运行环境和目标后序运行环境。

在确定了目标调度方式之后,则可以根据目标调度方式对应的最佳切分点,分别对每个深度神经网络推理任务进行切分,得到每个深度神经网络推理任务的目标前序子任务和目标后序子任务。

针对相邻的任意两个深度神经网络推理任务,将两个深度神经网络推理任务各自对应的目标前序子任务先后调度到目标前序环境中进行执行,以及将两个深度神经网络推理任务各自对应的目标后序子任务先后调度到目标后序环境中进行执行,其中一个深度神经网络推理任务的目标前序子任务和另一深度神经网络推理任务的目标后序子任务并行执行。

举例来说,若第一深度神经网络推理任务为第二深度神经网络推理任务的前一个推理任务,第二深度神经网络推理任务为第三深度神经网络推理任务的前一个推理任务,则可以先将第一深度神经网络推理任务的目标前序子任务调度到前序运行环境中进行执行;在第一深度神经网络推理任务的目标前序子任务执行完毕后,将第一深度神经网络推理任务的目标后序子任务调度到后序运行环境中进行执行,同时将第二深度神经网络推理任务的目标前序子任务调度到前序运行环境中进行执行,以实现第一深度神经网络推理任务的目标后序子任务和第二深度神经网络推理任务的目标前序子任务的并行推理。在第一深度神经网络推理任务的目标后序子任务和第二深度神经网络推理任务的目标前序子任务执行完毕之后,将第二深度神经网络推理任务的目标后序子任务调度到后序运行环境中进行执行;同时将第三深度神经网络推理任务的目标前序子任务调度到前序运行环境中进行执行,实现第二深度神经网络推理任务的目标后序子任务和第三深度神经网络推理任务的目标前序子任务的并行推理。

如此,采用二分度量法,快速确定了每种调度方式对应的参考深度神经网络推理任务的最佳切分点;再进一步地,基于流水线的思想,在存在多个深度神经网络推理任务的情况下,使每个深度神经网络推理任务的前序子任务,与上一深度神经网络推理任务的后序子任务并行执行,从而充分利用了浏览器内存在着的多种异构运行环境,大大提高了深度神经网络推理任务的吞吐率,有效提升效率。

图2是本发明实施例中基于Web浏览器的深度神经网络推理度量技术框架的结构图,图2中的Wasm是WebAssembly的简写。该框架由度量器、GPU引擎和WebAssembly推理引擎三个构件构成。如图2所示,该框架为为一个JavaScript(一种计算机编程语言)库,可以嵌入网页之中,在网页完成度神经网络的加载任务之后执行相应的调度任务。其中,GPU推理引擎是在GPU加速的运行环境中创建的用于执行深度神经网络推理任务的引擎,WebAssembly推理引擎是在WebAssembly运行环境中创建的用于执行深度神经网络推理任务的引擎。

度量器负责度量深度神经网络推理任务在异构运行环境中的运行时间。具体来说,度量器负责控制度量过程,执行深度神经网络推理任务,并在深度神经网络推理任务执行过程中计时。在深度神经网络推理任务执行完毕之后,度量器将保存度量结果,并根据度量结果指导下一步的度量过程。在最终全部的度量完成之后,度量器将根据度量结果,计算最优的深度神经网络推理任务划分方案,以此来指导后续的调度过程。

GPU推理引擎和WebAssembly推理引擎则负责接受深度神经网络推理任务。当收到深度神经网络推理任务时,推理引擎执行深度神经网络推理任务,并在推理过程中的必要位置记录时间点,从而获得深度神经网络推理任务的执行过程用时。

本发明实施例提出的基于Web浏览器的深度神经网络推理度量技术框架,其运行流程包括两个阶段,分别是度量深度神经网络推理任务在异构运行环境中的推理时间,以及在异构的运行环境中调度计算任务的执行过程。

当网页加载完一个深度神经网络推理任务之后,该框架的度量器将开始度量深度神经网络推理任务在浏览器内异构运行环境中的推理时间长度。具体度量的内容则依据该框架针对深度神经网络推理任务所设计的执行时间模型来确定。在度量的过程中,由于浏览器运行环境的限制,度量器无法通过一次度量从而获得准确的度量结果。度量器需要多次执行深度神经网络推理任务才能得到较为准确的度量结果,在这一过程中,度量器采用了二分度量的方法,来降低度量时需要执行的深度神经网络推理任务的总次数,从而降低度量过程所花费的时间。

根据度量的结果,该框架可以得到深度神经网络推理任务在异构运行环境中的执行时间,并据此计算出深度神经网络推理任务的最佳切分点。此方案将深度神经网络推理任务分为两部分,并将两部分的计算任务分别调度到各自对应的运行环境中执行。

GPU推理引擎和WebAssembly推理引擎均运行在网页的主线程上。最初,两个引擎都根据深度神经网络推理任务的结构和参数进行引擎的初始化,具体则包括深度神经网络推理任务的参数的传输、推理时所需程序的准备等初始化工作。当度量器需要度量深度神经网络推理任务的执行时间时,引擎负责执行深度神经网络推理任务的推理,并在推理的关键步骤处记录时间点。在度量器度量完毕并得到深度神经网络推理任务切分结果之后,推理引擎按照划分的任务来执行相应的推理计算。具体来说,如果度量器决定由GPU引擎执行前半部分推理,则当Web应用需要执行深度神经网络推理任务时,GPU引擎将执行前半部分深度神经网络推理任务的计算,而WebAssembly引擎则将执行后半部分深度神经网络推理任务的计算,最后得到深度神经网络推理任务的结果。

为了合理调度深度神经网络推理任务的计算任务,本发明实施例首先需要对浏览器内异构计算环境中的深度神经网络推理任务的时间进行建模。在有了深度神经网络推理任务的时间模型之后,该框架可以根据时间模型所预测出的推理时间来将深度神经网络推理任务调度到不同的运行环境中。

时间模型可以主要分为两个部分:GPU加速的运行环境中的深度神经网络推理任务的时间模型和WebAssembly运行环境中的深度神经网络推理任务的时间模型。

下面介绍GPU加速的运行环境中的深度神经网络推理任务的时间模型。

Web浏览器为Web应用提供的是单线程的编程模型。因此,深度神经网络推理任务中的各个算子将会顺序执行,并且各个算子内部的输入输出的上传与下载、算子的计算过程顺序进行。在这种条件下,深度神经网络推理任务的总时间可以估计为各个算子计算时间与数据传输时间的总和。具体的深度神经网络推理任务的推理过程模型如下所述。

假设某深度神经网络推理任务M由n个算子组成。在GPU加速的运行环境中执行推理时,设深度神经网络推理任务的执行顺序为L=(o

其中,

需要注意的是上述时间模型中忽略了编译WebGL的shader(在GPU上运行的程序)的时间,以及将深度神经网络推理任务的参数上传到GPU中的时间。这是因为WebGL shader的编译以及深度神经网络推理任务的参数的上传仅需执行一次,在深度神经网络推理任务的初始化预热过程中已经执行完毕,在后续的深度神经网络推理任务的推理过程中已不需再次执行。因此,在上述时间模型中并不包含这两部分的时间。

对于GPU加速的运行环境中的深度神经网络推理任务推理过程来说,可以将整体的执行过程按算子的执行顺序L分为两部分,分别形成前序子任务和后序子任务。具体来说,设算子序列L=(L

其中,j=1,2,…,n;其余各个字符的含义可以参照前文。

下面介绍WebAssembly运行环境中的深度神经网络推理任务的时间模型。

在WebAssembly运行环境中,深度神经网络推理任务的推理过程仍然可以表示为一系列深度神经网络推理任务算子的计算过程,其中算子的执行顺序与GPU加速的运行环境中的相同。因此与GPU加速的运行环境中类似,对于算子执行序列L=(o

其中,各个字符的含义可以参照前文。

在WebAssembly运行环境中,将深度神经网络推理任务按照算子的执行顺序L=(L

其中,j=1,2,…,n;其余各个字符的含义可以参照前文。

与GPU对应的时间模型相比,WebAssembly对应的时间模型并没有深度神经网络推理任务的输入的上传与输出的下载的部分。这是因为WebAssembly运行环境中的数据存储完全处于内存之中,并不涉及不同硬件之间的数据传输过程。

基于上述的GPU加速的运行环境中的深度神经网络推理任务的时间模型,以及WebAssembly运行环境中的深度神经网络推理任务的时间模型,可以将深度神经网络推理任务按照执行时间模型来划分成若干个子任务,同时调度子任务到不同的运行环境中执行。不同运行环境中的深度神经网络推理任务的时间模型,为该框架调度器的任务调度决策提供了依据。

下面介绍采用二分度量法,确定每种调度方式对应的参考深度神经网络推理任务的最佳切分点的方法。

在所述每种调度方式中,将所述参考深度神经网络推理任务中位于中间位置的算子,确定为当次切分点,并执行以下步骤:根据所述当次切分点,对所述参考深度神经网络推理任务进行切分,得到第一前序子任务和第一后序子任务;获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,以及获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间;根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围;在所述取值范围包括多个算子的情况下,将所述取值范围中位于中间的算子确定为所述当次切分点,并重复上述步骤,以对所述取值范围进行缩小,直到所述取值范围内包括一个算子,根据该算子确定该种调度方式中的所述最佳切分点。

在第一次对参考深度神经网络推理任务进行切分之前,参考深度神经网络推理任务中的除了首尾的算子,其余每个算子都有可能为最佳切分点。因此,在第一次切分之前,将参考深度神经网络推理任务中位于中间位置的算子,确定为当次切分点。可以按照提前约定,确定将切分点划分到前序子任务或后序子任务,下文以将切分点划分到前序子任务为例进行描述。

在确定了当次切分点后,将当次切分点及位于当次切分点之前的算子,划分为第一前序子任务,将位于当次切分点之后的算子,划分为第一后序子任务。

确定该种调度方式中的前序运行环境和后序运行环境,将第一前序子任务调度到该种调度方式的前序运行环境中进行执行,得到第一前序执行时间,以及将第一后序子任务在该种调度方式的后序运行环境中进行执行,得到第一后序执行时间。

根据第一前序执行时间和第一后序执行时间,从多个算子中确定该种调度方式中最佳切分点的取值范围。根据第一前序执行时间和第一后序执行时间,从多个算子中确定该种调度方式中最佳切分点的取值范围。

获取第一前序子任务中的最后一个算子的传输时间;在第一前序执行时间与第一前序子任务中的最后一个算子的传输时间的差值,小于或等于第一后序执行时间的情况下,将大于当次切分点的取值范围确定为最佳切分点的取值范围;在第一前序执行时间与第一前序子任务中的最后一个算子的传输时间的差值,大于或等于第一后序执行时间的情况下,将小于当次切分点的取值范围确定为最佳切分点的取值范围。

以前序运行环境为GPU加速的运行环境,后序运行环境为WebAssembly运行环境为例,目的是最小化划分方案的G

举例来说,假设总共有n=100个算子,当i=50时,若

这是因为

在取值范围包括多个算子的情况下,无法确定取值范围内的哪一算子为最佳切分点,因此可以将取值范围中位于中间的算子确定为当次切分点,并重复上述步骤,以对取值范围进行缩小,直到取值范围内包括一个算子,根据该算子确定该种调度方式中的最佳切分点。

在上述技术方案的基础上,结合异构运行环境中的深度神经网络推理任务的执行时间模型,该度量器实际需要度量内容包括每个算子的

要在GPU加速的运行环境中准确地度量算子的执行时间

形式化地说,用

可以看出

为了解决WebGL同步操作开销大的问题,度量器在度量WebGL中算子的执行时间时,并不度量每一个算子o

根据上述的度量方式,对于一个深度神经网络推理任务的算子执行序列L=(o

在上述技术方案的基础上,若前序运行环境为GPU加速的运行环境,后序运行环境为WebAssembly运行环境,根据前面的时间模型,可以采用以下步骤获取第一前序执行时间:将参考深度神经网络推理任务中的第一个算子的输入从内存传输到图形处理器,并获取将第一个算子的输入从内存传输到图形处理器的第一传输时间;在前序运行环境中执行第一前序子任务,并在执行完毕之后,进行WebGL同步,得到第一前序子任务的执行时间;将第一前序子任务的执行结果从图形处理器传输到内存中,并获取第一前序子任务的执行结果的第二传输时间;根据第一传输时间、第一前序子任务的执行时间和第二传输时间,确定第一前序执行时间。

根据前面的时间模型,可以采用以下步骤获取第一后序执行时间:将第一前序子任务中的最后一个算子的输出从内存传输到图形处理器,并获取将最后一个算子的输出从内存传输到图形处理器的第三传输时间;在后序运行环境中执行第一后序子任务,并在执行完毕之后,进行WebGL同步,得到第一后序子任务的执行时间;将第一后序子任务的执行结果从图形处理器传输到内存中,并获取第一后序子任务的执行结果的第四传输时间;根据第三传输时间、第一后序子任务的执行时间和第四传输时间,确定第一后序执行时间。

参考深度神经网络推理任务中的每个算子在WebAssembly运行环境中的运行时间可以直接获取到,因此,在前序运行环境为WebAssembly运行环境的情况下,获取第一前序执行时间可以包括:根据第一前序子任务包括的多个算子各自在WebAssembly运行环境中的运行时间,确定第一前序执行时间。在后序运行环境为WebAssembly运行环境的情况下,获取第一后序执行时间可以包括:根据第一后序子任务包括的多个算子各自在WebAssembly运行环境中的运行时间,确定第一后序执行时间。

本发明实施例提出的基于Web浏览器的深度神经网络推理度量方法,首先根据浏览器内异构运行环境中的深度神经网络推理任务执行时间的数据模型,对深度神经网络推理任务的推理时间进行度量。同时,为了缩短深度神经网络推理任务度量时间,提出了基于二分的深度神经网络推理任务度量算法来优化深度神经网络推理任务度量时间效率。

本发明实施例在WebGL运行环境中评估该框架的性能与开销。本发明实施例的实验环境由4台设备和2种Web浏览器组成,共计8种不同的实验环境。在这些实验环境中,本发明实施例度量了该框架在不同深度神经网络推理任务上的度量时间。评估结果表明该框架在所有模型、所有运行环境中的度量时间平均为12.3秒,其中二分度量法在中位数状况下节省了76%的度量任务,大大降低了度量所需要花费的时间。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

图3是本发明实施例的一种基于Web浏览器的深度神经网络推理度量装置的结构示意图,如图3所示,所述装置包括任务获取模块、切分点确定模块、时间获取模块、调度确定模块和任务调度模块,其中:

任务获取模块,用于获取参考深度神经网络推理任务,所述参考深度神经网络推理任务包括多个算子;

切分点确定模块,用于采用二分度量法,确定每种调度方式对应的所述参考深度神经网络推理任务的最佳切分点,其中,在所述最佳切分点之前的算子在前序运行环境中执行,在所述最佳切分点之后的算子在后序运行环境中执行,所述每种调度方式包括:将WebAssembly运行环境和GPU加速的运行环境分别确定为所述前序运行环境和所述后序运行环境中不同的一种;

时间获取模块,用于根据所述每种调度方式对应的所述最佳切分点,获取所述每种调度方式对应的周期时间;

调度确定模块,用于根据所述每种调度方式对应的周期时间,确定目标调度方式;

任务调度模块,用于根据所述目标调度方式以及所述目标调度方式对应的所述最佳切分点,对相邻的深度神经网络推理任务进行切分和调度,使所述相邻的深度神经网络推理任务并行执行。

可选地,所述切分点确定模块具体用于执行:

在所述每种调度方式中,将所述参考深度神经网络推理任务中位于中间位置的算子,确定为当次切分点,并执行以下步骤:

根据所述当次切分点,对所述参考深度神经网络推理任务进行切分,得到第一前序子任务和第一后序子任务;

获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,以及获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间;

根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围;

在所述取值范围包括多个算子的情况下,将所述取值范围中位于中间的算子确定为所述当次切分点,并重复上述步骤,以对所述取值范围进行缩小,直到所述取值范围内包括一个算子,根据该算子确定该种调度方式中的所述最佳切分点。

可选地,所述根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围,包括:

获取所述第一前序子任务中的最后一个算子的传输时间;

在所述第一前序执行时间与所述第一前序子任务中的最后一个算子的传输时间的差值,小于或等于所述第一后序执行时间的情况下,将大于所述当次切分点的取值范围确定为所述最佳切分点的取值范围;

在所述第一前序执行时间与所述第一前序子任务中的最后一个算子的传输时间的差值,大于或等于所述第一后序执行时间的情况下,将小于所述当次切分点的取值范围确定为所述最佳切分点的取值范围。

可选地,在该种调度方式的前序运行环境为所述GPU加速的运行环境的情况下,所述获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,包括:

将所述参考深度神经网络推理任务中的第一个算子的输入从内存传输到图形处理器,并获取将所述第一个算子的输入从所述内存传输到所述图形处理器的第一传输时间;

在所述前序运行环境中执行所述第一前序子任务,并在执行完毕之后,进行WebGL同步,得到所述第一前序子任务的执行时间;

将所述第一前序子任务的执行结果从所述图形处理器传输到所述内存中,并获取所述第一前序子任务的执行结果的第二传输时间;

根据所述第一传输时间、所述第一前序子任务的执行时间和所述第二传输时间,确定所述第一前序执行时间。

可选地,在该种调度方式的后序运行环境为所述GPU加速的运行环境的情况下,所述获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间,包括:

将所述第一前序子任务中的最后一个算子的输出从内存传输到图形处理器,并获取将所述最后一个算子的输出从所述内存传输到所述图形处理器的第三传输时间;

在所述后序运行环境中执行所述第一后序子任务,并在执行完毕之后,进行WebGL同步,得到所述第一后序子任务的执行时间;

将所述第一后序子任务的执行结果从所述图形处理器传输到所述内存中,并获取所述第一后序子任务的执行结果的第四传输时间;

根据所述第三传输时间、所述第一后序子任务的执行时间和所述第四传输时间,确定所述第一后序执行时间。

可选地,所述方法还包括:

获取所述参考深度神经网络推理任务中的每个算子在所述WebAssembly运行环境中的运行时间;

在该种调度方式的前序运行环境为所述WebAssembly运行环境的情况下,所述获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,包括:

根据所述第一前序子任务包括的多个算子各自在所述WebAssembly运行环境中的运行时间,确定所述第一前序执行时间;

在该种调度方式的后序运行环境为所述WebAssembly运行环境的情况下,所述获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间,包括:

根据所述第一后序子任务包括的多个算子各自在所述WebAssembly运行环境中的运行时间,确定所述第一后序执行时间。

可选地,所述时间获取模块具体用于执行:

根据所述每种调度方式对应的所述最佳切分点,对所述参考深度神经网络推理任务进行切分,得到所述每种调度方式对应的第二前序子任务和第二后序子任务;

获取所述每种调度方式对应的第二前序子任务的执行时间,以及获取所述每种调度方式对应的第二后序子任务的执行时间;

将所述每种调度方式对应的所述第二前序子任务的执行时间和所述第二后序子任务的执行时间中较长的时间,确定为所述每种调度方式对应的周期时间。

可选地,所述调度确定模块具体用于执行:

将所述每种调度方式对应的周期时间中,较短的时间对应的调度方式,确定为所述目标调度方式;

所述任务调度模块具体用于执行:

根据所述最佳切分点,将所述相邻的深度神经网络推理任务分别切分为目标前序子任务和目标后序子任务;

按照所述目标调度方式,确定目标前序运行环境和目标后序运行环境;

将两个所述目标前序子任务先后调度到所述目标前序环境中进行执行,以及将两个所述目标后序子任务先后调度到所述目标后序环境中进行执行,其中一个深度神经网络推理任务的所述目标前序子任务和另一深度神经网络推理任务的所述目标后序子任务并行执行。

需要说明的是,装置实施例与方法实施例相近,故描述的较为简单,相关之处参见方法实施例即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、装置、电子设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种基于Web浏览器的深度神经网络推理度量方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 基于深度神经网络的关系推理方法、装置及设备
  • 基于深度神经网络的关系推理方法、装置及设备
技术分类

06120116440448