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

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

Info

Publication number
CN116739090A
CN116739090A CN202310539967.6A CN202310539967A CN116739090A CN 116739090 A CN116739090 A CN 116739090A CN 202310539967 A CN202310539967 A CN 202310539967A CN 116739090 A CN116739090 A CN 116739090A
Authority
CN
China
Prior art keywords
preamble
neural network
scheduling mode
subtask
determining
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.)
Granted
Application number
CN202310539967.6A
Other languages
English (en)
Other versions
CN116739090B (zh
Inventor
马郓
田得雨
韩宇栋
黄罡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peking University
Original Assignee
Peking University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Peking University filed Critical Peking University
Priority to CN202310539967.6A priority Critical patent/CN116739090B/zh
Publication of CN116739090A publication Critical patent/CN116739090A/zh
Application granted granted Critical
Publication of CN116739090B publication Critical patent/CN116739090B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种基于Web浏览器的深度神经网络推理度量方法和装置,涉及软件技术领域,旨在高效地提高深度神经网络推理任务的吞吐率。所述方法包括:获取参考深度神经网络推理任务;采用二分度量法,确定每种调度方式对应的参考深度神经网络推理任务的最佳切分点,每种调度方式包括:将Web浏览器的WebAssembly运行环境和GPU加速的运行环境分别确定为前序运行环境和后序运行环境中不同的一种;根据每种调度方式对应的最佳切分点,获取每种调度方式对应的周期时间;根据每种调度方式对应的周期时间,确定目标调度方式;根据目标调度方式以及目标调度方式对应的最佳切分点,对相邻的深度神经网络推理任务进行切分和调度。

Description

基于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=(o1,o2,…,oi,…,on)。记算子oi在GPU加速的运行环境中的执行时间为将算子oi的输入从内存(JavaScript堆空间)中传输到GPU中的时间为/>将算子oi的输入从GPU中传输到内存中的时间为/>那么深度神经网络推理任务在WebGL运行环境中的整体执行时间TG可以表示为:
其中,表征第一个算子的输入从内存中传输到GPU中的时间;/>表征将整个深度神经网络推理任务的输出从GPU中传输到内存中所花费的时间;其余各个字符的含义可以参照前文。
需要注意的是上述时间模型中忽略了编译WebGL的shader(在GPU上运行的程序)的时间,以及将深度神经网络推理任务的参数上传到GPU中的时间。这是因为WebGL shader的编译以及深度神经网络推理任务的参数的上传仅需执行一次,在深度神经网络推理任务的初始化预热过程中已经执行完毕,在后续的深度神经网络推理任务的推理过程中已不需再次执行。因此,在上述时间模型中并不包含这两部分的时间。
对于GPU加速的运行环境中的深度神经网络推理任务推理过程来说,可以将整体的执行过程按算子的执行顺序L分为两部分,分别形成前序子任务和后序子任务。具体来说,设算子序列L=(L1,L2),其中L1=(o1,…,oi-1),L2=(oi,…,on)。那么,在GPU加速的运行环境中计算L1和L2两个子任务所需要花费的时间Ti G、Ti G′则可以分别表示为:
其中,j=1,2,…,n;其余各个字符的含义可以参照前文。
下面介绍WebAssembly运行环境中的深度神经网络推理任务的时间模型。
在WebAssembly运行环境中,深度神经网络推理任务的推理过程仍然可以表示为一系列深度神经网络推理任务算子的计算过程,其中算子的执行顺序与GPU加速的运行环境中的相同。因此与GPU加速的运行环境中类似,对于算子执行序列L=(o1,o2,…,oi,…,on),记算子oi在WebAssembly运行环境中的执行时间为则在WebAssembly运行环境中执行深度神经网络推理任务推理的全部时间TA为:
其中,各个字符的含义可以参照前文。
在WebAssembly运行环境中,将深度神经网络推理任务按照算子的执行顺序L=(L1,L2)划分之后,两部分的深度神经网络推理任务的执行时间长度Ti A和Ti A′可以分别表示为:
其中,j=1,2,…,n;其余各个字符的含义可以参照前文。
与GPU对应的时间模型相比,WebAssembly对应的时间模型并没有深度神经网络推理任务的输入的上传与输出的下载的部分。这是因为WebAssembly运行环境中的数据存储完全处于内存之中,并不涉及不同硬件之间的数据传输过程。
基于上述的GPU加速的运行环境中的深度神经网络推理任务的时间模型,以及WebAssembly运行环境中的深度神经网络推理任务的时间模型,可以将深度神经网络推理任务按照执行时间模型来划分成若干个子任务,同时调度子任务到不同的运行环境中执行。不同运行环境中的深度神经网络推理任务的时间模型,为该框架调度器的任务调度决策提供了依据。
下面介绍采用二分度量法,确定每种调度方式对应的参考深度神经网络推理任务的最佳切分点的方法。
在所述每种调度方式中,将所述参考深度神经网络推理任务中位于中间位置的算子,确定为当次切分点,并执行以下步骤:根据所述当次切分点,对所述参考深度神经网络推理任务进行切分,得到第一前序子任务和第一后序子任务;获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,以及获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间;根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围;在所述取值范围包括多个算子的情况下,将所述取值范围中位于中间的算子确定为所述当次切分点,并重复上述步骤,以对所述取值范围进行缩小,直到所述取值范围内包括一个算子,根据该算子确定该种调度方式中的所述最佳切分点。
在第一次对参考深度神经网络推理任务进行切分之前,参考深度神经网络推理任务中的除了首尾的算子,其余每个算子都有可能为最佳切分点。因此,在第一次切分之前,将参考深度神经网络推理任务中位于中间位置的算子,确定为当次切分点。可以按照提前约定,确定将切分点划分到前序子任务或后序子任务,下文以将切分点划分到前序子任务为例进行描述。
在确定了当次切分点后,将当次切分点及位于当次切分点之前的算子,划分为第一前序子任务,将位于当次切分点之后的算子,划分为第一后序子任务。
确定该种调度方式中的前序运行环境和后序运行环境,将第一前序子任务调度到该种调度方式的前序运行环境中进行执行,得到第一前序执行时间,以及将第一后序子任务在该种调度方式的后序运行环境中进行执行,得到第一后序执行时间。
根据第一前序执行时间和第一后序执行时间,从多个算子中确定该种调度方式中最佳切分点的取值范围。根据第一前序执行时间和第一后序执行时间,从多个算子中确定该种调度方式中最佳切分点的取值范围。
获取第一前序子任务中的最后一个算子的传输时间;在第一前序执行时间与第一前序子任务中的最后一个算子的传输时间的差值,小于或等于第一后序执行时间的情况下,将大于当次切分点的取值范围确定为最佳切分点的取值范围;在第一前序执行时间与第一前序子任务中的最后一个算子的传输时间的差值,大于或等于第一后序执行时间的情况下,将小于当次切分点的取值范围确定为最佳切分点的取值范围。
以前序运行环境为GPU加速的运行环境,后序运行环境为WebAssembly运行环境为例,目的是最小化划分方案的Gi=max{Ti G,Ti A′}即需要平衡深度神经网络推理任务在不同的运行环境中的时间。注意到在需要被度量的中,/>为常量,且其中一项随着i的增加是单调递增的,因此可以得出:如果/>那么存在j≥i,j的取值范围是最佳切分点的取值范围;如果/>那么存在j≤i,j的取值范围是最佳切分点的取值范围。
举例来说,假设总共有n=100个算子,当i=50时,若则在i的取值为1到49时,第一前序执行时间依然小于等于第一后序执行时间,因此,最佳切分点的取值范围缩小到[50,99]。同理,若/>则在i的取值为51到99时,第一前序任务的计算时间依然大于等于第一后序执行时间,因此最佳切分点的取值范围缩小到[2,50]。
这是因为一项随着i单调递增,而/>一项随着i单调递减。这个特性表明,该框架可以利用二分查找的方式,利用当前已有的度量结果排除非最佳切分点,从而减少该框架所需要度量的次数、降低该框架在度量上所需要花费的时间。
在取值范围包括多个算子的情况下,无法确定取值范围内的哪一算子为最佳切分点,因此可以将取值范围中位于中间的算子确定为当次切分点,并重复上述步骤,以对取值范围进行缩小,直到取值范围内包括一个算子,根据该算子确定该种调度方式中的最佳切分点。
在上述技术方案的基础上,结合异构运行环境中的深度神经网络推理任务的执行时间模型,该度量器实际需要度量内容包括每个算子的 四个时间参数。其中/>三个参数的度量较为简单。由于在GPU加速的运行环境中数据的上传与下载,与WebAssembly运行环境中的计算都是同步进行的,因此度量器仅需要记录相应的上传、下载、计算行为的起始时刻与终止时刻,就可以计算出相应操作所需花费的时间。
要在GPU加速的运行环境中准确地度量算子的执行时间并不简单。由于在GPU加速的运行环境中GPU的指令是异步执行的,因此为了度量/>一种直观的方法就是在度量器在每次执行完一个算子之后,与GPU加速的运行环境进行一次同步,在GPU指令全部执行完毕之后记录相应的执行时间。这种度量方案看似合理,实则在实践中不可行。由于浏览器的多进程体系结构和GPU自身的特性,每一次同步都需要耗费大量的时间,并且耗费的时间与/>本身相比是不可忽略的。因而在调度器计算Ti G和Ti G′时,同步开销将不断累加,从而严重影响计算Ti G和Ti G′的精确度,进而影响深度神经网络推理任务执行时间分析结果和以及调度的决策。
形式化地说,用来表示算子oi在GPU加速的运行环境中的执行时间度量结果。则度量结果可以表达为/>其中/>表示算子的执行时间,而δ表示执行WebGL同步而进行的浏览器跨进程通信所产生的时间开销。与单个算子的执行时间/>相比,δ是不可忽略的。在有了每个算子的度量结果后,度量器需要计算/>来作为调度器的决策参考。/>的计算方式是将每个算子的执行时间度量结果相加,即
可以看出的度量值中误差δ不断累积,严重影响了度量结果的准确性。然而另一方面,在WebAssembly运行环境中度量算子的执行时间时则不存在跨进程的同步开销。因此,当度量器在根据不准确的度量结果调度深度神经网络推理任务推理任务时难以均匀地划分任务,因而降低流水线执行时的吞吐率。
为了解决WebGL同步操作开销大的问题,度量器在度量WebGL中算子的执行时间时,并不度量每一个算子oi的执行时间,而是度量整体Ti G和Ti G′的时间长度。具体度量时,度量器首先执行深度神经网络推理任务推理,在执行算子之前进行一次WebGL同步。此时记录Ti G的时间,并度量/> 的值。之后继续推理深度神经网络推理任务,在模型推理完毕后再进行一次WebGL同步,此时记录Ti G′的时间。这样通过直接度量Ti G和Ti G′,减少了同步开销对于度量结果的影响。
根据上述的度量方式,对于一个深度神经网络推理任务的算子执行序列L=(o1,o2,…,oi,…,on)来说,对其中每一个算子oi,度量器都需要执行一次完整的深度神经网络推理任务推理来完成对Ti G和Ti G′的度量。这样一来,对于包含n个算子的深度神经网络推理任务来说,度量过程需要执行n次深度神经网络推理任务推理,整体时间复杂度为O(n2)。如此高的时间复杂度将会导致该框架在度量时花费大量时间,这对于重视加载过程速度的Web应用来说是不可接受的。因此,本发明实施例采用二分度量法进行度量。
在上述技术方案的基础上,若前序运行环境为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浏览器的深度神经网络推理度量方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种基于Web浏览器的深度神经网络推理度量方法,其特征在于,所述方法包括:
获取参考深度神经网络推理任务,所述参考深度神经网络推理任务包括多个算子;
采用二分度量法,确定每种调度方式对应的所述参考深度神经网络推理任务的最佳切分点,其中,在所述最佳切分点之前的算子在前序运行环境中执行,在所述最佳切分点之后的算子在后序运行环境中执行,所述每种调度方式包括:将WebAssembly运行环境和GPU加速的运行环境分别确定为所述前序运行环境和所述后序运行环境中不同的一种;
根据所述每种调度方式对应的所述最佳切分点,获取所述每种调度方式对应的周期时间;
根据所述每种调度方式对应的周期时间,确定目标调度方式;
根据所述目标调度方式以及所述目标调度方式对应的所述最佳切分点,对相邻的深度神经网络推理任务进行切分和调度,使所述相邻的深度神经网络推理任务并行执行。
2.根据权利要求1所述的方法,其特征在于,所述采用二分度量法,确定每种调度方式对应的所述参考深度神经网络推理任务的最佳切分点,包括:
在所述每种调度方式中,将所述参考深度神经网络推理任务中位于中间位置的算子,确定为当次切分点,并执行以下步骤:
根据所述当次切分点,对所述参考深度神经网络推理任务进行切分,得到第一前序子任务和第一后序子任务;
获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,以及获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间;
根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围;
在所述取值范围包括多个算子的情况下,将所述取值范围中位于中间的算子确定为所述当次切分点,并重复上述步骤,以对所述取值范围进行缩小,直到所述取值范围内包括一个算子,根据该算子确定该种调度方式中的所述最佳切分点。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围,包括:
获取所述第一前序子任务中的最后一个算子的传输时间;
在所述第一前序执行时间与所述第一前序子任务中的最后一个算子的传输时间的差值,小于或等于所述第一后序执行时间的情况下,将大于所述当次切分点的取值范围确定为所述最佳切分点的取值范围;
在所述第一前序执行时间与所述第一前序子任务中的最后一个算子的传输时间的差值,大于或等于所述第一后序执行时间的情况下,将小于所述当次切分点的取值范围确定为所述最佳切分点的取值范围。
4.根据权利要求2所述的方法,其特征在于,在该种调度方式的前序运行环境为所述GPU加速的运行环境的情况下,所述获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,包括:
将所述参考深度神经网络推理任务中的第一个算子的输入从内存传输到图形处理器,并获取将所述第一个算子的输入从所述内存传输到所述图形处理器的第一传输时间;
在所述前序运行环境中执行所述第一前序子任务,并在执行完毕之后,进行WebGL同步,得到所述第一前序子任务的执行时间;
将所述第一前序子任务的执行结果从所述图形处理器传输到所述内存中,并获取所述第一前序子任务的执行结果的第二传输时间;
根据所述第一传输时间、所述第一前序子任务的执行时间和所述第二传输时间,确定所述第一前序执行时间。
5.根据权利要求2所述的方法,其特征在于,在该种调度方式的后序运行环境为所述GPU加速的运行环境的情况下,所述获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间,包括:
将所述第一前序子任务中的最后一个算子的输出从内存传输到图形处理器,并获取将所述最后一个算子的输出从所述内存传输到所述图形处理器的第三传输时间;
在所述后序运行环境中执行所述第一后序子任务,并在执行完毕之后,进行WebGL同步,得到所述第一后序子任务的执行时间;
将所述第一后序子任务的执行结果从所述图形处理器传输到所述内存中,并获取所述第一后序子任务的执行结果的第四传输时间;
根据所述第三传输时间、所述第一后序子任务的执行时间和所述第四传输时间,确定所述第一后序执行时间。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取所述参考深度神经网络推理任务中的每个算子在所述WebAssembly运行环境中的运行时间;
在该种调度方式的前序运行环境为所述WebAssembly运行环境的情况下,所述获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,包括:
根据所述第一前序子任务包括的多个算子各自在所述WebAssembly运行环境中的运行时间,确定所述第一前序执行时间;
在该种调度方式的后序运行环境为所述WebAssembly运行环境的情况下,所述获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间,包括:
根据所述第一后序子任务包括的多个算子各自在所述WebAssembly运行环境中的运行时间,确定所述第一后序执行时间。
7.根据权利要求1所述的方法,其特征在于,所述根据所述每种调度方式对应的所述最佳切分点,获取所述每种调度方式对应的周期时间,包括:
根据所述每种调度方式对应的所述最佳切分点,对所述参考深度神经网络推理任务进行切分,得到所述每种调度方式对应的第二前序子任务和第二后序子任务;
获取所述每种调度方式对应的第二前序子任务的执行时间,以及获取所述每种调度方式对应的第二后序子任务的执行时间;
将所述每种调度方式对应的所述第二前序子任务的执行时间和所述第二后序子任务的执行时间中较长的时间,确定为所述每种调度方式对应的周期时间。
8.根据权利要求1所述的方法,其特征在于,所述根据所述每种调度方式对应的周期时间,确定目标调度方式,包括:
将所述每种调度方式对应的周期时间中,较短的时间对应的调度方式,确定为所述目标调度方式;
所述根据所述目标调度方式以及所述目标调度方式对应的所述最佳切分点,对相邻的深度神经网络推理任务进行切分和调度,包括:
根据所述最佳切分点,将所述相邻的深度神经网络推理任务分别切分为目标前序子任务和目标后序子任务;
按照所述目标调度方式,确定目标前序运行环境和目标后序运行环境;
将两个所述目标前序子任务先后调度到所述目标前序环境中进行执行,以及将两个所述目标后序子任务先后调度到所述目标后序环境中进行执行,其中一个深度神经网络推理任务的所述目标前序子任务和另一深度神经网络推理任务的所述目标后序子任务并行执行。
9.一种基于Web浏览器的深度神经网络推理度量装置,其特征在于,所述装置包括:
任务获取模块,用于获取参考深度神经网络推理任务,所述参考深度神经网络推理任务包括多个算子;
切分点确定模块,用于采用二分度量法,确定每种调度方式对应的所述参考深度神经网络推理任务的最佳切分点,其中,在所述最佳切分点之前的算子在前序运行环境中执行,在所述最佳切分点之后的算子在后序运行环境中执行,所述每种调度方式包括:将WebAssembly运行环境和GPU加速的运行环境分别确定为所述前序运行环境和所述后序运行环境中不同的一种;
时间获取模块,用于根据所述每种调度方式对应的所述最佳切分点,获取所述每种调度方式对应的周期时间;
调度确定模块,用于根据所述每种调度方式对应的周期时间,确定目标调度方式;
任务调度模块,用于根据所述目标调度方式以及所述目标调度方式对应的所述最佳切分点,对相邻的深度神经网络推理任务进行切分和调度,使所述相邻的深度神经网络推理任务并行执行。
10.根据权利要求1所述的装置,其特征在于,所述切分点确定模块具体用于执行:
在所述每种调度方式中,将所述参考深度神经网络推理任务中位于中间位置的算子,确定为当次切分点,并执行以下步骤:
根据所述当次切分点,对所述参考深度神经网络推理任务进行切分,得到第一前序子任务和第一后序子任务;
获取所述第一前序子任务在该种调度方式的前序运行环境中的第一前序执行时间,以及获取所述第一后序子任务在该种调度方式的后序运行环境中的第一后序执行时间;
根据所述第一前序执行时间和所述第一后序执行时间,从所述多个算子中确定该种调度方式中最佳切分点的取值范围;
在所述取值范围包括多个算子的情况下,将所述取值范围中位于中间的算子确定为所述当次切分点,并重复上述步骤,以对所述取值范围进行缩小,直到所述取值范围内包括一个算子,根据该算子确定该种调度方式中的所述最佳切分点。
CN202310539967.6A 2023-05-12 2023-05-12 基于Web浏览器的深度神经网络推理度量方法和装置 Active CN116739090B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310539967.6A CN116739090B (zh) 2023-05-12 2023-05-12 基于Web浏览器的深度神经网络推理度量方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310539967.6A CN116739090B (zh) 2023-05-12 2023-05-12 基于Web浏览器的深度神经网络推理度量方法和装置

Publications (2)

Publication Number Publication Date
CN116739090A true CN116739090A (zh) 2023-09-12
CN116739090B CN116739090B (zh) 2023-11-28

Family

ID=87910624

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310539967.6A Active CN116739090B (zh) 2023-05-12 2023-05-12 基于Web浏览器的深度神经网络推理度量方法和装置

Country Status (1)

Country Link
CN (1) CN116739090B (zh)

Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919315A (zh) * 2019-03-13 2019-06-21 科大讯飞股份有限公司 一种神经网络的前向推理方法、装置、设备及存储介质
WO2021056389A1 (en) * 2019-09-27 2021-04-01 Intel Corporation Methods and apparatus to process machine learning model in web-browser environment
CN112817730A (zh) * 2021-02-24 2021-05-18 上海交通大学 深度神经网络服务批处理调度方法、系统及gpu
WO2021156647A1 (en) * 2020-02-06 2021-08-12 Mark Oleynik Robotic kitchen hub systems and methods for minimanipulation library
CN113377540A (zh) * 2021-06-15 2021-09-10 上海商汤科技开发有限公司 集群资源调度方法及装置、电子设备和存储介质
CN113806054A (zh) * 2021-09-27 2021-12-17 北京市商汤科技开发有限公司 任务处理方法及装置、电子设备和存储介质
CN114035936A (zh) * 2021-10-15 2022-02-11 北京潞晨科技有限公司 一种基于人工智能的多维并行处理方法、系统、设备和可读存储介质
CN114035937A (zh) * 2021-10-15 2022-02-11 北京潞晨科技有限公司 一种基于人工智能的分布式训练和推理方法、系统、设备和可读存储介质
US20220075877A1 (en) * 2020-09-09 2022-03-10 Self Financial, Inc. Interface and system for updating isolated repositories
US20220078797A1 (en) * 2020-09-09 2022-03-10 Self Financial, Inc. Resource utilization retrieval and modification
US20220075782A1 (en) * 2020-09-09 2022-03-10 Self Financial, Inc. Asynchronous database caching
US20220078149A1 (en) * 2020-09-09 2022-03-10 Self Financial, Inc. Navigation pathway generation
CN114217966A (zh) * 2021-12-16 2022-03-22 上海体素信息科技有限公司 基于资源调整的深度学习模型动态批处理调度方法和系统
CN114756358A (zh) * 2022-06-15 2022-07-15 苏州浪潮智能科技有限公司 一种dag任务调度方法、装置、设备及存储介质
CN114841345A (zh) * 2022-03-28 2022-08-02 武汉理工大学 一种基于深度学习算法的分布式计算平台及其应用
CN115373861A (zh) * 2022-10-26 2022-11-22 小米汽车科技有限公司 Gpu资源调度方法、装置、电子设备及存储介质
CN115391035A (zh) * 2022-08-22 2022-11-25 北京计算机技术及应用研究所 一种异构计算资源协同管理调度的方法
WO2022247693A1 (zh) * 2021-05-27 2022-12-01 华为技术有限公司 任务迁移的系统及方法
CN115421897A (zh) * 2022-11-07 2022-12-02 之江实验室 一种面向芯粒的深度神经网络流水线并行调度方法及装置
WO2023030513A1 (zh) * 2021-09-05 2023-03-09 汉熵通信有限公司 物联网系统
CN115829824A (zh) * 2022-04-15 2023-03-21 谷歌有限责任公司 用于优化机器学习推断的图形处理的系统和方法
WO2023066395A1 (zh) * 2021-10-22 2023-04-27 华为技术有限公司 一种应用运行方法以及相关设备
CN116048721A (zh) * 2022-12-27 2023-05-02 中国电信股份有限公司 一种gpu集群的任务分配方法、装置、电子设备和介质

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919315A (zh) * 2019-03-13 2019-06-21 科大讯飞股份有限公司 一种神经网络的前向推理方法、装置、设备及存储介质
WO2021056389A1 (en) * 2019-09-27 2021-04-01 Intel Corporation Methods and apparatus to process machine learning model in web-browser environment
WO2021156647A1 (en) * 2020-02-06 2021-08-12 Mark Oleynik Robotic kitchen hub systems and methods for minimanipulation library
US20220075877A1 (en) * 2020-09-09 2022-03-10 Self Financial, Inc. Interface and system for updating isolated repositories
US20220078797A1 (en) * 2020-09-09 2022-03-10 Self Financial, Inc. Resource utilization retrieval and modification
US20220075782A1 (en) * 2020-09-09 2022-03-10 Self Financial, Inc. Asynchronous database caching
US20220078149A1 (en) * 2020-09-09 2022-03-10 Self Financial, Inc. Navigation pathway generation
CN112817730A (zh) * 2021-02-24 2021-05-18 上海交通大学 深度神经网络服务批处理调度方法、系统及gpu
WO2022247693A1 (zh) * 2021-05-27 2022-12-01 华为技术有限公司 任务迁移的系统及方法
CN113377540A (zh) * 2021-06-15 2021-09-10 上海商汤科技开发有限公司 集群资源调度方法及装置、电子设备和存储介质
WO2023030513A1 (zh) * 2021-09-05 2023-03-09 汉熵通信有限公司 物联网系统
CN113806054A (zh) * 2021-09-27 2021-12-17 北京市商汤科技开发有限公司 任务处理方法及装置、电子设备和存储介质
WO2023045207A1 (zh) * 2021-09-27 2023-03-30 上海商汤智能科技有限公司 任务处理方法及装置、电子设备、存储介质和计算机程序
CN114035936A (zh) * 2021-10-15 2022-02-11 北京潞晨科技有限公司 一种基于人工智能的多维并行处理方法、系统、设备和可读存储介质
CN114035937A (zh) * 2021-10-15 2022-02-11 北京潞晨科技有限公司 一种基于人工智能的分布式训练和推理方法、系统、设备和可读存储介质
WO2023066395A1 (zh) * 2021-10-22 2023-04-27 华为技术有限公司 一种应用运行方法以及相关设备
CN114217966A (zh) * 2021-12-16 2022-03-22 上海体素信息科技有限公司 基于资源调整的深度学习模型动态批处理调度方法和系统
CN114841345A (zh) * 2022-03-28 2022-08-02 武汉理工大学 一种基于深度学习算法的分布式计算平台及其应用
CN115829824A (zh) * 2022-04-15 2023-03-21 谷歌有限责任公司 用于优化机器学习推断的图形处理的系统和方法
CN114756358A (zh) * 2022-06-15 2022-07-15 苏州浪潮智能科技有限公司 一种dag任务调度方法、装置、设备及存储介质
CN115391035A (zh) * 2022-08-22 2022-11-25 北京计算机技术及应用研究所 一种异构计算资源协同管理调度的方法
CN115373861A (zh) * 2022-10-26 2022-11-22 小米汽车科技有限公司 Gpu资源调度方法、装置、电子设备及存储介质
CN115421897A (zh) * 2022-11-07 2022-12-02 之江实验室 一种面向芯粒的深度神经网络流水线并行调度方法及装置
CN116048721A (zh) * 2022-12-27 2023-05-02 中国电信股份有限公司 一种gpu集群的任务分配方法、装置、电子设备和介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MARTÍN MANSO, R等: "Face Recognition Efficiency Enhancements Using Tensorflow and WebAssembly: A Practical Approach", 《IBEROAMERICAN WORKSHOP ON HUMAN-COMPUTER INTERACTION》, pages 84 - 97 *
高赫然等: "面向深度学习训练的内存交换机制综述", 《软件学报》, pages 1 - 25 *

Also Published As

Publication number Publication date
CN116739090B (zh) 2023-11-28

Similar Documents

Publication Publication Date Title
US20200159590A1 (en) Processing method for a multicore processor and multicore processor
US11295226B2 (en) Optimization recommendation services for quantum computing
CN113254178B (zh) 一种任务调度方法、装置、电子设备及可读存储介质
JP3480973B2 (ja) 並列処理システムの動作解析装置
CN112559053B (zh) 可重构处理器数据同步处理方法及装置
CN104361182A (zh) 基于Petri网的微处理器微体系结构参数优化方法
CN113822173A (zh) 基于节点归并和路径预测的行人属性识别训练加速方法
Huang et al. Novel heuristic speculative execution strategies in heterogeneous distributed environments
CN115437760A (zh) 计算资源分配方法、电子设备、存储介质及程序产品
CN116739090B (zh) 基于Web浏览器的深度神经网络推理度量方法和装置
Hafeez et al. Empirical analysis and modeling of compute times of cnn operations on aws cloud
CN111612155A (zh) 一种分布式机器学习系统及适用于其的通信调度方法
CN114358253A (zh) 一种神经网络模型的时间预估方法及相关产品
CN114021733B (zh) 模型训练优化方法、装置、计算机设备及存储介质
KR101383225B1 (ko) 하나 이상의 실행 유닛에 대한 성능 분석 방법, 성능 분석 장치 및 성능 분석 방법을 수행하는 프로그램을 기록한 컴퓨터 판독가능 기록매체
CN113076181B (zh) 一种数据处理流程优化方法、系统及存储介质
CN114356738A (zh) 预估执行神经网络模型所需时间的方法及相关产品
CN116542334B (zh) 基于Web浏览器的深度神经网络推理调度方法和装置
WO2021077533A1 (zh) 卷积神经网络模型的计算方法及装置
CN112394914A (zh) 一种面向物联网应用的以边缘为中心的编程方法
Kuper et al. Improving GPU Utilization in ML Workloads Through Finer-Grained Synchronization
Beaumont et al. Madpipe: Memory aware dynamic programming algorithm for pipelined model parallelism
Barbierato et al. Fluid approximation of pool depletion systems
Medvedev IMB-ASYNC: a revised method and benchmark to estimate MPI-3 asynchronous progress efficiency
Konopik et al. Application Runtime Estimation for AURIX Embedded MCU Using Deep Learning

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
GR01 Patent grant
GR01 Patent grant