资源分配方法、装置、设备及存储介质与流程

文档序号:23151969发布日期:2020-12-04 13:47阅读:103来源:国知局
资源分配方法、装置、设备及存储介质与流程

本申请涉及资源分配技术领域,尤其涉及一种资源分配方法、装置、设备及存储介质。



背景技术:

现有的模型服务一般具有至少两个实例,每个实例会独占一个gpu(graphicsprocessingunit,图形处理器)卡,这种gpu资源的分配方式使得gpu资源的利用率非常低。进一步地,对于包括大量模型服务的图像处理系统也需要部署大量gpu卡以分配给模型服务使用,导致图像处理系统的搭建成本非常高。例如,主要为广告投放、广告检索和广告播放等提供图像处理的图像saas(softwareasaservice,软件即服务)系统,图像saas系统包括大量的用于图像处理的模型服务,导致需要部署大量gpu卡,搭建成本高、gpu资源利用率低。



技术实现要素:

有鉴于上述存在的技术问题,本申请提出了一种资源分配方法、装置、设备及存储介质。

根据本申请的一方面,提供了一种资源分配方法,包括:

获取多个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系、计算资源利用率阈值;

根据每个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及所述计算资源利用率阈值,确定每个模型服务的目标模型实例数量;其中,所述预设关系为反比关系,所述计算资源利用率阈值为每个模型实例对应的计算资源利用率的上限;

将每个模型服务的目标模型实例数量对应的计算资源利用率的值作为每个模型服务的每个目标模型实例对应的目标计算资源利用率;

获取每个模型服务的每个目标模型实例对应的目标显存资源利用率;

基于每个目标模型实例对应的目标计算资源利用率和每个目标模型实例对应的目标显存资源利用率,将每个模型服务的目标模型实例分配至对应的gpu。

根据本申请的另一方面,提供了一种资源分配装置,包括:

获取模块,用于获取多个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系、计算资源利用率阈值;

目标模型实例数量确定模块,用于根据每个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及所述计算资源利用率阈值,确定每个模型服务的目标模型实例数量;其中,所述预设关系为反比关系,所述计算资源利用率阈值为每个模型实例对应的计算资源利用率的上限;

目标计算资源利用率确定模块,用于将每个模型服务的目标模型实例数量对应的计算资源利用率的值作为每个模型服务的每个目标模型实例对应的目标计算资源利用率;

目标显存资源利用率获取模块,用于获取每个模型服务的每个目标模型实例对应的目标显存资源利用率;

gpu资源分配模块,用于基于每个目标模型实例对应的目标计算资源利用率和每个目标模型实例对应的目标显存资源利用率,将每个模型服务的目标模型实例分配至对应的gpu。

根据本申请的另一方面,提供了一种资源分配设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。

根据本申请的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。

通过设置模型服务的三元组、三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及计算资源利用率阈值,根据每个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及所述计算资源利用率阈值,确定每个模型服务的目标模型实例数量、每个目标模型实例对应的目标计算资源利用率和目标显存资源利用率,实现对模型实例的计算资源利用率的压缩,使得基于每个目标模型实例对应的目标计算资源利用率和每个目标模型实例对应的目标显存资源利用率进行的gpu资源分配,可以显著提高gpu计算资源以及显存资源的利用率,计算资源利用率可以提升93%;在保持图像处理系统服务能力不变的前提下,可以有效减少图像处理系统需要的gpu的数量,从而可以降低图像处理系统的搭建成本;在使用相同数量gpu时,能有效提高图像处理系统的吞吐量,即有效提高图像处理系统的图像处理能力。

根据下面参考附图对示例性实施例的详细说明,本申请的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本申请的示例性实施例、特征和方面,并且用于解释本申请的原理。

图1示出根据本申请一实施例提供的一种应用系统的示意图。

图2示出根据本申请一实施例的一个模型服务在未达到日吞吐量最大值时,每个模型实例对应的计算资源利用率g与每个模型实例的吞吐量q的关系、每个模型实例对应的显存资源利用率m与每个模型实例的吞吐量q的关系的示意图。

图3示出根据本申请一实施例的一个模型服务的每个模型实例对应的计算资源利用率与该模型服务的模型实例数量的关系示意图。

图4示出根据本申请一实施例的资源分配方法的流程图。

图5示出根据本申请一实施例的基于每个目标模型实例对应的目标计算资源利用率和每个目标模型实例对应的目标显存资源利用率,将每个模型服务的目标模型实例分配至对应的gpu的方流程图。

图6示出根据本申请一实施例的基于第一集合中的待分配模型实例对应的目标计算资源利用率以及目标显存资源利用率,从第一集合中筛选出目标分配模型实例,组成第二集合的方法流程图。

图7示出根据本申请一实施例的基于第一集合中的待分配模型实例对应的目标计算资源利用率以及目标显存资源利用率,从第一集合中筛选出目标分配模型实例,组成第二集合的方流程图。

图8示出根据本申请一实施例的资源分配装置的框图。

图9是根据一示例性实施例示出的一种用于资源分配装置900的框图。

具体实施方式

以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。

人工智能(artificialintelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。

近年来,随着人工智能技术研究和进步,人工智能技术在多个领域得到广泛应用,本申请实施例提供的方案涉及模型服务,例如图像处理模型服务,该图像处理模型服务可以包括图像处理模型以及业务通信功能。具体通过如下实施例进行说明:

请参阅图1,图1示出根据本申请一实施例提供的一种应用系统的示意图。所述应用系统可以用于本申请的资源分配方法。如图1所示,该应用系统至少可以包括服务器01和终端02。

本申请实施例中,所述服务器01可以包括独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(contentdeliverynetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。

本申请实施例中,所述终端02可以包括智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、增强现实(augmentedreality,ar)/虚拟现实(virtualreality,vr)设备、智能可穿戴设备等类型的实体设备。实体设备,也可以包括运行于实体设备中的软体,例如应用程序等。本申请实施例中终端02上运行的操作系统可以包括但不限于安卓系统、ios系统、linux、windows等。

本说明书实施例中,上述终端02以及服务器01可以通过有线或无线通信方式进行直接或间接地连接,本申请对此不作限定。

所述终端02可以用于提供面向用户的资源分配处理。用户可以在终端02上传待分配的模型实例。终端02可以接收并显示资源分配结果。终端02提供面向用户的资源分配处理的方式可以包括但不限于应用程序方式、网页方式等。

需要说明的是,本申请实施例中,可以由服务器01执行资源分配方法,优选地,在服务器01中实现资源分配方法。以便减轻终端的数据处理压力,改善面向用户的终端的设备性能。

在介绍资源分配方法之前,首先介绍本申请对每个模型服务的资源需求的抽象,该抽象可以为每个模型服务的三元组。每个模型服务的三元组可以包括<n,m,g>,三元组的含义可以如下:

其中,每个模型实例对应的显存资源利用率可以是指每个模型实例需要使用gpu显存资源的比例。每个模型实例对应的计算资源利用率可以是指每个模型实例需要使用gpu计算资源的比例。每个模型服务可以部署在至少两台终端中,每一台终端中的模型服务可以称为该模型服务的模型实例。同一个模型服务的每个模型实例对应的m和g可以是相同的。

通过每个模型服务的三元组,将资源划分为两种类型:计算资源和显存资源。相应地,gpu卡的资源也可以包括计算资源和显存资源(存储资源)。从而为资源种类需求存在差异化的模型实例能够部署到同一个gpu卡上提供基础,实现混合资源分配方案,提升gpu卡的整体资源利用率。

进一步地,为了基于每个模型服务的三元组进行gpu资源分配,需要先确定n、m和g的值。因此需要先确定每个模型服务的三元组中n与m之间、n与g之间的关系。在图像处理系统中,一般接入的上游业务变更不频繁,图像处理系统中的每个模型服务的日请求量的最大值(日吞吐量的最大值)基本不会有大的变化,因此可以选择每个模型服务的日吞吐量的最大值作为每个模型服务的最大资源需求量q,由于每个模型服务的日吞吐量的最大值可以看作不变,q可以被定义为常数,从而可以定义每个模型服务的每个模型实例的吞吐量

本说明书实施例中,可以通过实验的方式测量得到每个模型服务的三元组中n与m之间、n与g之间的关系。例如,可以使用一个发包器,在未达到q情况下,通过改变发包器的请求速率,可以测量得到q与m之间、q与g之间的关系,如图2所示,其中,0%~80%可以是指计算资源利用率或显存资源利用率。m与q无关,m为一个常数,即m与n无关;g与q成正比,g与q的关系可以描述为:g=k×q。这里的k可以基于该测量得到。

进一步,结合可以推导出也就是说,在q为常数时,一个模型服务的每个模型实例对应的计算资源利用率与该模型服务的模型实例数量成反比。如图3所示。需要说明的是,这里的k、q是针对某一个模型服务的,不同模型服务的k、q可以不同。

本说明书实施例中,计算资源利用率阈值的设置是基于计算资源压缩技术以及确定的。目的是尽量减少不同模型实例对同一gpu卡的资源竞争冲突。从可以得出:通过增加n,使g降低,即可以通过增加n,使每个模型实例对应的g得到压缩,从而可以使每个模型实例需要使用gpu计算资源的比例降低,可以减少计算资源竞争冲突。

举例来说,假设有1个图像素材指纹模型,当n=1时,1个图像素材指纹模型的一个模型实例可以包括:计算资源利用率91%、显存资源利用率7%;对该图像素材指纹模型进行计算资源压缩,比如,令n=2,该图像素材指纹模型包括两个模型实例,基于该公式可以得到每个模型实例均为:计算资源利用率45.5%、显存资源利用率7%。也就是说,一个计算资源利用率为91%,显存资源利用率为7%的模型实例与2个计算资源利用率为45.5%,显存资源利用率为7%的模型实例提供的图像处理能力是相同的,因此可以利用进行模型实例的计算资源利用率的压缩,将一个计算资源利用率较高的模型实例等价转化为至少2个计算资源利用率较小的模型实例,同时模型服务提供的服务能力不变。

假设还有1个logo检测模型对应2个模型实例,每个模型实例为:计算资源利用率46%、显存资源利用率42%。按照现有的一个模型实例独占一个gpu的方式,1个图像素材指纹模型的计算资源利用率为91%,显存资源利用率为7%的模型实例、2个计算资源利用率46%、显存资源利用率42%的模型实例需要3个gpu卡。而将计算资源利用率为91%,显存资源利用率为7%的模型实例压缩为2个计算资源利用率45.5%、显存资源利用率7%的模型实例时,这时有4个模型实例:2个计算资源利用率45.5%、显存资源利用率7%的模型实例、2个计算资源利用率46%、显存资源利用率42%的模型实例。这样,将一个计算资源利用率较高的模型实例等价转化为至少2个计算资源利用率较小模型实例后,1个计算资源利用率45.5%、显存资源利用率7%的模型实例与1个计算资源利用率46%、显存资源利用率42%的模型实例对同一gpu卡的计算资源不再存在竞争冲突,可以共享同一块gpu卡,即可以将这4个模型实例分配至2个gpu卡上。由此可见,计算资源利用率的压缩可以提高每块gpu卡的资源利用率,在保持图像处理系统服务能力不变的前提下,可以减少图像saas系统需要的gpu卡数量,降低系统成本。

实际应用中,对于计算资源利用率阈值的设置,通过实际测试发现:超过70%的模型服务的模型实例的显存资源利用率都超过33%,从显存资源利用率角度,意味着一块gpu卡上可以容纳2个模型实例。因此可以选择将计算资源利用率压缩至小于或等于50%,从而可以保证从计算资源利用率角度,一块gpu卡上也可以容纳2个模型实例。因此,在一个示例中,可以设置计算资源利用率阈值为50%。可选地,为了增加gpu卡上容纳模型实例的数量,也可以将计算资源利用率阈值设置为更低,比如33%,本申请对此不作限定。

基于上述推导出的即每个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系,以及计算资源利用率阈值,可以实现本申请的资源分配方法。需要说明的是,以下示出的是一种可能的步骤顺序,实际上并不限定必须严格按照此顺序。有些步骤可以在互不依赖的情况下并行执行。

如图4所示,图4示出根据本申请一实施例的资源分配方法的流程图。所述方法可以包括:

s401,获取多个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系、计算资源利用率阈值。

本说明书实施例中,在将多个模型服务的模型实例分配至gpu时,可以先获取多个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系、计算资源利用率阈值。其中,该预设关系可以为反比关系,该计算资源利用率阈值可以为每个模型实例对应的计算资源利用率的上限。所述多个模型服务可以是指至少两个模型服务,模型服务的数量可以是根据图像处理系统的实际需求设置的,本申请对此不作限定。

s403,根据每个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及所述计算资源利用率阈值,确定每个模型服务的目标模型实例数量。

本说明书实施例中,对于每个模型服务,可以将n代入预设关系选择使g小于或等于计算资源利用率阈值的n的值作为每个模型服务的目标模型实例数量。若g小于或等于计算资源利用率阈值的n的值为多个,可以选择n的值中的一个作为每个模型服务的目标模型实例数量。

在一种可能的实现方式中,s403可以通过以下步骤实现:

使每个模型服务的预设关系中的模型实例数量从小到大遍历正整数,得到每个模型服务对应的初始模型实例数量;其中,所述初始模型实例数量对应的计算资源利用率的值小于或等于所述计算资源利用率阈值;

将每个模型服务对应的最小的初始模型实例数量作为每个模型服务的目标模型实例数量。

通过遍历n的方式,选择最小的初始模型实例数量作为每个模型服务的目标模型实例数量,可以保证在任意2个显存资源利用率不存在争用的情况下,能够以最大的目标计算资源利用率共享一块gpu,保证每个gpu的计算资源的利用率。

s405,将每个模型服务的目标模型实例数量对应的计算资源利用率的值作为每个模型服务的每个目标模型实例对应的目标计算资源利用率。

本说明书实施例中,每个模型服务的目标模型实例数量确定后,可以将该目标模型实例数量代入每个模型服务的预设关系,从而可以确定每个模型服务的每个目标模型实例对应的目标计算资源利用率。

s407,获取每个模型服务的每个目标模型实例对应的目标显存资源利用率。

本说明书实施例中,可以通过上述实验的方式测量得到每个模型服务的每个目标模型实例对应的目标显存资源利用率,即每个模型服务的每个目标模型实例对应的m的值。

s409,基于每个目标模型实例对应的目标计算资源利用率和每个目标模型实例对应的目标显存资源利用率,将每个模型服务的目标模型实例分配至对应的gpu。

本说明书实施例中,可以将不同模型服务的目标模型实例分配至同一gpu,实现不同模型服务的目标模型实例共享一个gpu的目的。例如,可以利用暴力搜索方法,将每个模型服务的目标模型实例分配至对应的gpu。或者可以将不同模型服务的目标模型实例进行两两组合,然后将两两组合的不同模型服务的目标模型实例分配至一个gpu上,这里两两组合的不同模型服务的目标模型实例的总计算资源利用率和总显存资源利用率均小于1。本申请对每个模型服务的目标模型实例分配至对应的gpu的具体方式不作限定,只要可以提高gpu资源利用率即可。

通过设置模型服务的三元组、三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及计算资源利用率阈值,根据每个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及所述计算资源利用率阈值,确定每个模型服务的目标模型实例数量、每个目标模型实例对应的目标计算资源利用率和目标显存资源利用率,实现对模型实例的计算资源利用率的压缩,使得基于每个目标模型实例对应的目标计算资源利用率和每个目标模型实例对应的目标显存资源利用率进行的gpu资源分配,可以显著提高gpu计算资源以及显存资源的利用率,计算资源利用率可以提升93%;在保持图像处理系统服务能力不变的前提下,可以有效减少图像处理系统需要的gpu的数量,从而可以降低图像处理系统的搭建成本;在使用相同数量gpu时,能有效提高图像处理系统的吞吐量,即有效提高图像处理系统的图像处理能力。

图5示出根据本申请一实施例的基于每个目标模型实例对应的目标计算资源利用率和每个目标模型实例对应的目标显存资源利用率,将每个模型服务的目标模型实例分配至对应的gpu的方流程图。如图5所示,在一种可能的实现方式中,该s409可以包括:

s501,将每个模型服务的目标模型实例作为每个模型服务的待分配模型实例集。

本说明书实施例中,可以将每个模型服务的目标模型实例放入待分配模型实例集,以用于后续gpu资源分配时使用。

s503,从每个模型服务的待分配模型实例集中分别提取一个待分配模型实例,组成第一集合。

本说明书实施例中,为了保证不同模型服务的模型实例对同一个gpu的共享,同时也是为了避免同一模型服务的模型实例分配至同一个gpu中,可以从每个模型服务的待分配模型实例集中分别提取一个待分配模型实例,组成第一集合,使得第一集合中的模型实例可以来自不同的模型服务。

s505,将一个空的gpu作为目标gpu;

s507,基于第一集合中的待分配模型实例对应的目标计算资源利用率以及目标显存资源利用率,从第一集合中筛选出目标分配模型实例,组成第二集合,并清空该第一集合;

s509,将第二集合中的目标分配模型实例分配至目标gpu。

本说明书实施例中,s503~s509可以看作是一个目标gpu的资源分配过程。可以遍历第一集合中的待分配模型实例,从这些待分配模型实例中筛选出至少一个待分配模型实例作为目标分配模型实例,使得筛选出的目标分配模型实例的总计算资源利用率和/或筛选出的目标分配模型实例的总显存资源利用率最大。可以将从第一集合中筛选出的目标分配模型实例组成第二集合,以将第二集合中的目标分配模型实例分配至目标gpu。并可以清空第一集合,方便下一个目标gpu进行资源分配时使用。

s511,从每个模型服务的待分配模型实例集中剔除第二集合中的目标分配模型实例,得到更新的每个模型服务的待分配模型实例集。

本说明书实施例中,可以将已分配的目标分配模型实例,从每个模型服务的待分配模型实例集中剔除,即可以从每个模型服务的待分配模型实例集中剔除第二集合中的目标分配模型实例,得到更新的每个模型服务的待分配模型实例集,以保证更新的每个模型服务的待分配模型实例集中均为待分配的模型实例。

s513,基于更新的每个模型服务的待分配模型实例集,重复上述s503~s511,直至更新的每个模型服务的待分配模型实例集为空。即从更新的每个模型服务的待分配模型实例集中提取一个待分配模型实例,组成第一集合,转至s505进行下一个目标gpu的资源分配,直至更新的每个模型服务的待分配模型实例集为空。

本说明书实施例中,在一个示例中,如图5所示,s511之后,可以先判断更新的每个模型服务的待分配模型实例集是否为空,如果为空,可以结束,表示每个模型服务的目标模型实例均被分配至对应的gpu。这里的更新的每个模型服务的待分配模型实例集是否为空可以是指更新的每个模型服务的待分配模型实例集均为空。

如果不为空,可以从更新的每个模型服务的待分配模型实例集中提取一个待分配模型实例,组成第一集合,转至s505,进行下一个目标gpu的资源分配,直至更新的每个模型服务的待分配模型实例集为空。

图6示出根据本申请一实施例的基于第一集合中的待分配模型实例对应的目标计算资源利用率以及目标显存资源利用率,从第一集合中筛选出目标分配模型实例,组成第二集合的方法流程图。如图6所示,在一种可能的实现方式中,该s507可以包括:

s601,将第一集合中待分配模型实例对应的目标计算资源利用率和目标显存资源利用率中的最小值作为目标单位。

本说明书实施例中,例如,第一集合中的待分配模型实例包括3个:a,b,c,对应的目标计算资源利用率为0.5、0.4、0.4;对应的目标显存资源利用率包括0.6、0.5、0.4。可以确定最小的0.4作为目标单位,用于划分目标gpu的总计算资源利用率和总显存资源利用率。在这种情况下,可选地,目标单位也可以直接选择为0.1,以提高划分目标gpu的总计算资源利用率和总显存资源利用率的粒度。

需要说明的是,假设第一集合中待分配模型实例对应的目标计算资源利用率和目标显存资源利用率中的最小值为0.35,这时,可以确定目标单位为0.01,即可以以最小值对应的最小单位值为目标单位。

s603,基于目标单位,划分目标gpu的总计算资源利用率,得到计算资源利用率的第一资源状态集;第一资源状态集包括至少一个第一资源状态。

本说明书实施例中,目标gpu的总计算资源利用率可以为1,基于目标单位,划分目标gpu的总计算资源利用率,得到计算资源利用率的第一资源状态集。其中,第一资源状态可以包括计算资源利用率为目标单位的第一资源状态、计算资源利用率为1的第一资源状态,还可以包括计算资源利用率为目标单位整数倍的第一资源状态。例如,假设以上述目标单位为0.4的情况,第一资源状态集包括至少一个第一资源状态可以包括0.4,0.8,1。假设以上述目标单位为0.1的情况,第一资源状态集包括至少一个第一资源状态可以包括0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1。

s605,基于目标单位,划分目标gpu的总显存资源利用率,得到显存资源利用率的第二资源状态集;所述第二资源状态集包括至少一个第二资源状态。

本说明书实施例中,目标gpu的总显存资源利用率可以为1。该步骤可以参见上述s603实现,在此不再赘述;并且s603和s605可以并行执行,本申请对此不作限定。

s607,将至少一个第一资源状态与至少一个第二资源状态进行两两组合,得到目标gpu的目标资源状态集,该目标资源状态集可以包括多个目标资源状态。

本说明书实施例中,在一个示例中,假设a:0.5,0.6;b:0.4,0.5;c:0.4,0.4。以第一资源状态集可以包括0.4,0.8,1、第二资源状态集可以包括0.4,0.8,1为例,将第一资源状态与第二资源状态进行组合,得到目标gpu的目标资源状态集,目标资源状态集包括多个目标资源状态可以为:(0.4,0.4)、(0.4,0.8)、(0.4,1)、(0.8,0.4)、(0.8,0.8)、(0.8,1)、(1,0.4)、(1,0.8)、(1,1)。

s609,确定第一集合中待分配模型实例的选择组合。

本说明书实施例中,可以按照待分配模型实例的选择数量,将第一个选择组合设置为一个待分配模型实例,依次可以增加一个选择,直至最后得到的选择组合包括第一集合中的待分配模型实例的全集。例如,第一集合中的待分配模型实例包括a,b,c。确定第一集合中的待分配模型实例的选择组合可以包括:(b)、(b,c)、(b,c,a)。

s611,将多个目标资源状态从小到大排列作为资源状态表的列、将选择组合作为资源状态表的行;其中,第一行的选择组合中包括一个待分配模型实例,每一行的选择组合均比上一行的选择组合多一个待分配模型实例。

在一个示例中,资源状态表的行和列可以如表1所示:

表1

资源状态表的初始只有行和列,每一行的选择组合可以表示每一行可选择的待分配模型实例;每一列的目标资源状态可以表示每一列可容纳的计算资源利用率上限以及可容纳的显存资源利用率上限,每一列将目标gpu的总计算资源利用率和总显存资源利用率转化为较小的计算资源利用率和显存资源利用率。

s613,从资源状态表的第一行开始,遍历每一行的目标资源状态,从每一行的选择组合中,确定每一行的每个目标资源状态对应的初始分配模型实例。

以表1第2行(b,c)的(0.4,0.8)为例,b和c的目标显存资源利用率之和大于0.8,因此b和c不能同时放进(0.4,0.8),可以确定第2行(b,c)的(0.4,0.8)对应的初始分配模型实例可以包括:b或者c。

s615,确定所述初始分配模型实例对应的目标计算资源利用率和目标显存资源利用率。

本说明书实施例中,若初始分配模型实例包括一个待分配模型实例,则可以将该一个待分配模型实例对应的目标计算资源利用率和目标显存资源利用率,确定为该初始分配模型实例对应的目标计算资源利用率和目标显存资源利用率;

若初始分配模型实例包括至少两个待分配模型实例,可以将该两个待分配模型实例对应的目标计算资源利用率之和,作为该初始分配模型实例对应的目标计算资源利用率;可以将该两个待分配模型实例对应的目标显存资源利用率之和,作为该初始分配模型实例对应的目标显存资源利用率。

s617,基于所述初始分配模型实例对应的目标计算资源利用率和目标显存资源利用率,确定所述初始分配模型实例的主导资源利用率。

本说明书实施例中,主导资源利用率可以是目标计算资源利用率和目标显存资源利用率中的较大值、较小值、目标计算资源利用率和目标显存资源利用率的平方和、目标计算资源利用率和目标显存资源利用率的和等。本申请对此不作限定。这样可以将两个资源利用率:计算资源利用率和显存资源利用率,统一为一个主导资源利用率,便于资源分配时使用。

其中,目标计算资源利用率和目标显存资源利用率是对应的。并且,这里的目标计算资源利用率和目标显存资源利用率可以是初始分配模型实例对应的目标计算资源利用率和目标显存资源利用率、待分配模型实例对应的目标计算资源利用率和目标显存资源利用率、目标组合对应的目标计算资源利用率和目标显存资源利用率。

以主导资源利用率可以是目标计算资源利用率和目标显存资源利用率中的较小值为例,比如初始分配模型实例对应的目标计算资源利用率和目标显存资源利用率分别为0.4,0.5,可以确定该初始分配模型实例的主导资源利用率为min(0.4,0.5)=0.4。

s619,将每一行的每个目标资源状态的最大主导资源利用率对应的初始分配模型实例确定为每一行的每个目标资源状态对应的目标分配模型实例,直至确定出最后一行的最后一个目标资源状态对应的目标分配模型实例。

举例来说,比如第n行的第m个目标资源状态对应的初始分配模型实例为a+c;b+c。a+c主导资源利用率为0.9,b+c主导资源利用率为0.8,可以确定第n行的第m个目标资源状态对应的目标分配模型实例为a+c。

作为一个示例,可以通过遍历表1,得到最后一行的最后一个资源状态对应的目标分配模型实例。假设a:0.5,0.6;b:0.4,0.5;c:0.4,0.4。其中,每一行的每个目标资源状态对应的空格包括目标分配模型实例、该目标分配模型实例的主导资源利用率。

作为遍历表1的一种示例,可以以第h行、目标资源状态(i,j)对应的目标分配模型实例、主导资源利用率为例。其中,如表1,1≤h≤3;0.4≤i≤1;0.4≤j≤1;h为正整数,i和j为0.4的整数倍。若以s(h,i,j)表示第h行、目标资源状态(i,j)对应的目标分配模型实例、主导资源利用率。确定s(h,i,j)对应的目标分配模型实例、主导资源利用率,需要比较s(h-1,i,j)的主导资源利用率z1与s(h-1,i-gh,j-mh)+<gh,mh>的主导资源利用率z2。如果z1>z2,s(h,i,j)=s(h-1,i,j);如果z1<z2,将<gh,mh>+s(h-1,i-gh,j-mh)作为s(h,i,j);如果z1=z2,可以选择s(h,i,j)=s(h-1,i,j),或者,选择将<gh,mh>+s(h-1,i-gh,j-mh)作为s(h,i,j)。

以s(2,0.8,0.8)为例,确定该s(2,0.8,0.8)对应的目标分配模型实例、主导资源利用率,z1=0.4,即s(1,0.8,0.8)的主导资源利用率;<gh,mh>为c的目标计算资源利用率和目标显存资源利用率:<0.4,0.4>;s(h-1,i-gh,j-mh)+<gh,mh>为s(1,0.4,0.4)+<0.4,0.4>,s(1,0.4,0.4)对应的是0,如表2所示,因此得到z2=0.4=min(0+0.4,0+0.4),z1=z2,s(2,0.8,0.8)对应的目标分配模型实例可以是b或者c;即s(2,0.8,0.8)对应的目标分配模型实例、主导资源利用率为b/0.4或者c/0.4。

基于上述示例遍历表1后,可以得到如下表2。

表2

确定出最后一行的最后一个目标资源状态对应的目标分配模型实例包括c和a,对应的主导资源利用率最大。

需要说明的是,这里目标资源状态(i,j)的划分粒度不够细,会存在s(h-1,i-gh,j-mh)不在表2中的情况,此时,可以先确定s(h-1,i-gh,j-mh)对应的目标分配模型实例、主导资源利用率。然后再计算s(h-1,i-gh,j-mh)+<gh,mh>。基于这种情况,实际应用中,可以选择目标单位为0.1来划分第一资源状态集和第二资源状态集,使得目标资源状态(i,j)可以覆盖所有状态情况,这样在遍历表1以得到表2时,s(h-1,i-gh,j-mh)均会存在于表1和表2中。

s621,将最后一行的最后一个目标资源状态对应的目标分配模型实例作为目标分配模型实例放进第二集合。

本说明书实施例中,可以将最后一行的最后一个目标资源状态对应的目标分配模型实例放进所述第二集合,将第二集合中的目标分配模型实例分配至目标gpu。从表2可以看出,最后一行的最后一个目标资源状态对应的目标分配模型实例对应的资源利用率最高。

图7示出根据本申请一实施例的基于第一集合中的待分配模型实例对应的目标计算资源利用率以及目标显存资源利用率,从第一集合中筛选出目标分配模型实例,组成第二集合的方流程图。如图7所示,在一种可能的实现方式中,该s507还可以包括:

s701,将第一集合中的待分配模型实例放入第三集合;

s703,基于所述第三集合中待分配模型实例对应的目标计算资源利用率以及目标显存资源利用率,确定所述第三集合中待分配模型实例对应的主导资源利用率。具体实现方式可以参见s617,在此不再赘述。

s705,将第三集合中主导资源利用率最大的待分配模型实例转移至空的第二集合中,得到当前的第二集合和当前的第三集合。

在一个示例中,以主导资源利用率为待分配模型实例对应的目标计算资源利用率和目标显存资源利用率中较小值为例。可以先获取第三集合中待分配模型实例对应的主导资源利用率,然后可以将第三集合中主导资源利用率最大的待分配模型实例转移至第二集合中,得到当前的第二集合和当前的第三集合。

s707,获取当前的第三集合中的每个待分配模型实例与当前的第二集合组成的目标组合。

本说明书实施例中,可以将当前的第三集合中的每个待分配模型实例与当前的第二集合组成目标组合。例如当前的第三集合中包括待分配模型实例1和待分配模型实例4;当前的第二集合包括待分配模型实例2和待分配模型实例3;获取当前的第三集合中的每个待分配模型实例与当前的第二集合组成的目标组合为:(待分配模型实例1、待分配模型实例2和待分配模型实例3)、(待分配模型实例4、待分配模型实例2和待分配模型实例3)。

s709,确定每个目标组合对应的目标计算资源利用率和目标显存资源利用率。

本说明书实施例中,可以计算每个组合中待分配模型实例对应的目标计算资源利用率的和作为每个目标组合对应的目标计算资源利用率;计算每个目标组合中待分配模型实例对应的目标显存资源利用率的和作为每个目标组合对应的目标显存资源利用率。例如,目标组合为:(待分配模型实例1、待分配模型实例2和待分配模型实例3),该目标组合对应的目标显存资源利用率=待分配模型实例1对应的目标显存资源利用率+待分配模型实例2对应的目标显存资源利用率+待分配模型实例3对应的目标显存资源利用率。

s711,将目标计算资源利用率大于目标gpu的总计算资源利用率或目标显存资源利用率大于目标gpu的总显存资源利用率对应的目标组合中的待分配模型实例,从当前的第三集合中删除。也就是说,在当前的第二集合的基础上,当前的第三集合中的待分配模型实例若放入该目标gpu上会导致目标gpu资源不够用,可以从当前的第三集合中删除这些不能放入该目标gpu上的待分配模型实例。其中,目标gpu资源不够用可以包括目标gpu的计算资源不够用和/或显存资源不够用。

s713,确定目标计算资源利用率小于或等于目标gpu的总计算资源利用率且目标显存资源利用率小于或等于目标gpu的总显存资源利用率对应的目标组合的主导资源利用率;

s715,将最大主导资源利用率对应的目标组合中的待分配模型实例从当前的第三集合中转移至当前的第二集合中;转至s705,直至当前的第三集合为空集,将当前的第二集合中的待分配模型实例作为目标分配模型实例,组成第二集合。

本说明书实施例中,在一个示例中,可以如图7所示,将最大主导资源利用率对应的目标组合中的待分配模型实例从当前的第三集合中转移至当前的第二集合中。可以判断当前的第三集合是否为空集,如果为空集,可以结束,表示一个目标gpu的资源分配结束;如果为非空集,可以转至s705,继续该目标gpu的资源分配,直至当前的第三集合为空集。

图8示出根据本申请一实施例的资源分配装置的框图。如图8所示,该装置可以包括:

获取模块801,用于获取多个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系、计算资源利用率阈值;

目标模型实例数量确定模块803,用于根据每个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及所述计算资源利用率阈值,确定每个模型服务的目标模型实例数量;其中,所述预设关系为反比关系,所述计算资源利用率阈值为每个模型实例对应的计算资源利用率的上限;

目标计算资源利用率确定模块805,用于将每个模型服务的目标模型实例数量对应的计算资源利用率的值作为每个模型服务的每个目标模型实例对应的目标计算资源利用率;

目标显存资源利用率获取模块807,用于获取每个模型服务的每个目标模型实例对应的目标显存资源利用率;

gpu资源分配模块809,用于基于每个目标模型实例对应的目标计算资源利用率和每个目标模型实例对应的目标显存资源利用率,将每个模型服务的目标模型实例分配至对应的gpu。

通过设置模型服务的三元组、三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及计算资源利用率阈值,根据每个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系以及所述计算资源利用率阈值,确定每个模型服务的目标模型实例数量、每个目标模型实例对应的目标计算资源利用率和目标显存资源利用率,实现对模型实例的计算资源利用率的压缩,使得基于每个目标模型实例对应的目标计算资源利用率和每个目标模型实例对应的目标显存资源利用率进行的gpu资源分配,可以显著提高gpu计算资源以及显存资源的利用率,计算资源利用率可以提升93%;在保持图像处理系统服务能力不变的前提下,可以有效减少图像处理系统需要的gpu的数量,从而可以降低图像处理系统的搭建成本;在使用相同数量gpu时,能有效提高图像处理系统的吞吐量,即有效提高图像处理系统的图像处理能力。

在一种可能的实现方式中,目标模型实例数量确定模块803可以包括:

初始模型实例数量确定单元,用于使每个模型服务的预设关系中的模型实例数量从小到大遍历正整数,得到每个模型服务对应的初始模型实例数量;其中,所述初始模型实例数量对应的计算资源利用率的值小于或等于所述计算资源利用率阈值;

目标模型实例数量确定单元,用于将每个模型服务对应的最小的初始模型实例数量作为每个模型服务的目标模型实例数量。

在一种可能的实现方式中,多个模型服务的三元组中模型实例数量与每个模型实例对应的计算资源利用率的预设关系可以包括:

其中,g为每个模型服务的每个模型实例对应的计算资源利用率;n为每个模型服务的三元组中模型实例数量;k为每个模型服务对应的常量;q为每个模型服务的最大资源需求量。

在一种可能的实现方式中,gpu资源分配模块809可以包括:

待分配模型实例集确定单元,用于将每个模型服务的目标模型实例作为每个模型服务的待分配模型实例集;

第一集合确定单元,用于从每个模型服务的待分配模型实例集中分别提取一个待分配模型实例,组成第一集合;

目标gpu确定单元,用于将一个空的gpu作为目标gpu;

第二集合生成单元,用于基于第一集合中的待分配模型实例对应的目标计算资源利用率以及目标显存资源利用率,从第一集合中筛选出目标分配模型实例,组成第二集合,并清空所述第一集合;

目标gpu资源分配单元,用于将第二集合中的目标分配模型实例分配至目标gpu;

待分配模型实例集更新单元,用于从每个模型服务的待分配模型实例集中剔除第二集合中的目标分配模型实例,得到更新的每个模型服务的待分配模型实例集;

迭代单元,用于基于更新的每个模型服务的待分配模型实例集,重复上述组成第一集合至剔除所述第二集合中的目标分配模型实例的步骤,直至更新的每个模型服务的待分配模型实例集为空。

在一种可能的实现方式中,第二集合生成单元可以包括:

目标单位确定子单元,用于将所述第一集合中待分配模型实例对应的目标计算资源利用率和目标显存资源利用率中的最小值作为目标单位;

第一资源状态集获取子单元,用于基于该目标单位,划分目标gpu的总计算资源利用率,得到计算资源利用率的第一资源状态集;所述第一资源状态集包括至少一个第一资源状态;

第二资源状态集获取子单元,用于基于目标单位,划分所述目标gpu的总显存资源利用率,得到显存资源利用率的第二资源状态集;所述第二资源状态集包括至少一个第二资源状态;

目标资源状态集确定子单元,用于将至少一个第一资源状态与至少一个第二资源状态进行两两组合,得到目标gpu的目标资源状态集,该目标资源状态集包括多个目标资源状态;

选择组合确定子单元,用于确定第一集合中待分配模型实例的选择组合;

资源状态表的行和列的生成子单元,用于将多个目标资源状态从小到大排列作为资源状态表的列、将选择组合作为所述资源状态表的行;其中,第一行的选择组合中包括一个待分配模型实例,每一行的选择组合均比上一行的选择组合多一个待分配模型实例;

资源状态表遍历子单元,用于从资源状态表的第一行开始,遍历每一行的目标资源状态,将每一行的选择组合中主导资源利用率最大的至少一个待分配模型实例确定为每一行的每个目标资源状态对应的目标分配模型实例,直至确定出最后一行的最后一个目标资源状态对应的目标分配模型实例;

第二集合生成子单元,用于将所述最后一行的最后一个目标资源状态对应的目标分配模型实例作为所述目标分配模型实例放进所述第二集合。

在一种可能的实现方式中,第二集合生成单元可以包括:

第三集合获取子单元,用于将所述第一集合中的待分配模型实例放入第三集合;

待分配模型实例转移子单元,用于将第三集合中主导资源利用率最大的待分配模型实例转移至空的第二集合中,得到当前的第二集合和当前的第三集合;

目标组合获取子单元,用于获取当前的第三集合中的每个待分配模型实例与当前的第二集合组成的目标组合;

目标资源确定子单元,用于确定每个目标组合对应的目标计算资源利用率和目标显存资源利用率;

待分配模型实例删除子单元,用于将目标计算资源利用率大于目标gpu的总计算资源利用率或目标显存资源利用率大于目标gpu的总显存资源利用率对应的目标组合中的待分配模型实例,从当前的第三集合中删除;

目标组合的主导资源利用率确定子单元,用于确定目标计算资源利用率小于或等于目标gpu的总计算资源利用率且目标显存资源利用率小于或等于目标gpu的总显存资源利用率对应的目标组合的主导资源利用率;

第二集合组成子单元,用于将最大主导资源利用率对应的目标组合中的待分配模型实例从当前的第三集合中转移至当前的第二集合中,转至获取目标组合的步骤,直至当前的第三集合为空集,将当前的第二集合中的待分配模型实例作为所述目标分配模型实例,组成上述第二集合。

关于上述实施例中的装置,其中各个模块和单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

另一方面,本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的各种可选实现方式中提供的资源分配方法。

图9是根据一示例性实施例示出的一种用于资源分配装置900的框图。例如,装置900可以被提供为一服务器。参照图9,装置900包括处理组件922,其进一步包括一个或多个处理器,以及由存储器932所代表的存储器资源,用于存储可由处理组件922的执行的指令,例如应用程序。存储器932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件922被配置为执行指令,以执行上述方法。

装置900还可以包括一个电源组件926被配置为执行装置900的电源管理,一个有线或无线网络接口950被配置为将装置900连接到网络,和一个输入输出(i/o)接口958。装置900可以操作基于存储在存储器932的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器932,上述计算机程序指令可由装置900的处理组件922执行以完成上述方法。

本申请可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本申请的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。

这里参照根据本申请实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本申请的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1