一种资源配置方法、介质及服务端转让专利

申请号 : CN202011134276.0

文献号 : CN112199196B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘子汉冷静文陆冠东陈全李超过敏意

申请人 : 上海交通大学

摘要 :

本发明提供一种资源配置方法、介质及服务端。所述资源配置方法包括:获取所述服务端能够执行的任务作为第一任务;获取所述第一任务对应的数据处理模型作为第一数据处理模型,其中,各所述第一数据处理模型至少包含1个算子;对所述第一数据处理模型中的每个算子进行资源配置,以获取所述第一数据处理模型中各算子所使用的资源数量;当所述服务端接收到用户的任务请求时,获取第二任务;其中,所述第二任务包括所述服务端的当前任务和所述用户的任务请求对应的任务;当所述第二任务的数量大于1时,执行一协同资源配置子方法。本发明所述资源配置方法能够适用于多数据处理模型的复杂场景。

权利要求 :

1.一种资源配置方法,其特征在于,应用于多核架构的服务端,所述资源配置方法包括:

获取所述服务端能够执行的任务作为第一任务;

获取所述第一任务对应的数据处理模型作为第一数据处理模型,其中,各所述第一数据处理模型至少包含1个算子;

对所述第一数据处理模型中的每个算子进行资源配置,以获取所述第一数据处理模型中各算子所使用的资源数量;

当所述服务端接收到用户的任务请求时,获取第二任务;其中,所述第二任务包括所述服务端的当前任务和所述用户的任务请求对应的任务;

当所述第二任务的数量大于1时,执行一协同资源配置子方法;其中,所述协同资源配置子方法包括:

获取所述第二任务对应的数据处理模型作为第二数据处理模型;

根据所述第一数据处理模型中各算子所使用的资源数量,获取所述第二数据处理模型中各算子所使用的资源数量;

获取所述第二数据处理模型中各算子的调度顺序和并行执行状态;

根据所述第二数据处理模型中各算子所使用的资源数量、调度顺序和并行执行状态对所述服务端的资源进行配置,以将所述服务端的资源配置给所述第二数据处理模型中的各算子。

2.根据权利要求1所述的资源配置方法,其特征在于,对于所述第一数据处理模型中的任一算子,获取该算子所使用的资源数量的方法包括:分别为该算子配置不同数量的资源,并获取各配置对应的算子性能;

根据各配置对应的算子性能,获取该算子所使用的资源数量。

3.根据权利要求1所述的资源配置方法,其特征在于,所述资源配置方法还包括:根据所述第一数据处理模型中各算子所使用的资源数量,对所述第一数据处理模型中的算子进行算子融合和/或算子切分。

4.根据权利要求1所述的资源配置方法,其特征在于,获取所述第二数据处理模型中各算子的调度顺序的实现方法包括:获取所述第二数据处理模型中各算子的性能模型;其中,所述性能模型包含算子的执行时间;

获取各所述第二任务的服务质量要求;

根据各所述第二任务的服务质量要求和所述第二数据处理模型中各算子的性能模型,获取所述第二数据处理模型中各算子的调度顺序。

5.根据权利要求1所述的资源配置方法,其特征在于,在获取所述第二数据处理模型中各算子的并行执行状态后,所述协同资源配置子方法还包括:获取所述第二数据处理模型中算子之间的干扰模型;

根据所述干扰模型,对所述第二数据处理模型中各算子的调度顺序和并行执行状态进行调整。

6.根据权利要求1所述的资源配置方法,其特征在于,在获取所述第二数据处理模型中各算子的调度顺序和并行执行状态后,所述协同资源配置子方法还包括:根据所述第二数据处理模型中各算子所使用的资源数量、调度顺序和并行执行状态,获取所述服务端的资源使用状况;

根据所述服务端的资源使用状况,对所述第二数据处理模型中至少1个算子所使用的资源数量进行调整。

7.根据权利要求1所述的资源配置方法,其特征在于,当所述服务端接收到用户的任务请求时,获取第二任务的实现方法包括:停止当前正在执行的资源配置方案;

从所述服务端的当前任务中,获取未完成的任务和子任务;

将所述用户的任务请求对应的任务、所述未完成的任务和子任务作为所述第二任务。

8.根据权利要求1所述的资源配置方法,其特征在于:所述资源配置方法以所述服务端的内核为单位进行资源配置。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:该计算机程序被处理器执行时实现权利要求1‑8任一项所述的资源配置方法。

10.一种服务端,其特征在于,所述服务端为多核架构,且所述服务端包括:存储器,存储有一计算机程序;

处理器,与所述存储器通信相连,调用所述计算机程序时执行权利要求1‑8任一项所述的资源配置方法;

显示器,与所述处理器和所述存储器通信相连,用于显示所述资源配置方法的相关GUI交互界面。

说明书 :

一种资源配置方法、介质及服务端

技术领域

[0001] 本发明涉及一种资源分配方法,特别是涉及一种资源配置方法、介质及服务端。

背景技术

[0002] 随着深度学习的迅猛发展,用户对于高性能云服务的要求也随之上升。而随着深度学习任务种类的日益多样化、数据处理模型的日益复杂以及用户的日益增加,深度学习
的服务也面临更大的挑战。为了满足多任务、多模型和多用户的复杂场景对资源的需求,许
多芯片厂商提供了算力水平较高的深度学习专用芯片以及相应编程框架供深度学习服务
提供商使用,且服务提供商也会组合使用多个芯片。然而,发明人在实际应用中发现,目前
的资源配置方法主要针对单数据处理模型进行性能优化,其很难应用到多数据处理模型的
复杂场景中。

发明内容

[0003] 鉴于以上所述现有技术的缺点,本发明的目的在于提供一种资源配置方法、介质及服务端,用于解决现有资源配置方法主要针对单数据处理模型进行性能优化,其很难应
用到多数据处理模型的复杂场景中的问题。
[0004] 为实现上述目的及其他相关目的,本发明的第一方面提供一种资源配置方法;所述资源配置方法应用于多核架构的服务端,包括:获取所述服务端能够执行的任务作为第
一任务;获取所述第一任务对应的数据处理模型作为第一数据处理模型,其中,各所述第一
数据处理模型至少包含1个算子;对所述第一数据处理模型中的每个算子进行资源配置,以
获取所述第一数据处理模型中各算子所使用的资源数量;当所述服务端接收到用户的任务
请求时,获取第二任务;其中,所述第二任务包括所述服务端的当前任务和所述用户的任务
请求对应的任务;当所述第二任务的数量大于1时,执行一协同资源配置子方法;其中,所述
协同资源配置子方法包括:获取所述第二任务对应的数据处理模型作为第二数据处理模
型;根据所述第一数据处理模型中各算子所使用的资源数量,获取所述第二数据处理模型
中各算子所使用的资源数量;获取所述第二数据处理模型中各算子的调度顺序和并行执行
状态;根据所述第二数据处理模型中各算子所使用的资源数量、调度顺序和并行执行状态
对所述服务端的资源进行配置。
[0005] 于所述第一方面的一实施例中,对于所述第一数据处理模型中的任一算子,获取该算子所使用的资源数量的方法包括:分别为该算子配置不同数量的资源,并获取各配置
对应的算子性能;根据各配置对应的算子性能,获取该算子所使用的资源数量。
[0006] 于所述第一方面的一实施例中,所述资源配置方法还包括:根据所述第一数据处理模型中各算子所使用的资源数量,对所述第一数据处理模型中的算子进行算子融合和/
或算子切分。
[0007] 于所述第一方面的一实施例中,获取所述第二数据处理模型中各算子的调度顺序的实现方法包括:获取所述第二数据处理模型中各算子的性能模型;其中,所述性能模型包
含算子的执行时间;获取各所述第二任务的服务质量要求;根据各所述第二任务的服务质
量要求和所述第二数据处理模型中各算子的性能模型,获取所述第二数据处理模型中各算
子的调度顺序。
[0008] 于所述第一方面的一实施例中,在获取所述第二数据处理模型中各算子的并行执行状态后,所述协同资源配置子方法还包括:获取所述第二数据处理模型中算子之间的干
扰模型;根据所述干扰模型,对所述第二数据处理模型中各算子的调度顺序和并行执行状
态进行调整。
[0009] 于所述第一方面的一实施例中,在获取所述第二数据处理模型中各算子的调度顺序和并行执行状态后,所述协同资源配置子方法还包括:根据所述第二数据处理模型中各
算子所使用的资源数量、调度顺序和并行执行状态,获取所述服务端的资源使用状况;根据
所述服务端的资源使用状况,对所述第二数据处理模型中至少1个算子所使用的资源数量
进行调整。
[0010] 于所述第一方面的一实施例中,当所述服务端接收到用户的任务请求时,获取第二任务的实现方法包括:停止当前正在执行的资源配置方案;从所述服务端的当前任务中,
获取未完成的任务和子任务;将所述用户的任务请求对应的任务、所述未完成的任务和子
任务作为所述第二任务。
[0011] 于所述第一方面的一实施例中,所述资源配置方法以所述服务端的内核为单位进行资源配置。
[0012] 本发明的第二方面提供一种计算机可读存储介质,其上存储有计算机程序;该计算机程序被处理器执行时实现本发明第一方面所述的资源配置方法。
[0013] 本发明的第三方面提供一种服务端;所述服务端为多核架构,且所述服务端包括:存储器,存储有一计算机程序;处理器,与所述存储器通信相连,调用所述计算机程序时执
行本发明第一方面所述的资源配置方法;显示器,与所述处理器和所述存储器通信相连,用
于显示所述资源配置方法的相关GUI交互界面。
[0014] 如上所述,本发明所述资源配置方法、介质及服务端的一个技术方案具有以下有益效果:
[0015] 在所述服务端根据用户的请求需要执行2个或多个第二任务时,所述资源配置方法能够获取每个第二任务对应的第二数据处理模型,并获取每个第二数据处理模型中算子
的调度顺序和并行执行状态,并以此为依据将所述服务端的资源配置给所有第二数据处理
模型中的算子。由此可知,本发明所述资源配置方法能够适用于多数据处理模型的复杂场
景。

附图说明

[0016] 图1显示为本发明实施例所述资源配置方法于一具体实施例中获取的任务信息及任务所需文件。
[0017] 图2A显示为本发明所述资源配置方法于一具体实施例中的流程图。
[0018] 图2B显示为本发明所述资源配置方法于一具体实施例中步骤S15的流程图。
[0019] 图2C显示为本发明所述资源配置方法于一具体实施例中获取的资源配置方案示例图。
[0020] 图3显示为本发明所述资源配置方法于一具体实施例中步骤S13的流程图。
[0021] 图4显示为本发明所述资源配置方法于一具体实施例中进行算子融合和算子切分的示例图。
[0022] 图5显示为本发明所述资源配置方法于一具体实施例中获取算子调度顺序的流程图。
[0023] 图6A显示为本发明所述资源配置方法于一具体实施例中对算子的调度顺序和并行执行状态进行调整的流程图。
[0024] 图6B显示为本发明所述资源配置方法于一具体实施例中获取干扰模型的流程图。
[0025] 图7A显示为本发明所述资源配置方法于一具体实施例中对算子所使用的资源数量进行调整的流程图。
[0026] 图7B显示为本发明所述资源配置方法于一具体实施例中对算子所使用的的资源数量进行调整的示例图。
[0027] 图8显示为本发明所述资源配置方法于一具体实施例中步骤S14的流程图。
[0028] 图9显示为本发明所述资源配置方法于一具体实施例中的流程图。
[0029] 图10显示为本发明所述服务端于一具体实施例中的结构示意图。
[0030] 元件标号说明
[0031] 100 服务端
[0032] 110 存储器
[0033] 120 处理器
[0034] 130 显示器
[0035] S11~S15 步骤
[0036] S151~S154 步骤
[0037] S131~S132 步骤
[0038] S51~S53 步骤
[0039] S61~S62 步骤
[0040] S71~S72 步骤
[0041] S141~S143 步骤
[0042] S91~S99 步骤

具体实施方式

[0043] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实
施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离
本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施
例中的特征可以相互组合。
[0044] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘
制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可
能更为复杂。此外,此外,在本文中,诸如“第一”、“第二”等之类的关系术语仅仅用来将一个
实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间
存在任何这种实际的关系或者顺序。
[0045] 在服务端为用户提供服务的过程中,由用户发送任务请求至服务端,服务端响应用户的任务请求并执行相应的任务。具体地,用户会发送若干任务请求至所述服务端,其
中,每个任务请求对应一个任务,每个任务包含多个子任务,每个子任务对应1个或多个数
据处理模型及任务文件,且每个数据处理模型均包含1个或多个算子。例如,请参阅图1,对
于任务1,其对应目标检测和目标追踪两个子任务,且目标检测子任务对应YOLO‑V3模型,目
标追踪对应GOTURN模型;其中,YOLO‑V3模型和GOTURN模型均包含多个算子,例如:卷积算
子、池化算子、全连接算子等。
[0046] 在实际应用中,当发送任务请求的用户的数量增加和/或用户请求的任务数量增加时,最终都会导致数据处理模型数量的增加,因此,多用户、多任务和/或多数据处理模型
的复杂场景归根到底均可看作多数据处理模型的复杂场景,这种多数据处理模型的复杂场
景会对服务端的资源配置带来极大的挑战。然而,发明人在实际应用中发现,现有的资源配
置方法主要针对单数据处理模型进行性能优化,其很难应用到多数据处理模型的复杂场景
中。
[0047] 针对这一问题,本发明提供一种资源配置方法,所述资源配置方法应用于多核架构的服务端。具体地,在所述服务端根据用户的请求需要执行2个或多个第二任务时,所述
资源配置方法能够获取每个第二任务对应的第二数据处理模型,并获取每个第二数据处理
模型中算子的调度顺序和并行执行状态,并以此为依据将所述服务端的资源配置给所有第
二数据处理模型中的算子。由此可知,本发明所述资源配置方法能够适用于多数据处理模
型的复杂场景。
[0048] 于本发明的一实施例中,所述资源配置方法应用于多核架构的服务端。请参阅图2A,所述资源配置方法包括:
[0049] S11,获取所述服务端能够执行的任务作为第一任务;其中,所述第一任务对应于所述服务端能够为用户提供的服务。由于所述服务端为用户提供的是一组事先确定的服
务,因而根据该事先确定的服务能够直接获取所述服务端能够执行的任务,进而获取所述
第一任务。例如,对于某一服务器,若该服务器能够为用户提供的服务包括目标检测跟踪服
务和地图构建服务,则该服务器能够执行的任务包括目标检测跟踪任务和地图构建任务。
[0050] S12,获取所述第一任务对应的数据处理模型作为第一数据处理模型,其中,各所述第一数据处理模型至少包含1个算子。具体地,由于本发明所述资源配置方法主要面向多
用户、多数据处理模型情况下的云服务场景,该场景中包含大量的任务信息,该任务信息为
先验信息,即:在服务端接收到用户请求之前即可获取的信息。所述任务信息例如为所述第
一任务的逻辑结构、模型的结构、算子的类型和参数等,因此,步骤S12能够根据所述任务信
息获取所述第一数据处理模型。例如,请参阅图1,若步骤S11中获取的第一任务包括任务2,
该任务2的任务信息包括:该任务的名称为地图构建,其逻辑结构包括视觉里程计、地图重
建、回环检测,其数据处理模型包括DeepVO、CNN‑SLAM和SDA‑based,并且,根据该数据处理
模型能够直接获取其包含的算子的类型和参数。
[0051] S13,对所述第一数据处理模型中的每个算子进行资源配置,以获取所述第一数据处理模型中各算子所使用的资源数量。所述服务端的资源可以为存储资源、计算资源等,特
别地,所述资源配置算法以内核为单位对所述服务端的资源进行配置,此时,各算子所使用
的资源数量可以通过各算子所使用的内核数量进行表示;例如,算子1所使用的资源数量为
8个内核,算子2所使用的资源数量为16个内核等。
[0052] 上述步骤S11‑S13通常在运行前(编译期)执行,当上述步骤S11‑S13执行完成后,所述服务端即可开始为用户提供服务,此后,用户可以通过发送任务请求的方式请求所述
服务端执行对应的任务。
[0053] S14,当所述服务端接收到用户的任务请求时,获取第二任务;其中,所述第二任务包括所述服务端的当前任务和所述用户的任务请求对应的任务。所述服务端的当前任务包
括所述服务端正在执行的任务和所述服务端尚未执行的任务,因此,所述第二任务包括:所
述用户的任务请求对应的任务、所述服务端当前正在执行的任务和所述服务端尚未执行的
任务。所述用户的任务请求可以来源于同一用户,也可以来源于多个用户。特别地,当所述
服务端当前处于空闲状态时,所述第二任务仅包括所述用户的任务请求对应的任务。
[0054] S15,当所述第二任务的数量大于1时,执行一协同资源配置子方法以获取所述服务端的资源配置方案。此外,当所述第二任务的数量为1时,在资源配置过程中不考虑不同
任务之间的相互影响,此时,对所述服务端的资源进行配置的方法包括:获取所述第二任务
对应的数据处理模型所包含的算子;对于其中的任一算子,根据该算子所使用的资源数量
将所述服务端中相应数量的资源配置给该算子。
[0055] 具体地,请参阅图2B,本实施例中所述协同资源配置子方法包括:
[0056] S151,获取所述第二任务对应的数据处理模型作为第二数据处理模型。
[0057] S152,根据所述第一数据处理模型中各算子所使用的资源数量,获取所述第二数据处理模型中各算子所使用的资源数量。由于所述第二任务是用户请求所述服务端执行的
任务,而所述第一任务是所述服务端能够执行的任务,因此,每个第二任务均包含于所述第
一任务,故:根据所述第一任务对应的第一数据处理模型中各算子所使用的资源数量,能够
获取所述第二任务对应的第二数据处理模型中各算子所使用的资源数量。
[0058] S153,获取所述第二数据处理模型中各算子的调度顺序和并行执行状态。具体地,受限于算子之间的相互依赖关系以及所述服务端最大可用资源,所述第二数据处理模型中
的某些算子在时间上必须先后执行,例如图2C中的算子OP‑1和算子OP‑4,所述算子的调度
顺序用于描述算子的先后执行顺序。此外,在确保服务端的资源充足的情况下,所述服务端
也可以并行执行(即:同时执行)2个或多个算子以提高性能,例如图2C中的算子OP‑1、OP‑2
和OP‑3;对于某一算子来说,其并行执行状态用于描述该算子是否可以与其他算子并行执
行,和/或与该算子并行执行的算子的数量和名称。
[0059] S154,根据所述第二数据处理模型中各算子所使用的资源数量、调度顺序和并行执行状态对所述服务端的资源进行配置,从而生成所述服务端的资源配置方案。具体地,当
各算子的调度顺序和并行执行状态确定以后,结合各算子所使用的资源数量,步骤S153能
够实现对所述服务端的资源进行配置。例如,若算子OP‑1、OP‑2、OP‑3和OP‑4所使用的资源
数量分别为8内核、8内核、8内核和32内核,其执行顺序为先执行算子OP‑1、OP‑2和OP‑3,再
执行算子OP‑4,且算子OP‑1、OP‑2和OP‑3可以并行执行;若所述服务端的内核总数为32,则
根据以上信息,所述服务端可以同时分配8内核给算子OP‑1、OP‑2和OP‑3,当算子OP‑1、OP‑2
和OP‑3均执行完成后,所述服务端分配32内核给算子OP‑4,从而完成对其资源的配置。
[0060] 在所述服务端根据用户的请求需要执行2个或多个第二任务时,所述资源配置方法能够获取每个第二任务对应的第二数据处理模型,并获取每个第二数据处理模型中算子
的调度顺序和并行执行状态,并以此为依据将所述服务端的资源配置给所有第二数据处理
模型中的算子。由此可知,本发明所述资源配置方法能够适用于多数据处理模型的复杂场
景。
[0061] 根据以上描述可知,上述步骤S11‑S13实现的是单个数据处理模型中算子的资源配置,在该过程中可以不考虑不同任务之间的相互影响,因而该过程可以看作单任务资源
配置阶段。步骤S14‑S15实现的是至少2个数据处理模型中算子的资源配置,在该过程中需
要考虑不同任务之间的相互影响,因而该过程可以看作多任务协同资源配置阶段。
[0062] 相对于单数据处理模型的优化,多数据处理模型给数据复用、以算子为粒度的共享资源抢占、服务运行顺序等方面带来了较大的挑战,相较之下,本实施例所述资源配置方
法以模型为粒度进行资源配置,因而能够获取更多的先验信息,从而保证了所述资源配置
方法能够获得更好的服务保证率和更低的能耗。
[0063] 此外,由于GPU/TPU的运行模型与多核架构的芯片差异较大,而一些实施例中主要针对CPU+GPU/CPU+TPU等异构集群进行资源配置,这种配置方式主要关注GPU/TPU上的计
算‑访存操作的重叠,而在多核架构上除计算‑访存重叠外,还需要考虑内核分配、算子流水
线执行等因素,这就导致这些实施例中的资源配置方案在多核结构上的支持并不完善。相
较之下,本实施例所述资源配置方法能够以算子之间的调度顺序和并行执行状态为依据对
所述服务端的内核进行配置,因而能够充分考虑内核分配和算子流水线执行的因素,因此,
本实施例所述资源配置方法能够适用于多核架构的服务端。
[0064] 于本发明的一实施例中,由于所述第一任务、所述第一数据处理模型及其中的算子均为预先可知的先验信息,因此,对于所述第一数据处理模型中的任一算子,该算子所使
用的资源数量可以采用性能测试的方式获得。具体地,请参阅图3,采用性能测试的方法获
取所述第一数据处理模型中任一算子所使用的资源数量的实现方法包括:
[0065] S131,分别为该算子配置不同数量的资源,并获取各配置对应的算子性能。其中,所述算子性能需要兼顾算子的执行时间以及算子所使用的资源数量,从而在满足服务质量
的情况下最小化平均资源占用,例如,所述算子性能可以通过算子的执行时间以及算子所
使用的资源数量的乘积进行描述。具体地,各配置对应的算子性能可以通过在该配置下实
际执行该算子获得。例如,可以分别为该算子配置1个内核、2个内核、……、32个内核,并在
该算子配置1个内核时执行该算子以获取配置1个内核时的算子性能、在该算子配置2个内
核时执行该算子以获取配置2个内核时的算子性能、……、在该算子配置32个内核时执行该
算子以获取配置32个内核时的算子性能。
[0066] S132,根据各配置对应的算子性能,获取该算子所使用的资源数量。优选地,从该算子的所有的配置中选取算子性能最佳的一种配置,并将该配置对应的资源数量作为该算
子所使用的资源数量。例如,若该算子在配置8个内核时所对应的算子性能最佳,则该算子
所使用的资源数量为8个内核。
[0067] 本实施例中,由于所述资源配置方法主要针对多核架构的服务端及其包含的深度学习专用芯片,考虑到多个无数据依赖关系的算子之间可以空分共享多个内核的资源,因
而本实施例采用性能测试的方式获取所述第一数据处理模型中任一算子所使用的资源数
量,此种方式能够保证每个算子采用最为经济的资源分配配置,不仅能够使算子取得可接
受的性能,同时能够尽可能降低资源占用,从而为其他算子尽可能多地提供可用资源。
[0068] 于本发明的一实施例中,在获取所述第一数据处理模型中各算子所使用的资源数量以后,所述资源配置方法还包括:根据所述第一数据处理模型中各算子所使用的资源数
量,对所述第一数据处理模型中的各算子进行图级别优化,其中,所述图级别优化包括算子
融合和/或算子切分。
[0069] 具体地,所述算子融合是指在所述服务端的最大可用资源的限制下,将所述第一数据处理模型中若干个连续的、使用资源较少且属于同一任务的算子进行融合;其中,通过
算子融合能够将至少2个算子融合为1个算子。所述算子融合能够通过流水化的执行以增加
并行度从而减小访存开销。例如,请参阅图4,算子卷积1、池化1、归一化1和激活1为连续的、
使用8个内核且属于同一任务的4个算子,在进行图级别优化时可以通过算子融合将其融合
为1个算子,该算子使用16个内核进行运算;由此可知,通过算子融合能够增加并行度并减
少访存开销。
[0070] 所述算子切分是指在所述服务端的最大可用资源的限制以及不影响性能的情况下,将运行时间较长的算子切分为2个或多个算子。切分后的算子由于调度粒度更小,在多
协同资源配置阶段能够提供更高的灵活性。例如,请参阅图4,算子卷积2为一使用16内核
的、运行时间较长的算子,在算子切分过程中可以根据所述服务端的内核使用情况,将卷积
2这一算子切分为使用16内核的算子(卷积2a)和使用32内核的算子(卷积2b)。
[0071] 根据以上描述可知,本实施例通过对所述第一数据处理模型中的算子进行图级别优化,能够为所述第一数据处理模型中算子的资源配置提供更高的灵活性、更高的并行度
以及更小的访存开销;并且,通过将所述算子融合和所述算子切分相结合能够有效削减资
源配置过程中由于运行时间、资源使用带来的硬件空转和资源浪费,并能够有效填充硬件
资源被浪费的部分,以提高性能。
[0072] 请参阅图5,于本发明的一实施例中,获取所述第二数据处理模型中各算子的调度顺序的实现方法包括:
[0073] S51,获取所述第二数据处理模型中各算子的性能模型;其中,所述性能模型包含算子的执行时间,可以采用基于性能测试的方式获取。具体地,在编译时期,分别以不同的
配置运行所述第二数据处理模型中的各个算子,并根据算子的执行时间等参数构建算子的
性能模型。此外,在实际运行中,还可以根据算子的实际运行情况对所述性能模型进行实时
更新,以提升所述性能模型的精确度,从而获得更为优化的资源配置。
[0074] S52,获取各所述第二任务的服务质量要求。其中,各所述第二任务的服务质量要求可以从用户的任务请求中获取。
[0075] S53,根据各所述第二任务的服务质量要求和所述第二数据处理模型中各算子的性能模型,获取所述第二数据处理模型中各算子的调度顺序。例如,可以适当延后对服务质
量要求较低的任务中算子的执行,以将所述服务端的资源优先提供给服务质量要求较高的
任务中的算子使用。此外,还可以根据算子的执行时间以及所述第二任务的服务质量要求
综合考虑所述第二数据处理模型中各算子的调度顺序。
[0076] 于本发明的一实施例中,考虑到在同时执行不同任务中的算子时(即:当不同任务中的算子并行执行时),算子会由于其他任务中的算子占用共享资源(例如缓存、带宽等)而
受到干扰并导致性能下降;当所述干扰比较严重时,并行执行两个算子的时间可能会超过
串行执行这两个算子的时间,此时,并行执行的性能要差于串行执行。针对这一问题,请参
阅图6A,本实施例中在获取所述第二数据处理模型中各算子的并行执行状态后,所述协同
资源配置子方法还包括:
[0077] S61,获取所述第二数据处理模型中算子之间的干扰模型。其中,请参阅图6B,所述算子之间的干扰模型的构建方法包括量化共享资源需求、性能测试和构建分析模型。具体
地,所述量化共享资源需求是指对多个算子之间需求的共享资源进行量化,所述共享资源
例如为缓存、带宽等。在所述性能测试过程中,可以采用随机生成的算子参数和/或常见网
络的算子参数对算子进行性能测试(即:采用多种算子参数分别执行算子,以获取不同算子
参数对应的性能),从而获取算子之间的干扰情况。在所述构建分析模型过程中,可以利用
线性回归模型、神经网络模型等方式对所述算子之间的干扰情况进行建模,从而获取所述
第二数据处理模型中算子之间的干扰模型。
[0078] S62,根据所述干扰模型,对所述第二数据处理模型中各算子的调度顺序和并行执行状态进行调整。具体地,对于并行执行的两个算子,若二者之间的干扰较大,则步骤S62将
这两个算子调整为串行执行,并根据这两个算子的性能模型和/或服务质量要求等调整这
两个算子的调度顺序。例如,若算子1和算子2为并行执行的算子,根据所述干扰模型获知算
子1和算子2之间的干扰较大,此时,需要将算子1和算子2改为串行执行,并且,还需要重新
确定算子1和算子2之间的调度顺序。
[0079] 本实施例能够根据所述干扰模型对所述第二数据处理模型中各算子的调度顺序和并行执行状态进行调整,使得所述资源配置方法能够减少甚至消除不同任务中的算子之
间由于并行执行而引入的干扰,有利于提升资源配置的准确度。
[0080] 于本发明的一实施例中,在获取所述第二数据处理模型中各算子的调度顺序和并行执行状态后,为消除某些情况下由于资源占用、调度顺序引发的硬件资源浪费,请参阅图
7A,本实施例所述协同资源配置子方法还包括:
[0081] S71,根据所述第二数据处理模型中各算子所使用的资源数量、调度顺序和并行执行状态,获取所述服务端的资源使用状况。所述服务端的资源使用状况包括所述服务端是
否存在空闲资源以及空闲资源的数量。例如,图7B中,在调整前由于算子OP‑1、OP‑2和OP‑3
并行执行,且三者均与算子OP‑4串行执行,此时,在算子OP‑1、OP‑2和OP‑3执行的过程中,所
述服务端存在8个空闲的内核。
[0082] S72,根据所述服务端的资源使用状况,对所述第二数据处理模型中的1个或多个算子所使用的资源数量进行调整。具体地,如果在某一时刻所述服务端存在空闲资源,则步
骤S72将该空闲资源分配给该时刻正在执行的1个或多个算子。如图7B所示,在算子OP‑1、
OP‑2和OP‑3执行的过程中,所述服务端存在8个空闲的内核,此时,步骤S72可以将所述服务
端空闲的8个内核分配给算子OP‑1使用。
[0083] 本实施例能够根据所述服务端的资源使用状况对所述第二数据处理模型中的1个或多个算子所使用的资源数量进行调整,从而尽可能地减少甚至消除由于资源占用、调度
顺序引发的硬件资源浪费。
[0084] 对于所述服务端来说,由于用户众多、服务类型众多且任务请求到达的时间无法准确确定,因而不可能静态地穷举所有可能出现的情况并给出最优资源配置方案,故服务
端需要在运行时实时响应用户发送的任务请求。为实现这一目标,于本发明的一实施例中,
请参阅图8,当所述服务端接收到用户的任务请求时,获取所述服务端的当前任务和所述任
务请求对应的任务作为所述第二任务的实现方法包括:
[0085] S141,停止当前正在执行的资源配置方案。其中,所述当前正在执行的资源配置方案是根据所述服务端此前接收到的任务请求所生成的资源配置方案。通过执行本步骤使得
所述资源配置方法在所述服务端接收到新的任务请求时,抛弃此刻之前原有的资源配置方
案。
[0086] S142,从所述服务端的当前任务中,获取未完成的任务和子任务。其中,所述服务端的当前任务包括所述服务端正在执行的任务和尚未开始执行的任务;所述未完成的任务
是指所述服务端尚未开始执行的任务,所述未完成的子任务是指所述服务端正在执行的任
务中未执行完或未开始执行的子任务。
[0087] S143,将所述用户的任务请求对应的任务、所述未完成的任务和子任务作为所述第二任务。此后,所述资源配置方法根据该第二任务执行所述协同资源配置子方法,从而产
生新的资源配置方案。
[0088] 本实施例中,由于所述资源配置方法主要面向多核架构的服务端这一场景,该场景中,一旦服务类型确定其任务的结构(包括任务中的子任务、逻辑依赖关系)即可确定。因
此,本实施例能够在所述服务端的运行过程中实时响应用户的任务请求。
[0089] 于本发明的一实施例中,在对所述服务端的资源进行配置完成以后,所述资源配置方法还包括:在生成代码、编译为可执行会话时,将具体的深度学习专用芯片编程模型配
置为支持JIT,并根据实际算子运行情况对资源配置、调度顺序、并行执行状态进行动态的
调整。
[0090] 于本发明的一实施例中,所述资源配置方法以所述服务端的内核为单位进行资源配置。此时,所述资源配置方法配置给每个算子的资源为整数个内核。
[0091] 于本发明的一实施例中,所述资源配置方法应用于多核架构的服务端,并以内核为单位对所述服务端的资源进行配置。本实施例所述资源配置方法面向多用户、多数据处
理模型情况下的云服务场景,在这些场景中请求的粒度较大、包含的先验信息较多。因此,
本实施例能够充分利用所述先验信息,其中,所述先验信息例如为任务的逻辑结构、任务中
模型的结构、算子的类型和参数等,在编译期对每个模型进行优化并对算子之间的干扰进
行建模,从而在多个服务请求到来时生成相对于独立优化若干数据处理模型更为优秀的资
源配置方案。具体地,请参阅图9,本实施例中所述资源配置方法包括:
[0092] S91,获取所述服务端能够执行的任务作为第一任务。
[0093] S92,获取所述第一任务的任务信息及任务所需文件。其中,所述任务信息、任务所需文件作为先验信息在编译时期提供。
[0094] S93,获取所述第一任务对应的第一数据处理模型,并将其翻译为统一中间表达。通常情况下,所述服务端支持多种数据处理模型,因此,有必要将所有的数据处理模型转换
为统一的中间模型。
[0095] S94,对各所述第一任务进行单任务资源配置。其中,所述单任务资源配置过程可以在运行前(编译期)执行。所述单任务资源配置的目标为:在满足服务质量的情况下,最小
化平均资源占用。具体地,所述单任务资源配置方法针对多核架构优化模型中每个算子所
使用的内核数量进行模型的图级别优化(包括算子融合和算子拆分),并生成优化后的资源
配置以供多模型协同资源配置阶段使用。并且,在所述单任务资源配置阶段还会完成对所
述第一数据处理模型中算子的性能模型的构建,以供所述多模型协同资源配置阶段使用。
[0096] S95,在所述单任务资源配置完成后,利用所述服务端为用户提供服务。
[0097] S96,当所述服务端接收到用户的任务请求时,获取第二任务;其中,所述第二任务包括所述服务端的当前任务和所述用户的任务请求对应的任务;每个所述第二任务均包含
于所述第一任务,且所述用户的任务请求中包括所述第二任务的服务质量要求。
[0098] S97,对所述第二任务进行多任务协同资源配置。具体地,步骤S94能够在满足服务质量要求的情况下获取每个数据处理模型的最优资源配置,为保证多模型共享硬件资源情
况下的服务质量,本步骤将考虑算子调度顺序、算子之间的相互干扰,对步骤S94中获取的
单任务资源配置进行合并从而生成总体的资源配置,以保证尽可能多的任务满足服务质量
要求。
[0099] S98,根据所述多任务协同资源配置的结果进行编译执行。
[0100] S99,在执行过程中或者执行完成后,根据执行时间、是否满足服务质量要求等反馈信息,对步骤S94中获取的算子的性能模型进行动态调整,以实现更优化的资源配置。
[0101] 此外,对于实时到达所述服务端的任务请求,本实施例所述资源配置方法采用如下方式进行处理:在新的任务请求到来时,抛弃此刻之前的原有所有任务的资源配置方案,
并将原有任务的剩余部分结合新的任务请求进行协同优化,从而产生资源配置方案。
[0102] 所述资源配置方法在单任务资源配置阶段,由于算子类型、参数不同,其计算密集度、对硬件资源的要求也不尽相同。其中,对计算量较小的算子,为其配置过多的资源会造
成计算与访存不匹配以及通信开销大的问题,因此,即便为这些算子分配更多的资源对其
性能的提升也不大,甚至有可能造成性能下降。针对这一问题,本实施例在所述单任务资源
配置阶段针对每个算子采用性能测试的方式来获取最为经济的资源配置。
[0103] 并且,步骤S94中采用的图级别优化能够在单任务配置阶段提供更高的灵活性、更高的并行度以及更小的访存开销。具体地,在确定每个算子的资源配置后,步骤S94会寻找
连续的、使用内核较少的算子进行融合以通过流水化的执行来增加并行度,并在不影响性
能的情况下尽可能地将运行时间较长的算子拆分为占用内核更少的算子,由于切分后的算
子调度粒度更小,因而能够为多协同资源配置阶段提供更高的灵活性。因此,通过所述图级
别优化能够有效填充引荐资源被浪费的部分,从而提升资源配置的性能。
[0104] 此外,在从单任务资源配置阶段过渡到多任务协同资源配置阶段的过程中,不用数据处理模型的算子之间存在相互干扰,这种干扰会对系统性能产生较为显著的影响。不
同类型的算子对共享资源的要求不尽相同,例如,存储密集型算子对带宽要求较高,而计算
密集型算子对片上缓存要求较高。针对这一问题,本实施例采用步骤S61~S62所示的量化‑
性能测试构建分析模型的方式,通过对不同类型、参数和算子之间的干扰进行分析从而确
定若干模型的并行运行模式,以尽可能降低干扰造成的影响。对于两个或多个算子来说,如
果并行运行会花费高于串行运行的时间,则这些算子对共享资源的抢占会导致它们并不适
合同时运行,通过干扰模型能够充分避免这种情况。此外,在考虑干扰的情况下,所述多任
务协同资源配置还能够充分考虑用户提供的服务质量要求,并对不同模型中算子的运行顺
序进行合理的调整,从而达到最大化满足服务质量要求任务比例的目标。
[0105] 基于以上对所述资源配置方法的描述,本发明还提供一种计算机可读存储介质,其上存储有计算机程序;该计算机程序被处理器执行时实现本发明所述资源配置方法。
[0106] 基于以上对所述资源配置方法的描述,本发明还提供一种服务端,所述服务端为多核架构。请参阅图10,于本发明的一实施例中,所述服务端100包括:存储器110,存储有一
计算机程序;处理器120,与所述存储器110通信相连,调用所述计算机程序时执行本发明所
述的资源配资方法;显示器130,与所述存储器110和所述处理器120通信相连,用于显示所
述资源配置方法的相关GUI交互界面。
[0107] 本发明所述的资源配置方法的保护范围不限于本实施例列举的步骤执行顺序,凡是根据本发明的原理所做的现有技术的步骤增减、步骤替换所实现的方案都包括在本发明
的保护范围内。
[0108] 本发明提供了一种资源配置方法、介质及电子设备。所述资源配置方法是针对多用户、多数据处理模型场景的面向多核架构深度学习专用芯片的编译和资源配置的优化方
法,能够在多种场景下实时地结合多个数据处理模型的信息对资源配置进行跨模型协同优
化,以提高总体服务质量、满足服务率,且最小化系统能耗。所述资源配置方法能够在多个
用户提供任务信息、服务要求以及任务所需文件后,结合硬件特征先后进行单任务资源配
置的优化、多任务资源配置的优化,并最终产生可执行服务会话为用户提供服务。
[0109] 现有方法对于服务调度的研究主要以最大化时延敏感服务的满足率,最大化硬件利用率为目标,针对服务之间的资源共享、任务的运行顺序等设计实时的、低开销的调度算
法进行调度。与现有方法不同,本发明考虑到在为多个用户、多个任务提供服务时,需要尽
可能多地满足用户对任务的需求,该目标是最直观的目标。为便于优化,本发明将该目标转
化为一对偶的目标,即:在满足用户提供的服务质量要求的情况下,最小化每个任务以及所
有任务占用的资源,这两个目标能够涵盖本发明面向的场景。在量化资源占用时,本发明针
对每个任务,根据各任务中算子的资源使用以及执行时长计算平均资源占用。最终,本发明
所使用的优化目标为:在保证服务质量满足、每个任务中算子资源占用不超过最大可用资
源的情况下,最小化所有任务平均资源占用之和。
[0110] 在所述服务端根据用户的请求需要执行2个或多个第二任务时,所述资源配置方法能够获取每个第二任务对应的第二数据处理模型,并获取每个第二数据处理模型中算子
的调度顺序和并行执行状态,并以此为依据将所述服务端的资源配置给所有第二数据处理
模型中的算子。由此可知,本发明所述资源配置方法能够适用于多数据处理模型的复杂场
景。
[0111] 综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0112] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因
此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完
成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。