一种资源配置方法、介质及服务端转让专利
申请号 : CN202011134276.0
文献号 : CN112199196B
文献日 : 2022-03-18
发明人 : 刘子汉 , 冷静文 , 陆冠东 , 陈全 , 李超 , 过敏意
申请人 : 上海交通大学
摘要 :
权利要求 :
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交互界面。
说明书 :
一种资源配置方法、介质及服务端
技术领域
背景技术
的服务也面临更大的挑战。为了满足多任务、多模型和多用户的复杂场景对资源的需求,许
多芯片厂商提供了算力水平较高的深度学习专用芯片以及相应编程框架供深度学习服务
提供商使用,且服务提供商也会组合使用多个芯片。然而,发明人在实际应用中发现,目前
的资源配置方法主要针对单数据处理模型进行性能优化,其很难应用到多数据处理模型的
复杂场景中。
发明内容
用到多数据处理模型的复杂场景中的问题。
一任务;获取所述第一任务对应的数据处理模型作为第一数据处理模型,其中,各所述第一
数据处理模型至少包含1个算子;对所述第一数据处理模型中的每个算子进行资源配置,以
获取所述第一数据处理模型中各算子所使用的资源数量;当所述服务端接收到用户的任务
请求时,获取第二任务;其中,所述第二任务包括所述服务端的当前任务和所述用户的任务
请求对应的任务;当所述第二任务的数量大于1时,执行一协同资源配置子方法;其中,所述
协同资源配置子方法包括:获取所述第二任务对应的数据处理模型作为第二数据处理模
型;根据所述第一数据处理模型中各算子所使用的资源数量,获取所述第二数据处理模型
中各算子所使用的资源数量;获取所述第二数据处理模型中各算子的调度顺序和并行执行
状态;根据所述第二数据处理模型中各算子所使用的资源数量、调度顺序和并行执行状态
对所述服务端的资源进行配置。
对应的算子性能;根据各配置对应的算子性能,获取该算子所使用的资源数量。
或算子切分。
含算子的执行时间;获取各所述第二任务的服务质量要求;根据各所述第二任务的服务质
量要求和所述第二数据处理模型中各算子的性能模型,获取所述第二数据处理模型中各算
子的调度顺序。
扰模型;根据所述干扰模型,对所述第二数据处理模型中各算子的调度顺序和并行执行状
态进行调整。
算子所使用的资源数量、调度顺序和并行执行状态,获取所述服务端的资源使用状况;根据
所述服务端的资源使用状况,对所述第二数据处理模型中至少1个算子所使用的资源数量
进行调整。
获取未完成的任务和子任务;将所述用户的任务请求对应的任务、所述未完成的任务和子
任务作为所述第二任务。
行本发明第一方面所述的资源配置方法;显示器,与所述处理器和所述存储器通信相连,用
于显示所述资源配置方法的相关GUI交互界面。
的调度顺序和并行执行状态,并以此为依据将所述服务端的资源配置给所有第二数据处理
模型中的算子。由此可知,本发明所述资源配置方法能够适用于多数据处理模型的复杂场
景。
附图说明
具体实施方式
施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离
本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施
例中的特征可以相互组合。
制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可
能更为复杂。此外,此外,在本文中,诸如“第一”、“第二”等之类的关系术语仅仅用来将一个
实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间
存在任何这种实际的关系或者顺序。
中,每个任务请求对应一个任务,每个任务包含多个子任务,每个子任务对应1个或多个数
据处理模型及任务文件,且每个数据处理模型均包含1个或多个算子。例如,请参阅图1,对
于任务1,其对应目标检测和目标追踪两个子任务,且目标检测子任务对应YOLO‑V3模型,目
标追踪对应GOTURN模型;其中,YOLO‑V3模型和GOTURN模型均包含多个算子,例如:卷积算
子、池化算子、全连接算子等。
的复杂场景归根到底均可看作多数据处理模型的复杂场景,这种多数据处理模型的复杂场
景会对服务端的资源配置带来极大的挑战。然而,发明人在实际应用中发现,现有的资源配
置方法主要针对单数据处理模型进行性能优化,其很难应用到多数据处理模型的复杂场景
中。
资源配置方法能够获取每个第二任务对应的第二数据处理模型,并获取每个第二数据处理
模型中算子的调度顺序和并行执行状态,并以此为依据将所述服务端的资源配置给所有第
二数据处理模型中的算子。由此可知,本发明所述资源配置方法能够适用于多数据处理模
型的复杂场景。
务,因而根据该事先确定的服务能够直接获取所述服务端能够执行的任务,进而获取所述
第一任务。例如,对于某一服务器,若该服务器能够为用户提供的服务包括目标检测跟踪服
务和地图构建服务,则该服务器能够执行的任务包括目标检测跟踪任务和地图构建任务。
用户、多数据处理模型情况下的云服务场景,该场景中包含大量的任务信息,该任务信息为
先验信息,即:在服务端接收到用户请求之前即可获取的信息。所述任务信息例如为所述第
一任务的逻辑结构、模型的结构、算子的类型和参数等,因此,步骤S12能够根据所述任务信
息获取所述第一数据处理模型。例如,请参阅图1,若步骤S11中获取的第一任务包括任务2,
该任务2的任务信息包括:该任务的名称为地图构建,其逻辑结构包括视觉里程计、地图重
建、回环检测,其数据处理模型包括DeepVO、CNN‑SLAM和SDA‑based,并且,根据该数据处理
模型能够直接获取其包含的算子的类型和参数。
别地,所述资源配置算法以内核为单位对所述服务端的资源进行配置,此时,各算子所使用
的资源数量可以通过各算子所使用的内核数量进行表示;例如,算子1所使用的资源数量为
8个内核,算子2所使用的资源数量为16个内核等。
服务端执行对应的任务。
括所述服务端正在执行的任务和所述服务端尚未执行的任务,因此,所述第二任务包括:所
述用户的任务请求对应的任务、所述服务端当前正在执行的任务和所述服务端尚未执行的
任务。所述用户的任务请求可以来源于同一用户,也可以来源于多个用户。特别地,当所述
服务端当前处于空闲状态时,所述第二任务仅包括所述用户的任务请求对应的任务。
任务之间的相互影响,此时,对所述服务端的资源进行配置的方法包括:获取所述第二任务
对应的数据处理模型所包含的算子;对于其中的任一算子,根据该算子所使用的资源数量
将所述服务端中相应数量的资源配置给该算子。
任务,而所述第一任务是所述服务端能够执行的任务,因此,每个第二任务均包含于所述第
一任务,故:根据所述第一任务对应的第一数据处理模型中各算子所使用的资源数量,能够
获取所述第二任务对应的第二数据处理模型中各算子所使用的资源数量。
的某些算子在时间上必须先后执行,例如图2C中的算子OP‑1和算子OP‑4,所述算子的调度
顺序用于描述算子的先后执行顺序。此外,在确保服务端的资源充足的情况下,所述服务端
也可以并行执行(即:同时执行)2个或多个算子以提高性能,例如图2C中的算子OP‑1、OP‑2
和OP‑3;对于某一算子来说,其并行执行状态用于描述该算子是否可以与其他算子并行执
行,和/或与该算子并行执行的算子的数量和名称。
各算子的调度顺序和并行执行状态确定以后,结合各算子所使用的资源数量,步骤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,从而完成对其资源的配置。
的调度顺序和并行执行状态,并以此为依据将所述服务端的资源配置给所有第二数据处理
模型中的算子。由此可知,本发明所述资源配置方法能够适用于多数据处理模型的复杂场
景。
配置阶段。步骤S14‑S15实现的是至少2个数据处理模型中算子的资源配置,在该过程中需
要考虑不同任务之间的相互影响,因而该过程可以看作多任务协同资源配置阶段。
法以模型为粒度进行资源配置,因而能够获取更多的先验信息,从而保证了所述资源配置
方法能够获得更好的服务保证率和更低的能耗。
算‑访存操作的重叠,而在多核架构上除计算‑访存重叠外,还需要考虑内核分配、算子流水
线执行等因素,这就导致这些实施例中的资源配置方案在多核结构上的支持并不完善。相
较之下,本实施例所述资源配置方法能够以算子之间的调度顺序和并行执行状态为依据对
所述服务端的内核进行配置,因而能够充分考虑内核分配和算子流水线执行的因素,因此,
本实施例所述资源配置方法能够适用于多核架构的服务端。
用的资源数量可以采用性能测试的方式获得。具体地,请参阅图3,采用性能测试的方法获
取所述第一数据处理模型中任一算子所使用的资源数量的实现方法包括:
的情况下最小化平均资源占用,例如,所述算子性能可以通过算子的执行时间以及算子所
使用的资源数量的乘积进行描述。具体地,各配置对应的算子性能可以通过在该配置下实
际执行该算子获得。例如,可以分别为该算子配置1个内核、2个内核、……、32个内核,并在
该算子配置1个内核时执行该算子以获取配置1个内核时的算子性能、在该算子配置2个内
核时执行该算子以获取配置2个内核时的算子性能、……、在该算子配置32个内核时执行该
算子以获取配置32个内核时的算子性能。
子所使用的资源数量。例如,若该算子在配置8个内核时所对应的算子性能最佳,则该算子
所使用的资源数量为8个内核。
而本实施例采用性能测试的方式获取所述第一数据处理模型中任一算子所使用的资源数
量,此种方式能够保证每个算子采用最为经济的资源分配配置,不仅能够使算子取得可接
受的性能,同时能够尽可能降低资源占用,从而为其他算子尽可能多地提供可用资源。
量,对所述第一数据处理模型中的各算子进行图级别优化,其中,所述图级别优化包括算子
融合和/或算子切分。
算子融合能够将至少2个算子融合为1个算子。所述算子融合能够通过流水化的执行以增加
并行度从而减小访存开销。例如,请参阅图4,算子卷积1、池化1、归一化1和激活1为连续的、
使用8个内核且属于同一任务的4个算子,在进行图级别优化时可以通过算子融合将其融合
为1个算子,该算子使用16个内核进行运算;由此可知,通过算子融合能够增加并行度并减
少访存开销。
协同资源配置阶段能够提供更高的灵活性。例如,请参阅图4,算子卷积2为一使用16内核
的、运行时间较长的算子,在算子切分过程中可以根据所述服务端的内核使用情况,将卷积
2这一算子切分为使用16内核的算子(卷积2a)和使用32内核的算子(卷积2b)。
以及更小的访存开销;并且,通过将所述算子融合和所述算子切分相结合能够有效削减资
源配置过程中由于运行时间、资源使用带来的硬件空转和资源浪费,并能够有效填充硬件
资源被浪费的部分,以提高性能。
配置运行所述第二数据处理模型中的各个算子,并根据算子的执行时间等参数构建算子的
性能模型。此外,在实际运行中,还可以根据算子的实际运行情况对所述性能模型进行实时
更新,以提升所述性能模型的精确度,从而获得更为优化的资源配置。
量要求较低的任务中算子的执行,以将所述服务端的资源优先提供给服务质量要求较高的
任务中的算子使用。此外,还可以根据算子的执行时间以及所述第二任务的服务质量要求
综合考虑所述第二数据处理模型中各算子的调度顺序。
受到干扰并导致性能下降;当所述干扰比较严重时,并行执行两个算子的时间可能会超过
串行执行这两个算子的时间,此时,并行执行的性能要差于串行执行。针对这一问题,请参
阅图6A,本实施例中在获取所述第二数据处理模型中各算子的并行执行状态后,所述协同
资源配置子方法还包括:
地,所述量化共享资源需求是指对多个算子之间需求的共享资源进行量化,所述共享资源
例如为缓存、带宽等。在所述性能测试过程中,可以采用随机生成的算子参数和/或常见网
络的算子参数对算子进行性能测试(即:采用多种算子参数分别执行算子,以获取不同算子
参数对应的性能),从而获取算子之间的干扰情况。在所述构建分析模型过程中,可以利用
线性回归模型、神经网络模型等方式对所述算子之间的干扰情况进行建模,从而获取所述
第二数据处理模型中算子之间的干扰模型。
这两个算子调整为串行执行,并根据这两个算子的性能模型和/或服务质量要求等调整这
两个算子的调度顺序。例如,若算子1和算子2为并行执行的算子,根据所述干扰模型获知算
子1和算子2之间的干扰较大,此时,需要将算子1和算子2改为串行执行,并且,还需要重新
确定算子1和算子2之间的调度顺序。
间由于并行执行而引入的干扰,有利于提升资源配置的准确度。
7A,本实施例所述协同资源配置子方法还包括:
否存在空闲资源以及空闲资源的数量。例如,图7B中,在调整前由于算子OP‑1、OP‑2和OP‑3
并行执行,且三者均与算子OP‑4串行执行,此时,在算子OP‑1、OP‑2和OP‑3执行的过程中,所
述服务端存在8个空闲的内核。
骤S72将该空闲资源分配给该时刻正在执行的1个或多个算子。如图7B所示,在算子OP‑1、
OP‑2和OP‑3执行的过程中,所述服务端存在8个空闲的内核,此时,步骤S72可以将所述服务
端空闲的8个内核分配给算子OP‑1使用。
顺序引发的硬件资源浪费。
端需要在运行时实时响应用户发送的任务请求。为实现这一目标,于本发明的一实施例中,
请参阅图8,当所述服务端接收到用户的任务请求时,获取所述服务端的当前任务和所述任
务请求对应的任务作为所述第二任务的实现方法包括:
所述资源配置方法在所述服务端接收到新的任务请求时,抛弃此刻之前原有的资源配置方
案。
是指所述服务端尚未开始执行的任务,所述未完成的子任务是指所述服务端正在执行的任
务中未执行完或未开始执行的子任务。
生新的资源配置方案。
此,本实施例能够在所述服务端的运行过程中实时响应用户的任务请求。
置为支持JIT,并根据实际算子运行情况对资源配置、调度顺序、并行执行状态进行动态的
调整。
理模型情况下的云服务场景,在这些场景中请求的粒度较大、包含的先验信息较多。因此,
本实施例能够充分利用所述先验信息,其中,所述先验信息例如为任务的逻辑结构、任务中
模型的结构、算子的类型和参数等,在编译期对每个模型进行优化并对算子之间的干扰进
行建模,从而在多个服务请求到来时生成相对于独立优化若干数据处理模型更为优秀的资
源配置方案。具体地,请参阅图9,本实施例中所述资源配置方法包括:
为统一的中间模型。
化平均资源占用。具体地,所述单任务资源配置方法针对多核架构优化模型中每个算子所
使用的内核数量进行模型的图级别优化(包括算子融合和算子拆分),并生成优化后的资源
配置以供多模型协同资源配置阶段使用。并且,在所述单任务资源配置阶段还会完成对所
述第一数据处理模型中算子的性能模型的构建,以供所述多模型协同资源配置阶段使用。
于所述第一任务,且所述用户的任务请求中包括所述第二任务的服务质量要求。
况下的服务质量,本步骤将考虑算子调度顺序、算子之间的相互干扰,对步骤S94中获取的
单任务资源配置进行合并从而生成总体的资源配置,以保证尽可能多的任务满足服务质量
要求。
并将原有任务的剩余部分结合新的任务请求进行协同优化,从而产生资源配置方案。
成计算与访存不匹配以及通信开销大的问题,因此,即便为这些算子分配更多的资源对其
性能的提升也不大,甚至有可能造成性能下降。针对这一问题,本实施例在所述单任务资源
配置阶段针对每个算子采用性能测试的方式来获取最为经济的资源配置。
连续的、使用内核较少的算子进行融合以通过流水化的执行来增加并行度,并在不影响性
能的情况下尽可能地将运行时间较长的算子拆分为占用内核更少的算子,由于切分后的算
子调度粒度更小,因而能够为多协同资源配置阶段提供更高的灵活性。因此,通过所述图级
别优化能够有效填充引荐资源被浪费的部分,从而提升资源配置的性能。
同类型的算子对共享资源的要求不尽相同,例如,存储密集型算子对带宽要求较高,而计算
密集型算子对片上缓存要求较高。针对这一问题,本实施例采用步骤S61~S62所示的量化‑
性能测试构建分析模型的方式,通过对不同类型、参数和算子之间的干扰进行分析从而确
定若干模型的并行运行模式,以尽可能降低干扰造成的影响。对于两个或多个算子来说,如
果并行运行会花费高于串行运行的时间,则这些算子对共享资源的抢占会导致它们并不适
合同时运行,通过干扰模型能够充分避免这种情况。此外,在考虑干扰的情况下,所述多任
务协同资源配置还能够充分考虑用户提供的服务质量要求,并对不同模型中算子的运行顺
序进行合理的调整,从而达到最大化满足服务质量要求任务比例的目标。
计算机程序;处理器120,与所述存储器110通信相连,调用所述计算机程序时执行本发明所
述的资源配资方法;显示器130,与所述存储器110和所述处理器120通信相连,用于显示所
述资源配置方法的相关GUI交互界面。
的保护范围内。
法,能够在多种场景下实时地结合多个数据处理模型的信息对资源配置进行跨模型协同优
化,以提高总体服务质量、满足服务率,且最小化系统能耗。所述资源配置方法能够在多个
用户提供任务信息、服务要求以及任务所需文件后,结合硬件特征先后进行单任务资源配
置的优化、多任务资源配置的优化,并最终产生可执行服务会话为用户提供服务。
法进行调度。与现有方法不同,本发明考虑到在为多个用户、多个任务提供服务时,需要尽
可能多地满足用户对任务的需求,该目标是最直观的目标。为便于优化,本发明将该目标转
化为一对偶的目标,即:在满足用户提供的服务质量要求的情况下,最小化每个任务以及所
有任务占用的资源,这两个目标能够涵盖本发明面向的场景。在量化资源占用时,本发明针
对每个任务,根据各任务中算子的资源使用以及执行时长计算平均资源占用。最终,本发明
所使用的优化目标为:在保证服务质量满足、每个任务中算子资源占用不超过最大可用资
源的情况下,最小化所有任务平均资源占用之和。
的调度顺序和并行执行状态,并以此为依据将所述服务端的资源配置给所有第二数据处理
模型中的算子。由此可知,本发明所述资源配置方法能够适用于多数据处理模型的复杂场
景。
此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完
成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。