CN114902273A - 使用gpu优化资源分配的系统和方法 - Google Patents
使用gpu优化资源分配的系统和方法 Download PDFInfo
- Publication number
- CN114902273A CN114902273A CN202180007599.XA CN202180007599A CN114902273A CN 114902273 A CN114902273 A CN 114902273A CN 202180007599 A CN202180007599 A CN 202180007599A CN 114902273 A CN114902273 A CN 114902273A
- Authority
- CN
- China
- Prior art keywords
- parallel
- dual
- objective functions
- gpu
- processing
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供用于优化资源分配的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。其中一种方法包括:并行处理多个第一目标函数以确定多个分配计划,其中每个所述分配计划对应于将与平台相关联的多个资源中的零个或多个分配给用户,并且所述多个第一目标函数共享一个或多个对偶乘子;基于所述多个分配计划并行确定平台的多个收益和成本;使用并行缩减对计算出的收益和成本进行聚合;基于聚合成本更新一个或多个对偶乘子,以确定是否满足退出条件;如果不满足退出条件,则基于更新的对偶乘子重复处理多个第一目标函数。
Description
技术领域
本申请总体上与推荐系统中的资源分配优化有关。
背景技术
电子商务平台经常(例如,每天、每小时甚至近乎实时)做出资源分配决策。这些资源分配问题通常通过求解背包问题(KPs)来解决,而背包问题只能在相对较小的规模下处理。优化大规模的资源分配决策一直是一个公开的技术挑战。
发明内容
本说明书的各种实施例包括用于优化资源分配的系统、方法和非暂态计算机可读介质。
根据一个方面,用于优化资源分配的方法可以包括:并行处理多个第一目标函数以确定多个分配计划,其中每个所述分配计划对应于将与平台相关联的多个资源中的零个或多个分配给用户,所述多个第一目标函数共享一个或多个对偶乘子;基于所述多个分配计划并行确定平台的多个收益和成本;使用并行缩减对计算出的收益和成本进行聚合;基于聚合成本更新一个或多个对偶乘子,以确定是否满足退出条件;以及,响应于不满足所述退出条件,基于更新的一个或多个对偶乘子重复处理所述多个第一目标函数。
在一些实施例中,所述并行处理多个第一目标函数可包括在图形处理器(GPU)上并行处理所述多个第一目标函数;所述并行地确定所述平台的多个收益和成本可包括在所述GPU上并行地确定所述多个收益和成本;所述使用并行缩减对计算出的收益和成本进行聚合可包括通过所述GPU和中央处理器(CPU)对所述计算出的收益和成本进行聚合;以及所述更新所述一个或多个对偶乘子可包括由所述CPU更新所述一个或多个对偶乘子。
在一些实施例中,所述多个第一目标函数中的每一个包括N×M个系数,N为多个用户的数量,M为多个资源的数量;在所述处理多个第一目标函数之前,所述方法还包括:使用值表和索引表将所述N×M个系数的非零系数存储在所述GPU的存储器中,以便所述GPU每次读取时以恒定的时间复杂度访问所述存储器;所述值表使用资源标识符作为主要维度;以及所述索引表使用用户标识符作为主要维度。
在一些实施例中,使用值表和索引表将所述N×M个系数的非零值存储在所述GPU的存储器中,可包括:在所述值表中存储映射到所述非零系数的资源标识符值;以及在所述索引表中存储映射到所述值表中的一个或多个索引的一个或多个用户标识符值,其中,对于每个所述用户标识符值,对应的索引可指向与每个所述用户标识符值标识的用户相关联的所述非零系数中的一个。
在一些实施例中,所述多个第一目标函数中的每一个可受到K个约束,且可包括N×M×K个系数;以及在所述处理多个第一目标函数之前,所述方法还包括:将所述N×M×K个系数的非零值以包括至少三个维度的行优先格式存储在所述GPU的存储器中,以便所述GPU每次读取时以恒定的时间复杂度访问存储器。
在一些实施例中,所述方法可进一步包括:响应于满足所述退出条件,根据所述多个分配计划分配所述多个资源,其中多个用户的数量为N,所述多个资源的数量为M,所述多个分配计划中的ith对应于用户所述分配计划ith被表示为包含M个元素的向量,每个xij表示是否正在将资源jth分配给用户ith。
在一些实施例中,所述退出条件可包括所述一个或多个对偶乘子是否收敛。
在一些实施例中,在并行处理所述多个第一目标函数之前,所述方法还可以包括:基于对偶问题转换的拉格朗日方法,将用于优化所述资源分配的原始目标函数转换为对偶目标函数;以及将所述对偶目标函数分解为所述多个第一目标函数。
在一些实施例中,所述退出条件可以包括所述原始目标函数的值和所述对偶目标函数的值是否收敛,并且所述方法还可以包括:基于聚合的收益和成本确定所述原始目标函数的值;以及基于所述一个或多个对偶乘子、聚合收益和成本来确定所述对偶目标函数的值。
根据另一方面,用于优化资源分配的系统可以包括多个传感器和包括第一计算设备和第二计算设备的计算机系统,所述计算机系统包括处理器和非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储处理器可执行的指令,以使所述系统执行以下操作:并行处理多个第一目标函数以确定多个分配计划,其中,每个所述分配计划对应于将与平台相关联的多个资源中的零个或多个分配给用户,并且所述多个第一目标函数共享一个或多个对偶乘子;基于所述多个分配计划并行确定平台的多个收益和成本;使用并行缩减对计算出的收益和成本进行聚合;基于聚合成本更新所述一个或多个对偶乘子以确定是否满足退出条件;以及,响应于不满足所述退出条件,基于更新的一个或多个对偶乘子重复处理所述多个第一目标函数。
根据又一方面,用于优化资源分配的非暂态计算机可读存储介质可以配置有可由一个或多个处理器执行的指令,以使所述一个或多个处理器执行以下操作:并行处理多个第一目标函数以确定多个分配计划,其中,每个所述分配计划对应于将与平台相关联的多个资源中的零个或多个分配给用户,并且所述多个第一目标函数共享一个或多个对偶乘子;基于所述多个分配计划并行确定平台的多个收益和成本;使用并行缩减对计算出的收益和成本进行聚合;基于聚合成本更新所述一个或多个对偶乘子以确定是否满足退出条件;以及,响应于不满足所述退出条件,基于更新的一个或多个对偶乘子重复处理所述多个第一目标函数。
本说明书中公开的实施例具有一个或多个技术效果。在一些实施例中,使用一个或多个GPU执行并行计算,以确定平台(例如,电子商务平台)将资源(例如,货币或非货币资源)分配给用户(例如,客户、员工、部门)的最优资源分配方案。在一个实施例中,GPU可以并行求解多个目标函数,每个目标函数对应于一个用户。GPU提供的并行计算能力可以有效地应对寻找最优资源分配方案中最耗时和计算密集的部分。在一些实施例中,可通过使用一个或多个GPU和一个或多个CPU的子集(例如,用于并行缩减的计算统一设备架构(CUDA)框架)来并行缩减(例如,聚合)多个目标函数的解。在一些实施例中,上述并行计算和缩减使得平台能够大规模地确定最优资源分配方案(例如,将资源分配给数百万用户)。在一些实施例中,当需要从存储器中读取系数时,为多个目标函数的并行计算而设计的GPU的存储器布局可以避免二进制搜索(binary search),并且在并行计算过程中提供每次读取具有恒定时间复杂度的存储器访问。在一些实施例中,存储器布局还可以通过避免存储诸如用户标识符之类的重复值来减少存储器占用。
参考附图考虑以下描述和所附权利要求书,本文所公开的系统、方法和非暂态计算机可读介质的这些特征和其他特征,以及操作方法和相关结构元件的功能以及部件的组合和制造的经济性将变得更清楚,所有这些形成本文的一部分,其中,在各个附图中,相同的附图标记表示对应的部件。然而,应明确理解,附图仅用于示例和说明,并不旨在限定本发明。
附图说明
图1示出根据各种实施例的用于确定最优资源分配的技术的可应用示例环境。
图2示出根据各种实施例的用于确定最优资源分配的示例设备。
图3示出根据各种实施例的用于确定最优资源分配的示例工作流程。
图4示出根据各种实施例的用于确定最优资源分配的示例GPU存储器布局。
图5示出根据各种实施例的用于确定最优资源分配的示例计算机系统。
图6示出根据各种实施例的用于优化资源分配的方法。
图7示出根据各种实施例的用于确定最优资源分配的示例电子设备。
具体实施方式
本文公开的实施例可以帮助分配系统(例如,电子商务平台)通过使用并行处理方法优化资源分配决策。这些资源可以包括要在用户/用户组中分配的财务预算(例如贷款、营销推广、广告支出、资产组合),需要在不同业务渠道中分配的诸如互联网用户流量的非货币资源(例如印象、点击、停留时间),等等。这些资源分配决策的目的可能是为了优化共同的目标,例如最大化营销活动中预期用户的转化或最大化日活跃用户数量。
在一些实施例中,优化平台的资源分配可涉及寻求最优资源分配计划以将资源分配给多个用户。可以将要分配的平台资源表示为一组物品。将其中一个物品分配给一个用户可能会给平台产生收益和成本。在一些实施例中,一些物品可以不止一次地分配给一个或多个用户。在一些实施例中,这些资源分配决策可能受制于一组约束(例如,资源的有限数量、预算上限等)。这些约束可以分为全局约束和局部约束,其中全局约束可以指定可用资源的最大数量,而局部约束可以对单个用户或用户组施加限制。
在一些实施例中,可以使用以下公式(1)-(4)来表示上述资源分配优化。
公式(1)中的目标函数可以表示为原始目标函数,该原始目标函数表示如果根据xi,j(例如,资源分配计划)分配资源,平台待获得的总收益。求解这个原始目标函数可能需要寻找使公式(1)中的原始目标函数最大化的最优资源分配计划xi,j。在一个实施例中,分配计划确定如果将物品jth分配给用户ith(或用户组ith),则xi,j=1,否则,xi,j=0。在公式(1)-(4)中,要分配的物品数被表示为M,接收资源的用户数被表示为N。在一些实施例中,可能存在资源分配计划必须遵守的多个全局约束。例如,平台可对要分配的资源的总成本进行预算限制(例如,要分配的物品的总价值必须低于一千美元),以及对要分配的资源数量施加限制(例如,要分配的物品数量必须低于一百件)。公式(2)通过使用K作为约束的数量来概括全局约束(即)。对于K个约束中的每一个,每个物品(例如,资源)可与公式(2)中所示的对应的成本bi,j,k相关联。举例来说,如果第一约束(例如,k=1)对应于一千美元的预算限制,则bi,j,1可表示将物品jth分配给用户ith的成本(例如,美元金额)。作为另一个示例,如果第二约束(例如,k=2)对应于待分配物品总数的限制,则bi,j,2可表示将物品jth分配给用户ith的成本(例如,算作一个)。
在一些实施例中,公式(3)中的U约束可以指局部约束,因其应用于单个用户(或一小组用户)。例如,公式(3)中的U约束可指定每个用户允许接收的物品数目的上限。在一些实施例中,该局部约束可以扩展为包括多个约束。在一些实施例中,Bk和U可以是严格的正值,pi,j可以是非负的,bi,j,k可以是正的或负的。
在一些实施例中,该xi,j∈{0,1}约束(例如,xi,j是指示用户ith将接收或不接收物品jth的二进制整数)可以选择性地放宽到0≤xi,j≤1。为了减轻问题系数中估计噪声的影响,可以通过引入熵函数作为正则化项来正则化解xi,j。例如,该熵函数可以定义为-xi, jlogxi,j。因此,可以使用公式(5)来表示原始目标函数(例如,公式(1))。
公式(5)中的α可以是预定的正则化系数。
在一些实施例中,为了优化以公式(5)形式所表示的资源分配,可以尝试所有可能的解xi,j以找到最优解(例如,使公式(5)中的目标函数最大化的解)。然而,当用户数量处于大规模时(如数百万),这种暴力的求解方法可能变得不切实际。因此,公式(5)中的目标函数需要通过使用并行处理(例如,使用GPU)进行分解和求解。
在一些实施例中,为了执行公式(5)的分解,可以首先通过引入一组对偶乘子λ=(λ1,...,λK)将公式(5)中的原始目标函数转换为对偶目标函数(dual objectivefunction),每个对偶乘子对应于公式(2)中的K个约束中的一个。在一些实施例中,可以使用公式(6)表示对偶目标函数。
在一些实施例中,公式(6)中的最大化问题可随后被分解为多个独立的子问题,每个用户(或用户组)都有一个独立的子问题。例如,用户ith的子问题可以表示为公式(7)。在一些实施例中,公式(6)的Bk可以在公式(7)中省略,因为它不依赖于xi,j。这些独立的子问题可以通过使用GPU的并行处理能力来解决,以提高效率。下面更详细地描述并行处理过程。
图1示出了根据各种实施例的用于确定最优资源分配的技术的可应用示例环境。图1所示的组件是说明性的。取决于实施方式,环境100可以包括额外的、更少的或替代的组件。
如图所示,图1中的环境100可以包括计算系统102。在一些实施例中,计算系统102可与诸如承载数百万用户的电子商务平台(例如,网上市场)或服务于本地社区的小企业等平台相关联。计算系统102可以在一个或多个网络(例如,企业网络)、一个或多个端点、一个或多个服务器、一个或多个云或它们的任意组合中实施。计算系统102可包括管理访问网络中集中式资源或服务的硬件或软件。云可包括分布在网络上的服务器和其他设备的集群。计算系统102可包括一个或多个处理器(例如,数字处理器、模拟处理器、设计用于处理信息的数字电路、中央处理器、图形处理器、微控制器或微处理器、设计用于处理信息的模拟电路、状态机和/或用于电子式处理信息的其他机制)和一个或多个存储器(例如,永久存储器、临时存储器、非暂时性计算机可读存储介质)。一个或多个存储器可以配置有可由一个或多个处理器执行的指令。处理器可以被配置为通过解读存储在存储器中的机器可读指令来执行各种操作。计算系统102可以安装有适当的软件(例如,平台程序等)和/或访问其他设备的硬件(例如,有线、无线连接等)。
在一些实施例中,资源分配查询可包括请求计算系统102搜索遵守一个或多个约束并使目标最大化的分配计划。该查询还可以包括要分配的资源103的信息、资源103被分配给的用户105的信息以及一个或多个系数107。在一些实施例中,系数107可以包括平台的多个预计(或预定/已知)收益,每个收益对应于将资源之一分配给一个用户。例如,为了最大限度提高每日活跃用户的数量(例如,目标函数),平台可以向用户提供奖金,这些奖金可以通过登录平台的移动应用程序并单击一个或多个按钮来领取。每个通过执行这些操作申请奖金的用户都可以被算作每日活跃用户。因此,将一份奖金分配给一个用户可与预计收益相关联(例如,如果奖金能够吸引用户执行操作,则有一个日活用户)。在一些实施例中,系数107还可以包括与将每个资源分配给用户相关联的平台的多个成本。例如,每个资源可能与美元金额相关联,因此分配此类资源可能导致平台的美元金额成本。
在一些实施例中,计算系统102可以包括优化建模模块112、并行处理模块114、聚合模块116和流量控制模块118。计算系统102可以包括其他模块。在一些实施例中,优化建模模块112可以响应于资源分配查询建立优化模型,该资源分配查询可以包括要分配的资源103的信息、系数(例如,预计或预定/已知的收益或成本、目标、预算、约束)和通过计算设备(例如,计算机105a、智能手机或平板电脑105b)与计算系统102通信的用户105的信息。例如,优化建模模块112可以确定公式(5)中所示的资源分配查询的原始目标函数,通过使用用于对偶问题转换的拉格朗日方法将原始目标函数转换为公式(6)中所示的对偶目标函数,以及针对多个用户105将对偶目标函数分解为多个子目标函数。
在一些实施例中,并行处理模块114可以包括多个处理单元。在一些实施例中,处理单元可以指一个或多个GPU的核心或线程。每个处理单元可以为一个用户独立地求解分解后的子目标函数中的一个,其中每个解与该用户的资源分配计划相对应。在一些实施例中,多个分解的子目标函数可以共享一个或多个对偶乘子(例如,可以调整公式(7)中所示的λk以寻找解xi,j)。在一些实施例中,聚合模块116可以包括一个或多个处理单元(例如,GPU的核心或线程),该处理单元并行地收集优化建模模块112的处理单元的解。在一些实施例中,聚合模块116可以与并行处理模块114共享一个或多个处理单元。在一些实施例中,聚合的解可用于确定原始目标函数(例如公式(5))和对偶目标函数(例如公式(6))是否收敛。在一些实施例中,聚合的解还可用于调整对偶目标函数(例如,公式(6))中和子目标函数(例如,公式(7))的对偶乘子λk。
在一些实施例中,流量控制模块118可以管理并行处理模块114和聚合模块116的操作。在一些实施例中,响应于目标函数(例如,原始目标函数和对偶目标函数)的值以及对偶乘子λk均未收敛,流控制模块118可以指示并行处理模块114利用由聚合模块116更新的参数(例如,更新的对偶乘子λk))重复其操作(例如,并行求解公式(7)中所示的子目标函数)。响应于聚合模块116确定满足退出条件,计算系统102可以终止该过程并确认用于资源分配查询的最优解109(例如,资源分配计划)。在一些实施例中,可以基于子目标函数的多个解的聚合来确定最优解109。
图2示出了根据各种实施例的用于确定最优资源分配的示例设备200。图2中所示的设备200可用于实施图1中所示的计算系统102。如图所示,图2中的设备200可配备一个或多个GPU和CPU以确定最优资源分配。GPU的高度并行结构使其能够高效地并行求解独立的计算密集型任务。由于每个GPU中的内存布局(memory layout),GPU中发生的每次计算(例如,在每个线程中)可能不支持复杂的逻辑。因此,可使用CPU进行串行指令处理(例如,更复杂的计算)和流量控制(例如,检查是否满足退出条件)。
在一些实施例中,设备200可以从资源分配查询中接收系数210。系数210可包括平台的多个预计(或预定/已知)收益和成本,其中的每个可与向用户分配资源相关联。系数210还可以包括一个或多个约束,例如全局约束(例如,总预算)、局部约束(例如,可以分配给一个用户的资源数量的限制)。
在一些实施例中,由系数210定义的优化问题可以被分解为多个子优化问题。例如,与资源分配查询的总体目标相对应的优化问题的原始目标函数(例如公式(5))可以被分解为每个单独用户的多个子目标函数(例如公式(7))。图2中的流程图201示出了利用设备200确定最优资源分配的示例工作流程。在一些实施例中,在步骤220,设备200可依靠一个或多个GPU并行求解多个子目标函数。例如,一个GPU可以包括多个线程网格,每个线程网格可以包含几个线程块。每个线程块可以承载多个线程,这些线程可以用于处理或求解一个或多个子优化问题(例如,子目标函数)。在一些实施例中,如果子目标函数形成为整数规划(Integer Programming,IP)问题,则可以通过使用开源或商用IP求解器(例如Cplex、Gurobi、其他合适的工具或它们的任意组合)来求解这些问题。例如,每个子目标函数的解可以包括表示用户分配计划的向量(或矩阵)。
在一些实施例中,在步骤220确定多个用户的多个分配计划之后,在步骤230,一个或多个GPU可以继续基于分配计划并行地执行计算。在一些实施例中,一个或多个GPU可以在步骤230基于分配给用户的资源收益的总和为每个分配计划计算每用户收益。例如,如果子目标函数表示为公式(7),则用户ith的每用户收益可以被表示为公式(8),其中xi,j是确定的分配计划,并且pi,j来自系数210中的预计(或预定/已知)收益。
在一些实施例中,一个或多个GPU可以在步骤230基于每个分配计划为每个分配计划(例如,为对应的单个用户)计算熵函数的值。例如,如果子目标函数表示为公式(7),则熵函数的值可以表示为公式(9)。
在一些实施例中,一个或多个GPU还可以在步骤230基于被分配给用户的资源成本的总和为每个分配计划计算每用户成本。例如,如果子目标函数表示为公式(7),并且假设只有一种类型的约束(例如,公式(7)中的K为1),则用户的每用户成本可以表示为公式(10)。
在一些实施例中,资源可与多个约束相关联。对于每个约束,分配资源可能会导致成本。例如,在给定日期为用户提供奖金可导致每日总奖金预算的成本(例如,第一约束),以及允许提供的奖金的总数的成本(例如,第二个约束)。假设有k个约束,一个或多个GPU可以在步骤230为每个分配计划计算与k个约束相对应的k个每用户成本,如公式(11)所示。
在一些实施例中,在步骤230的并行计算完成后,可以在步骤240聚合多个每用户收益、每用户熵函数值、每用户成本。例如,这些值可以首先经过一个或多个GPU的并行缩减(例如,利用CUDA),最终向CPU产生总收益(例如,每用户收益的总和)、总熵值(例如,每用户熵函数值的总和)和总成本(例如,每用户成本的总和)。如果有K个约束,则可能有K个总成本需要聚合。作为另一示例,这些值可以由CPU直接聚合。总收益、总熵值、K个总成本可分别映射到以及公式(6)的
在一些实施例中,基于在步骤240聚合的总收益、总熵值和总成本,设备200中的CPU可以在步骤250执行流量控制。流量控制可以包括确定是否满足退出条件。在一些实施例中,在对偶目标函数表示为公式(6)的情况下,如果对偶乘子收敛,则可以满足退出条件。在一些实施例中,如果原始目标函数值(例如,公式(5))和对偶目标函数值(例如,公式(6))已经收敛(例如,它们之间的差距低于预定义的阈值),则可以满足退出条件。
在一些实施例中,响应于退出条件未被满足,CPU可以在步骤250更新对偶乘子并将更新后的对偶乘子发送到一个或多个GPU以重复在步骤220的计算。在一些实施例中,可以利用对偶下降算法来更新对偶乘子,如公式(12)中所示。
其中超参数η是学习率。
图3示出了根据各种实施例的用于确定最优资源分配的示例工作流程。工作流程300可以由图1中的计算系统102或图2中的设备200执行。如图所示,工作流程300可以从在步骤310接收输入(例如,资源分配查询)和执行初始化开始。在一些实施例中,输入可以包括多个系数,这些系数包括待分配资源的信息(例如,相关的预计/预定/已知收益和成本、全局约束、局部约束)、接收资源的用户的信息(例如,数量)、其他合适的信息或它们的任意组合。在一些实施例中,工作流程300可以在步骤310进行初始化。初始化可以包括初始化一个或多个对偶乘子、其他参数或它们的任意组合。通过输入和初始化参数,可以确定原始优化问题(例如,公式(5))。在一些实施例中,原始优化问题可以被转化为对偶优化问题(例如公式(6)),然后被分解为多个子优化问题(例如公式(7))。
在一些实施例中,可在步骤320并行求解多个子优化问题以确定多个资源分配计划。在一些实施例中,该并行处理步骤320可以利用各种机制来实施,例如允许直接访问图形处理器(GPU)的虚拟指令集和并行计算元素的计算统一设备架构(CUDA)平台/模型、多线程编程、映射/约简框架(map/reduce framework)、其他合适的机制或它们的任意组合。在一些实施例中,子优化问题的每个解可与用户的资源分配计划相对应。可以使用一个或多个GPU并行求解这些子优化问题中的每一个,以便为用户ith提供具有给定对偶乘子λ的{xi,j}的向量(或矩阵)。在一些实施例中,一个或多个GPU还可以为用户ith并行计算针对每个的和这些值随后可用于计算一个或多个目标函数的值。
在一些实施例中,可以通过在步骤330执行并行缩减来减少(例如,聚合)并行计算的值。例如,并行缩减可以针对每个收集 和并分别计算和以获得原始目标函数和对偶目标函数(例如,公式(5)和(6))的值。在一些实施例中,并行缩减可以发生在一个或多个GPU上,并且缩减的最终结果可以被传送到中央处理器(CPU)。
在一些实施例中,并行缩减的最终结果可用于确定是否应在步骤340终止工作流程300。当满足一个或多个退出条件时,可能会发生该终止。在一些实施例中,一个或多个退出条件可以包括对偶乘子是否收敛、原始目标函数值和对偶目标函数值是否收敛、其他合适的条件或它们的任意组合。响应于没有满足任何退出条件,可以基于缩减结果更新对偶乘子,并且工作流程300可以跳回到320以重复该过程。响应于满足至少一个退出条件,工作流程300可将在步骤320中确定的资源分配计划作为最终资源分配解决方案输出(例如,在步骤350中)。
在一些实施例中,工作流程300可以表示为以下伪代码。
图4示出了根据各种实施例的用于确定最优资源分配的示例GPU存储器布局(memory layout)。在一些实施例中,如果一个或多个GPU用于并行搜索(例如,使用GPU中的多个线程)多个用户的资源分配计划,则GPU的存储器布局可能对存储器访问和相关计算的效率至关重要。在一些实施例中,可以将一个或多个系数向量、矩阵和张量(通常是稀疏的)的布局组织成紧凑型格式。例如,可以将二维N×M个系数的非零条目(例如,N为待分配资源的用户数,M为待分配的资源数)组织成以用户标识符为主要维度,以资源标识符为次要维度的行优先格式。每个用户标识符值可以标识用户,每个资源标识符值可以标识资源。作为另一示例,三维张量(例如,公式(7)中的bijk)可以使用用户标识符作为主要维度,约束标识符作为次要维度,资源标识符作为第三维度。
图4中的示例存储器布局可用于将N×M个系数410存储在一个或多个GPU的存储器中。存储器可以指每个GPU的全局存储器、每个GPU线程块的共享存储器、每个线程的局部存储器、其他合适的存储器或它们的任意组合。N×M个系数可以参考公式(5)、(6)和(7)中的pi,j(例如,将多个资源分配给多个用户的预计(或预定/已知)收益)。在一些实施例中,系数410的存储器布局可以表示为表420,其中主要维度为user_id(例如,用户标识符),次要维度为item_id(例如,资源标识符),并且每对user_idi和item_idj映射到非零pi,j。图4中的表420包括几个示例值。例如,对于用户0(例如,f=0),有三个pi,j具有非零值:p0,3=0.1,p0,5=0.2,p0,6=0.3;对于用户1(例如,i=1),至少有两个pi,j具有非零值:p1,2=0.5,p1,3=0.2。在一些实施例中,一个用户的非零系数可以被连续存储(例如,用户0的非零值被存储为图4的表420中的前三列)。由于在并行处理阶段(例如,图1中的模块114、图2中的步骤220和230,以及图3中的步骤320)的计算(例如,每个用户i的)只需要每个用户i的非零pi,j值,表420中的存储器布局可以允许GPU以恒定的时间复杂度(例如,每次读取O(1))访问这些值,而不是使用具有拟线性时间复杂度的二进制搜索(例如,每次读取O(logN))。
在一些实施例中,可以通过使用两个表:索引表430和值表440,来进一步提高表420的存储器布局的存储效率。如图4所示,索引表430可以使用user_id作为主要维度。每个user_id值可以被映射到值表440中的start_index。值表可以使用item_id作为主要维度。每个item_id值可以被映射到非零pi,j值。在一个实施例中,start_index可以指向由user_id值指定的用户的第一非零pi,j值的索引。例如,在图4中,用户0具有分别存储在索引0、1和2的值表440中的三个非零pi,j值(0.1、0.2、0.3)。索引表430中的user_id值0可以映射到指向值表中的索引0的start_index 0。类似地,用户1映射到存储第一非零pi,j值(0.5)的值表中的start_index 3(例如,索引3)。线程在为用户0计算时,可能会先检查索引表指向用户0的非零pi,j值的起始索引的第一start_index(对应于用户0)。然后线程可以依次读取pi,j值,直到下一个用户的start_index(例如,用户1的start_index 3)。这种方法不仅可以允许一个或多个GPU每次读取时以恒定的时间复杂度访问存储器,而且还可以通过避免存储重复的条目来节省存储器空间(例如,表420中的三个user_id 0可只需要在表430中存储一次)。
图5示出了根据一些实施例的用于优化资源分配的计算机系统500的框图。下面介绍的计算机系统500的组件是说明性的。取决于实施方式,计算机系统500可以包括额外的、更少的或替代的组件。
计算机系统500可以是计算系统102的一个或多个模块的实施的示例。设备200和工作流程300可以由计算机系统500实现。计算机系统500可以包括一个或多个处理器以及一个或多个非暂态计算机可读存储介质(例如,一个或多个存储器),所述非暂态计算机可读存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行以促使系统或设备(例如,处理器)执行上述方法,例如方法300,的指令。计算机系统500可以包括与指令(例如,软件指令)相对应的各种单元/模块。
在一些实施例中,计算机系统500可以被称为用于优化资源分配的装置。该装置可包括获取模块510,用于获取与特定资源分配优化查询(例如,原始资源分配优化)相对应的多个系数,这些系数可包括待分配资源的信息(例如,预计/预定/已知的相关收益和成本、全局约束、局部约束)、接收资源的用户的信息(例如,数量)、其他适当的信息或它们的任意组合;并行处理模块520,用于并行处理多个第一目标函数以确定多个分配计划,并基于多个分配计划并行确定平台的多个收益和成本;聚合模块530,用于使用并行缩减来聚合所计算的收益和成本;流量控制模块540,用于基于聚合成本更新一个或多个对偶乘子以确定是否满足退出条件,并响应于不满足退出条件,基于更新的一个或多个对偶乘子重复处理多个第一目标函数。获取模块510可对应于优化建模模块112。并行处理模块520可对应于并行处理模块114。聚合模块530可对应于聚合模块116。流量控制模块540可对应于流量控制模块118。
本文描述的技术可以由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、网络设备或任何其他设备或设备的组合,这些设备包括硬连线和/或程序逻辑以实现这些技术。专用计算设备可以被实现为个人计算机、笔记本计算机、移动电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板电脑、可穿戴设备或它们的组合。计算设备通常可以由操作系统软件控制和协调。传统的操作系统控制和调度用于执行的计算机进程,执行存储器管理,提供文件系统、网络、I/O服务,以及提供例如图形用户界面(“GUI”)等的用户界面功能。本文描述的各种系统、装置、存储介质、模块和单元可以在专用计算设备中实现,或者在一个或多个专用计算设备的一个或多个计算芯片中实现。在一些实施例中,本文描述的指令可以在专用计算设备上的虚拟机中实现。当被执行时,指令可以促使专用计算设备执行本文描述的各种方法。虚拟机可以包括软件、硬件或其组合。
图6示出了根据各种实施例的用于优化资源分配的方法。方法600可由用于优化资源分配的设备、装置或系统执行。方法600可以由图1-5所示的环境或系统的一个或多个模块/组件来执行,例如计算系统102。以下介绍的方法600的操作是说明性的。取决于实施方式,方法600可以包括以各种顺序执行或并行执行的附加的、更少的或替代的步骤。
框610包括并行处理多个第一目标函数以确定多个分配计划,其中每个分配计划对应于将与平台相关联的多个资源中的零个或多个分配给用户,并且多个第一目标函数共享一个或多个对偶乘子。在一些实施例中,并行处理多个第一目标函数可以包括在图形处理器(GPU)上并行处理多个第一目标函数。在一些实施例中,所述多个第一目标函数中的每一个包括N×M个系数,N为多个用户的数量,M为多个资源的数量;在所述处理多个第一目标函数之前,所述方法还包括:使用值表和索引表将所述N×M个系数的非零系数存储在所述GPU的内存中,以便所述GPU每次读取时以恒定的时间复杂度访问所述内存;所述值表使用资源标识符作为主要维度;以及所述索引表使用用户标识符作为主要维度。在一些实施例中,在GPU的内存中使用值表和索引表存储N×M个系数的非零值可以包括:在值表中,存储映射到非零系数的资源标识符值;在索引表中,存储映射到值表中的一个或多个索引的一个或多个用户标识符值,其中对于每个用户标识符值,对应的索引可以指向与由每个用户标识符值标识的用户相关联的非零系数之一。在一些实施例中,多个第一目标函数中的每一个都可以受到K个约束,并且可以包括N×M×K个系数;在处理多个第一目标函数之前,该方法还可以包括:将N×M×K个系数的非零值以包括至少三个维度的行优先格式存储在GPU的内存中,以便GPU每次读取时以恒定的时间复杂度访问内存。
框620包括基于多个分配计划并行地确定平台的多个收益和成本。在一些实施例中,并行地确定平台的多个收益和成本可以包括在GPU上并行地确定多个收益和成本。
框630包括使用并行缩减对计算出的收益和成本进行聚合。在一些实施例中,使用并行缩减聚合计算的收益和成本可以包括通过GPU和中央处理器(CPU)聚合计算的收益和成本。
框640包括基于聚合成本更新一个或多个对偶乘子以确定是否满足退出条件。在一些实施例中,更新一个或多个对偶乘子可以包括由CPU更新一个或多个对偶乘子。在一些实施例中,该方法还可以包括:响应于满足退出条件,根据多个分配计划分配多个资源,其中多个用户的数量为N,多个资源的数量为M,多个分配计划中的分配计划ith与用户ith相对应,和分配计划ith可以表示为包含M个元素的向量,每个xij表示是否正在将资源jth分配给用户ith。在一些实施例中,退出条件可以包括一个或多个对偶乘子是否收敛。在一些实施例中,退出条件可以包括原始目标函数的值和对偶目标函数的值是否收敛,并且该方法还可以包括:基于聚合的收益和成本确定原始目标函数的值;以及基于所述一个或多个对偶乘子、聚合收益和成本来确定所述对偶目标函数的值。
框650包括响应于不满足退出条件,基于更新的一个或多个对偶乘子重复处理多个第一目标函数。
在一些实施例中,在并行处理所述多个第一目标函数之前,所述方法还可以包括:基于对偶问题转换的拉格朗日技术,将用于优化所述资源分配的原始目标函数转换为对偶目标函数;以及将所述对偶目标函数分解为所述多个第一目标函数。
图7示出了用于优化资源分配的示例电子设备。该电子设备可用于实施图1-6所示的系统、工作流程、方法的一个或多个组件。电子设备700可以包括总线702或用于通信信息的其他通信机制,以及与总线702耦接的一个或多个硬件处理器704。硬件处理器704可以是例如一个或多个通用微处理器。
电子设备700还可以包括耦接到总线702的、用于存储由处理器704执行的信息和指令的主存储器706,例如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备。主存储器706也可用于在要由(一个或多个)处理器704执行的指令的执行期间存储临时变量或其他中间信息。当这些指令被存储在处理器704可访问的存储介质中时,这些指令将电子设备700呈现为被定制以执行指令中指定的操作的专用机器。主存储器706可以包括非易失性介质和/或易失性介质。非易失性介质可以包括例如光盘或磁盘。易失性介质可包括动态存储器。介质的常见形式可包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM,NVRAM、任何其他存储器芯片或盒式磁带、以及它们的网络版本。
电子设备700可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实施本文所述的技术,其中所述固件和/或程序逻辑与电子设备相结合可以使电子设备700成为专用机器或将电子设备700编程为专用机器。根据一个实施例,本文的技术由电子设备700响应于(一个或多个)处理器704执行包含在主存储器706中的一个或多个指令的一个或多个序列而执行。这些指令可以从诸如存储设备707的另一存储介质被读入主存储器706中。主存储器706中包含的指令序列的执行可以促使(一个或多个)处理器704执行这里描述的处理步骤。例如,本文公开的过程/方法可以通过存储在主存储器706中的计算机程序指令来实现。当这些指令由(一个或多个)处理器704执行时,它们可以执行如相应附图所示的和上文所述的步骤。在替代实施例中,可以使用硬连线电路代替软件指令或与软件指令组合。
电子设备700还包括耦接到总线702的通信接口710。通信接口710可以提供耦接到一个或多个网络链路的双向数据通信,所述一个或多个网络链路连接到一个或多个网络。作为另一示例,通信接口710可以是局域网(LAN)卡,用于提供到兼容LAN(或与WAN通信的WAN组件)的数据通信连接。还可以实现无线链路。
某些操作的性能可以分布在处理器之间,不仅是驻留在单个机器内,而是跨多个机器部署。在一些示例实施例中,处理器或处理器实现引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。
在前述部分中描述的每个处理、方法和算法可以在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码模块中实现,并且完全或部分地由所述代码模块自动实现。所述过程和算法可以部分地或全部地在专用电路中实现。
当本文公开的功能以软件功能单元的形式实现并作为独立产品销售或使用时,它们可以被存储在处理器可执行的非易失性计算机可读存储介质中。本文公开的特定技术方案(全部或部分)或有助于当前技术的方面可以以软件产品的形式体现。所述软件产品可以存储在存储介质中,包括一些指令,以使计算设备(可以是个人计算机、服务器、网络设备等)执行本申请实施例的方法的全部或部分步骤。所述存储介质可包括闪存驱动器、便携式硬盘驱动器、ROM、RAM、磁盘、光盘、可用于存储程序代码的其他介质或它们的任意组合。
特定实施例还提供了一种系统,该系统包括处理器和非暂态计算机可读存储介质,该存储介质存储有可由处理器执行的指令,以使该系统执行与上述实施例的任何方法中的步骤相对应的操作。特定实施例还提供非暂态计算机可读存储介质,该存储介质配置有可由一个或多个处理器执行的指令,以使一个或多个处理器执行与上述实施例的任何方法中的步骤相对应的操作。
本文公开的实施例可以通过与客户端交互的云平台、服务器或服务器组(以下统称为“服务系统”)来实现。客户端可以是终端设备,或由用户在平台上注册的客户端,其中终端设备可以是移动终端、个人计算机(PC)和可以安装平台应用程序的任何设备。
上述各种特征和处理可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合都将落入本申请的范围内。另外,在一些实施方式中可以省略某些方法或过程框。本文所述的方法和处理也不限于任何特定序列,与其相关的框或状态可以以其他适当的次序执行。例如,所描述的框或状态可以以不同于具体公开的顺序执行,或者多个框或状态可以被组合在单个框或状态中。示例的框或状态可以串行、并行或以一些其他方式执行。可以向所公开的示例性实施例添加框或状态或从所公开示例性实施例中移除框或状态。本文描述的示例性系统和组件可与所描述的不同地配置。例如,与所公开的示例实施例相比,可以添加、去除或重新布置元件。
本文描述的示例性方法的各种操作可以至少部分地由算法执行。所述算法可以被包含在存储器(例如,上述非暂态计算机可读存储介质)中存储的程序代码或指令中。这种算法可以包括机器学习算法。在一些实施例中,机器学习算法可以不明确地对计算机进行编程以执行功能但是可以从训练数据中学习以建立执行所述功能的预测模型。
本文描述的示例性方法的各种操作可以至少部分地由(例如,通过软件)被临时配置或永久地配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,这样的处理器可以构成处理器实现的引擎,运行该引擎以执行这里描述的一个或多个操作或功能。
类似地,本文描述的方法可以至少部分地由处理器实现,其中一个特定处理器或多个处理器是硬件的示例。例如,所述方法的至少一些操作可以由一个或多个处理器或处理器实现引擎执行。此外,一个或多个处理器还可操作以支持“云计算”环境中的相关操作的性能或作为“软件即服务”(SaaS)。例如,至少一些操作可以由一组计算机(例如,包括处理器的机器)执行,这些操作可以经由网络(例如,Internet)并且经由一个或多个适当的接口(例如,应用程序接口(API))访问。
某些操作的性能可以分布在处理器之间,不仅是驻留在单个机器内,而是跨多个机器部署。在一些示例实施例中,处理器或处理器实现引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。
在本文中,多个实例可以实现作为单个实例描述的组件、操作或结构。尽管一个或多个方法的各个操作被示出并描述为独立的操作,这些独立的操作中的一个或多个可以同时执行,并且不要求这些操作以所示的顺序执行。在示例配置中作为独立组件呈现的结构和功能可以被实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以被实现为独立的组件。这些和其他变化、修改、添加和改进都落入本文的主题的范围内。
尽管已经参考具体的示例实施例描述了主题的概述,但是在不脱离本申请的实施例的更广范围的情况下,可以对这些实施例进行各种修改和改变。如果实际上公开了不只一个公开内容或概念,主题的这些实施例在本文中可单独或共同地由术语“发明”指代,这仅仅是为了方便,而不是旨在主动将本申请的范围限制到任何单个公开内容或概念。
本文所示的实施例被足够详细地描述,以使本领域技术人员能够实践所公开的教导。可以使用其他实施例并从中派生出其他实施例,使得可以在不脱离本申请的范围的情况下进行结构和逻辑上的替换和修改。因此,具体实施方式不应被理解为限制性的,并且各实施例的范围仅由所附权利要求以及这些权利要求所享有的等效物的全部范围定义。
本文描述和/或附图中描述的流程图中的任何流程描述、元素或框应理解为潜在地表示包括用于实现流程中特定逻辑功能或步骤的一个或多个可执行指令的模块、段或代码的部分。替代实施方式被包括在本文所描述的实施例的范围内,其中,如本领域技术人员所理解的,取决于所涉及的功能,可以将本文所描述的实施例所示或所讨论的元素或功能删除、无序执行,包括基本上同时或以相反的顺序执行。
除非另有明确说明或上下文另有说明,否则本文件中使用的“或”是包含性的而非排他性的。因此,除非另有明确说明或上下文另有说明,在本文中,“A、B或C”是指“A、B、A和B、A和C、B和C,或,A和B和C”。此外,除非另有明确说明或上下文另有说明,“和”既可用于联合的也可用于各自的。因此,在本文中,除非另有明确说明或上下文另有说明,“A和B”是指联合的“A和B,或各自的A和各自的B”。此外,可以为本文描述为单个实例的资源、操作或结构提供多个单独实例。此外,各种资源、操作、引擎和数据存储之间的边界在某种程度上是任意的,并且在具体的说明性配置的上下文中说明了特定操作。设想了功能的其他分配,可能落入本申请的各种实施例的范围。通常,在示例配置中作为单独资源呈现的结构和功能可以被实现为组合结构或资源。类似地,作为单个资源呈现的结构和功能可以被实现为独立的资源。这些以及其他的变化、修改、添加和改进应落入由所附权利要求书表示的本申请的范围。因此,说明书和附图应被视为是说明性的,而不是限制性的。
术语“包含”或“包括”用于表示存在随后声明的特征,但不排除添加其他特征。除非另有明确说明或在所使用的上下文中以其他方式理解,否则诸如“可以”、“能够”、“可能”或“可”等条件语言通常旨在传达某些实施例包括,而其他实施例不包括某些特征、元件和/或步骤。因此,这种条件性语言一般并不意味着特征、元素和/或步骤是一个或多个实施方案以任何方式所必须的,或者一个或多个实施方案必然包括用于在有或没有用户输入或提示的情况下决定这些特征、元素和/或步骤是否包括或在任何特定实施方案中执行的逻辑。
Claims (20)
1.一种计算机实现的用于优化资源分配的方法,包括:
并行处理多个第一目标函数以确定多个分配计划,其中每个所述分配计划对应于将与平台相关联的多个资源中的零个或多个资源分配给用户,所述多个第一目标函数共享一个或多个对偶乘子;
基于所述多个分配计划并行地确定所述平台的多个收益和成本;
使用并行缩减对计算出的收益和成本进行聚合;
基于所聚合的成本更新所述一个或多个对偶乘子以确定是否满足退出条件;以及
响应于不满足所述退出条件,基于所更新的一个或多个对偶乘子重复处理所述多个第一目标函数。
2.根据权利要求1所述的方法,其中:
所述并行处理多个第一目标函数包括在图形处理器GPU上并行处理所述多个第一目标函数;
所述并行地确定所述平台的多个收益和成本包括在所述GPU上并行地确定所述多个收益和成本;
所述使用并行缩减对计算出的收益和成本进行聚合包括通过所述GPU和中央处理器CPU对所述计算出的收益和成本进行聚合;
所述更新所述一个或多个对偶乘子包括由所述CPU更新所述一个或多个对偶乘子。
3.根据权利要求2所述的方法,其中:
所述多个第一目标函数中的每一个包括N×M个系数,N为多个用户的数量,M为所述多个资源的数量;
在所述处理多个第一目标函数之前,所述方法还包括:使用值表和索引表将所述N×M个系数中的非零系数存储在所述GPU的存储器中,以使所述GPU每次读取时以恒定的时间复杂度访问所述存储器;
所述值表使用资源标识符作为主要维度;以及
所述索引表使用用户标识符作为主要维度。
4.根据权利要求3所述的方法,其中,使用值表和索引表将所述N×M个系数的非零值存储在所述GPU的存储器中,包括:
在所述值表中存储映射到所述非零系数的资源标识符值;以及
在所述索引表中存储映射到所述值表中的一个或多个索引的一个或多个用户标识符值,其中,对于每个所述用户标识符值,对应的索引指向与每个所述用户标识符值标识的用户相关联的所述非零系数中的一个。
5.根据权利要求2所述的方法,其中:
所述多个第一目标函数中的每一个受到K个约束,且包括N×M×K个系数;以及
在所述处理多个第一目标函数之前,所述方法还包括:将所述N×M×K个系数的非零值以包括至少三个维度的行优先格式存储在所述GPU的存储器中,以使所述GPU每次读取时以恒定的时间复杂度访问所述存储器。
7.根据权利要求1所述的方法,其中所述退出条件包括所述一个或多个对偶乘子是否收敛。
8.根据权利要求1所述的方法,在并行处理所述多个第一目标函数之前,还包括:
基于对偶问题转换的拉格朗日技术,将用于优化所述资源分配的原始目标函数转换为对偶目标函数;以及
将所述对偶目标函数分解为所述多个第一目标函数。
9.根据权利要求8所述的方法,其中所述退出条件包括所述原始目标函数的值和所述对偶目标函数的值是否收敛,以及
所述方法还包括:
基于所述聚合收益和成本确定所述原始目标函数的值;以及
基于所述一个或多个对偶乘子和所述聚合收益和成本确定所述对偶目标函数的值。
10.一种用于优化资源分配的系统,包括一个或多个处理器以及耦接至所述一个或多个处理器且配置有指令的一个或多个非暂态计算机可读存储器,所述指令能够由所述一个或多个处理器执行以促使所述系统执行操作,所述操作包括:
并行处理多个第一目标函数以确定多个分配计划,其中每个所述分配计划对应于将与平台相关联的多个所述资源中的零个或多个分配给用户,所述多个第一目标函数共享一个或多个对偶乘子;
基于所述多个分配计划并行地确定所述平台的多个收益和成本;
使用并行缩减对计算出的收益和成本进行聚合;
基于聚合的成本更新所述一个或多个对偶乘子以确定是否满足退出条件;以及
响应于不满足所述退出条件,基于更新的一个或多个对偶乘子重复处理所述多个第一目标函数。
11.根据权利要求10所述的系统,其中:
所述并行处理多个第一目标函数包括在图形处理器(GPU)上并行处理所述多个第一目标函数;
所述并行地确定所述平台的多个收益和成本包括在所述GPU上并行地确定所述多个收益和成本;
所述使用并行缩减对计算出的收益和成本进行聚合包括通过所述GPU和中央处理器(CPU)对所述计算出的收益和成本进行聚合;以及
所述更新所述一个或多个对偶乘子包括由所述CPU更新所述一个或多个对偶乘子。
12.根据权利要求11所述的系统,其中:
所述多个第一目标函数中的每一个包括N×M个系数,N为多个用户的数量,M为多个资源的数量;
在所述处理多个第一目标函数之前,所述操作还包括:使用值表和索引表将所述N×M个系数的非零系数存储在所述GPU的存储器中,以便所述GPU每次读取时以恒定的时间复杂度访问所述存储器;
所述值表使用资源标识符作为主要维度;以及
所述索引表使用用户标识符作为主要维度。
13.根据权利要求12所述的系统,其中,使用值表和索引表将所述N×M个系数的非零值存储在所述GPU的存储器中包括:
在所述值表中存储映射到所述非零系数的资源标识符值;以及
在所述索引表中存储映射到所述值表中的一个或多个索引的一个或多个用户标识符值,其中,对于每个所述用户标识符值,对应的索引指向与每个所述用户标识符值标识的用户相关联的所述非零系数中的一个。
14.根据权利要求11所述的系统,其中:
所述多个第一目标函数中的每一个受到K个约束,且包括N×M×K个系数;以及
在所述处理多个第一目标函数之前,所述操作还包括:将所述N×M×K个系数的非零值以包括至少三个维度的行优先格式存储在所述GPU的存储器中,以便所述GPU每次读取时以恒定的时间复杂度访问存储器。
15.根据权利要求10所述的系统,其中所述退出条件包括所述一个或多个对偶乘子是否收敛。
16.根据权利要求10所述的系统,其中,在并行处理所述多个第一目标函数之前,所述操作还包括:
基于对偶问题转换的拉格朗日方法,将用于优化所述资源分配的原始目标函数转换为对偶目标函数;以及
将所述对偶目标函数分解为所述多个第一目标函数。
17.根据权利要求16所述的系统,其中所述退出条件包括所述原始目标函数的值和所述对偶目标函数的值是否收敛,
所述操作还包括:
基于所述聚合收益和成本确定所述原始目标函数的值;以及
基于所述一个或多个对偶乘子和所述聚合收益和成本确定所述对偶目标函数的值。
18.一种用于优化资源分配的非暂态计算机可读存储介质,配置有可由一个或多个处理器执行的指令,以使所述一个或多个处理器执行以下操作:
并行处理多个第一目标函数以确定多个分配计划,其中每个所述分配计划对应于将与平台相关联的多个所述资源中的零个或多个分配给用户,所述多个第一目标函数共享一个或多个对偶乘子;
基于所述多个分配计划并行地确定所述平台的多个收益和成本;
使用并行缩减对计算出的收益和成本进行聚合;
基于聚合的成本更新所述一个或多个对偶乘子以确定是否满足退出条件;以及
响应于不满足所述退出条件,基于更新的一个或多个对偶乘子重复处理所述多个第一目标函数。
19.根据权利要求18所述的存储介质,其中:
所述并行处理多个第一目标函数包括在图形处理器(GPU)上并行处理所述多个第一目标函数;
所述并行地确定所述平台的多个收益和成本包括在所述GPU上并行地确定所述多个收益和成本;
所述使用并行缩减对计算出的收益和成本进行聚合包括通过所述GPU和中央处理器(CPU)对所述计算出的收益和成本进行聚合;以及
所述更新所述一个或多个对偶乘子包括由所述CPU更新所述一个或多个对偶乘子。
20.根据权利要求18所述的存储介质,其中所述退出条件包括所述一个或多个对偶乘子是否收敛。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/738,067 | 2020-01-09 | ||
US16/738,067 US10678594B2 (en) | 2020-01-09 | 2020-01-09 | System and method for optimizing resource allocation using GPU |
PCT/CN2021/071132 WO2021139816A1 (en) | 2020-01-09 | 2021-01-11 | System and method for optimizing resource allocation using gpu |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114902273A true CN114902273A (zh) | 2022-08-12 |
Family
ID=70459848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180007599.XA Pending CN114902273A (zh) | 2020-01-09 | 2021-01-11 | 使用gpu优化资源分配的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10678594B2 (zh) |
CN (1) | CN114902273A (zh) |
WO (1) | WO2021139816A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116401070A (zh) * | 2023-06-06 | 2023-07-07 | 昆山嘉提信息科技有限公司 | 一种多mcu的数据并行处理方法及装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10678594B2 (en) * | 2020-01-09 | 2020-06-09 | Alipay Labs (singapore) Pte. Ltd. | System and method for optimizing resource allocation using GPU |
CN113159809B (zh) * | 2020-01-22 | 2022-06-14 | 阿里巴巴集团控股有限公司 | 对象处理方法、装置、电子设备及计算机可读存储介质 |
CN111724037B (zh) * | 2020-05-21 | 2024-03-05 | 口碑(上海)信息技术有限公司 | 运营资源分配方法、装置、计算机设备及可读存储介质 |
US11645057B2 (en) * | 2020-09-24 | 2023-05-09 | SambaNova Systems, Inc. | Systems and methods for memory layout determination and conflict resolution |
CN113010288B (zh) * | 2021-03-16 | 2023-01-03 | 奇瑞汽车股份有限公司 | 云资源的调度方法、装置及计算机存储介质 |
CN113010318B (zh) * | 2021-03-31 | 2024-06-07 | 广东电网有限责任公司电力调度控制中心 | 基于增广拉格朗日法的leo卫星计算资源分配方法及系统 |
CN113553057B (zh) * | 2021-07-22 | 2022-09-09 | 中国电子科技集团公司第十五研究所 | 一种针对不同架构的gpu进行并行计算的优化系统 |
US11709611B2 (en) | 2021-10-26 | 2023-07-25 | SambaNova Systems, Inc. | Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5148365A (en) * | 1989-08-15 | 1992-09-15 | Dembo Ron S | Scenario optimization |
US5537593A (en) * | 1990-02-12 | 1996-07-16 | Fmc Corporation | Method for solving enumerative search problems using message passing on parallel computers |
AU2002229085B2 (en) * | 2000-12-13 | 2007-07-26 | Accenture Global Services Limited | Stochastic multiple choice knapsack assortment optimizer |
US8874477B2 (en) * | 2005-10-04 | 2014-10-28 | Steven Mark Hoffberg | Multifactorial optimization system and method |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
EP2711839A4 (en) | 2011-05-19 | 2014-12-03 | Nec Corp | PARALLEL PROCESSING DEVICE, PARALLEL PROCESSING METHOD, OPTIMIZATION DEVICE, OPTIMIZATION METHOD AND COMPUTER PROGRAM |
US9330356B2 (en) | 2011-09-21 | 2016-05-03 | Qualcomm Technologies Inc. | Apparatus and methods for developing parallel networks using a general purpose programming language |
US8744888B2 (en) | 2012-04-04 | 2014-06-03 | Sap Ag | Resource allocation management |
US8701069B1 (en) | 2012-11-21 | 2014-04-15 | Maxeler Technologies, Ltd. | Systems and methods for optimizing allocation of hardware resources to control logic in parallel pipelined hardware |
CN103973780B (zh) * | 2014-04-25 | 2018-05-22 | 华中科技大学 | 一种云视频的资源分配和开销优化方法 |
US10972371B2 (en) | 2015-03-27 | 2021-04-06 | Intel Corporation | Technologies for GPU assisted network traffic monitoring and analysis |
DE102015207570A1 (de) | 2015-04-24 | 2016-10-27 | Siemens Aktiengesellschaft | Ressourcen-Optimierer für Software-Ökosysteme |
US9407944B1 (en) | 2015-05-08 | 2016-08-02 | Istreamplanet Co. | Resource allocation optimization for cloud-based video processing |
WO2017139305A1 (en) | 2016-02-09 | 2017-08-17 | Jonathan Perry | Network resource allocation |
US10846560B2 (en) | 2016-03-25 | 2020-11-24 | Intel Corporation | GPU optimized and online single gaussian based skin likelihood estimation |
US10268513B2 (en) | 2016-12-23 | 2019-04-23 | Nice Ltd. | Computing resource allocation optimization |
US20180260878A1 (en) | 2017-03-09 | 2018-09-13 | Microsoft Technology Licensing, Llc | Item delivery fulfillment plan determination |
US10873412B2 (en) | 2017-07-27 | 2020-12-22 | Virginia Polytechnic Institute And State University | System and method for real-time optimized scheduling for network data transmission |
US20190303828A1 (en) * | 2018-03-30 | 2019-10-03 | Valorbec, Société en commandite | Device for negotiating an optimized resource allocation |
US11720408B2 (en) | 2018-05-08 | 2023-08-08 | Vmware, Inc. | Method and system for assigning a virtual machine in virtual GPU enabled systems |
US10379868B1 (en) | 2019-02-04 | 2019-08-13 | Bell Integrator Inc. | Optimization method with parallel computations |
CN110557287B (zh) * | 2019-09-10 | 2020-12-25 | 北京邮电大学 | 一种基于李雅普诺夫优化的资源分配方法及装置 |
US10678594B2 (en) * | 2020-01-09 | 2020-06-09 | Alipay Labs (singapore) Pte. Ltd. | System and method for optimizing resource allocation using GPU |
-
2020
- 2020-01-09 US US16/738,067 patent/US10678594B2/en active Active
-
2021
- 2021-01-11 CN CN202180007599.XA patent/CN114902273A/zh active Pending
- 2021-01-11 WO PCT/CN2021/071132 patent/WO2021139816A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116401070A (zh) * | 2023-06-06 | 2023-07-07 | 昆山嘉提信息科技有限公司 | 一种多mcu的数据并行处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200142743A1 (en) | 2020-05-07 |
US10678594B2 (en) | 2020-06-09 |
WO2021139816A1 (en) | 2021-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114902273A (zh) | 使用gpu优化资源分配的系统和方法 | |
Abd Elaziz et al. | Advanced optimization technique for scheduling IoT tasks in cloud-fog computing environments | |
WO2022037337A1 (zh) | 机器学习模型的分布式训练方法、装置以及计算机设备 | |
US11281969B1 (en) | Artificial intelligence system combining state space models and neural networks for time series forecasting | |
JP7087079B2 (ja) | 深層学習アプリケーションのための堅牢な勾配重み圧縮方式 | |
Kaur et al. | Deep‐Q learning‐based heterogeneous earliest finish time scheduling algorithm for scientific workflows in cloud | |
US10748072B1 (en) | Intermittent demand forecasting for large inventories | |
CN112136109A (zh) | 分布式资源分配 | |
CN110390345A (zh) | 一种基于云平台的大数据集群自适应资源调度方法 | |
CN112668690B (zh) | 神经网络模型压缩的方法和计算机系统 | |
CN108549909B (zh) | 基于众包的对象分类方法及对象分类系统 | |
US20200410355A1 (en) | Explainable machine learning based on heterogeneous data | |
Yu et al. | Workflow performance prediction based on graph structure aware deep attention neural network | |
CN112136111A (zh) | 分布式资源分配 | |
Soulegan et al. | MTC: minimizing time and cost of cloud task scheduling based on customers and providers needs using genetic algorithm | |
CN109389424B (zh) | 流量分配方法、装置、电子设备及存储介质 | |
Hogade et al. | A survey on machine learning for geo-distributed cloud data center management | |
US20230186331A1 (en) | Generalized demand estimation for automated forecasting systems | |
Abd Elaziz et al. | Hybrid enhanced optimization-based intelligent task scheduling for sustainable edge computing | |
Jung et al. | A workflow scheduling technique using genetic algorithm in spot instance-based cloud | |
CN117032921A (zh) | IoT环境下基于聚类的工作流调度方法、设备及系统 | |
CN112166413B (zh) | 分布式资源分配 | |
Yang et al. | Adaptive DNN Surgery for Selfish Inference Acceleration with On-demand Edge Resource | |
Sugan | PredictOptiCloud: A hybrid framework for predictive optimization in hybrid workload cloud task scheduling | |
CN112232878B (zh) | 虚拟展示资源处理方法、装置、计算机设备及存储介质 |
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 |