一种网络模型训练的控制方法、系统
文献发布时间:2023-06-19 12:13:22
技术领域
本申请涉及计算机技术领域,特别是涉及一种网络模型训练的控制方法、系统。
背景技术
随着计算机(领域)技术的发展,出现了神经网络技术,它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。现有通过神经网络技术实现根据产品表面图像进行质量检测,也称为工业视觉检测技术;具体为,利用精密的光学成像技术,对空间规则分布的工业产品进行成像获取感兴趣目标,通过数字化技术生成多维图像,并结合数字图像预处理生成待识别图像,随后由质检人员对图像收集筛选,精细标注,并将其交付于工业视觉算法专家进行模型的训练,而后将训练好的(深度学习)模型交付于质检人员部署于工业视觉质检系统中。
工业场景的产量巨大,产生的图像数据非常庞大,在对模型的训练过程中,质检人员需要收集大量的用于训练的数据,压缩上传至服务器,工业视觉算法专家在下载数据进行模型训练,非常耗费双方的沟通精力和时间,导致训练准备工作效率非常低。现有比较成熟的有偿工业视觉平台,如百度工业视觉智能平台、腾讯工业云、阿里云平,这些工业视觉平台都只能针对单一场景进行定制化服务,且其内部核心技术未公开,很难在其上进行二次开发,以适应于新的工业场景的应用。
神经网络在图像识别领域取得了巨大的成功,但为了达到大多数厂商要求的极低产品漏杀率和过杀率,需要质检人员在实际流水线生产过程中不断的增加有标签数据、交付于相关算法人员持续不断的优化模型,以提高模型的准召。因此,亟需一种能够便于质检人员进行训练数据上传、便于工业视觉算法专家对模型训练过程进行维护的网络模型训练的控制方法和系统。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实现网络模型的自动下发和训练的网络模型训练的控制方法、系统。
一种网络模型训练的控制方法,所述方法包括:
客户端获取训练请求,并发送至云服务中间端;其中,所述训练请求包括网络模型类型、训练数据和训练任务标识;
所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端;
所述计算服务端根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练。
在其中一个实施例中,所述云服务中间端接收所述训练请求,解析所述训练数据并保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端,包括:所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库;所述云服务中间端根据网络模型和训练任务标识,生成用于控制网络模型进行训练的第一消息体;其中,所述的第一消息体的格式为Json格式,所述的第一消息体带有特定命令;所述云服务中间端将所述第一消息体,通过RocketMQ组件发送至计算服务端。
在其中一个实施例中,所述第一消息体包括键和值,所述键包括命令键、类型、任务识别符、数据设置、标签和名称中的一种或多种,所述值为所述键的具体的值。
在其中一个实施例中,所述特定命令包括发起训练、停止训练、重启训练、计算资源反馈中至少一种。
在其中一个实施例中,所述计算服务端根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练,包括:所述计算服务器根据所述第一消息体提供的数据设置字段,通过pymysql模块包的一个接口函数获取所述训练数据的在数据库的云存储路径信息;根据所述云存储路径信息,采用多线程并发的方式下载所述训练数据到服务器磁盘指定位置;通过python标准库Subprocess开启一个子进程以调用网络模型训练代码,并获取训练参数传递至所述子进程,同时连接所述子进程的输入、输出、错误管道,保存所述子进程的进程号,将所述进程号与所述第一消息体的任务识别符进行绑定后保存到字典类型的变量中;所述子进程调用网络模型训练代码后,根据所述训练参数对所述网络模型进行训练。
在其中一个实施例中,在所述子进程调用网络模型训练代码后,根据所述训练参数对所述网络模型进行训练之后,还包括:在所述子进程运行时,主程序通过开启的通信管道实时监控所述子进程;将所述监控结果发送至所述云服务中间端,所述云服务中间端将其转发至所述客户端,所述客户端对所述监控结果进行显示。
在其中一个实施例中,所述监控结果包括正常训练的监控结果和非正常训练的监控结果;当所述监控结果为正常训练的监控结果时,将训练结果、进度实时发送至所述云服务中间端,所述云服务中间端将其转发至所述客户端;当所述监控结果为非正常训练的监控结果时,向所述云服务中间端返回错误信息,所述云服务中间端将其转发至所述客户端进行显示。
在其中一个实施例中,在将所述监控结果发送至所述云服务中间端,所述云服务中间端将其转发至所述客户端,所述客户端对所述监控结果进行显示之后,还包括:当所述监控结果为位置错误或者在需要协调资源时,客户端获取停止训练请求,并发送至所述云服务中间端;所述停止训练请求包括训练任务标识和所述第一消息体的任务识别符;所述云服务中间端接收所述停止训练请求,并根据所述训练任务标识,将停止训练请求转换成第二消息体发送至计算服务端;所述计算服务端根据所述第二消息体,停止所述网络模型的训练。
在其中一个实施例中,所述计算服务端根据所述第二消息体,停止所述网络模型的训练,包括:所述计算服务端从所述第二消息体获取所述任务识别符,并根据所述任务识别符获取所述子进程的进程号;所述计算服务端根据所述进程号调用python标准库的os模块的接口函数os.kill(p.process)杀死所述子进程,以停止所述网络模型的训练。
在其中一个实施例中,所述网络模型训练的控制方法,还包括:所述计算服务端在对网络模型训练的过程中,实时根据网络模型的种类和训练数据的大小计算显存占用数据;所述计算服务端监控设备的显存使用情况,并根据所述显存占用数据筛选符合要求的设备用于所述网络模型的训练。
一种网络模型训练的控制系统,包括:客户端、云服务中间端和计算服务端;其中,
客户端获取训练请求,并发送至云服务中间端;其中,所述训练请求包括网络模型类型、训练数据和训练任务标识;
所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端;
所述计算服务端根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
客户端获取训练请求,并发送至云服务中间端;其中,所述训练请求包括网络模型类型、训练数据和训练任务标识;
所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端;
所述计算服务端根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
客户端获取训练请求,并发送至云服务中间端;其中,所述训练请求包括网络模型类型、训练数据和训练任务标识;
所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端;
所述计算服务端根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练。
上述网络模型训练的控制方法、系统、计算机设备和存储介质,通过云服务中间端从客户端获取训练请求,并转换成第一消息体发送至计算服务器,计算服务器根据第一消息体对网络模型进行训练,在有限的计算资源下,用户只需要在客户端进行操作就能控制模型的自动训练和模型下发功能,降低了对操作人员的专业水平要求,提供了模型训练前期准备的工作效率,节约了模型训练的时间成本;本申请对网络模型训练的控制方法,能够适用于任何网络模型训练的场景,因而完全能够适应各种不同的工业场景的应用。
附图说明
图1为一个实施例中网络模型训练的控制方法的应用环境图;
图2为一个实施例中网络模型训练的控制方法的流程示意图;
图3为一个实施例中消息体的示意图;
图4为一个实施例中网络模型训练的控制系统的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”、“若干个”的含义是两个或两个以上,除非另有明确具体的限定。
本申请提供的网络模型训练的控制方法,可以应用于如图1所示的应用环境中。其中,客户端102通过网络与服务器中间端104通过网络进行通信,服务器中间端104与计算服务端106通过网络进行通信。客户端102获取训练请求,并发送至云服务中间端104;其中,所述训练请求包括网络模型类型、训练数据和训练任务标识;所述云服务中间端104接收所述训练请求,解析得到所述训练数据,并将其保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端106;所述计算服务端106根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练。其中,客户端102可以但不限于是各种个人计算机、笔记本电脑、智能手机等,服务器中间端104、计算服务端106可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种网络模型训练的控制方法,包括以下步骤:
S110,客户端获取训练请求,并发送至云服务中间端;其中,所述训练请求包括网络模型类型、训练数据和训练任务标识。
其中,客户端主要用于质检人员日常上传数据、标注数据、管理数据、发起训练、监控训练、选择模型、模型测试。客户端所采用的技术通过成熟的前端技术实现。其中,用户点击电脑控件,向客户端发送指令生成训练请求,例如,用户在客户端通过鼠标在客户端的应用窗口选择网络模型类型、设置训练任务标识、上次训练数据等,再通过鼠标点击提交后生成训练请求。
S120,所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端。
其中,根据RocketMQ的物理部署,客户端是主要的Producer集群,所述云服务中间端将训练请求转义为约定的消息体,发送到计算服务端,计算服务端作为Consumer集群对接收到的消息体进行消费,并根据消费的成功与否进行消息体回传以保证服务的高可用性。
其中,消息体传输:JSON是一种与开发语言无关的、轻量级的数据存储交换格式,来源于JavaScript这门语言,几乎每门开发语言都有处理JSON的API,易于阅读和编写、也利于机器解析和生成;是一个标记符的序列,这套标记符包含六个构造字符、字符串、数字、三个字面名(false,null,true)。本实施例中使用Json格式来传递消息体,花括号{}表示一个对象,里面可以包含多个键-值对,其中键key是字符类型,值value可以是任何合法的数据类型。JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
S130,所述计算服务端根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练。
其中,计算服务端可使用Python实现,其可由消息体消费主控程序、网络模型训练代码两部分构成,消费主控程序对消息体进行消费,并从数据库下载训练数据,调用网络模型训练代码进行网络模型的训练;例如,网络模型训练代码为机器视觉模型训练算法代码。
上述网络模型训练的控制方法中,通过云服务中间端从客户端获取训练请求,并转换成第一消息体发送至计算服务器,计算服务器根据第一消息体对网络模型进行训练,在有限的计算资源下,用户只需要在客户端进行操作就能控制模型的自动训练和模型下发功能,降低了对操作人员的专业水平要求,提供了模型训练前期准备的工作效率,节约了模型训练的时间成本;本申请对网络模型训练的控制方法,能够适用于任何网络模型训练的场景,因而完全能够适应各种不同的工业场景的应用。
在其中一个实施例中,所述云服务中间端接收所述训练请求,解析所述训练数据并保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端,包括:所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库;所述云服务中间端根据网络模型和训练任务标识,生成用于控制网络模型进行训练的第一消息体;其中,所述的第一消息体的格式为Json格式,所述的第一消息体带有特定命令;所述云服务中间端将所述第一消息体,通过RocketMQ组件发送至计算服务端。
其中,所述云服务中间端根据网络模型和训练任务标识,进行Json格式转换,得到用于控制网络模型进行训练的第一消息体。
其中,所述第一消息体包括键和值,所述键包括命令键、类型、任务识别符、数据设置、标签和名称中的一种或多种,所述值为所述键的具体的值。
例如,如图3所示,具有两个消息体,第一个消息体为“1.1、web端训练任务下发”,第二个消息体为“1.2、训练任务即刻反馈”。在第一个消息体中,键包括命令键“cmd”、类型“type”、任务识别符“task”、数据设置“dateset”、标签“label”和名称“name”,每个键后面具有对应的值,如图3中,命令键“cmd”、类型“type”、任务识别符“task”、数据设置“dateset”、标签“label”和名称“name”对应的值分别为 “START_TASK”、“TRAIN”、“12345”、“AI41f438-79a8-2592-863708922016”、“Bulle;Empty;TLGlue”和“longda-mac3-1122”,命令键“cmd”的值”START_TASK”表示为模型的训练,命令键“cmd”的值“STOP_TASK”则表示终止某一当前训练任务,类型“type”的值为“TRAIN”时表示训练模型,类型“type”的值为“TEST”表示测试模型,任务识别符“task”为整数类型,“dataset”表示的是发起任务数据所关联的数据库的一个标识符;在第二个消息体中,键包括命令键“cmd”、任务识别符“task”、状态“status”和消息“message”,每个键后面具有对应的值,如图3中,命令键“cmd”、任务识别符“task”、状态“status”和消息“message”对应的值分别为“START_TASK_ACK”、“123456”、““1”(成功)、“0”(失败)”和空。本实施例中,第一消息体包括键和值可以根据需要定义和设置,降低了代码的复杂度,便于后续的二次开发。
在其中一个实施例中,所述特定命令包括发起训练、停止训练、重启训练、计算资源反馈中至少一种。
在其中一个实施例中,所述计算服务端根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练,包括:所述计算服务器根据所述第一消息体提供的数据设置字段,通过pymysql模块包的一个接口函数获取所述训练数据的在数据库的云存储路径信息;根据所述云存储路径信息,采用多线程并发的方式下载所述训练数据到服务器磁盘指定位置;通过python标准库Subprocess开启一个子进程以调用网络模型训练代码,并获取训练参数传递至所述子进程,同时连接所述子进程的输入、输出、错误管道,保存所述子进程的进程号,将所述进程号与所述第一消息体的任务识别符进行绑定后保存到字典类型的变量中;所述子进程调用网络模型训练代码后,根据所述训练参数对所述网络模型进行训练。
本实施例中,通过多线程下载训练数据能够提高数据的下载速度,并且通过将所述进程号与所述第一消息体的任务识别符进行绑定并保存到字典类型变量中,便于后续对该子进程进行控制。
在其中一个实施例中,在所述子进程调用网络模型训练代码后,根据所述训练参数对所述网络模型进行训练之后,还包括:在所述子进程运行时,主程序通过开启的通信管道实时监控所述子进程;将所述监控结果发送至所述云服务中间端,所述云服务中间端将其转发至所述客户端,所述客户端对所述监控结果进行显示。
其中,子进程运行时,每一条消息体在被消费后,无论成功与否,都需要对该消息体的消费情况进行及时反馈,以保证消息体的高可用性。
在其中一个实施例中,所述监控结果包括正常训练的监控结果和非正常训练的监控结果;当所述监控结果为正常训练的监控结果时,将训练结果、进度实时发送至所述云服务中间端,所述云服务中间端将其转发至所述客户端;当所述监控结果为非正常训练的监控结果时,向所述云服务中间端返回错误信息,所述云服务中间端将其转发至所述客户端进行显示。本实施例能够对子进程进行监控,包括结果及时反馈到客户端,在出现错误时,便于问题的追溯和修复。
在其中一个实施例中,在将所述监控结果发送至所述云服务中间端,所述云服务中间端将其转发至所述客户端,所述客户端对所述监控结果进行显示之后,还包括:当所述监控结果为位置错误或者在需要协调资源时,客户端获取停止训练请求,并发送至所述云服务中间端;其中,所述停止训练请求包括训练任务标识和所述第一消息体的任务识别符;所述云服务中间端接收所述停止训练请求,并根据所述训练任务标识,将停止训练请求转换成第二消息体发送至计算服务端;所述计算服务端根据所述第二消息体,停止所述网络模型的训练。
其中,用户在客户端操作,生成停止训练的请求,例如,点击停止训练按钮。上述实施例中,将所述进程号与所述第一消息体的任务识别符进行绑定并保存到字典类型变量,通过该字典进行检索,找到该子进程,控制其停止训练。
在其中一个实施例中,所述计算服务端根据所述第二消息体,停止所述网络模型的训练,包括:所述计算服务端从所述第二消息体获取所述任务识别符,并根据所述任务识别符获取所述子进程的进程号;所述计算服务端根据所述进程号调用python标准库的os模块的接口函数os.kill(p.process)杀死所述子进程,以停止所述网络模型的训练。
例如,如上所述,而该训练任务在发起的时候,其子进程的进程号(id)已经和该任务的”task”字段进行了绑定,并保存在了消息体消费主程序的一个字典的全局变量,因此只需要在消息体中提供需要终止任务的”task”,通过该字典进行检索,并通过python标准库的os模块的接口函数os.kill(p.process)杀死该子进程达到停止训练的目的。
在其中一个实施例中,所述网络模型训练的控制还包括:所述计算服务端在对网络模型训练的过程中,实时根据网络模型的种类和训练数据的大小计算显存占用数据;所述计算服务端监控设备的显存使用情况,并根据所述显存占用数据筛选符合要求的设备用于所述网络模型的训练。
其中,深度学习的GPU计算资源有限,在日常网络模型训练的时候,需要用户在客户端对计算资源进行资源把控,这时候可以主动发送资源查询请求。消息体消费主控程序通过NVIDIA公司提供的pynvml模块即可实现资源查询并返回结果。用于并行计算的GPU计算资源有限,而像一些成熟的计算资源服务平台例如阿里云的ECS、百度的BBC租赁成本非常高,且数据提供端、算法服务端未有效的分离,不适用于本应用场景。另外,神经网络从较简单的MLP、DBN、BPNN,处理序列信息的LSTM、RNN,专注于处理图像的AlexNet、VGG、InceptionNet、ResNet,专注于商业应用的MobileNet、ShuffleNet,神经网络越来越深、识别性能越来越高,但同时其参数量和对GPU显存的需求也日益增长。一般来说,卷积神经网络参数量越大,层数越大,其显存占用也越高,因此,在计算资源有限的情况下,需要通过有效的手段对计算资源进行调度和控制。
例如,在LED的视觉检测领域,各类led料型的图片由于成像需求各异,导致图片大小差异较大,而为了不对外观产生影响和效率方面的考虑,往往不会对图像调整大小,此处需要较高的计算资源才能实现对网络模型的训练。
其中,所述训练数据为图像数据;实时根据网络模型的种类和训练数据的大小计算显存占用数据,具体为:获取同一神经网络,在不同图像尺寸大小的情况下的显存占用数据,形成映射表;根据所述映射表,通过二分法得到图像数据训练显存占用最高值和最低值,然后通过一个简单的线性差值的方式估计单图像显存占用,再乘以批量大小(Batch_size)即可得到最终的显存占用数据。
例如,使用ResNet训练一个分类模型,此时需要获取在该条件下不同(面积)大小图像的显存占用情况,程序会自动创建已知(面积)大小的”伪图像”数据,并执行该算法,并同时开启一个线程监控该算法所占用的GPU显存大小,算法运行结束后构造一个映射表“图像大小 : 显存占用”。当构造多个不同大小的图像时,就可以得到多个映射,结束后统一将该映射表保存下,当下次再次调用到该算法和模型时就可以直接本地读取。
例如,所述计算服务端监控设备的显存使用情况,并根据所述显存占用数据筛选符合要求的设备用于所述网络模型的训练,具体为:在一特定的时间段内(1min)监控每个设备的显存使用情况,并根据显存空闲情况对设备id进行降序排列,然后从1到n,1~n是排列的顺序,选取前N个符合要求的设备的id作为最终的输出,n、N均为正整数,N≤n。
本实施例中,实现了一种简单的在线自动评估计算资源占有大小的方法,并根据评估结果和当前的资源占用进行自适应分配。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种网络模型训练的控制装置,包括:训练请求发送模块210、消息转换模块220和训练模块230,其中:
训练请求发送模块210,用于客户端获取训练请求,并发送至云服务中间端;其中,所述训练请求包括网络模型类型、训练数据和训练任务标识。
消息转换模块220,用于所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端。
训练模块230,用于所述计算服务端根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练。
在其中一个实施例中,所述消息转换模块220,包括:解析单元,用于所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库;第一消息体生成单元,用于所述云服务中间端根据网络模型和训练任务标识,生成用于控制网络模型进行训练的第一消息体;其中,所述的第一消息体的格式为Json格式,所述的第一消息体带有特定命令;第一消息体发送单元,用于所述云服务中间端将所述第一消息体,通过RocketMQ组件发送至计算服务端。
在其中一个实施例中,所述第一消息体包括键和值,所述键包括命令键、类型、任务识别符、数据设置、标签和名称中的一种或多种,所述值为所述键的具体的值。
在其中一个实施例中,所述特定命令包括发起训练、停止训练、重启训练、计算资源反馈中至少一种。
在其中一个实施例中,所述训练模块230,包括:存储路径获取单元,用于所述计算服务器根据所述第一消息体提供的数据设置字段,通过pymysql模块包的一个接口函数获取所述训练数据的在数据库的云存储路径信息;下载单元,用于根据所述云存储路径信息,采用多线程并发的方式下载所述训练数据到服务器磁盘指定位置;子进程启动单元,用于通过python标准库Subprocess开启一个子进程以调用网络模型训练代码,并获取训练参数传递至所述子进程,同时连接所述子进程的输入、输出、错误管道,保存所述子进程的进程号,将所述进程号与所述第一消息体的任务识别符进行绑定后保存到字典类型的变量中;训练单元,用于所述子进程调用网络模型训练代码后,根据所述训练参数对所述网络模型进行训练。
在其中一个实施例中,所述训练模块230,还包括:监控单元,用于在所述子进程运行时,主程序通过开启的通信管道实时监控所述子进程;监控结果发送单元,用于将所述监控结果发送至所述云服务中间端,所述云服务中间端将其转发至所述客户端,所述客户端对所述监控结果进行显示。
在其中一个实施例中,所述监控结果包括正常训练的监控结果和非正常训练的监控结果;当所述监控结果为正常训练的监控结果时,将训练结果、进度实时发送至所述云服务中间端,所述云服务中间端将其转发至所述客户端;当所述监控结果为非正常训练的监控结果时,向所述云服务中间端返回错误信息,所述云服务中间端将其转发至所述客户端进行显示。
在其中一个实施例中,所述训练模块230,还包括:停止训练请求发送单元,用于当所述监控结果为位置错误或者在需要协调资源时,客户端获取停止训练请求,并发送至所述云服务中间端;所述停止训练请求包括训练任务标识和所述第一消息体的任务识别符;第二消息体转换单元,用于所述云服务中间端接收所述停止训练请求,并根据所述训练任务标识,将停止训练请求转换成第二消息体发送至计算服务端;训练停止单元,用于所述计算服务端根据所述第二消息体,停止所述网络模型的训练。
在其中一个实施例中,所述训练停止单元,包括:进程号获取子单元,用于所述计算服务端从所述第二消息体获取所述任务识别符,并根据所述任务识别符获取所述子进程的进程号;子进程停止子单元,用于所述计算服务端根据所述进程号调用python标准库的os模块的接口函数os.kill(p.process)杀死所述子进程,以停止所述网络模型的训练。
在其中一个实施例中,所述网络模型训练的控制装置,还包括:显存占用计算模块,用于所述计算服务端在对网络模型训练的过程中,实时根据网络模型的种类和训练数据的大小计算显存占用数据;设备筛选模块,用于所述计算服务端监控设备的显存使用情况,并根据所述显存占用数据筛选符合要求的设备用于所述网络模型的训练。
关于网络模型训练的控制装置的具体限定可以参见上文中对于网络模型训练的控制方法的限定,在此不再赘述。上述网络模型训练的控制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种网络模型训练的控制系统,包括:客户端、云服务中间端和计算服务端;其中,客户端获取训练请求,并发送至云服务中间端;其中,所述训练请求包括网络模型类型、训练数据和训练任务标识;所述云服务中间端接收所述训练请求,解析得到所述训练数据,并将其保存至数据库,并根据所述网络模型和训练任务标识,将所述训练请求转换成第一消息体发送至计算服务端;所述计算服务端根据所述第一消息体,从所述数据库下载训练数据对网络模型进行训练。其中,关于网络模型训练的控制系统具体限定可以参见上文中对于网络模型训练的控制方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储训练数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种网络模型训练的控制方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- 一种网络模型训练的控制方法、系统
- 一种针对深度神经网络模型训练的数据集约简方法及系统