CN113360259A - 一种应用于面向云端深度学习推理的分布式fpga多任务调度算法 - Google Patents
一种应用于面向云端深度学习推理的分布式fpga多任务调度算法 Download PDFInfo
- Publication number
- CN113360259A CN113360259A CN202110594180.0A CN202110594180A CN113360259A CN 113360259 A CN113360259 A CN 113360259A CN 202110594180 A CN202110594180 A CN 202110594180A CN 113360259 A CN113360259 A CN 113360259A
- Authority
- CN
- China
- Prior art keywords
- fpga
- node
- delay
- task
- instruction
- 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
Links
Images
Classifications
-
- 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
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种应用于面向云端深度学习推理的分布式FPGA多任务调度算法,包括:面向多节点FPGA现场可编程门阵列的两阶段静态‑动态编译器,具体包括:基于切分的静态编译器生成沿宽度切分或沿输出通道切分的细粒度指令包;通过考虑多节点FPGA通信代价的延时仿真器,根据细粒度指令包生成延时查找表;将细粒度指令包和延时查找表存储在动态编译器中;通过动态编译器,根据预先生成的细粒度指令包和延时查找表生成指令文件;将指令文件发送到虚拟化核心分配器中进行在线部署,同时,通过监控器记录指令运行时的延时结果,将延时结果返回至多任务调度器的虚拟核分配器并更新性能模型。解决现有技术中同类编译器性能模型编译效率低下和多任务调度算法性能差的技术问题。
Description
技术领域
本发明涉及人工智能技术领域,尤其涉及一种面向多节点FPGA的两阶段动态-静态编译和基于采样和动量学习在线更新的多任务调度算法。
背景技术
目前云端支持的深度学习推理服务(INFaaS)已经成为了数据中心中主要的人工智能相关负载。当前基于深度学习加速器的推理服务,比如NVIDIA T4,Google TPU,微软Brainwave,阿里巴巴含光,已经成为了许多实际应用和市场的基础。其中,以FPGA为基础的深度学习推理加速平台是云端深度学习推理服务的一种充满发展前景的方案。
随着在线AI服务需求的不断增长,虚拟化是实现低成本和可扩展的推理服务的重要技术。推理服务的虚拟化框架主要由三层组成:硬件层、编译调度层和应用层。系统运行时将用户的应用请求发送给中心调度器进行资源分配,并将任务映射到硬件层中分配的物理节点。硬件层由集群中的多个物理计算节点组成,每个节点包含多个深度神经网络(DNN)加速器核,用于硬件辅助虚拟化[1,2,3],它使用特定的指令集架构(ISA)来实现低开销的上下文切换。对于应用层,用户利用运行时的API远程调用虚拟化计算资源,并将任务(如DNN模型)发送到编译调度层。对于编译调度层,编译器为每个任务生成指令文件和性能模型,此外,现有的多用户DNN调度器[1,2,4]利用性能模型,确保在灵活的资源分配下也能获得最优的系统性能。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种应用于面向云端深度学习推理的分布式FPGA多任务调度算法,以实现分布式多节点FPGA的高效离线编译和多核资源在线调度,利用动量学习实现性能模型的在线更新和快速有效的多任务实时调度。
本发明的第二个目的在于提出一种计算机设备。
本发明的第三个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本发明第一方面实施例提出了一种方法,包括:
面向多节点FPGA现场可编程门阵列的两阶段静态-动态编译器,所述两阶段静态-动态编译器的编译过程包括:
步骤101,基于切分的静态编译器生成沿宽度切分或沿输出通道切分的细粒度指令包;
步骤102,通过考虑多节点FPGA通信代价的延时仿真器,根据细粒度指令包生成包括所述多节点FPGA通信代价的延时查找表;
步骤103,将所述细粒度指令包和所述延时查找表存储在动态编译器中;
步骤104,通过所述动态编译器,根据预先生成的所述细粒度指令包和所述延时查找表生成指令文件;
步骤105,将所述指令文件发送到虚拟化核心分配器中进行在线部署,同时,通过监控器记录指令运行时的延时结果,将所述延时结果返回至多任务调度器的虚拟核分配器并更新性能模型。
在本发明实施例中,通过所述动态编译器,根据所述细粒度指令包和所述延时查找表生成指令文件,包括:
通过所述动态编译器,利用多节点指令分配器根据预先生成的所述细粒度指令包和所述延时查找表生成指令文件。
在本发明实施例中,在将所述指令文件发送到虚拟化核心分配器中进行在线部署之前,还包括:
通过所述多节点指令分配器,利用贪心策略来确定相邻层之间的最优切分方法,实现所述细粒度指令包在对应的多核心多节点FPGA上的负载均衡分配方式。
在本发明实施例中,所述静态编译器利用单节点FPGA的延时仿真器生成所述的性能模型,并在运行期间不断的对所述性能模型进行更新。
在本发明实施例中,所述分布式FPGA多任务调度算法还包括基于采样和动量学习更新的多任务调度方法,所述基于采样和动量学习更新的多任务调度方法具体包括:第一阶段,对虚拟化核心分配器核进行资源分配,所述虚拟化核心分配器的目标是最大化所有任务的平均性能,其中,所述最大化所有任务的平均性能定义为:
在本发明实施例中,所述基于采样和动量学习更新的多任务调度方法,还包括第二阶段,将所述第一阶段虚拟化核心分配器分配的核分配到不同节点的FPGA分配器上,此时,所述FPGA分配器的优化目标是FPGA之间通信总成本最小,其中,FPGA之间的通信总成本定义为:
其中,Cost(k,F)为通信总成本建模,DataLUT(k)为任务ak需要传输的数据总量,BWinter为网络带宽,为一个变量,代表第m个FPGA给任务ak分配的核数,其中ak这部分的含义是任务ak,m代表第m个FPGA,N代表核数,为给任务ak分配的FPGA数,即任务ak在多少个FPGA上被分配了核,和的关系具体为DataLUT(k)代表任务ak需要传输的数据总量。
在本发明实施例中,将所述性能模型建模成无通信开销时的性能减去被参数b加权的通信开销。
本发明实施例的方法,旨在解决面向云端深度学习推理应用的分布式FPGA虚拟化系统栈,由于从单节点拓展到多节点而导致的性能模型编译效率低下和多任务调度算法性能恶化,以及由于未考虑多节点通信开销而导致的次优指令优化问题。从单节点FPGA拓展到多节点FPGA后,巨大的搜索空间导致编译器难以在短时间内遍历所有情况,生成完整性能模型所需的时间开销最坏情况下会达到天量级,这对于云端深度学习推理服务场景而言是不可接受的;另一方面,使用不完整的性能模型会导致多任务调度算法性能恶化,无法保证最优的硬件资源利用率和系统整体性能。此外,现有的为单节点DNN虚拟化加速器设计的软件编译器没有考虑分布式多节点FPGA之间的通信开销,导致无法生成最优的指令,进一步导致多任务调度算法的实际效果和理论性能的差距扩大。
进一步地,对于编译调度层来说,当从单节点扩展到多节点时,硬件资源(如加速器核、分布式节点)的搜索空间会随着加速器核数的增加呈指数增长。巨大的搜索空间给编译和调度带来了双重挑战。一方面,现有编译器方案需要花费几个小时甚至几天的时间来生成所有资源分配方案下的完整性能模型。而完整性能模型是现有多任务调度算法的实现基础,对多任务调度算法的调度效率和性能有非常关键的影响;另一方面,现有的单节点DNN加速器编译器[2,3]在不考虑节点之间通信开销的情况下,所生成的指令无法在分布式多节点场景下实现最优的性能,从而造成多任务调度算法的实际效果和理论最优之间的差异进一步扩大。
本发明通过引入面向分布式FPGA优化的两阶段静态-动态编译器,和基于采样与动量学习在线更新的多任务调度算法,来解决上述关键技术问题。所提出的两阶段静态-动态编译器可以在考虑多节点FPGA之间通信开销的情况下,生成面向多节点FPGA上优化的深度学习加速器指令进行在线部署;基于采样多任务调度算法可以实现分布式多节点FPGA的高效离线编译和多核资源在线调度,利用动量学习实现性能模型的在线更新和快速有效的多任务实时调度。
为达上述目的,本申请的第二方面实施例提出了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本申请的第一方面实施例所述的方法。
本申请的第三方面实施例一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请的第一方面实施例所述的方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种应用于面向云端深度学习推理的分布式FPGA多任务调度算法方法的流程示意图;
图2为本发明实施例所提供的本发明的基线设计的基于ISA的多核单节点DNN加速器虚拟化的硬件架构实现;
图3为本发明实施例所提供的本发明的基线设计的基于ISA的多核单节点DNN加速器虚拟化的软件编译流程;
图4为本发明实施例所提供的本发明多节点FPGA编译调度流程图;
图5为本发明实施例所提供的本发明或基线设计加PREMA或Planaria方案的对比(a)以基线设计加PREMA方案为基准的系统吞吐量加速比;(b)SLA满足率;(c)以基线设计加PREMA方案为基准的公平性;
图6为本发明实施例所提供的本发明的调度器对SLA满足率的预测值和实际值的对比图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的一种应用于面向云端深度学习推理的分布式FPGA多任务调度算法方法。
图1为本发明实施例所提供的一种应用于面向云端深度学习推理的分布式FPGA多任务调度算法方法的流程示意图。
现有的多用户虚拟化DNN加速器[1,2,3]可以实现高效的基于空间复用的单节点共享,但是,它们仅仅关注了单节点情形下的多用户共享,不支持单个DNN任务的多节点模型并行(将单个DNN的网络模型分发到多节点进行并行计算),使得云端深度学习推理任务的计算延时无法利用多节点计算资源以进一步降低。随着DNN模型的不断增大和复杂化,在单节点计算资源有限的情况下,现有单节点DNN虚拟化系统已无法满足实际应用场景的服务质量(QoS)要求,特别是严格延时约束场景对多节点模型并行提出了迫切的需求。
针对这一问题,本发明实施例提供了一种应用于面向云端深度学习推理的分布式FPGA多任务调度算法方法,以实现在所提出的两阶段静态-动态编译器可以在考虑多节点FPGA之间通信开销的情况下,生成面向多节点FPGA上优化的深度学习加速器指令进行在线部署;基于采样多任务调度算法可以实现分布式多节点FPGA的高效离线编译和多核资源在线调度,利用动量学习实现性能模型的在线更新和快速有效的多任务实时调度,如图1所示,该方法包括:
步骤101,基于切分的静态编译器生成沿宽度切分或沿输出通道切分的细粒度指令包;
步骤102,通过考虑多节点FPGA通信代价的延时仿真器,根据细粒度指令包生成包括多节点FPGA通信代价的延时查找表;
步骤103,将细粒度指令包和延时查找表存储在动态编译器中;
步骤104,通过动态编译器,根据预先生成的细粒度指令包和延时查找表生成指令文件;
步骤105,将指令文件发送到虚拟化核心分配器中进行在线部署,同时,通过监控器记录指令运行时的延时结果,将延时结果返回至多任务调度器的虚拟核分配器并更新性能模型。
在本发明实施例中,通过动态编译器,根据细粒度指令包和延时查找表生成指令文件,包括:
通过动态编译器,利用多节点指令分配器根据预先生成的细粒度指令包和延时查找表生成指令文件。
在本发明实施例中,在将指令文件发送到虚拟化核心分配器中进行在线部署之前,还包括:
通过多节点指令分配器,利用贪心策略来确定相邻层之间的最优切分方法,实现细粒度指令包在对应的多核心多节点FPGA上的负载均衡分配方式。
在本发明实施例中,静态编译器利用单节点FPGA的延时仿真器生成的性能模型,并在运行期间不断的对性能模型进行更新。
在本发明实施例中,分布式FPGA多任务调度算法还包括基于采样和动量学习更新的多任务调度方法,基于采样和动量学习更新的多任务调度方法具体包括:第一阶段,对虚拟化核心分配器核进行资源分配,虚拟化核心分配器的目标是最大化所有任务的平均性能,其中,最大化所有任务的平均性能定义为:
在本发明实施例中,基于采样和动量学习更新的多任务调度方法,还包括第二阶段,将第一阶段虚拟化核心分配器分配的核分配到不同节点的FPGA分配器上,此时,FPGA分配器的优化目标是FPGA之间通信总成本最小,其中,FPGA之间的通信总成本定义为:
其中,Cost(k,F)为通信总成本建模,DataLUT(k)为任务ak需要传输的数据总量,BWinter为网络带宽,为一个变量,第m个FPGA给任务ak分配的核数,其中ak这部分的含义是任务ak,m代表第m个FPGA,N代表核数,为给任务ak分配的FPGA数,即任务ak在多少个FPGA上被分配了核,和的关系具体为DktkLUT(k)代表任务ak需要传输的数据总量。
在本发明实施例中,将性能模型建模成无通信开销时的性能减去被参数b加权的通信开销。
本发明实施例的方法,旨在解决面向云端深度学习推理应用的分布式FPGA虚拟化系统栈,由于从单节点拓展到多节点而导致的性能模型编译效率低下和多任务调度算法性能恶化,以及由于未考虑多节点通信开销而导致的次优指令优化问题。从单节点FPGA拓展到多节点FPGA后,巨大的搜索空间导致编译器难以在短时间内遍历所有情况,生成完整性能模型所需的时间开销最坏情况下会达到天量级,这对于云端深度学习推理服务场景而言是不可接受的;另一方面,使用不完整的性能模型会导致多任务调度算法性能恶化,无法保证最优的硬件资源利用率和系统整体性能。此外,现有的为单节点DNN虚拟化加速器设计的软件编译器没有考虑分布式多节点FPGA之间的通信开销,导致无法生成最优的指令,进一步导致多任务调度算法的实际效果和理论性能的差距扩大。
进一步地,对于编译调度层来说,当从单节点扩展到多节点时,硬件资源(如加速器核、分布式节点)的搜索空间会随着加速器核数的增加呈指数增长。巨大的搜索空间给编译和调度带来了双重挑战。一方面,现有编译器方案需要花费几个小时甚至几天的时间来生成所有资源分配方案下的完整性能模型。而完整性能模型是现有多任务调度算法的实现基础,对多任务调度算法的调度效率和性能有非常关键的影响;另一方面,现有的单节点DNN加速器编译器[2,3]在不考虑节点之间通信开销的情况下,所生成的指令无法在分布式多节点场景下实现最优的性能,从而造成多任务调度算法的实际效果和理论最优之间的差异进一步扩大。
本发明通过引入面向分布式FPGA优化的两阶段静态-动态编译器,和基于采样与动量学习在线更新的多任务调度算法,来解决上述关键技术问题。所提出的两阶段静态-动态编译器可以在考虑多节点FPGA之间通信开销的情况下,生成面向多节点FPGA上优化的深度学习加速器指令进行在线部署;基于采样多任务调度算法可以实现分布式多节点FPGA的高效离线编译和多核资源在线调度,利用动量学习实现性能模型的在线更新和快速有效的多任务实时调度。
进一步地,为了使本领域技术人员更好的理解本申请,本发明实施例还提供了另一种应用于面向云端深度学习推理的分布式FPGA多任务调度算法方法。
图2为本发明实施例所提供的本发明的基线设计的基于ISA的多核单节点DNN加速器虚拟化的硬件架构实现;
图3为本发明实施例所提供的本发明的基线设计的基于ISA的多核单节点DNN加速器虚拟化的软件编译流程;
在本发明实施例中,本发明的基线设计是现有技术中一种基于FPGA的虚拟化DNN加速器。它的软件编译器支持低开销的在线重配置,它的多核资源池化硬件架构提供了隔离的和运行时可编程的FPGA资源。多核单节点硬件架构由一个两级指令调度模块和多核硬件资源池组成,本发明的基线设计的基于ISA的多核单节点DNN加速器虚拟化的硬件架构实现,如图1所示。多核硬件资源池的每个核心都是基于ISA的DNN加速器,多端口内存控制器保证了每个核心独占相同的DDR内存带宽,确保多用户之间的性能隔离。为了支持多用户并发执行和低开销的在线重配置,一种基于FPGA的虚拟化DNN加速器的单节点编译器使用了两阶段静态-动态编译器流程,即本发明的基线设计的基于ISA的多核单节点DNN加速器虚拟化的软件编译流程,如图2所示。静态编译器由一个基于切分的指令包生成器和一个延时仿真器组成。静态编译器将每一层的输出特征图沿宽度或输出通道的维度进行切分,并生成细粒度指令包,用于多核之间的空分复用多用户共享;延时仿真器可以对细粒度指令包进行精确的运行延时估计,并将延时信息存储到延时模型中;动态编译器利用一个负载均衡的分配器来根据分配到的加速器核数生成最终的指令文件;由于动态编译器只需要编译轻量级的信息,因此可以为多用户的DNN任务并发执行实现低开销的在线动态重配置。
在本发明实施例中,本发明的编译调度层在一种基于FPGA的虚拟化DNN加速器的单节点动态-静态编译技术拓展到多节点,并通过使用在线动态更新性能模型和两步资源分配方法解决资源分配时搜索空间过大的问题。
在本发明实施例中,两阶段静态-动态编译器在考虑多节点FPGA通信开销的情况下,生成多节点FPGA优化的指令进行在线部署。多任务调度器为了实现多节点FPGA的性能模型快速离线编译、高效在线更新和多核多节点硬件资源调度,基于采样的方式进行单节点性能模型的离线生成,并利用动量学习方法进行多节点性能模型的在线更新。
在本发明实施例中,多节点两阶段静态-动态编译器与基于采样和动量学习更新的多任务调度算法主要包括两个核心技术方案:面向多节点FPGA现场可编程门阵列的两阶段静态-动态编译器和基于采样和动量学习更新的多任务调度算法。
图4为本发明实施例所提供的本发明多节点FPGA编译调度流程图。
在本发明实施例中,面向多节点FPGA现场可编程门阵列的两阶段静态-动态编译器中的动态-静态编译:为了将多节点FPGA之间的通信代价纳入编译优化考量,本发明提出的基于ISA的多核多节点DNN加速器编译与调度方法,即一种应用于面向云端深度学习推理的分布式FPGA多任务调度算法方法的流程示意图,如图1所示,具体而言,包括:从静态编译器到动态编译器、从静态编译器到调度器、从动态编译器到调度器。
进一步地,从静态编译器到动态编译器:编译过程可被划分为两个阶段,首先是耗时较长但仅需第一次部署时运行的静态编译流程,然后是在运行重配置节点的快速动态编译器流程。在静态编译阶段,基于切分的分层静态编译器为每层生成沿宽度切分或沿输出通道切分的细粒度指令包。接下来,这些指令包通过考虑多节点FPGA通信代价的延时仿真器,生成包括多节点FPGA通信代价的延时查找表。指令包和延时查找表都被存储在动态编译器中。最后,动态编译器根据静态编译器生成的不同切分方式的指令包和延时查找表,确定各层的切分方式,生成最终的指令文件。
进一步地,从静态编译器到调度器:静态编译器利用单节点FPGA的延时仿真器生成初始的性能模型,该性能模型不考虑多节点FPGA之间的通信开销,并将在运行期间不断的进行更新。对于FPGA分配器,静态编译器使用考虑多节点FPGA通信代价的数据分析器提供一个同步数据查找表,作为FPGA分配器给每个任务的核数分配给不同FPGA节点的依据。数据分析器收集所有存储指令需要传输的数据量,从而计算出每个任务需要在节点之间同步的数据量总和。
进一步地,从动态编译器到调度器:动态编译器利用多节点指令分配器A根据预先生成的指令包和延时查找表来生成最终的指令文件。这个多节点指令分配器利用贪心策略来确定相邻层之间的最优切分方法,实现指令包在对应的多核心多节点FPGA上的负载均衡分配方式。接下来,最终的指令文件被发送到虚拟化多核DNN加速器中进行部署,同时,运行时监控器记录指令运行时的延时结果,将结果返回给多任务调度器的虚拟核分配器,以更新性能模型并使性能模型更加准确。
在本发明实施例中,基于采样和动量学习更新的多任务调度算法对于单节点的资源分配,调度器只需要考虑每个任务在不同核数下的性能即可,其搜索空间通常小于100。在单节点的情况下,静态编译时可以快速地获取性能表。然而,当从单节点扩展到多节点时,资源调度器需要考虑多个核在多个FPGA上的分配,每种情况都会引入不同的FPGA之间的通信开销。此时,搜索空间将呈指数增长,这将花费几个小时甚至数天来在静态编译阶段生成包含所有可能情况的性能模型。如此大的编译成本即使对于离线部署也是不可接受的。为了解决这个问题,本发明提出了使用基于动量学习的性能模型在线更新方法和两阶段的多核多节点FPGA硬件资源调度方法,来保证快速有效的多用户DNN任务调度。具体而言,包括:虚拟化核心分配器、多节点FPGA分配器、运行时性能模型的动量学习更新策略。
进一步地,虚拟化核心分配器:资源调度器的第一阶段先进行虚拟化加速器核的分配,这个阶段不考虑多节点之间的通信开销。此时虚拟化核心分配器的目标是最大化所有任务的平均性能,平均性能定义为:其中Nak代表分配给任务ak的核数,需要满足约束 代表第m个FPGA包含的核数。Perf(k,n)被定义为任务ak在不考虑FPGA之间通信开销时被分配到n个核的性能,计算方式如下:
其中LatLUT(k,n)代表任务k在n个核上执行所用的时间,可以从延时查找表中获得。这是一个优化问题,虚拟化核心分配器使用整数线性规划进行求解。
进一步地,多节点FPGA分配器:资源调度器的第二阶段是将第一阶段分配的虚拟化加速器核分配到不同节点的FPGA上,这个阶段需要将FPGA之间的通信开销纳入考虑范围。此时FPGA分配器的优化目标是FPGA之间通信总成本最小,FPGA之间的通信总成本定义为:Cost(k,F)的计算方式如下:
这表示FPGA分配器将FPGA之间的通信开销Cost(k,F)建模为被FPGA上分配的核数加权的任务传输数据的总量DataLUT(k)除以网络带宽BWinter。式中代表第m个FPGA给任务ak分配的核数,DataLUT(k)代表任务ak需要传输的数据总量,由静态编译器生成,它们需要满足约束 其中,在本申请实施例中,“加权”指的是前面这部分系数,即这也是一个优化问题,多节点FPGA分配器使用贪心算法来解决这个优化问题。
进一步地,基于动量学习的性能模型在线更新策略:多节点性能模型被建模成无通信开销时的性能Perf(k,n)减去被参数b加权的通信开销Cost(k,F)。在仿真过程中,首先初始化b=0,然后b在每次调度中以学习率λ动态更新。以某次调度为例,调度器首先使用最新的b估计下一个被调度任务的性能,获得任务的实际性能后,根据估计出的性能和实际性能计算出误差Δb,并更新b=b+λΔb。
在本发明实施例中,本发明技术方案引入了考虑多节点FPGA之间通信代价的两阶段静态-动态编译器和基于采样与动量学习在线更新的多任务调度算法,将单节点工作拓展到了多节点,实现了高效的多任务多FPGA调度和编译。SLA满足率方面,对于所有工作负载和QOS约束情况,使用本发明可以显著提高SLA满足率12%-39%,SLA满足率在大多数任务负载情况下可达99%;系统吞吐量方面,本发明在较强的QoS约束下,可以获得较大的提升,最高可以获得3.7倍的吞吐量提升;公平性方面,高负载,强QoS约束条件下本发明可以获得1.06倍的公平性提升;调度开销方面,本发明提出的调度器可以节省95%到98%的调度和编译时间,同时达到小于5%的预测误差。
在本发明实施例中,本发明在Intel Xeon 4210 CPU服务器和Xilinx Alveo U200FPGA服务器组成的计算集群对提出的虚拟化框架进行了实验,节点之间使用100Gbps带宽的TCP/IP以太网通信,FPGA加速卡配备4块DDR4内存共64GB,带宽为77GB/s。实验使用的基于ISA的DNN加速器为16核,时钟周期为200MHz,各核的并行度为512操作数/时钟周期(Ops/cycle)。所测试的8种神经网络如下表所示:
PREMA和Planaria是两篇关于多用户DNN任务调度算法的现有最优实现方案,我们将PREMA或Planaria的DNN调度算法分别与一种基于FPGA的虚拟化DNN加速器或本发明两两结合进行对比评估。实验中使用泊松分布来模拟三种负载(高、低、混合)下DNN任务的到达时间;使用均匀分布来为每个DNN任务分配优先级(低、中、高);采用基于MLPerf的两级QoS约束(软约束:QoS-S,硬约束:QoS-H)评估多用户DNN任务的延时敏感性。对于这四种两两组合的方案,我们将使用系统吞吐量(STP)、SLA满足率和公平性进行评估;对于本发明提出的基于样本的资源调度器,我们将使用的运行时的调度开销进行评估。
图5为本发明实施例所提供的本发明或基线设计加PREMA或Planaria方案的对比(a)以基线设计加PREMA方案为基准的系统吞吐量加速比;(b)SLA满足率;(c)以基线设计加PREMA方案为基准的公平性;
进一步地,系统吞吐量(STP):运行多用户DNN任务时在QoS约束下满足SLA的每秒查询数,满足SLA意味着每个DNN任务的执行时间有99%能够满足QoS延时要求。图5(a)展示了本发明在不同工作负载和QoS约束场景下的系统吞吐量。本发明加Planaria的方案在较宽松的QoS约束下,三种负载(高、低、混合)的加速比分别为2.3、2.0和1.8;在较强的QoS约束下,三种负载的加速比分别为3.7、3.2和3.0。可以看出本发明的多FPGA扩展能力使得在较强的QoS约束下所有工作负载都能获得更好的吞吐量。此外,本发明的吞吐量是一种基于FPGA的虚拟化DNN加速器的1.9到2.1倍。
进一步地,SLA满足率:多个DNN工作负载中能够满足SLA的比例。如图5(b)所示,对于所有工作负载和QOS约束,使用本发明加Planaria的方案可以显著提高SLA满足率,最高可达99%。本发明可以使得多用户调度能够在遵守SLA的同时,即时为每个任务分配足够的计算资源。相比于基线设计加PREMA的方案,本发明加PREMA的方案提升了12%到39%的SLA满足率。
进一步地,公平性:公平性是指在考虑任务优先级的情况下衡量多个任务的平均进度,它被定义为:
图5(c)展示了本发明或基线设计加PREMA或Planaria方案的公平性对比。可以看出,在高负载,强QoS约束的情况下,本发明加Planaria的方案的公平性是基线设计加Planaria方案的1.06倍。
图6为本发明实施例所提供的本发明的调度器对SLA满足率的预测值和实际值的对比图;
进一步地,调度开销:由于本发明的性能模型是随着运行而不断更新的,因此通过运行不同数量的调度任务更新性能模型,并评估最终的预测性能与实际性能之间的差异。如图6所示,当我们从21增加调度任务的数量到840时,性能模型预测得更加精确。用于840个任务的性能模型更新总共约耗时20秒,此时预测误差小于5%。遍历整个搜索空间来生成一个完整的性能表需要几个小时,而使用运行时更新的性能模型进行静态编译只需要几分钟,这可以节省95%到98%的编译和调度时间。
为了实现上述实施例,本发明还提出一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如上述任一所述的方法。
为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一所述的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (9)
1.一种应用于面向云端深度学习推理的分布式FPGA多任务调度算法,其特征在于,包括面向多节点FPGA现场可编程门阵列的两阶段静态-动态编译器,所述两阶段静态-动态编译器的编译过程包括以下步骤:
步骤101,基于切分的静态编译器生成沿宽度切分或沿输出通道切分的细粒度指令包;
步骤102,通过考虑多节点FPGA通信代价的延时仿真器,根据细粒度指令包生成包括所述多节点FPGA通信代价的延时查找表;
步骤103,将所述细粒度指令包和所述延时查找表存储在动态编译器中;
步骤104,通过所述动态编译器,根据预先生成的所述细粒度指令包和所述延时查找表生成指令文件;
步骤105,将所述指令文件发送到虚拟化核心分配器中进行在线部署,同时,通过监控器记录指令运行时的延时结果,将所述延时结果返回至多任务调度器的虚拟核分配器并更新性能模型。
2.根据权利要求1所述的分布式FPGA多任务调度算法,其特征在于,通过所述动态编译器,根据所述细粒度指令包和所述延时查找表生成指令文件,包括:
通过所述动态编译器,利用多节点指令分配器根据预先生成的所述细粒度指令包和所述延时查找表生成指令文件。
3.根据权利要求2所述的分布式FPGA多任务调度算法,其特征在于,在将所述指令文件发送到虚拟化核心分配器中进行在线部署之前,还包括:
通过所述多节点指令分配器,利用贪心策略来确定相邻层之间的最优切分方法,实现所述细粒度指令包在对应的多核心多节点FPGA上的负载均衡分配方式。
4.根据权利要求1-3任一所述的分布式FPGA多任务调度算法,其特征在于,所述静态编译器利用单节点FPGA的延时仿真器生成所述的性能模型,并在运行期间不断的对所述性能模型进行更新。
6.根据权利要求5所述的分布式FPGA多任务调度算法,其特征在于,所述基于采样和动量学习更新的多任务调度方法,还包括第二阶段,将所述第一阶段虚拟化核心分配器分配的核分配到不同节点的FPGA分配器上,此时,所述FPGA分配器的优化目标是FPGA之间通信总成本最小,其中,FPGA之间的通信总成本定义为:
7.根据权利要求6所述的分布式FPGA多任务调度算法,其特征在于,将所述性能模型建模成无通信开销时的性能减去被参数b加权的通信开销。
8.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-7中任一所述的方法。
9.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110594180.0A CN113360259B (zh) | 2021-05-28 | 2021-05-28 | 一种应用于面向云端深度学习推理的分布式fpga多任务调度算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110594180.0A CN113360259B (zh) | 2021-05-28 | 2021-05-28 | 一种应用于面向云端深度学习推理的分布式fpga多任务调度算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360259A true CN113360259A (zh) | 2021-09-07 |
CN113360259B CN113360259B (zh) | 2022-10-11 |
Family
ID=77528151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110594180.0A Active CN113360259B (zh) | 2021-05-28 | 2021-05-28 | 一种应用于面向云端深度学习推理的分布式fpga多任务调度算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360259B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860417A (zh) * | 2022-06-15 | 2022-08-05 | 中科物栖(北京)科技有限责任公司 | 多核神经网络处理器及用于该处理器多任务分配调度方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541628A (zh) * | 2010-12-17 | 2012-07-04 | 三星电子株式会社 | 多核系统的编译装置和方法 |
CN103049307A (zh) * | 2011-10-12 | 2013-04-17 | 富士通株式会社 | 仿真设备和仿真方法 |
US20200133735A1 (en) * | 2018-10-31 | 2020-04-30 | EMC IP Holding Company LLC | Method, device, and computer program product for assigning tasks to dedicated processing resources |
CN111158790A (zh) * | 2019-12-31 | 2020-05-15 | 清华大学 | 面向云端深度学习推理的fpga虚拟化方法 |
CN112740235A (zh) * | 2018-09-27 | 2021-04-30 | 英特尔公司 | 在推理期间具有零激活的神经网络架构的节能 |
-
2021
- 2021-05-28 CN CN202110594180.0A patent/CN113360259B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541628A (zh) * | 2010-12-17 | 2012-07-04 | 三星电子株式会社 | 多核系统的编译装置和方法 |
CN103049307A (zh) * | 2011-10-12 | 2013-04-17 | 富士通株式会社 | 仿真设备和仿真方法 |
CN112740235A (zh) * | 2018-09-27 | 2021-04-30 | 英特尔公司 | 在推理期间具有零激活的神经网络架构的节能 |
US20200133735A1 (en) * | 2018-10-31 | 2020-04-30 | EMC IP Holding Company LLC | Method, device, and computer program product for assigning tasks to dedicated processing resources |
CN111158790A (zh) * | 2019-12-31 | 2020-05-15 | 清华大学 | 面向云端深度学习推理的fpga虚拟化方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860417A (zh) * | 2022-06-15 | 2022-08-05 | 中科物栖(北京)科技有限责任公司 | 多核神经网络处理器及用于该处理器多任务分配调度方法 |
CN114860417B (zh) * | 2022-06-15 | 2023-05-02 | 中科物栖(北京)科技有限责任公司 | 多核神经网络处理器及用于该处理器多任务分配调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113360259B (zh) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kaur et al. | Container-as-a-service at the edge: Trade-off between energy efficiency and service availability at fog nano data centers | |
Jung et al. | Synchronous parallel processing of big-data analytics services to optimize performance in federated clouds | |
Pilla et al. | A hierarchical approach for load balancing on parallel multi-core systems | |
US11816509B2 (en) | Workload placement for virtual GPU enabled systems | |
CN111158790B (zh) | 面向云端深度学习推理的fpga虚拟化方法 | |
Kang et al. | Lalarand: Flexible layer-by-layer cpu/gpu scheduling for real-time dnn tasks | |
CN113420517B (zh) | 面向云端深度学习推理的fpga虚拟化硬件系统栈设计 | |
CN114996018A (zh) | 面向异构计算的资源调度方法、节点、系统、设备及介质 | |
CN113360259B (zh) | 一种应用于面向云端深度学习推理的分布式fpga多任务调度算法 | |
Oo et al. | Application-aware task scheduling in heterogeneous edge cloud | |
Szalay et al. | Real-time task scheduling in a FaaS cloud | |
CN108540405A (zh) | 网络资源迁移方法及装置 | |
Buttazzo et al. | Partitioning parallel applications on multiprocessor reservations | |
Sun et al. | Cognn: efficient scheduling for concurrent gnn training on gpus | |
CN114466014B (zh) | 一种服务调度方法、装置、电子设备及存储介质 | |
Huang et al. | Measuring the impact of gradient accumulation on cloud-based distributed training | |
US8090762B2 (en) | Efficient super cluster implementation for solving connected problems in a distributed environment | |
Borin et al. | Dynamic power management under the run scheduling algorithm: a slack filling approach | |
Phi et al. | Load balancing algorithm on cloud computing for optimize response time | |
Liu et al. | Backfilling under two-tier virtual machines | |
Bandieramonte et al. | An ACO inspired strategy to improve jobs scheduling in a grid environment | |
Peterson et al. | A vector-scheduling approach for running many-task applications in the cloud | |
CN111522637A (zh) | 一种基于成本效益的storm任务调度方法 | |
CN114860417B (zh) | 多核神经网络处理器及用于该处理器多任务分配调度方法 | |
Maalej et al. | CUDA-accelerated task scheduling in vehicular clouds with opportunistically available V2I |
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 |