发明内容
本发明的目的在于至少解决现有技术中存在的技术问题之一,提供一种基于容器技术的深度学习模型训练方法、设备及存储介质。
本发明解决其问题所采用的技术方案是:
本发明的第一方面,一种基于容器技术的深度学习模型训练方法,包括:
根据所述容器技术构建基础运行环境;
在所述基础运行环境中形成第一容器,在所述第一容器中构建第一深度学习模型;
输入第一训练数据至所述第一深度学习模型进行训练;
在所述基础运行环境中形成第二容器,将所述第一容器的数据迁移到所述第二容器,得到第二深度学习模型;
输入第二训练数据至第二深度学习模型进行训练,优化所述第二深度学习模型的输出层的参数。
根据本发明的第一方面,所述根据所述容器技术构建基础运行环境具体为:
在服务器上安装Docker;
获取深度学习框架的框架镜像;
建立训练指令与所述基础运行环境之间的调度关系,其中所述训练指令用于控制深度学习模型进行训练
根据本发明的第一方面,在所述基础运行环境中形成所述第一容器,在所述第一容器中构建第一深度学习模型的步骤具体为:
通过指令控制器发送激活指令到消息队列;
读取所述激活指令,激活所述框架镜像,形成所述第一容器;
将与深度学习模型对应的代码固化到所述第一容器形成所述第一深度学习模型。
根据本发明的第一方面,将所述第一训练数据输入至所述第一深度学习模型进行训练的具体步骤为:
将所述第一训练数据输入至所述第一容器;
通过指令控制器发送所述训练指令到消息队列;
读取所述消息队列中的所述训练指令的开始训练消息后,使所述第一深度学习模型从文件系统拉取所述第一训练数据;
使所述第一训练数据对所述第一深度学习模型训练,形成第一模型文件。
根据本发明的第一方面,在所述基础运行环境中形成所述第二容器,所述第一容器的数据迁移到所述第二容器,得到所述第二深度学习模型,包括以下步骤:
通过所述指令控制器发送激活指令到消息队列;
读取消息队列中的所述激活指令,激活所述框架镜像,形成所述第二容器;
将与深度学习模型对应的代码固化到所述第二容器,将所述第一容器中的所述第一模型文件下载到所述第二容器中,进而得到所述第二深度学习模型。
根据本发明的第一方面,输入所述第二训练数据至所述第二深度学习模型进行训练,优化所述第二深度学习模型的输出层的参数的具体步骤为:
将所述第二训练数据输入至所述第二容器;
通过所述指令控制器发送所述训练指令到消息队列;
读取所述消息队列中的所述训练指令的开始训练消息后,使所述第二深度学习模型从所述文件系统拉取所述第二训练数据;
使所述第二训练数据对所述第二深度学习模型训练,形成第二模型文件,进而优化所述第二深度学习模型的输出层的参数。
根据本发明的第一方面,深度学习模型包括至少以下之一:
卷积神经网络模型、递归神经网络模型、深度信念网络模型以及堆叠自动编码器模型;
所述卷积神经网络包括输入层、隐含层以及输出层;
所述隐含层包括卷积层、池化层以及全连接层;
所述卷积层用于对输入数据进行特征提取;
所述池化层用于对输出数据进行特征选择和信息过滤;
所述全连接层用于对提取的特征进行非线性组合以得到输出。
根据本发明的第一方面,所述第一深度学习模型和所述第二深度学习模型用于识别电网中的线巡缺陷。
本发明的第二方面,一种基于容器技术的深度学习模型训练设备,包括:
处理器;
存储器,用于存储可执行程序;
当所述可执行程序被所述处理器执行时,使得所基于容器技术的深度学习模型训练设备实现如本发明第一方面所述的基于容器技术的深度学习模型训练方法。
本发明第三方面,存储介质,所述存储介质存储有可执行指令,可执行指令能被计算机执行,使所述计算机执行如本发明第一方面所述的基于容器技术的深度学习模型训练方法。
上述一种基于容器技术的深度学习模型训练方法、设备及存储介质至少具有以下有益效果:本发明采用的一种基于容器技术的深度学习模型训练方法、设备及存储介质,对深度学习模型模型继续训练采用了容器化技术,使基于容器的深度学习训练,无需再准备配置复杂的环境,可通过对已训练过的基于容器技术深度学习模型训练的最后一层网络参数进行调用,直接继承训练好的深度学习模型,可大大提高资源利用率,缩短训练时间,提高训练效率,数据冗余度低,节约成本,实用性强。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。几乎没有性能开销,可以很容易地在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架包括系统。
针对现有技术中深度学习模型继续训练搭配环境复杂,每当改变训练素材时,从零开始重新进行训练,造成对资源进行浪费,已训练的利用率低,效率慢,数据冗余度高的问题,本发明提出了一种基于容器技术的深度学习模型的训练方法。
参考图1,根据本发明的实施例,提供了一种基于容器技术的深度学习模型的训练方法,包括以下步骤:
S101,根据所述容器技术构建基础运行环境;
S103,在所述基础运行环境中形成第一容器,在所述第一容器中构建第一深度学习模型;
S105,输入第一训练数据至所述第一深度学习模型进行训练;
S107,在所述基础运行环境中形成第二容器,将所述第一容器的数据迁移到所述第二容器,得到第二深度学习模型;
S109,输入第二训练数据至第二深度学习模型进行训练,优化所述第二深度学习模型的输出层的参数。
参考图2,在一些实施方式中,根据所述容器技术构建基础运行环境具体为:
首先在服务器上安装Docker;
然后获取深度学习框架的框架镜像;
建立训练指令与所述基础运行环境之间的调度关系,其中所述训练指令用于控制深度学习模型进行训练。
在这里,一般来说,应用程序都是复杂的,它们都有很多组件。例如,大多数应用程序都需要数据库或中间件服务的支持以实现对数据的存储、检索和集成。因此,需要通过设计和部署把这些服务拆分为它们自己的容器。如果一个应用程序能够被拆分成为越多的分布式组件,那应用程序扩展的选择越多。
当执行深度学习模型迁移时,搜索Docker注册库找到一个基本Docker的映像并将其作为深度学习模型的基础来使用;
使用Dockerfile创建映像,并将其添加至Docker Hub;
建立训练指令和基础运行环境的调度关系;
对容器中运行的深度学习框架的框架镜像进行配置,使深度学习模型连接外部资源或深度学习模型集群中的其他容器更方便。
进一步地,容器化是一种轻量级虚拟化方案,它不需要对内核进行改变,主要利用Linux内核特性实现虚拟化,所有容器运行在同一个内核里。容器化技术将深度学习模型所需要的运行环境整体打包一块,并进行统一管理;利用深度学习模型中的训练任务中的指令和基础运行环境之间的关系,实现了应用级资源的自动弹性伸缩和服务;同时通过容器化技术大大提高了深度学习模型的训练任务效率,缩短了训练周期。
在一些实施方式中,在所述基础运行环境中形成所述第一容器,在所述第一容器中构建第一深度学习模型的步骤具体为:
首先通过指令控制器发送激活指令到消息队列
读取消息队列中的激活指令,激活所述框架镜像,形成所述第一容器;
将与深度学习模型对应的代码固化到所述第一容器形成所述第一深度学习模型。
在本步骤中,消息队列是一个消息的链表,把消息看作一个记录,并且记录中有特定的格式以及特定的优先级;对消息队列有写权限的进程,可以按照一定规则添加新消息;对消息队列有读权限的进程,可以从消息队列中读出消息。
从消息队列获取指令,可以通过去相关的Docker Hub拉取需要的框架镜像,也可以load本地已制作打包好的本地镜像;然后激活框架镜像,镜像的启动状态即容器。
在这里,指令控制器指由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成。控制器又分为组合逻辑控制器和微程序控制器,组合逻辑控制器运行速度快;微程序控制器设计方便,结构简单,修改扩充方便,修改一条机器指令的功能,只需重编所对应的微程序。
将所述第一深度学习模型对应的代码固化到所述第一容器中,形成所述第一深度学习模型。
这里所述的代码固化是指开发调试完成的程序代码通过编码器或其它某种方式下载到单片机的只读存储器里。
在一些实施方式中,将所述第一训练数据输入至所述第一深度学习模型进行训练的具体步骤为:
将所述第一训练数据输入至所述第一容器;
通过指令控制器发送所述训练指令到消息队列;
读取所述消息队列中的所述训练指令的开始训练消息后,使所述第一深度学习模型从文件系统拉取所述第一训练数据;
使所述第一训练数据对所述第一深度学习模型训练,形成第一模型文件。
在这里,所述消息队列对深度学习模型训练进程进行控制,包括对所述训练进程的开始、停止及暂停。
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,即文件系统。
文件系统由三部分组成:文件系统的接口、对对象操作和管理的软件集合、对象及属性。一个分区或磁盘在作为文件系统使用前,需要初始化,并将记录数据结构写到磁盘上,这叫做建立文件系统。
在一些实施方式中,在所述基础运行环境中形成所述第二容器,所述第一容器的数据迁移到所述第二容器,包括以下步骤:
首先通过指令控制器发送激活指令到消息队列,然后读取消息队列中的激活指令,激活所述框架镜像,形成所述第二容器;
再将与深度学习模型对应的代码固化到所述第二容器,将所述第一容器中的所述第一模型文件下载到所述第二容器中,进而得到所述第二深度学习模型。
所述第二深度学习模型识别并调用所述第一深度学习模型的最后一层数据参数,把所述第一深度学习模型的最后一层数据参数为第一参数。
在一些实施方式中,输入所述第二训练数据至所述第二深度学习模型进行训练,优化所述第二深度学习模型的输出层的参数的的具体步骤为:
将所述第二训练数据输入至所述第二容器;
通过指令控制器发送所述训练指令到消息队列;
读取所述消息队列中的所述训练指令的开始训练消息后,使所述第二深度学习模型从文件系统拉取所述第二训练数据;
使所述第二训练数据对所述第二深度学习模型训练,形成第二模型文件,从而优化所述第二深度学习模型的输出层的参数。
在这里是指所述第二深度学习模型加载识别到的所述第一参数;然后将所述第一参数认作为所述第二深度学习模型中的第二参数;再通过调用所述第二参数,使所述第二训练数据在所述第二深度学习模型训练学习;所述第二参数为所述第二训练数据在所述第二深度学习模型中的初始化参数。
在这里,“拉取”一般指用户从网站上“拖下”数据,比如使用超文本传输协议。
在一些实施方式中,深度学习框架包括至少以下之一:
TensorFlow、jieba、flask、SSD、Yolo V3、mobileNet。
在一些实施方式中,深度学习模型包括至少以下之一:
卷积神经网络模型、递归神经网络模型、深度信念网络模型以及堆叠自动编码器模型。
在本步骤中,深度学习的概念来源于人工神经网络的研究,含多隐层的多层感知器就是一种深度学习结构;深度学习通过组合底层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示;深度学习动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。
深度学习模型可以采用卷积神经网络模型、递归神经网络模型、深度信念网络模型以及堆叠自动编码器模型等。
在一些实施方式中,所述卷积神经网络包括输入层、隐含层以及输出层;
所述隐含层包括卷积层、池化层以及全连接层;
所述卷积层用于对输入数据进行特征提取;
所述池化层用于对输出数据进行特征选择和信息过滤;
所述全连接层用于对提取的特征进行非线性组合以得到输出;
所述卷积神经网络提取输入数据的局部特征,并逐层组合抽象生成高层特征,识别位于空间不同位置的相近特征,提取平移不变特征;
所述卷积神经网络通常应用于图像识别和自然语言处理领域。
在一些实施方式中,所述第一深度学习模型和所述第二深度学习模型用于识别电网中的线巡缺陷。
在电网行业中,由于线巡缺陷多,识别缺陷的模型需要持续更新优化,通过该方法,可以继承原有模型,每当新增一种缺陷,即可在很短时间内快速训练出可使用的模型。
在一些实施方式中,基于容器技术的深度学习模型训练设备,包括:处理器和存储器,其中存储器用于存储可执行程序,可执行程序在被运行时执行如上所述的方法。
在一些实施方式中,所述存储介质存储有可执行指令,可执行指令能被计算机执行。
存储器用来存储信息,保存计算机工作所必须的程序和数据。它包括内存储器和外存储器。
本部分将详细描述本发明的具体实施例,附图的作用在于用图形使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,上述的具体方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可作出很多形式,这些均属于本发明的保护之内,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。