人工智能任务的提交管理方法、装置、设备及介质与流程

文档序号:25378986发布日期:2021-06-08 17:26阅读:124来源:国知局
人工智能任务的提交管理方法、装置、设备及介质与流程

1.本公开涉及人工智能技术领域,更具体的,涉及一种人工智能任务的提交管理方法、装置、设备及介质。


背景技术:

2.随着数据的高速增长,异构计算技术的应用成为近年来备受产业界和学术界关注的话题,异构计算最大的优势在于其可以带来更高的运算效率、更高的性价比与更低的延迟。因此,异构计算技术成为了提升机器学习应用开发流程中“人”与“机”的效率的重要途经。
3.然而,现有的异构计算是无法在用户个人的计算机上运行,因此,用户需要把自己的任务放到远端集群里的机器上运行。目前业界最常见的是通过一种计算框架,例如tensorflow、pytorch等计算框架来描述任务,并预先将资源划分给用户后,将该任务提交至远端集群,然而,这种预分配资源的模式不支持将资源快速分享给其他用户,从而造成资源浪费,而且,当有多个用户多个任务时,不同的任务间缺少隔离手段,互相之间不兼容会导致任务运行失败。


技术实现要素:

4.本公开实施例的一个目的是提供一种人工智能任务的提交管理的新的技术方案。
5.根据本公开的第一方面,提供一种人工智能任务的提交管理方法,其包括:
6.根据人工智能任务的任务类型,创建人工智能任务;
7.接收人工智能任务中各实例;
8.分别创建人工智能任务中各实例所在的各容器;以及,
9.在对应的所述各容器中运行所述各实例。
10.可选地,所述接收人工智能任务中各实例,包括:
11.通过用户组创建命令为提交所述人工智能任务的用户创建用户组;
12.获取为所述用户组所分配的工作节点;
13.获取所述人工智能任务中各实例的资源需求;
14.根据所述各实例的资源需求,从所分配的工作节点中选取至少一个工作节点;
15.基于所述至少一个工作节点接收所述人工智能任务中各实例。
16.可选地,所述在对应的所述各容器中运行所述各实例,包括:
17.基于为所述各实例分配的工作节点,在对应的所述各容器中运行所述各实例。
18.可选地,所述人工智能任务的任务类型包括人工智能开发任务和人工智能训练任务。
19.可选地,所述人工智能任务为人工智能开发任务,
20.所述创建人工智能任务,包括:
21.通过第一任务创建命令创建人工智能开发任务。
22.可选地,所述人工智能开发任务中各实例为各人工智能开发实例,
23.所述方法还包括:
24.在对应的各容器中运行各人工智能开发实例期间,通过任务暂停命令暂停任一所述容器中所述人工智能开发实例的运行。
25.可选地,所述人工智能开发任务中各实例为各人工智能开发实例,
26.所述方法还包括:
27.在对应的各容器中运行各人工智能开发实例之后,获得人工智能训练程序;
28.通过提交命令将所述人工智能训练程序保存为镜像文件。
29.可选地,所述方法还包括:
30.将所述镜像文件保存至预定存储空间中的第一设定文件夹中;
31.其中,所述第一设定文件夹为为提交所述人工智能开发任务的用户所创建的私有文件夹。
32.可选地,所述人工智能任务为人工智能训练任务,
33.所述创建人工智能任务,包括:
34.通过第二任务创建命令创建人工智能训练任务。
35.可选地,所述方法还包括:
36.将用于训练所述人工智能训练程序的训练数据保存至第二设定文件夹;
37.其中,所述第二设定文件夹被所有用户所共享。
38.可选地,所述人工智能训练任务中各实例为各人工智能训练实例,
39.所述在对应的各容器中运行各实例,包括:
40.从所述第一设定文件夹中获取所述镜像文件;以及,
41.从所述第二设定文件夹中获取所述训练数据;
42.基于为所述各人工智能训练实例分配的工作节点,在对应的所述各容器中运行所述各人工智能训练实例,以利用所述训练数据对所述镜像文件进行训练,获得人工智能模型。
43.可选地,在基于为所述各人工智能训练实例分配的工作节点,在对应的所述各容器中运行所述各人工智能训练实例期间,所述方法还包括:
44.通过第一任务查看命令查看所述各人工智能训练实例的运行状态信息;和/或,
45.通过第二任务查看命令查看所述各人工智能训练实例的运行日志信息;和/或,
46.通过第三任务查看命令查看运行所述各人工智能训练实例的工作节点,及所述各人工智能训练实例的资源使用信息。
47.可选地,在基于为所述各人工智能训练实例分配的工作节点,在对应的所述各容器中运行所述各人工智能训练实例期间,所述方法还包括:
48.针对所述各人工智能训练实例的资源使用信息,对所述各人工智能训练实例所需的资源进行动态调整。
49.根据本公开的第二方面,还提供一种人工智能任务的提交管理装置,其包括:
50.第一创建模块,用于根据人工智能任务的任务类型,创建人工智能任务;
51.接收模块,用于接收人工智能任务中各实例;
52.第二创建模块,用于分别创建人工智能任务中各实例所在的各容器;以及,
53.运行模块,用于在对应的所述各容器中运行所述各实例。
54.可选地,所述接收模块,具体用于:
55.通过用户组创建命令为提交所述人工智能任务的用户创建用户组;
56.获取为所述用户组所分配的工作节点;
57.获取所述人工智能任务中各实例的资源需求;
58.根据所述各实例的资源需求,从所分配的工作节点中选取至少一个工作节点;
59.基于所述至少一个工作节点接收所述人工智能任务中各实例。
60.可选地,所述运行模块,具体用于:
61.基于为所述各实例分配的工作节点,在对应的所述各容器中运行所述各实例。
62.可选地,所述人工智能任务的任务类型包括人工智能开发任务和人工智能训练任务。
63.可选地,所述人工智能任务为人工智能开发任务,所述创建模块,具体用于:
64.通过第一任务创建命令创建人工智能开发任务。
65.可选地,所述人工智能开发任务中各实例为各人工智能开发实例,所述装置还包括停止模块,用于:
66.在对应的各容器中运行各人工智能开发实例期间,通过任务暂停命令暂停任一所述容器中所述人工智能开发实例的运行。
67.可选地,所述人工智能开发任务中各实例为各人工智能开发实例,所述装置还包括获取模块,用于:
68.在对应的各容器中运行各人工智能开发实例之后,获得人工智能训练程序;
69.通过提交命令将所述人工智能训练程序保存为镜像文件。
70.可选地,所述装置还包括存储模块,用于:
71.将所述镜像文件保存至预定存储空间中的第一设定文件夹中;
72.其中,所述第一设定文件夹为为提交所述人工智能开发任务的用户所创建的私有文件夹。
73.可选地,人工智能任务为人工智能训练任务,所述创建模块,具体用于:
74.通过第二任务创建命令创建人工智能训练任务。
75.可选地,所述存储模块,还用于:
76.将用于训练所述人工智能训练程序的训练数据保存至第二设定文件夹;
77.其中,所述第二设定文件夹被所有用户所共享。
78.可选地,所述人工智能训练任务中各实例为各人工智能训练实例,所述运行模块,具体用于:
79.从所述第一设定文件夹中获取所述镜像文件;以及,
80.从所述第二设定文件夹中获取所述训练数据;
81.基于为所述各人工智能训练实例分配的工作节点,在对应的所述各容器中运行所述各人工智能训练实例,以利用所述训练数据对所述镜像文件进行训练,获得人工智能模型。
82.可选地,所述装置还包括查看模块,所述查看模块在基于为所述各人工智能训练实例分配的工作节点,在对应的所述各容器中运行所述各人工智能训练实例期间,用于:
83.通过第一任务查看命令查看所述各人工智能训练实例的运行状态信息;和/或,
84.通过第二任务查看命令查看所述各人工智能训练实例的运行日志信息;和/或,
85.通过第三任务查看命令查看运行所述各人工智能训练任务的工作节点,及所述各人工智能训练任务的资源使用信息。
86.可选地,所述查看模块在基于为所述各人工智能训练实例分配的工作节点,在对应的所述各容器中运行所述各人工智能训练实例期间,还用于:
87.针对所述各人工智能训练实例的资源使用信息,对所述各人工智能训练实例所需的资源进行动态调整。
88.根据本公开的第三方面,还提供一种包括至少一个计算装置和至少一个存储装置的设备,其中,所述至少一个存储装置用于存储指令,所述指令用于控制所述至少一个计算装置执行根据以上第一方面所述的方法;或者,所述设备通过所述计算装置和所述存储装置实现根据以上第二方面所述的装置。
89.根据本公开的第四方面,还提供一种计算机可读存储介质,其中,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如以上第一方面所述的方法。
90.本公开的一个有益效果在于,根据本公开实施例的方法、装置、设备及介质,其会为人工智能任务中的各实例创建对应的容器,在该容器内可以挂载不同的计算框架,从而为不同任务以及同一任务不同实例之间提供隔离,使得不同任务以及同一任务不同实例之间不会相互干扰。而且,由于其是在容器内运行实例,从而用户可随时暂停容器的运行以释放资源,并将该资源快速分享给其他用户,避免了该任务占用资源而造成的资源浪费。
附图说明
91.被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
92.图1是根据本公开实施例的电子设备的硬件结构示意图;
93.图2是根据本公开实施例的人工智能任务的提交管理方法的流程示意图;
94.图3是根据本公开实施例的任务队列的示意图;
95.图4是根据本公开实施例的资源分配的原理框图;
96.图5是根据本公开实施例的人工智能任务的提交管理装置的原理框图;
97.图6是根据本公开实施例的电子设备的原理框图;
98.图7是根据本公开另一实施例的电子设备的硬件结构示意图。
具体实施方式
99.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
100.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
101.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
102.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
103.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
104.<硬件配置>
105.本公开实施例的方法可以由至少一台电子设备实施,即,用于实施该方法的装置5000可以布置在该至少一台电子设备上。图1示出了任意电子设备的硬件结构。图1所示的电子设备可以是便携式电脑、台式计算机、工作站、服务器等,也可以是任意的具有处理器等计算装置和存储器等存储装置的其他设备,在此不做限定。
106.如图1所示,该电子设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100用于执行计算机程序。该计算机程序可以采用比如x86、arm、risc、mips、sse等架构的指令集编写。存储器1200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括usb接口、耳机接口等。通信装置1400例如能够进行有线或无线通信,具体地可以包括wifi通信、蓝牙通信、2g/3g/4g/5g通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。电子设备1000可以通过扬声器1700输出语音信息,及可以通过麦克风1800采集语音信息等。
107.图1所示的电子设备仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。应用于本公开的实施例中,电子设备1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本公开实施例的人工智能任务的提交管理方法。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
108.在一个实施例中,提供了一种包括至少一个计算装置和至少一个存储装置的设备,该至少一个存储装置用于存储指令,该指令用于控制该至少一个计算装置执行根据本公开任意实施例的方法。
109.该设备可以包括至少一台图1所示的电子设备1000,以提供至少一个例如是处理器的计算装置和至少一个例如是存储器的存储装置,在此不做限定。
110.<方法实施例>
111.图2是根据本公开实施例的人工智能任务的提交管理方法的流程示意图,该方法由电子设备1000执行,如图2所示,该方法可以包括如下步骤s2100~s2400:
112.步骤s2100,根据人工智能任务的任务类型,创建人工智能任务。
113.任务job是任务运行的总单位,也是用户所提交的最小单位,用户每次提交为一个任务job,用户提交任务job后,电子设备会自动为该任务job生成一个job id,该job id可以作为查找该任务job的索引。通常,一个任务job中包括一个或多个实例task,其中,在一个任务job中包括多个实例task的情况下,该多个实例task之间互相关联。
114.人工智能任务的任务类型可以包括人工智能开发任务和人工智能训练任务。其中,人工智能开发任务的作用在于开发出人工智能训练程序,人工智能训练任务的作用在于执行开发出来的人工智能训练程序以获得人工智能模型。例如,可以是执行人工智能开
发任务以开发出一个反洗钱训练程序,并接续执行人工智能训练任务对该反洗钱训练程序进行训练以获得反洗钱模型;又例如,也可以是执行人工智能开发任务以开发出一个反欺诈训练程序,并接续执行人工智能训练任务以对该反欺诈训练程序进行训练以获得反欺诈模型。即,本实施例中,其区分人工智能开发和人工智能训练这两个流程,分别提供两种不同类型的任务,满足用户需求。
115.在一个例子中,在人工智能任务为人工智能开发任务的情况下,本步骤s2100中创建人工智能任务可以进一步包括:通过第一任务创建命令创建人工智能开发任务。
116.该第一任务创建命令可以是hsctl create lab命令。
117.可以理解的是,现有技术中,其采用预分配资源的模式,即,在提交人工智能任务时需要准确描述该人工智能任务所需的机器节点ip、cpu核数、gpu(graphics processing unit)设备号、gpu显存量和内存量等计算资源信息,即,为人工智能任务预分配计算资源,这个计算资源是硬性限制,例如每个人工智能任务分配1台机器8张gpu卡,该1台机器8张gpu卡被该人工智能任务所独享,并不支持将这部分资源共享给其他任务,即,不能将该1台机器8张gpu卡共享给其他任务,从而造成了资源浪费。然而,全流程看人工智能开发阶段和人工智能训练阶段这两个阶段,其对资源的要求是不同的,人工智能训练阶段所需资源量往往多于人工智能开发阶段所需的资源量,而且,人工智能开发阶段的特点是开发过程可能耗时非常长,用户并非全天候在进行开发,期间会有多次中断暂停,如果是预分配资源的模式,用户无法频繁操作以释放资源,保留开发现场,导致用户往往会直接申请满足人工智能开发阶段和人工智能训练阶段这两个阶段的资源量以在开发过程使用,这样就造成资源浪费。
118.本例子中,其可以利用hsctl create lab命令创建人工智能开发任务,即,所创建出的人工智能开发任务为lab任务,并且,根据后续步骤可知,其会为人工智能开发任务中各人工智能开发实例创建对应的容器,这样,一方面,人工智能开发阶段用户可随时暂停人工智能开发实例所在容器的运行以释放资源,释放掉资源后,其他用户立即可见释放出来的可见资源并使用该可见资源运行自身任务。另一方面,人工智能开发实例所对应的容器重启后秒级别可恢复资源。
119.在一个例子中,在人工智能任务为人工智能训练任务的情况下,本步骤s2100中创建人工智能任务可以进一步包括:通过第二任务创建命令创建人工智能训练任务。
120.第二任务创建命令可以为hsctl create bash命令。
121.在根据人工智能任务的任务类型,创建人工智能任务后,进入:
122.步骤s2200,接收人工智能任务中各实例。
123.本实施例中,根据以上步骤s2100的介绍可知,一个人工智能任务job中往往会包含多个实例task,例如,一个人工智能开发任务job中包括多个人工智能开发实例task;又例如,一个人工智能训练任务job中包括多个人工智能训练实例task。
124.本实施例中,本步骤s2200中接收人工智能任务中各实例可以进一步包括如下步骤s2210~s2240:
125.步骤s2210,通过用户组创建命令为提交人工智能任务的用户创建用户组。
126.用户组创建命令可以为hsctl queue命令。
127.本步骤s2210中,可以通过hsctl queue命令来实现用户组的创建,在此,可以按照
用户组分配计算资源,一个用户组内的计算资源是动态分配的,同时,由于任务各实例是在容器中运行的,从而能够保证分配过程中同一用户组内不同任务之间相互隔离。
128.步骤s2220,获取为用户组所分配的工作节点。
129.本步骤s2220中,可以为每个用户组配置运行任务各实例的工作节点,使得用户可以向为该用户组所分配的工作节点提交任务。示例性地,可以为用户组1分配工作节点1、工作节点2及工作节点3;为用户组2分配工作节点4、工作节点5及工作节点6等。当然,同一工作节点可以被配置为不同用户组内的工作节点。
130.步骤s2230,获取人工智能任务中各实例的资源需求。
131.本步骤s2230中,以人工智能任务为人工智能训练任务为例,其在提交人工智能训练任务时,不仅会指定该人工智能训练任务所需的python文件(该python文件中包括执行人工智能训练任务的代码信息),还会指定所需的资源需求即计算资源信息,例如人工智能训练任务所需的gpu个数、gpu显存量和npu个数,这里,与现有技术中的在提交任务时,需要将cpu核数、内存量和gpu设备号等硬件资源信息配置在tensorflow代码文件中不同,本实施例中在利用tensorflow等计算框架提交任务时,无需在tensorflow代码文件中指定cpu核数、内存量和gpu设备号等计算资源信息,而是在具体运行时由电子设备自行分配,减少了用户预设的麻烦。
132.步骤s2240,根据各实例的资源需求,从所分配的工作节点中选取至少一个工作节点。
133.本步骤s2240中,可以根据任务中各实例的资源需求,从该任务所在用户组中选取不同的工作节点,以将任务提交至所选取出的工作节点上。
134.步骤s2250,基于至少一个工作节点接收人工智能任务中各实例。
135.根据以上步骤s2210~s2250,其是按照用户组分配计算资源,每个用户组内计算资源是动态分配的,从而避免了资源浪费。
136.本实施例中,也可以通过hsctl queue命令完成队列管理,每个用户组内的任务可以形成任务队列,在该任务队列内,用户提交的任务依次排队,图3为一个容器化的实例在任务队列中的包含关系,其中,tensorflow等计算框架是在容器环境中负责执行计算任务。
137.在接收人工智能任务中各实例之后,进入:
138.步骤s2300,分别创建人工智能任务中各实例所在的各容器。
139.本实施例中,其会为人工智能任务中各实例创建对应的容器,创建时预分配用户所需的计算资源,例如以上所需的gpu个数、gpu显存量和npu个数,通过创建该容器,可以实现不同任务,以及同一任务各实例之间的隔离。
140.在分别创建人工智能任务中各实例所在的各容器后,进入:
141.步骤s2400,在对应的各容器中运行各实例。
142.本实施例中,本步骤s2400中在对应的各容器中运行各实例可以进一步包括:基于为各实例分配的工作节点,在对应的各容器中运行各实例。
143.在一个例子中,在人工智能任务为人工智能开发任务的情况下,人工智能开发任务中各实例为各人工智能开发实例,其在对应的各容器中运行各人工智能开发实例之后,会获得人工智能训练程序,在此,可以通过提交命令将人工智能训练程序保存为镜像文件。
144.提交命令可以是hsctl commit命令。
145.本例子中,可以通过hsctl commit命令将所获得的人工智能训练程序保存为镜像文件。
146.本例子中,在获得以上镜像文件之后,还可以是将镜像文件保存至预定存储空间中的第一设定文件夹中。
147.以上第一设定文件夹为为提交人工智能开发任务的用户所创建的私有文件夹,该私有文件夹中的数据仅支持该用户读写。
148.本例子中,在将人工智能训练程序保存为镜像文件后,由于在后续的人工智能训练阶段,往往需要利用大量的训练数据来训练人工智能训练程序以获得人工智能模型。在此,本例子中,其电子设备中有数据存储系统,在该数据存储系统中,用户可以创建自身的私有文件夹路径/shared/users/,该users可以是用户名,通过该users可以定义不同用户,通过该私有文件夹路径,用户可将所保存的镜像文件保存至对应的私有文件夹中,同时每个用户仅能读写自身用户名下的私有文件夹中的数据,避免私有数据泄露。在此,用户还可以通过hsctl file命令与数据存储系统进行交互,例如利用hsctl file

help命令显示帮助文档,利用hsctl file download source dest命令实现私有文件夹内的数据下载,利用hsctl file upload source dest实现私有文件夹内的数据上传等操作。
149.同时,在该数据存储系统中,还有一个可供所有用户访问的公有文件夹路径/shared/public/,该public可以为公有文件夹的名称,通过该公有文件夹路径,用户可将公用的常用数据集例如各种不同应用场景的训练数据上传至公有文件夹,该不同应用场景例如可以是图像处理场景、语音识别场景、自然语音处理场景、自动控制场景、智能问答场景、业务决策场景、推荐业务场景、搜索场景及异常行为检测场景等,同时所有用户均能读写该公有文件夹中的数据,进而实现数据共享。在此,用户还可以通过hsctl file命令与数据存储系统进行交互,例如利用hsctl file

help命令显示帮助文档,利用hsctl file download source dest命令实现公有文件夹内的数据下载,利用hsctl file upload source dest实现公有文件夹内的数据上传等操作。
150.在一个例子中,在人工智能任务为人工智能训练任务的情况下,该人工智能训练任务中各实例为各人工智能训练实例,在此,本步骤s2400中在对应的各容器中运行各实例可以进一步包括如下步骤s2410~s2430:
151.步骤s2410,从第一设定文件夹中获取镜像文件。
152.该第一设定文件夹可以为以上的私有文件夹。
153.本步骤s2410中,可以从以上的用户的私有文件夹中获取人工智能训练程序所保存成的镜像文件。
154.步骤s2420,从第二设定文件夹中获取训练数据。
155.该第二设定文件夹可以为以上的公有文件夹,该第二设定文件夹被所有用户所共享,在此,用户会预先将用于训练人工智能训练程序的训练数据保存至第二设定文件夹中,以便于在训练阶段从该第二设定文件夹中获取该用于训练人工智能训练程序的训练数据。
156.本步骤s2420中,可以从以上的公有文件夹中获取训练数据。训练数据的数量越多,训练结果也通常越精准,但训练数据达到一定数量后,训练结果的精度的增加将变的越来越缓慢,直至取向稳定。在此,可以兼顾训练结果的精度和数据处理成本确定所需的训练数据的数量。
157.步骤s2430,基于为各人工智能训练实例分配的工作节点,在对应的各容器中运行各人工智能训练实例,以利用训练数据对镜像文件进行训练,获得人工智能模型。
158.本步骤s2430中,可以根据自动机器学习技术通过对训练数据进行特征抽取和特征组合以获得各目标特征后,结合该训练数据对应的真实标签数据生成训练样本,进而利用至少一种模型训练算法,基于训练样本对镜像文件进行训练以获得人工智能模型。
159.根据本公开实施例的方法,其会为人工智能任务中的各实例创建对应的容器,在该容器内可以挂载不同的计算框架,从而为不同任务以及同一任务不同实例之间提供隔离,使得不同任务以及同一任务不同实例之间不会相互干扰。而且,由于其是在容器内运行实例,从而用户可随时暂停容器的运行以释放资源,并将该资源快速分享给其他用户,避免了该任务占用资源而造成的资源浪费。
160.在一个实施例中,在人工智能任务为人工智能开发任务的情况下,该人工智能开发任务中各实例为各人工智能开发实例,在此,本公开人工智能任务的提交管理方法还可以包括:
161.在对应的各容器中运行各人工智能开发实例期间,通过任务暂停命令暂停任一容器中人工智能开发实例的运行。
162.任务暂停命令可以是hsctl stop命令。
163.本实施例中,由于所创建的人工智能开发任务通常为lab任务,在此,在对应的各容器中运行各人工智能开发实例期间,可以通过hsctl stop命令暂停任一容器中人工智能开发实例的运行以释放资源,释放出来的资源可以供用户组内的其他用户使用,进而实现资源共享,避免了资源浪费。
164.在一个实施例中,在人工智能任务为人工智能训练任务的情况下,在根据以上步骤s2430中在基于为各人工智能训练实例分配的工作节点,在对应的各容器中运行各人工智能训练实例期间,本公开人工智能任务的提交管理方法还可以包括:
165.通过第三任务查看命令查看各人工智能训练实例的资源使用信息,并针对各人工智能训练实例的资源使用信息,对各人工智能训练实例所需的资源进行动态调整。
166.第三任务查看命令可以是hsctl info job_usage命令。
167.本实施例中,用户可以通过hsctl info job_usage命令查看人工智能训练任务中各实例的资源使用信息,例如历史消耗的资源量,当前消耗的资源量等,并对各人工智能训练实例所需的资源进行动态调整,以保证各人工智能训练实例均能够正常运行。
168.本实施例中,根据以上针对步骤s2230的分析可知,其仅需指定所需的gpu个数、gpu显存量和npu个数,无需在tensorflow代码文件中指定cpu核数、内存量和gpu设备号等计算资源信息,而是在运行时由电子设备自行分配,例如具体运行在哪个gpu设备上可以由电子设备分配,减少了用户预设的麻烦。在此,为了让用户无需指定cpu核数、内存量和gpu设备号以减少用户预设的麻烦,其是通过虚拟化模块对所有硬件资源进行虚拟化,如图4所示,使其成为最小cpu core(1cpu core)、最小gpu(1gpu)、1mb gpu显存、1mb内存等资源,并且放入资源池中供上层应用统一感知。容器编排时会声明所需的资源,在调度模块进行资源的分配并要到所需的虚拟化后的资源。由于对于需要cpu和内存资源的容器,因为资源的分配是动态调整的,所以对于资源的锁定也是动态的,从而,用户在提交任务时无需预设cpu核数和内存量,而是运行过程中自动调整,减少了用户预设的麻烦,避免了任务因为资
源预设造成运行过程中资源达到限制导致失败的问题。而对于需要gpu的容器目前是静态锁定资源,因为要到的已经不是物理资源,所以用户需要设置gpu个数和gpu显存量,而不需要设置gpu设备号。
169.可以理解的是,当用户提交任务,并在完全调度到资源后,才开始运行任务各实例,在此之前,任务各实例处于等待状态,一旦资源调度成功,任务各实例开始自动运行,用户无需操作,该策略可以称之为all or nothing的调度策略。
170.根据本实施例,用户可以免于设置资源,而是在任务各实例运行过程中针对资源使用情况进行动态调整,避免资源浪费。
171.在一个实施例中,在人工智能任务为人工智能训练任务的情况下,在根据以上步骤s2430中在基于为各人工智能训练实例分配的工作节点,在对应的各容器中运行各人工智能训练实例期间,本公开人工智能任务的提交管理方法还可以包括:
172.第一方面,通过第一任务查看命令查看各人工智能训练实例的运行状态信息。
173.第一任务查看命令可以是hsctl list jobs命令。
174.该方面中,可以通过hsctl list jobs命令查看人工智能训练任务中各人工智能训练实例的运行状态信息,例如但不限于包括处于等待(waiting)状态的人工智能训练实例、处于运行(running)状态的人工智能训练实例、处于杀死(killed)状态的人工智能训练实例、处于失败(fail)状态的人工智能训练实例等。
175.第二方面,通过第二任务查看命令查看各人工智能训练实例的运行日志信息。
176.第二任务查看命令可以是hsctl log job命令。
177.该方面中,可以通过hsctl log job命令查看人工智能训练任务中各人工智能训练实例的运行日志信息。
178.第三方面,通过第三任务查看命令查看运行各人工智能训练实例的工作节点,及各人工智能训练实例的资源使用信息。
179.该方面中,可以通过hsctl info job_usage命令查看人工智能训练任务中各人工智能训练实例在哪些工作节点上运行,运行过程中历史消耗的资源量,当前消耗的资源量等资源使用信息。
180.可以理解的是,当资源量不足,人工智能训练实例处于等待(waiting)状态,此时,用户可调整该人工智能训练实例的排队信息,例如可以通过hsctl update命令将该人工智能训练实例插队到最前面,这样当有可用资源时,即可开始运行该人工智能训练实例。
181.根据本实施例,用户可以实时监控资源池可用资源情况和任务各实例运行情况,及时反馈任务调度信息获知任务运行状态,可查看排队信息和插队。
182.<例子>
183.接下来以人工智能任务包括人工智能开发任务和人工智能训练任务为例,示出一个例子的人工智能任务的提交管理方法,该例子中,人工智能任务的提交管理方法可以包括如下步骤:
184.步骤s6010,通过hsctl create lab命令创建人工智能开发任务,并创建该人工智能开发任务各实例所在的容器,指定所需的计算资源,进行整个开发调试过程,以获得人工智能训练程序。
185.步骤s6020,通过hsctl commit命令将该人工智能训练程序保存成镜像文件。
186.本步骤s6020中,可通过hsctl exec命令进入容器完成调试过程,最终通过hsctl commit命令保存生成一个调试好的镜像文件,在此,可以通过hsctl stop命令释放资源,资源释放后,同用户组内的其他用户便可通过hsctl status命令查看所释放的资源,进而占用这部分资源。
187.步骤s6030,通过hsctl命令和数据存储系统交互,以将所保存的镜像文件存储至用户的私有文件夹。
188.本步骤s6030中,数据存储系统中还包括可供所有用户共享的公有文件夹,该公有文件夹内保存有不同应用场景的训练数据,该不同应用场景可以是以上实施例所提及的应用场景,本例子不做赘述。
189.步骤s6040,通过hsctl bash命令创建人工智能训练任务,并创建人工智能训练任务中各实例所在的各容器。
190.本步骤s6040中,用户可指定所需的python文件,该python文件中包括执行人工智能训练任务的代码信息,在此,其还可以指定所需的计算资源,例如gpu个数、gpu显存量和npu个数。同时,无需在tensorflow代码文件中指定cpu核数、内存量和gpu设备号等计算资源信息,而是在运行时由电子设备自行分配,例如具体运行在哪个gpu设备上可以由电子设备分配,减少了用户预设的麻烦。
191.步骤s6050,基于为各人工智能训练实例分配的工作节点,在对应的各容器中运行各人工智能训练实例,以利用训练数据对镜像文件进行训练,获得人工智能模型。
192.<装置实施例>
193.在本实施例中,还提供一种人工智能任务的提交管理装置5000,如图5所示,人工智能任务的提交管理装置5000包括第一创建模块5100、接收模块5200、第二创建模块5300和运行模块5400,用于实施本实施例中提供的人工智能任务的提交管理方法,该人工智能任务的提交管理装置5000的各模块可以由软件实现,也可以由硬件实现,在此不做限定。
194.第一创建模块5100,用于根据人工智能任务的任务类型,创建人工智能任务。
195.接收模块5200,用于接收人工智能任务中各实例。
196.第二创建模块5300,用于分别创建人工智能任务中各实例所在的各容器。
197.运行模块5400,用于在对应的所述各容器中运行所述各实例。
198.在一个实施例中,接收模块5200,具体用于:通过用户组创建命令为提交所述人工智能任务的用户创建用户组;获取为所述用户组所分配的工作节点;获取所述人工智能任务中各实例的资源需求;根据所述各实例的资源需求,从所分配的工作节点中选取至少一个工作节点;基于所述至少一个工作节点接收所述人工智能任务中各实例。
199.在一个实施例中,运行模块5400,具体用于:基于为所述各实例分配的工作节点,在对应的所述各容器中运行所述各实例。
200.在一个实施例中,所述人工智能任务的任务类型包括人工智能开发任务和人工智能训练任务。
201.在一个实施例中,所述人工智能任务为人工智能开发任务,创建模块5300,具体用于:通过第一任务创建命令创建人工智能开发任务。
202.在一个实施例中,所述人工智能开发任务中各实例为各人工智能开发实例,装置5000还包括停止模块(图中未示出),用于:在对应的各容器中运行各人工智能开发实例期
间,通过任务暂停命令暂停任一所述容器中所述人工智能开发实例的运行。
203.在一个实施例中,所述人工智能开发任务中各实例为各人工智能开发实例,装置5000还包括获取模块(图中未示出),用于:在对应的各容器中运行各人工智能开发实例之后,获得人工智能训练程序;通过提交命令将所述人工智能训练程序保存为镜像文件。
204.在一个实施例中,装置5000还包括存储模块,用于:将所述镜像文件保存至预定存储空间中的第一设定文件夹中。
205.所述第一设定文件夹为为提交所述人工智能开发任务的用户所创建的私有文件夹。
206.在一个实施例中,人工智能任务为人工智能训练任务,创建模块5300,具体用于:通过第二任务创建命令创建人工智能训练任务。
207.在一个实施例中,存储模块,还用于:将用于训练所述人工智能训练程序的训练数据保存至第二设定文件夹。
208.第二设定文件夹被所有用户所共享。
209.在一个实施例中,所述人工智能训练任务中各实例为各人工智能训练实例,运行模块5400,具体用于:从所述第一设定文件夹中获取所述镜像文件;以及,从所述第二设定文件夹中获取所述训练数据;基于为所述各人工智能训练实例分配的工作节点,在对应的所述各容器中运行所述各人工智能训练实例,以利用所述训练数据对所述镜像文件进行训练,获得人工智能模型。
210.在一个实施例中,装置5000还包括查看模块(图中未示出),查看模块在基于为所述各人工智能训练实例分配的工作节点,在对应的所述各容器中运行所述各人工智能训练实例期间,用于:通过第一任务查看命令查看所述各人工智能训练实例的运行状态信息;和/或,通过第二任务查看命令查看所述各人工智能训练实例的运行日志信息;和/或,通过第三任务查看命令查看运行所述各人工智能训练任务的工作节点,及所述各人工智能训练任务的资源使用信息。
211.在一个实施例中,查看模块在基于为所述各人工智能训练实例分配的工作节点,在对应的所述各容器中运行所述各人工智能训练实例期间,还用于:针对所述各人工智能训练实例的资源使用信息,对所述各人工智能训练实例所需的资源进行动态调整。
212.<设备实施例>
213.与上述方法实施例相对应,在本实施例中,还提供一种电子设备,如图6所示,其可以包括根据本公开任意实施例的人工智能任务的提交管理装置5000,用于实施本公开任意实施例的人工智能任务的提交管理方法。
214.如图7所示,该电子设备6000还可以包括处理器6200和存储器6100,该存储器6100用于存储可执行的指令;该处理器6200用于根据指令的控制运行电子设备以执行根据本公开任意实施例的人工智能任务的提交管理方法。
215.以上装置5000的各个模块可以由处理器6200运行该指令以执行根据本公开任意实施例的方法来实现。
216.本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
217.计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形
设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd

rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
218.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
219.用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
220.这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
221.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
222.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产
生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
223.附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
224.以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1