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

实现远程训练的方法及装置与流程

2022-04-02 06:28:08 来源:中国专利 TAG:


1.本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种实现远程训练的方法及装置。


背景技术:

2.在人工智能领域,深度学习(deeplearning)的发展往往通过增大数据集规模及模型参数量,来提高模型的预测准确率,随之而来的是训练过程耗费的计算量和时间的增加。为了减少模型的训练时间、提高模型迭代效率,逐渐开始使用分布式训练代替单卡或单机训练模式。
3.随着分布式训练规模的增大,对集群的要求也越来越高,如果个体或公司维护个人的线下集群,将需要提供较大的实例资源,同时也带来运维、折旧成本的增加,因此,在云端进行大规模的分布式训练成为一种主流的模型训练方式,云端具有足够的能力去维护统一资源池,执行并发的训练任务。
4.然而,目前利用云端资源进行模型训练的方案难以满足更高的实际应用需求,因此,迫切需要一种改进的方案,能够满足这些实际应用需求,包括支持用户实时查看模型训练的执行状态信息,等等。


技术实现要素:

5.本说明书一个或多个实施例描述了一种实现远程训练的方法及装置,在客户端运行训练代码,基于远程方法调用rmi将本地数据传输到远端集群用于训练,从而实时查看集群执行训练的状态信息。
6.根据第一方面,提供一种实现远程训练的方法,包括:客户端运行用于执行模型训练任务的目标训练代码;客户端响应于运行所述目标训练代码产生的对服务器的调用,生成远程训练请求,并将其发送至服务器,所述远程训练请求包括针对所述模型训练任务输入的集群参数;所述服务器根据所述集群参数,申请并配置资源池中的集群资源,得到目标集群;所述目标集群响应于所述客户端运行所述目标训练代码产生的远程方法调用rmi,执行所述模型训练任务中的计算任务。
7.在一个实施例中,所述目标训练代码基于对原始训练代码的适配修改而得到,所述对服务器的调用和所述rmi基于所述适配修改而实现。
8.进一步,在一个具体的实施例中,所述原始训练代码中包括特定的统一计算设备架构cuda操作;所述适配修改包括:自动识别所述cuda操作,并截获其所对应应用程序编程接口api的调用路径,将其设置为在所述服务器进行执行。
9.在一个实施例中,生成远程训练请求,包括:基于所述客户端所绑定用户的身份信息和所述集群参数,生成所述远程训练请求;其中,申请并配置资源池中的集群资源,包括:在所述身份信息通过验证的情况下,申请并配置所述集群资源。
10.在一个实施例中,所述远程训练请求中包括基于所述目标训练代码而构建的语法
树;在执行所述模型训练任务中的计算任务之前,所述方法还包括:所述服务器对所述语法树进行解析和渲染,生成集群的可执行代码;其中,执行所述模型训练任务中的计算任务,包括:通过运行所述可执行代码,执行所述计算任务。
11.在一个实施例中,所述集群参数包括集群需求参数和集群配置参数;其中,所述服务器根据所述集群参数,申请并配置资源池中的集群资源,包括:所述服务器申请所述资源池中匹配所述集群需求参数的集群资源;所述服务器根据所述集群配置参数,对所述集群资源进行所述配置,得到目标集群。
12.进一步,在一个具体的实施例中,所述集群需求参数包括以下中的一项或多项:占用的机器数量、图像处理器gpu卡的数量、中央处理器cpu卡的数量。
13.在另一个具体的实施例中,所述集群配置参数指示集群的训练环境;其中,所述服务器根据所述集群配置参数,对所述集群资源进行所述配置,包括:所述服务器向所述集群资源提供所述训练环境对应的安装文件;所述集群资源通过运行所述安装文件,创建所述训练环境。
14.更进一步,在一个例子中,所述安装文件包括容器docker镜像文件,其中指示将单个训练卡切分为指定数量的多个虚拟卡;所述集群资源通过运行所述安装文件,创建所述训练环境,包括:所述集群资源通过运行所述容器docker镜像文件,将所述集群资源中的某个训练卡切分为所述指定数量的多个虚拟卡。
15.在一个实施例中,所述rmi调用的产生包括:所述客户端通过运行所述目标训练代码,将所述模型训练任务所涉及的任务数据封装为rmi类中的对象,所述rmi类被所述服务器预先注册在rmi注册中心;并且,所述客户端基于所述对象调用所述目标集群中远程对象的目标方法;其中,执行所述模型训练任务中的计算任务,包括:基于所述任务数据,运行所述目标方法以执行所述计算任务。
16.进一步,在一个具体的实施例中,所述目标训练代码基于对原始训练代码的适配修改而得到,所述适配修改包括在所述原始训练代码中添加修饰器;其中,将所述模型训练任务所涉及的任务数据封装为rmi类中的对象,包括:所述修饰器创建所述rmi类;所述修饰器将所述任务数据封装为所述rmi类中的对象。
17.在另一个具体的实施例中,所述任务数据包括模型参数,和/或,训练样本数据。
18.在又一个具体的实施例中,所述集群参数中指示:不使用资源池中的cpu;其中,将所述模型训练任务所涉及的任务数据封装为rmi类中的对象,包括:采用所述客户端所在终端的本地cpu对训练样本数据进行预定处理;将所述预定处理后的训练样本数据封装为所述rmi类中的对象。
19.在一个实施例中,所述方法还包括:所述目标集群将所述计算任务的执行状态信息作为所述rmi调用的返回结果,提供给所述客户端,所述执行状态信息包括以下中的一项或多项:当前训练轮次、训练损失、训练轮次对应的批量样本个数、训练效果的评估指标值。
20.根据第二方面,提供一种实现远程训练的方法,包括:客户端运行用于执行模型训练任务的目标训练代码;客户端响应于运行所述目标训练代码产生的对服务器的调用,生成远程训练请求,并将其发送至服务器,所述远程训练请求包括针对所述模型训练任务输入的集群参数;所述服务器根据所述集群参数,申请并配置资源池中的集群资源,得到目标集群;所述目标集群响应于所述客户端运行所述目标训练代码产生的远程方法调用rmi,执
行所述模型训练任务中的计算任务。
21.根据第三方面,提供一种实现远程训练的系统,包括:客户端,用于运行用于执行模型训练任务的目标训练代码;所述客户端还用于,响应于运行所述目标训练代码产生的对服务器的调用,生成远程训练请求,并将其发送至服务器,所述远程训练请求包括针对所述模型训练任务输入的集群参数;所述服务器,用于根据所述集群参数,申请并配置资源池中的集群资源,得到目标集群;所述目标集群,用于响应于所述客户端运行所述目标训练代码产生的远程方法调用rmi,执行所述模型训练任务中的计算任务。
22.根据第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
23.根据第五方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,该处理器执行所述可执行代码时,实现第一方面的方法。
24.采用本说明书实施例提供的方法和装置,能够实现真正的远程训练,客户端能够实时查看训练进度,而远端进行实际的训练计算,并且,免去实例的购买和部署,以及数据搬迁等流程,资源池按需提供集群资源,从而有效降低客户成本,同时提高了云上集群的利用率。
附图说明
25.为了更清楚地说明本发明实施例的技术方案,下面对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
26.图1示出本说明书实施例披露的实现远程训练的方法步骤图;
27.图2示出根据一个实施例的远程训练调用流程图;
28.图3示出本说明书实施例披露的实现远程训练的系统结构示意图。
具体实施方式
29.下面结合附图,对本说明书提供的方案进行描述。
30.承前所述,云端具有足够的能力去维护统一资源池,执行并发的训练任务。然而,一方面,目前云厂商对于资源的维护供给方式存在不足,比如,通常先针对备选的模型训练任务提前进行机型的配比,然后提供给用户进行选取,导致无法按照用户需求进行定制化设计,也就无法最大化发挥资源池的效能,例如,用户可能希望部分使用客户端本地资源,部分使用云端资源,而目前已有的方案无法解耦使用这两端的资源;另一方面,目前利用云端资源进行模型训练时,通常是在云端跑完整个训练代码,例如,将客户端的训练代码拷贝到云端执行,在训练完成后,再将训练结果发送给客户端,这就导致用户无法实时跟进训练进程,如了解当前执行到第几轮次的迭代训练,以及最近一轮次训练的损失,等等。
31.基于以上,发明人提出一种实现远程训练的方案,可以满足用户实时查看远端训练的状态信息、根据用户的期望配置向资源池动态申请集群资源等实际应用需求,从而充分提高用户体验,发挥资源池的最大效能,显著提高集群资源的利用率。
32.图1示出本说明书实施例披露的实现远程训练的方法步骤图,首先需说明,其中示
出的步骤之间无绝对的先后顺序,只要在逻辑上可以实现即可。如图1所示,所述方法包括以下步骤:
33.步骤s110,客户端运行用于执行模型训练任务的目标训练代码。
34.为便于理解,下面先对目标训练代码的产生方式进行介绍。在一种实施方式中,编写在客户端中的代码并非是上述能够实现远程训练的目标训练代码,而是只能实现本地集群训练的原始训练代码,因此,原始训练代码中不会涉及对服务器和远端集群的调用等与其他方的交互。
35.基于此,需要将原始训练代码修改为上述目标训练代码,在一个实施例中,提供远程训练服务的服务方可以向用户提供修改指引,该修改指引基于服务方预先建立的用于实现远程训练的代码库而编写,为清楚描述,以下将此代码库称为远程深度学习(remote deep learning,简称rdl)库;于是,用户可以根据修改指引对原始训练代码进行手动修改,从而得到上述目标训练代码。
36.在另一个实施例中,可以向用户提供基于rdl库研发的rdl适配包,例如,其形式可以为python的whl包;于是,通过在客户端中导入上述rdl适配包,安装其中包含的文件,即可实现对原始训练代码中部分代码的自动修改,例如,加入对服务器中codeserver接口的定义,又例如,添加与远程方法调用(remote method invocation,简称rmi)相关的代码,或添加用于降低代码修改复杂度的修饰器,再例如,原始训练代码中包括特定的统一计算设备架构(compute unified device architecture,简称cuda)操作cuda操作,如torch.cuda.set.device操作,适配修改还可以包括自动识别所述cuda操作,并截获其所对应应用程序编程接口(application programming interface,简称api)的调用路径,将其设置为在上述服务器进行执行,等等。如此,使得自动修改后的代码能够适配远程训练任务。
37.另一方面,在一个实施例中,还可以先对原始训练代码进行训练加速适配,也即,用于实现训练加速的代码适应性修改,再对训练加速适配后得到的训练代码进行rdl适配,从而得到上述目标训练代码。需说明,训练加速适配可以通过导入相关的适配代码包或手动修改代码实现,训练加速的实现原理主要是:利用基于通信的性能优化技术,提高分布式训练时各机器之间、各gpu卡之间的数据交换效率,从而有效提升训练速度。示例性地,适配代码包中可以包括针对人工智能(artificial intelligence,简称ai)主流计算框架(如tensorflow框架、pytorch框架、mxnet框架等)统一抽象出的通信接口类和基础组件类,同时提供统一的基础通信类和梯度入口层,从而实现统一的分布式性能优化。
38.在另一种实施方式中,服务方可以将rdl库开源给用户,以使用户可以结合自身训练需求,直接编写出上述目标训练代码。
39.在得到上述目标训练代码后,客户端可以在本地运行该目标训练代码。在一个实施例中,客户端响应于用户对上述模型训练任务的提交操作,运行上述目标训练代码。进一步,在一个具体的实施例中,客户端先接收用户针对模型训练任务输入的数据信息,如集群参数、训练数据集、模型参数等,进而接收用户基于该数据信息触发的提交操作。另一方面,在一个具体的实施例中,基于上述训练加速适配所采用适配代码包中的通信框架启动脚本,提交训练任务。
40.由此,客户端可以开始运行目标训练代码,从而通过在本地运行目标训练代码,实
现后续对服务器和远端集群的调用,进而实现远程训练。
41.步骤s120,客户端响应于运行上述目标训练代码产生的对服务器的调用,生成远程训练请求。
42.具体,客户端至少基于针对所述模型训练任务输入的集群参数,生成远程训练请求。在一个实施例中,集群参数中包括集群需求参数,如占用的机器数量(例如,2台服务器)、图像处理器(graphics processing unit,简称gpu)卡的数量、中央处理器(central processing unit,简称cpu)卡的数量、集群规模(例如,20个计算节点),等等。在另一个实施例中,集群参数中包括集群配置参数,如训练环境的指示参数、容器docker镜像文件,等等。
43.在一个实施例中,客户端基于上述集群参数和客户端所绑定用户的身份信息,生成远程训练请求。示例性地,身份信息可以包括用户在云计算服务中的注册账号和密码。
44.在另一个实施例中,客户端基于上述集群参数和目标训练代码,生成远程训练请求。在一个具体的实施例中,客户端先基于目标训练代码构建抽象语法树(abstract syntax tree,简称ast),再基于此ast语法树和上述集群参数生成远程训练请求。进一步,在一个示例中,客户端把针对目标训练代码的运行结果进行递归遍历,通过调用路径进行ast语法树的构建,并将构建出的ast语法树加密后包含在远程训练请求中。在另一个具体的实施例中,客户端将加密后的目标训练代码包含在远程训练请求中。
45.在又一个实施例中,客户端基于上述集群参数、身份信息和目标训练代码,生成远程训练请求。
46.由上,客户端生成远程训练请求,从而在步骤s130,客户端将远程训练请求发送至服务器。进而在步骤s140,服务器根据远程训练请求,申请并配置资源池中的集群资源,得到目标集群。
47.在一个实施例中,服务器根据上述集群需求参数,申请资源池中与之匹配的集群资源,再根据上述集群配置参数,对申请到的集群资源进行相应配置,得到目标集群。需理解,资源池,或称计算资源池、云资源池,通常由云服务方对各地区、个人或公司的闲置资源进行整合而得到,云服务方可以对资源池进行统一的规划和调度;另外,资源池中可以包括计算资源(如cpu卡、gpu卡等)、存储资源和网络资源。
48.进一步,在一个具体的实施例中,上述集群配置参数包括训练环境参数,其指示集群中代码的运行环境,需理解,集群中代码的运行环境与客户端中代码的运行环境通常需一致;相应,上述集群资源的配置可以包括:服务器向集群资源提供与上述训练环境参数对应的安装文件,从而,集群资源通过运行此安装文件,创建对应的运行环境,或称训练环境。在一更具体的实施例中,训练环境为python环境,相应,服务器提供的安装文件可以是conda的yaml文件或。
49.在另一个更具体的实施例中,上述安装文件可以是用户提供的容器docker镜像文件。进一步,此docker镜像文件中还指示将单个训练卡切分为指定数量的多个虚拟卡,相应,集群资源通过运行上述安装文件创建训练环境,可以包括:该集群资源通过运行该docker镜像文件,将集群资源中的某个或某几个训练卡切分为指定数量的多个虚拟卡。例如,将单个gpu卡切分为2个虚拟的gpu pod,来进行2个训练卡的模拟。如此,可以实现按照用户配置进行更细粒度的切分,从而提高并发度以及可控粒度。
50.以上,通过对申请到的集群资源进行配置,可以得到目标集群。
51.另一方面,在一个实施例中,上述远程训练请求中还包括客户端所绑定用户的身份信息。相应,本步骤的实施可以包括:服务器验证所述身份信息,并在验证通过的情况下,申请和配置上述集群资源。否则,终止当前流程。
52.在一个实施例中,上述远程训练请求中还包括ast语法树,需说明,若包括的是加密后的ast语法树,则需要进行解密操作以得到原始的ast语法树。之后,服务器可以启动codeserving服务,对ast语法树进行解析和渲染,得到远端集群可以执行的代码,其中远端集群可以换称为云端集群、或称资源池中的集群。进一步,服务器可以将得到的可执行代码提供给目标集群。在另一个实施例中,上述远程训练请求中还包括加密后的目标训练代码,由此,服务器可以解密得到目标训练代码,并对其进行处理得到远端集群可执行的代码,从而提供给目标集群。
53.由上,可以得到配置好的目标集群。另一方面,在步骤s150,客户端在运行上述目标训练代码的过程中产生rmi调用请求,于是,在步骤s160,目标集群响应于该rmi调用请求,执行模型训练任务中的计算任务。
54.对于上述步骤s150,在一个实施例中,客户端通过运行上述目标训练代码,将模型训练任务所涉及的任务数据封装为rmi类(rmi-class)中的对象,并基于该对象调用目标集群中远程对象的目标方法。需说明,rmi类被上述服务器预先注册在rmi注册中心。
55.进一步,在一个具体的实施例中,上述任务数据包括模型参数,相应,可以将此模型参数实例化为rmi类中的对象。在另一个具体的实施例中,上述任务数据包括训练样本数据,相应,可以将此训练样本数据封装为rmi类中的对象,或者,可以将训练样本中的特征数据和标签数据分别封装属于rmi类的对象。
56.在一个例子中,用户输入的上述集群参数中指示:不使用资源池中的cpu;相应,将所述模型训练任务所涉及的任务数据封装为rmi类中的对象,可以包括:客户端采用本地cpu对训练样本数据进行预定处理,并将预定处理后的训练样本数据封装为rmi类中的对象。需理解,其中预定处理可以包括数据预处理(如样本特征对齐)、稀疏计算(如独热编码),等等。在另一个例子中,上述集群参数中指示:使用资源池中的cpu,相应,目标集群可以包括服务器向资源池申请的远端cpu,用于对训练样本数据进行预定处理,处理得到数据同样会被封装为rmi类中的对象,以供目标集群中的gpu端访问。如此,可以实现在远程训练中对cpu/gpu的解耦,通过分离cpu/gpu实例,做到细粒度控制。
57.另一方面,在一个具体的实施例中,上述目标训练代码基于对原始训练代码的适配修改而得到,其中适配修改包括在原始训练代码中添加修饰器;相应,上述将模型训练任务所涉及的任务数据封装为rmi类中的对象,包括:修饰器动态创建上述rmi类,并将上述任务数据封装为rmi类中的对象。需理解,创建的rmi类本质上是服务器中rmi服务端(server)的rmi客户端,能够嵌入通信加密,保证数据隐私性。在一个示例中,模型修饰器(model wrapper)将模型参数封装为rmi类中的对象;在另一个示例中,张量修饰器(tensor wrapper)将训练样本数据对应的张量数据封装为rmi类中的对象。如此,通过在上述rdl适配代码包中添加修饰器,可以极大的降低对原始训练代码修改的复杂程度。
58.由上,客户端可以基于rmi类中的对象产生rmi请求,于是在步骤s160,目标集群可以响应该rmi请求,根据由rmi请求传入的任务数据,运行被调用的上述目标方法以执行模
型训练中的计算任务。在一个实施例中,目标集群通过运行服务器提供的上述可执行代码,执行模型训练中的计算任务。需理解,此计算任务通常包括密集型计算,如矩阵乘法,激活函数处理,等等。另一方面,在一个实施例中,目标集群对任务数据的获取还可以通过预取(prefetch)来完成,从而保证io和网络不是瓶颈。
59.在一个实施例中,步骤s160中还可以包括:目标集群将所述计算任务的执行状态信息作为所述远程调用的返回结果,提供给所述客户端。示例性地,执行状态信息可以包括:当前训练轮次、训练损失、训练轮次对应的批量样本个数、训练效果的评估指标值(如准确率accuracy),等等。如此,客户端通过rmi调用,可以实时查看远端训练的进程、状态信息,以及获取最终的训练结果。
60.另一方面,对于上述计算任务的执行状态信息、训练结果,在一个实施例中,用户可以选择将其保存在云端,或者,从其中指定部分信息结果,保存在云端,具体保存到用户自己的对象存储(object storage service,简称oss),实现结果备份;在另一个实施例中,用户可以借助rmi在本地获取,以进行自定义处理和保存。
61.又一方面,在上述模型训练任务的执行结束后,如果用户选择调试,可以直接在客户端施行本地的调试方法即可,远端会把调试信息反馈给本地进行展示。
62.进一步,若用户不再使用上述目标集群,服务器会收回用户对该目标集群的访问权限,并清空资源环境,使得对应的集群资源可以被再次申请使用。
63.由上,通过采用本说明书实施例披露的实现远程训练的方法,能够实现真正的远程训练,客户端能够实时查看训练进度,而远端进行实际的训练计算,并且,免去实例的购买和部署,以及数据搬迁等流程,资源池按需提供集群资源,从而有效降低客户成本,同时提高了云上集群的利用率。
64.为便于理解,下面结合图2,对上述远程训练方法的具体实施流程进行示例性介绍。图2示出根据一个实施例的远程训练调用流程图。如图2所示,其中包括以下步骤:
65.1.客户端接收用户输入的参数,包括:集群实例数、gpu卡数、是否使用远端cpu、训练的环境配置、用户的身份信息等。
66.2.适配训练加速代码。具体,对客户端的原始训练代码进行训练加速代码适配。适配训练加速代码主要是利用通信技术的优化,减少分布式训练跨机器的通信损失,提高性价比。
67.3.适配rdl代码。具体,将适配训练加速代码后的训练代码适配rdl代码,通过简要修改进行代码的远程实现,借助rdl的库实现,可以极大减少修改的代码量。
68.4.提交模型训练任务。通过训练加速适配代码包中的通信框架启动脚本,提交训练任务。
69.5.动态生成语法树。模型任务的提交触发在本地进行rdl调用进行远程训练请求的发送,这时会把本地运行的代码结果进行递归遍历,通过调用路径进行ast语法树的构建,然后将ast语法树进行加密后发送给服务器(或称rdl服务器)。
70.6.codeserving启动。服务器接收到提交的任务后,会启动codeserving服务,进行ast的解析和渲染,生成gpu端可以执行的代码。
71.7.动态申请集群。服务器后台验证用户的身份信息后,按照提供的集群需求配置进行资源的申请,优先选择同一地域、可用区下的集群。
72.8.训练集群配置。选定集群后,集群会根据用户提供的docker镜像或者conda的yaml文件进行训练环境的创建。
73.9.判断是否使用远程cpu。如果用户选择使用远程cpu,比如可以将数据预处理以及稀疏计算部分指定cpu来做;否则的话使用客户端本地的cpu资源;计算之后的结果统一封装为rmi远程对象,以供gpu集群访问。
74.10.使用远程gpu。配置完集群后,gpu会进入训练阶段,首先会按照cpu端侧的张量数据(tensor)进行远程动态获取,这一部分可以通过预取(prefetch)来完成,保证io和网络不是瓶颈;获取到数据后,进行真正训练;训练之后会把结果发送回客户端进行动态展示。
75.11.本地汇总。本地客户端能够实时看到训练的状态以及最终的结果,比如训练的loss、batch、acc等,以达到远程训练的效果。
76.12.保存云端。用户选择保存云端后,可以指定数据、模型到用户自己的oss,备份结果。
77.13.保存本地。用户也可以选择把拉远计算完的结果借助rmi在本地获取,以进行自定义处理和保存。
78.14.结束。训练结束之后,如果用户选择调试,可以直接在客户端通过本地的调试方法即可,远端会把调试信息反馈给本地进行展示;不再使用集群之后,集群会收回访问权限,并清空资源环境。
79.由上,通过实施上述远程训练调用流程,可以产生以下技术效果:
80.1)训练拉远:真正做到客户端看到执行的效果,而远端进行真正的训练,降低客户的维护成本,只需要提供算法和资金,即可在本地执行分布式训练任务,免去实例购买、部署、数据搬迁等流程。
81.2)实例切分:按照任务进行cpu/gpu实例的分离,做到实例级的细粒度控制,降低任务对特定机型的限制,可以充分组合不同的cpu/gpu实例进行资源重组下的任务调度。
82.3)无感修改:多框架统一进行抽象化处理,截获用户调用框架侧的model、tensor进行rmi远端动态注册,极大减少手动适配的成本。
83.4)新的售卖形态:提供新的云上资源形态,通过权限隔离,训练集群对于用户而言没有完全可控性,实例仅用于训练任务的执行,这样可以把资源的售卖从单一固定的实例转为训练算力的输出,降低资源消耗,也能降低客户的成本,提高云上集群的利用率。
84.本说明书实施例披露的方案从软件上实现了一种远程训练的方式,使得新的训练算力售卖的方式成为了可能,降低了分散集群的维护成本和调度难度,提高了整个云上集群的利用率,也让算法开发者免去了对基础设施即服务(infrastructure as a service,简称iaas)层资源部署维护等问题,能够更加高效的进行分布式训练。
85.根据另一方面的实施例,与上述远程训练方法相对应的,本说明书实施例还披露一种远程训练系统。图3示出本说明书实施例披露的实现远程训练的系统结构示意图,如图3所示,所述系统300包括:
86.客户端310,用于运行用于执行模型训练任务的目标训练代码,以及,响应于运行所述目标训练代码产生的对服务器320的调用,生成远程训练请求,并将其发送至服务器320,所述远程训练请求包括针对所述模型训练任务输入的集群参数。服务器320,用于根据
所述集群参数,申请并配置资源池中的集群资源,得到目标集群330。目标集群330,用于响应于所述客户端310运行所述目标训练代码产生的远程方法调用rmi,执行所述模型训练任务中的计算任务。
87.在一个实施例中,所述目标训练代码基于对原始训练代码的适配修改而得到,所述对服务器320的调用和所述rmi基于所述适配修改而实现。
88.在一个实施例中,所述客户端310用于生成远程训练请求,具体包括:基于所述客户端310所绑定用户的身份信息和所述集群参数,生成所述远程训练请求。其中,所述服务器320用于申请并配置资源池中的集群资源,具体包括:在所述身份信息通过验证的情况下,申请并配置所述集群资源。
89.在一个实施例中,所述远程训练请求中包括基于所述目标训练代码而构建的语法树;所述服务器320还用于,对所述语法树进行解析和渲染,生成集群的可执行代码;所述目标集群330用于执行所述模型训练任务中的计算任务,具体包括:通过运行所述可执行代码,执行所述计算任务。
90.在一个实施例中,所述集群参数包括集群需求参数和集群配置参数;其中,所述服务器320用于根据所述集群参数,申请并配置资源池中的集群资源,具体包括:申请所述资源池中匹配所述集群需求参数的集群资源;根据所述集群配置参数,对所述集群资源进行所述配置,得到目标集群330。
91.在一个具体的实施例中,所述集群需求参数包括以下中的一项或多项:占用的机器数量、图像处理器gpu卡的数量、中央处理器cpu卡的数量。
92.在另一个具体的实施例中,所述集群配置参数指示集群的训练环境;其中,所述服务器320用于根据所述集群配置参数,对所述集群资源进行所述配置,具体包括:所述服务器320向所述集群资源提供所述训练环境对应的安装文件,以使所述集群资源通过运行所述安装文件,创建所述训练环境。
93.进一步,在一个例子中,所述安装文件包括容器docker镜像文件,其中指示将单个训练卡切分为指定数量的多个虚拟卡;所述集群资源通过运行所述安装文件,创建所述训练环境,包括:所述集群资源通过运行所述容器docker镜像文件,将所述集群资源中的某个训练卡切分为所述指定数量的多个虚拟卡。
94.在一个实施例中,客户端310用于产生所述rmi调用,具体包括:客户端310通过运行所述目标训练代码,将所述模型训练任务所涉及的任务数据封装为rmi类中的对象,所述rmi类被所述服务器320预先注册在rmi注册中心;客户端310基于所述对象调用所述目标集群330中远程对象的目标方法。相应,上述目标集群330用于执行所述模型训练任务中的计算任务,具体包括:目标集群330基于所述任务数据,运行所述目标方法以执行所述计算任务。
95.在一个具体的实施例中,所述目标训练代码基于对原始训练代码的适配修改而得到,所述适配修改包括在所述原始训练代码中添加修饰器;其中,所述客户端310用于将所述模型训练任务所涉及的任务数据封装为rmi类中的对象,具体包括:所述客户端310通过所述修饰器创建所述rmi类,并且,通过所述修饰器将所述任务数据封装为所述rmi类中的对象。
96.在一个具体的实施例中,所述任务数据包括模型参数,和/或,训练样本数据。
97.在另一个具体的实施例中,所述集群参数中指示:不使用资源池中的cpu;其中,所述客户端310用于将所述模型训练任务所涉及的任务数据封装为rmi类中的对象,具体包括:采用所述客户端310所在终端的本地cpu对训练样本数据进行预定处理;将所述预定处理后的训练样本数据封装为所述rmi类中的对象。
98.在一个实施例中,上述原始训练代码中包括特定的统一计算设备架构cuda操作;上述适配修改包括:自动识别所述cuda操作,并截获其所对应应用程序编程接口api的调用路径,将其设置为在所述服务器320进行执行。
99.在一个实施例中,所述目标集群330还用于,将所述计算任务的执行状态信息作为所述rmi调用的返回结果,提供给所述客户端310,所述执行状态信息包括以下中的一项或多项:当前训练轮次、训练损失、训练轮次对应的批量样本个数、训练效果的评估指标值。
100.根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图1或图2所描述的方法。
101.根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图1或图2所描述的方法。
102.本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
103.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献