CN116010092A - 显存资源分配方法及装置 - Google Patents
显存资源分配方法及装置 Download PDFInfo
- Publication number
- CN116010092A CN116010092A CN202211697912.XA CN202211697912A CN116010092A CN 116010092 A CN116010092 A CN 116010092A CN 202211697912 A CN202211697912 A CN 202211697912A CN 116010092 A CN116010092 A CN 116010092A
- Authority
- CN
- China
- Prior art keywords
- video memory
- value
- memory resource
- occupied
- reasoning task
- 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
-
- 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
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种显存资源分配方法及装置。其中,该方法包括:响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值;向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。本申请解决了相关技术无法对显存资源进行合理分配,从而降低显存资源浪费的技术问题。
Description
技术领域
本申请涉及新兴信息技术领域,具体而言,涉及一种显存资源分配方法及装置。
背景技术
随着虚拟化技术和云计算技术的不断发展,GPU(Graphic Processing Unit,图形处理器)凭借其强大的图形图像处理能力,使得GPU虚拟化技术成为研究的终端,通过虚拟化GPU资源为不同的任务分配不同的显存资源,从而满足GPU虚拟化你属的显存隔离和按需分配等需求。
显存资源分配主要是由主机静态分配一个初始固定值进行显存限制,然而对于不同的任务,其对显存资源的需求也不尽相同,相关技术人至今还未提出一个合适的显存资源分配方法,从而有效避免显存资源浪费或显存资源不足的情况发生。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种显存资源分配方法及装置,以至少解决相关技术无法对显存资源进行合理分配,从而降低显存资源浪费的技术问题。
根据本申请实施例的一个方面,提供了一种显存资源分配方法,包括:响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值;向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。
可选地,与图形处理器虚拟资源池建立连接,包括:调用动态链接库中的查询接口与虚拟图形处理器驱动模块建立连接;通过虚拟图形处理器驱动模块与图形处理器虚拟资源池建立连接。
可选地,预估推理任务需占用的第一显存资源值,包括:预估推理任务中的模型参数需占用的第一子显存资源值、模型参数的梯度需占用的第二子显存资源值、优化器需占用的第三子显存资源值和中间激活值需占用的第四子显存资源值;对第一子显存资源值、第二子显存资源值、第三子显存资源值和第四子显存资源值求和,得到第一显存资源值。
可选地,在从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源之前,还包括:确定图形处理器虚拟资源池中的可用显存资源值;在第一显存资源值不超过可用显存资源值时,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;在第一显存资源值超过可用显存资源值时,重新确定第一显存资源值。
可选地,监控推理任务运行过程中所占用的显存资源值的变化状态,包括:依据多个不同的时间间隔分别周期性采集推理任务运行过程中所占用的显存资源值,得到多个随时间变化的显存资源占用值序列。
可选地,依据变化状态确定推理任务运行过程中需占用的最大显存资源值,包括:以队列格式存储多个显存资源占用值序列,并依据先进先出原则比较各个显存资源占用值序列中的值;在发现多个显存资源占用值序列中的相同值时,判断相同值是否满足预设条件,其中,预设条件包括:在每个显存资源占用值序列中,相同值的上一值与相同值之间的斜率为正,相同值的下一值与相同值之间的斜率为负;若满足,则确定相同值为最大显存资源值;若不满足,则继续确定下一个相同值,并确定下一个相同值是否满足预设条件,直至确定满足预设条件的相同值。
可选地,依据变化状态确定推理任务运行过程中需占用的最大显存资源值,包括:对于每个显存资源占用值序列,依据目标映射函数对显存资源占用值序列中的每个值进行映射处理,得到目标映射序列,其中,目标映射函数是依据推理任务运行过程中占用显存资源的变化率确定的;以链表格式存储多个目标映射序列,其中,链表格式中包括多个节点,每个节点中包括数据域和指针域,数据域用于存储映射值和映射值在目标映射序列中的出现频次,指针域用于存储指向下一节点的地址;遍历多个目标映射序列,确定每个目标映射序列中的最大值;若每个目标映射序列中的最大值全部相同,则确定最大值为最大显存资源值。
根据本申请实施例的另一方面,还提供了一种显存资源分配装置,包括:连接模块,用于响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;第一分配模块,用于预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;确定模块,用于运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值;第二分配模块,用于向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,该非易失性存储介质包括存储的程序,其中,非易失性存储介质所在设备通过运行该程序执行上述的显存资源分配方法。
根据本申请实施例的另一方面,还提供了一种电子设备,该电子设备包括:存储器和处理器,其中,存储器中存储有计算机程序,处理器被配置为通过计算机程序执行上述的显存资源分配方法。
在本申请实施例中,响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值;向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。其中,将不同型号的图像处理器虚拟化为图像处理器虚拟资源池,同时,通过模拟推理任务并监控推理任务运行中显存资源值的动态变化情况,便于根据当前推理任务确定推理任务运行过程中需占用的最大显存资源值,避免图像处理器虚拟化背景下的显存“按需分配”时,容易发生显存利用率过低或过高的情况,从而实现充分利用显存资源的技术效果,进而解决了相关技术无法对显存资源进行合理分配,从而降低显存资源浪费的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的显存资源分配方法的示意图;
图2是根据本申请实施例的一种可选的目标映射值与存储单元的对应关系图;
图3是根据本申请实施例的一种可选的显存资源分配装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本申请实施例,提供了一种显存资源分配方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种可选的显存资源分配方法的流程示意图,如图1所示,该方法至少包括步骤S102-S108,其中:
步骤S102,响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接。
在本发明上述步骤S102提供的技术方案中,接收用户端创建推理任务的创建指令,启动模拟推理任务,并基于图形处理器虚拟化背景,将多种不同的GPU卡虚拟化成图形处理器虚拟资源池,并与用户创建推理任务的创建指令建立通信连接。
步骤S104,预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源。
在本发明上述步骤S104提供的技术方案中,使用yolov5s模型进行推理任务,并预估推理任务需占用的第一显存资源值,其中,显存最大消耗约为3GB(即batchsize最大设置为32),在图形处理器虚拟资源池中可申请的显存资源足够支持当前推理任务需占用的第一显存资源值时,向图形处理器虚拟资源池中申请为推理任务分配第一显存资源值的显存资源,其中,第一显存资源值包括但不仅限于3GB。
步骤S106,运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值。
在本发明上述步骤S106提供的技术方案中,当图形处理器虚拟资源池的可用显存资源值足以支撑当前模拟推理任务完成推理运行时,则正式开始推理任务,并通过使用python第三方库GPUtil模块内置函数读取GPU的信息,其中,读取的信息中包括:获取时间、查询次数、GPU ID、GPU内存使用量等,并通过上述数据隔监控模拟推理任务运行过程中所占用的显存资源值的变化状态。
具体地,GPUtil是一个Python模块,用于使用nvidia-smi从NVIDAGPU获取GPU状态,GPUtil查找计算机上的所有GPU,确定其可用性并返回可用GPU的有序列表。其中,可用性是基于每个GPU的当前内存消耗和负载确定的。另外,内置函数get_gpu_info通过GPUtil获取所有GPU的信息:获取当前时间time、GPU卡号GPU ID、GPU总量GPU.memoryTotal、GPU使用量GPU.memoryUsed、GPU利用率GPU.memoryUtil。
步骤S108,向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。
在本发明上述步骤S108提供的技术方案中,确定第一显存资源值后,向图形处理器虚拟资源池返还当前虚拟推理任务模型所需占用的第一显存资源值的显存资源,将第一显存资源值的显存资源作为用户申请推理任务运行过程中需占用的显存资源的参考值。
在本申请步骤S102-S108提供的技术方案中,响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值;向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。其中,将不同型号的图像处理器虚拟化为图像处理器虚拟资源池,同时,通过模拟推理任务并监控推理任务运行中显存资源值的动态变化情况,便于根据当前推理任务确定推理任务运行过程中需占用的最大显存资源值,避免图像处理器虚拟化背景下的显存“按需分配”时,容易发生显存利用率过低或过高的情况,从而实现充分利用显存资源的技术效果,进而解决了相关技术无法对显存资源进行合理分配,从而降低显存资源浪费的技术问题。
下面将对该实施例中的上述方法进行进一步地介绍。
作为一种可选的实施方式,在本发明上述步骤S102提供的技术方案中,该方法包括:调用动态链接库中的查询接口与虚拟图形处理器驱动模块建立连接;通过虚拟图形处理器驱动模块与图形处理器虚拟资源池建立连接。
在该实施例中,通过ctypes协议中cdll对象加载动态链接库,其中,动态链接库可采用NVIDIA厂商提供的libnvidiaml.so动态库文件,并调用动态链接库中的查询接口与虚拟图形处理器驱动模块建立通信连接,其中,查询接口是内置于libnvidia_ml.so中的nvml(nvidiamanagement library)函数集合;再通过虚拟图形处理器驱动模块与图形处理器虚拟资源池建立通信连接。具体地,ctypes是Python的外部函数库,提供了与C语言兼容的数据类型,允许调用DLL或共享库中的函数。通过ctypes导出cdll对象,通过操作cdll对象的属性,可以载入外部C语言的动态链接库。
作为一种可选的实施方式,在本发明上述步骤S104提供的技术方案中,该方法包括:预估推理任务中的模型参数需占用的第一子显存资源值、模型参数的梯度需占用的第二子显存资源值、优化器需占用的第三子显存资源值和中间激活值需占用的第四子显存资源值;对第一子显存资源值、第二子显存资源值、第三子显存资源值和第四子显存资源值求和,得到第一显存资源值。
在该实施例中,基于pytorch框架的推理任务的显存资源开销中包括:模型参数需占用的第一子显存资源值、模型参数的梯度需占用的第二子显存资源值、优化器需占用的第三子显存资源值以及中间激活值需占用的第四子显存资源值,将上述几类显存资源值求和,预估推理任务需占用的第一显存资源值。
作为一种可选的实施方式,在本发明上述步骤S104提供的技术方案中,在从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源之前,该方法还包括:确定图形处理器虚拟资源池中的可用显存资源值;在第一显存资源值不超过可用显存资源值时,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;在第一显存资源值超过可用显存资源值时,重新确定第一显存资源值。
在该实施例中,获取图形处理器虚拟资源池中的可用显存资源值,并判断可用显存资源值是否满足初筛条件,其中,初筛条件为图形处理器虚拟资源池中的可用显存资源值是否足够支撑当前推理模型,并在第一显存资源值小于可用显存资源值时,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;否则,重新预估推理任务需占用的第一显存资源值。
作为一种可选的实施方式,在本发明上述步骤S106提供的技术方案中,该方法包括:依据多个不同的时间间隔分别周期性采集推理任务运行过程中所占用的显存资源值,得到多个随时间变化的显存资源占用值序列。
在该实施例中,采用多个不同时间间隔,分别周期性地采集推理任务运行过程中所占用的显存资源值,并依据上述时间间隔保存NVIDIA-SMI命令刷新保存动态的显存资源值,从而得到多个随时间变化的显存资源占用值序列。例如,取时间间隔为1秒和2秒两组对照参数,即设置时间间隔参数为delay=1或者delay=2。其中,在实际应用中,时间间隔的具体取值可以根据实际场景进行设定。
在推理任务中显存资源的主要包括以下三部分:模型权重、输入输出和中间结果。对于一个全连接层网络,其模型权重主要是指模型自身的参数,比如卷积层的参数是一个高核的卷积核,全连接层的参数是一个二维矩阵,激活函数层、池化层不含有参数;而中间结果可以理解为,在前向计算中,由于前一层的输出对应后一层的输入,因此相连两层的中间结果也需要占用显存资源;输入输出占用的显存资源比较少。因而对于同一模型确定的推理任务运行过程中需占用的最大显存资源值必定时相同的,且随着推理任务运行的逐渐完成,显存资源值呈增长-持平-增长-再持平的变化趋势,因而推理任务运行过程中需占用的显存资源值会稳定维持再最大值,最后随着模拟推理任务运行的技术而全部被释放。因此,基于上述显存资源值的变化规律,确定推理任务运行过程中需占用的最大显存资源值。
作为一种可选的实施方式,在本发明上述步骤S106提供的技术方案中,该方法包括:以队列格式存储多个显存资源占用值序列,并依据先进先出原则比较各个显存资源占用值序列中的值;在发现多个显存资源占用值序列中的相同值时,判断相同值是否满足预设条件,其中,预设条件包括:在每个显存资源占用值序列中,相同值的上一值与相同值之间的斜率为正,相同值的下一值与相同值之间的斜率为负;若满足,则确定相同值为最大显存资源值;若不满足,则继续确定下一个相同值,并确定下一个相同值是否满足预设条件,直至确定满足预设条件的相同值。
在该实施例中,采用队列的数据格式存储多组显存资源占用值序列,基于队列存储先进先出原则对比各个显存资源占用值序列中的值,若多个显存资源占用值序列中的不相同时,则去掉该显存资源值;若多个显存资源占用值序列中的存在均相同的同一值时,确定该值为相同值,判断该相同值与其上一个值以及下一个值之间的曲线斜率是否满足从正到负的变化,若满足,则确定该相同值为最大显存资源值;若不满足则继续判定下一个相等值是否满足斜率变化规律,直至所得到的显存资源值满足斜率变化规律,则确定该值为最大显存资源值。
作为一种可选的实施方式,在本发明上述步骤S106提供的技术方案中,该方法包括:对于每个显存资源占用值序列,依据目标映射函数对显存资源占用值序列中的每个值进行映射处理,得到目标映射序列,其中,目标映射函数是依据推理任务运行过程中占用显存资源的变化率确定的;以链表格式存储多个目标映射序列,其中,链表格式中包括多个节点,每个节点中包括数据域和指针域,数据域用于存储映射值和映射值在目标映射序列中的出现频次,指针域用于存储指向下一节点的地址;遍历多个目标映射序列,确定每个目标映射序列中的最大值;若每个目标映射序列中的最大值全部相同,则确定最大值为最大显存资源值。
在该实施例中,对于采样的S1和S2两组实验数据,可以设计如下的映射函数:
V=f(M)
其中,V表示实验数据中采集到的显存值映射一定规则得到的值;M表示实验数据中采集到的某一显存值;f表示映射规则。因此,对于每个显存资源占用值序列,依据上述映射函数对显存资源占用值序列中的每个值进行映射处理,可以得到目标映射序列,并将目标映射值存储至相同的存储单元内,其中,存储单元与目标映射值之间的对应关系参考图2。可以将存储单元设计成链表格式,此时,将S1中V1值对应的映射值以及映射值在目标映射序列中的出现频次存储在链表L1中,将S2中V2值对应的映射值以及映射值在目标映射序列中的出现频次存储在链表L2中,分别遍历多个链表L1和L2,删除V值不为0的节点,并确定L1和L2中显存资源值最大的节点,并确定该最大值是否相同,若相等则确定该最大值为最大显存资源值;否则,增大样本数量继续进行确定。
上述步骤中,通过监控模拟推理任务中动态显存资源变化值,并根据采样值匹配计算最适合当前推理任务模型的最大显存资源值,有助于用户对当前推理任务申请合适的GPU虚拟化显存资源,避免GPU虚拟化背景下的显存“按需分配”容易出现的显存利用率过低或过高的情况发生,充分利用GPU虚拟化资源。
实施例2
根据本申请实施例,还提供了一种用于实现实施例1中的显存资源分配方法的显存资源分配装置,图3是根据本申请实施例的一种可选的显存资源分配装置的结构图,如图3所示,该显存资源分配装置中至少包括连接模块31,第一分配模块32,确定模块33和第二分配模块34,其中:
连接模块31,用于响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接。
具体地,连接模块31接收用户端创建推理任务的创建指令,启动模拟推理任务,并基于图形处理器虚拟化背景,将多种不同的GPU卡虚拟化成图形处理器虚拟资源池,并与用户创建推理任务的创建指令建立通信连接。
作为一种可选的实施方式,连接模块31调用动态链接库中的查询接口与虚拟图形处理器驱动模块建立连接;通过虚拟图形处理器驱动模块与图形处理器虚拟资源池建立连接。
在该实施例中,通过ctypes协议中cdll对象加载动态链接库,其中,动态链接库可采用NVIDIA厂商提供的libnvidia_ml.so动态库文件,并调用动态链接库中的查询接口与虚拟图形处理器驱动模块建立通信连接,其中,查询接口是内置于libnvidia_ml.so中的nvml(nvidiamanagement library)函数集合;再通过虚拟图形处理器驱动模块与图形处理器虚拟资源池建立通信连接。具体地,ctypes是Python的外部函数库,提供了与C语言兼容的数据类型,允许调用DLL或共享库中的函数。通过ctypes导出cdll对象,通过操作cdll对象的属性,可以载入外部C语言的动态链接库
第一分配模块32,用于预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源。
具体地,使用yolov5s模型进行推理任务,并预估推理任务需占用的第一显存资源值,其中,显存最大消耗约为3GB(即batchsize最大设置为32),第一分配模块32在图形处理器虚拟资源池中可申请的显存资源足够支持当前推理任务需占用的第一显存资源值时,向图形处理器虚拟资源池中申请为推理任务分配第一显存资源值的显存资源,其中,第一显存资源值包括但不仅限于3GB。
作为一种可选的实施方式,第一分配模块32预估推理任务中的模型参数需占用的第一子显存资源值、模型参数的梯度需占用的第二子显存资源值、优化器需占用的第三子显存资源值和中间激活值需占用的第四子显存资源值;对第一子显存资源值、第二子显存资源值、第三子显存资源值和第四子显存资源值求和,得到第一显存资源值。
在该实施例中,基于pytorch框架的推理任务的显存资源开销中包括:模型参数需占用的第一子显存资源值、模型参数的梯度需占用的第二子显存资源值、优化器需占用的第三子显存资源值以及中间激活值需占用的第四子显存资源值,将上述几类显存资源值求和,预估推理任务需占用的第一显存资源值。
作为一种可选的实施方式,在第一分配模块32从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源之前,还包括:确定图形处理器虚拟资源池中的可用显存资源值;在第一显存资源值不超过可用显存资源值时,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;在第一显存资源值超过可用显存资源值时,重新确定第一显存资源值。
在该实施例中,获取图形处理器虚拟资源池中的可用显存资源值,并判断可用显存资源值是否满足初筛条件,其中,初筛条件为图形处理器虚拟资源池中的可用显存资源值是否足够支撑当前推理模型,并在第一显存资源值小于可用显存资源值时,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;否则,重新预估推理任务需占用的第一显存资源值。
确定模块33,用于运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值。
具体地,当图形处理器虚拟资源池的可用显存资源值足以支撑当前模拟推理任务完成推理运行时,则正式开始推理任务,并通过使用python第三方库GPUtil模块内置函数读取GPU的信息,其中,读取的信息中包括:获取时间、查询次数、GPU ID、GPU内存使用量等,并通过上述数据隔监控模拟推理任务运行过程中所占用的显存资源值的变化状态。
具体地,GPUtil是一个Python模块,用于使用nvidia-smi从NVIDAGPU获取GPU状态,GPUtil查找计算机上的所有GPU,确定其可用性并返回可用GPU的有序列表。其中,可用性是基于每个GPU的当前内存消耗和负载确定的。另外,内置函数get_gpu_info通过GPUtil获取所有GPU的信息:获取当前时间time、GPU卡号GPU ID、GPU总量GPU.memoryTotal、GPU使用量GPU.memoryUsed、GPU利用率GPU.memoryUtil。
在推理任务中显存资源的主要包括以下三部分:模型权重、输入输出和中间结果。对于一个全连接层网络,其模型权重主要是指模型自身的参数,比如卷积层的参数是一个高核的卷积核,全连接层的参数是一个二维矩阵,激活函数层、池化层不含有参数;而中间结果可以理解为,在前向计算中,由于前一层的输出对应后一层的输入,因此相连两层的中间结果也需要占用显存资源;输入输出占用的显存资源比较少。因而对于同一模型确定的推理任务运行过程中需占用的最大显存资源值必定时相同的,且随着推理任务运行的逐渐完成,显存资源值呈增长-持平-增长-再持平的变化趋势,因而推理任务运行过程中需占用的显存资源值会稳定维持再最大值,最后随着模拟推理任务运行的技术而全部被释放。因此,基于上述显存资源值的变化规律,确定推理任务运行过程中需占用的最大显存资源值。
作为一种可选的实施方式,确定模块33可以按照如下规则确定推理任务运行过程中需占用的最大显存资源值:以队列格式存储多个显存资源占用值序列,并依据先进先出原则比较各个显存资源占用值序列中的值;在发现多个显存资源占用值序列中的相同值时,判断相同值是否满足预设条件,其中,预设条件包括:在每个显存资源占用值序列中,相同值的上一值与相同值之间的斜率为正,相同值的下一值与相同值之间的斜率为负;若满足,则确定相同值为最大显存资源值;若不满足,则继续确定下一个相同值,并确定下一个相同值是否满足预设条件,直至确定满足预设条件的相同值。
在该实施例中,采用队列的数据格式存储多组显存资源占用值序列,基于队列存储先进先出原则对比各个显存资源占用值序列中的值,若多个显存资源占用值序列中的不相同时,则去掉该显存资源值;若多个显存资源占用值序列中的存在均相同的同一值时,确定该值为相同值,判断该相同值与其上一个值以及下一个值之间的曲线斜率是否满足从正到负的变化,若满足,则确定该相同值为最大显存资源值;若不满足则继续判定下一个相等值是否满足斜率变化规律,直至所得到的显存资源值满足斜率变化规律,则确定该值为最大显存资源值。
作为一种可选的实施方式,确定模块33还可以按照如下规则确定推理任务运行过程中需占用的最大显存资源值:对于每个显存资源占用值序列,依据目标映射函数对显存资源占用值序列中的每个值进行映射处理,得到目标映射序列,其中,目标映射函数是依据推理任务运行过程中占用显存资源的变化率确定的;以链表格式存储多个目标映射序列,其中,链表格式中包括多个节点,每个节点中包括数据域和指针域,数据域用于存储映射值和映射值在目标映射序列中的出现频次,指针域用于存储指向下一节点的地址;遍历多个目标映射序列,确定每个目标映射序列中的最大值;若每个目标映射序列中的最大值全部相同,则确定最大值为最大显存资源值。
在该实施例中,对于采样的S1和S2两组实验数据,可以设计如下的映射函数:
V=f(M)
其中,V表示实验数据中采集到的显存值映射一定规则得到的值;M表示实验数据中采集到的某一显存值;f表示映射规则。因此,对于每个显存资源占用值序列,依据上述映射函数对显存资源占用值序列中的每个值进行映射处理,可以得到目标映射序列,并将目标映射值存储至相同的存储单元内,其中,存储单元与目标映射值之间的对应关系参考图2。可以将存储单元设计成链表格式,此时,将S1中V1值对应的映射值以及映射值在目标映射序列中的出现频次存储在链表L1中,将S2中V2值对应的映射值以及映射值在目标映射序列中的出现频次存储在链表L2中,分别遍历多个链表L1和L2,删除V值不为0的节点,并确定L1和L2中显存资源值最大的节点,并确定该最大值是否相同,若相等则确定该最大值为最大显存资源值;否则,增大样本数量继续进行确定。
第二分配模块34,用于向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。
确定第一显存资源值后,向图形处理器虚拟资源池返还当前虚拟推理任务模型所需占用的第一显存资源值的显存资源,第二分配模块34将第一显存资源值的显存资源作为用户申请推理任务运行过程中需占用的显存资源的参考值。
需要说明的是,本申请实施例中的显存资源分配装置中的各模块与实施例1中的显存资源分配方法的各实施步骤一一对应,由于实施例1中已经进行了详尽的描述,本实施例中部分未体现的细节可以参考实施例1,在此不再过多赘述。
实施例3
根据本申请实施例,还提供了一种非易失性存储介质,该非易失性存储介质包括存储的程序,其中,非易失性存储介质所在设备通过运行该程序执行实施例1中的显存资源分配方法。
可选地,非易失性存储介质所在设备通过运行该程序执行实现以下步骤:响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值;向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。
根据本申请实施例,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行实施例1中的显存资源分配方法。
可选地,程序运行时执行实现以下步骤:响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值;向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。
根据本申请实施例,还提供了一种电子设备,该电子设备包括:存储器和处理器,其中,存储器中存储有计算机程序,处理器被配置为通过计算机程序执行实施例1中的显存资源分配方法。
可选地,处理器被配置为通过计算机程序执行实现以下步骤:响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;预估推理任务需占用的第一显存资源值,从图形处理器虚拟资源池中为推理任务分配第一显存资源值的显存资源;运行推理任务,监控推理任务运行过程中所占用的显存资源值的变化状态,并依据变化状态确定推理任务运行过程中需占用的最大显存资源值;向图形处理器虚拟资源池返还第一显存资源值的显存资源,并重新从图形处理器虚拟资源池中为推理任务分配最大显存资源值的显存资源。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种显存资源分配方法,其特征在于,包括:
响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;
预估所述推理任务需占用的第一显存资源值,从所述图形处理器虚拟资源池中为所述推理任务分配所述第一显存资源值的显存资源;
运行所述推理任务,监控所述推理任务运行过程中所占用的显存资源值的变化状态,并依据所述变化状态确定所述推理任务运行过程中需占用的最大显存资源值;
向所述图形处理器虚拟资源池返还所述第一显存资源值的显存资源,并重新从所述图形处理器虚拟资源池中为所述推理任务分配所述最大显存资源值的显存资源。
2.根据权利要求1所述的方法,其特征在于,与图形处理器虚拟资源池建立连接,包括:
调用动态链接库中的查询接口与虚拟图形处理器驱动模块建立连接;
通过所述虚拟图形处理器驱动模块与所述图形处理器虚拟资源池建立连接。
3.根据权利要求1所述的方法,其特征在于,预估所述推理任务需占用的第一显存资源值,包括:
预估所述推理任务中的模型参数需占用的第一子显存资源值、模型参数的梯度需占用的第二子显存资源值、优化器需占用的第三子显存资源值和中间激活值需占用的第四子显存资源值;
对所述第一子显存资源值、所述第二子显存资源值、所述第三子显存资源值和所述第四子显存资源值求和,得到所述第一显存资源值。
4.根据权利要求1所述的方法,其特征在于,在从所述图形处理器虚拟资源池中为所述推理任务分配所述第一显存资源值的显存资源之前,所述方法还包括:
确定所述图形处理器虚拟资源池中的可用显存资源值;
在所述第一显存资源值不超过所述可用显存资源值时,从所述图形处理器虚拟资源池中为所述推理任务分配所述第一显存资源值的显存资源;
在所述第一显存资源值超过所述可用显存资源值时,重新确定所述第一显存资源值。
5.根据权利要求1所述的方法,其特征在于,监控所述推理任务运行过程中所占用的显存资源值的变化状态,包括:
依据多个不同的时间间隔分别周期性采集所述推理任务运行过程中所占用的显存资源值,得到多个随时间变化的显存资源占用值序列。
6.根据权利要求5所述的方法,其特征在于,依据所述变化状态确定所述推理任务运行过程中需占用的最大显存资源值,包括:
以队列格式存储多个所述显存资源占用值序列,并依据先进先出原则比较各个所述显存资源占用值序列中的值;
在发现多个所述显存资源占用值序列中的相同值时,判断所述相同值是否满足预设条件,其中,所述预设条件包括:在每个所述显存资源占用值序列中,所述相同值的上一值与所述相同值之间的斜率为正,所述相同值的下一值与所述相同值之间的斜率为负;
若满足,则确定所述相同值为所述最大显存资源值;
若不满足,则继续确定下一个相同值,并确定下一个相同值是否满足所述预设条件,直至确定满足所述预设条件的相同值。
7.根据权利要求5所述的方法,其特征在于,依据所述变化状态确定所述推理任务运行过程中需占用的最大显存资源值,包括:
对于每个所述显存资源占用值序列,依据目标映射函数对所述显存资源占用值序列中的每个值进行映射处理,得到目标映射序列,其中,所述目标映射函数是依据所述推理任务运行过程中占用显存资源的变化率确定的;
以链表格式存储多个所述目标映射序列,其中,所述链表格式中包括多个节点,每个节点中包括数据域和指针域,所述数据域用于存储映射值和所述映射值在所述目标映射序列中的出现频次,所述指针域用于存储指向下一节点的地址;
遍历多个所述目标映射序列,确定每个所述目标映射序列中的最大值;
若每个所述目标映射序列中的所述最大值全部相同,则确定所述最大值为所述最大显存资源值。
8.一种显存资源分配装置,其特征在于,包括:
连接模块,用于响应于创建推理任务的创建指令,与图形处理器虚拟资源池建立连接;
第一分配模块,用于预估所述推理任务需占用的第一显存资源值,从所述图形处理器虚拟资源池中为所述推理任务分配所述第一显存资源值的显存资源;
确定模块,用于运行所述推理任务,监控所述推理任务运行过程中所占用的显存资源值的变化状态,并依据所述变化状态确定所述推理任务运行过程中需占用的最大显存资源值;
第二分配模块,用于向所述图形处理器虚拟资源池返还所述第一显存资源值的显存资源,并重新从所述图形处理器虚拟资源池中为所述推理任务分配所述最大显存资源值的显存资源。
9.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,所述非易失性存储介质所在设备通过运行所述程序执行权利要求1至7中任意一项所述的显存资源分配方法。
10.一种电子设备,其特征在于,包括:存储器和处理器,其中,所述存储器中存储有计算机程序,所述处理器被配置为通过所述计算机程序执行权利要求1至7中任意一项所述的显存资源分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697912.XA CN116010092A (zh) | 2022-12-28 | 2022-12-28 | 显存资源分配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697912.XA CN116010092A (zh) | 2022-12-28 | 2022-12-28 | 显存资源分配方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010092A true CN116010092A (zh) | 2023-04-25 |
Family
ID=86031291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211697912.XA Pending CN116010092A (zh) | 2022-12-28 | 2022-12-28 | 显存资源分配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010092A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349032A (zh) * | 2023-12-05 | 2024-01-05 | 城云科技(中国)有限公司 | 一种提高大语言模型吞吐量的方法及装置 |
CN117573371B (zh) * | 2024-01-09 | 2024-03-29 | 支付宝(杭州)信息技术有限公司 | 一种对于基于图形处理器运行的服务的调度方法和装置 |
-
2022
- 2022-12-28 CN CN202211697912.XA patent/CN116010092A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349032A (zh) * | 2023-12-05 | 2024-01-05 | 城云科技(中国)有限公司 | 一种提高大语言模型吞吐量的方法及装置 |
CN117349032B (zh) * | 2023-12-05 | 2024-02-20 | 城云科技(中国)有限公司 | 一种提高大语言模型吞吐量的方法及装置 |
CN117573371B (zh) * | 2024-01-09 | 2024-03-29 | 支付宝(杭州)信息技术有限公司 | 一种对于基于图形处理器运行的服务的调度方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116010092A (zh) | 显存资源分配方法及装置 | |
CN108052384B (zh) | 一种任务处理方法、服务平台及电子设备 | |
CN112559182B (zh) | 资源分配方法、装置、设备及存储介质 | |
US9027020B2 (en) | Data and state threading for virtualized partition management | |
JP2022516486A (ja) | リソース管理方法と装置、電子デバイス、及び記録媒体 | |
CN112905326B (zh) | 任务处理方法及装置 | |
CN111143039B (zh) | 一种虚拟机的调度方法、装置及计算机存储介质 | |
CN110795226B (zh) | 利用计算机系统处理任务的方法、电子设备和存储介质 | |
CN115344226B (zh) | 一种虚拟化管理下的投屏方法、装置、设备及介质 | |
CN109800092A (zh) | 一种共享数据的处理方法、装置及服务器 | |
US11593177B2 (en) | Cost-savings using ephemeral hosts in infrastructure as a service environments based on health score | |
CN114564302A (zh) | 一种gpu资源分配方法、系统、设备以及介质 | |
CN111813541B (zh) | 一种任务调度方法、装置、介质和设备 | |
CN110196750B (zh) | 一种设备的分配方法及其相关设备 | |
CN116578416A (zh) | 一种基于gpu虚拟化的信号级仿真加速方法 | |
Bouterse et al. | Performance analysis of the reserve capacity policy for dynamic VM allocation in a SaaS environment | |
CN115421920A (zh) | 金融产品的任务管理方法及装置、电子设备、存储介质 | |
CN115964128A (zh) | 一种异构gpu资源管理和调度方法和系统 | |
Ahrens et al. | PaTraCo: a framework enabling the transparent and efficient programming of heterogeneous compute networks | |
CN115564635A (zh) | 一种gpu资源调度方法、装置、电子设备及存储介质 | |
CN115080253A (zh) | Gpu任务的分配方法、装置、电子设备和存储介质 | |
CN114896070A (zh) | 一种用于深度学习任务的gpu资源分配方法 | |
CN114564305A (zh) | 一种分布式推理的控制方法、装置、设备及可读存储介质 | |
CN114168294A (zh) | 编译资源分配方法、装置、电子设备及存储介质 | |
CN114116220A (zh) | 一种gpu共享控制方法、gpu共享控制装置及存储介质 |
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 |