CN116542334B - 基于Web浏览器的深度神经网络推理调度方法和装置 - Google Patents
基于Web浏览器的深度神经网络推理调度方法和装置 Download PDFInfo
- Publication number
- CN116542334B CN116542334B CN202310538682.0A CN202310538682A CN116542334B CN 116542334 B CN116542334 B CN 116542334B CN 202310538682 A CN202310538682 A CN 202310538682A CN 116542334 B CN116542334 B CN 116542334B
- Authority
- CN
- China
- Prior art keywords
- task
- subtask
- running environment
- scheduling
- preamble
- 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.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 189
- 238000000034 method Methods 0.000 title claims abstract description 80
- 239000002243 precursor Substances 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 22
- 230000001133 acceleration Effects 0.000 claims abstract description 12
- 230000011218 segmentation Effects 0.000 claims description 71
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 5
- 238000003860 storage Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007430 reference method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种基于Web浏览器的深度神经网络推理调度方法和装置,涉及软件领域。所述方法包括:获取第一深度神经网络推理任务和第二深度神经网络推理任务;按照目标切分方式,将第一深度神经网络推理任务切分为第一前序子任务和第一后序子任务,以及将第二深度神经网络推理任务切分为第二前序子任务和第二后序子任务;按照目标调度方式,确定前序运行环境和后序运行环境,前序运行环境和后序运行环境分别为Web浏览器提供的WebAssembly运行环境和GPU加速的运行环境中的一种;将第一前序子任务和第二前序子任务先后调度到前序运行环境中进行执行,以及将第一后序子任务和第二后序子任务先后调度到后序运行环境中进行执行。
Description
技术领域
本发明涉及软件领域,特别是涉及一种基于Web浏览器的深度神经网络推理调度方法和装置。
背景技术
近年来,深度学***台的深度神经网络推理框架。这些框架为Web应用在Web浏览器中推理深度神经网络铺平了道路。当前在实践中已经有许多Web应用在浏览器内利用深度学习框架来执行深度神经网络推理任务。如何提高基于Web浏览器的深度神经网络推理任务的吞吐率,是一个值得研究的问题。
发明内容
鉴于上述问题,本发明实施例提供了一种基于Web浏览器的深度神经网络推理调度方法和装置,以便克服上述问题或者至少部分地解决上述问题。
本发明实施例的第一方面,提供了一种基于Web浏览器的深度神经网络推理调度方法,所述方法包括:
获取第一深度神经网络推理任务和第二深度神经网络推理任务;
按照目标切分方式,将所述第一深度神经网络推理任务切分为第一前序子任务和第一后序子任务,以及将所述第二深度神经网络推理任务切分为第二前序子任务和第二后序子任务;
按照目标调度方式,确定前序运行环境和后序运行环境,所述前序运行环境为GPU加速的运行环境和WebAssembly运行环境中的一种,所述后序运行环境为所述GPU加速的运行环境和所述WebAssembly运行环境中,与所述前序运行环境不同的一种;
将所述第一前序子任务和所述第二前序子任务先后调度到所述前序运行环境中进行执行,以及将所述第一后序子任务和所述第二后序子任务先后调度到所述后序运行环境中进行执行,其中,所述第一后序子任务和所述第二前序子任务是在所述第一前序子任务执行完成后执行的,所述第二后序子任务是在所述第二前序子任务执行完成后执行的。
可选地,在所述获取第一深度神经网络推理任务和第二深度神经网络推理任务之前,所述方法还包括:
获取参考深度神经网络推理任务;
确定不同调度方式,并获取每种调度方式对应的切分方式,每种调度方式包括:将所述GPU加速的运行环境和所述WebAssembly运行环境分别确定为前序运行环境和后序运行环境中不同的一种;
按照每种调度方式对应的切分方式,对所述参考深度神经网络推理任务进行切分,得到不同切分方式对应的参考前序子任务和参考后序子任务;
获取在每种所述调度方式下,执行该种调度方式下的参考前序子任务所需的前序执行时间,和执行该种调度方式下的参考后序子任务所需的后序执行时间;
根据不同调度方式下对应的所述前序执行时间和所述后序执行时间,从多个所述调度方式中确定目标调度方式,并将所述目标调度方式对应的切分方式,确定为所述目标切分方式。
可选地,所述不同调度方式包括第一调度方式和第二调度方式;所述第一调度方式为:将所述GPU加速的运行环境确定为前序运行环境,并将所述WebAssembly运行环境确定为后序运行环境;所述第二调度方式为:将所述WebAssembly运行环境确定为前序运行环境,并将所述GPU加速的运行环境确定为后序运行环境;所述第一调度方式对应第一切分方式,所述第二调度方式对应第二切分方式;
所述按照每种调度方式对应的切分方式,对所述参考深度神经网络推理任务进行切分,得到不同切分方式对应的参考前序子任务和参考后序子任务,包括:
按照所述第一切分方式,将所述参考深度神经网络推理任务切分为第一参考前序子任务和第一参考后序子任务;
按照所述第二切分方式,将所述参考深度神经网络推理任务切分为第二参考前序子任务和第二参考后序子任务;
所述获取在每种所述调度方式下,执行该种调度方式下的参考前序子任务所需的前序执行时间,和执行该种调度方式下的参考后序子任务所需的后序执行时间,包括:
获取在所述第一调度方式下,执行所述第一参考前序子任务所需的第一前序执行时间,以及执行所述第一参考后序子任务所需的第一后序执行时间;
获取在所述第二调度方式下,执行所述第二参考前序子任务所需的第二前序执行时间,以及执行所述第二参考后序子任务所需的第二后序执行时间。
可选地,所述根据不同调度方式下对应的所述前序执行时间和所述后序执行时间,从多个所述调度方式中确定目标调度方式,包括:
将所述第一前序执行时间和所述第一后序执行时间中较长的时间,确定为第一周期时间;
将所述第二前序执行时间和所述第二后序执行时间中较长的时间,确定为第二周期时间;
将所述第一周期时间和所述第二周期时间中较短的时间,确定为目标周期时间;
将所述目标周期时间对应的调度方式,确定为所述目标调度方式。
可选地,所述获取每种调度方式对应的切分方式,包括:
针对每种调度方式:
将所述参考深度神经网络推理任务切分为待调整前序子任务和待调整后序子任务;
将所述待调整前序子任务调度到该种调度方式下的前序运行环境中进行执行,并获取所述待调整前序子任务的执行时间;
将所述待调整后序子任务调度到该种调度方式下的后序运行环境中进行执行,并获取所述待调整后序子任务的执行时间;
根据所述待调整前序子任务的执行时间和所述待调整后序子任务的执行时间,确定是否满足停止调整条件;
在不满足所述停止调整条件的情况下,对所述待调整前序子任务和所述待调整后序子任务进行调整,直到满足所述停止调整条件;
根据满足所述停止调整条件时的所述待调整前序子任务和所述待调整后序子任务,确定该种调度方式对应的切分方式。
可选地,所述停止调整条件包括:所述待调整前序子任务的执行时间和所述待调整后序子任务的执行时间之间的差距小于阈值。
可选地,所述在不满足所述停止调整条件的情况下,对所述待调整前序子任务和所述待调整后序子任务进行调整,包括:
在不满足所述停止调整条件,且所述待调整前序子任务的执行时间大于所述待调整后序子任务的执行时间的情况下,将所述待调整前序子任务中的算子,划分到所述待调整后序子任务中;
在不满足所述停止调整条件,且所述待调整前序子任务的执行时间小于所述待调整后序子任务的执行时间的情况下,将所述待调整后序子任务中的算子,划分到所述待调整前序子任务中。
可选地,在所述GPU加速的运行环境为WebGL运行环境的情况下,所述方法还包括:
利用WebGL中的getError函数实现图形处理器同步。
本发明实施例的第二方面,提供了一种基于Web浏览器的深度神经网络推理调度装置,所述装置包括:
获取模块,用于获取第一深度神经网络推理任务和第二深度神经网络推理任务;
切分模块,用于按照目标切分方式,将所述第一深度神经网络推理任务切分为第一前序子任务和第一后序子任务,以及将所述第二深度神经网络推理任务切分为第二前序子任务和第二后序子任务;
确定模块,用于按照目标调度方式,确定前序运行环境和后序运行环境,所述前序运行环境为GPU加速的运行环境和WebAssembly运行环境中的一种,所述后序运行环境为所述GPU加速的运行环境和所述WebAssembly运行环境中,与所述前序运行环境不同的一种;
调度模块,用于将所述第一前序子任务和所述第二前序子任务先后调度到所述前序运行环境中进行执行,以及将所述第一后序子任务和所述第二后序子任务先后调度到所述后序运行环境中进行执行,其中,所述第一后序子任务和所述第二前序子任务是在所述第一前序子任务执行完成后执行的,所述第二后序子任务是在所述第二前序子任务执行完成后执行的。
可选地,在所述获取第一深度神经网络推理任务和第二深度神经网络推理任务之前,所述装置还包括:
任务获取模块,用于获取参考深度神经网络推理任务;
切分方式获取模块,用于确定不同调度方式,并获取每种调度方式对应的切分方式,每种调度方式包括:将所述GPU加速的运行环境和所述WebAssembly运行环境分别确定为前序运行环境和后序运行环境中不同的一种;
切分参考模块,用于按照每种调度方式对应的切分方式,对所述参考深度神经网络推理任务进行切分,得到不同切分方式对应的参考前序子任务和参考后序子任务;
时间获取模块,用于获取在每种所述调度方式下,执行该种调度方式下的参考前序子任务所需的前序执行时间,和执行该种调度方式下的参考后序子任务所需的后序执行时间;
目标确定模块,用于根据不同调度方式下对应的所述前序执行时间和所述后序执行时间,从多个所述调度方式中确定目标调度方式,并将所述目标调度方式对应的切分方式,确定为所述目标切分方式。
本发明实施例的第三方面,提供了一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面所述的基于Web浏览器的深度神经网络推理调度方法。
本发明实施例的第四方面,提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如第一方面所述的基于Web浏览器的深度神经网络推理调度方法。
本发明实施例包括以下优点:
本实施例中,通过将深度神经网络推理任务切分为两个子任务,并分别在两个不同的运行环境(GPU加速的运行环境和WebAssembly运行环境)中进行执行,在一个运行环境中执行一个深度神经网络推理任务的一个子任务的同时,另一个运行环境中执行另一个深度神经网络推理任务的一个子任务,以此实现了两个深度神经网络推理任务的并行执行,充分利用了Web浏览器内的异构运行环境(GPU加速的运行环境和WebAssembly运行环境),可以有效提高基于Web浏览器的深度神经网络推理任务的吞吐率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中一种基于Web浏览器的深度神经网络推理调度方法的步骤流程图;
图2是本发明实施例中Web浏览器异构环境内的深度神经网络推理调度技术框架的结构图;
图3是本发明实施例中一种基于Web浏览器的深度神经网络推理调度装置的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
在浏览器内存在着的多种异构的运行环境,不同运行环境分别对应着用户设备中的异构计算资源。例如,浏览器提供的WebAssembly(浏览器向网页提供的执行二进制程序的编程接口)运行环境,对应着用户设备中的中央处理器。浏览器提供的Web Worker(工作线程)运行环境,则基于用户中央处理器中的多核体系结构。浏览器提供的GPU(图形处理器)加速的运行环境,则基于用户设备中的图形处理器硬件。其中,GPU加速的运行环境可以为WebGL(浏览器向网页提供的图形处理单元的编程接口)运行环境或WebGPU(一种利用GPU的编程接口)运行环境。WebGPU是浏览器中提供的一种新的利用GPU的API,其作用与WebGL接近但是性能更高。可以在每个Web Worker运行环境中创建一个WebAssembly运行环境。在GPU加速的运行环境中,网页能够执行GPU的计算任务。在WebAssembly运行环境中,网页能够执行二进制程序,提高计算任务处理速度。
相关技术中的Web应用中的深度神经网络推理任务并没有高效地利用浏览器内多种异构的运行环境。相关技术中,Web应用在深度神经网络推理时只能选择一个特定的后端,因此在推理过程中用户设备上的其他计算资源会被浪费。例如,如果Web应用选择使用GPU加速的运行环境作为深度神经网络推理的后端,那么WebAssembly运行环境中的计算资源则在深度神经网络推理中被浪费。此外,仅仅在一个运行环境中,执行一个完整的深度神经网络推理任务效率较低。
为了解决上述技术问题,提升深度神经网络推理任务的吞吐率,本发明提出了一种基于Web浏览器的深度神经网络推理调度方法,该方法基于流水线式的思想,通过将深度神经网络推理任务进行切分,使不同深度神经网络推理任务的子任务在不同的运行环境中进行并行推理,从而提升深度神经网络推理任务的吞吐率,有效提升了效率。
参照图1所示,示出了本发明实施例中一种基于Web浏览器的深度神经网络推理调度方法的步骤流程图,如图1所示,该基于Web浏览器的深度神经网络推理调度方法具体可以包括步骤S11~步骤S14。
步骤S11:获取第一深度神经网络推理任务和第二深度神经网络推理任务。
第一深度神经网络推理任务可以是任意深度神经网络推理任务,第二深度神经网络推理任务以及后文的参考深度神经网络推理任务,均是与第一深度神经网络推理任务,具有相同算子的深度神经网络推理任务。
步骤S12:按照目标切分方式,将所述第一深度神经网络推理任务切分为第一前序子任务和第一后序子任务,以及将所述第二深度神经网络推理任务切分为第二前序子任务和第二后序子任务。
一个深度神经网络推理任务包括多个算子。目标切分方式可以是预先确定好的切分方式,目标切分方式的确定方法将在后文进行详述。根据目标切分方式,可以确定将深度神经网络推理任务中的哪些算子确定为前序子任务,以及将深度神经网络推理任务中的哪些算子确定为后序子任务。
可以理解的是,深度神经网络推理任务中的各个算子是按顺序执行的,一个深度神经网络推理任务的前序子任务中包括的各个算子的执行时间,早于该深度神经网络推理任务的后序子任务中包括的各个算子的执行时间。
步骤S13:按照目标调度方式,确定前序运行环境和后序运行环境。
其中,所述前序运行环境为GPU加速的运行环境和WebAssembly运行环境中的一种,所述后序运行环境为所述GPU加速的运行环境和所述WebAssembly运行环境中,与所述前序运行环境不同的一种。
目标调度方式可以是预先确定好的调度方式,目标调度方式的确定方法将在后文进行详述。根据目标调度方式可以确定前序运行环境和后序运行环境分别为异构运行环境中的什么运行环境。其中,前序运行环境和后序运行环境为不同的运行环境。
例如,可以将GPU加速的运行环境确定为前序运行环境,并将WebAssembly运行环境确定为后序运行环境;也可以将WebAssembly运行环境确定为前序运行环境,并将GPU加速的运行环境确定为后序运行环境。其中,WebAssembly运行环境可以为对应中央处理器的运行环境,也可以为Web Worker创建的WebAssembly运行环境。
前序运行环境中用于执行前序子任务,后序运行环境中用于执行后序子任务。
步骤S14:将所述第一前序子任务和所述第二前序子任务先后调度到所述前序运行环境中进行执行,以及将所述第一后序子任务和所述第二后序子任务先后调度到所述后序运行环境中进行执行。
其中,所述第一后序子任务和所述第二前序子任务是在所述第一前序子任务执行完成后执行的,所述第二后序子任务是在所述第二前序子任务执行完成后执行的。
在确定了前序运行环境和后序运行环境,以及完成了对深度神经网络推理任务的切分之后,只需将深度神经网络推理任务的子任务,调度到相应的运行环境中进行执行,即可实现深度神经网络推理任务的并行推理。
具体地,先将第一深度神经网络推理任务的第一前序子任务调度到前序运行环境中进行执行;在第一前序子任务执行完毕后,将第一深度神经网络推理任务的第一后序子任务调度到后序运行环境中进行执行,同时将第二深度神经网络推理任务的第二前序子任务调度到前序运行环境中进行执行,以实现第一后序子任务和第二前序子任务的并行推理;在第一后序子任务执行完毕且第二前序子任务也执行完毕之后,将第二后序子任务调度到后序运行环境中进行执行;同时将第三深度神经网络推理任务的第三前序子任务调度到前序运行环境中进行执行,实现第二后序子任务和第三前序子任务的并行推理。可以理解的是,第三深度神经网络推理任务是与第二深度神经网络推理任务具有相同算子的深度神经网络推理任务,第三前序子任务的获取方法与第二前序子任务的获取方法相同。
如此,基于流水线的思想,在存在多个深度神经网络推理任务的情况下,使每个深度神经网络推理任务的前序子任务,与上一深度神经网络推理任务的后序子任务并行执行,从而充分利用了浏览器内存在着的多种异构运行环境,大大提高了深度神经网络推理任务的吞吐率,有效提升效率。
图2是本发明实施例中Web浏览器异构环境内的深度神经网络推理调度技术框架的结构图,图2中的Wasm是WebAssembly的简写,如图2所示,该框架由调度器、GPU推理引擎、WebAssembly推理引擎三部分构成,该框架为一个JavaScript(一种计算机编程语言)库,可以嵌入网页之中,在网页完成度神经网络的加载任务之后执行相应的调度任务。其中,GPU推理引擎是在GPU加速的运行环境中创建的用于执行深度神经网络推理任务的引擎,WebAssembly推理引擎是在WebAssembly运行环境中创建的用于执行深度神经网络推理任务的引擎。
调度器负责调度浏览器内深度神经网络推理任务在异构运行环境中的执行过程。具体来说,调度器负责创建、初始化浏览器内的异构运行环境。在调度过程中,调度器将维护当前各个运行环境的任务执行情况。在新的深度神经网络推理任务到来时,调度器将根据当前异构环境的执行情况,为推理任务安排最优的执行环境。同时,调度器负责与各个运行环境同步,以监控任务执行过程,并返回深度神经网络推理结果。根据任务的实时执行情况,调度器会调节任务的切分方式,使得调度器能够更好地利用浏览器内的异构运行环境,提高深度神经网络推理任务的吞吐率。
GPU推理引擎将接受调度器安排的推理任务,执行任务并获得结果。GPU推理引擎将利用浏览器中的GPU加速的运行环境,在图形处理器中执行深度神经网络的计算任务。在执行推理任务之前,此引擎会执行初始化步骤,即将深度神经网络的参数上传到图形处理器中,并提前编译好在图形处理器中需要执行的GPU程序的二进制代码。
WebAssembly推理引擎则利用浏览器中的WebAssembly编程接口来执行深度神经网络推理任务。在执行之前,每一个WebAssembly执行引擎都会初始化执行环境,包括下载算子的实现代码,创建WebAssembly引擎所需的内存空间,并将深度神经网络的参数传输到此段内存之中。
本发明实施例提出的Web浏览器异构环境内的深度神经网络推理调度技术框架,其运行流程包括两个阶段,分别是在Web浏览器中异构的运行环境中调度计算任务的,以及执行深度学习计算任务。这两部分的任务分别由调度器和异构的推理引擎完成。
调度器在主线程上创建一个GPU推理引擎,在多个Web worker上均创建WebAssembly推理引擎。调度器以流水线方式调度深度神经网络的推理过程。当调度器收到一个深度神经网络推理任务时,调度器将深度神经网络推理任务划分为两个子任务,并度量GPU推理引擎和WebAssembly推理引擎执行两个子任务的时间。之后,根据度量结果,调度器决定使用GPU推理引擎或其中一个WebAssembly推理引擎执行深度神经网络推理的前一部分,然后在另一个引擎上执行深度神经网络推理的后一部分。由于深度神经网络的不同部分在不同的运行环境中推理,因此该框架可以利用流水线并行来调度相邻的深度神经网络推理任务到不同的运行环境中并行执行。在前一个深度神经网络推理任务完成前序子任务的执行过程后,后一个深度神经网络推理任务的前序子任务可以立即开始。因此,调度器通过流水线并行实现了更高的深度神经网络推理吞吐率。
调度器的主要目标是要将深度神经网络推理任务调度到不同的运行环境中执行。调度策略需要满足以下两点要求:(1)在调度过程中,该框架需要保证深度神经网络推理任务的完成顺序和任务的到达顺序保持一致,即前一帧的深度神经网络推理任务需要在后一帧的模型推理任务完成之前先完成。(2)在调度时需要考虑到浏览器内异构运行环境的特殊限制条件,尽量减少异构运行环境之间的同步操作开销。在以上的两点要求下,该框架调度器需要合理调度深度神经网络推理任务到浏览器内不同的运行环境中执行,以充分利用设备中的异构计算资源来提高深度神经网络推理的吞吐率。
为了满足环境的约束以及充分利用浏览器内异构运行环境,调度器设计了流水线式的深度神经网络推理任务调度方案。对于某次深度神经网络的推理任务,该框架的调度器会将此次推理任务划分为两部分,并调度两部分的推理任务到不同的运行环境中执行。以下将以具体的示例来介绍该框架调度器的调度过程。
首先调度器会先将深度神经网络推理任务切分为前序子任务和后序子任务。首先,调度器得到深度神经网络的执行过程中算子的执行顺序,并按照执行过程将算子均匀地分为两部分。其中,前半部分执行过程中执行的算子归为第一部分,后半部分执行过程中执行的算子则归为第二部分。之后,调度器会在两个执行引擎中分别执行这两部分任务,并度量相应的执行时间。根据执行时间,调度器比较将前序子任务的算子调度到两种不同的引擎中的总执行时间,并从中选择执行时间较短的方案来作为调度器的目标方案。
假设在调度器的目标调度方案中,深度神经网络的前序子任务将会在GPU加速的运行环境中推理,而后一部分将会在Web worker中的WebAssembly运行环境中推理。当调度器收到前序子任务时,执行器将在主线程的GPU加速的运行环境中执行前序子任务,然后调度器将与GPU同步并等待计算完成。计算完成后,调度器将从GPU加速的运行环境中读取前序子任务的推理结果,并将推理结果发送给一个空闲的Web worker。如果当时没有空闲的Web Worker,调度器会将推理结果缓存下来。缓存下的推理结果将在某个Web worker执行完毕并返回结果之后取走。当Web worker取得前序子任务的推理结果之后,将在WebAssembly运行环境中执行后序子任务的推理。在深度神经网络推理过程之中,Webworker不会接收新的推理任务。之后当Web Worker完成推理后,会将深度神经网络推理的最终结果发送到主线程。主线程接收结果并将结果交给用户。
由于同一个深度神经网络推理任务被划分到了不同的运行环境中执行,因此当该框架的调度执行前一个深度神经网络推理任务的后序子任务时,后一个深度神经网络推理任务的前序子任务将在另一个环境中执行。两个相邻的深度神经网络推理任务以流水线的方式并行起来。
为了达到最大的深度神经网络推理吞吐率,流水线调度方案要求在GPU加速的运行环境和WebAssembly运行环境中的深度神经网络推理任务所花费的时间大致相同。深度神经网络推理任务的前序子任务或后序子任务在GPU加速的运行环境和WebAssembly运行环境中的所花费的时间,可以通过改变切分方式进行调整。可以理解的是,在同一运行环境中,前序子任务中包含的算子越多,则后序子任务中包含的算子越少,且前序子任务的执行时间越长。因此,可以通过参考深度神经网络推理任务,确定目标切分方式和目标调度方式。根据目标切分方式和目标调度方式,可以使深度神经网络推理任务的吞吐率最大。
通过参考深度神经网络推理任务,确定目标切分方式和目标调度方式的步骤可以包括:确定不同调度方式,并获取每种调度方式对应的切分方式,每种调度方式包括:将所述GPU加速的运行环境和所述WebAssembly运行环境分别确定为前序运行环境和后序运行环境中不同的一种;按照每种调度方式对应的切分方式,对所述参考深度神经网络推理任务进行切分,得到不同切分方式对应的参考前序子任务和参考后序子任务;获取在每种所述调度方式下,执行该种调度方式下的参考前序子任务所需的前序执行时间,和执行该种调度方式下的参考后序子任务所需的后序执行时间;根据不同调度方式下对应的所述前序执行时间和所述后序执行时间,从多个所述调度方式中确定目标调度方式,并将所述目标调度方式对应的切分方式,确定为所述目标切分方式。
不同的调度方式包括两种,可以命名为第一调度方式和第二调度方式;第一调度方式可以为:将GPU加速的运行环境确定为前序运行环境,并将WebAssembly运行环境确定为后序运行环境;第二调度方式可以为:将WebAssembly运行环境确定为前序运行环境,并将GPU加速的运行环境确定为后序运行环境。其中,第一调度方式对应的最佳切分方式为第一切分方式,所述第二调度方式对应的最佳切分方式为第二切分方式。
下面介绍第一切分方式和第二切分方式的确定方法。
针对每种调度方式:将所述参考深度神经网络推理任务切分为待调整前序子任务和待调整后序子任务;将所述待调整前序子任务调度到该种调度方式下的前序运行环境中进行执行,并获取所述待调整前序子任务的执行时间;将所述待调整后序子任务调度到该种调度方式下的后序运行环境中进行执行,并获取所述待调整后序子任务的执行时间;根据所述待调整前序子任务的执行时间和所述待调整后序子任务的执行时间,确定是否满足停止调整条件;在不满足所述停止调整条件的情况下,对所述待调整前序子任务和待调整后序子任务进行调整,直到满足所述停止调整条件;根据满足所述停止调整条件时的所述待调整前序子任务和所述待调整后序子任务,确定该种调度方式对应的切分方式。
在每种调度方式中,已经确定了前序运行环境和后序运行环境。在将参考参考深度神经网络推理任务切分为待调整前序子任务和待调整后序子任务时,可以是随机进行切分,也可以根据算子数量,将多个算子均分为待调整前序子任务和待调整后序子任务。
将待调整前序子任务调度到该种调度方式下的前序运行环境中进行执行,并获取待调整前序子任务的执行时间;将待调整后序子任务调度到该种调度方式下的后序运行环境中进行执行,并获取待调整后序子任务的执行时间。
停止调整条件可以为:待调整前序子任务的执行时间和待调整后序子任务的执行时间之间的差距小于阈值。阈值可以根据需求进行设置。例如,以T1表征待调整前序子任务的执行时间,以T2表征待调整后序子任务的执行时间,阈值可以设置为T2*10%,则停止调整条件可以为∣T1-T2∣<T2*10%。
在不满足停止调整条件的情况下,可以将执行时间较长的子任务中的算子,调整到另一子任务中,并判断调整后的前序子任务的执行时间和后序子任务的执行时间是否满足停止调整条件,若不满足,则继续进行调整,直到满足停止调整条件;根据满足停止调整条件时的待调整前序子任务和待调整后序子任务,确定参考深度神经网络推理任务中各个算子所属的子任务,从而确定该种调度方式对应的切分方式。
在不满足停止调整条件的情况下,对待调整前序子任务和待调整后序子任务进行调整可以包括:在所述待调整前序子任务的执行时间大于所述待调整后序子任务的执行时间的情况下,将所述待调整前序子任务中的算子,划分到所述待调整后序子任务中;在所述待调整前序子任务的执行时间小于所述待调整后序子任务的执行时间的情况下,将所述待调整后序子任务中的算子,划分到所述待调整前序子任务中。
因为子任务包含的算子越多,执行时间则越长。因此,若待调整前序子任务的执行时间大于待调整后序子任务的执行时间,则可以将待调整前序子任务中的算子,划分到待调整后序子任务中。若待调整前序子任务的执行时间小于待调整后序子任务的执行时间,则可以将待调整后序子任务中的算子,划分到待调整前序子任务中。可以根据待调整前序子任务的执行时间和待调整后序子任务的执行时间之间的差距大小,确定每次调整的算子的数量。
如此,可以确定每种调度方式对应的切分方式,即确定第一切分方式和第二切分方式。
在根据不同调度方式下对应的前序执行时间和后序执行时间,从多个调度方式中确定目标调度方式时,可以是根据每种调度方式下对应的前序执行时间和后序执行时间,确定该种调度方式下的周期时间,然后根据周期施加确定目标调度方式。
第一调度方式中GPU加速的运行环境为前序运行环境,WebAssembly运行环境为后序运行环境。按照第一切分方式,将参考深度神经网络推理任务切分为第一参考前序子任务和第一参考后序子任务。将第一参考前序子任务调度到GPU加速的运行环境中进行执行,得到第一前序执行时间;将第一参考后序子任务调度到WebAssembly运行环境中进行执行,得到第一后序执行时间。在多个深度神经网络推理任务按流水线方式并行执行时,每个深度神经网络推理任务所需的时间由两个子任务中执行时间最长的子任务确定,因此,可以将第一前序执行时间和第一后序执行时间中较长的时间,确定为第一周期时间。
第二调度方式中WebAssembly运行环境为前序运行环境,GPU加速的运行环境为后序运行环境。按照第二切分方式,将参考深度神经网络推理任务切分为第二参考前序子任务和第二参考后序子任务。将第二参考前序子任务调度到WebAssembly运行环境中进行执行,得到第二前序执行时间;将第二参考后序子任务调度到GPU加速的运行环境中进行执行,得到第二后序执行时间。将第二前序执行时间和第二后序执行时间中较长的时间,确定为第二周期时间。
为了减小每个深度神经网络推理任务所需的时间,可以将第一周期时间和第二周期时间中较短的时间,确定为目标周期时间;并将目标周期时间对应的调度方式,确定为目标调度方式。例如,在第一周期时间短于第二周期时间的情况下,则将第一调度方式确定为目标调度方式,并将第一调度方式对应的第一切分方式确定为目标切分方式。在第一周期时间长于第二周期时间的情况下,则将第二调度方式确定为目标调度方式,并将第二调度方式对应的第二切分方式确定为目标切分方式。
在深度神经网络推理过程中,实际深度神经网络推理时间会逐渐变化。推理时间的变化可能会导致原有的最优划分方案的变得不均衡,从而降低流水线并行的推理效率。造成推理时间变化的主要原因是浏览器中对JavaScript代码的即时编译(Just-In-TimeCompilation,JIT)。对于反复执行的JavaScript函数,浏览器可能会选择将其代码编译为底层的二进制代码来加快其执行的速度。这一步骤是由浏览器自动进行的,Web应用无法知悉或控制某个函数是否被浏览器优化。JIT技术加快了Web应用代码的执行速度,但是也使得深度神经网络推理任务的实际执行时间产生变化。这些变化使得深度学***衡不同运行环境中的深度神经网络推理任务的执行时间,从而导致资源的浪费以及模型推理吞吐率的降低。
因此,在流水线式对多个深度神经网络推理任务进行并行推理的过程中,可以实时或按周期对前序子任务的执行时间和后序子任务的执行时间进行监测,并在前序子任务的执行时间和后序子任务的执行时间不满足停止调整条件的情况下,对前序子任务和后序子任务的包含的算子进行动态调整,以使前序子任务的执行时间和后序子任务的执行时间满足停止调整条件。通过动态调整可以抵消在深度神经网络推理任务执行过程中JIT的影响,保证流水线调度策略高效地运行。
WebAssembly运行环境是由中央处理器提供的,因此子任务在WebAssembly运行环境中的执行时间,可以直接获取到。GPU加速的运行环境是由图形处理器提供的,因此子任务在GPU加速的运行环境中的执行时间,需要进行同步才能获取到。在GPU加速的运行环境为WebGL运行环境或WebGPU运行环境中,通过同步,可以确定GPU加速的运行环境中的子任务是否执行完毕。
自从WebGL 2.0规范发布以来,WebSync(一种同步方法)就一直是WebGL运行环境中唯一的同步方法。然而,现代浏览器在WebGLSync API的实现中引入了许多优化,来保证Web应用的执行不会被WebGLSync的同步操作阻塞,避免影响Web应用及时响应用户与应用的交互操作。因此在该框架中,本发明实施例使用了一种巧妙的方法来阻塞主线程来等待WebGL执行完毕。本发明人注意到WebGL提供了名为WebGLRenderingContext getError()的WebGL API。根据规范,这个API将返回图形处理器在执行WebGL调用时是否发生了任何错误。因此,当Web应用调用这个API时,浏览器将等待图形处理器完成所有先前的WebGL调用,之后再从图形处理器查询是否发生了任何错误。此外,该API并未涉及在Web应用和图形处理器之间传输大量的数据,因此这意味着Web应用可以用这个API来实现轻量级的、阻塞式的WebGL的同步。
因此,本发明实施例在GPU加速的运行环境为WebGL运行环境的情况下,可以使用WebGL中的getError()函数来实现WebGL同步,以减少浏览器内WebGLSync对象的非阻塞式同步所引入的额外的时间开销。
本发明实施例提出了浏览器异构环境内的深度神经网络推理调度技术框架,基于浏览器内的异构运行环境来优化Web应用内深度神经网络推理的吞吐率。该框架根据浏览器内异构运行环境的特点,制定了流水线式的深度神经网络推理过程。对于某个深度神经网络,该框架会根据其在浏览器内异构运行环境的执行时间,合理地调度深度神经网络推理任务中的各个部分到不同的浏览器运行环境中执行。因此该框架能将相邻的两次深度神经网络推理任务通过流水线的方式在浏览器异构的运行环境中并行执行,提高深度神经网络推理的吞吐率。
本发明实施例在WebGL运行环境中评估了该框架的性能与开销。本发明实施例的实验环境由4台设备和2种Web浏览器组成,共计8种不同的实验环境。在这些实验环境中,本发明实施例度量了该框架在不同深度神经网络上的推理吞吐率。与此同时,本发明实施例选取了原生的WebGL、WebAssembly引擎、仅基于Web Worker的并行推理作为基准方法,并将这些基准方法所能达到的深度神经网络推理吞吐率与该框架的推理吞吐率做比较。评估结果表明该框架在所有模型、所有运行环境中的吞吐率都优于现有的基准工作所能达到的推理吞吐率。与基准工作所能达到的最大吞吐率相比,该框架的推理吞吐率平均是其1.91倍,并且这个倍数最大能达到到3.40倍。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图3是本发明实施例的一种基于Web浏览器的深度神经网络推理调度装置的结构示意图,如图3所示,所述装置包括获取模块、切分模块、确定模块和调度模块,其中:
获取模块,用于获取第一深度神经网络推理任务和第二深度神经网络推理任务;
切分模块,用于按照目标切分方式,将所述第一深度神经网络推理任务切分为第一前序子任务和第一后序子任务,以及将所述第二深度神经网络推理任务切分为第二前序子任务和第二后序子任务;
确定模块,用于按照目标调度方式,确定前序运行环境和后序运行环境,所述前序运行环境为GPU加速的运行环境和WebAssembly运行环境中的一种,所述后序运行环境为所述GPU加速的运行环境和所述WebAssembly运行环境中,与所述前序运行环境不同的一种;
调度模块,用于将所述第一前序子任务和所述第二前序子任务先后调度到所述前序运行环境中进行执行,以及将所述第一后序子任务和所述第二后序子任务先后调度到所述后序运行环境中进行执行,其中,所述第一后序子任务和所述第二前序子任务是在所述第一前序子任务执行完成后执行的,所述第二后序子任务是在所述第二前序子任务执行完成后执行的。
可选地,在所述获取第一深度神经网络推理任务和第二深度神经网络推理任务之前,所述装置还包括:
任务获取模块,用于获取参考深度神经网络推理任务;
切分方式获取模块,用于确定不同调度方式,并获取每种调度方式对应的切分方式,每种调度方式包括:将所述GPU加速的运行环境和所述WebAssembly运行环境分别确定为前序运行环境和后序运行环境中不同的一种;
切分参考模块,用于按照每种调度方式对应的切分方式,对所述参考深度神经网络推理任务进行切分,得到不同切分方式对应的参考前序子任务和参考后序子任务;
时间获取模块,用于获取在每种所述调度方式下,执行该种调度方式下的参考前序子任务所需的前序执行时间,和执行该种调度方式下的参考后序子任务所需的后序执行时间;
目标确定模块,用于根据不同调度方式下对应的所述前序执行时间和所述后序执行时间,从多个所述调度方式中确定目标调度方式,并将所述目标调度方式对应的切分方式,确定为所述目标切分方式。
可选地,所述不同调度方式包括第一调度方式和第二调度方式;所述第一调度方式为:将所述GPU加速的运行环境确定为前序运行环境,并将所述WebAssembly运行环境确定为后序运行环境;所述第二调度方式为:将所述WebAssembly运行环境确定为前序运行环境,并将所述GPU加速的运行环境确定为后序运行环境;所述第一调度方式对应第一切分方式,所述第二调度方式对应第二切分方式;
所述切分参考模块具体用于执行:
按照所述第一切分方式,将所述参考深度神经网络推理任务切分为第一参考前序子任务和第一参考后序子任务;
按照所述第二切分方式,将所述参考深度神经网络推理任务切分为第二参考前序子任务和第二参考后序子任务;
所述时间获取模块具体用于执行:
获取在所述第一调度方式下,执行所述第一参考前序子任务所需的第一前序执行时间,以及执行所述第一参考后序子任务所需的第一后序执行时间;
获取在所述第二调度方式下,执行所述第二参考前序子任务所需的第二前序执行时间,以及执行所述第二参考后序子任务所需的第二后序执行时间。
可选地,所述目标确定模块具体用于执行:
将所述第一前序执行时间和所述第一后序执行时间中较长的时间,确定为第一周期时间;
将所述第二前序执行时间和所述第二后序执行时间中较长的时间,确定为第二周期时间;
将所述第一周期时间和所述第二周期时间中较短的时间,确定为目标周期时间;
将所述目标周期时间对应的调度方式,确定为所述目标调度方式。
可选地,所述切分方式获取模块具体用于执行:
针对每种调度方式:
将所述参考深度神经网络推理任务切分为待调整前序子任务和待调整后序子任务;
将所述待调整前序子任务调度到该种调度方式下的前序运行环境中进行执行,并获取所述待调整前序子任务的执行时间;
将所述待调整后序子任务调度到该种调度方式下的后序运行环境中进行执行,并获取所述待调整后序子任务的执行时间;
根据所述待调整前序子任务的执行时间和所述待调整后序子任务的执行时间,确定是否满足停止调整条件;
在不满足所述停止调整条件的情况下,对所述待调整前序子任务和所述待调整后序子任务进行调整,直到满足所述停止调整条件;
根据满足所述停止调整条件时的所述待调整前序子任务和所述待调整后序子任务,确定该种调度方式对应的切分方式。
可选地,所述停止调整条件包括:所述待调整前序子任务的执行时间和所述待调整后序子任务的执行时间之间的差距小于阈值。
可选地,所述在不满足所述停止调整条件的情况下,对所述待调整前序子任务和所述待调整后序子任务进行调整,包括:
在不满足所述停止调整条件,且所述待调整前序子任务的执行时间大于所述待调整后序子任务的执行时间的情况下,将所述待调整前序子任务中的算子,划分到所述待调整后序子任务中;
在不满足所述停止调整条件,且所述待调整前序子任务的执行时间小于所述待调整后序子任务的执行时间的情况下,将所述待调整后序子任务中的算子,划分到所述待调整前序子任务中。
可选地,在所述GPU加速的运行环境为WebGL运行环境的情况下,所述装置还包括:
同步模块,用于利用WebGL中的getError函数实现图形处理器同步。
需要说明的是,装置实施例与方法实施例相近,故描述的较为简单,相关之处参见方法实施例即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、装置、电子设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种基于Web浏览器的深度神经网络推理调度方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种基于Web浏览器的深度神经网络推理调度方法,其特征在于,所述方法包括:
获取第一深度神经网络推理任务和第二深度神经网络推理任务;
按照目标切分方式,将所述第一深度神经网络推理任务切分为第一前序子任务和第一后序子任务,以及将所述第二深度神经网络推理任务切分为第二前序子任务和第二后序子任务;
按照目标调度方式,确定前序运行环境和后序运行环境,所述前序运行环境为GPU加速的运行环境和WebAssembly运行环境中的一种,所述后序运行环境为所述GPU加速的运行环境和所述WebAssembly运行环境中,与所述前序运行环境不同的一种;
将所述第一前序子任务和所述第二前序子任务先后调度到所述前序运行环境中进行执行,以及将所述第一后序子任务和所述第二后序子任务先后调度到所述后序运行环境中进行执行,其中,所述第一后序子任务和所述第二前序子任务是在所述第一前序子任务执行完成后执行的,所述第二后序子任务是在所述第二前序子任务执行完成后执行的;
在所述获取第一深度神经网络推理任务和第二深度神经网络推理任务之前,所述方法还包括:
获取参考深度神经网络推理任务;
确定不同调度方式,并获取每种调度方式对应的切分方式,每种调度方式包括:将所述GPU加速的运行环境和所述WebAssembly运行环境分别确定为前序运行环境和后序运行环境中不同的一种;
按照每种调度方式对应的切分方式,对所述参考深度神经网络推理任务进行切分,得到不同切分方式对应的参考前序子任务和参考后序子任务;
获取在每种所述调度方式下,执行该种调度方式下的参考前序子任务所需的前序执行时间,和执行该种调度方式下的参考后序子任务所需的后序执行时间;
根据不同调度方式下对应的所述前序执行时间和所述后序执行时间,从多个所述调度方式中确定目标调度方式,并将所述目标调度方式对应的切分方式,确定为所述目标切分方式。
2.根据权利要求1所述的方法,其特征在于,所述不同调度方式包括第一调度方式和第二调度方式;所述第一调度方式为:将所述GPU加速的运行环境确定为前序运行环境,并将所述WebAssembly运行环境确定为后序运行环境;所述第二调度方式为:将所述WebAssembly运行环境确定为前序运行环境,并将所述GPU加速的运行环境确定为后序运行环境;所述第一调度方式对应第一切分方式,所述第二调度方式对应第二切分方式;
所述按照每种调度方式对应的切分方式,对所述参考深度神经网络推理任务进行切分,得到不同切分方式对应的参考前序子任务和参考后序子任务,包括:
按照所述第一切分方式,将所述参考深度神经网络推理任务切分为第一参考前序子任务和第一参考后序子任务;
按照所述第二切分方式,将所述参考深度神经网络推理任务切分为第二参考前序子任务和第二参考后序子任务;
所述获取在每种所述调度方式下,执行该种调度方式下的参考前序子任务所需的前序执行时间,和执行该种调度方式下的参考后序子任务所需的后序执行时间,包括:
获取在所述第一调度方式下,执行所述第一参考前序子任务所需的第一前序执行时间,以及执行所述第一参考后序子任务所需的第一后序执行时间;
获取在所述第二调度方式下,执行所述第二参考前序子任务所需的第二前序执行时间,以及执行所述第二参考后序子任务所需的第二后序执行时间。
3.根据权利要求2所述的方法,其特征在于,所述根据不同调度方式下对应的所述前序执行时间和所述后序执行时间,从多个所述调度方式中确定目标调度方式,包括:
将所述第一前序执行时间和所述第一后序执行时间中较长的时间,确定为第一周期时间;
将所述第二前序执行时间和所述第二后序执行时间中较长的时间,确定为第二周期时间;
将所述第一周期时间和所述第二周期时间中较短的时间,确定为目标周期时间;
将所述目标周期时间对应的调度方式,确定为所述目标调度方式。
4.根据权利要求1所述的方法,其特征在于,所述获取每种调度方式对应的切分方式,包括:
针对每种调度方式:
将所述参考深度神经网络推理任务切分为待调整前序子任务和待调整后序子任务;
将所述待调整前序子任务调度到该种调度方式下的前序运行环境中进行执行,并获取所述待调整前序子任务的执行时间;
将所述待调整后序子任务调度到该种调度方式下的后序运行环境中进行执行,并获取所述待调整后序子任务的执行时间;
根据所述待调整前序子任务的执行时间和所述待调整后序子任务的执行时间,确定是否满足停止调整条件;
在不满足所述停止调整条件的情况下,对所述待调整前序子任务和所述待调整后序子任务进行调整,直到满足所述停止调整条件;
根据满足所述停止调整条件时的所述待调整前序子任务和所述待调整后序子任务,确定该种调度方式对应的切分方式。
5.根据权利要求4所述的方法,其特征在于,所述停止调整条件包括:所述待调整前序子任务的执行时间和所述待调整后序子任务的执行时间之间的差距小于阈值。
6.根据权利要求4所述的方法,其特征在于,所述在不满足所述停止调整条件的情况下,对所述待调整前序子任务和所述待调整后序子任务进行调整,包括:
在不满足所述停止调整条件,且所述待调整前序子任务的执行时间大于所述待调整后序子任务的执行时间的情况下,将所述待调整前序子任务中的算子,划分到所述待调整后序子任务中;
在不满足所述停止调整条件,且所述待调整前序子任务的执行时间小于所述待调整后序子任务的执行时间的情况下,将所述待调整后序子任务中的算子,划分到所述待调整前序子任务中。
7.根据权利要求1-6任一所述的方法,其特征在于,在所述GPU加速的运行环境为WebGL运行环境的情况下,所述方法还包括:
利用WebGL中的getError函数实现图形处理器同步。
8.一种基于Web浏览器的深度神经网络推理调度装置,其特征在于,所述装置包括:
获取模块,用于获取第一深度神经网络推理任务和第二深度神经网络推理任务;
切分模块,用于按照目标切分方式,将所述第一深度神经网络推理任务切分为第一前序子任务和第一后序子任务,以及将所述第二深度神经网络推理任务切分为第二前序子任务和第二后序子任务;
确定模块,用于按照目标调度方式,确定前序运行环境和后序运行环境,所述前序运行环境为GPU加速的运行环境和WebAssembly运行环境中的一种,所述后序运行环境为所述GPU加速的运行环境和所述WebAssembly运行环境中,与所述前序运行环境不同的一种;
调度模块,用于将所述第一前序子任务和所述第二前序子任务先后调度到所述前序运行环境中进行执行,以及将所述第一后序子任务和所述第二后序子任务先后调度到所述后序运行环境中进行执行,其中,所述第一后序子任务和所述第二前序子任务是在所述第一前序子任务执行完成后执行的,所述第二后序子任务是在所述第二前序子任务执行完成后执行的;
在所述获取第一深度神经网络推理任务和第二深度神经网络推理任务之前,所述装置还包括:
任务获取模块,用于获取参考深度神经网络推理任务;
切分方式获取模块,用于确定不同调度方式,并获取每种调度方式对应的切分方式,每种调度方式包括:将所述GPU加速的运行环境和所述WebAssembly运行环境分别确定为前序运行环境和后序运行环境中不同的一种;
切分参考模块,用于按照每种调度方式对应的切分方式,对所述参考深度神经网络推理任务进行切分,得到不同切分方式对应的参考前序子任务和参考后序子任务;
时间获取模块,用于获取在每种所述调度方式下,执行该种调度方式下的参考前序子任务所需的前序执行时间,和执行该种调度方式下的参考后序子任务所需的后序执行时间;
目标确定模块,用于根据不同调度方式下对应的所述前序执行时间和所述后序执行时间,从多个所述调度方式中确定目标调度方式,并将所述目标调度方式对应的切分方式,确定为所述目标切分方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310538682.0A CN116542334B (zh) | 2023-05-12 | 2023-05-12 | 基于Web浏览器的深度神经网络推理调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310538682.0A CN116542334B (zh) | 2023-05-12 | 2023-05-12 | 基于Web浏览器的深度神经网络推理调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116542334A CN116542334A (zh) | 2023-08-04 |
CN116542334B true CN116542334B (zh) | 2023-10-20 |
Family
ID=87453883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310538682.0A Active CN116542334B (zh) | 2023-05-12 | 2023-05-12 | 基于Web浏览器的深度神经网络推理调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116542334B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111881401A (zh) * | 2020-08-04 | 2020-11-03 | 浪潮云信息技术股份公司 | 基于WebAssembly的浏览器深度学习方法及*** |
CN112817730A (zh) * | 2021-02-24 | 2021-05-18 | 上海交通大学 | 深度神经网络服务批处理调度方法、***及gpu |
WO2022262167A1 (zh) * | 2021-06-15 | 2022-12-22 | 上海商汤科技开发有限公司 | 集群资源调度方法及装置、电子设备和存储介质 |
-
2023
- 2023-05-12 CN CN202310538682.0A patent/CN116542334B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111881401A (zh) * | 2020-08-04 | 2020-11-03 | 浪潮云信息技术股份公司 | 基于WebAssembly的浏览器深度学习方法及*** |
CN112817730A (zh) * | 2021-02-24 | 2021-05-18 | 上海交通大学 | 深度神经网络服务批处理调度方法、***及gpu |
WO2022262167A1 (zh) * | 2021-06-15 | 2022-12-22 | 上海商汤科技开发有限公司 | 集群资源调度方法及装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116542334A (zh) | 2023-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11449364B2 (en) | Processing in a multicore processor with different cores having different architectures | |
US20120324454A1 (en) | Control Flow Graph Driven Operating System | |
CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
CN111367630A (zh) | 一种基于云计算的多用户多优先级的分布式协同处理方法 | |
CN110717574B (zh) | 一种神经网络运行方法、装置及异构智能芯片 | |
CN104636204A (zh) | 一种任务调度方法与装置 | |
CN114217966A (zh) | 基于资源调整的深度学习模型动态批处理调度方法和*** | |
CA2433379A1 (en) | Modulo scheduling of multiple instruction chains | |
Kwon et al. | Multicore scheduling of parallel real-time tasks with multiple parallelization options | |
CN112748993A (zh) | 任务执行方法、装置、存储介质及电子设备 | |
CN107943592B (zh) | 一种面向gpu集群环境的避免gpu资源争用的方法 | |
CN111459647B (zh) | 基于嵌入式操作***的dsp多核处理器并行运算方法及装置 | |
CN111176637B (zh) | 基于缓存抢占延迟约束下aadl模型的可调度性分析方法 | |
CN116542334B (zh) | 基于Web浏览器的深度神经网络推理调度方法和装置 | |
Gharajeh et al. | Heuristic-based task-to-thread mapping in multi-core processors | |
CN103810041A (zh) | 一种支持动态伸缩的并行计算的方法 | |
CN112181689A (zh) | 一种在云端下进行gpu内核程序高效率调度的运行时*** | |
WO2013165460A1 (en) | Control flow graph driven operating system | |
CN114356550A (zh) | 一种面向三级并行中间件的计算资源自动分配方法及*** | |
CN103645952A (zh) | 一种基于MapReduce的非精确任务并行处理方法 | |
KR102261021B1 (ko) | 실시간 태스크 시퀀스 플랜을 구성하고 실행하는 방법 | |
CN110532091B (zh) | 基于图形处理器的图计算边向量负载平衡方法及装置 | |
Cao et al. | Improved DAG tasks stretching algorithm based on multi-core processors | |
CN116739090B (zh) | 基于Web浏览器的深度神经网络推理度量方法和装置 | |
Chung et al. | Scheduling across multiple applications using task-based programming models |
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 |