一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种资源的分配方法、装置和一种人工智能训练系统与流程

2023-01-15 07:55:50 来源:中国专利 TAG:


1.本发明涉及人工智能训练的技术领域,特别是涉及一种资源的分配方法、装置和一种人工智能训练系统。


背景技术:

2.在人工智能大数据时代,随着数据量的不断增大以及深度学习算法的发展,对计算力的需求也越来越高,随之出现多种类别的高性能设备,如通用的图形处理器。图形处理器算力强但价格昂贵,且现实应用中受多种条件的限制,导致图形处理器的整体利用率较低,相比图形处理器高昂的价格,企业和用户更关心利用率问题,因此业界针对该问题进行了大量的探索,其中以图形处理器共享(复用)尤为甚之。
3.默认的裸图形处理器动态共享模式,在用户提交任务时,不会判断资源是否足够,多用户任务之间会抢占图形处理器资源,以图形处理器显存为例,如果剩余显存不足则会导致oom(out of memory,内(显)存不足时产生的错误码),进而可能导致用户的任务都失败退出。
4.为了解决资源抢占oom问题,业界通常利用k8s(kubernetes)或者容器管理系统来管理图形处理器资源,并结合pod(节点)或者容器使用。启动图形处理器任务时管理系统首先会判断图形处理器空闲资源是否满足任务需要的图形处理器资源,如果满足则根据调度策略会在相应节点上创建运行容器并分配图形处理器资源给该容器,然后运行图形处理器任务,结束后会回收容器和对应的图形处理器资源。
5.此类模式只能通过界面启动任务,不可通过底层命令行启动任务,一旦用户在底层操作会造成图形处理器资源的混乱,且此类模式每次启动任务都需要创建容器,不利于用户编辑和调试脚本。为此业界通常采用开发环境方式来共享图形处理器。
6.用户需要先创建开发环境,同时将cpu(central processing unit,中央处理器)、图形处理器资源与用户开发环境进行绑定,开发环境创建成功,相应的图形处理器资源就会绑定,即预分配模式,该模式下用户可以以shell方式登录开发环境,开发调试比较便捷,但该模式最大的弊端就是灵活性差、图形处理器资源空闲概率大,原因是预分配的图形处理器资源,即使用户不使用时,其他用户也无法使用,导致节点整体图形处理器资源的利用率低下。


技术实现要素:

7.鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种资源的分配方法、装置和一种人工智能训练系统,包括:一种资源的分配方法,应用于人工智能训练系统,所述人工智能训练系统包括客户端插件库和至少一个节点,每个节点中创建有多个开发环境,所述方法包括:当检测到目标开发环境中的目标训练任务启动时,从所述客户端插件库中获取目标图形处理器请求;其中,所述目标图形处理器请求为所述客户端插件库在检测到目标开
发环境中的目标训练任务启动时,重定向所述目标训练任务的目标深度学习框架的加载流程后生成的;响应于所述目标图形处理器请求,为所述目标训练任务分配图形处理器资源。
8.可选地,所述响应于所述目标图形处理器请求,为所述目标训练任务分配图形处理器资源,包括:确定预先为所述目标开发环境配置的目标图形处理器配额;根据所述目标图形处理器配额和所述目标图形处理器请求,为所述目标训练任务分配图形处理器资源。
9.可选地,所述方法还包括:接收用户针对各开发环境输入的图形处理器配额。
10.可选地,所述目标开发环境对应的目标节点部署对应的图形处理器资源,所述目标图形处理器配额包括目标图形处理器配额个数,所述根据所述目标图形处理器配额和所述目标图形处理器请求,为所述目标训练任务分配图形处理器资源,包括:确定所述目标开发环境的当前已使用图形处理器个数;若所述当前已使用图形处理器个数小于所述目标图形处理器配额个数,则从所述目标节点对应的图形处理器资源中的当前未被所述目标开发环境使用的图形处理器中,为所述目标训练任务分配图形处理器资源;若所述当前已使用图形处理器个数等于所述目标图形处理器配额个数,则从当前被所述目标开发环境使用的图形处理器中,为所述目标训练任务分配图形处理器资源。
11.可选地,所述从当前被所述目标开发环境使用的图形处理器中,为所述目标训练任务分配图形处理器资源,包括:确定所述目标训练任务所需的图形处理器个数;若所述所需的图形处理器个数大于所述当前已使用图形处理器个数时,生成调度失败信息;若所述所需的图形处理器个数不大于所述当前已使用图形处理器个数时,按照任务个数,对当前被所述目标开发环境使用的图形处理器进行排序,并从其中任务个数最小的前n个图形处理器中,为所述目标训练任务分配图形处理器资源;其中,n为所述目标训练任务所需的图形处理器个数。
12.可选地,所述从所述目标节点对应的图形处理器资源中的当前未被所述目标开发环境使用的图形处理器中,为所述目标训练任务分配图形处理器资源,包括:确定当前未被所述目标开发环境使用的图形处理器的当前任务数,并确定当前任务数小于任务数阈值的图形处理器的个数;若所述当前任务数小于任务数阈值的图形处理器的个数,小于所述目标训练任务所需的图形处理器个数,则从所述当前任务数小于任务数阈值的图形处理器,和所述目标开发环境的当前的使用图形处理器中,为所述目标训练任务分配图形处理器资源。
13.若所述当前任务数小于任务数阈值的图形处理器的个数,不小于所述目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器中,为所述目标训练任务分配图形处理器资源。
14.可选地,所述从所述当前任务数小于任务数阈值的图形处理器,和所述目标开发
环境的当前的使用图形处理器中,为所述目标训练任务分配图形处理器资源,包括:根据所述目标训练任务所需的图形处理器个数,和所述目标节点对应的图形处理器资源中的当前未被所述目标开发环境使用的图形处理器的个数,确定重复使用图形处理器个数;若所述当前已使用图形处理器个数小于所述重复使用图形处理器个数,则生成调度失败信息;若所述当前已使用图形处理器个数不小于所述重复使用图形处理器个数,则将所述目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器,以及所述当前任务数小于任务数阈值的图形处理器中,为所述目标训练任务分配图形处理器资源;其中,m为所述重复使用图形处理器个数。
15.可选地,所述方法还包括:生成并存储针对各开发环境的图形处理器资源的分配信息。
16.可选地,所述目标图形处理器配额还包括目标图形处理器显存配额容量,所述根据所述目标图形处理器配额和所述目标图形处理器请求,为所述目标训练任务分配图形处理器资源,还包括:根据所述目标图形处理器显存配额容量,为所述目标训练任务分配图形处理器显存容量。
17.可选地,所述根据所述目标图形处理器显存配额容量,为所述目标训练任务分配图形处理器显存容量,包括:判断在启动所述目标训练任务时,所述目标开发环境中是否已有其他训练任务;若所述目标开发环境中没有其他训练任务,则根据所述目标图形处理器显存配额容量,为所述目标训练任务分配图形处理器显存容量;若所述目标开发环境中已有其他训练任务,则根据所述目标训练任务,确定所述目标开发环境剩余的图形处理器显存配额容量,并根据所述目标开发环境剩余的图形处理器显存配额容量对分配信息进行更新。
18.可选地,所述方法还包括:当检测到所述目标训练任务结束时,回收为所述目标训练任务分配的图形处理器资源。
19.可选地,所述方法还包括:在预设周期内未收到针对所述目标训练任务的心跳信息时,回收为所述目标训练任务分配的图形处理器资源。
20.本发明实施例还提供了一种人工智能训练系统,包括至少一个节点、节点管理器和客户端插件库,每个节点中创建有多个开发环境;所述客户端插件库,用于在检测到目标开发环境中的目标训练任务启动时,重定向所述目标训练任务的目标深度学习框架的加载流程后,生成目标图形处理器请求;将所述目标图形处理器请求发送给所述节点管理器;所述节点管理器,用于响应于所述目标图形处理器请求,为所述目标训练任务分配图形处理器资源;所述目标深度学习框架,采用所述节点管理器分配的图形处理器资源,进行人工
智能训练。
21.可选地,所述节点管理器,用于确定预先为所述目标开发环境配置的目标图形处理器配额;根据所述目标图形处理器配额和所述目标图形处理器请求,为所述目标训练任务分配图形处理器资源。
22.可选地,所述节点管理器包括图形处理器管理模块;所述图形处理器管理模块,用于存储用户针对各开发环境输入的图形处理器配额。
23.可选地,所述目标开发环境对应的目标节点部署对应的图形处理器资源,所述目标图形处理器配额包括目标图形处理器配额个数;所述节点管理器,用于确定所述目标开发环境的当前已使用图形处理器个数;若所述当前已使用图形处理器个数小于所述目标图形处理器配额个数,则从所述目标节点对应的图形处理器资源中的当前未被所述目标开发环境使用的图形处理器中,为所述目标训练任务分配图形处理器资源;若所述当前已使用图形处理器个数等于所述目标图形处理器配额个数,则从当前被所述目标开发环境使用的图形处理器中,为所述目标训练任务分配图形处理器资源。
24.可选地,所述节点管理器,用于确定所述目标训练任务所需的图形处理器个数;若所述所需的图形处理器个数大于所述当前已使用图形处理器个数时,生成调度失败信息;若所述所需的图形处理器个数不大于所述当前已使用图形处理器个数时,按照任务个数,对当前被所述目标开发环境使用的图形处理器进行排序,并从其中任务个数最小的前n个图形处理器中,为所述目标训练任务分配图形处理器资源;其中,n为所述目标训练任务所需的图形处理器个数。
25.可选地,所述节点管理器,用于确定当前未被所述目标开发环境使用的图形处理器的当前任务数,并确定当前任务数小于任务数阈值的图形处理器的个数;若所述当前任务数小于任务数阈值的图形处理器的个数,小于所述目标训练任务所需的图形处理器个数,则从所述当前任务数小于任务数阈值的图形处理器,和所述目标开发环境的当前的使用图形处理器中,为所述目标训练任务分配图形处理器资源;若所述当前任务数小于任务数阈值的图形处理器的个数,不小于所述目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器中,为所述目标训练任务分配图形处理器资源。
26.可选地,所述节点管理器,用于根据所述目标训练任务所需的图形处理器个数,和所述目标节点对应的图形处理器资源中的当前未被所述目标开发环境使用的图形处理器的个数,确定重复使用图形处理器个数;若所述当前已使用图形处理器个数小于所述重复使用图形处理器个数,则生成调度失败信息;若所述当前已使用图形处理器个数不小于所述重复使用图形处理器个数,则将所述目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器,以及所述当前任务数小于任务数阈值的图形处理器中,为所述目标训练任务分配图形处理器资源;其中,m为所述重复使用图形处理器个数。
27.可选地,所述节点管理器包括辅助模块;所述辅助模块,用于对所述节点管理器的分配过程进行记录,生成并存储针对各开发环境的图形处理器资源的分配信息。
28.可选地,所述目标图形处理器配额还包括目标图形处理器显存配额容量;
所述节点管理器,还用于根据所述目标图形处理器显存配额容量,为所述目标训练任务分配图形处理器显存容量。
29.可选地,所述节点管理器,用于判断在启动所述目标训练任务时,所述目标开发环境中是否已有其他训练任务;若所述目标开发环境中没有其他训练任务,则根据所述目标图形处理器显存配额容量,为所述目标训练任务分配图形处理器显存容量;若所述目标开发环境中已有其他训练任务,则根据所述目标训练任务,确定所述目标开发环境剩余的图形处理器显存配额容量,并根据所述目标开发环境剩余的图形处理器显存配额容量对分配信息进行更新。
30.可选地,所述节点管理器,还用于当检测到所述目标训练任务结束时,回收为所述目标训练任务分配的图形处理器资源。
31.可选地,所述节点管理器,还用于在预设周期内未收到针对所述目标训练任务的心跳信息时,回收为所述目标训练任务分配的图形处理器资源。
32.本发明实施例还提供了一种资源的分配装置,应用于人工智能训练系统,所述人工智能训练系统包括客户端插件库和至少一个节点,每个节点中创建有多个开发环境,所述装置包括:请求模块,用于当检测到目标开发环境中的目标训练任务启动时,从所述客户端插件库中获取目标图形处理器请求;其中,所述目标图形处理器请求为所述客户端插件库在检测到目标开发环境中的目标训练任务启动时,重定向所述目标训练任务的目标深度学习框架的加载流程后生成的;分配模块,用于响应于所述目标图形处理器请求,为所述目标训练任务分配图形处理器资源。
33.可选地,所述分配模块,用于确定预先为所述目标开发环境配置的目标图形处理器配额;根据所述目标图形处理器配额和所述目标图形处理器请求,为所述目标训练任务分配图形处理器资源。
34.可选地,所述装置还包括:配额接收模块,用于接收用户针对各开发环境输入的图形处理器配额。
35.可选地,所述目标开发环境对应的目标节点部署对应的图形处理器资源,所述目标图形处理器配额包括目标图形处理器配额个数,所述分配模块,用于确定所述目标开发环境的当前已使用图形处理器个数;若所述当前已使用图形处理器个数小于所述目标图形处理器配额个数,则从所述目标节点对应的图形处理器资源中的当前未被所述目标开发环境使用的图形处理器中,为所述目标训练任务分配图形处理器资源;若所述当前已使用图形处理器个数等于所述目标图形处理器配额个数,则从当前被所述目标开发环境使用的图形处理器中,为所述目标训练任务分配图形处理器资源。
36.可选地,所述分配模块,用于确定所述目标训练任务所需的图形处理器个数;若所述所需的图形处理器个数大于所述当前已使用图形处理器个数时,生成调度失败信息;若所述所需的图形处理器个数不大于所述当前已使用图形处理器个数时,按照任务个数,对当前被所述目标开发环境使用的图形处理器进行排序,并从其中任务个数最小的前n个图形处理器中,为所述目标训练任务分配图形处理器资源;其中,n为所述目标训练任务所需的图形处理器个数。
37.可选地,所述分配模块,用于确定当前未被所述目标开发环境使用的图形处理器的当前任务数,并确定当前任务数小于任务数阈值的图形处理器的个数;若所述当前任务数小于任务数阈值的图形处理器的个数,小于所述目标训练任务所需的图形处理器个数,则从所述当前任务数小于任务数阈值的图形处理器,和所述目标开发环境的当前的使用图形处理器中,为所述目标训练任务分配图形处理器资源;若所述当前任务数小于任务数阈值的图形处理器的个数,不小于所述目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器中,为所述目标训练任务分配图形处理器资源。
38.可选地,所述分配模块,用于根据所述目标训练任务所需的图形处理器个数,和所述目标节点对应的图形处理器资源中的当前未被所述目标开发环境使用的图形处理器的个数,确定重复使用图形处理器个数;若所述当前已使用图形处理器个数小于所述重复使用图形处理器个数,则生成调度失败信息;若所述当前已使用图形处理器个数不小于所述重复使用图形处理器个数,则将所述目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器,以及所述当前任务数小于任务数阈值的图形处理器中,为所述目标训练任务分配图形处理器资源;其中,m为所述重复使用图形处理器个数。
39.可选地,所述装置还包括:分配信息生成模块,用于生成并存储针对各开发环境的图形处理器资源的分配信息。
40.可选地,所述目标图形处理器配额还包括目标图形处理器显存配额容量,所述根据所述分配模块,还用于根据所述目标图形处理器显存配额容量,为所述目标训练任务分配图形处理器显存容量。
41.可选地,所述分配模块,用于判断在启动所述目标训练任务时,所述目标开发环境中是否已有其他训练任务;若所述目标开发环境中没有其他训练任务,则根据所述目标图形处理器显存配额容量,为所述目标训练任务分配图形处理器显存容量;若所述目标开发环境中已有其他训练任务,则根据所述目标训练任务,确定所述目标开发环境剩余的图形处理器显存配额容量,并根据所述目标开发环境剩余的图形处理器显存配额容量对分配信息进行更新。
42.可选地,所述装置还包括:第一回收模块,用于当检测到所述目标训练任务结束时,回收为所述目标训练任务分配的图形处理器资源。
43.可选地,所述装置还包括:第二回收模块,用于在预设周期内未收到针对所述目标训练任务的心跳信息时,回收为所述目标训练任务分配的图形处理器资源。
44.本发明实施例还提供了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上的资源的分配方法。
45.本发明实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上的资源的分配方法。
46.本发明实施例具有以下优点:
本发明实施例中,当检测到目标开发环境中的目标训练任务启动时,将触发客户端插件库的加载;从而,客户端插件库可以重定向目标训练任务的目标深度学习框架的加载流程,以劫持深度学习框架的启动流程,并在此过程生成目标图形处理器请求来请求为目标训练任务分配图形处理器资源。相比于现有技术来说,本发明实施例从深度学习框架的角度入手,分析训练任务启动时,深度学习框架的加载逻辑,通过劫持框架手段实现动态图形处理器共享,方法实现简单且无需修改框架,用户使用时无感知,跟默认的图形处理器共享模式一样灵活。且基于图形处理器动态共享逻辑,将图形处理器资源与开发环境进行解绑,只有用户真正启动训练任务时才分配图形处理器资源,解决了预分配模式下用户空占用图形处理器资源的问题,高效地利用了节点图形处理器资源,提高了节点整体图形处理器资源的利用率。
附图说明
47.为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
48.图1是本发明实施例的一种资源的分配方法的步骤流程图;图2是本发明实施例的另一种资源的分配方法的步骤流程图;图3是本发明实施例的一种图形处理器调度的步骤流程图;图4是本发明实施例的另一种图形处理器调度的步骤流程图;图5是本发明实施例的又一种图形处理器调度的流程示意图;图6是本发明实施例的一种人工智能训练系统的结构示意图;图7是本发明实施例的一种人工智能训练系统的部分结构示意图;图8是本发明实施例的一种资源的分配装置的结构示意图;图9是本发明实施例的一种电子设备的结构示意图;图10是本发明实施例的一种非易失性计算机可读存储介质的示意图。
具体实施方式
49.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
50.为了提高图形处理器资源的利用率,本发明实施例提供了一种资源的分配方法,该方法可以应用于人工智能训练系统;人工智能训练系统可以用于进行任务训练,例如:图像识别的训练等。
51.人工智能训练系统可以包括客户端插件库和至少一个节点,每个节点中创建有多个开发环境,客户端插件库可以用于请求图形处理器资源和任务保活等功能。
52.当检测到目标开发环境中的目标训练任务启动时,将触发客户端插件库的加载;从而,客户端插件库可以重定向目标训练任务的目标深度学习框架的加载流程,以劫持深
度学习框架的启动流程,并在此过程生成目标图形处理器请求来请求为目标训练任务分配图形处理器资源。
53.相比于现有技术来说,本发明实施例从深度学习框架的角度入手,分析训练任务启动时,深度学习框架的加载逻辑,通过劫持框架手段实现动态图形处理器共享,方法实现简单且无需修改框架,用户使用时无感知,跟默认的图形处理器共享模式一样灵活。
54.且基于图形处理器动态共享逻辑,将图形处理器资源与开发环境进行解绑,只有用户真正启动训练任务时才分配图形处理器资源,解决了预分配模式下用户空占用图形处理器资源的问题,高效地利用了节点图形处理器资源,提高了节点整体图形处理器资源的利用率。
55.参照图1,示出了本发明实施例的一种资源的分配方法的步骤流程图,该方法可以应用于人工智能训练系统,人工智能训练系统可以包括客户端插件库和至少一个节点,每个节点中可以创建有多个开发环境。
56.具体地,可以包括如下步骤:步骤101、当检测到目标开发环境中的目标训练任务启动时,从客户端插件库中获取目标图形处理器请求;其中,目标图形处理器请求为客户端插件库在检测到目标开发环境中的目标训练任务启动时,重定向目标训练任务的目标深度学习框架的加载流程后生成的。
57.其中,客户端插件库可以根据实际情况设定,其可以用于请求图形处理器资源和任务保活等功能,还可以用于其他功能,例如:发送训练任务完成消息等,本发明实施例对此不作限制。
58.目标训练任务可以是用户在目标开发环境中发起的训练任务,例如:可以是图像识别的训练任务。
59.目标深度学习框架可以是用户基于需求选择的深度学习框架,例如:caffe、tensorflow、pytorch、mxnet等,本发明实施例对此不作限制。
60.在实际应用中,为了提高了节点整体图形处理器资源的利用率,可以在人工智能训练系统中设置一客户端插件库;在检测到目标开发环境中的目标训练任务启动时,将触发该客户端插件库的加载。
61.此时,客户端插件库可以重定向目标深度学习框架的加载流程,并生成对应的目标图形处理器请求。
62.作为一示例,目标图形处理器请求中可以包括目标训练任务所需要的图形处理器资源、目标开发环境的标识等,本发明实施例对此不作限制。
63.客户端插件库在生成目标图形处理器请求后,可以发送给人工智能训练系统中的节点管理器;节点管理器可以用于图形处理器资源的分配。
64.步骤102、响应于目标图形处理器请求,为目标训练任务分配图形处理器资源。
65.节点管理器在接收到目标图形处理器请求后,可以响应于该目标图形处理器请求,为目标训练任务分配图形处理器资源;例如:将要分配给目标训练任务使用的图形处理器和图形处理器个数、将要分配给目标训练任务使用的显存容量等,本发明实施例对此不作限制。
66.从而,只有在用户真正启动训练任务时才分配图形处理器资源,解决了预分配模
式下用户空占用图形处理器资源的问题,高效地利用了节点图形处理器资源,提高了节点整体图形处理器资源的利用率。
67.作为一示例,在为目标训练任务分配图形处理器资源后,目标深度学习框架可以采用节点管理器为目标训练任务分配图形处理器资源,进行人工智能训练。
68.本发明实施例中,当检测到目标开发环境中的目标训练任务启动时,将触发客户端插件库的加载;从而,客户端插件库可以重定向目标训练任务的目标深度学习框架的加载流程,以劫持深度学习框架的启动流程,并在此过程生成目标图形处理器请求来请求为目标训练任务分配图形处理器资源。相比于现有技术来说,本发明实施例从深度学习框架的角度入手,分析训练任务启动时,深度学习框架的加载逻辑,通过劫持框架手段实现动态图形处理器共享,方法实现简单且无需修改框架,用户使用时无感知,跟默认的图形处理器共享模式一样灵活。且基于图形处理器动态共享逻辑,将图形处理器资源与开发环境进行解绑,只有用户真正启动训练任务时才分配图形处理器资源,解决了预分配模式下用户空占用图形处理器资源的问题,高效地利用了节点图形处理器资源,提高了节点整体图形处理器资源的利用率。
69.参照图2,示出了本发明实施例的另一种资源的分配方法的步骤流程图,可以包括如下步骤:步骤201、当检测到目标开发环境中的目标训练任务启动时,从客户端插件库中获取目标图形处理器请求。
70.在实际应用中,为了提高了节点整体图形处理器资源的利用率,可以在人工智能训练系统中设置一客户端插件库;在检测到目标开发环境中的目标训练任务启动时,将触发该客户端插件库的加载。
71.此时,客户端插件库可以重定向目标深度学习框架的加载流程,并生成对应的目标图形处理器请求。
72.客户端插件库在生成目标图形处理器请求后,可以发送给人工智能训练系统中的节点管理器。
73.步骤202、确定预先为目标开发环境配置的目标图形处理器配额。
74.其中,目标图形处理器配额可以是用户预先针对目标开发环境所设置的、开发环境最大可使用的图形处理器资源,例如:最大可使用的图形处理器个数、显存大小等,本发明实施例对此不作限制。
75.作为一示例,可以预先接收用户针对各开发环境输入的图形处理器配额。
76.在实际应用中,图形处理器调度的前提条件之一是知道训练任务所需要的图形处理器资源,例如:图形处理器个数和显存大小等。但是,在训练任务启动时,该类信息对于节点管理器来说可能是并不知晓的,尤其是需要的图形处理器显存大小。
77.基于此,可以在创建开发环境时,接收用户输入的针对开发环境的图形处理器配额;然后,节点管理器可以对其进行存储,以便在后续需要对目标开发环境中的目标训练任务进行图形处理器资源的分配时,节点管理器还可以基于预先为开发环境配置的图形处理器配额进行图形处理器资源的分配。
78.步骤203、根据目标图形处理器配额和目标图形处理器请求,为目标训练任务分配图形处理器资源。
79.在得到针对目标开发环境的目标图形处理器配额和目标图形处理器请求后,可以基于目标图形处理器配额和目标图形处理器请求来为目标训练任务分配图形处理器资源。
80.例如:如果目标图形处理器请求中包括有目标训练任务所需要的图形处理器资源的信息的话,则可以直接根据目标图形处理器请求来为目标训练任务分配图形处理器资源;但是需要注意的是,如果目标训练任务所需要的图形处理器资源超过了目标图形处理器配额的话,可以表示目标开发环境是无法进行目标训练任务的,此时可以生成调度失败信息,并返回给用户。
81.如果目标图形处理器请求中不包括有目标训练任务所需要的图形处理器资源的信息的话,则可以基于目标图形处理器配额来为目标训练任务分配图形处理器资源,本发明实施例对此不作限制。
82.在本发明一实施例中,目标开发环境对应的目标节点可以部署有对应的图形处理器资源(例如:部署有3个图形处理器,显存大小为5g),目标图形处理器配额包括目标图形处理器配额个数,在根据目标图形处理器配额和目标图形处理器请求,为目标训练任务分配图形处理器资源的时候,可以通过如下子步骤来实现分配过程:子步骤11、确定目标开发环境的当前已使用图形处理器个数。
83.在实际应用中,目标开发环境可能不仅仅在进行目标训练任务,还可能在进行其他训练任务;此时,可以先确定目标开发环境已经使用的图形处理器的个数,也就是目标开发环境当前正在进行的训练任务所使用的图形处理器的个数。
84.子步骤12、若当前已使用图形处理器个数小于目标图形处理器配额个数,则从目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源。
85.在确定目标开发环境的当前已使用图形处理器个数后,可以比较其与目标图形处理器配额个数的大小;如果当前已使用图形处理器个数小于目标图形处理器配额个数的话,可以表示针对目标开发节点的图形处理器个数的配额还有剩余。
86.此时,可以从目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源,以便目标训练任务使用新的图形处理器来进行训练。
87.作为一示例,可以通过如下步骤来实现子步骤12的分配过程:确定当前未被目标开发环境使用的图形处理器的当前任务数,并确定当前任务数小于任务数阈值的图形处理器的个数;若当前任务数小于任务数阈值的图形处理器的个数,小于目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器,和目标开发环境的当前的使用图形处理器中,为目标训练任务分配图形处理器资源。若当前任务数小于任务数阈值的图形处理器的个数,不小于目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源。
88.具体的,可以先确定当前未被目标开发环境使用的图形处理器的当前任务数,并确定当前任务数小于任务数阈值的图形处理器的个数;然后,可以比较当前任务数小于任务数阈值的图形处理器的个数与目标训练任务所需的图形处理器个数的大小。其中,任务数据阈值可以根据实际情况设定,本发明实施例对此不作限制。
89.如果当前任务数小于任务数阈值的图形处理器的个数,小于目标训练任务所需的图形处理器个数的话,可以表示未被目标开发环境使用的图形处理器无法满足目标训练任务的图形处理器资源的需求。
90.此时,可以从当前任务数小于任务数阈值的图形处理器,和目标开发环境的当前的使用图形处理器中,分别为目标训练任务分配图形处理器资源,以便尽可能地通过多个图形处理器来完成目标训练任务。
91.而如果当前任务数小于任务数阈值的图形处理器的个数,不小于目标训练任务所需的图形处理器个数的话,可以表示未被目标开发环境使用的图形处理器可以满足目标训练任务的图形处理器资源的需求。
92.此时,可以从当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源,以便将新的图形处理器分配给目标训练任务。
93.子步骤13、若当前已使用图形处理器个数等于目标图形处理器配额个数,则从当前被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源。
94.而如果当前已使用图形处理器个数等于目标图形处理器配额个数的话,可以表示针对目标开发节点的图形处理器个数的配额没有剩余了。
95.此时,可以从当前被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源。
96.作为一示例,可以通过如下步骤来实现子步骤13的分配过程:确定目标训练任务所需的图形处理器个数;若所需的图形处理器个数大于当前已使用图形处理器个数时,生成调度失败信息;若所需的图形处理器个数不大于当前已使用图形处理器个数时,按照任务个数,对当前被目标开发环境使用的图形处理器进行排序,并从其中任务个数最小的前n个图形处理器中,为目标训练任务分配图形处理器资源;其中,n为目标训练任务所需的图形处理器个数。
97.具体的,可以先确定目标训练任务所需的图形处理器个数;然后,比较目标训练任务所需的图形处理器个数与目标开发环境的当前已使用图形处理器个数的大小关系。
98.如果目标训练任务所需的图形处理器个数大于目标开发环境的当前已使用图形处理器个数的话,可以表示目标开发环境无法满足目标训练任务的图形处理器的资源要求。
99.此时,可以生成调度失败信息,并返回给用户。
100.而如果目标训练任务所需的图形处理器个数不大于目标开发环境的当前已使用图形处理器个数的话,可以表示目标开发环境可以满足目标训练任务的图形处理器的资源要求。
101.此时,可以按照任务个数,对当前被目标开发环境使用的图形处理器进行排序,并从其中任务个数最小的前n个图形处理器中,为目标训练任务分配图形处理器资源;其中,n可以指目标训练任务所需的图形处理器个数。
102.在本发明一实施例中,在从当前任务数小于任务数阈值的图形处理器,和目标开发环境的当前的使用图形处理器中,为目标训练任务分配图形处理器资源的时候,可以通过如下步骤来进行分配的过程:根据目标训练任务所需的图形处理器个数,和目标节点对应的图形处理器资源中
的当前未被目标开发环境使用的图形处理器的个数,确定重复使用图形处理器个数;若当前已使用图形处理器个数小于重复使用图形处理器个数,则生成调度失败信息;若当前已使用图形处理器个数不小于重复使用图形处理器个数,则将目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器,以及当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源;其中,m为重复使用图形处理器个数。
103.具体的,可以先根据目标训练任务所需的图形处理器个数,和目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器的个数,确定需要被重复使用的图形处理器个数,例如:可以用目标训练任务所需的图形处理器个数减去目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器的个数,从而得到需要被重复使用的图形处理器个数。
104.然后,可以比较需要被重复使用的图形处理器个数与目标开发环境的当前已使用图形处理器个数的大小关系。
105.如果目标开发环境的当前已使用图形处理器个数,小于需要被重复使用的图形处理器个数的话,可以表示目标开发环境无法进行目标训练任务;此时可以生成调度失败信息,并发送给用户。
106.而如果目标开发环境的当前已使用图形处理器个数,不小于需要被重复使用的图形处理器个数的话,则可以表示目标开发环境无法进行目标训练任务在分配了新的图形处理器后,可以进行目标训练任务。
107.具体的,可以先确定目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器;然后,可以从目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器,以及当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源。
108.在实际应用中,针对分配过程,还可以生成并存储针对各开发环境的图形处理器资源的分配信息,以便节点管理器可以基于分配信息确定各开发环境的图形处理器的分配情况。
109.如图3,示出了本发明实施例的一种图形处理器调度的步骤流程图:在处理图形处理器请求时,先获取开发环境当前使用的图形处理器个数,记为第一个数;然后基于开发环境的配额,计算开发环境当前可用的新的图形处理器的个数(记为第二个数)=开发环境的配额-第一个数。
110.如果第二个数=0,则可以再判断第一个数是否小于训练任务所需的图形处理器个数(记为第三个数)。如果第一个数小于第三个数,则调度失败。如果第一个数不小于第三个数,则按照任务个数,从小到大对当前被目标开发环境使用的图形处理器进行排序,得到第一集合;然后,从第一集合中选取前第三个数个的图形处理器来为训练任务分配图形处理器资源;此时,即为调度成功。
111.如果第二个数不等于0的话,则可以获取满足条件(当前任务数小于任务数阈值)的前第二个数个新的图形处理器,记为第二集合。如果第二集合中的图形处理器的个数大于第三个数,则直接从第二集合中选取前第三个数个图形处理器来为训练任务分配图形处理器资源;此时,即为调度成功。如果第二集合中的图形处理器的个数不大于第三个数,则从当前任务数小于任务数阈值的图形处理器,和开发环境的当前的使用图形处理器中,为
训练任务分配图形处理器资源。
112.具体的,可以先按照任务个数,从小到大对当前被目标开发环境使用的图形处理器进行排序,得到第三集合;然后根据训练任务所需的图形处理器个数,和节点对应的图形处理器资源中的当前未被开发环境使用的图形处理器的个数,确定重复使用图形处理器个数(记为第四个数)=第三个数-第二个数。
113.如果第四个数大于第三集合的图形处理器的个数,则调度失败;如果第四个数不大于第三集合的图形处理器的个数,则从第二集合和第三集合的前第四个数的图形处理器中为训练任务分配图形处理器资源。
114.在本发明另一实施例中,目标图形处理器配额还包括目标图形处理器显存配额容量,目标图形处理器显存配额容量可以为用户预先输入的。
115.在根据目标图形处理器配额和目标图形处理器请求,为目标训练任务分配图形处理器资源的时候,还可以包括如下子步骤包括:子步骤21、根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量。
116.在实际应用中,目标训练任务所需要的图形处理器显存容量是难以知晓的;因此,在针对目标训练任务分配图形处理器显存容量时,可以直接基于目标图形处理器显存配额容量来为目标训练任务分配图形处理器显存容量。
117.为了避免重复分配,本发明一实施例中,在根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量的时候,可以通过如下步骤实现分配的过程:判断在启动目标训练任务时,目标开发环境中是否已有其他训练任务;若目标开发环境中没有其他训练任务,则根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量;若目标开发环境中已有其他训练任务,则根据目标训练任务,确定目标开发环境剩余的图形处理器显存配额容量,并根据目标开发环境剩余的图形处理器显存配额容量对分配信息进行更新。
118.在为目标训练任务分配图形处理器显存容量时,可以先判断目标开发环境中是否已有其他训练任务。
119.如果在启动目标训练任务时,目标开发环境中没有其他训练任务的话,则可以直接根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量。
120.而如果在启动目标训练任务时,目标开发环境中有其他训练任务的话,由于分配是直接根据目标图形处理器显存配额容量进行的,而目标图形处理器显存配额容量又是目标开发环境所能够使用的最大的图形处理器显存容量,已经不能再分配了。
121.此时,可以不再为目标训练任务分配新的图形处理器显存容量,而是直接调用在先已经分配给目标开发环境的图形处理器显存容量来运行目标训练任务。
122.作为一示例,目标开发环境的图形处理器显存容量是固定的;因此,在将目标开发环境的图形处理器显存容量分配给目标训练任务后,可以根据目标训练任务,确定目标开发环境剩余的图形处理器显存配额容量,并根据目标开发环境剩余的图形处理器显存配额容量对分配信息进行更新。
123.然后,当后续目标开发环境启动了新的训练任务的话,可以先根据分配信息,确定目标开发环境剩余的图形处理器显存配额容量,并基于剩余的图形处理器显存配额容量判
断目标开发环境能否正常运行新的训练任务。
124.如图4,在分配图形处理器时,确定当前所分配的图形处理器是否为新的;如果是,则根据开发环境对应的图形处理器显存配额容量,和当前所调度的图形处理器显存容量,得到开发环境剩余的图形处理器显存配额容量,并在开发环境中添加该图形处理器,以及在对应的图形处理器下添加训练任务的信息。
125.如果不是新的,则在对应的图形处理器下添加训练任务的信息。
126.然后,继续判断下一个分配的图形处理器是否为新的,直至没有分配的图形处理器了。此时,可以按照图形处理器的剩余资源,从大到小的对图形处理器进行排序,并将任务信息添加至超时机制,以判断训练任务是否超时。
127.为了保证图形处理器资源的有效回收,以便其他开发环境/训练任务使用,在本发明一实施例中,还可以包括如下一种或多种的回收图形处理器资源的步骤:第一种:当检测到目标训练任务结束时,回收为目标开发环境分配的图形处理器资源。
128.在实际应用中,如果检测到目标训练任务结束的话,可以回收为目标训练任务分配图形处理器资源;同时,可以跟新目标开发环境对应的分配信息。
129.第二种:在预设周期内未收到针对目标训练任务的心跳信息时,回收为目标训练任务分配的图形处理器资源。
130.客户端插件库在检测到目标训练任务已经开启运行时,可以按照预设周期向节点管理器发送针对目标训练任务的心跳信息。
131.节点管理器如果在预设周期内未收到针对目标训练任务的心跳信息的话,可以表示该目标训练任务可能已经出现异常,此时可以回收为目标训练任务分配的图形处理器资源;同时,可以更新目标开发环境对应的分配信息。
132.如图5,示出了本发明实施例的又一种图形处理器调度的流程示意图:启动训练任务后,运行深度学习框架,触发客户端插件库逻辑;此时,可以获取开发环境的图形处理器配额。
133.如果图形处理器配额为0,则表示该开发环境中的训练任务都不能使用图形处理器资源,本次关于图形处理器的操作出错退出;或者,只能使用中央处理器训练。
134.如果图形处理器配额不为0,则可以确定为训练任务分配的图形处理器个数。
135.如果该图形处理器个数为0,则表示该训练任务不能使用图形处理器,本次关于图形处理器的操作出错退出;或者,只能使用中央处理器训练。
136.如果该图形处理器个数不为0,则可以客户端插件库可以与节点管理器创建通信和心跳上报句柄,并向节点管理器请求图形处理器,并等待节点管理器的响应。
137.如果响应,则分配成功,运行训练任务,并在训练任务结束时,向节点管理器发送任务完成消息。
138.如果不响应,则表示分配失败;此时,可以判断是否是因为资源不足而分配失败。如果是,则继续请求图形处理器;如果不是,则分配失败,任务退出。
139.本发明实施例中,当检测到目标开发环境中的目标训练任务启动时,从客户端插件库中获取目标图形处理器请求;确定预先为目标开发环境配置的目标图形处理器配额;根据目标图形处理器配额和目标图形处理器请求,为目标训练任务分配图形处理器资源;
基于对节点图形处理器资源的超分(即预先为开发环境配置图形处理器配额),解决了用户开发环境空占图形处理器资源的问题,提高了节点图形处理器资源的利用率。
140.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
141.参照图6,示出了本发明实施例的一种人工智能训练系统的结构示意图,可以包括至少一个节点、节点管理器和客户端插件库,每个节点中创建有多个开发环境。
142.客户端插件库,用于在检测到目标开发环境中的目标训练任务启动时,重定向目标训练任务的目标深度学习框架的加载流程后,生成目标图形处理器请求;将目标图形处理器请求发送给节点管理器。
143.在实际应用中,为了提高了节点整体图形处理器资源的利用率,可以在人工智能训练系统中设置一客户端插件库;在检测到目标开发环境中的目标训练任务启动时,将触发该客户端插件库的加载。
144.此时,客户端插件库可以重定向目标深度学习框架的加载流程,并生成对应的目标图形处理器请求。
145.客户端插件库在生成目标图形处理器请求后,可以发送给人工智能训练系统中的节点管理器。
146.在本发明一实施例中,节点管理器,用于响应于目标图形处理器请求,为目标训练任务分配图形处理器资源。
147.节点管理器在接收到目标图形处理器请求后,可以响应于该目标图形处理器请求,为目标训练任务分配图形处理器资源。
148.作为一示例,节点管理器还可以用于确定预先为目标开发环境配置的目标图形处理器配额;根据目标图形处理器配额和目标图形处理器请求,为目标训练任务分配图形处理器资源。
149.作为另一示例,节点管理器可以包括辅助模块;辅助模块,用于对节点管理器的分配过程进行记录。具体的,针对分配过程,辅助模块可以生成并存储针对各开发环境的图形处理器资源的分配信息,以便节点管理器可以基于分配信息确定各开发环境的图形处理器的分配情况。
150.在本发明一实施例中,目标深度学习框架,采用节点管理器分配的图形处理器资源,进行人工智能训练。
151.在为目标训练任务分配图形处理器资源后,目标深度学习框架可以采用节点管理器为目标训练任务分配图形处理器资源,进行人工智能训练。
152.在实际应用中,图形处理器调度的前提条件之一是知道训练任务所需要的图形处理器资源,例如:图形处理器个数和显存大小等。但是,在训练任务启动时,该类信息对于节点管理器来说可能是并不知晓的,尤其是需要的图形处理器显存大小。
153.基于此,可以在创建开发环境时,接收用户输入的针对开发环境的图形处理器配额;然后,节点管理器可以对其进行存储,以便在后续需要对目标开发环境中的目标训练任
务进行图形处理器资源的分配时,节点管理器还可以基于预先为开发环境配置的图形处理器配额进行图形处理器资源的分配。
154.作为一示例,节点管理器可以包括图形处理器管理模块;图形处理器管理模块,用于存储用户针对各开发环境输入的图形处理器配额。
155.在得到针对目标开发环境的目标图形处理器配额和目标图形处理器请求后,节点管理器可以基于目标图形处理器配额和目标图形处理器请求来为目标训练任务分配图形处理器资源。
156.如果目标图形处理器请求中不包括有目标训练任务所需要的图形处理器资源的信息的话,则节点管理器可以基于目标图形处理器配额来为目标训练任务分配图形处理器资源。
157.在本发明一实施例中,目标开发环境对应的目标节点部署对应的图形处理器资源,目标图形处理器配额包括目标图形处理器配额个数;节点管理器,用于确定目标开发环境的当前已使用图形处理器个数;若当前已使用图形处理器个数小于目标图形处理器配额个数,则从目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源;若当前已使用图形处理器个数等于目标图形处理器配额个数,则从当前被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源。
158.在实际应用中,目标开发环境可能不仅仅在进行目标训练任务,还可能在进行其他训练任务;此时,节点管理器可以先确定目标开发环境已经使用的图形处理器的个数,也就是目标开发环境当前正在进行的训练任务所使用的图形处理器的个数。
159.在确定目标开发环境的当前已使用图形处理器个数后,节点管理器可以比较其与目标图形处理器配额个数的大小;如果当前已使用图形处理器个数小于目标图形处理器配额个数的话,可以表示针对目标开发节点的图形处理器个数的配额还有剩余。
160.此时,节点管理器可以从目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源,以便目标训练任务使用新的图形处理器来进行训练。
161.在本发明一实施例中,节点管理器,用于确定当前未被目标开发环境使用的图形处理器的当前任务数,并确定当前任务数小于任务数阈值的图形处理器的个数;若当前任务数小于任务数阈值的图形处理器的个数,小于目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器,和目标开发环境的当前的使用图形处理器中,为目标训练任务分配图形处理器资源;若当前任务数小于任务数阈值的图形处理器的个数,不小于目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源。
162.在实际应用中,节点管理器可以确定当前未被目标开发环境使用的图形处理器的当前任务数,并确定当前任务数小于任务数阈值的图形处理器的个数;若当前任务数小于任务数阈值的图形处理器的个数,小于目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器,和目标开发环境的当前的使用图形处理器中,为目标训练任务分配图形处理器资源。若当前任务数小于任务数阈值的图形处理器的个数,不小于目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器
中,为目标训练任务分配图形处理器资源。
163.具体的,节点管理器可以先确定当前未被目标开发环境使用的图形处理器的当前任务数,并确定当前任务数小于任务数阈值的图形处理器的个数;然后,节点管理器可以比较当前任务数小于任务数阈值的图形处理器的个数与目标训练任务所需的图形处理器个数的大小。
164.如果当前任务数小于任务数阈值的图形处理器的个数,小于目标训练任务所需的图形处理器个数的话,可以表示未被目标开发环境使用的图形处理器无法满足目标训练任务的图形处理器资源的需求。
165.此时,节点管理器可以从当前任务数小于任务数阈值的图形处理器,和目标开发环境的当前的使用图形处理器中,分别为目标训练任务分配图形处理器资源,以便尽可能地通过多个图形处理器来完成目标训练任务。
166.而如果当前任务数小于任务数阈值的图形处理器的个数,不小于目标训练任务所需的图形处理器个数的话,可以表示未被目标开发环境使用的图形处理器可以满足目标训练任务的图形处理器资源的需求。
167.此时,节点管理器可以从当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源,以便将新的图形处理器分配给目标训练任务。
168.若当前已使用图形处理器个数等于目标图形处理器配额个数,则节点管理器可以从当前被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源。
169.而如果当前已使用图形处理器个数等于目标图形处理器配额个数的话,可以表示针对目标开发节点的图形处理器个数的配额没有剩余了。
170.此时,节点管理器可以从当前被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源。
171.在本发明一实施例中,节点管理器,用于确定目标训练任务所需的图形处理器个数;若所需的图形处理器个数大于当前已使用图形处理器个数时,生成调度失败信息;若所需的图形处理器个数不大于当前已使用图形处理器个数时,按照任务个数,对当前被目标开发环境使用的图形处理器进行排序,并从其中任务个数最小的前n个图形处理器中,为目标训练任务分配图形处理器资源;其中,n为目标训练任务所需的图形处理器个数。
172.在实际应用中,节点控制器可以确定目标训练任务所需的图形处理器个数;若所需的图形处理器个数大于当前已使用图形处理器个数时,生成调度失败信息;若所需的图形处理器个数不大于当前已使用图形处理器个数时,按照任务个数,对当前被目标开发环境使用的图形处理器进行排序,并从其中任务个数最小的前n个图形处理器中,为目标训练任务分配图形处理器资源;其中,n为目标训练任务所需的图形处理器个数。
173.具体的,节点管理器可以先确定目标训练任务所需的图形处理器个数;然后,比较目标训练任务所需的图形处理器个数与目标开发环境的当前已使用图形处理器个数的大小关系。
174.如果目标训练任务所需的图形处理器个数大于目标开发环境的当前已使用图形处理器个数的话,可以表示目标开发环境无法满足目标训练任务的图形处理器的资源要求。
175.此时,节点管理器可以生成调度失败信息,并返回给用户。
176.而如果目标训练任务所需的图形处理器个数不大于目标开发环境的当前已使用图形处理器个数的话,可以表示目标开发环境可以满足目标训练任务的图形处理器的资源要求。
177.此时,节点管理器可以按照任务个数,对当前被目标开发环境使用的图形处理器进行排序,并从其中任务个数最小的前n个图形处理器中,为目标训练任务分配图形处理器资源;其中,n可以指目标训练任务所需的图形处理器个数。
178.在本发明一实施例中,节点管理器,用于根据目标训练任务所需的图形处理器个数,和目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器的个数,确定重复使用图形处理器个数;若当前已使用图形处理器个数小于重复使用图形处理器个数,则生成调度失败信息;若当前已使用图形处理器个数不小于重复使用图形处理器个数,则将目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器,以及当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源;其中,m为重复使用图形处理器个数。
179.具体的,节点管理器可以先根据目标训练任务所需的图形处理器个数,和目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器的个数,确定需要被重复使用的图形处理器个数,例如:可以用目标训练任务所需的图形处理器个数减去目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器的个数,从而得到需要被重复使用的图形处理器个数。
180.然后,节点管理器可以比较需要被重复使用的图形处理器个数与目标开发环境的当前已使用图形处理器个数的大小关系。
181.如果目标开发环境的当前已使用图形处理器个数,小于需要被重复使用的图形处理器个数的话,可以表示目标开发环境无法进行目标训练任务;此时节点管理器可以生成调度失败信息,并发送给用户。
182.而如果目标开发环境的当前已使用图形处理器个数,不小于需要被重复使用的图形处理器个数的话,则可以表示目标开发环境无法进行目标训练任务在分配了新的图形处理器后,可以进行目标训练任务。
183.具体的,节点管理器可以先确定目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器;然后,节点管理器可以从目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器,以及当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源。
184.在本发明一实施例中,节点管理器可以包括辅助模块;辅助模块,用于对节点管理器的分配过程进行记录,生成并存储针对各开发环境的图形处理器资源的分配信息。
185.具体的,针对分配过程,辅助模块可以生成并存储针对各开发环境的图形处理器资源的分配信息,以便节点管理器可以基于分配信息确定各开发环境的图形处理器的分配情况。
186.在本发明另一实施例中,目标图形处理器配额还包括目标图形处理器显存配额容量,目标图形处理器显存配额容量可以为用户预先输入的。节点管理器,还用于根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量。
187.在实际应用中,在根据目标图形处理器配额和目标图形处理器请求,为目标训练
任务分配图形处理器资源的时候,还可以包括如下子步骤:根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量。
188.在实际应用中,目标训练任务所需要的图形处理器显存容量是难以知晓的;因此,在针对目标训练任务分配图形处理器显存容量时,可以直接基于目标图形处理器显存配额容量来为目标训练任务分配图形处理器显存容量。
189.为了避免重复分配,本发明一实施例中,在根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量的时候,可以通过如下步骤实现分配的过程:在本发明一实施例中,节点管理器,用于判断在启动目标训练任务时,目标开发环境中是否已有其他训练任务;若目标开发环境中没有其他训练任务,则根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量;若目标开发环境中已有其他训练任务,则根据目标训练任务,确定目标开发环境剩余的图形处理器显存配额容量,并根据目标开发环境剩余的图形处理器显存配额容量对分配信息进行更新。
190.在实际应用中,节点管理器判断在启动目标训练任务时,目标开发环境中是否已有其他训练任务;若目标开发环境中没有其他训练任务,则根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量;若目标开发环境中已有其他训练任务,则根据目标训练任务,确定目标开发环境剩余的图形处理器显存配额容量,并根据目标开发环境剩余的图形处理器显存配额容量对分配信息进行更新。
191.在为目标训练任务分配图形处理器显存容量时,节点管理器可以先判断目标开发环境中是否已有其他训练任务。
192.如果在启动目标训练任务时,目标开发环境中没有其他训练任务的话,则节点管理器可以直接根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量。
193.而如果在启动目标训练任务时,目标开发环境中有其他训练任务的话,由于分配是直接根据目标图形处理器显存配额容量进行的,而目标图形处理器显存配额容量又是目标开发环境所能够使用的最大的图形处理器显存容量,已经不能再分配了。
194.此时,节点管理器可以不再为目标训练任务分配新的图形处理器显存容量,而是直接调用在先已经分配给目标开发环境的图形处理器显存容量来运行目标训练任务。
195.作为一示例,目标开发环境的图形处理器显存容量是固定的;因此,在将目标开发环境的图形处理器显存容量分配给目标训练任务后,可以根据目标训练任务,确定目标开发环境剩余的图形处理器显存配额容量,并根据目标开发环境剩余的图形处理器显存配额容量对分配信息进行更新。
196.然后,当后续目标开发环境启动了新的训练任务的话,节点管理器可以先根据分配信息,确定目标开发环境剩余的图形处理器显存配额容量,并基于剩余的图形处理器显存配额容量判断目标开发环境能否正常运行新的训练任务。
197.为了保证图形处理器资源的有效回收,以便其他开发环境/训练任务使用,在本发明一实施例中,节点管理器,还用于当检测到目标训练任务结束时,回收为目标训练任务分配的图形处理器资源。
198.在实际应用中,如果检测到目标训练任务结束的话,节点管理器可以回收为目标训练任务分配的图形处理器资源;同时,辅助模块可以跟新目标开发环境对应的分配信息。
199.在本发明另一实施例中,节点管理器,还用于在预设周期内未收到针对目标训练任务的心跳信息时,回收为目标训练任务分配的图形处理器资源。
200.客户端插件库在检测到目标训练任务已经开启运行时,可以按照预设周期向节点管理器发送针对目标训练任务的心跳信息。
201.节点管理器如果在预设周期内未收到针对目标训练任务的心跳信息的话,可以表示目标训练任务可能已经出现异常,此时可以回收为目标训练任务分配的图形处理器资源;同时,可以更新目标开发环境对应的分配信息。
202.如图7,示出了本发明实施例的一种人工智能训练系统的部分结构示意图:node manager(节点管理器)和container(开发环境)之间通过通信模块进行通信;两者可以以udp(user datagram protocol,用户数据报协议)进行通信,也可以以ipc(inter-process communication,进程间通信)进行通信。
203.在接收到jobs(分布式任务调度平台)发送来的任务后,将触发深度学习框架(例如:tf、pytorch)启动,深度学习框架的启动将触发client-plugin(客户端控件库)的加载;client-plugin可以向node manager发送请求图形处理器的消息,并等待node manager的分配。
204.当分配完成后,训练任务可以基于所分配的图形处理器资源进行训练;此时,client-plugin可以报上心跳给node manager,并持续更新任务持续的时间。
205.当训练任务完成时,client-plugin可以执行任务的后续操作,例如:向node manager发送task done消息。
206.node manager在接收到请求图形处理器的消息后,可以对该信息进行处理,并对图形处理器资源进行管理,以为训练任务分配图形处理器资源;得到分配策略后,可以进行消息的响应,并向client-plugin发送respone 图形处理器请求。
207.另外,node manager还可以具备超时管理,具体的,node manager可以基于在预设周期内是否收到针对训练任务的心跳信息,来判断是否需要收回为训练任务分配的图形处理器资源;例如:node manager预设了预设周期为5s,如果node manager检测到5s内没有收到训练任务上报的心跳信息,则认为超时;此时,可以收回为训练任务分配的图形处理器资源。
208.需要说明的是,上述资源的分配方法可以应用于上述的人工智能训练系统,本发明实施例提供了一种人工智能训练系统,包括至少一个节点、节点管理器和客户端插件库,每个节点中创建有多个开发环境;客户端插件库,用于在检测到目标开发环境中的目标训练任务启动时,重定向目标训练任务的目标深度学习框架的加载流程后,生成目标图形处理器请求;将目标图形处理器请求发送给节点管理器;节点管理器,用于响应于目标图形处理器请求,为目标训练任务分配图形处理器资源;目标深度学习框架,采用节点管理器分配的图形处理器资源,进行人工智能训练。通过本发明实施例,实现了从深度学习框架的角度入手,分析训练任务启动时,深度学习框架的加载逻辑,通过劫持框架手段实现动态图形处理器共享,方法实现简单且无需修改框架,用户使用时无感知,跟默认的图形处理器共享模式一样灵活。
209.且基于图形处理器动态共享逻辑,将图形处理器资源与开发环境进行解绑,只有用户真正启动训练任务时才分配图形处理器资源,解决了预分配模式下用户空占用图形处
理器资源的问题,高效地利用了节点图形处理器资源,提高了节点整体图形处理器资源的利用率。
210.参照图8,示出了本发明实施例的一种资源的分配装置的结构示意图,应用于人工智能训练系统,人工智能训练系统包括客户端插件库和至少一个节点,每个节点中创建有多个开发环境,具体的,可以包括如下模块:请求模块801,用于当检测到目标开发环境中的目标训练任务启动时,从客户端插件库中获取目标图形处理器请求;其中,目标图形处理器请求为客户端插件库在检测到目标开发环境中的目标训练任务启动时,重定向目标训练任务的目标深度学习框架的加载流程后生成的;分配模块802,用于响应于目标图形处理器请求,为目标训练任务分配图形处理器资源。
211.本发明的一个可选实施例中,分配模块802,用于确定预先为目标开发环境配置的目标图形处理器配额;根据目标图形处理器配额和目标图形处理器请求,为目标训练任务分配图形处理器资源。
212.本发明的一个可选实施例中,装置还包括:配额接收模块,用于接收用户针对各开发环境输入的图形处理器配额。
213.本发明的一个可选实施例中,目标开发环境对应的目标节点部署对应的图形处理器资源,目标图形处理器配额包括目标图形处理器配额个数,分配模块802,用于确定目标开发环境的当前已使用图形处理器个数;若当前已使用图形处理器个数小于目标图形处理器配额个数,则从目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源;若当前已使用图形处理器个数等于目标图形处理器配额个数,则从当前被目标开发环境使用的图形处理器中,为目标训练任务分配图形处理器资源。
214.本发明的一个可选实施例中,分配模块802,用于确定目标训练任务所需的图形处理器个数;若所需的图形处理器个数大于当前已使用图形处理器个数时,生成调度失败信息;若所需的图形处理器个数不大于当前已使用图形处理器个数时,按照任务个数,对当前被目标开发环境使用的图形处理器进行排序,并从其中任务个数最小的前n个图形处理器中,为目标训练任务分配图形处理器资源;其中,n为目标训练任务所需的图形处理器个数。
215.本发明的一个可选实施例中,分配模块802,用于确定当前未被目标开发环境使用的图形处理器的当前任务数,并确定当前任务数小于任务数阈值的图形处理器的个数;若当前任务数小于任务数阈值的图形处理器的个数,小于目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器,和目标开发环境的当前的使用图形处理器中,为目标训练任务分配图形处理器资源;若当前任务数小于任务数阈值的图形处理器的个数,不小于目标训练任务所需的图形处理器个数,则从当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源。
216.本发明的一个可选实施例中,分配模块802,用于根据目标训练任务所需的图形处理器个数,和目标节点对应的图形处理器资源中的当前未被目标开发环境使用的图形处理器的个数,确定重复使用图形处理器个数;若当前已使用图形处理器个数小于重复使用图
形处理器个数,则生成调度失败信息;若当前已使用图形处理器个数不小于重复使用图形处理器个数,则将目标开发环境的当前使用的图形处理器中的任务数最小的前m个图形处理器,以及当前任务数小于任务数阈值的图形处理器中,为目标训练任务分配图形处理器资源;其中,m为重复使用图形处理器个数。
217.本发明的一个可选实施例中,装置还包括:分配信息生成模块,用于生成并存储针对各开发环境的图形处理器资源的分配信息。
218.本发明的一个可选实施例中,目标图形处理器配额还包括目标图形处理器显存配额容量,根据分配模块802,还用于根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量。
219.本发明的一个可选实施例中,分配模块802,用于判断在启动目标训练任务时,目标开发环境中是否已有其他训练任务;若目标开发环境中没有其他训练任务,则根据目标图形处理器显存配额容量,为目标训练任务分配图形处理器显存容量;若目标开发环境中已有其他训练任务,则根据目标训练任务,确定目标开发环境剩余的图形处理器显存配额容量,并根据目标开发环境剩余的图形处理器显存配额容量对分配信息进行更新。
220.本发明的一个可选实施例中,装置还包括:第一回收模块,用于当检测到目标训练任务结束时,回收为目标训练任务分配的图形处理器资源。
221.本发明的一个可选实施例中,装置还包括:第二回收模块,用于在预设周期内未收到针对目标训练任务的心跳信息时,回收为目标训练任务分配的图形处理器资源。
222.本发明实施例中,当检测到目标开发环境中的目标训练任务启动时,将触发客户端插件库的加载;从而,客户端插件库可以重定向目标训练任务的目标深度学习框架的加载流程,以劫持深度学习框架的启动流程,并在此过程生成目标图形处理器请求来请求为目标训练任务分配图形处理器资源。相比于现有技术来说,本发明实施例从深度学习框架的角度入手,分析训练任务启动时,深度学习框架的加载逻辑,通过劫持框架手段实现动态图形处理器共享,方法实现简单且无需修改框架,用户使用时无感知,跟默认的图形处理器共享模式一样灵活。且基于图形处理器动态共享逻辑,将图形处理器资源与开发环境进行解绑,只有用户真正启动训练任务时才分配图形处理器资源,解决了预分配模式下用户空占用图形处理器资源的问题,高效地利用了节点图形处理器资源,提高了节点整体图形处理器资源的利用率。
223.本发明实施例还提供了一种电子设备,如图9所示,该电子设备9包括处理器901、存储器902及存储在存储器902上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上的资源的分配方法。
224.本发明实施例还提供了一种非易失性计算机可读存储介质,如图10所示,该非易失性计算机可读存储介质10上存储计算机程序1001,计算机程序1001被处理器执行时实现如上的资源的分配方法。
225.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
226.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
227.本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的非易失性计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
228.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
229.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
230.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
231.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
232.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性地包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
233.以上对所提供的一种资源的分配方法、装置和一种人工智能训练系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献